日志文件 /home/www/xxx.log
182.149.161.215 - - [04/Feb/2023:23:18:55 +0800] " POST /u/k.php HTTP/1.1 " 403 548 " http://xxx.xxx.xxx.xxx/u/k.php " " Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"
182.149.161.215 - - [04/Feb/2023:23:18:55 +0800] " POST /u/k.php HTTP/1.1 " 403 548 " http://xxx.xxx.xxx.xxx/u/k.php " " Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"
攻击者会每秒 POST 请求 /u/k.php 数次,拉黑后过一段时间会切到其他 IP 继续攻击,我想能不能写个脚本来分析下日志,几分钟执行一次就行,如果开始攻击大概 100 行内就可以找到这种日志吧,不会写 sh 脚本,有会写的 V 友救一下吗?
1
HAWCat 2023-02-05 00:54:06 +08:00 via iPhone
用 fail2ban
|
2
realpg 2023-02-05 01:13:31 +08:00
流量一个月 50MB 顶天了
CPU 等效占用 0.01%顶天了 管他干啥 |
3
kaiki OP @realpg 我也不明白为什么会要这样攻击啊,服务器上并没有这个文件,他就是要请求,而且他也不在乎返回,单纯就是想请求,不怕贼偷就怕贼惦记
|
4
yuzo555 2023-02-05 01:43:59 +08:00
搜索这个 User-Agent ,没发现有价值的信息,只能发现攻击程序可能是易语言写的,IP 查了下也是家宽的 IP 。
如果服务器压力不大的话,你干脆直接封 User-Agent 关键词,直接让 nginx 返回 403 就好,还不用浪费资源去跑 php |
5
FrankAdler 2023-02-05 02:15:54 +08:00
#!/bin/bash
line=1000 times=10 conf=/opt/nginx/conf/blockip.conf tail /data/logs/nginx/access.log -n $line | \ grep -E '("status":"404"|"status":"302")' | awk '{print $1}' | \ sort | uniq -c | \ awk '$1>$times{print "deny "$2 ";"}' >> $conf deny=$(sort $conf | uniq -c | awk '{print "deny "$3}') echo $deny | sed "s/; /;\n/g" > $conf /usr/local/sbin/nginx -t || exit /usr/bin/systemctl reload nginx 大于 10 次,从最近 1000 条日志分析,nginx.con 自行 include 那个 blockip.conf |
6
FrankAdler 2023-02-05 02:17:07 +08:00
@FrankAdler grep -E 修改下
#!/bin/bash line=1000 times=10 conf=/opt/nginx/conf/blockip.conf tail /data/logs/nginx/access.log -n $line | \ grep -E '(" 404 "|"status":" 302 ")' | awk '{print $1}' | \ sort | uniq -c | \ awk '$1>$times{print "deny "$2 ";"}' >> $conf deny=$(sort $conf | uniq -c | awk '{print "deny "$3}') echo $deny | sed "s/; /;\n/g" > $conf /usr/local/sbin/nginx -t || exit /usr/bin/systemctl reload nginx |
7
FrankAdler 2023-02-05 02:22:16 +08:00
还是漏了一点,算了你自己稍微调整下吧,因为我的日志输出是 json
|
8
eason1874 2023-02-05 02:31:18 +08:00 2
每秒几次,对 nginx 造不成压力,直接 444 无响应关闭连接好了
location = /u/k.php { return 444; } |
9
raysonx 2023-02-05 03:36:10 +08:00 1
如果题主的正常用户是用域名访问的,可以配置 nginx 对所有未知域名(包括直接 IP 地址访问) return 444 。
|
10
stabc 2023-02-05 08:09:45 +08:00
nginx 自带 rate limit
|
11
busier 2023-02-05 12:53:32 +08:00 1
这种 P 大的事也配称作“攻击”~~~~~~~~~
|
12
HeyEvan 2023-02-05 14:48:17 +08:00
上 Cloudflare ,系统防火墙并限制 CF IP 段访问,Cloudflare 上限制国家访问,一年了就没见到这些请求
|
13
lcy630409 2023-02-05 18:55:04 +08:00
这种 P 大的事也配称作“攻击”~~~~~~~~~
常规扫描而已 |
15
TGl2aWQgZGUgZGll 2023-02-06 09:24:13 +08:00
就是批量漏洞扫描工具而已,不用管他,对你完全没影响
|
16
HeyEvan 2023-02-06 09:34:56 +08:00
@qile11 如果是自己访问的话可以试试 CloudflareSpeedTest 优选 IP ,稳定性就不清楚了。我自己的走代理
|
17
xyjincan 2023-02-06 14:45:42 +08:00
给 404 页面定义一个空页面返回,只给个响应头呗,对安全没有啥影响,
|
18
libook 2023-02-06 14:58:15 +08:00 1
现在黑客都是机器人自动扫描 IP 段,发现在线主机后自动扫描端口,发现 Web 服务自动按照漏洞特征来扫描是否存在漏洞,发现漏洞自动攻击,或者把信息提供给黑客来人工攻击。攻击之后要么就是加密数据勒索,要么是用来挖矿,要么是用来当肉鸡部署机器人来对其他服务器进行扫描。
一般企业的方案是用 Web 应用防火墙来防护,个人项目确保不会被扫描出漏洞的话也可以简单地用一些类似 fail2ban 的方案。 |
19
AIyunfangyu 2023-06-30 10:53:55 +08:00
可以加我合作交流下防御 V:with--tea
|