在 CentOS 系统上使用 Apache2 实现防盗篡改功能,可以通过以下几种方法来增强网站的安全性:
mod_security 是一个强大的 Web 应用防火墙(WAF),可以防止各种攻击,包括 SQL 注入、跨站脚本(XSS)等。
sudo yum install mod_security2
编辑 Apache 配置文件(通常是 /etc/httpd/conf/httpd.conf 或 /etc/apache2/apache2.conf),添加以下内容:
LoadModule security2_module modules/mod_security2.so
<IfModule security2_module>
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
SecAuditEngine RelevantOnly
SecAuditLog /var/log/httpd/modsec_audit.log
</IfModule>
你可以使用默认的规则集,也可以自定义规则。默认规则集通常位于 /usr/share/modsecurity-crs/ 目录下。
sudo cp -r /usr/share/modsecurity-crs/* /etc/modsecurity/
编辑 /etc/modsecurity/modsecurity.conf 文件,确保以下行未被注释:
IncludeOptional /etc/modsecurity/crs/*.conf
mod_rewrite 模块可以用来重写 URL,防止直接访问敏感文件。
编辑 Apache 配置文件,添加以下内容:
<Directory "/var/www/html">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} \.(htaccess|htpasswd|ini|conf)$
RewriteRule ^ - [F,L]
</Directory>
.htaccess 文件可以用来限制对特定文件和目录的访问。
创建或编辑 .htaccess 文件,添加以下内容:
# 防止目录列表
Options -Indexes
# 防止访问 .htaccess 和 .htpasswd 文件
<FilesMatch "(\.htaccess|\.htpasswd)$">
Order allow,deny
Deny from all
</FilesMatch>
# 防止访问特定文件类型
<FilesMatch "\.(ini|conf|cfg)$">
Order allow,deny
Deny from all
</FilesMatch>
使用 SSL/TLS 加密可以防止中间人攻击和数据泄露。
sudo yum install certbot python2-certbot-apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
按照提示完成证书的安装和配置。
定期备份网站文件和数据库,以便在发生篡改时能够快速恢复。
sudo tar -czvf /backup/yourdomain.com-$(date +%F).tar.gz /var/www/html
定期检查 Apache 日志文件,分析访问模式和潜在的安全威胁。
sudo tail -f /var/log/httpd/access_log
sudo tail -f /var/log/httpd/error_log
通过以上方法,你可以大大增强 CentOS 上 Apache2 服务器的防盗篡改功能。