阅读量:54
Ubuntu Apache实现防盗攻击的综合方案
1. 限制请求频率(防刷单/CC攻击)
使用mod_evasive模块限制单个IP在短时间内的高频请求,有效防御DDoS、刷单等攻击。
- 安装模块:
sudo apt install libapache2-mod-evasive - 配置规则:编辑
/etc/apache2/mods-enabled/evasive.conf,设置关键参数(可根据业务调整):DOSHashTableSize 3097 # 哈希表大小,建议保持默认 DOSPageCount 2 # 单个页面1秒内最多允许2次请求 DOSSiteCount 50 # 整站1秒内最多允许50次请求 DOSPageInterval 1 # 页面请求检测时间窗口(秒) DOSSiteInterval 1 # 整站请求检测时间窗口(秒) DOSBlockingPeriod 10 # 封禁时间(秒),封禁后IP无法访问 - 启用模块与重启:
sudo a2enmod evasive && sudo systemctl restart apache2
2. 防盗链(防资源盗用)
通过mod_rewrite模块验证请求来源(Referer),阻止非授权网站盗用图片、视频等静态资源。
- 启用rewrite模块:
sudo a2enmod rewrite && sudo systemctl restart apache2 - 配置.htaccess或虚拟主机:在需要保护的目录(如
/var/www/html/images)的.htaccess文件中添加:或在虚拟主机配置(如RewriteEngine On RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com [NC] # 允许自身域名 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?trusted-domain\.com [NC] # 可选:允许信任的第三方域名 RewriteCond %{HTTP_REFERER} !^$ # 允许直接访问(如用户手动输入URL) RewriteRule \.(jpg|jpeg|png|gif|svg|webp)$ - [F,L] # 匹配资源扩展名,返回403/etc/apache2/sites-available/your-site.conf)的块中添加相同规则
3. 防爬虫(防恶意抓取)
通过识别恶意User-Agent或IP,阻止爬虫批量抓取网站内容。
- 基于User-Agent过滤:在
.htaccess或虚拟主机配置中添加:RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (BadBot|Scrapy|wget|curl) [NC] # 匹配常见恶意爬虫标识 RewriteRule .* - [F,L] # 返回403禁止访问 - 基于IP黑名单:在虚拟主机配置的
块中添加:Require all granted Require not ip 192.168.1.100 # 封禁单个IP Require not ip 192.168.1.0/24 # 封禁IP段 - 使用mod_security(高级防护):安装并配置Web应用防火墙(WAF),拦截复杂爬虫请求:
编辑sudo apt install libapache2-mod-security2 sudo a2enmod security2 sudo systemctl restart apache2/etc/modsecurity/modsecurity.conf,添加自定义规则(如封禁访问敏感页面的IP):重启Apache生效SecRule REQUEST_URI "@rx /admin|/private" \ "id:1001,phase:2,deny,status:403,msg:'Blocked suspicious crawler'"
4. 基础认证(防未授权访问)
对敏感目录(如后台、数据库管理页面)启用HTTP基本认证,要求用户输入用户名和密码。
- 创建密码文件:
sudo htpasswd -c /etc/apache2/.htpasswd admin(首次创建用-c,后续添加用户无需-c) - 配置访问控制:在虚拟主机配置或
.htaccess中添加:重启Apache使配置生效AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require valid-user
5. 隐藏服务器信息(防信息泄露)
移除Apache响应头中的版本号和系统信息,降低攻击者针对性利用漏洞的风险。
- 修改Apache配置:编辑
/etc/apache2/conf-enabled/security.conf,设置:重启Apache生效ServerTokens Prod # 仅显示"Apache",隐藏版本号 ServerSignature Off # 关闭错误页面的服务器信息
6. 启用SSL/TLS加密(防数据窃取)
通过HTTPS加密传输数据,防止中间人攻击窃取用户信息(如登录密码、支付信息)。
- 安装Certbot:
sudo apt install certbot python3-certbot-apache - 获取并安装证书:运行
sudo certbot --apache,按提示输入域名,自动配置SSL证书。 - 强制HTTPS:在虚拟主机配置中添加重定向规则,将HTTP请求跳转至HTTPS:
重启Apache生效:80 > ServerName yourdomain.com Redirect permanent / https://yourdomain.com/
7. 安全审计与监控(及时发现攻击)
通过日志分析和自动化工具,及时发现并响应异常行为。
- 安装fail2ban:
sudo apt install fail2ban,配置/etc/fail2ban/jail.local添加Apache防护规则:重启fail2ban生效:[apache-badbots] enabled = true filter = apache-badbots action = iptables-multiport[name=HTTP, port="http,https", protocol=tcp] logpath = /var/log/apache2/access.log maxretry = 3 bantime = 3600sudo systemctl restart fail2ban - 定期检查日志:使用
tail -f /var/log/apache2/error.log或grep '403' /var/log/apache2/access.log查看异常请求