iptables介绍

Iptables是在linux内核里配置防火墙规则的用户空间工具,它实际上是netfilter框架的一部分.可能因为iptables是netfilter框架里最常见的部分,所以这个框架通常被称为iptables,iptables是linux从2.4版本引入的防火墙解决方案.

ipset介绍

Ipset是iptables的扩展,它允许你创建 匹配整个地址sets(地址集合) 的规则。而不像普通的iptables链是线性的存储和过滤,ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找.

除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置.

官网:http://ipset.netfilter.org/

前期需要知道的

关于 iptables,要知道这两点。

iptables 包含几个表,每个表由链组成。

默认的是 filter 表,最常用的也是 filter 表,另一个比较常用的是 nat 表。一般封 IP 就是在 filter 表的 INPUT 链添加规则。

在进行规则匹配时,是从规则列表中从头到尾一条一条进行匹配。

这像是在链表中搜索指定节点费力。ipset 提供了把这个 O(n) 的操作变成 O(1) 的方法:就是把要处理的 IP 放进一个集合,对这个集合设置一条 iptables 规则。像 iptable 一样,IP sets 是 Linux 内核中的东西,ipset 这个命令是对它进行操作的一个工具。

使用方法

ipset 安装

yum install ipset -y

ipset创建set

ipset create  banip hash:net

这里是创建一个名为 banip 的合集,以 hash 方式存储,存储内容是 IP/段 地址

储存类型可以有多种方式,后续有介绍

然后在这个合集里面添加需要封禁的 IP 或者 IP 段

ipset add banip 4.5.6.7    //单个 IP 地址

ipset add banip 4.5.6.0/24 //IP段

然后,这里需要注意一点,你现在添加的 IP 合集 banip 当服务器重启后,会消失,合集是临时的,所以需要执行以下命令进行持久化保存:

service ipset save

执行之后,保存在了/etc/sysconfig/ipset 下次重启自动调用,以后要加的时候IP直接加在 /etc/sysconfig/ipset 文件内就行

然后到这里ipset 安装,创建合集,添加 IP 和保存已经结束,并且已经运行中,接下来还有最后一步,在 iptables 里添加一个规则来调用这个合集

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

-m set –match-set banip src 主要是这段,调用了 banip,封禁的是80端口,只要在 banip 合集里的 IP 全部无法访问80端口

service iptables restart 重启 iptables

至此,全部配置就已经完成,添加到 banip 合集 里的 IP 无法访问80端口,并且后续添加 IP 的时候不需要重启iptables,立即生效

更多的 ipset 用法

存储类型

前面例子中的 banip 这个集合是以 hash net方式存储 IP 和 IP 段 地址,也就是以 网络段 为 hash 的键。除了 IP 地址,还可以是IP段,端口号(支持指定 TCP/UDP 协议),mac 地址,网络接口名称,或者上述各种类型的组合。

比如指定 hash:ip,port就是 IP 地址和端口号共同作为 hash 的键。查看 ipset 的帮助文档可以看到它支持的所有类型。

下面以两个例子说明。

ipset create  banip hash:ip

ipset add banip 6.7.8.9

ipset test banip 1.2.3.2

执行 ipset test banip 1.2.3.2 就会得到结果 1.2.3.2 is NOT in set banip.

注意,如果在 hash:ip 里添加 IP 段,会被拆分为这个 IP 段里所有的独立 IP 进行储存,如果是 IP 和 IP 段混合储存,建议使用 hash:net

hash:ip,port

ipset create banip hash:ip,port

ipset add banip 3.4.5.6,80

ipset add banip 5.6.7.8,udp:53

ipset add banip 1.2.3.4,80-86

第二条命令添加的是 IP 地址为 3.4.5.6,端口号是 80 的项。没有注明协议,默认就是 TCP,下面一条命令则是指明了是 UDP 的 53 端口。最后一条命令指明了一个 IP 地址和一个端口号范围,这也是合法的命令。

自动过期,解封

ipset 支持 timeout 参数,这就意味着,如果一个集合是作为黑名单使用,通过 timeout 参数,就可以到期自动从黑名单里删除内容。

ipset create banip hash:ip timeout 300

ipset add banip 1.2.3.4

ipset add banip 6.6.6.6 timeout 60

上面第一条命令创建了名为 banip 的集合,后面多加了 timeout 参数,值为 300,往集合里添加条目的默认 timeout 时间就是 300。第三条命令在向集合添加 IP 时指定了一个不同于默认值的 timeout 值 60,那么这一条就会在 60 秒后自动删除。

隔几秒执行一次 ipset list banip 可以看到这个集合里条目的 timeout 一直在随着时间变化,标志着它们在多少秒之后会被删除。

如果要重新为某个条目指定 timeout 参数,要使用 -exit 这一选项。

ipset -exist add banip 1.2.3.4 timeout 100

这样 1.2.3.4 这一条数据的 timeout 值就变成了 100,如果这里设置 300,那么它的 timeout,也就是存活时间又重新变成 300。

如果在创建集合是没有指定 timeout,那么之后添加条目也就不支持 timeout 参数,执行 add 会收到报错。想要默认条目不会过期(自动删除),又需要添加某些条目时加上 timeout 参数,可以在创建集合时指定 timeout 为 0。

合集支持更大条目!

hashsize, maxelem 这两个参数分别指定了创建集合时初始的 hash 大小,和最大存储的条目数量。

ipset create banip hash:ip hashsize 4096 maxelem 1000000

ipset add banip 3.4.5.6

这样创建了名为 banip 的集合,初始 hash 大小是 4096,如果满了,这个 hash 会自动扩容为之前的两倍。最大能存储的数量是 100000 个。

如果没有指定,hashsize 的默认值是 1024,maxelem 的默认值是 65536。

另外几条常用命令

ipset del banip x.x.x.x                     # 从 banip 集合中删除内容

ipset list banip                              # 查看 banip 集合内容

ipset list                                       # 查看所有集合的内容

ipset flush banip                            # 清空 banip 集合

ipset flush                                     # 清空所有集合

ipset destroy banip                        # 销毁 banip 集合

ipset destroy                                 # 销毁所有集合

ipset save banip >1.txt                    # 输出 banip 集合内容到1.txt

ipset save >1.txt                             # 输出所有集合内容到1.txt

ipset restore  <1.txt                         # 根据1.txt内容恢复集合内容

service ipset save                           #执行 add,del 这类添删操作后都需要保存

service ipset restart                       #重启ipset

php zhxing iptables,Linux iptables 扩展 ipset 使用教程相关推荐

  1. linux ftp iptables,linux – IPTABLES允许ssh,ftp,pop等从一个静态...

    这是我在/ etc / sysconfig / iptables中的设置: #start of my iptables # Generated by iptables-save v1.2.11 on ...

  2. linux iptables常用命令之配置生产环境iptables及优化

    在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...

  3. linux iptables详解

    1. 引言 CentOS 内置了一个非常强劲的防火墙,统称为 iptables,但更正确的名称是 iptables/netfilter.iptables 是一个用户空间的模块.作为用户,你在命令行就是 ...

  4. Linux iptables

    iptables:     Firewall:防火墙,是一种隔离工具,工作于主机或网络的边缘,对于进出本主机或网络的数据包,根据事先定义好的检测规则做匹配检测,如果匹配则做出相应的动作(接收.转发或丢 ...

  5. Linux iptables 防火墙相关命令介绍及使用

    一.  Linux 防火墙的启动和关闭 1.1 启动命令 [root@singledb ~]# service iptables stop Flushing firewall rules:       ...

  6. Linux iptables用法与NAT

    1.相关概念 2.iptables相关用法 3.NAT(DNAT与SNAT) 相关概念 防火墙除了软件及硬件的分类,也可对数据封包的取得方式来分类,可分为代理服务器(Proxy)及封包过滤机制(IP ...

  7. Linux Iptables 语法大全

    Linux Iptables 语法还是比较重要的,让我们来看看有些值得我们关注. 1. 对链的操作 建立一个新链 (-N). 删除一个空链 (-X). 改变一个内建链的原则 (-P). 列出一个链中的 ...

  8. Linux IPTABLES 防火墙专题讲座 - 下篇-龙小威-专题视频课程

    Linux IPTABLES 防火墙专题讲座 - 下篇-55人已学习 课程介绍         Linux IPTABLES 防火墙专题讲座 - 下篇,让学员熟练掌握IPTABLES ,并且深入理解结 ...

  9. Linux iptables 防火墙 添加删除 端口

    Linux iptables 防火墙 添加删除 端口 ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器 一 ...

最新文章

  1. Python基础学习!基本元素,数字,字符串以及变量
  2. 【学习笔记】19、模快(Module)
  3. 东师计算机应用基础18秋在线作业3答案,奥鹏东师计算机应用基础15秋在线作业3试卷及答案(4)...
  4. 【转】程序员健康建议
  5. 手机技巧:手机关掉这个开关,一下能省2G内存,再也不怕卡顿死机
  6. python的目的_Python-** wargs的目的和用途是什么?
  7. mongdb 模糊查询
  8. 详细讲解半加器、全加器、四位全加器,并使用FPGA实现半加器、全加器
  9. java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程
  10. 用一行python代码用openpyxl找到excel某一列的最大行数
  11. 两个无线路由器的连接(修订)
  12. 【一起去北碚玩吧】->【我们从北碚回来了】
  13. no source Theme.AppCompat.Light的解决方法
  14. 文件系统区别ntfs ext fat、mbr guid
  15. 在线制作网站sitemap并提交
  16. Pytest学习笔记(15)-allure之@allure.epic()、@allure.feature()和@allure.story()
  17. 企业WiFi管理解决方案
  18. html页面漏斗图,漏斗图 | JShare
  19. CME CMS ERROR错误代码
  20. python异步协程实战:wallhaven壁纸网站

热门文章

  1. 图形学必备!斯坦福图形学几何处理算法课程2——Shape Matching Correspondence
  2. 8183微型计算机,佳木斯大学12年微机原理复习题..doc
  3. 风口上的TikTok?
  4. CVPR2022车道线检测Efficient Lane Detection via Curve Modeling
  5. 白板机器学习笔记 P9-P12线性回归
  6. 【Java基本功】一文读懂final关键字的用法
  7. JavaScript创建对象几种形式
  8. python判断字符串,str函数isdigit、isdecimal、isnumeric的区别
  9. 【PE】手动给PE文件添加一段代码MessageBoxA
  10. 卡住 安装_【书中有路】弹簧式安全阀结构原理、故障解析、安装要点