telnet管理端口保护(强制) tomcat shutdown端口
<Server port="8527" shutdown="dangerous">
ajp连接端口保护(推荐)
如果使用的apache+tomcat 修改端口
如果没有使用apache 则把这一行注释
<!-- 开始 注释结束 -->
116 <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
禁用管理端(强制)
###0.管理端主要应用在 tomcat测试环境中
###1. 删除默认的{Tomcat安装目录}/conf/tomcat-users.xml文件,重启tomcat后将会自动生成新的文件;
###2. 删除{Tomcat安装目录}/webapps下默认的所有目录和文件;
###3. 将tomcat 应用根目录配置为tomcat安装目录以外的目录;
[root@oldboy-tomcat webapps]# rm /manager/ host-manager/ -fr
注释 conf/server.xml 部分
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
这些是关于管理端的
降权启动(强制)(监牢模式 keep in jail)
在普通用户下面,运行维护tomcat
###1)添加用户 tomcat
###2)修改 tomcat 所有者
###3)通过普通用户管理
useradd tomcat
chown -R tomcat.tomcat /app/tomcat/ /code/ /var/log/tomcat/
su - tomcat
/app/tomcat/bin/startup.sh
systemctl #需要sudo 授权
文件列表访问控制(强制)
####默认展示站点目录下所有的内容
nginx 网站文件列表功能 autoindex on;
tomcat 关闭
conf/web.xml
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
版本信息隐藏(强制)
###不同软件版本 会有些不同的故障(漏洞)
###把tomcat错误页面指定到新的页面
conf/web.xml
<error-page>
<error-code>403</error-code>
<location>/forbidden.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/systembusy.jsp</location>
</error-page>
Server header重写(推荐)
###tomcat 想让用户发下 这是nginx
server.xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
server="nginx/1.16.1"
connectionTimeout="20000"
redirectPort="8443" />
[root@oldboy-tomcat ~]# curl -I http://47.114.128.48:8080
HTTP/1.1 200
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 11 Feb 2020 02:43:19 GMT
Server: nginx/1.16.1
访问限制(可选)
<Context path="" docBase="/home/work/tomcat" debug="0" reloadable="false" crossContext="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="61.148.18.138,61.135.165.*"
deny="*.*.*.*"/>
</Context>
脚本权限回收
chmod -R 700 tomcat/bin/*
配置完整访问日志格式
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t %r %s %b %{Referer}i %{User-Agent}i %D" resolveHosts="false"/>
%{Referer}i 用户从哪里跳转过来的
%{User-Agent}i 用户客户端(浏览器)
pattern="%h %l %u %t "%r" %s %b %D "%{Referer}i" "%{User-Agent}i""