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 对象。
Python ipset iptables 实现蜜罐 自动封堵扫描者IP的更多相关文章
- ipset和iptables配合来自动封闭和解封有问题的IP
iptables封掉少量ip处理是没什么问题的,但是当有大量ip攻击的时候性能就跟不上了,iptables是O(N)的性能.而ipset就像一个集合,把需要封闭的ip地址放入这个集合中,ipset 是 ...
- 在Python命令行和VIM中自动补全
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1. VIM下的配置: wget https://github.com/rkulla/pydiction/arc ...
- Spring学习笔记之 Spring IOC容器(二) 之注入参数值,自动组件扫描方式,控制Bean实例化方式,使用注解方式
本节主要内容: 1. 给MessageBean注入参数值 2. 测试Spring自动组件扫描方式 3. 如何控制ExampleBean实例化方式 4. 使用注解方式重构Jdb ...
- python版恶俗古风自动生成器.py
python版恶俗古风自动生成器.py """ python版恶俗古风自动生成器.py 模仿自: http://www.jianshu.com/p/f893291674c ...
- Iptables DDOS/CC 自动屏蔽脚本
Iptables DDOS/CC 自动屏蔽脚本 May 20, 2013 最近不停地被 CC (DDOS的一种)频繁干扰,分享一个 iptables 屏蔽 DDOS 的脚本.让 crond 每分钟运行 ...
- python scapy的用法之ARP主机扫描和ARP欺骗
python scapy的用法之ARP主机扫描和ARP欺骗 目录: 1.scapy介绍 2.安装scapy 3.scapy常用 4.ARP主机扫描 5.ARP欺骗 一.scapy介绍 scapy是一个 ...
- python多线程与多进程--存活主机ping扫描以及爬取股票价格
python多线程与多进程 多线程: 案例:扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活) 普通版本: #扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活)im ...
- python恶俗古风诗自动生成器
# -*- coding:utf-8 -*- #模仿自: http://www.jianshu.com/p/f893291674ca#python恶俗古风诗自动生成器from random impor ...
- 对于pycharm和vscode下,从外部复制文本内容为python字符串内容是会自动加\u202a解决办法
先来看下这个python3源代码,表面上看没有语法毛病,如果源代码字符串内容是手动复制过来的文本内容,在pycharm和vscode下始终提示: pywintypes.error: (2, 'Shel ...
- python每个文件都需要顶部注释,那今天介绍一个方法,只需要设置一次,下次新建python文件后,注释自动出现在顶部的方法
python每个文件都需要顶部注释,那今天介绍一个方法,只需要设置一次,下次新建python文件后,注释自动出现在顶部的方法 只需要在file -----settings------file and ...
随机推荐
- 【版本发布公告】HMS Core6.5.0来啦
新 能 力 3D Engine 3D Engine提供高性能.高画质.高扩展性的实时3D引擎,并提供便捷高效的可视化开发工具.开发者可基于华为的3D Studio开发工具,通过图形和渲染.动画.UI等 ...
- JS启动Windows上的exe
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mysql 重新整理——索引优化explain字段介绍二 [十]
前言 紧接上文. 正文 type type字段有如下类型: 1.all 2.index 3.rang 4.ref 5.eq_ref 6.const,system 7.null 最好到最差的顺序为: s ...
- 实训篇-Html-计算器
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- pytest-fixture使用
fixture(scope='function',params=None,autouse=False,ids=None,name=None):scope:设置作用域:params:传参数,以列表进行存 ...
- golang开发 深入理解 context
context的历史 context包在Go 1.7版本正式加入Go标准库.在加入之前我们看看Go团队核心成员Sameer Ajmani在2014年发表的一篇关于context介绍博客,地址:http ...
- 几种常见的MySQL/PolarDB-MySQL回收表空间方法对比
简介: 当我们频繁的删除表中的数据后,碎片就会变多,有经验的DBA就会回收表空间,回收表空间有好几种方式,我们要选择哪一种呢? 背景 为什么需要回收表空间?任何一个存储或您购买的实例规格都有容量限制, ...
- 宜搭5月更新:跨应用数据读写能力升级,AI组件内测开放
简介:表单.权限管理.AI组件等功能上新啦- 本次,我们带来了表单.权限管理.数据管理.平台管理权限.组件等功能的升级. 表单 支持跨应用数据查询 在使用组件数据联动.关联其他表单数据.关联表单组件 ...
- 11.prometheus监控之黑盒(blackbox)监控
一.黑盒监控 "白盒监控"--需要把对应的Exporter程序安装到被监控的目标主机上,从而实现对主机各种资源及其状态的数据采集工作. 但是由于某些情况下操作技术或其他原因,不是所 ...
- 记录一个解决固定定位内容不能滚动的方法(vant组件tab必用的css样式)
vant组件下边是循环出来的,在开发中这部分必定是个单独的组件,内容溢出时添加滚动的样式,当然这个需要写在外部引入的自定义的vant组件样式当中 .van-tabs__content{ width: ...