在 Debian 上运行 Apache 时,防护攻击需要从系统层、Apache 配置层、应用层、监控与运维四个方面来做。下面给你一份实用、可落地的方案。
apt update && apt upgrade -y
开启自动安全更新:
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
apt install ufw
ufw default deny incoming
ufw allow 22
ufw allow 80
ufw allow 443
ufw enable
sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
编辑:
/etc/apache2/conf-enabled/security.conf
设置:
ServerTokens Prod
ServerSignature Off
a2dismod autoindex status cgi
常用可关闭:
autoindex(目录浏览)statuscgi<Directory /var/www/html>
AllowOverride None
Options -Indexes
</Directory>
LimitRequestBody 10485760
确保:
Options -Indexes
apt install libapache2-mod-security2
a2enmod security2
启用规则:
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf
可选:
启用并配置 mod_evasive:
apt install libapache2-mod-evasive
示例配置:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 60
</IfModule>
apt install libapache2-mod-qos
a2enmod rewrite ssl
<VirtualHost *:80>
RewriteEngine On
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
</VirtualHost>
apt install certbot python3-certbot-apache
certbot --apache
tail -f /var/log/apache2/access.log
apt install fail2ban
可保护:
即使 Apache 安全,应用漏洞仍会被攻破:
如果你愿意,可以告诉我:
我可以给你一份针对性配置示例。