Apache 和 Tomcat是我们平时使用比较多的两个Web服务器,本文收集一些关于这两个服务器的安全性配置的方法和技巧。另外安全是相对的,需要服务器安全、数据库安全、应用程序安全互相配合。仅从服务器配置上只能在某些方面提高系统的安全性。
Apache安全配置
1、 隐藏或伪装apache版本号
打乱攻击者的步骤,给攻击者带来麻烦。一般软件的漏洞信息是和版本相关的,在攻击者收集你服务器软件信息时给予迷惑信息是个不错的选择。
默认情况下,系统会把apache的版本模块都显示出来(http返回的头),如下图
添加上如下两行,再次看http返回的信息,已经不包含apache的版本好了。
还有另外一种方法是,修改apache的源码,把版本号改为一个错误的,这个需要重新编译apache,不考虑了。
2、 禁止使用目录索引
对于可以访问的web目录,要使用相对保守的途径进行访问,不要让用户查看任何目录索引列表,修改conf/httpd.conf
3、 配置web目录的访问策略
结合业务,如果apache只作为文件访问服务器,可以配置只允许客户端访问那些类型的资源,比如如下的配置。
Allow from all Allow from all Options -Indexes FollowSymLinks AllowOverride None Order allow,deny deny from all
4、 Apache服务器的访问控制
apache的access.conf文件负责设置文件的访问权限,可以实现互联网域名和ip地址的访问控制
如允许192.168.1.1到192.168.1.254的主机访问,可以这样设定
order deny,allowdeny from allallow from pair 192.168.1.0/255.255.255.0
5、 Apache 防Dos
apache服务经常会碰到Dos攻击,防范的主要手段是通过软件,apahce Dos Evasive Maneuvers Module
来实现的,它是一款mod_access的代替软件,可以对抗DoS攻击,该软件可以快速拒绝来自相同地址对同一URL的重复请求,通过查询内部一张各子进程的哈希表来实现
可以到网址:http://online/.securityfocus.com/tools/ 上下载软件
6、 建立安全的目录结构
apache服务器包括四个目录结构
ServerRoot #保存配置文件,二进制文件与其他服务器配置文件
DocumentRoot #保存web站点内容,包括HTML文件和图片等
ScripAlias #保存CGI脚本
Customlog 和 Errorlog #保存日志和错误日志
建议的目录结构为,以上四种目录相互独立并且不存在父子逻辑关系。
ServerRoot目录只能为root用户访问
DocumentRoot目录应该能够被管理web站点内容的用户访问和使用apache服务器的apache用户与组访问
ScripAlias目录应该只能被CGI开发人员和apache用户访问
Customlog 和 Errorlog只能被root访问
下边是一个安全目录结构的事例
D:/
|+/apache2.2(ServerRoot)
|+/logs(Customlog和Errorlog)
|+/cgi-bin(ScripAlias)
|+/html(DocumentRoot)
这样的目录结构是比较安全的,因为目录之间独立,某个目录权限错误不会影响到其他目录
7、 勤打补丁
针对于一些缓存区溢出等漏洞,通过这种手段可以有效防御,及时修复已知漏洞可以很好的加强服务器安全。
Tomcat安全配置
1、 使用非管理员账户运行tomcat,配置有限的权限,限定在特定的目录下。
默认的安装tomcat是以Administrator运行的,拥有很高的权限,这样可能会导致一些安全隐患。当用户上传了恶意的jsp可以随意的删除服务器上的文件和目录,执行某些恶意代码或木马程序。所以使用受限账户启动tomcat可以很好的将权限控制在某些范围内。
2、 更改关闭服务器端口
在conf/server.xml中默认有下面一行:
这样允许任何人只要telnet到服务器的8005端口,输入”SHUTDOWN”,然后回车,服务器立即就被关掉了。
从安全的角度上考虑,我们需要把这个shutdown指令改成一个别人不容易猜测的字符串,可以同时把端口也改了。
例如修改如下:
这样就只有在telnet到8005,并且输入”c1gstudio”才能够关闭Tomcat.
注意:这个修改不影响shutdown.bat的执行。运行shutdown.bat一样可以关闭服务器。
3、 删除掉tomcat默认的其他应用
Tomcat默认安装时,会有一些默认的管理应用,如manager和host-manager等,而且他们默认的登录密码都是空,所以在实际部署时需要更改密码,或是删除掉这些应用。
4、 设置默认的错误页面
网站中常见的404、500等错误在浏览器中会显示服务器的详细信息,很容易暴露一些敏感的信息,所以在实际部署中需要替换成更外的一些页面,当出现错误时,转向一个体验良好的界面。
打开conf/web.xml文件,在文件的最后添加如下类似的代码
同时在根目录下创建404.jsp和500.jsp文件
5、 屏蔽目录文件自动列出的方法
和apache的原理类似,设置tomcat不显示目录列表,在tomcat的conf/web.xml中,进行以下配置
6、 关闭8009端口
8009端口是tomcat和apache的mod_proxy_ajp,mod_jk沟通的端口,没有用到就关了。
在<tomcatpath>/conf/server.xml 中的这段注释掉
-----------------------------------------------------------------------
参考文章:
Apache安全配置(基于linux)
apache模块详解
tomcat安全配置
windows平台下的tomcat安全设置
server2003下的tomcat安全