首页 运维 正文
iptables的基础知识-iptables规则

 2022-10-23    348  

  iptables规则是如何练成的

  iptables规则就是指向标,在一条链上,对不同的连接和数据包阻塞或允许它们去向何处。插入链的每一行都是一条iptables规则。我们也会讨论基本的matche及其用法,还有各种各样的target,以及如何建立我们自己的target(比如,一个新的子链)。

iptables的基础知识-iptables规则

  我们已经解释了什么是iptables规则,在内核看来,iptables规则就是决定如何处理一个包的语句。如果一个包符合所有的条件(就是符合matche语句),我们就运行target或jump指令。书写iptables规则的语法格式是:

  iptables[-ttable]command[match][target/jump] 
  •   对于这个句法没什么可说的,但注意target指令必须在***。为了易读,我们一般用这种语法。总之,你将见到的大部分iptables规则都是按这种语法写的。因此,如果你看到别人写的iptables规则,你很可能会发现用的也是这种语法,当然就很容易理解那些iptables规则了。

      如果你不想用标准的表,就要在[table]处指定表名。一般情况下没有必要指定使用的表,因为iptables 默认使用filter表来执行所有的命令。也没有必要非得在这里指定表名,实际上几乎可在iptables规则的任何地方。当然,把表名在开始处已经是约定俗成的标准。

      尽管命令总是放在开头,或者是直接放在表名后面,我们也要考虑考虑到底放在哪儿易读。command告诉程序该做什么,比如:插入一个iptables规则,还是在链的末尾增加一个iptables规则,还是删除一个iptables规则,具体的可以参考iptables的手册。

      match细致地描述了包的某个特点,以使这个包区别于其它所有的包。在这里,我们可以指定包的来源IP 地址,网络接口,端口,协议类型,或者其他什么。下面我们将会看到许多不同的match。

      ***是数据包的目标所在。若数据包符合所有的match,内核就用target来处理它,或者说把包发往 target。比如,我们可以让内核把包发送到当前表中的其他链(可能是我们自己建立的),或者只是丢弃这个包而没有什么处理,或者向发送者返回某个特殊的应答。

      一个测试脚本

      Client-----------------------àserver(webserver,dns) 
  •   192.168.10.7192.168.55.55
  •   #实验环境,redhat7.1
  •   #iptablesv1.2.1.a
  •   #客户机:192.168.10.7
  •   #linux:192.68.55.55安装apache,dns
  •   #清除所有iptables规则
  •   iptables-F
  •   #setpolicy
  •   #设置默认策略,均为删除
  •   iptables-PINPUTDROP
  •   iptables-POUTPUTDROP
  •   iptables-PFORWARDDROP
  •   #addchains
  •   #加入自定义链
  •   iptables-Nbad_tcp_packets
  •   iptables-Nallowed
  •   iptables-Ntcp_packets
  •   iptables-Nudp_packets
  •   #badtcp
  •   #对坏包的处理为reset,和扫描等有关
  •   iptables-Abad_tcp_packets-ptcp--tcp-flagsSYN,ACKSYN,ACK-mstate--stateNEW-jREJECT--reject-withtcp-reset
  •   #一个新包,SYN不置位,因此不是一个正常的连接请求,删除
  •   iptables-Abad_tcp_packets-ptcp!--syn-mstate--stateNEW-jDROP
  •   #allowchain
  •   #正常的TCP包都允许,其他的都删除
  •   iptables-Aallowed-ptcp-mstate--stateNEW,ESTABLISHED,RELATED-jACCEPT
  •   iptables-Aallowed-ptcp-jDROP
  •   #tcproles
  •   #TCP链的处理,允许WEB服务
  •   iptables-Atcp_packets-ptcp-s0/0--dport80-jallowed
  •   #udproles
  •   #UDP链的处理,允许DNS
  •   iptables-Audp_packets-pudp-s0/0--dport53-jACCEPT
  •   #所有进入的包先检查是否正常,然后转到TCP,UDP进行处理
  •   #192.168.10.7是网管机,允许该机的ICMP
  •   iptables-AINPUT-ptcp-jbad_tcp_packets
  •   iptables-AINPUT-ptcp-jtcp_packets
  •   iptables-AINPUT-pudp-judp_packets
  •   #允许来自192.168.10.7发起ICMP的请求
  •   iptables-AINPUT-picmp-s192.168.10.7-mstate--stateNEW,ESTABLISHED,RELATED-jACCEPT
  •   #本机ICMP请求包返回时,进入INPUT,所以状态是ESTABLISHED,RELATED
  •   #允许从本机往外发ICMP的请求包
  •   iptables-AOUTPUT-picmp-mstate--stateNEW,ESTABLISHED,RELATED-jACCEPT
  •   #HTTP的请求收到后允许出去,所以状态是ESTABLISHED,RELATED
  •   #当然还有DNS的UDP包
  •   iptables-AOUTPUT-ptcp-mstate--stateESTABLISHED,RELATED-jACCEPT
  •   iptables-AOUTPUT-pudp-mstate--stateESTABLISHED,RELATED-jACCEPT
  •   

    原文链接:https://77isp.com/post/8134.html

    =========================================

    https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。