Ubuntu Apache实现防盗篡改的多层防护方案
通过对比文件哈希值或使用专业工具,及时发现网站文件(如HTML、JS、CSS、图片)是否被非法修改。
sha256sum生成原始文件的哈希值列表(如sha256sum /var/www/html/index.html /var/www/html/style.css > baseline.sha256),定期运行sha256sum -c baseline.sha256检查文件是否变化(输出FAILED则表示篡改)。/var/www/html)。安装sudo apt install aide,初始化数据库(sudo aide --init,生成/var/lib/aide/aide.db.new.gz),将数据库设为当前版本(sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz),定期运行sudo aide --check生成报告(可通过cron每日自动执行)。使用mod_security模块过滤针对网站文件的非法访问(如盗链、SQL注入、恶意爬虫),防止篡改或盗取内容。
sudo apt install libapache2-mod-security2安装模块,sudo a2enmod security2启用,编辑配置文件/etc/modsecurity/modsecurity.conf,添加规则(如阻止非允许域名的图片盗链):SecRule REQUEST_URI "@rx \.(jpg|jpeg|png|gif)$" \
"id:1001,\
phase:2,\
deny,\
status:403,\
msg:'Hotlinking of images is not allowed',\
severity:'CRITICAL'"
sudo systemctl restart apache2使配置生效。通过IP限制、用户认证等方式,确保只有授权用户或来源能访问网站文件。
.htaccess或<Directory>指令,仅允许特定IP访问敏感目录(如后台、上传文件夹):<Directory "/var/www/html/admin">
Require ip 192.168.1.100 192.168.1.101
</Directory>
mod_auth_basic模块(sudo a2enmod auth_basic),创建密码文件(sudo htpasswd -c /etc/apache2/.htpasswd admin),配置受保护目录:<Location "/private">
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Location>
sudo systemctl restart apache2应用访问控制规则。通过mod_rewrite模块限制图片、视频等资源的引用来源,防止其他网站盗用你的资源(间接减少篡改风险)。
.htaccess:在网站根目录(如/var/www/html)创建或编辑.htaccess文件,添加以下规则(仅允许yourdomain.com引用图片):RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
此规则会拦截非yourdomain.com的图片请求,返回403 Forbidden。通过合理设置文件和目录权限,降低被篡改的可能性(如防止Apache用户被劫持后修改文件)。
www-data(Apache默认用户),文件权限设为644(所有者可读写,其他用户只读),目录权限设为755(所有者可读写执行,其他用户可读执行):sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type f -exec chmod 644 {} \;
sudo find /var/www/html -type d -exec chmod 755 {} \;
/etc/apache2/sites-available/)可限制为root用户访问(chmod 600)。通过HTTPS加密客户端与服务器之间的通信,防止攻击者在传输过程中篡改网页内容(如注入恶意代码)。
sudo apt install mod_ssl安装模块。/etc/apache2/sites-available/default-ssl.conf),启用SSL并指定证书路径:<VirtualHost *:443>
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/yourdomain.crt
SSLCertificateKeyFile /etc/ssl/private/yourdomain.key
</VirtualHost>
/etc/apache2/sites-available/000-default.conf中添加重定向规则,将HTTP请求转向HTTPS:<VirtualHost *:80>
ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
sudo systemctl restart apache2启用HTTPS。通过分析Apache日志(access.log、error.log),识别可疑访问(如频繁请求敏感文件、异地IP大量访问),并触发报警。
tail -f /var/log/apache2/access.log查看实时访问记录,tail -f /var/log/apache2/error.log查看错误信息。error.log中的“404 Not Found”或“403 Forbidden”错误数量),若超过阈值则发送邮件报警(可使用mail命令或sendmail工具)。logwatch(sudo apt install logwatch)生成每日日志报告,或使用ELK Stack(Elasticsearch+Logstash+Kibana)进行可视化分析(需安装并配置)。