详解tomcat 9 安全加固方法

2022-08-18 17:02:00 浏览数 (1)

1.流程概览:

5.删除控制台

在tomcat-users.xml中停用所有用户,默认就没开

6.Shutdown Port and Command

推荐加固方式:

代码语言:javascript复制
<Server port="18005" shutdown="stop">

另一种方法:

还可以设置port属性为 -1,关闭 shutdown port

代码语言:javascript复制
<Server port="-1" shutdown="SHUTDOWN">

关闭后,bin/shutdown.sh 就失效了,提示SEVERE: No shutdown port configured. Shut down server through OS signal. Server not shut down.

7.禁止自动部署 (在运行的Tomcat部署应用)

将host节点的autoDeploy属性设置为“false”

如果存在deployOnStartup属性,也将其更改为“false”

代码语言:javascript复制
<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="false">

8.开启访问日志记录

server.xml

默认就有如下配置,不用修改

代码语言:javascript复制
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" />

9.系统Banner

禁止Tomcat在Response Header返回server信息

代码语言:javascript复制
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"  enableLookups="false" redirectPort="8443" server="Application Server"  />

server="" 也行

隐藏error page返回

server.xml

https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Error_Report_Valve

修改Error_Report_Valve属性为false,解决报错泄露

添加好host部分

代码语言:javascript复制
<valve classname="org.apache.catalina.valves.ErrorReportValve" showreport="false" showserverinfo="false"/>

web.xml

修改DefaultServlet 配置 showServerInfo 属性为false

或者,创建文件

CATALINA_BASE/lib/org/apache/catalina/util/ServerInfo.properties,内容为:

server.info=Application Server

或者

进入 apache-tomcat-9.0.53/lib/ 目录,执行如下:

代码语言:javascript复制
jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties

如上会从catalina.jar解压org/apache/catalina/util/ServerIn

代码语言:javascript复制
fo.properties文件,文件内容如下:[root@VM_1_5_centos lib]# cat org/apache/catalina/util/ServerInfo.properties  |grep -v '#'server.info=Apache Tomcat/9.0.53server.number=9.0.53.0server.built=Sep 6 2021 19:09:00 UTC

修改server.info 和 server.number

执行如下,将org/apache/catalina/util/ServerInfo.properties打包进catalina.jar

代码语言:javascript复制
jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties

10.禁用http方法

编辑web.xml 文件中配置,将readonly 的param-value值设为false

org.apache.catalina.servlets.DefaultServlet的

代码语言:javascript复制
<init-param>

<param-name>readonly</param-name>

<param-value>false</param-value>

</init-param>

11.禁止目录浏览

conf/web.xml

将listings的值设置为false。

代码语言:javascript复制
<init-param>

<param-name>listings</param-name>

<param-value>false</param-value>

</init-param>

12.错误页面

conf/web.xml

web-app添加子节点:

代码语言:javascript复制
代码语言:javascript复制
<error-page>
    <error-code>403</error-code>
    <location>/403.html</location>
</error-page>

<error-page>
    <error-code>404</error-code>
    <location>/404.html</location>
</error-page>

<error-page>
    <error-code>500</error-code>
    <location>/500.html</location>
</error-page>

<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
    <location>/error.</location>
</error-page>

在webapps目录下创建ROOT/404.html,定义自定义错误信息。范例如下:

代码语言:javascript复制
<!doctype html>
<html lang="zh-cn">
<head>
  <meta charset="utf-8" />
  <title>HTTP状态 404 - 未找到</title>
  <style type="text/css">body {font-family:Tahoma,Arial,sans-serif;text-align: center; padding: 50px; background-color:#2d2d2d; color:#fff;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style>
</head>
<body>
  <h1>HTTP状态 404 - 未找到</h1>
  <hr class="line" />
  <p><b>描述</b> 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。</p>
  <hr class="line" />
  <h3>Application Server</h3>
</body>
</html>
代码语言:javascript复制

13.Change the Website Icon

代码语言:javascript复制
添加 64*64 的LOGO到 <Tomcat_Home>/webapps/ROOT/favicon.ico

作者:偷油考拉

源链接:https://www.jianshu.com/p/d96170ab0867

格式整理:IT运维技术圈

0 人点赞