iptables详解Word格式文档下载.docx

上传人:b****6 文档编号:16211304 上传时间:2022-11-21 格式:DOCX 页数:27 大小:657.42KB
下载 相关 举报
iptables详解Word格式文档下载.docx_第1页
第1页 / 共27页
iptables详解Word格式文档下载.docx_第2页
第2页 / 共27页
iptables详解Word格式文档下载.docx_第3页
第3页 / 共27页
iptables详解Word格式文档下载.docx_第4页
第4页 / 共27页
iptables详解Word格式文档下载.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

iptables详解Word格式文档下载.docx

《iptables详解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《iptables详解Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。

iptables详解Word格式文档下载.docx

iptables:

指的是管理防火墙的命令工具,程序通常位于/sbin/iptables,属于“用户态”(UserSpace,又称用户空间)的防火墙管理体系。

1.2>

、iptables的规则表、链结构

iptables的作用在于为包过滤的实现提供规则(或称策略),通过各种不同的规则,告诉netfiter对来自有些源、前往某些目的地或具有某些协议特征的数据包应该如何处理。

为了更方便地组织和管理防火墙策略,iptables采用了“表”和“链”的分层结构。

每个规则“表”相当于内核空间的一个容器,根据处理数据包的时机不同,表容器内包括不同的规则“链”。

针对特定数据包的各种防火墙规则,按顺序依次放入对应的规则“链”中。

◆规则表

按照防火墙策略的不同用途,iptables管理着四个不同的规则表,其功能分别由独立的内核模块实现。

filter表,包含三个规则链:

INPUT,FORWARD,OUTPUT。

filter表主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包。

filter表对应的内核模块为iptable_filter。

nat表,包含三个规则链:

PREROUTING,POSTROUTING,OUTPUT。

nat(NetworkAddressTranslation,网络地址转换)表主要用于修改数据包的IP地址、端口号等信息。

nat表对应的内核模块为iptable_nat。

mangle表,包含五个规则链:

PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。

mangle表主要用于修改数据包的TOS(TypeOfService,服务类型)、TTL(TimeToLive,生存周期)指以及为数据包设置Mark标记,以实现Qos(QualityOfService,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。

mangle表对应的内核模块为iptable_mangle。

raw表,包含两条规则链:

OUTPUT、PREROUTING。

raw表是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理。

在匹配数据包时,raw表的规则要优先于其他表。

raw表对应的内核模块为iptable_raw。

Ps:

在iptables的四个规则表中,mangle表和raw的表应用相对较少,下面主要介绍filter表和nat表的防火墙应用。

◆规则链

在处理各种数据包时,根据防火墙规则的不同介入时机,iptables供涉及5种默认规则链,其应用时间点分别对应如下。

INPUT链:

当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则。

OUTPUT链:

当防火墙本机向外发送数据包(出战)时,应用次链中的规则。

FORWARD链:

当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用次链中的规则。

PREROUTING链:

在对数据包作路由选择之前,应用次链中的规则。

POSTROUTING链:

在对数据包作路由选择之后,应用次链中的规则。

期中INPUT、OUTPUT链更多的应用在“主机防火墙”中,即主要针对服务器本机进出数据的安全控制;

而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”中,特别是防火墙服务器作为网关使用时的情况。

1.3>

、数据包过滤匹配流程

在前面内容中,已经介绍过iptables管理的4个默认表和5种规则链,在每个表的规则链里都可以设置防火墙规则,防火墙将根据这些规则来决定如何处理数据包。

那么,当网络数据包到达防火墙以后,会有限使用哪一个表、哪一个链里的规则呢?

数据包出入防火墙的规则匹配过程是怎样的?

下面从不同的角度依次介绍数据包过滤的匹配流程。

ⅰ>

、规则表之间的优先顺序

当数据包抵达防火墙时,将依次应用raw、mangle、nat和filter表中对应链内的规则(如果有的话)就像上图;

ⅱ>

、规则链之间的优先顺序

由于默认规则链是根据规则介入时机进行分类的,因此优先顺序直接取决于数据包的具体流程;

、入站数据流向:

来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机(如Internet用户访问防火墙主机中的Web服务的数据包),那么内核将其传递给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如httpd服务器)进行响应。

、转发数据流向:

来自外界的数据包到达防火墙后,首先被PREROUTING规则处理,之后会进行路由选择,如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再讲给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

ⅲ>

、出战数据流向:

防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

1.4>

、规则链内部各条防火墙规则之间的优先顺序

在数据包经由各条规则链的处理过程中,依次按第1条规则、第2条规则、第3条规则.....的顺序进行匹配和处理。

如果找到一条能够匹配该数据包的规则,则不会继续检查后面的规则(使用LOG记录日志的规则除外,下面iptables配置说明)。

如果比对完整个规则链,也找不到和数据包相匹配的规则,就按照该规则链的默认策略进行处理。

2、管理和设置iptables规则

前面讲解了linux防火墙的表、链结构,下面讲述netfilter防火墙的管理工具——iptables命令的使用。

2.1>

、iptables的基本语法格式

使用iptables命令设置防火墙规则时,其基本的命令格式如下:

iptables[-t表名]命令选项[链名][条件匹配][-j目标动作或跳转]

其中,表名、链名用于指定iptables命令所操作的表和链,若未指定表名,将默认使用filter表;

命令选项用于指定管理iptables规则的方式,如插入、增加、删除以及查看等;

条件匹配用于指定对符合什么样条件的数据包进行处理;

目标动作或跳转用于知道数据包的处理方式,如允许通过、拒绝、丢弃或跳转(jump)给其他链进行处理等。

2.2>

、管理iptables规则

在管理iptables防火墙的过程中,首先需要考虑的就是如何查看规则、添加规则、清空链内的规则等基本操作。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

iptables命令的管理控制选项

选项名 

功能及特点

-A 

在指定链的末尾添加(--append)一条新的规则

-D 

删除(--delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则

-I 

在指定链中插入(--insert)一条新的规则,若未指定插入位置,则默认在链的开头插入

-R 

修改、替换(--replace)指定链中的某一条规则,按规则序号或内容确定要替换的规则

-L 

列出(--list)指定链中的所有的规则进行查看,若未指定链名,则列出表中所有链的内容

-F 

清空(--flush)指定链中的所有规则,若未指定链名,则清空表中所有链的内容

-N 

新建(--new-chain)一条用户自己定义的规则链

-X 

删除指定表中用户自定义的规则链(--delete-chain)

-P 

设置指定链的默认策略(--policy)

-n 

使用数字形式(--numeric)显示输出结果,若显示主机的IP地址而不是主机名

-v 

查看规则列表时显示详细(--verbose)的信息

-V 

查看iptables命令工具的版本(--Version)信息

-h 

查看命令帮助信息(--help)

--line-number 

查看规则列表时,同时显示规则在链中的顺序号

其中,添加、插入、删除、清空规则和查看规则是最常用的管理选项,下面通过实例的方式显示部分选项的应用。

Α、添加及插入规则

eg 

 

:

在filter表的INPUT链的末尾添加一条防火墙规则。

[root@node1~]#iptables-tfilter-AINPUT-ptcp-jACCEPT

eg:

在filter表的INPUT链中插入一条防火墙规则(此处省略了“-tfilter”选项,按默认处理filter表)。

[root@node1~]#iptables-IINPUT-pudp-jACCEPT

eg:

在filter表的INPUT链中插入一条防火墙规则(作为链中的第二条规则)。

[root@node1~]#iptables-IINPUT 

-picmp-jACCEPT

B、查看规则列表

查看filter表INPUT链中的所有规则,同时显示各条规则的顺序号。

(下面是对比图)

[root@node1~]#iptables-LINPUT--line-numbers

[root@node1~]#iptables-LINPUT

C、删除、清空规则

删除filter表INPUT链中的第2条规则。

[root@node1~]#iptables-DINPUT 

eg:

清空filter表、nat表、mangle表各链中的所有规则。

[root@node1~]#iptables-F 

//不指定表名时默认清空filter表

[root@node1~]#iptables-tnat-F

[root@node1~]#iptables-tmangle-F

D、设置规则链的默认策略

最基本的两种策略为ACCEPT(允许)、DROP(丢弃)。

将filter表中FORWARD规则链的默认策略设为DROP

[root@node1~]#iptables-tfilter-PFORWARDDROP

E、获得iptables相关选项用法的帮助信息

查看iptables命令中关于icmp协议的帮助信息(在输出内容的最后部分列出)。

[root@node1~]#iptables-picmp-h

F、新增、删除自定义规则链

在raw表中新增一条自定义的规则链,链名为TCP_PACKETS.

[root@node1~]#iptables-traw-NTCP_PACKETS

清空raw表中的用户自定义的所有规则链。

[root@node1~]#iptables-traw-X

Ps:

在iptables的规则表中,允许用户自定义新的链。

但是需要在默认的链中添加相应的跳转策略(如“iptables-IINPUT......-j自定义链名”),否则在处理数据包时将不会使用自定义链中的规则。

后面会给个例子

好累~~~

2.3>

、条件匹配

对于Linux防火墙来说,应该对什么样的数据包进行过滤,对什么样的数据包做地址转换......,对于一条有效的防火墙策略来说,条件匹配的设置起着决定性的作用,Linux防火墙需要非常清楚的知道针对符合什么条件的数据包进行什么样的处理。

区分数据包的条件匹配方式可以分为通用匹配、隐含匹配和显式匹配,各种匹配条件可以结合在一起使用。

A、通过(general)条件匹配

这种匹配操作一般可以直接使用,而不依赖于其他的条件匹配及其扩展。

常见的通用匹配方式包括以下集中。

协议匹配。

用于检查数据包的网络协议(--protocal),允许使用的协议名包含在/etc/protocols文件中,常见的为tcp、udp、icmp和all(针对所有IP数据包)。

在iptables命令中使用“-p协议名”的形式。

拒绝进入防火墙的所有icmp协议数据包。

[root@node1~]#iptables-IINPUT-picmp-jREJECT

:

允许防火墙转发除icmp协议以外的所有数据包(使用惊叹号"

!

"

可以将除条件取反)。

[root@node1~]#iptables-AFORWARD!

-picmp-jACCEPT

地址匹配。

用于检查数据包的IP地址、网络地址。

在iptables命令中使用“-s源地址”和“-d目标地址”的形式,分别对应于源(--source)地址和目标(--destination)地址。

拒绝转发来自192.168.1.11主机的数据,允许转发来自192.168.0.0/24网段的数据。

[root@node1~]#iptables-AFORWARD-s 

192.168.1.11 

-jREJECT

192.168.0.0/24 

-jACCEPT

网络接口匹配。

用于检查数据包从防火墙的哪一个接口进入或离开。

在iptables命令中使用“-i网络接口名”和“-o网络接口名”的形式,分别对应于接收数据包(--in-interface)的网卡和发送数据包(--out-interface)的网卡

丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包。

[root@node1~]#iptables-AINPUT-ieth1-s 

192.168.0.0/16 

-jDROP

172.16.0.0/12 

10.0.0.0/8 

管理员在网关服务器上检测到来自某个IP网段(如10.20.30.0/24)的频繁扫描,希望设置iptables规则封堵该IP地址段,两小时后解封。

[root@node1~]#iptables-IINPUT-s 

10.20.30.0/24 

[root@node1~]#iptables-IFORWARD-s 

[root@node1~]#atnow+2 

hours

at>

iptables-DINPUT 

iptables-DFORWARD 

<

EOT>

//此处按Ctrl+D组合键

job 

at 

2013-06-11 

22:

47

B、隐含(Implicit)条件匹配

这种匹配通常需要以指定的协议匹配为前提,其对应的功能由iptables自动(隐含)的装载入内核,一般不需要用户收到加载模块。

常见的隐含匹配方式包括以下几种。

端口匹配。

用于检查数据包的TCP或UDP端口号,需要以“-ptcp”或“-pudp”匹配为前提。

在iptables命令中使用“--sport源端口号”、“--dport目标端口”的形式,分别对应于源端口(--source-port)、目标端口(--destination-port)。

端口可以表示为单个端口号或者用冒号“:

”分割的端口范围。

仅允许系统管理员从202.13.0.0/16网段使用SSH方式远程登录防火墙主机。

[root@node1~]#iptables-AINPUT-ptcp--dport 

22 

-s 

202.13.0.0/16 

允许本机开放从TCP端口20-1024提供的应用服务

20:

1024 

[root@node1~]#iptables-AOUTPUT-ptcp--sport 

作为网关使用时,允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。

-pudp--dport 

53 

[root@node1~]#iptables-AFORWARD-d 

-pudp--sport 

、TCP标记匹配。

用于检查数据包的TCP标记位(--tcp-flags),需要以“-ptcp”匹配为前提。

在iptables命令中使用“--tcp-flags检查范围被设置的标记”的形式,两个参数“检查范围”和“被设置的标记”均为TCP标记的列表,各标记之间用逗号分割。

“检查范围”告诉iptables需要检查数据包的哪几个标记,“被设置的标记”则明确匹配对应值为1的标记。

拒绝从接口(eth0)直接访问防火墙本机的数据包,但是允许响应防火墙TCP请求的数据包进入。

[root@node1~]#iptables-PINPUTDROP 

//此命令执行小心,不提前设置通过ssh的话,你的远程直接就断开了

[root@node1~]#iptables-IINPUT-ieth0-ptcp--tcp-flagsSYN,RST,ACKSYN-jREJECT

、ICMP类型匹配。

用于检查ICMP数据包的类型(--icmp-type),有选择的过滤数据包,需要以“-picmp”匹配为前提。

在iptables命令中使用“--icmp-typeICMP类型”的形式。

ICMP类型可以使用字符串或数字代码,例如“Echo-Request”(数字代码为8)、“Echo-Reply”(数字代码为0)、“Destination-Unreachable”(数字代码为3),分别对应ICMP协议的请求、回显、目标不可达数据。

禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机(允许接受ICMP回应数据)。

iptables-AINPUT-picmp--icmp-typeEcho-Request-jDROP

iptables-AINPUT-picmp--icmp-typeEcho-Reply-jACCEPT

iptables-AINPUT-picmp--icmp-typedestination-Unreachable-jACCEPT

C、 

显式(Explicit)条件匹配

这种匹配的功能需要由额外的内核模块提供,因此需要手工指定匹配方式。

在iptables命令中使用“-m模块关键字”的形式调用显式匹配,当然,还的指定对应的匹配内容。

在使用过显式匹配以后,可以执行“lsmod|grepxt_”命令查看到扩展防火墙功能的相关内核模块(如:

xt_mac,xt_state,xt_multiport等)。

常见的显式匹配包括以下几种。

、MAC地址匹配。

主要用于检查数据包的源MAC地址。

在iptables命令中使用“--mac-sourceMAC地址”的形式。

禁止转发来自MAC地址为3C-97-0E-77-7F-67(这是我本机的mac)的主机的数据包 

[root@node1~]#iptables-AFORWARD-mmac--mac-source3C-97-0E-77-7F-67 

、多端口匹配。

检查数据包的源端口、目标端口时,用于匹配多个不连续的端口号。

在iptables命令中主要使用”--dports端口列表“或者”--sports

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1