记录分享邓杰律师从事网络技术工作点点滴滴。
编者按:IPSET重启会消失创建ipset((hash:net包括ip段,hash:ip仅含单个ip)ipset create badlist hash:net删除ipsetipset destroy badlist指定ipset容量。默认可以存储65536个元素ipset create badlist hash:ip maxelem 10000003.加入一个ip或者IP段ipset add badlist 10.20.30.0/24ipset add badlist 183.46.194.1074.去除名
一、了解iptables和IPSET基本背景知识
iptables 是 Linux 系统中用于配置和管理网络数据包过滤规则,控制流量的进出。它使用链(chains)和规则(rules)的概念,基于数据包的源地址、目标地址、端口等信息进行过滤和转发。ipset 是一个用于管理大规模 IP 地址集合的工具,它提供了高效的数据结构和命令行接口,用于存储和操作 IP 地址、网络和端口的集合。它与 iptables 结合使用,可以更高效地过滤和匹配数据包,提供优化性能和灵活性的防火墙规则管理方案。
ipset 和 iptables 通常结合使用,通过将 ipset 创建的 IP 地址集合与 iptables 结合,可以更快速地进行 IP 地址过滤和匹配操作。iptables 规则可以引用 ipset 的集合名称,从而将这些集合中的 IP 地址应用于具体的过滤规则。使用 ipset 可以实现对 IP 地址的分组、分类和管理,而 iptables 提供了对数据包的详细控制和过滤功能。结合使用 ipset 和 iptables,可以更灵活和高效地管理大规模的 IP 地址集合和防火墙规则,提供更好的网络安全保护。
相关链接:
https://zhuanlan.zhihu.com/p/580178712?utm_id=0
————————————
iptables和IPSET保存在内存中,重启会消失
————————————
二、查看了解iptables和ipset现状情况。
iptables -V
查看iptables默认规则(查看iptables默认规则,发现在默认规则下,INTPUT链允许来自任何主机的访问。)
iptables -L
查看当前服务器已创建的所有ipset
ipset list
查看当前服务器已创建的指定ipset
ipset list badlist
三、对iptables和ipset进行个性化定制。
(一)创建设置ipset规则。
创建ipset((hash:net包括ip段,hash:ip仅含单个ip)
ipset create badlist hash:net
ipset create badlist hash:ip
指定ipset容量。默认可以存储65536个元素
ipset create badlist hash:ip maxelem 1000000
删除某个ipset
ipset destroy badlist
删除所有ipset
ipset destroy
加入一个ip或者IP段
ipset add badlist 183.46.194.107
ipset add badlist 10.20.30.0/24
··· ···
检测某个ip是否已经存在。
ipset test badlist 14.150.144.39
手动一个个添加非常慢,只能针对小量处理ip场景使用。
去除ipset中特定ip
ipset del badlist 10.20.30.12
配置好ipset后,需要及时保存,以防重启后丢失。
ipset save badlist -f /www/wwwroot/badlist.txt
(如果你有成百上千甚至上万的ip需要处理,可先对badlist.txt文件进行编辑处理后保存,然后再通过恢复ipset设置命令大批量导入IP。)
(二)创建设置iptables规则
针对ipset,在iptables中创建相应规则
iptables -I INPUT -m set --match-set badlist src -p tcp -j DROP
保存iptables设置
iptables-save > /etc/sysconfig/iptables
四、服务器重启后,如何恢复iptables和ipset相关设置
————————————
如果iptables中包含有ipset,则iptables对ipset存在依赖关系。无论是手动恢复还是自动恢复,ipset设置恢复必须在前,iptables设置恢复必须在后,才能把两者全部恢复。如果您颠倒了顺序,把iptables设置恢复放在前,则恢复iptables设置将因为没有先恢复ipset设置依赖而失败。
————————————
(一)手动恢复方案
手动恢复ipset设置(必须在前)
ipset restore -f /www/wwwroot/badlist.txt
手动恢复iptables设置(必须在后)
iptables-restore < /etc/sysconfig/iptables
(二)自动恢复方案
利用开机自启文件为/etc/rc.d/rc.local自动恢复ipset和iptables设置
编辑开机自启文件为/etc/rc.d/rc.local并在其末尾处添加两行代码
ipset restore -f /www/wwwroot/badlist.txt
iptables-restore < /etc/sysconfig/iptables
保存。
按照开机自启文件为/etc/rc.d/rc.local文件中提示给其赋予执行权限
chmod +x /etc/rc.d/rc.local
五、重启服务器查看是否生效。
————————
如何定时自动定时将/www/wwwroot/badip.txt中的ip导入到ipset中的badlist集合中(后续延伸,尚未验证,存在问题。)
可以使用批处理命令
for ip in $(cat /www/wwwroot/badip.txt); do ipset add badlist $ip; done
批量添加有重复时自动略过继续添加
ipset -exist add badlist 14.150.144.39
批量添加有重复时自动终止,提示有重复。
ipset add badlist 14.150.144.39

专注执业领域事务
全力办理委托事项
扎实维护合法权益

邓杰律师电话:13715198118
请输入您的联系电话,座机请加区号
