您好,欢迎来到站长目录(28sn.com)!


简述iptales四表五链及详细介绍iptables命令使用方法

来源:网络整理 浏览:426次 时间:2019-12-06
简述iptales四表五链及详细介绍iptables命令使用方法
  1. 简述iptables四表五链
    (1)四表
       filter:过滤规则表,根据定义的规则过滤符合条件的数据包   nat表:network address translation 地址转换规则表   mangle:修改数据标记规则表   raw:关闭nat表上启动的连接跟踪制,加快封包穿越防火墙的速度

    (2)五chain(链)

    INPUTOUTPUTFORWARDPREROUTINGPOSTROUTING

    (3)表<-->链的关系

    raw:PREROUTING, OUTPUTmangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTINGnat:PREROUTING,[INPUT,]OUTPUT,POSTROUTINGfilter:INPUT,FORWARD,OUTPUT

    (4)内核中数据包的传输过程:

     当一个数据包进入网卡时,数据包首先进入 PREROUTING链,内核根据数据包目的IP判断是否需要转送出去 如果数据包就是进入本机的,数据包就会沿着图向下移动,到达INPUT链,数据包到达INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包OUTPUT链,然后到达POSTROUTING链输出 如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出
  2. 详细介绍iptables命令使用方法:
    (1)规则格式:
    iptables [-t table] COMMAND chain [-m matchname [per-match-options]] -j targetname [per-target-options]

    -t table:    raw, mangle, nat, [默认为:filter]
    (2)COMMAND:(a)链管理:    -N:new, 自定义一条新的规则链;    -X: delete,删除自定义的规则链;            注意:仅能删除 用户自定义的 引用计数为0的 空的 链;    -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:           ACCEPT:接受           DROP:丢弃           REJECT:拒绝    -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除;(b)规则管理:    -A:append,追加;    -I:insert, 插入,要指明位置,省略时表示第一条;    -D:delete,删除;        (1) 指明规则序号;        (2) 指明规则本身;    -R:replace,替换指定链上的指定规则;    -F:flush,清空指定的规则链;    -Z:zero,置零;        iptables的每条规则都有两个计数器:            (1) 匹配到的报文的个数;            (2) 匹配到的所有报文的大小之和;           (2) 匹配到的所有报文的大小之和;        (c)查看:-L:list, 列出指定鏈上的所有规则;    -n:numberic,以数字格式显示地址和端口号;    -v:verbose,详细信息;        -vv, -vvv    -x:exactly,显示计数器结果的精确值;    --line-numbers:显示规则的序号;
    (3)chain:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
    (4)匹配条件:(a)基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;       [!] -s, --source  address[/mask][,...]:检查报文中的源IP地址是否符合此处指定的地址或范围;       [!] -d, --destination address[/mask][,...]:检查报文中的目标IP地址是否符合此处指定的地址或范围         所有地址:0.0.0.0/0      [!] -p, --protocol protocol         protocol: tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh or  "all",{tcp|udp|icmp}      [!] -i, --in-interface name:数据报文流入的接口;只能应用于数据报文流入的环节,           只能应用于PREROUTING,INPUT和FORWARD链;      [!] -o, --out-interface name:数据报文流出的接口;只能应用于数据报文流出的环节,           能应用于FORWARD、OUTPUT和POSTROUTING链
    (b)扩展匹配条件:隐式扩展:在使用-p选项指明了特定的协议时,无需再同时使用-m选项指明扩展模块的扩展机制;不需要手动加载扩展模块;因为它们是对协议的扩展,所以,但凡使用-p指明了协议,就表示已经指明了要扩展的模块;  (1) tcp:       [!] --source-port, --sport port[:port]:匹配报文的源端口;可以是端口范围;       [!] --destination-port,--dport port[:port]:匹配报文的目标端口;可以是端口范围;       [!] --tcp-flags  mask  comp                mask is the flags which we should examine,  written as a comma-separated list,例如 SYN,ACK,FIN,RST            comp is a comma-separated list  of  flags  which must be set,例如SYN            例如:“--tcp-flags  SYN,ACK,FIN,RST  SYN”表示,要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0;       [!] --syn:用于匹配第一次握手,相当于”--tcp-flags  SYN,ACK,FIN,RST  SYN“;   (2)udp:       [!] --source-port, --sport port[:port]:匹配报文的源端口;可以是端口范围;       [!] --destination-port,--dport port[:port]:匹配报文的目标端口;可以是端口范围;   (3)icmp:       [!] --icmp-type {type[/code]|typename}            echo-request:8            echo-reply:0显式扩展:必须要手动加载扩展模块, [-m matchname [per-match-options]];    (1)multiport      This  module  matches  a  set  of  source  or  destination  ports. Up  to 15 ports can be specified.  A port range (port:port) counts as two ports.  It can only be used in conjunction with one of the following protocols: tcp,  udp, udplite, dccp and sctp.      以离散或连续的 方式定义多端口匹配条件,最多15个;       [!] --source-ports,--sports port[,port|,port:port]...:指定多个源端口;       [!] --destination-ports,--dports port[,port|,port:port]...:指定多个目标端口;       # iptables -I INPUT  -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -j ACCEPT    (2)iprange,指明连续的(但一般不是整个网络)IP地址范围      以连续地址块的方式来指明多IP地址匹配条件;       [!] --src-range from[-to]       [!] --dst-range from[-to]       # iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -m iprange --src-range 172.16.0.61-172.16.0.70 -j REJECT    (3)mac扩展       指明源MAC地址       适用于:PREROUTING,FORWARD,INPUT chains       [!]--mac-source XX:XX:XX:XX:XX:XX     (4)time扩展        This  matches  if the packet arrival time/date is within a given range.         --timestart hh:mm[:ss]         --timestop hh:mm[:ss]         [!] --weekdays day[,day...]         [!] --monthdays day[,day...]         --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]          --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]         --kerneltz:使用内核配置的时区而非默认的UTC;     (5)string扩展          This modules matches a given string by using some pattern matching strategy.        --algo {bm|kmp} 字符匹配算法        [!] --string pattern  要检测的字符串模式        [!] --hex-string pattern 要检测字符串模式,16机制格式       --from offset 开始偏移       --to offset  结束偏移       ~]# iptables -I OUTPUT -m string --algo bm --string "gay" -j REJECT    (6)connlimit:根据每客户端IP做并发连接数数量匹配                可防止CC(Challenge Collapsar挑战黑洞)      Allows  you  to  restrict  the  number  of parallel connections to a server per client IP address (or client address block).      --connlimit-upto n:连接的数量小于等于n时匹配      --connlimit-above n:连接的数量大于n时匹配       ~]# iptables -I INPUT -d 172.16.0.7 -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j REJECT    (7)limit,基于收发报文的速率做匹配,令牌桶过滤器       This  module  matches  at  a limited rate using a token bucket filter.       --limit rate[/second|/minute|/hour|/day]       --limit-burst number       ~]iptables -I INPUT -d 172.16.0.67 -p icmp --icmp-type 8 -m limt --limt-brust 5 --limit 20/minute -j ACCEPT       ~]# iptables -I OUTPUT -s 172.16.0.7 -p icmp --icmp-type 0 -j ACCEPT       限制本机某tcp服务接收新请求的速率:--syn, -m limit    (8)state       根据"连接追踪机制"去检查连接的状态,较耗资源       conntrack机制:追踪本机上的请求和响应之间的关系       [!] --state state           INVALID, ESTABLISHED, NEW, RELATED or UNTRACKED.           NEW: 新连接请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求           ESTABLISHED:已建立的连接,NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态           INVALID:无法识别的连接,如flag标记不正确           RELATED:相关联的连接,当前连接是一个新请求,但附属于某个已存在的连接;新发起的但与已有的连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系           UNTRACKED:未追踪的连接;如raw表中关闭追踪           iptables -A OUTPUT -s 172.20.11.58 -m state --state ESTABLISHED -j ACCEPT           iptables -I INPUT -d 172.20.11.58 -m state --state ESTABLISHED -j ACCEPT           iptables -A INPUT  -d 172.20.11.58 -p tcp -m multiport --dports 22,80,139,445,3306 -m state --state NEW -j ACCEPT           iptables -A OUTPUT -s 172.20.11.58 -j REJECT           iptables -A INPUT -d 172.20.11.58 -j REJECT           iptables -R  OUTPUT 2 -s 172.20.11.58 -p udp -m multiport --dports 123,323 -m state --state NEW -j ACCEPT            state扩展:               内核模块装载:                  nf_conntrack                  nf_conntrack_ipv4               手动装载:                  modprode nf_conntrack_ftp             追踪到的连接,已经追踪到的并记录下来的连接信息库                    /proc/net/nf_conntrack             调整连接追踪功能所能够容纳的最大连接数量                     /proc/sys/net/nf_conntrack_max             超时时长:                   /proc/sys/net/netfilter/*timeout*              centos7需要加载模块:                    modprode nf_conntrack         iptables的链接跟踪表最大容量为/proc/sys/net/nf_conntrack_max,各种状态的超时链接会从表中删除,当模板满载时,后续连接可能会超时,         解决方法两个:              (1)加大nf_conntrack_max的值                 vim /etc/sysctl.conf                 net.nf_conntrack_max=393216                 net.netfilter.nf_conntrack_max=393216              (2)降低nf_conntrack timeout时间                 vim /etc/sysctl.conf                 net.netfilter.nf_conntrack_tcp_timeout_established=300                 net.netfilter.nf_conntrack_tcp_timeout_wait=120                 net.netfilter.nf_conntrack_tcp_close_wait=60                 net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120

    (3)处理动作:

    -j targetname [per-target-options]    ACCEPT    DROP扩展target:    REJECT:       This is used to send back an error packet in response to the matched packet: otherwise it is equivalent to  DROP  so it  is  a  terminating  TARGET,  ending  rule traversal.        --reject-with type        The type given can be icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreach‐ able, icmp-net-prohibited, icmp-host-prohibited, or icmp-admin-prohibited (*), which return  the  appropriate ICMP  error  message (icmp-port-unreachable is the default).     LOG:          Turn  on  kernel  logging of matching packets.         --log-level        --log-prefix        默认日志保存于/var/log/messages     RETURN:          返回调用者;一般在自定义上使用           自定义链做为target:-j 调用

推荐站点

  • 我爱发烧音乐我爱发烧音乐

    我爱发烧音乐囊括了从流行音乐到古典音乐多个类型的音乐作品,专栏推荐最新的音乐,提供音乐排名榜单!可供免费线上收听音乐,歌曲流畅,音效极佳! 网站提供的钢琴以及二胡专栏,可供收听者,陶冶情操,改善心情,是难得的轻音乐典藏!

    www.520fs.com
  • 世纪音乐网世纪音乐网

    世纪音乐网是专业的在线音乐试听MP3下载网站。歌曲总计30余万首,收录了网上最新歌曲和流行音乐,DJ舞曲,非主流音乐,经典老歌,劲舞团歌曲,搞笑歌曲,儿童歌曲,英文歌曲等。是您上网听歌的最佳网站。

    www.ssjj.com
  • 怒江大峡谷网怒江大峡谷网

    怒江大峡谷网内容包括:新闻、要闻、怒江报、视频、文化、民俗、人文、音乐、政务、公告、政策等地方信息。

    www.nujiang.cn
  • 杭州网杭州网

      杭州网是杭州地区唯一的新闻门户网站,由中共杭州市委宣传部、杭州日报报业集团和杭州广播电视集团共同组建的杭州网络传媒有限公司运营。

    www.hangzhou.com.cn
  • 深圳在线深圳在线

      深圳在线 www.szol.net是深圳本地最大、最早的地方生活资讯网站之一,网站名“深圳在线www.szol.net”由南方报业传媒集团编辑委员会总编辑、南方日报社总编辑、南方都市报总编辑、南方书画院名誉院长王春芙亲笔题名,深圳在线www.szol.net团队与深圳热线www.szonline.net、奥一网www.oeeee.com都源于全国最早成立于1996年的知名网络公司——深圳万用网。

    www.szol.net

鄂公网安备 42062502000001号