一个专业运
维技术分享!

2021HW 封堵大量IP-ipset工具

PS: 最近一直在HW比较忙没有时间写文章,感想:以前我在HW担任监测的工作,今年我担任处置的工作,一个呢监测平台攻击情况 ,一个是处置,进行IP的封堵,工作量数据量非常大iptables配置文件扛不住。

言归正传 ipset是什么?

ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则。而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置.官网:http://ipset.netfilter.org/

1、ipset安装
#方法1 yum安装: yum install ipset

#方法2 源代码安装:进官网下载ipset-7.11.tar.bz2  
yum -y install libmnl-devel libmnl  #安装依赖
wget  https://ipset.netfilter.org/ipset-7.11.tar.bz2  #下载安装包
tar -jxvf ipset-7.11.tar.bz2  && cd ipset-7.11 && ./configure --prefix=/usr/local/ipset && make && make install   完成安装
PS :centos6以下的尝试源代码安装失败。
网上教程!
configure报错如下 configure: error: Invalid kernel source directory /lib/modules/2.6.32-358.el6.x86_64/source 
解决:需要安装内核源码包kernel-devel-2.6.32-358.el6.x86_64.rpm #1,一直没有找到 2,不建议升级
本人解决方法:找到linux系统iso镜像文件软件包里面有RPM包,实在找不到就挂光盘搭建本地yum 
yum install ipset
#方法3:#centos 7以上系统
wget http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/ipset-7.1-1.el7.x86_64.rpm
wget http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/libmnl-devel-1.0.3-7.el7.x86_64.rpm
wget http://www.rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/libmnl-1.0.3-7.el7.x86_64.rpm

直接下载或者下载本地电脑

然后#rz 上传linux服务器(进行安装)

#centos 8以上系统

wget http://www.rpmfind.net/linux/centos/8-stream/BaseOS/x86_64/os/Packages/ipset-7.1-1.el8.x86_64.rpm

cd /hom/jack  #进入目录

rpm -ivh  *.rpm #全部一起安装
2、创建一个ipset
ipset create jack hash:net (#jack 自定义库名 #也可以是hash:ip ,这指的是单个ip)
2.1、查看已创建的ipset
2.2、ipset默认可以存储65536个元素,使用maxelem指定数量
ipset create openapi hash:net maxelem 1000000

ipset list
3、加入一个黑名单ip
ipset add Jack 122.201.5.22
4、创建防火墙规则,与此同时,jack这个IP集里的ip都无法访问80端口(如:CC攻击可用)
iptables -I INPUT -m set --match-set Jack src -p tcp --destination-port 80 -j DROP
或全部屏蔽
iptables -I INPUT -m set --match-set Jack src -p tcp  -j DROP

service iptables save
5、去除黑名单,与此同时,又可以访问了
ipset del jack 145.201.56.109
6、将ipset规则保存到文件
ipset save allset -f allset.txt
7、删除ipset
ipset destroy Jack
8、导入ipset规则
ipset restore -f allset.txt
注意:
1、ipset的一个优势是集合可以动态的修改,即使ipset的iptables规则目前已经启动,新加的入ipset的ip也生效

实例解释:

例:某服务器被CC攻击,经过抓包或者一序列手段发现有一批IP是源攻击ip,因此我们需要封掉这些IP,如果用iptables一条一条加就麻烦些了。
#对TIME_WAIT的外部ip以及此对ip出现的次数经行求重排序。
netstat -ptan | grep TIME_WAIT | awk '{print $5}' | awk -F: '{print $1}' |sort |uniq -c | sort -n -r
#tcpdump 抓取100个包,访问本机80的ip进行求重排序  只显示前20个,数量多的ip可能为攻击源IP,我们需要封掉它
tcpdump -tnn dst port 80 -c 100 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -n -r |head -20
#新建一个setname.txt文件,以如下格式加入这些ip (有多少个ip就多少行)
vim jack.txt

  add jack xxx.xxx.xxx.xxx
#导入setname.txt文件到ipset集
ipset restore -f setname.txt
#查看是否导入成功 (成功的话会发现一个新ipset名为 sername,且Members里就是那些攻击IP)
ipset list
#建立一条iptables规则,拦截这些攻击ip访问服务器80,也可以直接禁止这些ip的所有访问
iptables -I INPUT -m set --match-set jack src -p tcp --destination-port 80 -j DROP
赞(1) 打赏
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。小柳实验室 » 2021HW 封堵大量IP-ipset工具

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏