zoukankan      html  css  js  c++  java
  • Iptables的规则语法

    (一)

    基本语法

    iptables-t filter -A INPUT -p icmp -j DROP

    高级语法

    iptables-t filter -A INPUT -m mac –mac-source 00:1C:23:3B:2E:B1 -j DROP

    区别高级语法与基本语法的不同:首先filter的机制是由iptables_filter.ko模块所提供的功能,而这个模块本身就已提供了一些简单的匹配的过滤方式,而所谓的基本语法是指只使用iptable_filter.ko模块自身所提供的功能。高级语法必须调用其它模块的功能。以高级语法的范例为例,“-mmac”就是告知iptables工具,我们要动用xt_mac.ko模块的功能,由于是调用其它的模块,因此,语法的部分将会随着不同的模块而有所改变,而且每一个模块的语法也不一样,这就是所谓的“高级语法”。

    举例1:将222.24.21.195送到本机的ICMP封包丢弃

    语法:iptables-A INPUT -p icmp -s 222.24.21.195 -j DROP

    语法解释:

    -AINPUT

    保护对象

    因为本范例所使用的是INPUTChain,故其保护的对象为本机

    -picmp

    原文

    -pProtocol(协议)

    目的

    匹配某个特定协议封包,本范例是匹配icmp的封包

    语法

    -p icmp-ptcp-pudp -p all

    -s222.24.21.195

    原文

    -s Source

    对应的参数

    -dDestination

    目的

    匹配封包中“来源”或“目的”端的IP

    语法

    -s222.24.21.195 -s www.baidu.com等,由例子可知,IP位置的表示方法可以用单一IP或标准的CID网段,至于QDN的部分,实际上iptables是把FQDN送至DNS去执行解析,最后加入到规则之中的还是IP

    -j

    目的

    JUMP

    语法

    将符合以上两项条件的封包以特定的方式来“处理”

    较常见的处理方式:

    ACCEPT

    允许通过

    DROP

    将封包丢弃调,这种处理方式将导致来源端误以为封包丢失,而不断重新发送封包,这个动作将持续到连接Timeout为止

    REJECT

    将封包丢弃掉,并回送一个DestinationUnreachableICMP封包给发送端,发送端的应用程序收到这个错误信息封包之后,会终止连接的动作


    举例2:不允许222.24.21.195主机通过本机DNS服务来执行名称解析

    语法:iptables-A INPUT -p udp -s 222.24.21.195 --dport 53 -j REJECT

    语法解释:

    --dport53

    原文

    --dportDestination Port

    对应的参数

    --sportSource Port

    目的

    匹配TCPUDP包头中的“来源端Port”或“目的端Port”,这样即可判断连接所要访问的服务,例如:-pudp –dport 53 代表客户端要访问UDP53port,而UDP53port就是DNS服务

    语法

    --dport 80--sport80,但请注意,当时用--dport--sport参数时,一定要指明是tcp还是udp协议。注意一点:只要规则语法中用到“Port参数”时,一定要加上“-pudp-ptcp”的参数。


    举例3:允许192.168.1.0/24网段的主机对192.168.0.1提出任何的服务请求

    语法:iptables-A INPUT -p all -s 192.168.1.0/24 -d 192.168.0.1 -j ACCEPT

    语法解释:

    -pall

    目的

    匹配所有的协议包

    -s192.168.1.0/24

    目的

    匹配来源端IP192.168.1.0/24网段的封包

    -jACCEPT

    目的

    开放符合以上3项条件的封包进入


    举例4:只允许用户端主机从eth1访问的本机SSH服务

    语法: iptables-A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT

    语法解释:

    -ieth1

    原文

    -iin-interface

    对应的参数

    -oout-interface

    目的

    匹配封包的出入接口

    语法

    -i eth1 -oeth2


    举例5:不允许本机的应用程序从eth0接口送出封包去访问www.baidu.com网站

    语法:iptables-A OUTPUT -o eth0 -p tcp -d www.baidu.com --dport 80 -j REJECT

    语法解释:

    -AOUTPUT

    限制的对象

    因为该例子使用的OUTPUChain,所以目的是限制本机对外的连接


    (二)

    有上面几个例子了解了iptables的基本语法,下面对参数进行整理总结。

    1)接口的匹配参数

    参数名称

    -i -o

    参数值

    参数值会因为防火墙主机所使用的物理接口不同而有所改变,下面列出常见的网络接口名称:

    * eth0 :以太网络的接口名称。

    * ppp0PPP接口的名称。

    * lo LocalLoopback接口。

    * fddi0:光线接口

    使用范例

    -i eth0:匹配从eth0接口送入的封包

    意义

    匹配封包的进出接口

    补充

    可搭配“!”来代表反向,例如,“-ieth0”即表示匹配不是从eth0接口进入的封包

    2)上层协议(UpperLayer Protocal)的匹配参数

    参数名称

    -p

    参数值

    这些参数会因为匹配的上层协议的不同而有所差异,一般常见的参数如下:

    * tcp :匹配的上层协议为TCP协议。

    * udp :匹配的上层协议为UDP协议。

    * icmp :匹配的上层协议为ICMP协议。

    * all :匹配所有的上层协议。

    关于其它的上层协议可以参考/etc/protocols文档,现在取出一部分内容:

    ip 0 IP

    hopopt 0 HOPOPT

    icmp 1 ICMP

    igmp 2 IGMP

    ggp 3 GGP

    ipencap 4 IP-ENCAP

    tcp 6 TCP

    注:其中第一和第二字段是给系统来使用的,比如说我们写-ptcp还可以写为-p6。因为tcp的代码就是6,第三个字段用于管理员来识别用。


    3)匹配来源/目的的IP地址

    参数名称

    -s -d

    参数值

    来源及目的IP地址匹配,其可接受的IP地址格式如下:

    *192.168.0.1 :匹配单一IP

    *172.10.0.0/16 :匹配一个Class B的网段。

    *192.168.0.0/24 :匹配一个ClassC的网段。

    *192.168.0.0/28 :也可以是任何标准CIDR的网段。

    * www.qq.com : 也可以是网址,但最后存放到Chain里的值还是IP



    使用范例

    -s192.168.0.1 :匹配从192.168.0.1主机送来的封包

    -s192.168.0.0/24 :匹配从192.168.0.0/24网段所送来的封包

    -d192.168.0.10 :匹配要送往192.168.0.10主机的封包

    意义

    匹配封包来源或目的IP地址

    补充

    可搭配“!”来代表反向,例如:“-s192.168.0.0/24”即代表匹配来源端IP不是192.168.0.0/24网段的封包


    4)匹配来源/目的的Port位置

    参数名称

    --sport–dport

    参数值

    我们可以用—sport或—dport来匹配所要访问的服务,例如我们可以用--dport80参数匹配访问WebServer的封包,另外,也可以使用

    --sport80参数匹配有WebServer回应给客户端的封包

    使用范例

    --dport 80 :匹配访问的WebServer的封包。

    --sport 110:匹配由POP3 Server 回应给客户端的封包。

    意义

    匹配封包来源或目的的Port

    补充

    可以搭配”!“来代表反向,如”--sport80“代表匹配不是从WebServer送来的封包


    5)处理方式

    参数名称

    -j

    参数值

    较为常见的3种处理方式,分别如下:

    * ACCEPT:允许

    * DROP :将封包丢弃

    * REJECT :将封包丢弃,并回应发送端一个ICMP封包

    使用范例

    -j ACCEPT 允许

    -j DROP 将封包丢弃

    意义

    以特定的方式来处理符合条件的封包


  • 相关阅读:
    Web Client Software Factory 开发路线图
    Castle ActiveRecord Hands On Lab(1):基本数据访问
    古代武侠武功与现代软件开发
    微软Code Snippet Designer Alpha版发布了
    MSDN WebCast网站全新改版
    AJAX,只是一种过渡技术吗?
    中文网站排行榜:博客园位居博客类16名
    ASP.NET AJAX JavaScript 类浏览器
    .NET开源项目介绍及资源推荐:序
    微软发布WF教程及大量示例
  • 原文地址:https://www.cnblogs.com/linuxer/p/2870537.html
Copyright © 2011-2022 走看看