CentOS Apache安全配置的要点主要包括以下几个方面:
-
禁用非必要的超级用户:
- 检测并锁定不必要的超级用户账户,如root。
- 删除不必要的默认账户,如adm、lp、sync等。
-
强化用户口令:
- 设置复杂的口令,包含大写字母、小写字母、数字和特殊字符,长度大于10位。
- 检查并强化空口令账户。
-
保护口令文件:
- 使用
chattr
命令给/etc/passwd
、/etc/shadow
、/etc/group
和/etc/gshadow
文件加上不可更改属性。
- 使用
-
设置root账户自动注销时限:
- 修改
/etc/profile
文件中的TMOUT
参数,设置root账户的自动注销时限。
- 修改
-
限制su命令:
- 编辑
/etc/pam.d/su
文件,限制只有特定组的用户才能使用su命令切换为root。
- 编辑
-
隐藏Apache版本信息:
- 在Apache配置文件(如
httpd.conf
)中设置ServerSignature Off
和ServerTokens Prod
,以隐藏服务器的版本信息和操作系统信息。
- 在Apache配置文件(如
-
禁用目录列表:
- 修改配置文件以禁用目录浏览,防止敏感信息泄露。
-
禁用不必要的模块:
- 禁用不需要的Apache模块,减少安全风险。
-
限制访问Web根目录之外的文件:
- 通过配置文件设置合适的权限和访问规则,限制对Web根目录之外的文件访问。
-
使用mod_evasive防范DoS攻击:
- 启用mod_evasive模块来检测和限制DoS攻击行为。
-
定期更新软件版本:
- 定期更新Apache及其依赖的库和模块,以修复已知的安全漏洞和bug。
-
配置日志记录和监控系统:
- 配置合适的日志记录系统,以监控服务器的运行状态和安全事件。
-
用户权限配置:
- 确保Apache以最低权限用户身份运行,避免赋予不必要的权限。
-
选择性访问控制和强制性访问控制:
- 根据实际需求配置这两种访问控制方式,提高安全性。
-
安全模块配置:
- 安装和配置mod_ssl、mod_proxy等安全模块,以增强服务器的安全性。
-
日志配置:
- 启用并配置适当的日志级别,定期检查和分析日志文件,以便及时发现异常行为和攻击尝试。
-
防范跨站脚本攻击(XSS):
- 确保服务器正确处理用户输入的数据,使用合适的输出编码来转义特殊字符,并使用WAF防御XSS攻击。
-
防范SQL注入攻击:
- 确保应用程序对用户输入进行了适当的验证和转义,使用参数化查询或预编译语句处理数据库操作。
-
防范恶意文件上传:
- 限制可上传的文件类型和大小,并对上传的文件进行验证和过滤。
-
防范目录遍历攻击:
- 确保所有目录具有正确的权限设置,并禁止对敏感目录的直接访问。
-
启用HTTPS:
- 使用SSL/TLS证书加密通信,配置SSL模块并设置VirtualHost使用SSL。
-
限制HTTP方法:
- 通过
Limit
或LimitExcept
指令限制不必要的HTTP方法,如PUT、DELETE等。
- 通过
-
限制POST数据大小:
- 设置
LimitRequestBody
指令限制POST请求的数据大小,防止DDoS攻击。
- 设置
-
配置访问控制和认证:
- 使用
.htaccess
文件或全局配置中的AuthType
、AuthName
、AuthUserFile
和Require
指令实施认证。
- 使用
-
错误页面定制:
- 重定向HTTP错误页面,避免泄露服务器信息。
-
日志监控和审计:
- 确保访问日志和错误日志记录完整,并定期审查日志以发现异常行为。
-
禁用服务器签名:
- 在配置文件中设置
ServerSignature Off
和ServerTokens Prod
以隐藏服务器的版本信息。
- 在配置文件中设置
-
优化文件和目录权限:
- 确保Apache运行用户仅拥有必要的文件和目录权限,避免使用高权限用户运行Apache服务。
-
防火墙规则:
- 配置操作系统或网络防火墙,仅允许必要的端口开放。
-
禁用或限制使用
.htaccess
文件:- 在全局配置中设置
AllowOverride None
,以提高性能并减少潜在的安全风险。
- 在全局配置中设置
-
使用ModSecurity或其他WAF:
- 部署Web应用防火墙模块来进一步增强安全防护。
通过这些配置要点,可以显著提高CentOS上Apache服务器的安全性。