Apache 基线检查策略
1、以专门的用户帐号和组运行Apache
1、参考配置
(1)如果没有设置用户和组,则新建用户,并在Apache配置文件中指定
创建apache组:#groupadd apache
创建apache用户并加入apache组:#useradd apache -g apache
将下面两行加入Apache配置文件httpd.conf中
User apache
Group apache
2、补充操作说明
(1)根据不同用户,取不同的名称。
(2)为用户设置适当的家目录和shell。
(3)如果配置了nobody、deamon、root这3个用户以及组,则请删除之。
(4)如果配置了具有多个用户和组也请一并删除,保留一个。
2、设备应配置日志功能,对运行错误、用户访问等进行记录,记录内容包括时间,用户使用的IP地址等内容
1、参考配置
(1)编辑httpd.conf配置文件,设置日志记录文件、记录内容、记录格式。
其中,错误日志:
LogLevel notice #日志的级别
ErrorLog "logs/error_log" #日志的保存位置(错误日志)
访问日志:
LogFormat "%h %l %u %t \"%r\" %>s %b "%{Accept}i\" \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "logs/access_log" combined (访问日志)
2、补充操作说明
(1)ErrorLog指令设置错误日志文件名和位置。错误日志是最重要的日志文件,Apache httpd将在这个文件中存放诊断信息和处理请求中出现的错误。若要将错误日志送到Syslog,则设置:ErrorLog syslog。
(2)CustomLog指令指定了保存日志文件的具体位置以及日志的格式。访问日志中会记录服务器所处理的所有请求。
LogFormat设置日志格式,建议设置为combined格式。LogLevel用于调整记录在错误日志中的信息的详细程度,建议设置为notice。
3、禁止Apache列表显示文件
1、参考配置
(1) 编辑httpd.conf配置文件
<Directory "/web">
Options Indexes FollowSymLinks #删掉Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
将Options Indexes FollowSymLinks中的Indexes去掉,就可以禁止Apache显示该目录结构。
(2)重新启动Apache服务
2、补充操作说明
(1)<Directory "/web">中的web指的是需要访问的目录。Indexes的作用就是当该目录下没有index.html文件时,就显示目录结构。
4、Apache错误页面重定向
参考配置
(1) 修改httpd.conf配置文件:
ErrorDocument 400 /custom400.html
ErrorDocument 401 /custom401.html
ErrorDocument 403 /custom403.html
ErrorDocument 404 /custom404.html
ErrorDocument 405 /custom405.html
ErrorDocument 500 /custom500.html
Customxxx.html为要设置的错误页面。
(2)重新启动Apache服务
5、根据业务需要,合理设置session时间,防止拒绝服务攻击
参考配置
(1) 编辑httpd.conf配置文件, 配置如下:
Timeout 10
KeepAlive On
KeepAliveTimeout 15
(2) 重新启动Apache服务
6、隐藏Apache的版本号及其它敏感信息
参考配置
(1)修改httpd.conf配置文件,配置如下
ServerSignature Off
ServerTokens Prod
7、更改Apache服务器非公众服务默认端口
参考配置
(1)修改httpd.conf配置文件,更改默认端口到xx端口(不常见端口)
Listen x.x.x.x:xx端口
(2)重启Apache服务
8、删除缺省安装的无用文件
参考配置
(1)在apache初安装的情况下可执行如下操作,如果相关目录已经添加过文件,请勿操作。
a.删除缺省HTML文件(请根据实际安装情况调整目录):
#rm -rf $APACHE_HOME/htdocs/index.html
b.删除缺省的CGI脚本:
#rm -rf $APACHE_HOME/cgi-bin/printenv
#rm -rf $APACHE_HOME/cgi-bin/test-cgi
c.删除Apache说明文件:
#rm -rf $APACHE_HOME/manual/*
9、限制http请求的消息主体的大小
1、参考配置
(1)编辑httpd.conf配置文件,配置如下:
LimitRequestBody 102400
2、补充操作说明
(1)数值单位为Byte。
(2)如果不存在则手动在文件末尾添加。
10、关闭TRACE,防止TRACE方法被访问者恶意利用
参考配置
(1)编辑httpd.conf配置文件,配置如下内容:
TraceEnable Off
(2)如果不存在则手动在文件末尾添加。
11、如果服务器上不需要运行CGI程序,建议禁用CGI
参考配置
(1)编辑httpd.conf配置文件,把cgi-bin目录的配置和模块都注释掉:
#LoadModule cgi_module modules/mod_cgi.so
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#<Directory "/var/www/cgi-bin">
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
#</Directory>
12、服务器有多个IP地址时,只监听提供服务的IP地址
参考配置
(1)修改httpd.conf配置文件,绑定IP和端口:
Listen x.x.x.x:80
13、禁用危险HTTP方法
参考配置
(1)编辑httpd.conf文件,只允许get、post方法,配置如下:
<LimitExcept GET POST >
Deny from all
</LimitExcept>
14、根据机器性能和业务需求,设置最大最小连接数
参考配置
(1)使用httpd -l检查Apache的工作模式,如列出prefork.c,则修改httpd.conf文件,配置如下:
<IfModule prefork.c>
ServerLimit 1024
StartServers 8
MinSpareServers 100
MaxSpareServers 500
MaxClients 1024
MaxRequestsPerChild 1000
</IfModule>
(2)重新启动Apache服务
15、在不影响业务的情况下,升级解决高危漏洞,而且该补丁要通过实验测试
参考配置
(1)访问http://httpd.apache.org/download.cgi,查看最新的apache版本,在实验室测试通过的前提下,编译升级apache,以解决高危漏洞。
最后更新于
这有帮助吗?