1
ik 2023-01-06 18:44:21 +08:00 via iPhone
shell 写一个
|
2
bjzhush 2023-01-06 18:49:13 +08:00
我第一反应是 ngx_http_limit_req_module ,不过看了下你好像不是要限制频率,要直接封禁。
我目前有一个在用的方案,稍微有点麻烦,不过也不复杂,用 filebeat 推 nginx log 到 redis 队列,然后自己解析后,需要封禁的 ip 加入 ip 黑名单池。Nginx 每个请求都会通过 lua 脚本读取黑名单池,在池子里面的直接 403 。 也有个优点,就是可以自己定制封禁逻辑,比较灵活 |
3
Puteulanus 2023-01-06 18:56:57 +08:00
永久 ban ip 误伤了运营商 NAT 的出口 IP 可能大范围打不开,前面加个 cf 之类的 cdn 吧
|
4
herozzm OP @Puteulanus 已经套了 cdn ,但是 cdn 的封锁措施有限
|
5
zhailw 2023-01-06 18:59:38 +08:00 via Android 1
fail2ban 自己针对日志写配置文件,还是挺方便的
|
6
datocp 2023-01-06 19:10:32 +08:00 via Android 1
用 iptables recent hacker 搜索一下,
现在都是配合 ipset 使用。 |
7
israinbow 2023-01-06 19:10:35 +08:00 1
|
8
Jirajine 2023-01-06 19:18:54 +08:00
别永久 ban ,限流就行,而且只 ban /32 不要扩大 ban 子网的范围,动态 ip 太容易误伤。
用的一些节点打开 Debian wiki 总是 403 ,一查整个 /24 段早就被拉黑了。 |
10
sky96111 2023-01-06 19:28:14 +08:00 via Android
@herozzm 他的意思是动态 IP ,过段时间这个 IP 就不是之前爬你网站的那个人的了。如果后来获取到这个被 ban IP 的无辜人是你网站的潜在用户,你很可能会失去他
|
12
lower 2023-01-06 19:45:54 +08:00
不知道 限流工具或策略 对服务器性能影响大么?
请求没进应用就返回结果了。。。应该对性能影响微乎其微吧 |
13
billgong 2023-01-06 19:47:45 +08:00 1
@zhailw f2b 正解 此类根据某种特征识别主机并 ban 掉的操作都是 f2b 能搞定的范畴
如果你说的爬虫指的是爬 SSH 弱密码、爬 SMTP 中继的那类,规则可以设置的严格一些,我这边都是直接 ban 终身的 有的时候并不需要在源头上 ban 一个 IP 。资源够的话可以先从应用层面 ban ,然后升级至防火墙 ban 端口,最后彻底 ban ,可以有效减少误杀的可能。 |
14
psirnull 2023-01-06 20:02:40 +08:00 1
iptables 写一个
1.编写脚本 mkdir /root/bin vi /root/bin/dropip.sh #!/bin/bash /bin/netstat -nagrep ESTABLISHEDawk ‘{print $5}’awk -F: ‘{print $1}’sortuniq -csort -rnhead -10grep -v -E ’192.168127.0′awk ‘{if ($2!=null && $1>4) {print $2}}’>/tmp/dropip for i in $(cat /tmp/dropip) do /sbin/iptables -A INPUT -s $i -j DROP echo "$i kill at `date`">>/var/log/ddos done 2.增加执行权限 chmod +x /root/bin/dropip.sh 3.添加到计划任务,每分钟执行一次 crontab -e */1 * * * * /root/bin/dropip.sh 可以根据实际需要修改下。 |
15
Dukec 2023-01-06 23:51:14 +08:00
Fail2ban
|