Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.3.8. 保护 HTTP 服务器

4.3.8.1. 保护 Apache HTTP 服务器

Apache HTTP 服务器是红帽企业 Linux 7 中最稳定、最安全的服务之一。有很多选项和技术可以保护 Apache HTTP 服务器 - 太多,无法在这里深入介绍。下面的部分简要介绍了运行 Apache HTTP 服务器时的良好做法。
在将系统上运行的脚本投入生产之前,始终验证其上运行的脚本是否按预期工作。此外,确保只有 root 用户对包含脚本或 CGI 的任何目录具有写入权限。要做到这一点,以 root 用户身份输入以下命令:
chown root <directory_name>
chmod 755 <directory_name>
使用以下配置选项时,系统管理员应小心(在 /etc/httpd/conf/httpd.conf 中配置):
FollowSymLinks
默认情况下启用此指令,因此在创建指向 Web 服务器的文档根目录的符号链接时务必谨慎。例如,提供指向 / 的符号链接不是一个好主意。
索引
默认情况下启用此指令,但可能不可取。要防止访问者在服务器上浏览文件,请删除此指令。
UserDir
默认情况下禁用 UserDir 指令,因为它可以确认系统上存在用户帐户。要启用在服务器上浏览的用户目录,请使用以下指令:
UserDir enabled
	        UserDir disabled root
这些指令激活 /root/ 之外的所有用户目录浏览用户目录。要将用户添加到禁用的帐户列表中,请在 UserDir disabled 行上添加一个以空格分隔的用户列表。
ServerTokens
ServerTokens 指令控制发送回客户端的服务器响应标头字段。它包括以下参数可以自定义的各种信息:
  • ServerTokens Full (默认选项) - 提供所有可用的信息(OS 类型和使用的模块),例如:
    Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
    
  • ServerTokens ProdServerTokens Product onlyly - 提供以下信息:
    Apache
    
  • ServerTokens Major - 提供以下信息:
    Apache/2
    
  • ServerTokens Minor - 提供以下信息:
    Apache/2.0
    
  • ServerTokens MinServerTokens Minimal - 提供以下信息:
    Apache/2.0.41
    
  • ServerTokens OS - 提供以下信息:
    Apache/2.0.41 (Unix)
    
建议您使用 ServerTokens Prod 选项,以便可能的攻击者不会获得有关您的系统的任何宝贵信息。
重要
不要删除 IncludesNoExec 指令。默认情况下,Server-Side Includes(SSI )模块无法执行命令。建议您不要更改此设置,除非绝对必要,否则可能会让攻击者在系统上执行命令。
删除 httpd 模块
在某些情况下,删除某些 httpd 模块以限制 HTTP 服务器的功能很有用。为此,请编辑 /etc/httpd/conf.modules.d 目录中的配置文件。例如,要删除 proxy 模块:
echo '# All proxy modules disabled' > /etc/httpd/conf.modules.d/00-proxy.conf
请注意,/etc/httpd/conf.d/ 目录还包含用于加载模块的配置文件。
httpd 和 SELinux
如需更多信息,请参阅 Red Hat Enterprise Linux 7 SELinux 用户和管理员指南中的 Apache HTTP 服务器和 SELinux 章节。