添加请求黑、白名单方式

miloyang
0 评论
/ /
616 阅读
/
3848 字
23 2023-07

最近我的云服务器经常收到破解密码的攻击,腾讯云会标记为高危险事件,然后自动把登录密码修改掉,导致我自己也时不时的上去修改正常的密码。查看了一下,主要是某一个ip对我服务器进行密码破解,于是想通过添加黑名单的方式进行该ip禁止访问。

使用netfilter/iptables框架禁止IP地址

在Linux中,可以很简单地用netfilter/iptables框架禁止IP地址:

$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP

如果你想要完全屏蔽一个IP地址段,你可以用下面的命令很简单地做到:

sudo iptables -A INPUT -s 1.1.2.0/24 -p TCP -j DROP

然而,当你有1000个独立IP地址,且不带CIDR(无类别域间路由)前缀,你该怎么做?你要有1000条iptable规则!这显然这并不适于大规模屏蔽。

$ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP
$ sudo iptables -A INPUT -s 2.2.2.2 -p TCP -j DROP
$ sudo iptables -A INPUT -s 3.3.3.3 -p TCP -j DROP
. . . .

此时Ip集就隆重登场

使用IPset禁止IP地址

ipset是Linux内核提供的一种高效的、支持大规模IP地址集合(包括IPv4和IPv6)管理的工具,可以实现快速的IP地址匹配、封禁、允许等功能。它主要用于防火墙、入侵检测系统等网络安全应用场景中。
ipset的设计初衷是为了解决iptables规则表过长、匹配效率低下等问题,它可以将大量的IP地址(比如黑名单、白名单等)以集合的形式存储在内核空间中,并提供标准的命令行接口供用户进行添加、删除、查看等操作。使用ipset可以大大减少iptables规则表的长度、加速匹配速度、方便管理等。

  • ipset工具安装
yum install ipset-service
  • 设置ipset开机启动
systemctl enable ipset #centos7
chkconfig ipset on  #centos6

其他的一些命令

systemctl start ipset #启动
systemctl status ipset #查看状态
systemctl stop ipset #停止
  • ipset创建一个ip集的操作
ipset create blacklist hash:net maxelem 1000000  #创建一个ipset黑名单,最大1000000
ipset create whitelist hash:net maxelem 1000000  #创建一个ipset白名单,最大1000000
#说明:ipset默认可以存储65536个元素;maxelem指定集合大小,可以不指定
  • ipset添加ip的操作(这里以blacklist为例)
ipset add blacklist 192.168.1.1
#加上-exist参数如果whitelist里已经存在该ip执行不会报错,再批量导入ip集合的时候很有用
ipset -exist add blacklist 192.168.1.1

如:

[root@VM-4-9-centos ~]# ipset add blacklist 60.164.245.201
[root@VM-4-9-centos ~]# ipset add blacklist 94.102.51.218
[root@VM-4-9-centos ~]# ipset list blacklist
Name: blacklist
Type: hash:net
Revision: 6
Header: family inet hashsize 1024 maxelem 100
Size in memory: 504
References: 0
Number of entries: 2
Members:
60.164.245.201
94.102.51.218
  • ipset删除ip的操作(这里以blacklist为例)
ipset del blacklist 192.168.1.1
  • 保存ipset操作

ipset所有的设定都是运行在内存中。如果ipset服务或者服务器重启了就会失效,所以需要进行保存的操作

service ipset save
  • 批量导入ip集 先创建批量导入的文件 vim banthis.txt
create banthis hash:net family inet hashsize 131072 maxelem 237302
add banthis 1.2.4.0/24
add banthis 1.2.8.0/24
add banthis 1.9.75.8/32
add banthis 1.9.96.105/32
add banthis 1.9.102.251/32
add banthis 1.9.189.65/32
add banthis 1.16.0.0/14

导入该文件

ipset restore -f banthis.txt
ipset restore < /etc/ipset.conf #将规则ipset,导入之前先清空规则
#ipset test blacklist 20.211.113.35 #检查目标ip是否在ipset集合中
  • 其余相关命令
ipset destroy blacklist #ipset删除IP集的操作(这里以blacklist为例)
ipset save blacklist -f blacklist.txt #ipset备份IP集的操作(这里以blacklist为例) ,其实就是上述banthis.txt文件
ipset del blacklist 1.2.3.4 #从blacklist集合中删除IP地址
ipset test blacklist 1.2.3.4 #检查IP地址是否在blacklist集合中
ipset list #列出所有的ipset集合

参考文件

人未眠
工作数十年
脚步未曾歇,学习未曾停
乍回首
路程虽丰富,知识未记录
   借此博客,与之共进步