iptables学习day-02

来源:互联网 发布:vscode 修改字体颜色 编辑:程序博客网 时间:2024/06/11 17:52

这篇我整理了iptables的扩展匹配条件

扩展匹配条件:分为隐式扩展和显示扩展

    隐式扩展:

        --source-port 或 --sport:匹配报文的源端口

        --dport:匹配报文的目的端口

        tcp的协议扩展:

        --tcp-flags mask comp:表示要检查的标志

            mask {SYN, ACK, FIN, RST}

       --syn:用于匹配第一次握手,相当于--tcp-flags SYN,ACK,FIN,RST SYN

       

例子:

    1.限制172.25.254.167访问主机172.25.254.111的ssh服务

        iptables -A INPUT -s 172.25.254.167 -d 172.25.254.111 -p tcp --dport 22 -j DROP

        udp的协议扩展:

        --sport

        --dport

        icmp的协议扩展:

        --icmp-type

             echo-request 8(别人ping自己被限制)

             echo-reply 0(自己ping别人被限制)

例子

    2.限制任何人ping自己

        iptables -A INPUT -d 172.25.254.111 -p icmp --icmp-type 8 -j DROP

    显示扩展:需要显示的指明使用的扩展模块

    rpm -ql iptables(可以看到好多的.so文件,这就是规则扩展模块)

    显示扩展必须要显示的指明使用的扩展的模块

        现在整理了几个常用的扩展模块(可以通过man iptables-extension获得扩展模块的使用帮助)

            1.multiport扩展   (以离散方式定义多端口的配置,最多15个端口)

                 --sports 端口号,端口号

                 --dports

例子

1.禁止172.25.254.167对172.25.254.111的ftp 以及web进行连接

    iptables -A INPUT -s 172.25.254.167 -d 172.25.254.111 -p tcp -m multiport --dports 22,80 -j DROP

            2.iprange扩展    (指明连续的ip地址的范围,但注意不能是整个网段)

                --src-range 源ip地址范围

                --des-range 目标ip地址的范围

例子

丢弃ip地址在172.25.254.167到172.25.254.169范围的地址通过tcp协议访问主机172.25.254.111上的80端口

1.iptables -A INPUT -d 172.25.254.111 -p tcp --dport 80 -m iprange --src-range 172.25.254.167-172.15.254.169 -j DROP

            3.string扩展   (注意这里要放在OUTPUT上)

            注意:这个扩展是对发来的报文的应用层数据进行字符串的匹配工作的(前面我们说过firewall由于其设置防火墙的位置必须在内核的特定的位置,所以不能识别应用层的包头信息,就不能对应用层的协议包进行过滤,但是这个string扩展模块可以对应用层的数据进行处理)

                 --algo {bm | kmp}   (字符串匹配算法规则)     

                 --string pattern         (要检查的字符串)

  例子

拒绝172.25.254.167主机发送的报文的应用层数据有boy这个字符的报文通过tcp协议连接172.25.254.111主机的80端口

1.iptables -A OUTPUT -s 172.25.254.167 -d 172.25.254.111 -p tcp --sport 80 -m string --algo bm --string "boy"  -j   REJECT

            4.time扩展  (将报文到达的时间与指定的时间比较进行匹配)

            可以用来设置在某个时间段内不能访问服务器

            指定日期起止范围

            --datastart

            --datastop

            指定时间起止范围

            --timestart

            --timestop

            指定星期--weekdays

            指定月份--monthdays

例子

172.25.254.111的web服务在每周六周末的下午14:30---18:30不允许172.25.254.167访问

iptables  -A  INPUT  -s 172.25.254.167  -d  172.25.254.111  -p tcp --dport 80 -m time --timestart 14:30  --timestop  18:30  --weekdays Sat,Sun  -j  DROP

注意:有可能达不到想要的效果,因为内核上用的时间是我们安装系统配置的什么时区上的时间,而这里默认的时间是UTC时间,因此给上面的例子加上--kerneltz即可。

            5.connlimit扩展   (用来作并发连接数量的匹配)

            --connlimit-upto   n  (连接的数量小于等于n时匹配)

            --connlimit-above   n  (连接的数量大于n是匹配)

            6.limit扩展     (基于收发报文的速率做匹配)

            --limit   rate{/second/minute/hour/day}    (速率限制)

            --limit-burst number   (限定峰值数量)

例子

一分钟只允许ping操作3次,第一次峰值发送5个包

iptables -A INPUT -d 172.25.254.111 -p icmp --icmp-type 8 -m limit --limit 3/minute --limit-burst 5 -j ACCEPT

其中--icmp-type 8(意思是只限制别人ping自己)

--limit 3/minute(一分钟内只能ping通3次就,其他都被拒决)[这里如果要使其他的都被拒绝,则要设置默认的匹配规则是拒绝,可以通过这个来设置iptables -p INPUT DROP]

--limit-burst 5(第一次的ping能接收5个包,但是第二次,第三次ping时就只能接收1个ping包)

            7.state扩展   (连接追踪机制)

             可以用来检查连接的状态

             --state  state

                 那么这里的state(状态)都有哪些

                  NEW:新请求,第一次发出的请求

                  ESTABLISHED:new状态后以及条目失效之前期间内进行的通信状态

                  RELATED:相关的连接 

                  LNVALID:无效的连接

例子:

想一想,凡是从服务器的80端口发出来的包只能是对客户端的请求的响应,而不是去主动的连接客户端

iptables -A INPUT -d 172.25.254.111 -p tcp -m multiport --dports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -p INPUT DROP

iptables -p OUTPUT DROP

iptables -A OUTPUT -s 172.25.254.111 -p tcp -m multiport --dports 22,80 -m state --state ESTABLISHED -j ACCEPT

上面的4条语句就能完成上面提出的问题,

第一条,服务器172.25.254.111接收所有客户端发给自己22和80端口的包

第二,三条,设置INPUT  OUTPUT默认的规则 为DROP

第四条,服务器172.25.254.111只能够发出给客户端响应的包,而不能主动发送包给客户端(这里的state状态是ESTABLISHED则可以表示客户端是于服务器处于连接的状态,那么服务器给客户端发包只能是响应客户端的请求)

可能这里我解释的有点不好理解。请耐心的看。          

       

   

            


   

0 0
原创粉丝点击