如何預防后台被攻擊,且看Tomcat的安全配置


安全是系統架構中最重要的關注點之一,通常情況下,所說的安全涵蓋網絡安全、數據安全、操作系統安全、服務器安全以及應用系統安全等諸多方面。Tomcat 是一個免費的開放源代碼 的Web應用服務器,技術先進、性能穩定。由於它優秀的穩定性以及豐富的文檔資料,廣泛的使用人群,從而在開源領域受到廣泛的青睞,因此,Tomcat安全也越來越受到重視。

Tomcat作為一款應用服務器,默認情況下可以滿足多數場景的安全需求,但是在安全要求較高的情況下,仍需要從多個方面進行配置,以防止Tomcat管理后台被攻擊等風險。Tomcat安全主要從以下2個方面介紹。

一、配置安全

默認情況下其存在一定的安全隱患,可被惡意攻擊,所以在生產環境中需要對Tomcat進行安全配置,下面將介紹影響Tomcat配置安全的4個選項。

(1)移除不使用的內置應用

Tomcat環境部署完畢后,要刪除根目錄下的一些默認文件夾:CATALINA_HOME/webapps文件夾下的內置應用,這些應用可能會導致安全風險,因此移除不使用的應用。對於docs(Tomcat本地說明文檔)、examples(Tomcat相關的demo示例)、ROOT(Tomcat默認頁),可以將其直接移除。host-manager和manager用於管理及監控tomcat容器,如果已經使用第三方工具來管理tomcat,不需要manager管理登錄,這兩個應用也可以直接移除,如下圖所示:

(2) 降權啟動tomcat
tomcat 啟動用戶權限必須為非root,避免一旦tomcat服務被入侵,獲取root權限,因為在Linux操作系統中,root用戶的權限是最高的,可以執行普通用戶無法執行的操作。應單獨為Tomcat服務器創建一個用戶,並且授予運行應用服務器所需的最小系統權限。

(3)刪除不使用的組件
Tomcat是開源軟件,那么server.xml中的默認配置對所有人都是可見的,它的運行機制也是眾所周知的,因此使用默認配置也會增加服務器受攻擊的風險。所以在部署生產環境前,移除不必要的組件。默認情況下,server.xml配置了一個HTTP連接器(8080)和一個AJP連接器(8009),實際上絕大多數情況下,只需要一個連接器。如果Tomcat不存在前置的web服務器,此時可以保留HTTP而刪除AJP連接器。

(4)禁用自動部署
在默認情況下,Tomcat是自動部署的,只要是在webapps目錄下的war包均會在Tomcat啟動時自動部署,包括被植入的惡意web應用。
要避免惡意的web應用自動啟動,可以考慮從兩個方面解決:
一是修改web應用部署目錄為其他路徑,這樣攻擊者很難找到正確的部署目錄並部署web應用;
二是禁用自動部署,將server.xml配置文件中Host元素的autoDeploy和deployOnStartup屬性設置為false,此時只有通過context標簽部署web應用,配置方法如下圖所示:


二、管理平台安全

(1)管理平台是什么
Tomcat提供了基於Web方式的管理平台,管理平台即是內置的兩個獨立的web應用,位於webapps目錄下的host-manager和manager。
host-manager管理控制台可以動態地添加一個虛擬主機。此外還可以啟動、停止、刪除虛擬主機,在實際生產中很少使用host-manager管理平台。
manager管理平台可以很方便的管理運行在tomcat服務器上的Web應用,如發布、啟動、停止或刪除Web應用,還可以實時管理HTTP會話以及查看服務器狀態信息等。

(2)管理平台如何使用
在tomcat啟動成功后,通過http://ip:port/manager/html訪問manager 管理平台 ,因為默認添加了訪問權限控制,第一次訪問需要在conf/ tomcat-users.xml 文件中為當前用戶添加角色,manager管理平台共有4種角色,分別為:

  • manager-gui:允許訪問html頁面接口(即URL路徑為/manager/html/*);

  • manager-script:允許訪問純文本接口(即URL路徑為/manager/text/*);

  • manager-jmx:允許訪問JMX代理接口(即URL路徑為/manager/jmxproxy/*);

  • manager-status:允許訪問Tomcat只讀狀態頁面(即URL路徑為/manager/status/*)。

其中manager-gui、manager-script、manager-jmx三個角色均具備manager-status角色的權限,即這三種角色權限無需再額外添加manager-status權限。

實際使用中只需配置manager-gui角色通過html頁面的形式訪問管理平台。

manager管理平台有4種角色,host-manager管理平台有2種角色,配置方式如下圖所示:


Web版管理控制台可以發布、停止、重新加載指定的web應用,如下圖所示:

通過http://ip:port/manager/status ,查看Server-status服務器狀態頁面,如下圖所示:

Server-status包含以下幾部分信息:

服務器基本信息 服務器版本、JVM版本、操作系統、ip地址
系統信息 內存使用情況
JVM信息 JVM分配及使用情況
連接器信息 連接器請求處理線程的使用情況

host-manager管理控制台可以動態地添加一個虛擬主機。此外還可以啟動、停止、刪除虛擬主機,如下圖所示:

通過http:// ip:port /host-manager/html 訪問host-manager管理平台,因為默認添加了訪問權限控制,第一次訪問需要在conf/tomcat-users.xml文件中為當前用戶添加角色,host-manager管理平台共有2種角色,分別為admin-gui和admin-script,配置方式見上面(2)管理平台如何使用中的配置。

  • admin-gui:允許訪問html頁面接口(即URL路徑為/manager/html/*)。

  • admin-script:允許訪問純文本接口(即URL路徑為/manager/text/*)。

(3)管理平台安全加固
管理平台有發布管理應用的權限,默認情況下host-manager和manager應用存在安全風險,可能會產生嚴重的危害,所以針對Tomcat管理平台需通過以下幾個方面進行安全加固。

1、如使用內置host-manager和manager管理應用,需要增加IP訪問限制。

在應用下META-INF/context.xml文件中配置。修改allow屬性的正則表達式。8.5版本前需要手動開啟,而8.5版本之后,則默認開啟只有本機可以訪問。比如只允許ip地址10.232.150.78和10.232.150.80訪問manager管理應用,將allow屬性值修改為10.232.150.78|10.232.150.80即可,如下圖所示:

2、如需訪問host-manager和manager應用需要分配相關的角色權限。
我們還應設置足夠健壯的密碼,建議加強口令強度,設置口令復雜度為8位以上,大小寫字母、數字、特殊符號的組合,並定期更換密碼,避免使用弱口令。

3、管理平台添加用戶鎖定功能。
在server.xml中配置了org.apache.catalina.realm.LockOutRealm,LockOutRealm是一個Tomcat的Realm實現,它擴展了CombinedRealm,假如在某一段時間內出現多次驗證失敗,則它能夠提供鎖定用戶的功能,以避免攻擊者進行密碼暴力破解。LockOutRealm配置方式在server.xml文件Engine元素內添加,如下圖所示:

failureCount 用戶身份驗證驗證失敗的連續次數。默認為5。
lockOutTime 身份驗證失敗后,用戶被鎖定的時間(以秒為單位)。默認為300(5分鍾)。

關於realm安全域參見:https://wiki.jikexueyuan.com/project/tomcat/realms-aaa.html


個人觀點:一般情況下應用程序都沒有使用Tomcat的manager管理平台來進行應用的管理,而且這些賬號信息在初始時也沒有進行配置,因此就算要進行登錄管理平台也沒法登錄,感覺tomcat的安全這一塊可以忽略,可以將安全防范應用在其他地方,例如項目的后台鑒權,主要是一個權限的控制,防止信息被篡改。

最后特此聲明:本文作者苗超,中國農業銀行研發中心系統支持部工程師。
全文摘自CSDN,只用於學習使用,不作其他用途。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM