欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

搞定!让你的Tomcat 9更安全的方法详解

最编程 2024-08-07 17:17:39
...

1.流程概览:

5.删除控制台

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

6.Shutdown Port and Command

推荐加固方式:

<Server port="18005" shutdown="stop">

另一种方法:

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

<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”

<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="false">

8.开启访问日志记录

server.xml

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

<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信息

<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部分

<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/ 目录,执行如下:

jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties

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

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

jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties

10.禁用http方法

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

org.apache.catalina.servlets.DefaultServlet的

<init-param>

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

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

</init-param>

11.禁止目录浏览

conf/web.xml

将listings的值设置为false。

<init-param>

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

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

</init-param>

12.错误页面

conf/web.xml

web-app添加子节点:

<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,定义自定义错误信息。范例如下:

<!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>

13.Change the Website Icon

添加 64*64 的LOGO到 <Tomcat_Home>/webapps/ROOT/favicon.ico

作者:偷油考拉

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

格式整理:IT运维技术圈

推荐阅读