恶意访问如何拉黑拦截

wen 网络安全 28

本文目录导读:

恶意访问如何拉黑拦截

  1. 最基础:通过 Nginx/Apache 直接封 IP
  2. 实用级:配置 Web 应用防火墙(WAF)
  3. 智能级:基于频率限制(Rate Limiting)
  4. 对抗型:验证码/JS挑战(Human Verification)
  5. 全面方案:云 CDN + WAF + DDoS 防护
  6. 应急处置:服务器防火墙(iptables/firewalld)
  7. 总结建议

恶意访问(如爬虫、攻击、刷票等)的拉黑拦截通常需要在服务器端网络边界进行配置,以下是几种常见且有效的拦截方法,按技术门槛从低到高排序:

最基础:通过 Nginx/Apache 直接封 IP

适合:服务器配置简单,能快速阻止已知的恶意 IP。

Nginx 示例:server 块或 http 块中添加:

# 拒绝特定IP
deny 192.168.1.1;
deny 10.0.0.0/24;
# 允许所有(通常放在最后)
allow all;

Apache (.htaccess) 示例:

<RequireAll>
    Require all granted
    Require not ip 192.168.1.1 10.0.0.0/24
</RequireAll>

优点:零额外资源消耗。
缺点:纯粹靠 IP 封禁,动态 IP 或代理穿透能力差;手动添加效率低。


实用级:配置 Web 应用防火墙(WAF)

适合:需要自动化、规则灵活的拦截。推荐所有对外服务的网站都开启。

  • 云服务商 WAF(如阿里云、腾讯云、Cloudflare):
    • 开启 CC 防护(限制单一 IP 每秒请求数)。
    • 配置 IP 黑名单区域拦截(如封禁境外 IP)。
    • 开启 爬虫规则恶意 Bot 检测
  • 开源本地 WAF(如 ModSecurity + OWASP CRS 规则集)

    能拦截 SQL 注入、XSS 等攻击行为,但需要一定的配置学习成本。

云 WAF 通常会分析请求头(User-Agent、Referer)、请求频率、历史攻击特征,自动拦截后返回 403 或验证码。


智能级:基于频率限制(Rate Limiting)

适合:对抗短时间高频访问(刷票、暴力破解、CC 攻击)。

实现原理:记录每个 IP 的单位时间请求次数,超出阈值则返回 429 Too Many Requests 或直接拒绝。

Nginx 示例(ngx_http_limit_req_module):

# 定义限制区域(内存中1MB存储约16000个IP状态)
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
server {
    location /api/ {
        limit_req zone=mylimit burst=20 nodelay;  # 每秒10次,可突发20次
    }
}

代码层面(如 PHP/Python/Node): 可以使用 Redis 实现滑动窗口计数,检测某 IP 在 60 秒内请求超过 100 次,则添加到一个黑名单集中,后续请求直接返回 403。


对抗型:验证码/JS挑战(Human Verification)

适合:识别真实用户 vs 脚本/机器人。

  • CAPTCHA(验证码):当访问频率异常时,要求输入图形验证码,可用 Google reCAPTCHA、华为云 IEC 或极验。
  • JS 挑战(JS Challenge):服务器返回一段 JavaScript,浏览器环境能正确执行并产生 token,普通爬虫无法解析,CF(Cloudflare)的 5 秒盾就属此类。
  • Cookie 指纹:要求访问者先后访问多个静态资源并计算时间差,不符合人类行为则暂时拉黑。

全面方案:云 CDN + WAF + DDoS 防护

如果遭受大规模攻击(单机资源耗尽),需要云服务商介入:

  • Cloudflare:提供免费 DDoS 防护 + 基于 IP/User-Agent/ASN 的 WAF + 自动的 JS 挑战。
  • 阿里云 / 腾讯云 / 华为云:购买高防 IP 或 DDoS 原生清洗,启用 黑/白名单区域封禁精准访问控制

应急处置:服务器防火墙(iptables/firewalld)

当需要立即手动封禁某个 IP(SSH 暴力破解源 IP):

CentOS/RHEL (iptables):

iptables -A INPUT -s 192.168.1.100 -j DROP

Ubuntu/Debian (ufw):

ufw deny from 192.168.1.100

总结建议

  1. 个人小站:先做 Nginx 频率限制 + 使用 Cloudflare 免费 CDN(自带基础防护)。
  2. 电商/企业站:购买云服务商最低配 WAF(如每年几百元),开启自动封禁恶意 IP 和 CC 防护。
  3. 高频攻击:升级到高防服务,并考虑切换到 HTTP/2 并开启 JS Challenge。
  4. 所有情况:日志是反制的依据,定期检查 access.logerror.log,分析攻击特征(如同一个 User-Agent 反复访问不存在的 URL),然后针对性编写 WAF 规则或 Nginx 封禁。

特别注意:单纯依靠 IP 拉黑是“被动防御”,攻击者可能使用大量代理 IP,一定要结合频率控制行为检测(WAF)才能有效拦截恶意访问。

抱歉,评论功能暂时关闭!