Python ipset iptables 实现蜜罐 自动封堵扫描者IP
Python ipset iptables 实现蜜罐 自动封堵扫描者IP
蜜罐可以诱捕入侵者,但无法实时封堵入侵者,必须在事后通过日志进行手工封堵。
有没有什么办法可以实现自动封堵入侵者IP?
iptables 实际上是带这个功能的,它是基于 ipset 实现的。通过 iptables 规则可以自动添加 ipset ,然后对添加的 ipset 应用 DROP 规则即可实现自动封堵扫描者IP。
首先我们要构造一个简易版蜜罐,代码如下:
#!python3
from flask import Flask
from flask import request
import sys
app = Flask(__name__)
@app.route('/')
def ip():
ip = request.remote_addr
return ip
if __name__ == "__main__":
app.run(host="0.0.0.0", port=sys.argv[1])
启动一个 screen 会话,运行简易版蜜罐,蜜罐端口为 12345
python3 ./honey_pot.py 12345
定义的蜜罐端口,如果存在“入侵者”扫描,则将对方列为黑名单进行封堵。
下一步是安装 ipset,ipset 是 iptables 的扩展,可以单独使用,也可以被 iptables 识别。
centos系统安装命令为:
yum install ipset
创建一个蜜罐的 set,命令:
ipset create honey-pot hash:ip
其中 honey-pot 是 set 名,名字可以自己取,后面会用到。
创建好空的 ipset ,下一步是添加 iptables 自动规则
iptables -I INPUT -p tcp --dport 12345 -j SET --add-set honey-pot src
以上命令的意思是,如果有人访问 12345 端口,则将访问者的地址加到 honey-pot 组里去。
我们在另一台机器中通过 curl 试一下规则是否生效:
curl 192.168.10.200:12345
在防御端查看 ipset 组是否生效
ipset list honey-pot
此时创建的 honey-pot 对象组中已经自动添加了一个对象,说明诱捕功能生效。此时只是将诱捕到的IP自动添加到对象组,并没有对诱捕IP实行封堵,下一步,我们对 honey-pot 对象组实行自动封堵。
iptables -I INPUT -p tcp -m set --match-set honey-pot src -j DROP
以上命令是对 honey-pot 对象组实行 DROP 动作。当入侵者不小心扫描到了蜜罐端口,对方IP就会自动写入 honey-pot 对象组,然后就自动被封了。
带 ipset 的 iptables 规则和普通规则一样,都可以使用 Iptable -D 进行删除管理,如果发现误封了友军,可以在 iptables 中设置白名单放行。我们通过 iptables -nL --line-number 查看生效的规则。
前三条规则为:
执行 iptables-save 可以查看规则写法
iptables -A INPUT -p tcp -m set --match-set honey-pot src -j DROPiptables -A
INPUT -p tcp -m tcp --dport 12345 -j SET --add-set honey-pot srciptables -A
INPUT -p tcp -m tcp --dport 12345 -j ACCEPT
除了基于 iptables 自动添加 IP 对象组,ipset 自身也是可以单独进行维护的。
ipset 常用操作
ipset list [SETNAME] ,命令列出对象组的相关信息,包含组内成员。如果不加 SETNAME 则显示所有对象组。
ipset create [SETNAME] hash:ip ,用来创建对象组。
ipset destroy [SETNAME] , 用来销毁对象组。
ipset flush [SETNAME],用来清空一个已有的对象组。
最后给出单独维护对象组的例子,从对象组中删除或添加一个IP对象
ipset del honey-pot 192.168.10.23
ipset add honey-pot 192.168.10.23
当出现误操作时,可以对 ipset 中的对象组进行单独维护,从对象组中添加或删除 IP 对象。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)