Tin tức và phân tích của tất cả các thiết bị di động

Hướng dẫn bảo mật và tăng cường Apache Tomcat

Hướng dẫn thiết thực để củng cố và bảo mật Apache Tomcat bằng các phương pháp hay nhất.

Tomcat là một trong những máy chủ Servlet và JSP Container phổ biến nhất. Nó được sử dụng bởi một số trang web có lưu lượng truy cập cao sau đây:

  • LinkedIn.com
  • dailymail.co.uk
  • Comcast.net
  • Wallmart.com
  • Reuters.com
  • Meetup.com
  • web.com

Biểu đồ dưới đây cho thấy vị trí thị trường của Tomcat trên máy chủ ứng dụng Java.

Nguồn: Plumb

Về mặt kỹ thuật, Tomcat có thể được sử dụng như một máy chủ ngoại vi để xử lý trực tiếp các yêu cầu của trang web. Tuy nhiên, trong môi trường sản xuất, bạn có thể muốn sử dụng một số máy chủ web như Apache, Nginx làm giao diện người dùng để định tuyến các yêu cầu tới Tomcat.

Sử dụng máy chủ web để xử lý các yêu cầu mang lại lợi ích về hiệu suất và bảo mật. Nếu bạn đang sử dụng Apache HTTP làm máy chủ web ngoại vi của mình, bạn cũng cần xem xét việc bảo mật nó.

Việc có cấu hình mặc định của Tomcat có thể tiết lộ thông tin nhạy cảm, giúp tin tặc chuẩn bị tấn công ứng dụng.

Sau đây được thử nghiệm trên Tomcat 7.x, môi trường UNIX.

Sự tiếp kiến

Điều này dành cho quản trị viên phần mềm trung gian, hỗ trợ ứng dụng, nhà phân tích hệ thống hoặc bất kỳ ai làm việc hoặc muốn tìm hiểu về bảo mật và củng cố Tomcat.

Kiến thức tốt về các lệnh Tomcat và UNIX là bắt buộc.

Nhận xét

Chúng tôi cần một trình kiểm tra tiêu đề HTTP để xác minh. Bạn có thể làm điều đó theo hai cách.

Nếu bạn đang thử nghiệm một ứng dụng có sẵn trên web, bạn có thể sử dụng các công cụ Tiêu đề HTTP sau để xác minh việc triển khai.

Và đối với các ứng dụng mạng nội bộ, bạn có thể sử dụng các công cụ dành cho nhà phát triển của Google Chrome, Firefox.

Đặt cược tốt nhất của bạn là sao lưu mọi tệp bạn định sửa đổi.

Xuyên suốt các hướng dẫn này, chúng tôi sẽ gọi thư mục cài đặt Tomcat là $tomcat.

Chúng ta hãy đi qua các thủ tục bảo dưỡng và bảo mật.

Xóa biểu ngữ máy chủ

Xóa biểu ngữ máy chủ khỏi tiêu đề HTTP là một trong những điều đầu tiên cần làm để củng cố.

Có biểu ngữ máy chủ tiết lộ sản phẩm và phiên bản bạn đang sử dụng và dẫn đến lỗ hổng rò rỉ thông tin.

Theo mặc định, một trang do Tomcat cung cấp sẽ được hiển thị như thế này.

Hãy ẩn chi tiết sản phẩm và phiên bản trong tiêu đề Máy chủ.

  • Chuyển đến thư mục $tomcat/conf
  • Sửa đổi tệp server.xml bằng vi
  • Thêm phần sau vào cổng kết nối
Server =” “

Trước: –

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
Server =" "
redirectPort="8443" />
  • Lưu tệp và khởi động lại Tomcat. Bây giờ khi bạn truy cập ứng dụng, bạn sẽ thấy một giá trị trống trong tiêu đề máy chủ.

Bắt đầu Tomcat với Trình quản lý bảo mật

Trình quản lý bảo mật bảo vệ bạn khỏi applet không đáng tin cậy đang chạy trong trình duyệt của bạn.

Chạy Tomcat với trình quản lý bảo mật sẽ tốt hơn là chạy mà không có nó. Tomcat có tài liệu tuyệt vời về Tomcat Security Manager.

Điều tốt là bạn không phải thay đổi bất kỳ tệp cấu hình nào. Đó chỉ là cách bạn chạy startup.sh.

Tất cả những gì bạn cần làm là bắt đầu tomcat với đối số –security.

[[email protected] bin]# ./startup.sh -security
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using Security Manager
Tomcat started.
[[email protected] bin]#

Bật SSL/TLS

Xử lý yêu cầu web HTTPS là điều cần thiết để bảo vệ dữ liệu giữa máy khách và Tomcat. Để ứng dụng web của bạn có thể truy cập được qua HTTPS, bạn phải triển khai chứng chỉ SSL.

Giả sử bạn đã có sẵn kho khóa được chứng nhận, bạn có thể thêm dòng sau vào tệp server.xml bên dưới phần Cổng kết nối.

SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"

Thay đổi tên và mật khẩu tệp Keystore thành của riêng bạn.

Nếu bạn cần trợ giúp về lưu trữ khóa và quy trình CSR, vui lòng tham khảo hướng dẫn này.

Bắt buộc HTTPS

Điều này chỉ áp dụng nếu bạn đã bật SSL. Nếu không, nó sẽ phá vỡ ứng dụng.

Khi SSL được bật, bạn nên buộc tất cả các yêu cầu HTTP được chuyển hướng đến HTTPS để đảm bảo liên lạc an toàn giữa người dùng và máy chủ ứng dụng Tomcat.

  • Chuyển đến thư mục $tomcat/conf
  • Sửa đổi tệp web.xml bằng vi
  • Thêm phần sau vào trước cú pháp
<security-constraint> 
<web-resource-collection> 
<web-resource-name>Protected Context</web-resource-name> 
<url-pattern>/*</url-pattern>
</web-resource-collection> 
<user-data-constraint> 
<transport-guarantee>CONFIDENTIAL</transport-guarantee> 
</user-data-constraint> 
</security-constraint>
  • Lưu tệp và khởi động lại Tomcat

Có thể đánh cắp hoặc thao túng phiên ứng dụng web và cookie mà không cần có cookie an toàn. Đây là cờ được đưa vào tiêu đề phản hồi.

Điều này được thực hiện bằng cách thêm một dòng bên dưới phần cấu hình phiên của tệp web.xml

<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>

Ảnh chụp màn hình cấu hình:

Lưu tệp và khởi động lại Tomcat để kiểm tra tiêu đề phản hồi HTTP.

Chạy Tomcat từ một tài khoản không có đặc quyền

Bạn nên sử dụng một người dùng không có đặc quyền riêng cho Tomcat. Ý tưởng là để bảo vệ các dịch vụ đang chạy khác nếu bất kỳ tài khoản nào của bạn bị xâm phạm.

  • Tạo người dùng UNIX, giả sử tomcat
useradd tomcat
  • Dừng Tomcat nếu nó đang chạy
  • Thay đổi thuộc tính $tomcat thành người dùng tomcat
chown -R tomcat:tomcat tomcat/

Khởi động Tomcat và đảm bảo rằng nó đang chạy với người dùng tomcat

Xóa ứng dụng mặc định/không mong muốn

Theo mặc định, Tomcat vận chuyển các ứng dụng web sau đây có thể được yêu cầu hoặc không trong môi trường sản xuất.

Bạn có thể xóa chúng để giữ sạch và tránh mọi rủi ro bảo mật đã biết với ứng dụng mặc định của Tomcat.

  • ROOT – Trang chào mừng mặc định
  • Tài liệu – Tài liệu Tomcat
  • Ví dụ – JSP và servlet để trình diễn
  • Người quản lý, người quản lý máy chủ – Quản trị Tomcat

Chúng có sẵn trong thư mục $tomcat/webapps

[[email protected] webapps]# ls -lt
drwxr-xr-x 14 tomcat tomcat 4096 Sep 29 15:26 docs
drwxr-xr-x 7 tomcat tomcat 4096 Sep 29 15:26 examples
drwxr-xr-x 5 tomcat tomcat 4096 Sep 29 15:26 host-manager
drwxr-xr-x 5 tomcat tomcat 4096 Sep 29 15:26 manager
drwxr-xr-x 3 tomcat tomcat 4096 Sep 29 15:26 ROOT
[[email protected] webapps]#

Thay đổi cổng và lệnh SHUTDOWN

Theo mặc định, tomcat được cấu hình để tắt trên cổng 8005.

Bạn có biết rằng bạn có thể tắt một phiên bản tomcat bằng cách kết nối telnet tới IP:port và đưa ra lệnh SHUTDOWN không?

Chandans # telnet localhost 8005
Trying ::1... telnet:
connect to address ::1:
Connection refused Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SHUTDOWN Connection closed by foreign host.
Chandans #

Sự nguy hiểm!

Bạn thấy đấy, việc có cấu hình mặc định dẫn đến rủi ro bảo mật cao.

Bạn nên thay đổi cổng tắt Tomcat và lệnh mặc định thành thứ gì đó không thể đoán trước.

  • Sửa đổi phần sau trong tệp server.xml
<Server port="8005" shutdown="SHUTDOWN">

8005 – Thay đổi sang một cổng không sử dụng khác

TẮT – Thay đổi thành thứ gì đó phức tạp

Trước-

<Server port="8867" shutdown="NOTGONNAGUESS">

Thay trang mặc định 404, 403, 500

Có một trang mặc định cho lỗi không tìm thấy, bị cấm, máy chủ hiển thị chi tiết phiên bản.

Hãy xem trang 404 mặc định.

Để giảm thiểu điều này, trước tiên bạn có thể tạo một trang lỗi chung và định cấu hình web.xml để chuyển hướng đến một trang lỗi chung.

  • Truy cập $tomcat/webapps/$application
  • Tạo file error.jsp bằng vi editor
<html>
<head> 
<title>Error Page</title>
</head>
<body> That's an error! </body>
</html>
  • Chuyển đến thư mục $tomcat/conf
  • Thêm phần sau vào tệp web.xml. Hãy chắc chắn rằng bạn thêm trước cú pháp
<error-page> 
<error-code>404</error-code> 
<location>/error.jsp</location>
</error-page>
<error-page> 
<error-code>403</error-code> 
<location>/error.jsp</location>
</error-page>
<error-page> 
<error-code>500</error-code> 
<location>/error.jsp</location>
</error-page>
  • Khởi động lại tomcat để kiểm tra

Tốt hơn nhiều!

Bạn cũng có thể làm điều này cho java.lang.Exception. Điều này sẽ giúp không tiết lộ thông tin phiên bản tomcat trong trường hợp ngoại lệ java lang.

Chỉ cần thêm phần sau vào web.xml và khởi động lại máy chủ tomcat.

<error-page> 
<exception-type>java.lang.Exception</exception-type> 
<location>/error.jsp</location>
</error-page>

Tôi hy vọng hướng dẫn trên sẽ cung cấp cho bạn ý tưởng về cách bảo mật Tomcat. Nếu bạn muốn tìm hiểu thêm về quản trị Tomcat, hãy xem khóa học trực tuyến này.
Ngoài ra, hãy tìm hiểu cách định cấu hình WAS để ngừng hỏi mật khẩu khi tắt máy tại đây.