Iptables的规则语法

Iptables的规则语法

分类: 防火墙2012-04-19 17:09 1228人阅读 评论(0) 收藏 举报

inputtcpfilter防火墙output网络

(一)

基本语法

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


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

举例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


目的


匹配TCP、UDP包头中的“来源端Port”或“目的端Port”,这样即可判断连接所要访问的服务,例如:-pudp –dport 53 代表客户端要访问UDP的53port,而UDP的53port就是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


目的


匹配来源端IP为192.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 :以太网络的接口名称。

* ppp0:PPP接口的名称。

* lo :LocalLoopback接口。

* fddi0:光线接口


使用范例


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


意义


匹配封包的进出接口


补充


可搭配“!”来代表反向,例如,“-i!eth0”即表示匹配不是从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地址


补充


可搭配“!”来代表反向,例如:“-s!192.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


补充


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

(5)处理方式


参数名称


-j


参数值


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

* ACCEPT:允许

* DROP :将封包丢弃

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


使用范例


-j ACCEPT 允许

-j DROP 将封包丢弃


意义


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

时间: 2024-11-02 22:18:45

Iptables的规则语法的相关文章

iptables防火墙规则整理

iptables防火墙规则整理 iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能.在日常Linux运维工作中,经常会设置iptables防火墙规则,用来加固服务安全.以下对iptables的规则使用做了总结性梳理: iptables由两部分组成: 1.framework:netfilter hooks function钩子函数,实现网络过滤器的基

iptables防火墙规则设置

#注:Linux7 默认启用的是firewalld.service,要启用iptables,需要关闭firewalld.service systemctl stop firewalld.service;systemctl disable firewalld.service yum install iptables -y;systemctl start iptables.service;systemctl enable iptables.service 规则设置: 规则1:控制单个IP的最大并发连

Linux iptables:规则组成

<Linux iptables:规则原理和基础>介绍了iptables的四表五链,简单说就是不同的网络层数据包会经过哪几个挂载点,在每个挂载点可以在哪张表进行规则定义. 本篇沿着这个思路,更具体的介绍一条iptables规则的组成. Linux iptables:规则组成 这是iptables一条规则的基本组成,也是iptables定义规则的命令格式: 第一列是iptables命令: 第二列指定规则所在的表,常用的是nat和filter表: 第三列是命令,常用命令如下: -A 在指定链的末尾添

Linux iptables:规则原理和基础

什么是iptables? iptables是Linux下功能强大的应用层防火墙工具,但了解其规则原理和基础后,配置起来也非常简单. 什么是Netfilter? 说到iptables必然提到Netfilter,iptables是应用层的,其实质是一个定义规则的配置工具,而核心的数据包拦截和转发是Netfiler. Netfilter是Linux操作系统核心层内部的一个数据包处理模块. iptables和Netfilter关系图: 在这张图可以看出,Netfilter作用于网络层,数据包通过网络层会

iptables NAT规则【转】

nat表需要的三个链: 1.PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;  2.POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则.  3.OUTPUT:定义对本地产生的数据包的目的NAT规则. 需要用到的几个动作选项:(真实环境中用大写)  redirect  将数据包重定向到另一台主机的某个端口,通常用实现透明代

[moka同学摘录]iptables防火墙规则的添加、删除、修改、保存

文章来源:http://www.splaybow.com/post/iptables-rule-add-delete-modify-save.html 本文介绍iptables这个Linux下最强大的防火墙工具,包括配置iptables三个链条的默认规则.添加iptables规则.修改规则.删除规则等. 一.查看规则集 iptables --list -n // 加一个-n以数字形式显示IP和端口,看起来更舒服 二.配置默认规则 iptables -P INPUT DROP  // 不允许进  

Makefile规则③规则语法、依赖、通配符、目录搜寻、目标

规则语法 通常规则的语法格式如下: TARGETS : PREREQUISITES COMMAND ... 或者: TARGETS : PREREQUISITES ; COMMAND COMMAND ... 规则中" TARGETS"可以是空格分开的多个文件名,也可以是一个标签(例如:执行清空的" clean")." TARGETS"的文件名可以使用通配符,格式" A(M)"表示档案文件( Linux下的静态库.a文件)的成员

IIS rewrite映射规则语法格式

IIS rewrite映射规则语法格式,特殊符号:&请用& amp;代替,否则异常. <configuration> <system.webServer> <rewrite> <rules> <rule name="bbs board" enabled="true"> <match url="^forum_([0-9]+)\.htm$" /> <acti

iptables中规则的关系——以只允许某些IP段访问为例

最近遇到一个问题:服务器被全球的IP频繁试图通过ssh登录. 于是想到通过iptables防火墙限制访问,达到:仅允许指定ip段访问ssh服务(22端口). 关于iptables添加规则的文章有很多,而鲜有介绍规则之间的顺序.因此希望通过这篇文章介绍iptables多条规则之间是如何协同工作的. 注:作者并没有在此投入很多时间调研,因而以下仅仅是个人理解,有错误之处希望不吝指出. 假设希望仅仅允许 111.111.0.0/16 IP段ssh登录,而禁止其他所有ip登录. 最简单的命令是: ipt