Apache 安全配置要求及操作指南

Apache IT敢客 1年前 (2017-09-16) 8876次浏览 已收录 0个评论 扫描二维码

Apache 安全配置要求及操作指南

  1. 范围

    适用于中国电信使用的 Apache 服务器。本规范提出了 Apache 服务器安全配置要求,

适用于所有的安全等级,可作为编制设备入网测试、安全验收、安全检查规范等文档的参考。

由于版本不同,配置操作有所不同,本规范以 unix 平台上 Apache2.0\2.2 为例,

给出参考配置操作。

  1. 缩略语

CGI

Common Gateway Interface

通用网关接口

HTTP

HyperText Transfer Protocol

超文本传输协议

  1. 安全配置要求
    1. 账号

要求内容

以专门的用户帐号和组运行 Apache

操作指南

  1. 根据需要为 Apache 创建用户、组

  2. 参考配置操作如果没有设置用户和组,则新建用户,并在 Apache 配置文件中指定

    1. 创建 apache 组:groupadd apache

    2. 创建 apache 用户并加入 apache 组:useradd apache –g

 

apache

(3) 将下面两行加入 Apache 配置文件 httpd.conf

User apache

Group apache

2、补充操作说明

  1. 根据不同用户,取不同的名称。

  2. 为用户设置适当的家目录和 shell

检测方法

1、判定条件 2、检测操作

检查 httpd.conf 配置文件。

检查是否使用非专用账户(如 root)运行 apache

  1. 授权

编号:1

要求内容

严格控制Apache 主目录的访问权限,非超级用户不能修改该目录中的内容

操作指南

1、参考配置操作

Apache 的主目录对应于Apache Server配置文件httpd.conf

Server Root控制项中,应为:

Server Root /usr/local/apache

检测方法

  1. 判定条件

非超级用户不能修改该目录中的内容

  1. 检测操作

尝试修改,看是否能修改

编号:2

要求内容

严格设置配置文件和日志文件的权限,防止未授权访问

操作指南

1、参考配置操作:

使用命令"chmod 600 /etc/httpd/conf/httpd.conf"设置配置文件为属主可读写,其他用户无权限

使用命令"chmod 644 /var/log/httpd/*.log"设置日志文件为属主

可读写,其他用户只读权限

检测方法

1、判定条件 2、检测操作使用命令查看配置文件和日志文件的权限

[root@centos ~]# ls -l /etc/httpd/conf/httpd.conf

-rw-r–r– 1 root root 7571 May 13 17:45

/etc/httpd/conf/httpd.conf

 

[root@centos ~]# ls -l /var/log/httpd

  1. 日志

要求内容

设备应配置日志功能,对运行错误、用户访问等进行记录,记录内容包括时间,用户使用的 IP 地址等内容。

操作指南

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 (访问日志)

ErrorLog 指令设置错误日志文件名和位置。错误日志是最重要的日志文件,Apache httpd 将在这个文件中存放诊断信息和处理请求中出现的错误。若要将错误日志送到 Syslog,则设置:

ErrorLog syslog

CustomLog 指令指定了保存日志文件的具体位置以及日志的格式。访问日志中会记录服务器所处理的所有请求。

LogFormat 设置日志格式,建议设置为 combined 格式。LogLevel 用于调整记录在错误日志中的信息的详细程度,建议设置为 notice

检测方法

  1. 判定条件查看 logs 目录中相关日志文件内容,记录完整。

  2. 检测操作查看相关日志记录。

  3. 补充说明

  1. 禁止访问外部文件

要求内容

禁止 Apache 访问 Web 目录之外的任何文件。

操作指南

  1. 参考配置操作

编辑 httpd.conf 配置文件,

<Directory />  

Order Deny,Allow  

Deny from all  

</Directory>  

  1. 补充操作说明

设置可访问目录,

<Directory /web>  

Order Allow,Deny  

Allow from all  

 

</Directory> 其中/web 为网站根目录。

检测方法

  1. 判定条件无法访问 Web 目录之外的文件。

  2. 检测操作

    访问服务器上不属于 Web 目录的一个文件,结果应无法显示。

  3. 补充说明

  1. 目录列出

要求内容

禁止 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 显示该目录结构。Indexes 的作用就是当该目录下没有 index.html 文件时,就显示目录结构。

(2)重新启动 Apache 服务

检测方法

  1. 判定条件当 WEB 目录中没有默认首页如 index.html 文件时,不会列出目录内容

  2. 检测操作

    直接访问 http://ip/xxxxxx 为某一目录)

  1. 错误页面重定向

要求内容

Apache 错误页面重定向

操作指南

1、参考配置操作

(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 服务

检测方法

1、判定条件

指向指定错误页面

 

2、检测操作

URL 地址栏中输入 http://ip/xxxxxxx~~~(一个不存在的页面)

  1. 拒绝服务防范

要求内容

根据业务需要,合理设置 session 时间,防止拒绝服务攻击

操作指南

1、参考配置操作

(1) 编辑 httpd.conf 配置文件,

Timeout 10 #客户端与服务器端建立连接前的时间间隔

KeepAlive On

KeepAliveTimeout 15 #限制每个 session 的保持时间是 15 秒注:此处为一建议值,具体的设定需要根据现实情况。

(2)重新启动 Apache 服务

检测方法

1、判定条件 2、检测操作检查 httpd.conf 配置文件是否设置。

  1. 隐藏 Apache 的版本号

要求内容

隐藏 Apache 的版本号及其它敏感信息。

操作指南

1、参考配置操作

修改 httpd.conf 配置文件:


ServerSignature Off  


ServerTokens Prod  

检测方法

1、判定条件 2、检测操作

检查 httpd.conf 配置文件。

  1. 关闭 TRACE

要求内容

关闭 TRACE,防止 TRACE 方法被访问者恶意利用

操作指南

1
参考配置操作

使用命令"vi /etc/httpd/conf/httpd.conf"修改配置文件,添加

"TraceEnable Off"

注:适用于 Apache 2.0 以上版本

检测方法

1、判定条件 2、检测操作客户端:

#nc 1.1.1.4 80

输入下面两行内容后,两次回车

OPTIONS * HTTP/1.1 HOST:1.1.1.4

服务器返回:

HTTP/1.1 200 OK

 

Date: Wed, 13 May 2009 07:09:31 GMT

Server: Apache/2.2.3 (CentOS)

Allow: GET,HEAD,POST,OPTIONS,TRACE

Content-Length: 0

Connection: close

Content-Type: text/plain; charset=UTF-8

表示支持 TRACE 方法,注意查看是否还支持其他方法,如:PUT

DELETE 等,一般情况下都不应该出现在生产主机上

  1. 禁用 CGI

要求内容

如果服务器上不需要运行 CGI 程序,建议禁用 CGI

操作指南

1
参考配置操作

1)使用命令"vi /etc/httpd/conf/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>


 

检测方法

1、判定条件 2、检测操作

使用命令"vi /etc/httpd/conf/httpd.conf"查看配置文件

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>


 

  1. 监听地址绑定

要求内容

服务器有多个 IP 地址时,只监听提供服务的 IP 地址

操作指南

1
参考配置操作

使用命令"vi /etc/httpd/conf/httpd.conf"修改配置文件,修改

Listen  x.x.x.x:80

检测方法

1、判定条件 2、检测操作

使用命令"cat /etc/httpd/conf/httpd.conf|grep Listen"查看是否绑定 IP 地址

 

要求内容

删除缺省安装的无用文件。

操作指南

1、参考配置操作

  1. 补丁

要求内容

在不影响业务的情况下,升级解决高危漏洞,而且该补丁要通过实验测试。

操作指南

1、参考配置操作:

访问http://httpd.apache.org/download.cgi,查看最新的apache版本,在实验室测试通过的前提下,编译升级 apache,以解决高危漏洞。

检测方法

1、判定条件 2、检测操作根据 apache 安装路径使用命令行查看版本情况。如:

/usr/local/apache/bin/apachectl –v 与需要的版本进行对比。

  1. 更改默认端口

要求内容

更改 Apache 服务器非公众服务默认端口

操作指南

1、参考配置操作

  1. 修改 httpd.conf 配置文件,更改默认端口到 xx 端口(不常见端口)

    Listen x.x.x.x:xx 端口

  2. 重启 Apache 服务

    2、补充操作说明

检测方法

  1. 判定条件

使用 XX 端口登陆页面成功

  1. 检测操作

登陆 http://ip:XX  

  1. 补充说明

  1. 删除缺省安装的无用文件

     

    删除缺省 HTML 文件:

    # rm -rf /usr/local/apache2/htdocs/*  

    删除缺省的 CGI 脚本:

    # rm –rf /usr/local/apache2/cgi-bin/*

    删除 Apache 说明文件:

    # rm –rf /usr/local/apache2/manual

    删除源代码文件:

    # rm -rf /path/to/httpd-2.2.4*

    根据安装步骤不同和版本不同,某些目录或文件可能不存在或位置不同。

    检测方法

    1、判定条件 2、检测操作检查对应目录。

  2. HTTP 加密协议

要求内容

对于通过 HTTP 协议进行远程维护的设备,设备应支持使用

HTTPS 等加密协议。

操作指南

1、参考配置操作

不同的 apahce 版本,可能对 ssl 的支持不一样。有的在编译的时候,就支持 mod_ssl 模块,有的未支持。

此处建议,根据不同情况,做具体处理。由于步骤繁琐,不统一提出配置操作建议。

检测方法

  1. 判定条件

  2. 检测操作

rpm -q mod_ssl

  1. 连接数设置

要求内容

根据机器性能和业务需求,设置最大最小连接数。

操作指南

1
参考配置操作

使用 httpd –l 检查 Apache 的工作模式,如列出 prefork.c,则进行下列操作:

修改 httpd.conf 文件找到

<IfModule prefork.c>

StartServers       8

MinSpareServers    5

MaxSpareServers   20

MaxClients       150

MaxRequestsPerChild  1000

</IfModule>

修改

 

MaxClients       150

为需要的连接数,如 1500

ServerLimit        1500  //连接数大于 256 需设置此项

MaxClients         1500

 

然后保存退出。重新启动 http 服务:

/etc/rc.d/init.d/httpd restart

2
补充操作说明

检测方法

  1. 判定条件
    httpd.conf
    文件中的内容已被修改

  2. 检测操作

    通过 ps -ax|grep httpd 命令确认 httpd 进程已启动。通过 ps -ef |grep httpd |wc –l 命令检查现在的连接数

  3. 补充说明

  1. 禁用非法 HTTP 方法

要求内容

禁用PUTDELETE等危险的HTTP 方法;

操作指南

  1. 参考配置操作编辑 httpd.conf 文件,只允许 getpost 方法

    <LimitExcept GET POST >  

    Deny from all  

    </LimitExcept>

  2. 补充操作说明

检测方法

  1. 判定条件

  2. 检测操作查看 httpd.conf 文件,检查如下内容,是否只允许 getpost 方法

    <LimitExcept GET POST >  

    Deny from all  

    </LimitExcept>


 


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Apache 安全配置要求及操作指南
喜欢 (155)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址