1. 更新系统与软件包
保持Debian系统和Apache及相关软件包为最新版本,是修复已知安全漏洞的基础。定期执行以下命令:
sudo apt update && sudo apt upgrade -y
2. 配置防火墙限制访问
使用ufw(Uncomplicated Firewall)仅开放Apache必需的端口(HTTP 80、HTTPS 443),阻断其他不必要流量:
sudo apt install ufw -y
sudo ufw allow 'Apache Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙
3. 禁用不必要的Apache模块
减少攻击面,禁用不使用的模块(如autoindex防止目录列表、rewrite若无需URL重写):
sudo a2dismod autoindex rewrite # 禁用指定模块
sudo systemctl restart apache2 # 重启Apache生效
4. 启用SSL/TLS加密通信
使用Let’s Encrypt获取免费SSL证书,配置HTTPS加密(替换yourdomain.com为实际域名):
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
证书有效期为90天,可通过certbot renew命令自动续期。
5. 隐藏Apache版本与敏感信息
修改Apache配置文件,隐藏版本号和操作系统信息,防止攻击者针对性利用漏洞:
编辑/etc/apache2/conf-enabled/security.conf,添加/修改以下行:
ServerTokens Prod # 仅显示“Apache”而非版本号
ServerSignature Off # 关闭服务器响应中的签名信息(如错误页面的版本提示)
重启Apache使配置生效:sudo systemctl restart apache2。
6. 配置访问控制与目录权限
<Directory>指令限制特定目录的访问权限(如/var/www/html),仅允许授权IP或本地访问:<Directory "/var/www/html">
Options -Indexes +FollowSymLinks # 禁用目录列表,允许符号链接
AllowOverride All # 允许.htaccess覆盖配置
Require ip 192.168.1.0/24 # 仅允许192.168.1.0/24网段访问
# 或Require all granted(允许所有,生产环境建议限制)
</Directory>
sudo chown -R www-data:www-data /var/www/html # 所属用户/组设为www-data
sudo find /var/www/html -type d -exec chmod 755 {} \; # 目录权限755
sudo find /var/www/html -type f -exec chmod 644 {} \; # 文件权限644
7. 强化身份验证(可选)
对敏感目录启用基本身份验证(如后台管理目录),增加访问门槛:
-c表示创建):sudo htpasswd -cm /etc/apache2/.htpasswd admin
/var/www/html/admin):<Directory "/var/www/html/admin">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
8. 配置安全HTTP头
通过mod_headers模块添加安全头,防范XSS、点击劫持等攻击:
编辑/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。
9. 安装Web应用防火墙(WAF)
使用ModSecurity模块检测并阻止恶意请求(如SQL注入、XSS):
sudo apt install libapache2-mod-security2 -y
sudo cp /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
10. 日志监控与定期审计
access.log)和错误日志(error.log)正常记录:/var/log/apache2/access.log和/var/log/apache2/error.log。tail命令实时查看异常请求(如大量404错误):sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/error.log
GoAccess等工具生成可视化报告,快速识别可疑活动:sudo apt install goaccess -y
sudo goaccess /var/log/apache2/access.log --log-format=COMBINED
11. 配置fail2ban防止暴力破解
自动封禁多次尝试登录失败的IP地址(如SSH、Apache认证):
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 备份默认配置
sudo nano /etc/fail2ban/jail.local
启用Apache认证失败防护(取消注释或添加以下内容):
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
bantime = 600 # 封禁10分钟
重启fail2ban:sudo systemctl restart fail2ban。
12. 定期备份配置与数据
定期备份Apache配置文件和网站数据,防止配置丢失或数据损坏:
sudo cp -R /etc/apache2 /etc/apache2-backup # 备份配置文件
sudo cp -a /var/www/html /backup/www # 备份网站数据
通过以上步骤,可全面强化Debian上Apache服务器的安全性,有效抵御常见网络攻击。需定期复查配置(如每季度),并根据最新安全威胁调整策略。