1、telnet管理端口保护

使用telnet连接进来可以输入SHUTDOWN可以直接关闭tomcat,极不安全,必须关闭。可以修改默认的管理端口8005改为其他端口,修改SHUTDOWN指令为其他字符串。

# vi conf/server.xml
<Server port="" shutdown="IN0IT">

2 AJP连接端口保护

Tomcat 服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客 户。默认情况下,Tomcat在server.xml中配置了两种连接器,一种使用ajp,要和apache结合使用,一种使用http。当使用http 时,可以限制ajp端口访问,在于防止线下测试流量被mod_jk转发至线上tomcat服务器。可以通过iptables规则限制ajp端口的访问,或 者直接将改行注释。

# vim conf/server.xml
<!--<Connector port="" protocol="AJP/1.3" redirectPort="" />-->

3 禁用管理端

对于tomcat的web管理端属于高危安全隐患,一旦被攻破,黑客通过上传web shell方式取得服务器的控制权,那是非常可怕的。我们需要删除tomcat安装目录下conf/tomcat-user.xml或者删除webapps下默认的目录和文件。

# mv webapps/* /tmp

4 降权启动tomcat

tomcat 启动用户权限必须为非root,避免一旦tomcat服务被入侵,获取root权限,普通用户只能使用大于1024端口,如果要想使用80端口,可以使用 iptables规则进行转发,或者使用代理。一般情况下,tomcat前方有一个反向代理服务器nginx或者apache等。

参考:https://tomcat.apache.org/tomcat-8.0-doc/setup.html

[root@tomcat ~]# cd /usr/local/tomcat/bin/
[root@tomcat bin]# tar xf commons-daemon-native.tar.gz
[root@tomcat bin]# cd commons-daemon-1.0.-native-src/unix
[root@tomcat unix]# ./configure --with-java=/usr/java/jdk1..0_45/
[root@tomcat unix]# make
[root@tomcat unix]# cp jsvc /usr/local/tomcat/bin/
[root@tomcat bin]# cd /usr/local/tomcat/bin/

编辑daemon.sh,首行加入以下内容,表示启动tomcat用户为nginx

TOMCAT_USER=nginx

启动关闭tomcat

# ./daemon.sh start | stop | version | run

查看启动情况

# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0.0.0.0: 0.0.0.0:* LISTEN /sshd
tcp 127.0.0.1: 0.0.0.0:* LISTEN /master
tcp ::: :::* LISTEN /jsvc.exec
tcp ::: :::* LISTEN /sshd
tcp ::: :::* LISTEN /master

5 文件列表访问控制

conf/web.xml文件中的default部分listings的配置必须为false,false为不列出目录文件,true为允许列出,默认为false。

       <init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>

版本信息隐藏

对一些常见错误重定向,避免出错暴露服务器和版本信息。在conf/web.xml重定向403,404及500等错误到指定页面。

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

7 脚本权限回收

去除其他用户对bin目录下可执行权限,防止其他用户起停tomcat

# chmod -R  bin/*

8 访问日志格式规范

开启Referer和User-Agetn是为了一旦出现安全问题能够更好的根据日志进行排查

      <Host name="23.83.xx.xx"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<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 %{Referer}i %{User-Agent}i %D" />
<Context docBase="/usr/local/tomcat/webapps/FWYsWeb" path="" reloadable="true"/>
<Context docBase="/usr/local/tomcat/webapps/FWYsWeb" path="/FWYsWeb" reloadable="true"/>
</Host>

9 设置信任IP白名单

只允许192.168.31.0网段访问

     <Host name="192.168.31.128"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<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 %{Referer}i %{User-Agent}i %D" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.31.*"/>
<Context docBase="/usr/local/tomcat/webapps/FWYsWeb" path="" reloadable="true"/>
<Context docBase="/usr/local/tomcat/webapps/FWYsWeb" path="/FWYsWeb" reloadable="true"/>
</Host>

10 凑个数,正在想

tomcat十大安全优化措施的更多相关文章

  1. 十大技巧优化Android App性能

    无论锤子还是茄子手机的不断冒出,Android系统的手机市场占有率目前来说还是最大的,因此基于Android开发的App数量也是很庞大的. 那么,如何能开发出更高性能的Android App?相信是软 ...

  2. 转:IT公司的十大内耗,别说你公司没有!

    这篇文章是以前看到的,觉得写得非常好,转载在自己BLOG作为记录.原文:http://www.pmtoo.com/news/2015/0108/7260.html. 当企业发展到一定时期时,会不可避免 ...

  3. 阿里云资深DBA专家罗龙九:云数据库十大经典案例分析【转载】

    阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的&l ...

  4. MySQL管理员珍藏:十大必备工具盘点

    作者:dongdongzzcs 第1页: [IT168 专稿]本文的作者Daniel Nichter是MySQL工具的开发者,他为MySQL管理员推荐了十款必备工具.以下是全文内容: MySQL是一套 ...

  5. Mysql优化(出自官方文档) - 第十篇(优化InnoDB表篇)

    Mysql优化(出自官方文档) - 第十篇(优化InnoDB表篇) 目录 Mysql优化(出自官方文档) - 第十篇(优化InnoDB表篇) 1 Optimizing Storage Layout f ...

  6. 我的MYSQL学习心得(十六) 优化

    我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  7. 【十大经典数据挖掘算法】Naïve Bayes

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 朴素贝叶斯(Naïve Bayes) ...

  8. 【十大经典数据挖掘算法】k-means

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 引言 k-means与kNN虽 ...

  9. [转] MySql 优化 大数据优化

    一.我们可以且应该优化什么? 硬件 操作系统/软件库 SQL服务器(设置和查询) 应用编程接口(API) 应用程序 ------------------------------------------ ...

随机推荐

  1. PHP -- 上传文件接口编写 及 iOS -- 端上传图片AF实现

    PHP 上传文件接口: //保存图片 $json_result ['status'] = 0; $path = 'upfile'; $json_result ['status'] = 0; $json ...

  2. c# 获取网页源码

    C#获取指定网页HTML原代码可使用 WebClient WebRequest HttpWebRequest 三种方式来实现. 当然也可使用webBrowse!在此就不研究webBrowse如何获取了 ...

  3. 跨浏览器图像灰度(grayscale)解决方案

    <style type="text/css"> .gray { -webkit-filter: grayscale(100%); /* CSS3 filter方式,we ...

  4. js打字机效果实现

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>打 ...

  5. [Bundling and Minification ] 二、绑定的作用

    本篇接上一篇[Bundling and Minification ] 一.如何绑定 Bundling的作用有二,一是合并文件减少资源请求的个数缩短资源请求的时间.二是自动更新到最新js或者css,当合 ...

  6. 解决 samba不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接

    net use * /del /y http://www.cnblogs.com/senior-engineer/p/4528378.html

  7. poj1182 带权并查集

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 60225   Accepted: 17656 Description ...

  8. hdu4990 矩阵

    C - Reading comprehension Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  9. 详解Mac配置虚拟环境Virtualenv

    virtualenv 可以用来建立一个专属于项目的python环境,保持一个干净的环境.只需要通过命令创建一个虚拟环境,不用的时候通过命令退出,删除. 下面介绍一下安装方法: 安装 virtualen ...

  10. 22 java当中的数组

    class Test { public static void main(String args[]) { //数组的静态声明法 int arr[]={5,2,7,9,0}; //数组的动态声明法 i ...