Debian 上加固 Apache 的安全实践
一 基础加固
- 保持系统与软件为最新:执行sudo apt update && sudo apt full-upgrade,必要时重启服务或系统;建议启用无人值守安全更新,编辑**/etc/apt/apt.conf.d/20auto-upgrades**,设置APT::Periodic::Update-Package-Lists “1”; APT::Periodic::Unattended-Upgrade “1”;。
- 最小化攻击面:仅启用必需的 Apache 模块,禁用不需要的模块(如autoindex、status等);隐藏版本信息,编辑**/etc/apache2/conf-enabled/security.conf**,设置ServerTokens Prod与ServerSignature Off;限制目录访问,在虚拟主机 Directory 中配置Options -Indexes +FollowSymLinks,并仅对管理路径按需开启 AllowOverride。
- 权限最小化:网站目录建议chown -R www-data:www-data /var/www/html,目录权限755、文件权限644。
- 强制加密访问:为所有域名启用 TLS,使用 Let’s Encrypt 获取免费证书:sudo apt install certbot python3-certbot-apache,执行sudo certbot --apache -d yourdomain.com -d www.yourdomain.com;如尚未启用 mod_ssl,先执行sudo a2enmod ssl。
二 访问控制与请求限制
- 网络层边界:使用 ufw 仅放行 80/tcp 与 443/tcp(或sudo ufw allow ‘Apache Full’),其余入站默认拒绝。
- 应用层限制:在虚拟主机中对敏感目录设置访问控制,例如仅内网段可访问管理后台:
<Directory /var/www/html/admin>
Options -Indexes +FollowSymLinks
AllowOverride None
Require ip 192.168.1.0/24
- 防暴力与低速 DoS:安装并启用 mod_evasive,限制同一来源在短时间内对相同资源的并发请求与访问频次,超出阈值返回 403 并在设定时间内封禁;可配置白名单、日志目录及触发时执行命令(如联动防火墙)。示例安装:sudo apt install libapache2-mod-evasive;验证:apachectl -M | grep evasive;配置路径通常为**/etc/apache2/mods-enabled/evasive.conf**。
三 安全头与内容安全策略
- 启用并优化安全头:在**/etc/apache2/conf-available/security.conf**中启用并调整(按需收紧):
- X-Content-Type-Options: nosniff(阻止 MIME 嗅探)
- X-Frame-Options: SAMEORIGIN(防点击劫持)
- X-XSS-Protection: 1; mode=block(启用浏览器 XSS 过滤)
- Referrer-Policy: no-referrer-when-downgrade(控制来源信息泄露)
- Content-Security-Policy:优先使用default-src 'self’并仅按需放开 script-src/style-src/img-src 等源,避免unsafe-inline/unsafe-eval;如应用依赖内联脚本,可结合 nonce/hash 精细化放行。
- 启用方式:sudo a2enconf security && sudo systemctl restart apache2。
四 日志监控与持续维护
- 集中与实时监控:持续关注 /var/log/apache2/access.log 与 error.log,使用 tail -f 实时排查异常;可结合 GoAccess/Awstats 做访问统计与可视化,便于发现扫描、暴力请求与异常流量模式。
- 变更与备份:变更前备份站点与配置;更新后验证虚拟主机配置apachectl configtest并平滑重载systemctl reload apache2;定期审计与漏洞扫描,形成修复闭环。
五 加固清单与快速命令
| 目标 |
关键措施 |
命令或配置示例 |
| 系统更新 |
安全补丁与内核/组件更新 |
sudo apt update && sudo apt full-upgrade;配置无人值守升级 |
| 防火墙 |
仅放行 80/443 |
sudo ufw allow 80,443/tcp 或 sudo ufw allow ‘Apache Full’ |
| 信息泄露 |
隐藏版本与关闭目录索引 |
ServerTokens Prod;ServerSignature Off;Options -Indexes |
| 加密传输 |
全站 HTTPS |
sudo certbot --apache -d yourdomain.com |
| 安全头 |
启用关键安全头与 CSP |
Header always set X-Frame-Options “SAMEORIGIN” 等 |
| 请求限制 |
防暴力/DoS |
安装并配置 libapache2-mod-evasive |
| 权限最小化 |
目录与文件权限 |
chown -R www-data:www-data /var/www/html;find … -type d -exec chmod 755 {} ; |
以上措施按“基础加固 → 访问控制 → 安全头 → 监控维护”的顺序实施,可在不改动业务代码的前提下显著提升 Debian + Apache 的防护能力。