Apache配置中如何提高安全性
小樊
36
2025-12-26 19:04:13
Apache安全加固清单
一 基础与系统层
- 保持系统与软件包为最新:Ubuntu/Debian 执行sudo apt update && sudo apt upgrade;CentOS/RHEL 执行sudo yum update;建议启用自动安全更新(如 Ubuntu 的unattended-upgrades)。及时修补已知漏洞是降低风险的根本措施。
- 仅开放必要端口与协议:使用UFW(Ubuntu)或firewalld(CentOS)仅放行HTTP 80/HTTPS 443。示例:UFW 执行sudo ufw allow ‘Apache Full’ && sudo ufw enable;firewalld 执行sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload。
- 以最小权限运行服务:确保 Apache 不以root运行,常见运行用户为www-data(Debian/Ubuntu)或apache(CentOS/RHEL);按需创建专用系统用户与组,并在配置中指定,避免被攻破后横向提权。
二 服务与模块层
- 禁用不必要的模块:减少攻击面。常见可禁用的有autoindex(目录列表)、mod_status(状态页泄露信息)、mod_php(若使用PHP-FPM)、以及确实不需要的mod_rewrite等。示例:Debian/Ubuntu 执行sudo a2dismod autoindex;CentOS/RHEL 注释对应LoadModule并重启。
- 隐藏版本与签名:在主配置中设置ServerTokens Prod与ServerSignature Off,避免泄露Apache版本与操作系统细节,降低被针对性攻击的概率。
- 禁用目录列表与限制访问:在站点或全局**中设置Options -Indexes**,防止未索引目录被遍历;对**/admin等敏感路径使用Require ip 192.168.1.0/24进行IP白名单控制;对管理后台启用HTTP Basic Auth**,使用htpasswd创建密码文件并配置AuthType Basic / AuthUserFile / Require valid-user。
三 传输与会话层
- 启用并强制使用HTTPS:安装mod_ssl,使用Let’s Encrypt获取免费证书并自动配置(Certbot 示例:sudo certbot --apache -d yourdomain.com),或手动配置证书路径;建议将HTTP 80永久重定向到HTTPS 443。
- 配置安全响应头:启用mod_headers并添加关键安全头,如X-Content-Type-Options “nosniff”、X-Frame-Options “SAMEORIGIN”、X-XSS-Protection “1; mode=block”、Referrer-Policy “no-referrer-when-downgrade”,可按需启用Content-Security-Policy以进一步限制资源加载来源。
- 部署WAF/抗DoS能力:安装并启用mod_security(建议加载OWASP Core Rule Set)识别并阻断SQL注入/XSS等攻击;部署mod_evasive限制同一来源的高频请求,缓解暴力破解/DoS。参数需结合业务与性能调优。
四 文件权限与上传安全
- 规范目录与文件权限:网站根目录(如**/var/www/html**)推荐目录755、文件644,所有者为www-data/apache;避免全局可写,仅对确需写入的目录(如**/var/www/html/upload**)单独赋权。
- 禁止上传目录执行脚本:对上传目录限制可执行权限,示例:
<Directory “/var/www/html/upload”>
<FilesMatch “.(php|php3|phtml)$”>
Require all denied
- 限制请求体大小:通过LimitRequestBody限制上传体积,防止资源耗尽与滥用(如LimitRequestBody 52428800限制为约50MB)。
- 自定义错误页面:使用ErrorDocument 403/404/500返回友好页面,避免默认错误页泄露物理路径/框架信息/内网IP等敏感细节。
五 日志监控与运行时防护
- 启用并审计日志:确保ErrorLog与CustomLog已开启,默认路径通常为**/var/log/apache2/(Debian/Ubuntu)或/var/log/httpd/(CentOS/RHEL);使用tail -f实时查看,结合Logwatch/Splunk定期分析异常(如大量404/500**、频繁失败登录)。
- 配置fail2ban:针对 Apache 的访问日志自动封禁恶意来源 IP,降低暴力破解/扫描风险。
- 启用SELinux(如系统启用):按需设置布尔值与上下文,例如sudo setsebool -P httpd_can_write_log 1、sudo chcon -Rt httpd_sys_content_t /var/www/html,在不影响业务的前提下收紧进程权限。
- 变更与备份:每次调整配置后执行sudo systemctl restart apache2并验证;定期备份**/etc/httpd/conf或/etc/apache2与/var/www/html**,确保可快速回滚。