之前整理了关于主机系统的加固(Linux安全加固、Windows安全加固)。(其实我还是喜欢日靶机……)
接下来想整理下和探索下中间件或者web容器的加固,以及主流数据库的加固。
先大概说下web的一些基础东西。
一般的web访问顺序如下
web浏览器->web服务器(狭义)->web容器->应用服务器->数据库服务器
所以哪一个环节出了问题,各种攻击姿势就来了。
业务上一般的选择如下:
小项目,个人开发一般用tomcat。
linux系统一般使用jetty或apachehpptd
大型的项目会用jboss或webloigc,商业项目一般采用weblgoic,webshere,其他的还有jboss、glasshfish等
web服务器:
响应页面,处理http协议
IIS、Apache、nginx、Lighttpd
web容器:
tomcat(拥有JSP容器,servlet容器),IIS(拥有ASP容器)
操作系统与应用程序之间的交互
应用服务器:
IIS,Tomcat,WebLogic,WebSphere即是应用服务器,又拥有web服务器的功能
中间件:为应用程序提供容器和服务
这次是tomcat的Linux加固。
tomcat是apache的一个中间件软件,其可以提供jsp或者php的解析服务
加固依然分为身份鉴别、访问控制、安全审计、资源控制和入侵防范5个方面。
大部分加固基于xml配置文件进行修改,也应根据实际需求制定方案。
寻找配置文件目录,Linux可以用find /-name *tomcat* 即可。
注:皆为参考操作配置。
01
身份鉴别
1. 删除多余账号:
修改tomcat配置文件/conf/tomcat-users.xml配置文件,删除与工作无关的帐号。
例如tomcat1与运行、维护等工作无关,删除帐号,注释如下行即可:
.
2. 口令复杂度:
口令要求:长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。
修改tomcat配置文件/conf/tomcat-users.xml配置文件
要求usr1密码必须满足复杂度要求。
3. 不同用户不同账号:
应为两个或两个以上即为合理
修改tomcat配置文件/conf/tomcat-users.xml配置文件,修改或添加帐号:
4. 非root启动服务:
ps -ef | greptomcat|grep -v "grep"
tomcat进程的启动用户应不为root
使用普通用户启动tomcat服务。
02
访问控制
最小特权:
编辑tomcat配置文件/conf/tomcat-user.xml配置文件,在配置文件节点下,修改用户角色权限,授权tomcat具有远程管理权限:
1. tomcat6
2. tomcat7
03
安全审计
编辑tomcat配置文件server.xml配置文件,在标签中增加记录日志功能,将以下内容的注释标记取消:
classname: This MUSTbe set to org.apache.catalina.valves.AccessLogValve to use thedefault access log valve
Directory:日志文件放置的目录,在tomcat下面有个logs文件夹,那里面是专门放置日志文件的,也可以修改为其他路径;
Prefix:这个是日志文件的名称前缀,日志名称为localhost_access_log.2008-10-22.txt,前面的前缀就是这个localhost_access_log。
Suffix: 文件后缀名。
Pattern:common方式时,将记录访问源IP、本地服务器IP、记录日志服务器IP、访问方式、发送字节数、本地接收端口、访问URL地址等相关信息在日志文件中。
resolveHosts:值为true时,tomcat会将这个服务器IP地址通过DNS转换为主机名,如果是false,就直接写服务器IP地址。
04
入侵防范
1. HTTP加密协议
cat/usr/apache-tomcat-5.5.23//conf/server.xml|sed '//d'|sed '/^$/d'|sed'//d'|sed '/^\s*$/d'|grep "keystoreFile"
(1)使用JDK自带的keytool工具生成一个证书:
$JAVA_HOME/bin/keytool -genkey –alias tomcat –keyalg RSA -keystore/path/to/my/keystore
其中目录:/path/to/my需要用户自行创建。
(2)修改tomcat安装目录下/conf/server.xml配置文件,更改为使用HTTPS方式,增加如下行:
其中keystorePass的值为生成keystore时输入的密码。
(3)重新启动tomcat服务
2. 禁用非法HTTP请求方法
编辑web.xml文件
查看org.apache.catalina.servlets.DefaultServlet是否存在如下配置:
readonly
false
将false修改为true。readonly参数默认是true,即不允许delete和put操作。
05
资源控制
1. 超时登出
单位是毫秒
/conf/server.xml配置文件,将connectionTimeout修改为30秒:
2. 错误页面重定向
(1) 编辑tomcat配置文件/conf/web.xml文件:
在最后一行之前加入以下内容:
404
/noFile.htm
java.lang.NullPointerException
/error.jsp
第一个之间的配置实现了将404未找到jsp网页的错误导向noFile.htm页面,也可以用类似方法添加其多的错误代码导向页面,如403,500等。
第二个之间的配置实现了当jsp网页出现java.lang.NullPointerException导常时,转向error.jsp错误页面,还需要在第个jsp网页中加入以下内容:
典型的error.jsp错误页面的程序写法如下:
错误页面
出错了:
错误信息:Stack Trace is :
当出现NullPointerException异常时tomcat会把网页导入到error.jsp,且会打印出出错信息。
重新启动tomcat服务
3. 修改默认端口
修改tomcat配置文件server.xml配置文件,更改默认管理端口到非8080:
重新启动tomcat服务
4. 禁止目录列出
编辑tomcat配置文件web.xml配置文件:
listings
true
把true改成false。
重新启动tomcat服务
5. 防止恶意关闭服务
编辑tomcat配置文件conf/server.xml配置文件,
shutdown的值为复杂的字符串:
6. 连接数设置
编辑tomcat配置文件server.xml文件:
maxThreads="150" 表示最多同时处理150个连接。
minSpareThreads="25" 表示即使没有人使用也开这么多空线程等待。
maxSpareThreads="75" 表示如果最多可以空75个线程。
acceptCount="100" 当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接。
7. 修改banner
修改/lib/catalina.jar中Serverinfo.properties问津中的以下参数(修改以掩饰真实版本信息):
server.info=X
server.build=BuildDate
server.number=X
相关操作推荐
Linux服务器通用安全加固指南 :学习对Linux服务器进行安全加固。点击文末“阅读原文”,开始操作!
别忘了投稿哦
大家有好的技术原创文章
欢迎投稿至邮箱:edu@heetian.com
合天会根据文章的时效、新颖、文笔、实用等多方面评判给予100元-500元不等的稿费哦
有才能的你快来投稿吧!
了解投稿详情点击重金悬赏 | 合天原创投稿等你来!
戳“阅读原文”,开始操作学习!