关于Tomcat7.0.73的安全配置
来源:互联网 发布:网络的弊辩论赛资料 编辑:程序博客网 时间:2024/06/09 23:36
在项目发布后tomcat的安全配置
1、注释或删除 tomcat-users.xml 所有用户权限,看上去如下:
在 conf/tomcat-users.xml<?xml version='1.0' encoding='utf-8'?><tomcat-users></tomcat-users>
2、隐藏Tomcat版本信息
在CATALINA_HOME/conf/server.xml<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="8192" minSpareThreads="64" maxSpareThreads="128" acceptCount="128" enableLookups="false" server="Neo App Srv 1.0"/>
3、启动用户与端口
不要使用root用户启动tomcat,Java程序与C程序不同。nginx,httpd 使用root用户启动守护80端口,子进程/线程会通过setuid(),setgid()两个函数切换到普通用户。
即父进程所有者是root用户,子进程与多线程所有者是一个非root用户,这个用户没有shell,无法通过ssh与控制台登陆系统,Java 的JVM 是与系统无关的,是建立在OS之上的,你使用什么用户启动Tomcat,那麽Tomcat 就会继承该所有者的权限。这造成了一个问题,Linux系统小于1024的端口只有root可以使用,这也是为什么Tomcat默认端口是8080。
如果你想使用80端口只能使用root启动Tomcat。这有带来了很多安全问题。
解决方案是创建一个不同用户,如:
groupadd -g 80 daemonadduser -o --home /daemon --shell /sbin/nologin --uid 80 --gid 80 -c "Web Server" daemon
注意 /sbin/nologin , 意味着该用户不能登录,同时我也没有给它指定密码,这个用户只能用于启动tomcat
chown daemon:daemon -R /srv/*su - daemon -c "/srv/apache-tomcat/bin/startup.sh"
接下来解决80端口问题, 思路就是80去调用8080,或者映射端口。
下面是影射方案80 跳转 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
取消跳转
iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
查看规则
iptables -t nat -L
另一个就是从80请求去调用8080的方案
这个方案可以在 Tomcat 前段增加反向代理,例如:Nginx,Apache,Squid,Varnish或者F5, Array这类设备等等
4、应用程序安全
关闭war自动部署,防止被植入木马等恶意程序
unpackWARs="false" autoDeploy="false"
应用程序部署与tomcat启动,不能使用同一个用户。
我的tomcat 安装在 /srv目录下,Tomcat启动用户为daemon; 应用程序放在/www目录下www所有者是www用户。这样的目的是一旦tomcat被植入web shell程序,它将不能创建或编辑/www目录下面的任何内容。
adduser --home /www -c "Web Application" www
5、JSESSIONID
修改 Cookie 变量 JSESSIONID, 这个cookie 是用于维持Session关系。建议你改为PHPSESSID。
tomcat-user.xm 安全
查看进程帐户应为专用非root帐号。
查看tomcat配置文件server.xml是否有设置connectionTimeout值,
符合:设置账户自动登出。
检查tomcat/conf/web.xml配置文件,查看是否含有如下配置
<security-constraint> <web-resource-collection> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>DELETE</http-method> <http-method>HEAD</http-method> <http-method>OPTIONS</http-method> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint> </auth-constraint></security-constraint> <login-config> <auth-method>BASIC</auth-method> </login-config>
- 关于Tomcat7.0.73的安全配置
- 关于Tomcat7.*的Manger配置问题
- tomcat7配置https安全访问
- tomcat7配置https安全证书
- tomcat7 服务器配置HTTPS安全协议
- 关于myeclipse10中配置tomcat7出现的问题
- 关于eclipse搭配Tomcat7.0配置连接池的异常
- 关于myeclipse8.5中配置tomcat7的新手弯路记录
- Tomcat7.0的配置
- tomcat7的配置
- Tomcat7的配置
- tomcat7的配置
- tomcat7的log配置
- Mac配置tomcat7.0.73
- 关于tomcat7绿色版tomcat内存配置
- 关于SQL Server 2000的安全配置
- 关于css及安全配置的注意事项
- 关于MySQL的几点安全配置
- c# 通过查看注册表的方式来判断电脑安装office的版本
- linux shell 编程中 read i y=${i%%,*} echo "$y" 输出是变量i的值。 问下。后面的%%,*有什么用?
- React Native0.42以下报错编译
- C#的默认访问权限
- C# int.TryParse() 方法
- 关于Tomcat7.0.73的安全配置
- 最优化学习笔记
- C#连接Access数据库(详解)
- Maven Dependency Search Not Working in Eclipse
- eclipse中执行Ant脚本:Class not found: javac1.8
- 09-排序1 排序 (25分)
- jquery 多个swipper需要注意的问题
- 剑指offer 面试题23 从上到下打印二叉树
- 剑指offer——反转链表