Ubuntu 上 Apache2 安全性优化清单
一 基础加固
- 保持系统与软件为最新:执行 sudo apt update && sudo apt upgrade,及时修补漏洞。
- 精简攻击面:仅启用必需模块,禁用不需要的模块(如 a2dismod autoindex cgi 等),减少信息泄露与潜在入口。
- 隐藏版本与标识:在 /etc/apache2/conf-enabled/security.conf 设置 ServerTokens Prod 与 ServerSignature Off,避免暴露 Apache/2.x 与模块版本。
- 目录与访问:禁止目录浏览(在站点或全局配置使用 Options -Indexes),对管理路径(如 /admin)增加 Require ip 1.2.3.4 或 AuthBasic 保护。
- 运行身份与权限:在 /etc/apache2/envvars 使用专用系统用户(如 www-data),网站目录建议 chown -R www-data:www-data 与 chmod 750/644,避免以 root 运行。
- 日志与监控:确保开启 ErrorLog/CustomLog,并定期审计 /var/log/apache2/access.log 与 error.log。
二 传输加密与端口管理
- 启用 HTTPS/TLS:安装并启用 mod_ssl,部署可信证书(如 Let’s Encrypt 或云厂商证书),配置 SSLEngine on、SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFile;将 :80 虚拟主机做 Redirect permanent / https://yourdomain/。
- 防火墙放行:使用 UFW 放行 Apache Full(或 80/tcp 与 443/tcp),仅暴露必要端口。
- 证书与端口:证书文件妥善存放(如 /etc/apache2/ssl/),确保 443 处于监听;必要时在 /etc/apache2/ports.conf 明确 Listen 443。
三 访问控制与攻击缓解
- 基础防护:启用 Fail2ban 监控 Apache 日志,自动封禁暴力访问来源;对敏感目录使用 .htaccess 或 的 Require 与 Auth 控制。
- 抗 DoS 与慢速攻击:部署 libapache2-mod-evasive 缓解 DDoS/Slowloris,示例参数:DOSHashTableSize 2048、DOSPageCount 20、DOSSiteCount 300、DOSBlockingPeriod 10、DOSLogDir “/var/log/apache2/evasive”。
- 连接与速率控制:使用 libapache2-mod-qos 限制并发与速率(如 MaxClients 256 等),缓解资源耗尽。
- 运行环境安全:若使用 PHP,在 php.ini 禁用危险函数(如 exec/system/shell_exec),并通过 open_basedir 限制可访问目录。
四 推荐配置示例
- 隐藏版本与关闭列目录(/etc/apache2/conf-enabled/security.conf)
ServerTokens Prod
ServerSignature Off
- 强制 HTTPS 的 80 虚拟主机(/etc/apache2/sites-available/000-default.conf)
<VirtualHost *:80>
ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
- 基本认证的受限目录(在站点配置或 .htaccess)
<Directory /var/www/example.com/protected>
AuthType Basic
AuthName "Restricted"
AuthBasicProvider file
AuthUserFile /etc/apache2/authorization/users
Require valid-user
</Directory>
sudo a2enmod ssl
sudo a2ensite yourdomain.com-le-ssl.conf
sudo systemctl reload apache2
sudo systemctl restart apache2
sudo apt-get install libapache2-mod-evasive libapache2-mod-qos
sudo a2enmod evasive qos
以上示例涵盖信息隐藏、强制 HTTPS、目录保护与常用加固模块启用,可按实际站点路径与域名调整。
五 运维与验证
- 持续更新与备份:定期 apt update/upgrade,并对 /etc/apache2 与 /var/www 进行离线或远端备份。
- 配置语法与生效:变更后用 apache2ctl configtest 校验,再 systemctl reload/restart apache2。
- 安全基线核查:使用 SSL Labs 测试 TLS 配置强度,定期审计访问与错误日志,关注异常 4xx/5xx 与来源 IP。
- 风险提示:修改前备份配置与证书;变更后先在测试环境验证;生产环境谨慎调整 MPM 与并发参数,以免影响稳定性。