作者 | 苗超
責(zé)編 | Elle
安全是系統(tǒng)架構(gòu)中最重要的關(guān)注點之一,通常情況下,所說的安全涵蓋網(wǎng)絡(luò)安全、數(shù)據(jù)安全、操作系統(tǒng)安全、服務(wù)器安全以及應(yīng)用系統(tǒng)安全等諸多方面。Tomcat 是一個免費的開放源代碼 的Web應(yīng)用服務(wù)器,技術(shù)先進、性能穩(wěn)定。由于它優(yōu)秀的穩(wěn)定性以及豐富的文檔資料,廣泛的使用人群,從而在開源領(lǐng)域受到廣泛的青睞,因此,Tomcat安全也越來越受到重視。
Tomcat作為一款應(yīng)用服務(wù)器,默認(rèn)情況下可以滿足多數(shù)場景的安全需求,但是在安全要求較高的情況下,仍需要從多個方面進行配置,已防止Tomcat管理后臺被攻擊等風(fēng)險。Tomcat安全主要從以下2個方面介紹。
配置安全
默認(rèn)情況下其存在一定的安全隱患,可被惡意攻擊,所以在生產(chǎn)環(huán)境中需要對Tomcat進行安全配置,下面將介紹影響Tomcat配置安全的4個選項。
1. 移除不使用的內(nèi)置應(yīng)用
Tomcat環(huán)境部署完畢后,要刪除根目錄下的一些默認(rèn)文件夾:CATALINA_HOME/webApps文件夾下的內(nèi)置應(yīng)用,這些應(yīng)用可能會導(dǎo)致安全風(fēng)險,因此移除不使用的應(yīng)用。對于docs(Tomcat本地說明文檔)、examples(Tomcat相關(guān)的demo示例)、ROOT(Tomcat默認(rèn)頁),可以將其直接移除。host-manager和manager用于管理及監(jiān)控tomcat容器,如果已經(jīng)使用第三方工具來管理tomcat,不需要manager管理登錄,這兩個應(yīng)用也可以直接移除,如圖2所示。
圖 2.Tomcat內(nèi)置應(yīng)用
2. 降權(quán)啟動tomcat
tomcat 啟動用戶權(quán)限必須為非root,避免一旦tomcat服務(wù)被入侵,獲取root權(quán)限,因為在linux操作系統(tǒng)中,root用戶的權(quán)限是最高的,可以執(zhí)行普通用戶無法執(zhí)行的操作。應(yīng)單獨為Tomcat服務(wù)器創(chuàng)建一個用戶,并且授予運行應(yīng)用服務(wù)器所需的最小系統(tǒng)權(quán)限。
3. 刪除不使用的組件
Tomcat是開源軟件,那么server.xml中的默認(rèn)配置對所有人都是可見的,它的運行機制也是眾所周知的,因此使用默認(rèn)配置也會增加服務(wù)器受攻擊的風(fēng)險。所以在部署生產(chǎn)環(huán)境前,移除不必要的組件,默認(rèn)情況下,server.xml配置了一個HTTP連接器(8080)和一個AJP連接器(8009),實際上絕大多數(shù)情況下,只需要一個連接器。如果Tomcat不存在前置的web服務(wù)器,此時可以保留HTTP而刪除AJP連接器。
4. 禁用自動部署
在默認(rèn)情況下,Tomcat是自動部署的,只要是在webapps目錄下的war包均會在Tomcat啟動時自動部署,包括被植入的惡意web應(yīng)用。要避免惡意的web應(yīng)用自動啟動,可以考慮從兩個方面解決:一是修改web應(yīng)用部署目錄為其他路徑,這樣攻擊者很難找到正確的部署目錄并部署web應(yīng)用;二是禁用自動部署,將server.xml配置文件中Host元素的autoDeploy和deployOnStartup屬性設(shè)置為false,此時只有通過context標(biāo)簽部署web應(yīng)用,配置方法如圖3所示。
圖 3.禁用自動部署
管理平臺安全
1. 管理平臺是什么?
Tomcat提供了基于Web方式的管理平臺,管理平臺即是內(nèi)置的兩個獨立的web應(yīng)用,位于webapps目錄下的host-manager和manager。host-manager管理控制臺可以動態(tài)地添加一個虛擬主機。此外還可以啟動、停止、刪除虛擬主機,在實際生產(chǎn)中很少使用host-manager管理平臺。manager管理平臺可以很方便的管理運行在tomcat服務(wù)器上的Web應(yīng)用,如發(fā)布、啟動、停止或刪除Web應(yīng)用,還可以實時管理HTTP會話以及查看服務(wù)器狀態(tài)信息等。
2. 管理平臺如何使用
在tomcat啟動成功后,通過http://ip:port/manager/html訪問manager 管理平臺 ,因為默認(rèn)添加了訪問權(quán)限控制,第一次訪問需要在 conf/ tomcat-users.xml 文件 中為當(dāng)前用戶添加角色,manager管理平臺共有4種角色,分別為:
• manager-gui:允許訪問html頁面接口(即URL路徑為/manager/html/*);
• manager-:允許訪問純文本接口(即URL路徑為/manager/text/*);
• manager-jmx:允許訪問JMX代理接口(即URL路徑為/manager/jmxproxy/*);
• manager-status:允許訪問Tomcat只讀狀態(tài)頁面(即URL路徑為/manager/status/*)。
其中manager-gui、manager-、manager-jmx三個角色均具備manager-status角色的權(quán)限,即這三種角色權(quán)限無需再額外添加manager-status權(quán)限。實際使用中只需配置manager-gui角色通過html頁面的形式訪問管理平臺。
manager管理平臺有4種角色,host-manager管理平臺有2種角色,配置方式如圖4所示。
圖 4. 管理平臺角色配置
Web版管理控制臺可以發(fā)布、停止、重新加載指定的web應(yīng)用,如圖5所示。
圖 5. Web版管理控制臺
通過http://ip:port/manager/status ,查看Server-status服務(wù)器狀態(tài)頁面,如圖6所示。
圖 6. 服務(wù)器狀態(tài)頁面
Server-status包含以下幾部分信息:
服務(wù)器基本信息 |
服務(wù)器版本、JVM版本、操作系統(tǒng)、ip地址 |
系統(tǒng)信息 |
內(nèi)存使用情況 |
JVM信息 |
JVM分配及使用情況 |
連接器信息 |
連接器請求處理線程的使用情況 |
host-manager管理控制臺可以動態(tài)地添加一個虛擬主機。此外還可以啟動、停止、刪除虛擬主機,如圖7所示。
通過http:// ip:port /host-manager/html 訪問host-manager管理平臺,因為默認(rèn)添加了訪問權(quán)限控制,第一次訪問需要在conf/tomcat-users.xml文件中為當(dāng)前用戶添加角色,host-manager管理平臺共有2種角色,分別為admin-gui和admin-,配置方式如圖3所示。
• admin-gui:允許訪問html頁面接口(即URL路徑為/manager/html/*)。
• admin-:允許訪問純文本接口(即URL路徑為/manager/text/*)。
圖 7. host-manager管理平臺頁面
3. 管理平臺安全加固
管理平臺有發(fā)布管理應(yīng)用的權(quán)限,默認(rèn)情況下host-manager和manager應(yīng)用存在安全風(fēng)險,可能會產(chǎn)生嚴(yán)重的危害,所以針對Tomcat管理平臺需通過以下幾個方面進行安全加固。
• 如使用內(nèi)置host-manager和manager管理應(yīng)用,需要增加IP訪問限制,在應(yīng)
用下META-INF/context.xml文件中配置。修改allow屬性的正則表達(dá)式。8.5版本前需要手動開啟,而8.5版本之后,則默認(rèn)開啟只有本機可以訪問。比如只允許ip地址10.232.150.78和10.232.150.80訪問manager管理應(yīng)用,將allow屬性值修改為10.232.150.78|10.232.150.80即可,如圖8所示。
圖8. IP訪問限制配置方式
• 如需訪問host-manager和manager應(yīng)用需要分配相關(guān)的角色權(quán)限。我們還應(yīng)
設(shè)置足夠健壯的密碼,建議加強口令強度,設(shè)置口令復(fù)雜度為8位以上,大小寫字母、數(shù)字、特殊符號的組合,并定期更換密碼,避免使用弱口令。
• 管理平臺添加用戶鎖定功能,在server.xml中配置了org.Apache.catalina.real
m.LockOutRealm,LockOutRealm 是一個Tomcat的Realm實現(xiàn),它擴展了CombinedRealm,假如在某一段時間內(nèi)出現(xiàn)很多驗證失敗,則它能夠提供鎖定用戶的功能,已避免攻擊者進行密碼暴力破解。LockOutRealm 配置方式, server.xml文件Engine元素內(nèi)添加,如圖9所示
圖9. LockOutRealm 配置
failureCount |
用戶身份驗證驗證失敗的連續(xù)次數(shù)。默認(rèn)為5。 |
lockOutTime |
身份驗證失敗后,用戶被鎖定的時間(以秒為單位)。默認(rèn)為300(5分鐘)。 |
LockOutRealm實現(xiàn)支持以下附加屬性:
4. 管理平臺入侵案例
今年我行某系統(tǒng)曾發(fā)現(xiàn)Tomcat管理平臺暴露互聯(lián)網(wǎng)及弱口令的高危漏洞。由于在互聯(lián)網(wǎng)可直接訪問系統(tǒng)Tomcat管理平臺,可使用弱用戶名密碼admin/xxxxx成功登錄??蓪ο到y(tǒng)進行管控,同時具有上傳惡意war包或者直接上傳webshell腳本導(dǎo)致服務(wù)器被入侵等風(fēng)險。
Tomcat管理平臺有啟動、停止、重新加載、監(jiān)控Web應(yīng)用等權(quán)限,所以管理后臺的安全問題是Tomcat安全的重要部分,如果出現(xiàn)漏洞會對業(yè)務(wù)系統(tǒng)造成嚴(yán)重的危害,需要充分引起重視并進行安全加固。管理平臺就是Tomcat服務(wù)器內(nèi)置的兩個web應(yīng)用,如果使用管理平臺需添加ip訪問限制,Tomcat已提供此功能,需在白名單設(shè)置指定ip地址可以訪問管理平臺,另外還需設(shè)置健壯的登錄密碼來防止暴力破解。
安全措施不可忽視,繼比特幣勒索病毒風(fēng)波之后,petya病毒又席卷眾多國家計算機高防服務(wù)器,造成嚴(yán)重影響。Tomcat服務(wù)器同樣面臨著病毒、黑客、信息泄露等安全威脅。
總之,Tomcat與安全相關(guān)的配置,在實際開發(fā)過程中,需要結(jié)合應(yīng)用系統(tǒng)的業(yè)務(wù)場景綜合考慮,而非一味地堆積各種安全配置,否則不僅達(dá)不到預(yù)期效果,反而會影響系統(tǒng)的訪問性能。此外,系統(tǒng)安全是一個非常復(fù)雜又非常重要的領(lǐng)域,包括網(wǎng)絡(luò)、應(yīng)用、數(shù)據(jù)、操作系統(tǒng)等諸多方面,本文只是介紹了與Tomcat相關(guān)的安全配置。
作者:苗超,中國農(nóng)業(yè)銀行研發(fā)中心系統(tǒng)支持部工程師