iptables配置

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。

虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。

netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。

iptables包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。

4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。表的处理优先级:raw>mangle>nat>filter。

filter:一般的过滤功能

nat:用于nat功能(端口映射,地址映射等)

mangle:用于对特定数据包的修改

raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能

5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。

PREROUTING:数据包进入路由表之前

INPUT:通过路由表后目的地为本机

FORWARDING:通过路由表后,目的地不为本机

OUTPUT:由本机产生,向外转发

POSTROUTIONG:发送到网卡接口之前。如下图:

INPUT/OUTPUT/FORWARD只用于-t filter

INPUT 如果包的目标就是本机,则包直接进入INPUT链,再被本地正在等待该包的进程接OUTPUT 两类包走OUTPUT,一类是INPUT入的包,一类是主机本身产生的包

FORWARD 如果包的目标不是本机,而是穿过本机的包,则进入FORWARD链,FORWARD既不走INPUT,也不走OUTPUT

POSTROUTING/PREROUTING只用于-t nat

PREROUTING 进入路由之前进行,最先进行,DNAT

POSTROUTING 进入路由之后进行,最后进行,SNAT

FOWARD是基于两个接口的,不象INPUT,OUTPUT都是基于单一接口的

-i, --in-interface 匹配包的入口

-i只适用于INPUT、FORWARD、PREROUTING链中,而用在OUTPUT POSTROUTING都会出错。

-i eth+:可以用通配符,表示匹配从所有的以太接口进入的数据包

可以用去反符号“!”来标示”除了”被列出的接口的所有接口。

-o, --out-interface 匹配包的出口

-o 适用于OUTPUT、FORWARD,POSTROUTING,而用来INPUT,PREROUTING会出错

-i -o 同时匹配入口和出口的,只有非NAT的FORWARD链

#iptables –A FORWORD –i eth0 –o eth1 –p tcp –j ACCEPT

凡是从eth0接口进入,从eth1接口流出的tcp数据流被允许通过

-p, --protocol [!] protocol两种方式

-p name,可以是tcp, udp, icmp, or all

-p all

-p all只表示tcp、udp、icmp这三种协议,而不包括RFC1340(/etc/protocol)中的所有协议。其他协议,要用数字

缺省是-p all,即:不写-p时, 相当于-p all,相当于tcp,udp,icmp

-p 数字,必须符合RFC1340(/etc/protocol)

-A INPUT -p 50 -j ACCEPT

-A INPUT -p 51 -j ACCEPT

-p 0相当于-p all

-p tcp --sport,-p tcp --source-port

-p tcp --dport,-p tcp --destination-port

缺省(无--sport),表示匹配所有端口

--sport 135

单端口

--sport TELNET

单个服务名,服务名必须在/etc/services 文件中进行标注

--sport 135:139

连续端口

匹配源端口从135到139

--sport 1024: 匹配源端口从1024到65535

--sport !1032

表示除了该端口以为的其他所有端口

--sport,--dport不支持逗号枚举端口

注意--sport,--dport可以单个端口,可以连续端口,但不支持逗号枚举端口,逗号枚举必须加-m multiport参数

-p tcp -m multiport --sport/--dport

iptables -A FORWARD –i eth0 –p tcp –m multiport --dports 25,80,110,443,1863 –j ACCEPT --ports用于源、目的端口相同时

-p tcp下的子参数—tcp-flags --syn

-p tcp --tcp-flags [!] flag

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN

[!] –syn

It is equivalent to --tcp-flags SYN,RST,ACK SYN.

主要用于匹配和连接有关的数据包

-p icmp --icmp-type ...

icmp-type类型的指定可以取数字或名字:

数字数字在RFC792中有定义

icmp echo-reply -p icmp –icmp-type:0

icmp echo-request -p icmp –icmp-type:8

name name 可以用iptables --p icmp --help 查看

[root@demo1 ~]# /sbin/iptables -p icmp -h

iptables options:

--icmp-type [!] typename match icmp type

相关文档
最新文档