X.d 笔记

小Web,大世界

0%

Apache一些安全问题小结

每次装Apache,总是有一大堆条例配置来看,总结下心得。

一:软件版本、修改服务器

Apache 貌似高高危的漏洞不是太多,但还是安装最新版本比较好,安装前,可以对版本号进行隐藏:

  1. 方法是在 make 之前,用 vim 编辑 ap_release.h 文件,
  2. 找到 #define AP_SERVER_BASEPRODUCT “Apache”
  3. Apache 修改为其它字符串,比如”abc server”

这样,在响应头中,就看不到服务器信息了。

二:用户权限

一般来说,Apache都是root用户安装运行。但不能让Apache具有root权限,如果是用root用户安装的话,需要专门为Apache建立一个单独的用户或用户组

groupadd apachegroup
useradd -g apachegroup apache -p apache

再修改httpd.conf

User apache
Group apachegroup

修改后,以root用户重启apache时,子进程会自动以apache身份运行

三:版本暴露

安装后,修改http.conf,里面加入两条

ServerSignature Off
ServerTokens Prod

这样启动后就不会将服务器详细信息暴露给用户了

四:禁用不安全方法

如无必要,应该只保留GET/POST方法,禁用掉PUT/DELETE等方法,编辑httpd.conf文件

<LimitExcept GET POST>
Order Allow,Deny
Deny from all
</LimitExcept>
TraceEnable off #trace方法要单独关闭

说明:

  1. 如果是apache只做为代理入口服务器,需要在应用服务器再禁用
  2. 如果有HTML5上传功能,需要允许OPTIONS方法

五:禁用不安全执行命令

在httpd.conf里面配置 Options None 即可,貌似新版本都是默认配置了的,可以禁用ssi与cgi来执行命令或运行程序。

六:开启DDOS保护,XSS,SQL注入

Apache默认没有此功能,遇到DDOS功能很容易挂掉,需要安装DDOS,推荐安装 dosevasive。关于这个mod不作介绍,可以Google去找。
本人实测,此模块有一定的性能损耗,会使吞吐率下降(虽然不多),而且不利于集群部署。如果是小型网站,平时访问量就不多,推荐修改下httpd.conf,也可以缓解一下ddos攻击,可根据实际情况做限制

Timeout 60
KeepAlive on
KeepAliveTimeout 15
StartServers 10
MinSpareServers 10
MaxSpareServers 20
MaxClients 200

Apache本身也没有防XSS,SQL的功能,可以根据实际情况安装mod_security第三方模块来加入此功能,增加安全性。

七:防止缓冲区溢出

在httpd.conf配置 ,根据实际情况

LimitRequestBody 1024
LimitRequestFields 50
LimitRequestFieldSize 100
LimitRequestline 500
CoreDumpDiretory /usr/local/apache2/logs

八:定制日志输出,错误页面等

这个不多说了,默认日志输出到同一个文件上,包括access_log,error_log,建议按时间或按大小分割日志,定期备份。
错误页面配置403,404,500等,如果是还有应用服务器,则需要在应用服务器上也配置。

九:激活除了v2以外的附有协议版本

如果给Apache配置了SSL,默认情况下一般是没有配置协议版本的,即可以支持TLSv1、SSLv2、SSLv3

其中SSL协议 V2.0 有安全漏洞,攻击者可以利用这些问题进行的中间人攻击和解密受影响的服务和客户端之间的通信。即使你的网站支持v1和v3,攻击者也可以安全级别低的v2的形式发送请求。

如果是apache服务器,则可以通过配置解决

修改/apache/conf/extra/httpd-ssl.conf文件

SSLProtocol all -SSLv2