保护 Debian 上的 Apache(通常指 Apache2)需要从系统层、服务层、网络层和应用层多方面加固。下面给你一套实用且可落地的加固清单,适合生产环境。
sudo apt update
sudo apt upgrade -y
开启自动安全更新:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
只保留 Apache 和必要组件:
systemctl disable --now telnet.socket
检查监听端口:
ss -tulnp
编辑:
sudo nano /etc/apache2/conf-available/security.conf
修改:
ServerTokens Prod
ServerSignature Off
启用并重启:
sudo a2enconf security
sudo systemctl restart apache2
<Directory /var/www/html>
Options -Indexes
</Directory>
<Directory /var/www/html>
AllowOverride None
Require all granted
<LimitExcept GET POST HEAD>
Require all denied
</LimitExcept>
</Directory>
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 {} \;
<Directory /var/www/html/uploads>
php_flag engine off
Options -ExecCGI
AddHandler cgi-script .php .pl .py
</Directory>
sudo apt install ufw
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
<Directory /var/www/html/admin>
Require ip 192.168.1.0/24
AuthType Basic
AuthName "Restricted"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
启用 HSTS:
Header always set Strict-Transport-Security "max-age=63072000"
sudo a2dismod autoindex status cgi
sudo systemctl restart apache2
sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/error.log
可配合 fail2ban 防止暴力破解。
✔ 更新系统
✔ 隐藏版本
✔ 禁用目录浏览
✔ 防火墙
✔ HTTPS
✔ 最小权限
如果你愿意,我可以: