以 bottle 框架起了一个简单的 web 服务,用 docker 容器运行,查看容器日志的时候发现有很多不知名的 ip 访问攻击,请问一下,怎么能阻止这些攻击
1
janxin 2022-12-08 11:17:27 +08:00
不允许公网访问?
|
2
dayeye2006199 2022-12-08 11:19:02 +08:00
|
3
sevenandeleven OP @janxin 我自己就是公网访问的
|
4
sevenandeleven OP @dayeye2006199 nginx 是前端在配置的,应该只是做了个反向代理
|
5
julyclyde 2022-12-08 14:43:48 +08:00 1
这事和 python 无关也和 bottle 无关
|
6
sevenandeleven OP @julyclyde 那和啥有关,我想看看 bottle 框架有没有什么方法去拦截
|
8
ipwx 2022-12-08 16:14:10 +08:00 1
首先,楼主要搞清楚到底要做什么。
---- 如果你是按 “访问频率” 确定访问者是不是在攻击,并且希望拦截访问次数太多的用户。那么在一个 tcp 连接建立之前你并不知道它的 ip ,因此只有当 tcp 连接建立之后你才可能进行拦截。tcp 连接建立之后的网络协议栈是: nginx ( tcp 协议 => http 协议 ) => bottle ( 看你配置,可能是 tcp => http ,或者 unix domain => wsgi 都有可能) 换句话说你第一个拦截的机会出现在 nginx 这里。如果你 nginx 不拦截它,那么你的 bottle 总会接受请求并进行处理。 python 处理请求的速度是 nginx 的十倍以上!哪怕只是简单的 http 连接! python 处理请求的速度是 nginx 的十倍以上!哪怕只是简单的 http 连接! python 处理请求的速度是 nginx 的十倍以上!哪怕只是简单的 http 连接! 所以如果楼主不在 nginx 这一层进行拦截,那么总感觉没有做好这件事。 |
9
ipwx 2022-12-08 16:14:22 +08:00
写错了,python 处理行秋比 nginx 慢十倍。
|
10
ipwx 2022-12-08 16:17:26 +08:00
顺便 nginx 流控本来就有相关模块。
https://chenyongjun.vip/articles/81 |
11
westoy 2022-12-08 16:20:29 +08:00
|
12
sevenandeleven OP @ipwx 因为我起的服务会间断性 502 ,然后日志文件没有捕捉到,并不是因为我接口的原因导致的,然后我查看 docker 容器日志的时候,发现有很多未知名的 ip 在不断发请求,我就在想是不是因为这个原因导致的 502 ,然后想阻止拦截一下
|
13
sevenandeleven OP @westoy 感谢,我去试一下
|
14
locoz 2022-12-08 21:30:06 +08:00
首先,根据你的描述和你后面的回复,你这个服务虽然需要能从公网访问,但大概率并不是提供公共服务的,而是你自己用的。如果是这种情况,你完全可以通过对 IP 或请求内包含的其他特征类字段做白名单,或者是通过各类传统 VPN 或 ZeroTier 之类的 SDN 或 FRP 之类的转发工具来实现只有你自己能访问的效果。
其次,公网上存在着大量的网络空间测绘程序、各种搜索引擎或特定研究项目的爬虫,以及各种全网扫描并利用漏洞的攻击程序,只要你的服务直接对公网开放,就必然会出现这种情况。有陌生 IP 访问并不等于被攻击,绝大多数的访问只是探测一下而已,是无害的。 如果你是看到了那种攻击程序,在对你的服务进行大量同类请求、尝试利用漏洞的话,前面也有人告诉你了可以做流控来限制。当然还是前面说的,如果你这个服务并不是公共服务,只是你自己用,那你完全可以使用那些工具做到不直接对公网开放的效果,从根源上避免被外人访问的问题。 |