Apache基线核查 – 作者:fu福lin林

一、访问控制

1.1应提供访问控制功能,依据安全策略控制用户对文件、数据库表等客体的访问

1.1.1 检查是否限制非属主用户对配置文件的访问权限

非属主用户对配置文件只读,属主可读写:

使用如下命令: chmod 644 /usr/local/apache/conf/httpd.conf

1.1.2检查是否限制非属主用户对日志文件的访问权限

非属主用户对日志文件只读,属主可读写(用户日志):

使用chmod命令更改日志文件权限符合描述要求,如:chmod 644 access_log

非属主用户对日志文件只读,属主可读写(错误日志):

使用chmod命令更改日志文件权限符合描述要求,如:chmod 644 error_log

1.1.3检查是否禁用PUT、DELETE等危险的HTTP方法

只允许GET和POST方法:

在httpd.conf中,添加如下内容: <LimitExcept GET POST> Deny from all </LimitExcept>

1.1.4检查是否禁止Apache显示目录结构

取消Indexes选项:

在配置文件中,将所有Options关键字后的Indexes去掉,如 <Directory “/Web”> Options FollowSymlinks </Directory>

1.1.5 检查是否禁止客户端访问Web目录之外的任何文件

禁止所有对根目录的访问:

在配置文件httpd.conf中添加如下语句,禁止对根目录的访问: <Directory /> Order deny,allow Deny from all </Directory>

1.1.6检查是否更改默认端口

取消80默认端口:

在配置文件中修改Listen语句: Listen X.X.X.X:8080

1.2访问控制的覆盖范围应包括与资源访问相关的主体、客体及它们之间的操作

1.2.1检查是否仅绑定提供服务的IP地址

只有一个IP地址时可监听全部or 有多个网络地址时绑定特定IP

只有一个IP地址时可监听全部:

使用ifconfig命令查看网络信息,若仅有一个网络地址,在httpd.conf中可不绑定IP:Listen 80 

有多个网络地址时绑定特定IP:

在httpd.conf中更改Listen语句: Listen X.X.X.X:80

1.3应授予不同帐户为完成各自承担任务所需的最小权限,并在它们之间形成相互制约的关系

1.3.1检查是否以专门的用户帐号和组运行Apache

以专门的用户账号运行Apacheand 以专门的组运行Apache:

以专门的用户账号运行Apache:

在配置文件中添加如下语句: User apache 说明:apache为apache进程所属用户名,应指定专门的用户名。

以专门的组运行Apache:

在配置文件中添加如下语句: Group apache 说明:apache为apache进程所属组名,应指定专门的组。

1.4应依据安全策略严格控制用户对有敏感标记重要信息资源的操作

1.4.1检查是否禁用CGI

禁止对cgi_bin目录进行配置and 禁止加载cgi相关模块:

禁止加载cgi相关模块:

在编译apache的时候不安装cgi相关模块: ./configure –disable-cgi –disable-cgid

2、在httpd.conf中,去掉所有与cgi相关的LoadModule 语句

禁止对cgi_bin目录进行配置:

在httpd.conf中,将cgi-bin目录的配置删除或者注释掉。

1.4.2检查是否禁止非超级用户修改Apache服务器根目录

非超级用户无根目录的写权限:

在httpd.conf中有如下语句: ServerRoot “/usr/local/apache”,则执行如下命令改变权限: chmod -R a-w /usr/local/apache

二、安全审计

2.1应提供覆盖到每个用户的安全审计功能,对应用系统重要安全事件进行审计

2.2.1检查是否配置错误日志文件

设置错误信息详细程度为notice and 设置错误日志文件

设置错误日志文件:

在配置文件httpd.conf中设置错误日志文件路径,例如:ErrorLog logs/error_log,其中logs/error_log为相应的文件路径。

设置错误信息详细程度为notice:

在httpd.conf中增加如下语句: LogLevel notice

2.2.2检查是否配置访问日志文件

设置访问日志文件:

在配置文件httpd.conf中设置访问日志文件路径,例如: CustomLog log/access_log 其中log/access_log为相应的文件路径。

2.2审计记录的内容至少应包括事件日期、时间、发起者信息、类型、描述和结果等

2.2.1检查是否配置日志记录格式

设置日志记录格式:

在配置文件httpd.conf中添加LogFormat了命令,例如: LogFormat “%h %l %u % t \”%r\” %>s %b \”%{Accept}i\”\”%{Referer}i\” \”%{User-Agent}i\””

三、剩余信息保护

3.1应保证系统内的文件、目录和数据库记录等资源所在的存储空间被释放或重新分配给其他用户前得到完全清除

3.3.1检查是否设置Apache在断定请求失败前等待10秒

设定等待10秒:

在httpd.conf中添加如下语句: TimeOut 10

四、软件容错

4.1在故障发生时,应用系统应能够继续提供一部分功能,确保能够实施必要的措施

4.1.1检查是否设置错误页面重定向

400错误页面重定向:

在httpd.conf中,配置400错误重定向页面,例如: ErrorDocument 400 /custom400.html /custom400.html为要显示的400错误页面

401错误页面重定向:

在httpd.conf中,配置401错误重定向页面,例如: ErrorDocument 401 /custom401.html /custom401.html为要显示的401错误页面

403错误页面重定向:

在httpd.conf中,配置403错误重定向页面,例如: ErrorDocument 403 /custom403.html /custom403.html为要显示的403错误页面

404错误页面重定向:

在httpd.conf中,配置404错误重定向页面,例如: ErrorDocument 404 /custom404.html /custom404.html为要显示的404错误页面

405错误页面重定向:

在httpd.conf中,配置405错误重定向页面,例如: ErrorDocument 405 /custom405.html /custom405.html为要显示的405错误页面

500错误页面重定向:

在httpd.conf中,配置500错误重定向页面,例如: ErrorDocument 500 /custom500.html /custom500.html为要显示的500错误页面

五、资源控制

5.1当应用系统的通信双方中的一方在一段时间内未作任何响应,另一方应能够自动结束会话

5.1.1检查是否设置持久链接中Apache在两次请求之间等待不超过15秒

持久链接保持秒数不超过15秒:

在httpd.conf中添加如下语句: KeepAliveTimeout 15

5.2应能够对一个时间段内可能的并发会话连接数进行限制

5.2.1检查是否启用http持久链接

启用http持久链接:

在httpd.conf中添加如下语句: KeepAlive On

5.2.2检查是否设置最大连接数

Apache未工作在prefork模式or 设置最大连接数

Apache未工作在prefork模式:

Unix平台默认为prefork模式,编译时可选择MPM模块。

设置最大连接数:

设置httpd.conf文件中相关配置字段: <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 MaxClients 150 MaxRequestsPerChild 1000 </IfModule> 修改: MaxClients 1500 #按需要修改为需要的连接数 ServerLimit 1500 #连接数大于256需设置此项不小于MaxClients 注:该配置也可能存在于extra//httpd-mpm.conf文件,若httpd.conf文件中没有相关配置,到该文件中修改。

5.2.3检查是否缓冲http请求

对http请求进行缓冲:

在httpd.conf中增加如下语句: AcceptFilter http data

5.3应能够对一个访问帐户或一个请求进程占用的资源分配最大限额和最小限额

5.3.1检查是否缓冲https请求

缓冲https请求:

在httpd.conf中增加如下语句: AcceptFilter https data

5.3.2检查是否限制http请求的消息主体的大小

限制http请求的消息主体大小and 限制http请求的消息主体大小在100K之内

限制http请求的消息主体大小在100K之内:

在httpd.conf中添加如下语句: LimitRequestBody 102400

限制http请求的消息主体大小:

在httpd.conf中不可设置LimitRequestBody字段值为0

六、数据保密性

6.1应采用加密或其他保护措施实现鉴别信息的存储保密性

6.1.1检查是否关闭TRACE方法

关闭TRACE方法:

在httpd.conf中增加如下语句: TraceEnable Off

6.1.2检查是否删除缺省安装的无用文件

删除缺省HTML文件and 删除缺省CGI脚本 and 删除Apache说明文件

删除Apache说明文件:

执行命令: rm –rf /usr/local/apache2/manual 其中/usr/local/apache2为Apache安装路径

删除缺省HTML文件:

根据情况删除相应目录下文件 rm -rf /usr/local/apache2/htdocs/* 其中/usr/local/apache2为apache安装路径

删除缺省CGI脚本:

执行命令: rm –rf /usr/local/apache2/cgi-bin/* 其中/usr/local/apache2为Apache安装路径

6.1.3检查是否隐藏Apache版本号及其他敏感信息

隐藏版本号and 隐藏签名

隐藏版本号:在httpd.conf中增加如下语句: ServerToken Prod

隐藏签名:在httpd.conf中设置ServerSignature字段如下: ServerSignature Off

6.2应对重要通信提供专用通信协议或安全通信协议服务,避免来自基于通用协议的攻击破坏数据保密性

6.2.1检查是否支持使用HTTPS

加载mod_ssl模块:

两种方法:

1、编译时候静态安装ssl模块,设置如下: ./configure –enable-ssl;

2、编译成动态模块运行时加载: ./configure –enable-ssl=shared 然后在配置文件中添加如下语句: LoadModule ssl_module modules/mod_ssl.so

来源:freebuf.com 2020-09-18 11:47:27 by: fu福lin林

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论