Tomcat是一個HTTP服務器,是Sun透過Java Community Process開發的、對廣泛使用的Servlet和JavaServer Page(JSP)技術的正式參考實作。Servlet和JSP技術用于建構HTTP服務器應用程序。雖然Servlet技術中加入了許多特性(包括存取安全性、Session管理和執行緒控制)。JSP技術提供了一種處理動態生成的 HTML 頁面的簡便方法,這些 HTML 頁面被直接編譯成 Servlet 以用于快速執行時作業。Tomcat除了上述的兩種技術保障安全之外,還可以通過配置Tomcat的參數以增加安全性
安全設置:
1. 刪除webapps目錄下的所有文件,禁用tomcat管理界面
rm -rf /usr/local/tomcat/apache-tomcat-9.0.1/webapps/*
2.注釋或刪除tomcat-users.xml文件內的所有用戶權限:
3.隱藏版本信息,修改conf/server.xml
3.用戶問題:
nginx,httpd 使用root用戶啟動守護80端口,子進程/線程會通過setuid(),setgid()兩個函數切換到普通用戶。即父進程所有者是root用戶,子進程與多線程所有者是一個非root用戶,這個用戶沒有shell,無法通過ssh與控制臺登陸系統;
而Java 的JVM 是與系統無關的,是建立在OS之上的,使用什么用戶啟動Tomcat,那麼Tomcat 就會繼承該所有者的權限。
這造成了一個問題,Linux系統小于1024的端口只有root可以使用,這也是Tomcat默認端口是8080。如果想使用80端口只能使用root啟動Tomcat。這有帶來了很多安全問題。
創建一個用戶,只能用于啟動tomcat:
groupadd -g 80 tomcat
adduser -o --home /tomcat --shell /sbin/nologin --uid 80 --gid 80 -c "Web server" tomcat
chown tomcat:tomcat -R /usr/local/tomcat/apache-tomcat-9.0.1/*
su - tomcat -c "/usr/local/tomcat/apache-tomcat-9.0.1/bin/startup.sh"
做一個端口映射,訪問80時調用8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
取消跳轉:
iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
4.關閉自動部署war
vim conf/server.xml
5.隱藏404出現的版本信息:
到lib下解壓catalina.jar, jar xf catalina.jar
vim /usr/local/tomcat/apache-tomcat-9.0.1/lib/org/apache/catalina/util/ServerInfo.properties
6.更改關閉tomcat指令
server.xml中定義了可以直接關閉 Tomcat 實例的管理端口。我們通過 telnet 連接上該端口之后,輸入 SHUTDOWN (此為默認關閉指令)即可關閉 Tomcat 實例(注意,此時雖然實例關閉了,但是進程還是存在的)。由于默認關閉Tomcat 的端口和指令都很簡單。默認端口為8005,指令為SHUTDOWN 。需要將關閉指令修改復雜一點。
新聞熱點
疑難解答