Python Bottle 框架

2022-12-08 11:15:59 +08:00
 sevenandeleven

以 bottle 框架起了一个简单的 web 服务,用 docker 容器运行,查看容器日志的时候发现有很多不知名的 ip 访问攻击,请问一下,怎么能阻止这些攻击

2655 次点击
所在节点    Python
15 条回复
janxin
2022-12-08 11:17:27 +08:00
不允许公网访问?
dayeye2006199
2022-12-08 11:19:02 +08:00
sevenandeleven
2022-12-08 13:16:53 +08:00
@janxin 我自己就是公网访问的
sevenandeleven
2022-12-08 13:18:12 +08:00
@dayeye2006199 nginx 是前端在配置的,应该只是做了个反向代理
julyclyde
2022-12-08 14:43:48 +08:00
这事和 python 无关也和 bottle 无关
sevenandeleven
2022-12-08 15:17:59 +08:00
@julyclyde 那和啥有关,我想看看 bottle 框架有没有什么方法去拦截
ruanimal
2022-12-08 15:18:05 +08:00
@julyclyde 由此可得,lz 搜索解决方案时关键词应该也选得不好
ipwx
2022-12-08 16:14:10 +08:00
首先,楼主要搞清楚到底要做什么。
----

如果你是按 “访问频率” 确定访问者是不是在攻击,并且希望拦截访问次数太多的用户。那么在一个 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 这一层进行拦截,那么总感觉没有做好这件事。
ipwx
2022-12-08 16:14:22 +08:00
写错了,python 处理行秋比 nginx 慢十倍。
ipwx
2022-12-08 16:17:26 +08:00
顺便 nginx 流控本来就有相关模块。

https://chenyongjun.vip/articles/81
westoy
2022-12-08 16:20:29 +08:00
没屏蔽掉容器暴露的那个端口吧, 那个不是在 INPUT 上拦截的

https://docs.docker.com/network/iptables/
sevenandeleven
2022-12-08 16:29:05 +08:00
@ipwx 因为我起的服务会间断性 502 ,然后日志文件没有捕捉到,并不是因为我接口的原因导致的,然后我查看 docker 容器日志的时候,发现有很多未知名的 ip 在不断发请求,我就在想是不是因为这个原因导致的 502 ,然后想阻止拦截一下
sevenandeleven
2022-12-08 16:35:35 +08:00
@westoy 感谢,我去试一下
locoz
2022-12-08 21:30:06 +08:00
首先,根据你的描述和你后面的回复,你这个服务虽然需要能从公网访问,但大概率并不是提供公共服务的,而是你自己用的。如果是这种情况,你完全可以通过对 IP 或请求内包含的其他特征类字段做白名单,或者是通过各类传统 VPN 或 ZeroTier 之类的 SDN 或 FRP 之类的转发工具来实现只有你自己能访问的效果。

其次,公网上存在着大量的网络空间测绘程序、各种搜索引擎或特定研究项目的爬虫,以及各种全网扫描并利用漏洞的攻击程序,只要你的服务直接对公网开放,就必然会出现这种情况。有陌生 IP 访问并不等于被攻击,绝大多数的访问只是探测一下而已,是无害的。

如果你是看到了那种攻击程序,在对你的服务进行大量同类请求、尝试利用漏洞的话,前面也有人告诉你了可以做流控来限制。当然还是前面说的,如果你这个服务并不是公共服务,只是你自己用,那你完全可以使用那些工具做到不直接对公网开放的效果,从根源上避免被外人访问的问题。
julyclyde
2022-12-09 09:17:31 +08:00
@ipwx 你说的其实是耗时十倍吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/901008

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX