「作者簡介」:冬奧會網絡安全中國代表隊,CSDN Top100,就職奇安信多年,以實戰工作為基礎著作 《網絡安全自學教程》,適合基礎薄弱的同學系統化的學習網絡安全,用最短的時間掌握最核心的技術。
這一章節我們需要知道Tomcat基線檢查的標準和加固方式。
Tomcat安全基線
- 1、刪除默認頁面
- 2、控制臺口令
- 3、shutdown口令
- 4、禁用靜態目錄列表
- 5、開啟訪問日志
- 6、禁用HTTP方法
- 7、修改banner信息
- 8、關閉熱部署
- 9、降低權限
1、刪除默認頁面
刪除 tomcat安裝目錄\webapps\
目錄下的 docs、examples 文件夾。這兩個是Tomcat提供的示例程序。
2、控制臺口令
http://127.0.0.1:8080/manager/html
可以訪問tomcat的控制臺。
1)如果不使用控制臺,可以刪除tomcat安裝目錄\webapps\
目錄下的 manager、host-manager 文件夾。
2)如果使用控制臺,可以設置復雜的密碼。tomcat安裝目錄\conf\tomcat-users.xml
。
<tomcat-users >
<user username="tomcat" password="復雜的密碼" roles="manager-gui"/>
3、shutdown口令
shutdown.sh
關閉tomcat服務是連接8005端口執行SHUTDOWN命令實現的。
我們直接telnet 8005端口,執行SHUTDOWN命令,也可以關閉Tomcat服務。
tomcat安裝目錄\conf\server.xml
設置復雜的shutdown口令。
擴展:Tomcat端口作用
- 8005:Telnet8005端口執行shutdown口令關閉Tomcat服務。
- 8009:httpd使用ajp協議通過8009端口反向代理Tomcat。
- 8080:http監聽端口。
- 8443:https監聽端口,默認不開啟,需要提供證書。
4、禁用靜態目錄列表
tomcat安裝目錄\conf\web.xml
的 listings 設置為 false,重啟Tomcat 服務生效。
如果開啟靜態目錄列表,直接訪問目錄,并且目錄下沒有默認主頁時,就會列出目錄下的所有文件,導致目錄遍歷。
5、開啟訪問日志
Tomcat 7 開始默認開啟訪問日志。手動開啟到 tomcat安裝目錄\conf\server.xml
取消 AccessLogValve 的注釋,重啟生效。directory是目錄位置、perfix是日志文件名、pattern是日志格式。
tomcat安裝目錄\logs\
查看 access日志。具體的日志路徑和文件名取決于上一步server.xml的配置。
擴展:pattern日志格式,-
表示空。
- %a:遠程IP。
- %A:本地IP。
- %b:發送的字節數。
- %h:遠程主機名。
- %H:請求協議。
- %l:遠程用戶名。
- %m:請求的方法(GET、POST等)。
- %p:接受請求的本地端口。
- %q:查詢字符串,如果存在,有一個前置的
?
。 - %r:請求的第一行(請求方法和請求的URI)。
- %s:HTTP響應狀態碼(200、404等)。
- %S:用戶的session ID。
- %t:日期和時間,Common Log Format格式。
- %u:被認證的遠程用戶。
- %U:請求URL路徑。
- %v:本地服務名。
- %D:處理請求的時間,毫秒。
- %T:處理請求的時間,秒。
- %I:當前請求的線程名。
6、禁用HTTP方法
Tomcat 7.0.0 - 7.0.79 的readonly默認未false,允許PUT、DELETE等請求方式,會造成遠程代碼執行,比如 CVE-2017-12615。
新版本 readonly 默認為 true,并且不顯示這一項。檢查 tomcat安裝目錄\conf\web.xml
,readonly 不能為 false。
7、修改banner信息
系統的 banner 信息充當歡迎語的作用,會泄露服務類型、版本號等信息。
1)HEAD請求獲取的響應頭信息,可能會暴漏版本號。
到 tomcat安裝目錄\conf\server.xml
改server的值或者刪掉這個字段。一些新版本優化掉了server字段。
2)頁面訪問報錯時,會泄露版本。
tomcat安裝目錄\lib\catalina.jar\org\apache\catalina\util\ServerInfo.properties
修改server.info 和 server.number。
8、關閉熱部署
Tomcat 7 開始默認開啟自動部署,也就是熱部署,會自動檢查webapps目錄下的的新文件并重新部署web程序。否則就需要重啟Tomcat才能重新加載。
tomcat安裝目錄\conf\server.xml
Host 的 autoDeploy 設置成 false,關閉熱部署。
9、降低權限
Tomcat 安裝目錄的權限改成非root用戶。使用非 root 用戶啟動 Tomcat。
# 創建tomcat用戶
useradd tomcat
# Tomcat安裝目錄的所有者改為tomcat
chown -R tomcat:tomcat /opt/tomcat
# 停止Tomcat
/opt/tomcat/bin/shutdown.sh
# 切換tomcat用戶
su tomcat
# 以tomcat用戶的權限運行Tomcat
/opt/tomcat/bin/startup.sh