10个保护和加固您的Apache Web服务器的最佳做法
使用以下最佳实践来确保您的Web应用程序安全。
Web服务器是基于Web的应用程序的关键部分。配置错误和默认配置可能会暴露敏感信息,这是一种风险。
作为网站所有者或管理员,您应该在网站上以查找在线威胁,以便在黑客动手之前采取行动。
让我们通过基本配置来保持您的Apache Web服务器。
以下所有配置都在您的Apache实例的httpd.conf
中。
注意:在修改配置文件之前,备份必要的配置文件,以便在出现问题时可以轻松恢复。
禁用Trace HTTP请求
默认的TraceEnable
允许TRACE,这不允许任何请求体与请求一起发送。
关闭TraceEnable会导致核心服务器和mod_proxy向客户端返回405(方法不允许)错误。
TraceEnable on允许出现跨站跟踪问题,并有可能使黑客有机会窃取您的cookie信息。
解决方案
通过在Apache配置中禁用TRACE HTTP方法来解决此安全问题。
您可以通过修改/添加以下指令来做到这一点,指令在您的Apache Web服务器的httpd.conf中。
TraceEnable off
以单独的用户和组运行
默认情况下,Apache配置为使用nobody或daemon运行。
除非您完全了解正在做什么以及危险性,否则不要将User(或Group)设置为root。
解决方案
使用自己的非root帐户运行Apache是好习惯。在您的Apache Web服务器的httpd.conf中修改User和Group指令
User apache
Group apache
禁用签名
默认情况下,关闭设置会抑制页脚行。
打开设置只需添加一个带有服务器版本号和提供虚拟主机的ServerName的行。
解决方案
最好禁用Signature,因为您可能不想透露正在运行的Apache版本。
ServerSignature Off
禁用横幅
此指令控制服务器响应头字段是否包含向客户端返回的服务器的通用操作系统类型描述以及关于编译的模块的信息。
解决方案
ServerTokens Prod
限制对特定网络或IP的访问
如果您希望您的站点只能由特定IP地址或网络查看,可以修改您的httpd.conf中的站点目录
解决方案
在Allow指令中给出网络地址。
Options None
AllowOverride None
Order deny,allow
Deny from all
Allow from 10.20.0.0/24
在Allow指令中给出IP地址。
Options None
AllowOverride None
Order deny,allow
Deny from all
Allow from 10.20.1.56
仅使用TLS 1.2
据报道,SSL 2.0、3.0、TLS 1、1.1存在几个加密缺陷。
需要配置SSL的帮助?请参阅此guide。
解决方案
SSLProtocol -ALL +TLSv1.2
禁用目录列表
如果在WebSite目录下没有index.html,客户端将在浏览器中看到列出的所有文件和子目录(类似于ls -l输出)。
解决方案
要禁用目录浏览,可以将Option指令的值设置为“None”或“-Indexes”
Options None
Order allow,deny
Allow from all
或者
Options -Indexes
Order allow,deny
Allow from all
删除多余的DSO模块
验证您的配置以删除冗余的DSO模块。
安装后默认激活了许多模块。您可以删除不需要的模块。
禁用空和弱密码
只允许使用强密码,关闭所有尝试使用较低密码套件进行握手的通道。
解决方案
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
保持最新
由于Apache是一个活跃的开源项目,提高Apache Web服务器安全性的最简单方法是保持最新版本。每个发布版本都会添加新的修复和安全补丁。始终升级到最新的稳定版本的Apache。
上述只是一些必要的配置,如果您想深入了解,可以参考我的step-by-step security & hardening guide.