1. 更新系统与Apache至最新版本
保持系统和Apache软件包的最新状态是安全基础,能及时修复已知漏洞。执行以下命令更新系统及Apache:
sudo apt update && sudo apt upgrade -y
建议开启unattended-upgrades自动安装安全更新,进一步提升安全性。
2. 配置防火墙限制访问
使用ufw(Uncomplicated Firewall)仅开放必要端口(HTTP 80、HTTPS 443),阻断非法访问:
sudo ufw allow 'Apache Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙
若需更严格的控制,可单独开放端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
3. 隐藏敏感信息防止泄露
修改Apache配置文件(/etc/apache2/conf-available/security.conf),隐藏版本号和服务器签名,降低针对性攻击风险:
ServerTokens Prod # 仅显示“Apache”而非版本号
ServerSignature Off # 关闭错误页面的服务器信息
同时,若使用PHP,需在php.ini中禁用PHP版本暴露:
expose_php = Off
4. 禁用不必要的模块与服务
精简Apache功能,移除不使用的模块以减少攻击面。常见需禁用的模块包括autoindex(目录列表)、mod_php(若使用PHP-FPM):
sudo a2dismod autoindex # 禁用目录自动列表
sudo a2dismod mod_php7.x # 根据实际PHP版本调整
启用前需确认模块是否被虚拟主机依赖,避免影响正常服务。
5. 强制使用SSL/TLS加密通信
通过Let’s Encrypt获取免费SSL证书,配置HTTPS加密数据传输。安装Certbot及Apache插件:
sudo apt install certbot python3-certbot-apache -y
为域名申请证书并自动配置Apache:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
证书到期前会自动提醒,也可手动续期:
sudo certbot renew --dry-run # 测试续期
6. 配置访问控制限制IP访问
通过Directory指令限制敏感目录(如/admin、/config)的访问,仅允许可信IP访问:
<Directory "/var/www/html/admin">
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24 # 替换为你的可信IP段
</Directory>
若需更灵活的控制,可使用.htaccess文件(需启用AllowOverride)。
7. 安装Web应用防火墙(WAF)
使用ModSecurity(Apache WAF模块)检测并阻止SQL注入、XSS等常见攻击。安装并启用模块:
sudo apt install libapache2-mod-security2
sudo a2enmod security2
编辑配置文件/etc/apache2/mods-enabled/security2.conf,启用OWASP Core Rule Set(CRS):
IncludeOptional /etc/modsecurity/*.conf
IncludeOptional /usr/share/modsecurity-crs/*.conf
SecRuleEngine On # 开启规则引擎(生产环境建议先设为DetectionOnly测试)
8. 防御DDoS与暴力破解
安装ModEvasive模块防范DDoS攻击(如频繁请求),配置防暴力破解规则:
sudo apt install libapache2-mod-evasive24
编辑配置文件/etc/apache2/mods-enabled/evasive24.conf,设置请求阈值:
<IfModule mod_evasive24.c>
DOSHashTableSize 3097
DOSPageCount 2 # 1秒内同一IP访问同一页面超过2次则触发
DOSSiteCount 50 # 1秒内同一IP访问整个站点超过50次则触发
DOSBlockingPeriod 60 # 触发后封锁60秒
</IfModule>
9. 日志管理与监控
开启Apache访问日志(access.log)和错误日志(error.log),定期分析异常请求:
sudo tail -f /var/log/apache2/access.log # 实时查看访问日志
sudo tail -f /var/log/apache2/error.log # 实时查看错误日志
可使用GoAccess等工具可视化分析日志,快速识别恶意IP或高频请求。
10. 定期备份配置与数据
定期备份Apache配置文件(/etc/apache2)和网站数据(/var/www),防止数据丢失或配置损坏:
sudo cp -R /etc/apache2 /etc/apache2-backup-$(date +%F)
sudo cp -a /var/www/html /backup/www-$(date +%F)
建议将备份存储至异地或云存储,提升数据安全性。