tomcat8.0.32+jdk1.8优化

本文详细介绍了如何对Tomcat8.0.32版本进行安全优化,包括修改管理端口、保护AJP连接、禁用管理界面、降权启动、文件访问控制、Serverheader重写、访问IP限制以及JVM参数和内部调优设置,提升服务器性能和安全性。
摘要由CSDN通过智能技术生成

tomcat8.0.32+jdk1.8优化

1)tomcat的安全优化

(1)tomcat的管理端口设置:配置文件中:默认8005,需要修改,或者修改后面的字符串

<Server port="8005" shutdown="SHUTDOWN">  #管理端口,配置为默认,需要修改端口或后面字符串 

否则:可以用telnet连接上后使用命令:SHUTDOWM关闭tomcat服务。注意:不能注释,注释后tomcat启不来。

[root@localhost ~]# telnet 127.0.0.1 8005

(2)ajp连接端口保护: (只用http1.1那个协议端口连接(8080那个),8009端口可注释或修改成其他端口,减少漏洞)

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> #ajp连接端口,配置为默认

(3)禁用管理端(3个管理界面都禁用的方法)  #根据需要选择

方法1)删除默认的tomcat安装目录/conf/tomcat-users.xml文件,可禁用3个管理界面

方法2) 将tomcat应用根目录配置为tomcat安装目录以外的目录

(4)降权启动   使用普通用户tomcat管理起停

(5)文件列表访问控制默认就是false,不用修改,不列出目录文件,若为true就是允许列出,默认不列出)

[tomcat@localhost ~]$ vim /usr/local/tomcat/conf/web.xml

<servlet>

        ..................

            <param-value>false</param-value>          #默认就是false,不用修改

    </servlet>

(6)Server header重写(推荐,类比京东) 未配置时,会显示出服务器的header,容易被攻击。

配置方法:在配置文件/usr/local/tomcat/conf/server.xml中的 8080端口连接器的最后面添加:server="自定义内容"

[tomcat@localhost ~]$ vim /usr/local/tomcat/conf/server.xml

 <Connector port="8080" protocol="HTTP/1.1"

       connectionTimeout="20000"

       redirectPort="8443" server="jdws" />  #引号里是自定义的,也可其他,添加该内容

[tomcat@localhost ~]$ curl --head http://localhost:8080  #不配置时:会显示出服务器的header

HTTP/1.1 200 OK

.............

Server: jdws

(7)访问限制:限制哪些IP能访问,哪些不能访问  

添加位置:在server.xml配置文件中的appBase=="webapps"对应的<Host>  </Host >的标签内容的最后添加一行如下内容:(如下内容根据限制不同,选择不同,根据情况选择或修改)

#只允许192.168.231.1的IP访问tomcat:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.231.1"  deny=""/> 

#只允许192.168.231.1和192.168.231.2的IP访问tomcat:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.231.1, 192.168.231.2"  deny=""/> 

#只允许整个192.168.231.0网段的IP访问tomcat:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.231.*"  deny=""/>

#只允许192.168.231.0网段的IP访问tomcat,但不允许192.168.231.1该ip访问:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.231.*"  deny="192.168.231.1"/> 

(8)建议关闭自动部署  autoDeploy="false"

修改位置:在server.xml配置文件中的appBase=="webapps"对应的<Host> … </Host >的标签内修改参数:autoDeploy="false",默认是true.

[tomcat@localhost ~]$ vim /usr/local/tomcat/conf/server.xml

      <Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="false">   #这里需要修改成false,默认是true

unpackWARs="true"   #自动解压war包;   autoDeploy="true"   #自动部署(建议关闭,改成false)

(9)起停脚本权限回收推荐

chmod -R 744 /usr/local/tomcat/bin*   

(root执行,除了tomcat用户,去除其他用户tomcat的bin目录脚本的可执行权限,防止其他用户有起停tomcat服务的权限)

2)tomcat的优化:(外部调优和内部调优,此处只做内部调优(也包括点jvm调优)

禁用DNS反查询(客户端连接tomcat时,tomcat会根据连接的客户端IP反向dns解析,查询客户端ip对应域名,这没必要),调整线程数压缩

(1)tomcat的jvm参数调优:

在/usr/local/tomcat/bin/catalina.sh中添加下面内容:

JAVA_OPTS="-server -Xms4096M -Xmx4096M -XX:PermSize=256M -XX:MaxPermSize=512M -Djava.awt.headless=true "  

#注释:

-server:   指定server模式启动时tomcat慢,但运行起来稳定且提高性能

-Xms4096M: 初始堆内存的大小,一般和下面的设置一样,一启动就分配这么大堆内存

-Xmx4096M: 最大堆内存的大小,一般和上面的设置一样,启动后最大也分配这么大堆内存,最大堆内存一般建议不要大于4G

-Xmn600M:   年轻代(新生代)的内存大小(即:新生代的内存大小,是堆内存里的细分出的一部分,默认值大小是整个堆内存的3/8)

-XX:PermSize=256M:   持久代的初始内存大小(可适当加大,jdk1.8及以后,自动计算,不需配置)

-XX:MaxPermSize=512M:持久代的最大内存大小(可适当加大,jdk1.8及以后,自动计算,不需配置)

-Djava.awt.headless=true: 表示无图形显示器模式,当程序里使用和绘图有关的api时,如果正确的声明了这种模式,才能正确调用api,如果不声明可能会抛出异常。一般linux系统上要加上这项.

(2)tomcat内部调优:

1)关闭DNS反查询 2)调整线程数 3)设置压缩 4)设置为nio模式,运行效率高,默认是:protocol="HTTP/1.1"

在/usr/local/tomcat/conf/server.xml配置文件中配置:统一进行上面的设置,如下:

[tomcat@localhost ~]$ vim /usr/local/tomcat/conf/server.xml

    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

               URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="75"

               maxThreads="300" acceptCount="300"

               enableLookups="false" disableUploadTimeout="true" 

               connectionTimeout="20000"

               compression="on" compressionMinSize="2048"

               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

               redirectPort="8443" server="GDWS" />

注释:此处参数是两种生产环境的参数,根据需要参考选择

minSpareThreads="25" maxSpareThreads="75"   #最小最大空闲线程数设置,也可是100和200,

enableLookups="false"        #关闭DNS反查询

disableUploadTimeout="true"  #打开一个下载超时

connectionTimeout="20000"    #连接的超时时间,毫秒

acceptCount="300"            #等待工作的线程数量,也可200,当所有的线程都启用以后,还允许一些用户连接进来,这个就是等待工作的线程数(不算正在工作的线程数)

maxThreads="300"            #最大线程数,只当前tomcat可以同时工作的最大线程数量,也可认为是:当前同时处理的用户请求数量, 也可500,根据需要此处参数是两种生产环境的参数,根据需要参考选择

compression="on"            #开启压缩

compressionMinSize="2048"   #压缩的最小大小,文件超过这么大时才压缩

compressableMimeType        #压缩的文件类型,需要压缩的什么文件类型

protocol="org.apache.coyote.http11.Http11NioProtocol"  #设置为nio模式,运行效率高,默认是:protocol="HTTP/1.1"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维实战课程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值