怎样配置Apache2增强服务器安全
小樊
43
2025-12-18 19:06:28
Apache2 安全加固清单与实践
一 基础与系统加固
- 保持系统与软件为最新:执行系统更新并定期升级 Apache2,及时修补已知漏洞。
- 最小化启用模块:仅保留业务必需模块,禁用如 userdir、autoindex、status、cgi 等高风险或无需模块;启用必要的安全与性能相关模块(如 headers、ssl)。
- 运行身份与权限:以最小权限的系统账户运行 Apache(如 www-data/apache),网站目录建议 755/644,所有者为运行账户,避免以 root 运行。
- 目录访问控制:对根目录“默认拒绝”,仅对业务目录授予明确权限;生产环境建议禁用目录浏览(-Indexes)。
二 传输加密与端口开放
- 启用并验证 SSL/TLS:确认模块加载(Debian/Ubuntu 执行
a2enmod ssl;RHEL/CentOS 确认 mod_ssl 已安装),证书路径正确,配置完成后执行 apache2ctl -t 或 httpd -t 做语法检查再重载服务。
- 证书部署要点:
- Apache ≥ 2.4.8 推荐使用合并后的 fullchain.pem 与 私钥 key;
- Apache ≤ 2.4.7 需分别配置 SSLCertificateFile、SSLCertificateChainFile、SSLCertificateKeyFile。
- 防火墙与安全组:放行 443/TCP(云平台安全组与系统防火墙均需允许),并验证端口连通性(如使用
nc/ss 检测)。
- 协议与套件(示例):禁用不安全协议与弱套件,优先 TLSv1.2/1.3 与强加密套件,提升传输安全。
三 请求与访问控制
- 隐藏版本信息:在全局或安全配置中设置 ServerTokens Prod 与 ServerSignature Off,减少信息泄露面。
- 安全响应头:启用并合理配置 X-Content-Type-Options、X-Frame-Options、X-XSS-Protection、Referrer-Policy、Content-Security-Policy 等安全头,降低常见 Web 攻击风险。
- 目录与文件控制:对业务目录使用
Options -Indexes +FollowSymLinks,必要时启用 .htaccess 做细粒度控制(如认证、自定义错误页)。
- 访问限制与认证:对管理路径或敏感资源设置 IP 白名单 与 HTTP Basic/Digest 认证,降低暴力与未授权访问风险。
四 日志监控与入侵防护
- 日志与审计:确保访问与错误日志正常记录,定期审计异常请求与错误码;按需提高日志级别(如
LogLevel alert rewrite:trace3)进行排障与取证。
- WAF 与抗 DoS:部署 mod_security 实现 Web 应用防火墙规则集;结合 mod_evasive 缓解暴力扫描与简单 DoS 场景。
- 持续监控与备份:建立日志集中与告警机制,定期备份站点与配置,确保在故障或入侵时可快速恢复。
五 快速检查清单与常用命令
- 加固检查清单
- 系统与软件为最新;仅启用必要模块;运行账户为 非 root。
- 已启用 HTTPS,证书路径与权限正确,协议与套件已加固。
- 已设置安全头;目录浏览关闭;访问限制与认证到位。
- 防火墙/安全组放行 443/TCP;日志正常;已部署 WAF/抗 DoS;有备份与监控告警。
- 常用命令示例
- Debian/Ubuntu
- 模块与站点:
sudo a2enmod ssl,sudo a2ensite your-site-ssl.conf
- 语法检查与重载:
sudo apache2ctl -t,sudo systemctl reload apache2
- 防火墙:
sudo ufw allow 443/tcp
- RHEL/CentOS
- 安装模块:
sudo dnf/yum install mod_ssl
- 语法检查与重载:
sudo httpd -t,sudo systemctl reload httpd
- 防火墙:
sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload
- 通用
- 端口连通性:
nc -vz <IP> 443 或 ss -tlnp | grep :443
- 证书合并(Apache ≥ 2.4.8):
cat domain_public.crt domain_chain.crt > domain_fullchain.pem