1. 定期更新系统与软件包
保持Debian系统和Apache及相关软件包为最新版本,是修复已知安全漏洞的核心措施。使用以下命令更新系统:
sudo apt update && sudo apt upgrade -y
建议开启unattended-upgrades实现自动安全更新,进一步减少手动维护成本。
2. 配置防火墙限制访问
使用ufw(Uncomplicated Firewall)简化防火墙管理,仅允许必要的HTTP(80端口)和HTTPS(443端口)流量,阻断其他非法访问:
sudo apt install ufw -y
sudo ufw enable
sudo ufw allow 'Apache Full' # 允许HTTP和HTTPS
sudo ufw deny 22/tcp # 示例:若无需SSH可直接禁用(需提前配置密钥认证)
通过sudo ufw status验证规则是否生效。
3. 禁用不必要的Apache模块
Apache默认加载的模块可能存在未使用的功能,增加攻击面。通过以下命令禁用常见不必要模块(如autoindex、rewrite、headers):
sudo a2dismod autoindex rewrite headers -y
sudo systemctl restart apache2
仅启用业务必需的模块(如ssl、mod_security),通过ls /etc/apache2/mods-enabled/确认模块状态。
4. 强化身份认证与访问控制
/etc/apache2/conf-enabled/security.conf,添加以下内容防止攻击者利用版本信息针对性攻击:ServerTokens Prod
ServerSignature Off
<Directory>指令限制敏感目录(如/var/www/html)的访问权限,仅允许可信IP访问:<Directory "/var/www/html">
Options -Indexes +FollowSymLinks
AllowOverride All
Require ip 192.168.1.0/24 # 替换为你的可信IP段
</Directory>
重启Apache使配置生效:sudo systemctl restart apache2。5. 配置SSL/TLS加密通信
使用Let’s Encrypt免费获取SSL证书,实现HTTPS加密,防止数据传输被窃取或篡改:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
按照提示选择“Redirect HTTP to HTTPS”选项,强制所有流量通过HTTPS访问。证书到期前会自动提醒续期。
6. 使用安全头增强防护
通过mod_headers模块添加安全HTTP头,防范XSS、点击劫持、 MIME类型嗅探等攻击。编辑/etc/apache2/conf-available/security.conf,添加以下内容:
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff" # 防止MIME类型嗅探
Header always set X-Frame-Options "SAMEORIGIN" # 防止点击劫持
Header always set X-XSS-Protection "1; mode=block" # 启用XSS防护
Header always set Referrer-Policy "no-referrer-when-downgrade" # 控制Referer信息泄露
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none'" # 限制资源加载来源
</IfModule>
启用配置:sudo a2enconf security && sudo systemctl restart apache2。
7. 安装Web应用防火墙(WAF)
使用ModSecurity配合OWASP Core Rule Set(CRS),检测并阻止SQL注入、跨站脚本(XSS)、恶意爬虫等常见Web攻击:
sudo apt install libapache2-mod-security2 -y
sudo cp -r /usr/share/modsecurity-crs /etc/modsecurity/
sudo ln -s /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf # 开启主动防护模式
sudo systemctl restart apache2
定期更新CRS规则(/etc/modsecurity/crs-setup.conf),适应新的攻击手法。
8. 日志监控与定期审计
/var/log/apache2/access.log)和错误日志(/var/log/apache2/error.log),识别异常请求(如大量404错误、可疑IP访问):sudo tail -f /var/log/apache2/error.log
GoAccess实现实时日志可视化,快速定位异常流量:sudo apt install goaccess -y
goaccess /var/log/apache2/access.log --log-format=COMBINED
lynis等工具扫描系统安全配置,生成报告并修复漏洞:sudo apt install lynis -y
sudo lynis audit system
```。
9. 最小化安装与权限控制
mod_ssl、mod_headers),避免不必要的软件暴露攻击面。www-data用户(Apache默认运行用户),并设置合理权限:sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
避免将目录权限设置为777(完全开放),防止未授权写入。10. 强化SSH安全(间接提升Apache安全性)
Apache服务器通常通过SSH管理,强化SSH安全可防止攻击者通过SSH漏洞获取服务器控制权:
/etc/ssh/sshd_config,设置:PermitRootLogin no
PasswordAuthentication no # 禁用密码认证,使用密钥对登录
Port 2222
ssh-keygen -t rsa -b 4096
ssh-copy-id -i ~/.ssh/id_rsa.pub user@your_server_ip -p 2222
重启SSH服务:sudo systemctl restart ssh。