iptables 一共有 3 张表:mangle,nat,filter

mangle 表主要处理 ttl,tos,mark 等信息(进)

filter 顾名思义就是过滤器,用作防火墙(出)

nat 主要处理 ip、端口转换的信息

input chain

1)Chain INPUT (policy ACCEPT)
)target     prot opt source               destination         
)ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
)ACCEPT     icmp --  anywhere             anywhere                    
)ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
)ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http

chain:chain 就是要执行的防火墙操作的列表;

Chain INPUT:Ip 包发往本机的时候要进行的防火墙操作;

Chain FORWARD:目的地不是本机的时候,要进行的防火墙的操作;

Chain OUTPUT:本机发出的包需要进行的防火墙的操作;

Chain POSTROUTING:进入本机路由变换前进行的防火墙操作;

Chain QoSAppRule0:进行路由转换操作后进行的防火墙操作;

chain 还可以自定义新增 chain,自定义的 chain 由系统定义的 chain 里跳入,执行完后跳回原来的 chain

policy Accept :的意思是如果 Chain 中的所有条目都没有命中并执行,则默认 Accept放行

第3行 的意思是 匹配 连接的状态(什么是连接的状态?https://blog.csdn.net/jcxch/article/details/52536425)若连接的状态被防火墙判断为 related 或者 established 的话,就 Accept 放行。

related 指代某个已经放行的通讯相关联的端口通讯

establish 的意思是已经建立连接的话那么就放行(何为已经建立连接?就是本地发出去一堆信息,远程有回应信息   或者 远程发一堆信息 本地有回应信息)

第5行 如果是连接到 ssh 端口的 状态为 NEW 的连接,则放行(状态为 NEW 的意思是,发出去一堆信息,还没有收到回应  或者 收到一堆信息,还没有回应)

output chain

1)Chain OUTPUT (policy ACCEPT)
2)target     prot opt source               destination

第一行标明了如果没有匹配的规则,则放行,也就是说 本地总是可以发信息到外面,一旦发出去,那么连接就变成了 new 只要对方有回应 连接就变成 establish,在 input 的列表里 establish 是放行的

pkts:由规则或链所匹配到的报文的个数;

bytes:由规则或链匹配到的所有报文大小之和;

target :  处理机制;

prot: 协议:tcp, udp, icmp等,放行哪种协议;

opt :    额外的选项,--表示没有 ;

source :源地址

destination :目标地址

保存规则:

[root@test3~]#/etc/init.d/iptables save

保存规则至其他文件

[root@test3~]# iptables-save > /tmp/iptables

加载iptables文件规则

[root@test3~]# iptables-resotre < /tmp/iptables

显式扩展

在iptalbes中数据包和被跟踪连接的4种不同状态相关联,这四种状态分别是NEW、ESTABLISHED、RELATED及INVALID,除了本机产生的数据包由NAT表的OUTPUT链处理外,所有连接跟踪都是在NAT表的PREROUTING链中进行处理的,也就是说iptables在NAT表的PREROUTING链里从新计算所有数据包的状态。如果发送一个流的初始化数据包,状态就会在NAT表的OUTPUT链里被设置为NEW,当收到回应的数据包时,状态就会在NAT表的PREROUTING链里被设置为ESTABLISHED,如果第一个数据包不是本机生成的,那就回在NAT表PREROUTING链里被设置为NEW状态,所以所有状态的改变和计算都是在NAT表中的表链和OUTPUT链里完成的。

使用-m来指定其状态并赋予匹配规则,语法如下

-mstate --state 状态

NEW

ESTABLISHED

RELATED

INVALID

NEW:

NEW状态的数据包说明这个数据包是收到的第一个数据包。比如收到一个SYN数据包,它是连接的第一个数据包,就会匹配NEW状态。第一个包也可能不是SYN包,但它仍会被认为是NEW状态。

ESTABLISHED:

只要发送并接到应答,一个数据连接就从NEW变为ESTABLISHED,而且该状态会继续匹配这个连接后继数据包。

RELATED:

当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED,也就是说,一个连接想要是RELATED的,首先要有个ESTABLISHED的连接,这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是RELATED。

INVALID:

INVALID状态说明数据包不能被识别属于哪个连接或没有任何状态。

例:

对本机22端口做状态监测:

进来的请求状态为new,而出去的状态则为ESTABLISHED,如果自动连接别人 状态肯定为NEW,如果正常去响应别人那么状态肯定是ESTABLISHED

[root@test3~]# iptables -I INPUT -s 10.0.10.0/24 -d 10.0.10.62 -p tcp --dport 22 -m state--state NEW,ESTABLISHED -j ACCEPT

出口的响应都必须是ESTABLISHED

[root@test3~]# iptables -A OUTPUT -s 10.0.10.62 -d 10.0.10.0/24 -p tcp --dport 22 -m state--state ESTABLISHED -j ACCEPT

[root@test3~]# iptables -L -n

ChainINPUT (policy ACCEPT)

target     prot opt source               destination

ACCEPT     tcp --  10.0.10.0/24         10.0.10.62          tcp dpt:22 state NEW,ESTABLISHED

ChainFORWARD (policy DROP)

target     prot opt source               destination

ChainOUTPUT (policy ACCEPT)

target     prot opt source               destination

ACCEPT     tcp  -- 10.0.10.62          10.0.10.0/24        tcp dpt:22state ESTABLISHED

多端口规则匹配

使用参数-m multiport 可以指定15个以内的非连续端口,比如21-22,80

-mmulitport

--src-prots

--dst-ports

--prots

#对多端口进行匹配,只要匹配以下端口,则全部放行

[root@test3~]# iptables -A INPUT  -s 10.0.10.0/24 -d10.0.10.62 -p tcp -m state --state NEW  -m mulitport--destination-ports 21,22,80 -j ACCEPT

多IP匹配,指定匹配的IP地址范围:

-miprange

--src-range

--dst-range

指定匹配的连续ip段

[root@test3~]# iptables -A INPUT -s  -m iprange --src-range 10.0.10.100-10.0.10.200

指定速率匹配

默认为每秒匹配3个报文,基于令牌桶算法

-mlimit

--limit             #NUMBER,表示允许收集多少个空闲令牌

--limit-burst          #RATE,允许放行多少个报文

比如:ssh一分钟之内只能建立20个链接,平均5秒一个,而一次性只能放行2个空闲令牌

--limit 20/min

--limit-burst 2

只有在大量空闲令牌存储的情况下,才可有limit-burst控制

例:控制NEW状态的请求

[root@test3~]# iptables -A INPUT -s 10.0.10.0/24 -d 10.0.10.62 -m state --state NEW -mlimit --limit 12/min --limit 12/min --limit-burst 2 -j ACCEPT

例2:每次只允许2个ping包进来

[root@test3~]# iptables -F

[root@test3~]# iptables -A INPUT -s 10.0.10.0/24 -d 10.0.10.62 -p icmp --icmp-type 8 -mlimit --limit 20/min --limit-burst 5 -j ACCEPT

新建立一终端,在其终端ping10.0.10.62可以看到效果,不再演示

iptables 规则学习的更多相关文章

  1. iptables

    一.在服务器上打开 22.80.9011端口: iptables -A INPUT -p tcp --dport 9011 -j ACCEPT iptables -A OUTPUT -p tcp -- ...

  2. 浅谈iptables 入站 出站以及NAT实例

    --------------本文是自己工作上的笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!--------------- iptbales默认ACCEPT策略,也称通策略,这种情况下可以做 ...

  3. Failed to stop iptables.service: Unit iptables.service not loaded.

    redhat 7 [root@lk0 ~]# service iptables stop Redirecting to /bin/systemctl stop iptables.service Fai ...

  4. CentOS7安装iptables防火墙

    CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables service iptables st ...

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

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

  6. CentOS系统配置 iptables防火墙

    阿里云CentOS系统配置iptables防火墙   虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FO ...

  7. /etc/sysconfig/下找不到iptables文件解决方法

    时间:2014-12-19 01:17来源:csdn 作者:大智 举报 点击:5639次 本想做些防火墙策略.防火墙策略都是写在/etc/sysconfig/iptables文件里面的.可我发现我也没 ...

  8. docker通过iptables修改或新增镜像映射端口

    443 8088 22 端口是初始映射端口 [root@SERVER ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAM ...

  9. lnmp 预设iptables设置

    「LNMP」iptables初始配置   首先使用命令iptables -P INPUT ACCEPT允许所有连接,否则容易把自己关在外边.然后使用iptables -F;iptables -X;ip ...

随机推荐

  1. winform窗口关闭,进程没有关掉的解决办法

    /// <summary> /// 窗口关闭删除所有活动线程 /// </summary> /// <param name="sender">& ...

  2. 基于redis+lua实现高并发场景下的秒杀限流解决方案

    转自:https://blog.csdn.net/zzaric/article/details/80641786 应用场景如下: 公司内有多个业务系统,由于业务系统内有向用户发送消息的服务,所以通过统 ...

  3. API开放平台基于accessToken实现

    A企业和B企业要进行合作时,A要开放api接口给B调用,这时候A可以采用基于accessToken的方式实现开放api接口 数据库表设计 B调用方式 B企业调用接口前先获取accessToken ht ...

  4. UML交互图

    UML 交互图主要包括对象和消息两类元素,创建交互图的过程实际上就是向对象分配任务的过程,是可视化系统的交互行为. UML 交互图包括两种:序列图和协作图. 序列图:显示对象之间的关系,强调对象之间消 ...

  5. django+uWSGI+nginx的工作原理流程与部署过程

    django+uWSGI+nginx的工作原理流程与部署过程 一.前言 知识的分享,不应该只是展示出来,还应该解释这样做是为什么... 献给和我一样懵懂中不断汲取知识,进步的人们. 授人与鱼,不如授人 ...

  6. 关于一致性hash,这可能是全网最形象生动最容易理解的文档,想做架构师的你来了解一下

    问题提出 一致性hash是什么?假设有4台缓存服务器N0,N1,N2,N3,现在需要存储数据OBJECT1,OBJECT2,OBJECT3,OBJECT4,OBJECT5,OBJECT5,OBJECT ...

  7. t100 常用公用變數

    g_enterprise 目前的企業代碼,將限制使用者所能閱讀的資料內容g_prog 目前執行的作業編號,用於變換畫面顯示資料與產生系統資訊,不可變更g_code 目前執行的程式代碼(4gl)名稱,不 ...

  8. FMX 隐藏任务栏 xe10

    找了好多信息,测试好些,xe10  隐藏只要以下命令 隐藏 ShowWindow(ApplicationHWND, SW_HIDE); 显示 ShowWindow(ApplicationHWND, S ...

  9. 【Maven基础入门】01 Maven的安装与环境变量的配置

    写在前面: Mavne,作为一个优秀的项目构建工具,虽说我们平时在使用的时候或多或少的会使用到它,但了解仅限于它能构建项目,然后其他的就不知道了. 以及仓库.POM父类文件.等等. 工欲善其事,必先利 ...

  10. ubuntu中安装python3和pip

    python3: 在ubuntu的包中,python的二代和三代版本的命名:二代:python,三代:python3 安装python3: sudo apt install python3 同理:pi ...