tomcat服務(wù)器安全設(shè)置方法
Tomcat是一個HTTP服務(wù)器,是Sun透過Java Community Process開發(fā)的、對廣泛使用的Servlet和JavaServer Page(JSP)技術(shù)的正式參考實作。Servlet和JSP技術(shù)用于建構(gòu)HTTP服務(wù)器應(yīng)用程序。雖然Servlet技術(shù)中加入了許多特性(包括存取安全性、Session管理和執(zhí)行緒控制)。JSP技術(shù)提供了一種處理動態(tài)生成的 HTML 頁面的簡便方法,這些 HTML 頁面被直接編譯成 Servlet 以用于快速執(zhí)行時作業(yè)。Tomcat除了上述的兩種技術(shù)保障安全之外,還可以通過配置Tomcat的參數(shù)以增加安全性
安全設(shè)置:
1. 刪除webapps目錄下的所有文件,禁用tomcat管理界面
rm -rf /usr/local/tomcat/apache-tomcat-9.0.1/webapps/*
2.注釋或刪除tomcat-users.xml文件內(nèi)的所有用戶權(quán)限:
3.隱藏版本信息,修改conf/server.xml
3.用戶問題:
nginx,httpd 使用root用戶啟動守護(hù)80端口,子進(jìn)程/線程會通過setuid(),setgid()兩個函數(shù)切換到普通用戶。即父進(jìn)程所有者是root用戶,子進(jìn)程與多線程所有者是一個非root用戶,這個用戶沒有shell,無法通過ssh與控制臺登陸系統(tǒng);
而Java 的JVM 是與系統(tǒng)無關(guān)的,是建立在OS之上的,使用什么用戶啟動Tomcat,那麼Tomcat 就會繼承該所有者的權(quán)限。
這造成了一個問題,Linux系統(tǒng)小于1024的端口只有root可以使用,這也是Tomcat默認(rèn)端口是8080。如果想使用80端口只能使用root啟動Tomcat。這有帶來了很多安全問題。
創(chuàng)建一個用戶,只能用于啟動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時調(diào)用8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
取消跳轉(zhuǎn):
iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
4.關(guān)閉自動部署war
vim conf/server.xml
5.隱藏404出現(xiàn)的版本信息:
到lib下解壓catalina.jar, jar xf catalina.jar
vim /usr/local/tomcat/apache-tomcat-9.0.1/lib/org/apache/catalina/util/ServerInfo.properties
6.更改關(guān)閉tomcat指令
server.xml中定義了可以直接關(guān)閉 Tomcat 實例的管理端口。我們通過 telnet 連接上該端口之后,輸入 SHUTDOWN (此為默認(rèn)關(guān)閉指令)即可關(guān)閉 Tomcat 實例(注意,此時雖然實例關(guān)閉了,但是進(jìn)程還是存在的)。由于默認(rèn)關(guān)閉Tomcat 的端口和指令都很簡單。默認(rèn)端口為8005,指令為SHUTDOWN 。需要將關(guān)閉指令修改復(fù)雜一點。
或者禁用8005端口
<Server port="-1" shutdown="SHUTDOWN">
7.分離tomcat和項目用戶
為了防止 Tomcat 被植入 web shell 程序后,可以修改項目文件。因此我們要將 Tomcat 和項目的屬主做分離,這樣子,即便被搞,他也無法創(chuàng)建和編輯項目文件。
8.在conf/web.xml 添加如下配置
9.自定義錯誤頁面
web.xml是在某一個應(yīng)用下面的,他處理的應(yīng)當(dāng)是本應(yīng)用的404,而http://localhost/訪問的是tomcat自已的應(yīng)用,那么這個web.xml配置就應(yīng)當(dāng)在webapp/Root/下面的應(yīng)用來配了,
Root目錄下面放著Tomcat的應(yīng)用,把里面換成自已的就行了.
在/webapps/ROOT/WEB-INF/web.xml添加
在webapps目錄下創(chuàng)建error.jsp文件
<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.io.*" %> <%@ page import="java.util.*" %> <html> <header> <title>404 page</title> <body> <pre> <% Enumeration<String> attributeNames = request.getAttributeNames(); while (attributeNames.hasMoreElements()) { String attributeName = attributeNames.nextElement(); Object attribute = request.getAttribute(attributeName); out.println("request.attribute['" + attributeName + "'] = " + attribute); } %> </pre>
exception.jsp文件
<%@ page contentType="text/html; charset=UTF-8" isErrorPage="true" %> <%@ page import="java.io.*" %> <html> <header> <title>exception page</title> <body> <hr/> <pre> <% response.getWriter().println("Exception: " + exception); if(exception != null) { response.getWriter().println("<pre>"); exception.printStackTrace(response.getWriter()); response.getWriter().println("</pre>"); } respons e.getWriter().println("<hr/>"); %>
在瀏覽器測試自定義的錯誤頁面:
定義會話超時時間及禁止列目錄
好了這篇文章就介紹到這了,希望能幫助到你。
相關(guān)文章
Windows 下修改Tomcat jvm參數(shù)的方法
這篇文章主要介紹了Windows 下修改Tomcat jvm參數(shù)的相關(guān)資料,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03直接雙擊啟動tomcat中的startup.bat閃退原因及解決方法
免安裝的tomcat雙擊startup.bat后,啟動窗口一閃而過,而且tomcat服務(wù)未啟動,下面與大家分享下原因及解決方法2014-08-08關(guān)于 Tomcat進(jìn)程意外退出的問題解析
這篇文章主要介紹了關(guān)于 Tomcat進(jìn)程意外退出的問題解析的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-11-11深入淺析Centos 7系統(tǒng)的Tomcat服務(wù)器
tomcat最初是由Sun的軟件架構(gòu)師詹姆斯 鄧肯 戴維森開發(fā)的。后來他幫助將其變?yōu)殚_源項目,并由Sun貢獻(xiàn)給Apache軟件基金會。這篇文章主要介紹了Centos 7系統(tǒng)的Tomcat服務(wù)器的相關(guān)知識,需要的朋友可以參考下2019-12-12tomcat的catalina.out日志按自定義時間格式進(jìn)行分割的操作方法
這篇文章主要介紹了tomcat的catalina.out日志按自定義時間格式進(jìn)行分割,包括安裝Cronolog,修改Tomcat下bin/catalina.sh文件,shell利用crontab自動清除日志的相關(guān)知識,需要的朋友可以參考下2022-04-04tomcat 幾種連接池配置代碼(包括tomcat5.0,tomcat5.5x,tomcat6.0)
Tomcat6.0連接池配置 實現(xiàn)代碼,大家可以參考下。2009-08-08解決Tomcat啟動報錯Publishing?failed??multiple問題
這篇文章主要介紹了解決Tomcat啟動報錯Publishing?failed??multiple問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09