企业级Tomcat安全管理优化方案
telnet管理端口保护
1. 修改默认的8005管理端口为不易猜测的端口(大于1024);
<Server port="8527" shutdown="dangerous">
2. 修改SHUTDOWN指令为其他字符串;
ajp连接端口保护
1. 修改默认的ajp 8009端口为不易冲突的大于1024端口;
2. 通过iptables规则限制ajp端口访问的权限仅为线上机器;
<Connector port="8528"
protocol="AJP/1.3" />
保护此端口的目的在于防止线下的测试流量被mod_jk转发至线上tomcat服务器;
禁用管理端
这个一定要禁止
1. 删除默认的{Tomcat安装目录}/conf/tomcat-users.xml文件,重启tomcat后将会自动生成新的文件;
2. 删除{Tomcat安装目录}/webapps下默认的所有目录和文件;
3. 将tomcat 应用根目录配置为tomcat安装目录以外的目录;
<Context path="" docBase="/home/work/local/tomcat_webapps" debug="0" reloadable="false" crossContext="true"/>
对于前段web模块,Tomcat管理端属于tomcat的高危安全隐患,一旦被攻破,黑客通过上传web shell的方式将会直接取得服务器的控制权,后果极其严重,所以使用此方法进行优化;
降权启动
1. tomcat启动用户权限必须为非root权限,尽量降低tomcat启动用户的目录访问权限;
2. 如需直接对外使用80端口,可通过普通账号启动后,配置iptables规则进行转发;
这样做是避免一旦tomcat 服务被入侵,黑客直接获取高级用户权限危害整个server的安全;
文件列表访问控制
1. conf/web.xml文件中default部分listings的配置改为false;
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
false为不列出目录文件,true为允许列出,默认为false;
版本信息隐藏
1. 修改conf/web.xml,重定向403、404以及500等错误到指定的错误页面;
2. 也可以通过修改应用程序目录下的WEB-INF/web.xml下的配置进行错误页面的重定向;
<error-page>
<error-code>403</error-code>
<location>/forbidden.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/notfound.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/systembusy.jsp</location>
</error-page>
在配置中对一些常见错误进行重定向,避免当出现错误时tomcat默认显示的错误页面暴露服务器和版本信息;
必须确保程序根目录下的错误页面已经存在;
起动关闭脚本权限回收
去除其他用户对Tomcat的bin目录下shutdown.sh、startup.sh、catalina.sh的可执行权限;
chmod -R 744 tomcat/bin/*
防止其他用户有起停线上Tomcat的权限;
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux升级OpenSSH修复高危漏洞
- Pytest之收集用例及命令行参数
- CVE-2020-14645:Weblogic远程代码执行复现
- 从0到1开发测试平台(七)后端服务添加swagger第三方类库
- leetcode - 分割数组的最大值
- leetcode - 除数博弈
- leetcode - 最小路径和
- Javascript中的数据类型
- JAVA 应用日志最佳实践
- 用pageadmin cms系统进行网站制作的经验总结
- 14个Linux系统安全小妙招,总有一招用的上
- CVE-2020-14645:Weblogic远程代码执行复现
- Centos7 安装Mysql-寻找共性-万变不离其宗
- MySQL 入门、安装和客户端管理工具
- MySQL 基本使用(上):DDL 和 DML 语句