加强服务器安全Tomcat篇

Tomcat简介:

Tomcat 服务器是一个免费的开放源代码的Java Web 应用服务器作为一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。

以下列举一些可以加强安全的点:

1、关闭服务器端口:在conf/server.xml配置文件中定义了可以直接关闭 Tomcat 实例的管理端口。

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

我们通过telnet 连接上该端口之后,输入 SHUTDOWN (此为默认关闭指令)即可关闭 Tomcat 实例!SHUTDOWN的命令过于简单容易被猜出来,所以需要修改为复杂的字符串,<Server port="8005" shutdown="9SDfjsd29jf24sdff0LSDdfJKS9DKkjsd">

2、普通用户登录:为了进一步安全,不建议使用 root 来启动 Tomcat。尽量在可以执行的前提下用最低用户权限,比如使用专用用户 tomcat 用户来启动 Tomcat。在conf/tomcat-users.xml文件中设置用户密码与角色。如webgoat项目的配置:

<role rolename="webgoat_basic"/>

<role rolename="webgoat_admin"/>

<role rolename="webgoat_user"/>

<user password="webgoat" roles="webgoat_admin" username="webgoat"/>

<user password="basic" roles="webgoat_user,webgoat_basic" username="basic"/>

3、关闭war包自动部署:在conf/server.xml文件中默认开启war包热部署:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

为了防止被植入木马恶意程序,修改:unpackWARs="false" autoDeploy="false"

4、禁用Tomcat后台管理:容易通过访问http://localhost:8080/manager使用admin登录Tomcat管理后台,执行部署项目等造成严重安全问题。

可以删除/webapps目录下Tomcat自带的所有项目。

删除或修改webapps/host-manager/manager.xml文件。

5、增加防火墙:限制访问Tomcat的控制与连接器端口。在linux环境下可以用命令netstat -a查看网络服务器socket以及其他连接。执行以下命令:

插入规则:iptables -A INPUT -p tcp -m tcp --dport 8005 -j DROP
保存规则service iptables save
重载规则service iptables restart

6、隐藏版本信息:在实际中为了避免被针对性版本的漏洞进行攻击,可以手动修改lib/catalina.jar文件的:

①、在linux下:jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org

②、在Windows下:可以用jad反编译打开去修改。

通过修改 org/apache/catalina/util/ServerInfo.properties 文件中:

server.info=Apache Tomcat/7.0.53

server.number=7.0.53.0

server.built=Mar 25 2014 06:20:16

除了修改版本信息的方式也可以通过修改conf/web.xml文件:将 DefaultServlet 的 showServerInfo 设为 false,这样不会导致在启用目录列表后,Tomcat 版本号就会包含在发送给客户端的响应中。

7、脚本权限回收:在Tomcat启动后,应该将/bin录下的start.sh、catalina.sh、shutdown.sh的可执行权限,如进入该目录后:

所属用户只读:chmod u=r-- shutdown.sh
所属组只读:chmod g=r-- shutdown.sh
其他用户只读:chmod o=r-- shutdown.sh

8、文件列表访问控制:在/conf/web.xml文件中的default部分的listings的配置必须为false(默认),表示不列出文件列表。之所以这样设置,不是因为允许目录列表是不安全之举,而是因为要对包含数千个文件的目录生产目录列表,会大量消耗计算资源,会容易导致 DOS 攻击。

9、清除没有用的连接器:在conf/server.xml中默认配置了一个HTTP和AJP连接器,在生产环境中应该去除多余的连接器。Connector标签如

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

10、APJ连接端口的保护:修改默认的ajp 8009端口为不易冲突(大于1024),要求端口配置在8000~8999之间,通过iptables规则限制ajp端口访问的权限仅为线上机器,目的在于防止线下测试流量被apache的mod_jk转发至线上tomcat服务器

标准配置:<Connector port="8349" protocol="AJP/1.3"/>

11、访问日志格式规范:开启tomcat默认访问日志中Referer和User-Agent记录,在conf/server.xml文件中的标准配置:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

12、maxThreads 连接数限制:限制Tomcat所能接受最大连接数。一般设置不要超过8000以上,还需要注意Java 还需要注意 jvm 的参数配置。如果不注意就会因为jvm参数过小而崩溃。在conf/server.xml文件<connector>内的设置属性。

13、多虚拟主机:不要使用 Tomcat 的虚拟主机,推荐每个站点使用一个实例。即,可以启动多个 Tomcat,而不是启动一个 Tomcat 里面包含多个虚拟主机。因为 Tomcat是多线程,共享内存,任何一个虚拟主机中的应用崩溃,都会影响到所有应用程序。虽然采用多实例的方式会产生过多的开销,但至少保障了应用程序的隔离和安全。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值