1、web.xml配置及修改:

站点默认主页:

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

404及500设置

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

默认会话超时时间:

<session-config>

<session-timeout>60</session-timeout>

</session-config>

禁止列表目录结构:

<init-param>

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

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

</init-param>

2、server.xml配置安全修改

<Server port="8005" shutdown="SHUTDOWN">

把SHUTDOWN改成forevernotdown,端口也可自行修改

3、修改或隐藏默认Tomcat的版本信息

类似于nginx的server_tokens off ,tomcat也可以隐藏版本号,具体步骤如下:

cd apache-tomcat-7.0.59/lib

mkdir test

cd test

jar xf ../catalina.jar

cat org/apache/catalina/util/ServerInfo.properties |grep -v '^$|#'

server.info=Apache Tomcat/7.0.59

server.number=7.0.59.0

vi org/apache/catalina/util/ServerInfo.properties

server.info=Tomcat

server.number=6

server.built=Jan 18 2013 14:51:10 UTC

jar cf ../catalina.jar ./*

rm -rf test

curl -I http://127.0.0.1:8080

4、删除$CATALINA_HOME/webapps下的不必要的目录

当Tomcat首次完成安装后,立即删除webapps下面的所有代码

rm -rf /srv/apache-tomcat/webapps/*

5、tomcat-users.xml该文件含有用户名、角色以及密码的清单文件,如果不需要web部署,生产环境需要注释掉:

# cat conf/tomcat-users.xml

<!--

<role rolename="tomcat"/>

<role rolename="role1"/>

<user username="tomcat" password="<must-be-changed>" roles="tomcat"/>

<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>

<user username="role1" password="<must-be-changed>" roles="role1"/>

-->

6、server.xml线程数修改/热部署修改/

1)maxThreads 为Tomcat的最大线程数,minSpareThreads 初始化时创建的Socket线程数。如果连接过多,组建tomcat集群负载均衡处理

2)默认 Tomcat 是开启了对war包的热部署的。为了防止被植入木马等恶意程序,因此我们要关闭自动部署。

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

unpackWARs="false" autoDeploy="false">

7、多虚拟主机

强烈建议不要使用Tomcat的虚拟主机,每个站点一个实例。即,启动多个tomcat,虽然开销比较大,但保证了应用程序隔离与安全。

8、Tomacat虽然可以启用压缩通过compression="on" 来配置,但最好把它前置通过apache和nginx来统一处理

9、应用程序安全,Tomcat目录与应用程序部署分离

不建议用root启动,建议单独设置独立用户启动,把Tomcat目录的属主设置为指定用户,比如tomcat。

10、生产环境部署

apache+tomcat/nginx+tomcat,站点的默认主页和自定义错误页面,可在前端的apache或者nginx中做。

优化

Tomcat的运行模式有3种

1、bio

默认的模式,效率性能非常低。

2、nio

使用NIO在服务器端会有更好的性能,加强服务器端对并发处理的性能。 Tomcat8默认以nio模式运行,想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为

<Connector port="8080″

protocol="org.apache.coyote.http11.Http11NioProtocol"

connectionTimeout="20000"

URIEncoding="UTF-8"

useBodyEncodingForURI="true"

enableLookups="false"

redirectPort="8443">

重启tomcat ,就可以生效。

3、apr安装及优化

从操作系统级别来解决异步的IO问题,大幅度的提高性能。必须要安装apr和native,直接启动就支持apr修改protocol为org.apache.coyote.http11.Http11AprProtocol

安装apr

yum -y install apr apr-util apr-devel openssl-devel

安装native 进入tomcat/bin目录,比如:

cd /usr/local/tomcat/bin/

tar xzfv tomcat-native.tar.gz

cd tomcat-native-1.1.20-src/jni/native/

./configure --with-apr=/usr/bin/apr-1-config

make && make install

安装完成之后 会出现如下提示信息

Libraries have been installed in: /usr/local/apr/lib

安装成功后还需要对tomcat设置环境变量,方法是在setenv.sh文件中增加1行:

CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"

或者:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

source /etc/profile

修改8080端对应的conf/server.xml

protocol="org.apache.coyote.http11.Http11AprProtocol"

启动tomcat之后,查看日志会有这一行信息,说明已经是APR模式启动了。INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

4、内存参数优化

并发优化 1.JVM调优 新增文件TOMCAT_HOME/bin/setenv.sh如下语句,具体数值视情况而定。

JAVA_OPTS="-Xms1024m -Xmx1024m -Xss1024K -XX:PermSize=64m -XX:MaxPermSize=128m"

参数详解

-Xms JVM初始化堆内存大小 -Xmx JVM堆的最大内存 -Xss 线程栈大小 -XX:PermSize JVM非堆区初始内存分配大小 -XX:MaxPermSize JVM非堆区最大内存 建议和注意事项: -Xms和-Xmx选项设置为相同堆内存分配,以避免在每次GC 后调整堆的大小,堆内存建议占内存的60%~80%;非堆内存是不可回收内存,大小视项目而定;线程栈大小推荐256k.

32G内存配置如下:

JAVA_OPTS="-Xms20480m -Xmx20480m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m"

5、.关闭DNS反向查询 在<Connector port=”8080″中加入如下参数

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

connectionTimeout="6000" enableLookups="false" acceptCount="800"

redirectPort="8443" />

6、优化tomcat参数(使用APR)参考:

<Listener className="org.apache.catalina.core.AprLifecycleListener" />

...

<Connector port="8080"

protocol="org.apache.coyote.http11.Http11AprProtocol"

connectionTimeout="20000" //链接超时时长

redirectPort="8443"

maxThreads="500"

minSpareThreads="20"

acceptCount="1000"

enableLookups="false"

compression="on" //压缩传输,取值on|off|force,默认值off。

noCompressionUserAgents="gozilla, traviata"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,,application/octet-stream"="2048"

URIEncoding="UTF-8"

server="office" />

升级版本一般将当前老版本 tomcat 的server.xml、catalina.sh、web.xml和tomcat-users.xml文件进行备份,然后部署完新版本的 tomcat 之后,将这些配置文件覆盖过去即可,然后停掉旧版本,启动新版本即可完成升级操作

Tomcat学习总结(11)——Linux下的Tomcat安全优化的更多相关文章

  1. Linux下安装Tomcat服务器和部署Web应用

    一.上传Tomcat服务器

  2. linux下查看tomcat和jdk版本号

    linux下查看tomcat和jdk版本号的命令: 这个需要进入到bin目录下面 ,执行"./version.sh"命令 [root@hncsweb bin]# ./version ...

  3. Linux下配置Tomcat服务器

    Linux下配置Tomcat服务器和Windows下其实差不多,可以去官网下载安装包释放或者在线下载,只是当时下载的windows.zip文件,现在下载.tar.gz格式的即可,下面使用命令行的方式安 ...

  4. 转】Linux下安装Tomcat服务器和部署Web应用

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4097608.html 感谢! 一.上传Tomcat服务器

  5. linux下JDK,tomcat的安装与环境变量配置

    先从网上下载jdk(jdk-1_5_0_02-linux-i586.rpm) ,下载后放在/home目录中,当然其它地方也行. 进入安装目录#cd /home#cp jdk-1_5_0_02-linu ...

  6. Linux下搭建tomcat集群全记录(转)

    本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法.为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:ap ...

  7. 在linux下用tomcat部署java web项目的过程与注意事项

    在linux下用tomcat部署java web项目的过程与注意事项 一.安装JDK 到http://www.oracle.com/technetwork/java/javase/downloads/ ...

  8. linux下安装tomcat和部署web应用

      孤傲苍狼 只为成功找方法,不为失败找借口! Linux下安装Tomcat服务器和部署Web应用 一.上传Tomcat服务器

  9. Linux下部署tomcat

    在Linux系统下,重启Tomcat使用命令操作的! 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看 ...

  10. Linux下配置tomcat+apr+native应对高并发

    摘要:在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待.但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服 ...

随机推荐

  1. 【滚动条】Selenium+python自动化-JS处理滚动条

    转载地址: http://www.cnblogs.com/yoyoketang/p/6128655.html --------------------------------------------- ...

  2. hdu 4901 划分序列使异或和==且和

    http://acm.hdu.edu.cn/showproblem.php?pid=4901 给定一个序列,要求选出两个集合,S和T,要求S中选中的元素的下标都要小于T中元素的下标.并且说S中元素的异 ...

  3. 方案dp。。

    最近经常做到组合计数的题目,每当看到这种题目第一反应总是组合数学,然后要用到排列组合公式,以及容斥原理之类的..然后想啊想,最后还是不会做.. 但是比赛完之后一看,竟然是dp..例如前几天的口号匹配求 ...

  4. hdu 1.2.6

    勾股定理... #include<cstdio> #include<algorithm> using namespace std; int main() { //freopen ...

  5. 分形之闵可夫斯基(Minkowski)

    与上一篇文章分形之正方形折线相似,闵可夫斯基分形也是分形出正方体,不同之处是它分出了两个正方体. 核心代码: static void FractalMinkowski(const Vector3&am ...

  6. 实验8 LCD8*8点阵

    1.控制点阵红绿交替显示,分别从上到下,从左到右循环闪烁三次 接线: P0接J12.P1接J20.P2接J19 /** 1.控制点阵红绿交替显示,分别从上到下,从左到右循环闪烁三次 **/ #incl ...

  7. WPF实现窗体中的悬浮按钮

    WPF实现窗体中的悬浮按钮,按钮可拖动,吸附停靠在窗体边缘. 控件XAML代码: <Button x:Class="SunCreate.Common.Controls.FloatBut ...

  8. UWP 响应键盘组合快捷键

    方法1:响应Ctrl+?快捷键 首先在load事件或者keydown事件内注册事件 public MainPage() { this.InitializeComponent(); // Registe ...

  9. Android Parcelable using Kotlin

    Kotlin 有 extension 可以很方便的让类继承 Parcelable 接口. 项目中引入一个较新版本的 Kotlin 引入 Kotlin extensions classpath &quo ...

  10. 201621123018《java程序设计》第13周作业总结

    1. 本周学习总结 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网络同时使用,需要为你的系统增加网络功能. 2.1 简述你想为你的系统增加什 ...