iptables限制ip访问_使用ipset工具设置iptables防火墙黑名单和白名单

871e7b0a2180e9c8991babcb23c9625b.png

官方介绍

IP集是Linux内核内部的一个框架,可以通过ipset实用程序进行管理 。根据类型的不同,IP集可以以某种方式存储IP地址,网络,(TCP / UDP)端口号,MAC地址,接口名称或它们的组合,以确保将条目与该集匹配时的闪电速度。

如果你想

  • 一口气存储多个IP地址或端口号,并通过iptables与集合进行匹配 ;
  • 针对IP地址或端口动态更新iptables规则,而不会影响性能;
  • 使用一个iptables规则表达复杂的基于IP地址和端口的规则集, 并受益于IP集的速度;

那么ipset可能是适合您的工具。

IP集由Jozsef Kadlecsik编写,它基于Joakim Axelsson,Patrick Schaaf和Martin Josefsson的ippool。

ipset的特点:

  • ipset是linux系统内的一个管理IP集合的工具。
  • iptables可以匹配ipset管理的IP集合。
  • 使用ipset可以动态的更新iptables规则(这点很好,只需要ipset更新ip集,iptables不用重启即生效)。
  • ipset支持集合类型存储ip,使得数据查找比较高效。

1、ipset工具安装

yum install ipset-service

2、设置ipset开机自启动

systemctl enable ipset

#其他命令

systemctl start ipset

systemctl status ipset

systemctl stop ipset

3、ipset创建一个IP集的操作

ipset create blacklist hash:net maxelem 100000 #黑名单

ipset create whitelist hash:net maxelem 100000 #白名单

说明:ipset默认可以存储65536个元素;maxelem指定集合大小,可以不指定

4、ipset查看IP集的操作

ipset list blacklist #查看黑名单IP集

ipset list whitelist #查看白名单IP集

ipset list #查看所有的IP集

5、ipset添加ip的操作(这里以blacklist为例)

ipset add blacklist 192.168.1.1

#加上-exist参数如果whitelist里已经存在该ip执行不会报错,再批量导入ip集合的时候很有用

ipset -exist add blacklist 192.168.1.1

6、ipset删除ip的操作(这里以blacklist为例)

ipset del blacklist 192.168.1.1

7、保存ipset操作

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

service ipset save

注意:每次上面命令只能保存本次保存之前的ipset操作,保存之后进行的ipset如果没有再次执行上面的操作就 重启了那这次ipset操作仍然是无效的,可以设置ipset服务停止时save操作。

所以,你还需要进行一下设置,将IPSET_SAVE_ON_STOP设置为yes,默认是no

vi /etc/sysconfig/ipset-config

# Save current ipsets on stop.

# Value: yes|no, default: no

# Saves all ipsets to /etc/ipset/ipset if service gets stopped

# (e.g. on system shutdown).

IPSET_SAVE_ON_STOP="yes"

8、ipset删除IP集的操作(这里以blacklist为例)

ipset destroy blacklist

9、ipset备份IP集的操作(这里以blacklist为例)

ipset save blacklist -f blacklist.txt

10、ipset导入一个IP集的操作(这里以blacklist为例)

ipset restore -f blacklist.txt

11、iptables防火墙配置黑名单和白名单的操作

vi /etc/sysconfig/iptables #加入如下规则:

#设置黑名单

-I INPUT -m set --match-set blacklist src -p tcp -j DROP

#当然你也可以像下面这样指定单个的端口

-I INPUT -m set --match-set blacklist src -p tcp --destination-port 80 -j DROP

#设置白名单

-I INPUT -m set --match-set whitelist src -p tcp -j ACCEPT

#设置完重启防火墙规则,测试一下吧

12、扩展应用

思考,查看nginx日志,会发现每天有很多恶意访问服务器的日志,如何收集这些恶意访问者的IP并自动加入iptables黑名单blacklist集,只要写个shell脚本分析日志将ip报错到某个文本文件并使用ipset工具导入到IP集中即可,如何创建一个定时任务,每隔1分钟或者3分钟执行一下。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值