在 Ubuntu 上,保护 Apache 站点内容不被未授权访问或篡改,通常要同时做“访问控制、篡改防护、攻击缓解、完整性校验与快速恢复”四个层面的工作。下面给出一套可直接落地的配置方案。
一 基础防护与访问控制
sudo apt update && sudo apt upgrade -ysudo ufw allow 'Apache Full' && sudo ufw enableOptions -Indexes
<FilesMatch "\.ht">
Require all denied
</FilesMatch>
sudo apt install certbot python3-certbot-apachesudo certbot --apache -d example.com<Directory "/var/www/html/admin">
Require ip 192.168.1.0/24
</Directory>
php)。sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
sudo chown -R www-data:www-data /var/www/html
sudo chmod 750 /var/www/html/uploads
sudo find /var/www/html/uploads -type f -exec chmod 640 {} \;
sudo find /var/www/html/uploads -type d -exec chmod 750 {} \;
以上措施可显著降低未授权访问与信息泄露风险,并为后续防篡改与完整性校验打基础。
二 防篡改与攻击缓解
sudo a2enmod rewrite headers evasive sslsudo apt install libapache2-mod-security2sudo mv /usr/share/modsecurity-crs /etc/modsecurity/
sudo ln -s /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
echo "IncludeOptional /etc/modsecurity/modsecurity.conf" | sudo tee -a /etc/apache2/apache2.conf
echo "Include /etc/modsecurity/crs/crs-setup.conf" | sudo tee -a /etc/apache2/apache2.conf
echo "Include /etc/modsecurity/crs/rules/*.conf" | sudo tee -a /etc/apache2/apache2.conf
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpg|jpeg|png|gif|ico|css|js)$ - [F,L]
sudo apt install fail2ban && sudo systemctl enable --now fail2ban
以上组合可有效缓解常见 Web 攻击与资源盗用,并为站点增加“篡改企图发现”的能力。三 完整性校验与快速恢复
sudo apt install aide
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
sudo aide --check(建议纳入 cron 每日执行)四 一键检查与常用命令
sudo a2enmod rewrite headers evasive sslsudo systemctl restart apache2sudo apache2ctl configtestsudo systemctl status apache2sudo tail -f /var/log/apache2/error.log /var/log/apache2/access.logsudo ufw statussudo certbot renew --dry-run五 注意事项