iptables编写规则

 

    • [-t 表名]:该规则所操作的哪个表,可以使用filter、nat等,如果没有指定则默认为filter
    • -A:新增一条规则,到该规则链列表的最后一行
    • -I:插入一条规则,原本该位置上的规则会往后顺序移动,没有指定编号则为1
    • -D:从规则链中删除一条规则,要么输入完整的规则,或者指定规则编号加以删除
    • -R:替换某条规则,规则替换不会改变顺序,而且必须指定编号。
    • -P:设置某条规则链的默认动作
    • -nL-L-n,查看当前运行的防火墙规则列表
    • chain名:指定规则表的哪个链,如INPUT、OUPUT、FORWARD、PREROUTING等
    • [规则编号]:插入、删除、替换规则时用,--line-numbers显示号码
    • [-i|o 网卡名称]:i是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出
    • [-p 协议类型]:可以指定规则应用的协议,包含tcp、udp和icmp等
    • [-s 源IP地址]:源主机的IP地址或子网地址
    • [--sport 源端口号]:数据包的IP的源端口号
    • [-d目标IP地址]:目标主机的IP地址或子网地址
    • [--dport目标端口号]:数据包的IP的目标端口号
    • -m:extend matches,这个选项用于提供更多的匹配参数,如:

      • -m state --state ESTABLISHED,RELATED
      • -m tcp --dport 22
      • -m multiport --dports 80,8080
      • -m icmp --icmp-type 8
    • <-j 动作>:处理数据包的动作,包括ACCEPT、DROP、REJECT等

规则链

  • INPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则。
  • OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。
  • FORWARD链:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用此链中的规则。
  • PREROUTING链:在对数据包作路由选择之前,应用此链中的规则,如DNAT。
  • POSTROUTING链:在对数据包作路由选择之后,应用此链中的规则,如SNAT。

防火墙处理数据包的方式:

  • ACCEPT:允许数据包通过
  • DROP:直接丢弃数据包,不给任何回应信息
  • REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息。

  • SNAT:源地址转换。在进入路由层面的route之前,重新改写源地址,目标地址不变,并在本机建立NAT表项,当数据返回时,根据NAT表将目的地址数据改写为数据发送出去时候的源地址,并发送给主机。解决内网用户用同一个公网地址上网的问题。
    MASQUERADE,是SNAT的一种特殊形式,适用于像adsl这种临时会变的ip上

  • DNAT:目标地址转换。和SNAT相反,IP包经过route之后、出本地的网络栈之前,重新修改目标地址,源地址不变,在本机建立NAT表项,当数据返回时,根据NAT表将源地址修改为数据发送过来时的目标地址,并发给远程主机。可以隐藏后端服务器的真实地址。
    REDIRECT:是DNAT的一种特殊形式,将网络包转发到本地host上(不管IP头部指定的目标地址是啥),方便在本机做端口转发。

  • LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

除去最后一个LOG,前3条规则匹配数据包后,该数据包不会再往下继续匹配了,所以编写的规则顺序极其关键。

原文地址:https://www.cnblogs.com/yuyutianxia/p/7943036.html