使用firewalld禁止多ip访问的更好方法(ipset)

关于使用firewalld禁止特定ip访问的方法,在我的另一篇文章中介绍了使用不同zone区进行过滤的方法,使用firewall-cmd仅允许某个ip访问主机指定端口_firewall-cmd 指定 ip 端口访问-CSDN博客

这比直接编写ip规则更容易让人理解,但如果遇到需要对比较多ip进行限制,直接在source进行添加过于零乱,不便于管理。针对这种情况我们需要引用新的管理方法,即ipset.

ipset 是一种高效的数据结构,用于在Linux内核中存储和查找多个IP地址和端口信息,并且可以与firewalld等防火墙服务结合使用以实现更灵活、高效的IP过滤策略。

  • ipset是一个内核模块,提供了一种集合(set)数据结构来处理网络流量的IP地址或端口。
  • 它允许将一组IP地址或端口定义为一个集合,然后防火墙规则可以通过引用这个集合而不是逐个指定IP地址来提高效率。

所以,可以简单理解为ipset是个设置ip、port、mac、net等的集合,firewalld可以调用这些集合,根据集合进行规则过滤。

  • 通过ip集合允许特定ip访问主机端口

# firewall-cmd --new-ipset=in-ip --type=hash:ip --permanent

(添加ipset集合,类型是ip集合,这里必需加--permanent永久写入,请注意后面命令为了测试并没有用--permanent,添加后立即生效,但--reload后添加的项目都会被清除。)

# firewall-cmd --reload

(重载,让--permanent设置生效)

# firewall-cmd --ipset=in-ip --add-entry=192.168.10.15

(在ip集合in-ip中添加一个ip)

# firewall-cmd --ipset=in-ip --add-entry=192.168.10.80-192.168.10.89

(在ip集合in-ip中添加ip段)

# firewall-cmd --ipset=in-ip --get-entries

(查看in-ip集合内容)

# firewall-cmd --zone=work --add-source=ipset:in-ip

(在zone区work中添加ipset集合in-ip)

# firewall-cmd --zone=work --add-port=8088/tcp

(在zone区work中添加8088端口访问)

以上使用ipset实现192.168.10.15及192.168.80-89段ip允许访问主机8088端口。

  • 通过mac集合允许特定mac客户端访问主机端口

# firewall-cmd --new-ipset=in-mac --type=hash:mac --permanent

(添加mac类型的ipset集合)

# firewall-cmd --reload

(重载配置)

# firewall-cmd --ipset=in-mac --add-entry=d0:50:99:d7:bf:49

(添加mac到集合in-mac中)

# firewall-cmd --zone=work --add-source=ipset:in-mac

(work的zone区添加in-mac集合)

# firewall-cmd --zone=work --add-port=8088/tcp

(zone区work添加开放端口8088)

以上使用ipset集合实现了仅允许mac为d0:50:99:d7:bf:49的客户机访问主机8088端口。

  • 小结

通过对firewalld语法的理解,配置ipset过程其实很简洁,即:创建ipset集合--添加集合内容--zone区添加ipset集合--添加zone区端口,这里展示的是允许访问集合,如果希望禁止访问可在zone区drop中添加集合即可。

firewalld支持的ipset类型还有很多,没有一一试过,有兴趣的可以试一试看效果。支持的ipset类型包括:

hash:ip hash:ip,mark hash:ip,port hash:ip,port,ip hash:ip,port,net hash:mac hash:net hash:net,iface hash:net,net hash:net,port hash:net,port,net

这里仅使用简单的实例展示firewalld的具体应用,希望能更好理解firewall-cmd语法,通过查看帮助(firewall-cmd --help),才能非常全面的了解各种选项、参数具体功能,并在实际应用中得心应手。

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值