Ubuntu 上 Apache 安全策略配置清单
一 基础加固
# /etc/apache2/apache2.conf
ServerTokens Prod
ServerSignature Off
<Directory /var/www/html>
Options -Indexes
AllowOverride None
Require all granted
</Directory>
ErrorDocument 403 /custom403.html
ErrorDocument 404 /custom404.html
ErrorDocument 500 /custom500.html
<Directory "/var/www/html/upload">
<FilesMatch "\.(php|php3|phtml)$">
Require all denied
</FilesMatch>
</Directory>
二 传输加密与端口管理
sudo a2enmod ssl
sudo systemctl restart apache2
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
sudo ufw allow 'Apache Full'
# 或分别放行
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
三 访问控制与请求限制
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
<LimitExcept GET POST>
Require all denied
</LimitExcept>
<Directory "/var/www/html/admin">
Require ip 203.0.113.0/24
</Directory>
四 安全模块与抗攻击
sudo apt install libapache2-mod-security2
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
# 克隆并部署 OWASP CRS
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
sudo mv owasp-modsecurity-crs/crs-setup.conf.example /etc/modsecurity/crs-setup.conf
sudo mv owasp-modsecurity-crs/rules/ /etc/modsecurity/
# 在 /etc/apache2/mods-available/security2.conf 中包含规则
echo 'Include /etc/modsecurity/rules/*.conf' | sudo tee -a /etc/apache2/mods-available/security2.conf
sudo a2enmod security2
sudo systemctl restart apache2
sudo apt install libapache2-mod-evasive
sudo mkdir -p /var/log/apache2/evasive
sudo chown www-data:root /var/log/apache2/evasive
# /etc/apache2/mods-available/evasive.conf 示例参数
DOSHashTableSize 2048
DOSPageCount 20
DOSPageInterval 1.0
DOSSiteCount 300
DOSSiteInterval 1.0
DOSBlockingPeriod 10.0
DOSLogDir "/var/log/apache2/evasive"
五 运维与持续监控
sudo apache2ctl configtest
sudo systemctl reload apache2
sudo apt install logwatch
sudo logwatch --output mail --mailto admin@example.com --detail high