一、前言:
最近在本地服务器配置Apache的https的vhost时,查找资料的过程中偶然发现了国外的这一套
Apache安全手册,是针对ubuntu进行的演示,在此作为学习的笔记来记录如何使配置的Apache
更加的安全。在其他linux或windows系统的Apache安全配置应该类似,只是配置文件的位置有
所不同。
二、安全问题及配置策略:
1、隐藏Apache的版本和操作系统信息
Apache默认会显示出你安装的Apache版本以及你的操作系统信息,这将会使你的服务器存在
很大的安全隐患。
安全配置策略:
(1) 修改Apache主配置文件
sudo vim /etc/apache2/conf-enabled/security.conf
(2) 增添或修改
ServerSignature Off
ServerTokens Prod
(3)重启Apache
sudo /etc/init.d/apache2 restart
配置完成效果,没有了信息的展示
2、关闭目录浏览和禁止符号链接(软链接)
Apache默认列出服务器上的文件列表,这会泄露很多其他项目的信息
安全配置策略:
(1)修改apache2.conf
sudo vim /etc/apache2/apache2.conf
(2)对网站根目录增添或修改
Options -FollowSymLinks
AllowOverride None
Require all granted
(3)重启Apache
sudo /etc/init.d/apache2 restart
配置完成效果,根目录拒绝列出服务器文件
3、取消不必须的模块
Apache默认安装了一些正常使用时用不到的不必要模块,建议取消这些不必要的模块,可以通过
下面的命令来查看当前已安装的模块
sudo ls /etc/apache2/mod-enabled/
安全配置策略:
autoindex模块不必要,取消加载
(1)取消加载autoindex
sudo a2dismod autoindex
(2)重启Apache
sudo /etc/init.d/apache2 restart
配置完成效果,autoindex模块取消加载
4、利用ModSecurity模块
ModSecurity模块是一个用来保护你的web服务器的免费模块,它可以防御多种攻击,如SQL注入
XSS,session劫持,暴力破解等,这个模块还可以实时监控你的流量。
安全配置策略:
(1)安装ModSecurity模块
sudo apt-get install libapache2-modsecurity
(2)查看ModSecurity模块是否安装成功并运行
sudo apachectl -M | grep --color security
(3)为了使ModSecurity模块规则生效,,你需要重命名并且修改推荐的安全配置文件并且设置SecRuleEngine选项为on
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo vim /etc/modsecurity/modsecurity.conf
增添或修改:
SecRuleEngine On
(4)重启Apache
sudo /etc/init.d/apache2 restart
(5)高级配置
ModSecurity中有许多的安全规则,他们都在”/usr/share/modsecurity-crs”目录中,你需要激活他们
sudo vim /etc/apache2/mod-enabled/security2.conf
增添或修改:
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional "/usr/share/modsecurity-crs/*.conf"
IncludeOptional "/usr/share/modsecurity-crs/base_rules/*.conf
重启Apache
5、关闭SSI和CGI
服务器端包含 SSI,是英文 Server Side Includes的简写。SSI是一种可以指挥服务器动态声称网页内容的HTML指令。
通常SSI可以用来确保网页中的一些通用内容,比如版权信息、联系方式、或导航信息在全站所有网页中保持
一致。使用SSI显示这些通用内容还可以减轻网站维护的工作量,因为当需要修改这些通用信息的时候,只需要
改一个地方就可以了,而不需要逐个修改每一个网页。
cgi是common gateway interface的简称,这是一个用来处理http请求的接口;
由于http请求十分多样且十分复杂,web服务器不能完成这种操作,于是便利用了外部程序来处理这些请求,web服
务器将参数传递给外部程序,外部程序将运行结果返回给web服务器;外部程序和web服务器的交互需要一种接口,
那就是cgi接口,于是这些外部程序也叫cgi程序。在不需要这个功能的情况下,开启CGI执行比较危险,因为攻击者
可以上传写好的恶意CGI程序,利用配置的漏洞来进行web渗透。
安全配置策略:
当不需要这些功能时,将其关闭
(1)修改apache2配置文件
sudo vim /etc/apache2/apache2.conf
(2)增添或修改:
Options -FollowSymLinks -Include -ExecCGI
AllowOverride None
Require all granted
(3)重启Apache
sudo /etc/init.d/apache2 restart
6、限制大请求包
Apache默认对HTTP的请求大小没有限制,攻击者会利用发送大数据包来进行拒绝服务攻击,我们可以对Apache进行一些
设置来限制合适大小的数据包。
你可以在Apache的主配置文件中设置数据包大小为0(无限制)~2147483647(2G)
举个例子,你可以限制”/var/wwww/html”目录的请求包大小限制为200K
sudo vim /etc/apache2/apache2.conf
增添或修改:
LimitRequestBody 204800
重启Apache服务器
7、不允许浏览document root以外的目录
Apache推荐只能访问document root目录。
举个例子,你可以进行下面的设置来保护根目录(/)
sudo vim /etc/apache2/apache2.conf
增添或修改:
Options None 关闭所有的选项
Order deny,allow 应用的deny和allow顺序
Deny from all 禁止所有对根目录(/)的访问
重启Apache
8、保持Apache服务器的更新
新的版本会修复一些软件自身的一些bug