ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:657.42KB ,
资源ID:3305773      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3305773.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(iptables详解.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

iptables详解.docx

1、iptables详解目录linux之iptables详解及配置(一) 1linux之iptables详解及配置(二)+案例 15iptables之mangle表应用实现策略路由+(案例) 23linux之iptables详解及配置(一)在Internet中,企业通过架设各种服务器系统为用户提供丰富多彩的网络应用,例如Web网站、电子邮件系统、FTP服务器、数据库系统等。那么如何来保护这些特定的服务,过滤企业不需要的访问甚至是恶意的入侵呢?使用防火墙正是强有力的防护措施之一。1、Linux防火墙基础作为隔离内外网、过滤非法数据的有力屏障,防火墙通常按实现环境的不同分为硬件防火墙和软件防火墙。硬件

2、防火墙是功能专一的硬件设备,具有比较全面的功能,其工作效率较高,但是加个昂贵,通常只应用于非常重要的主干网络节点。而软件防火墙的功能是由操作系统或软件程序实现的,可以在Linux或者Windows等系统平台构建软件防火墙。软件防火墙的价格优势比较明显,配置也相对灵活,如果设置得当,同样可以实现硬件防火墙具有的功能和效率。Internet中有大量的企业网络在使用Linux系统搭建软件防火墙1.1、Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或称网络层防火墙)。Linux的防火墙体系基于内核编码实现,因此具有非常稳定的性能和高效率,也因此被

3、更加广泛采纳和应用。Linux防火墙发展历史linux内核从很早的时候就实现了网络防火墙的功能,并为用户提供了管理防火墙规则的命令工具。在2.0版本的内核中,包过滤机制是ipfw,管理防火墙规则的命令工具是ipfwadm。在2.2版本的内核中,包过滤机制是ipchain,管理防火墙规则的命令工具是ipchains。在2.4版本的内核开始,包过滤机制是netfiter,管理防火墙的命令工具是iptables。本文以iptables作为主要命令工具,学习Linux防火墙的配置和使用。netfiter与iptables在许多关于防火墙的资料中,netfiter和iptables通常都可以用来指Lin

4、ux防火墙,往往容易引起混淆。两者的主要区别如下:netfiter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态”(Kernel Space,又称内核空间)的防火墙功能体系iptables: 指的是管理防火墙的命令工具,程序通常位于/sbin/iptables,属于“用户态”(User Space,又称用户空间)的防火墙管理体系。1.2、iptables的规则表、链结构iptables的作用在于为包过滤的实现提供规则(或称策略),通过各种不同的规则,告诉netfiter对来自有些源、前往某些目的地或具有某些协议特征的数据包应该如何处理。为了更方便地组

5、织和管理防火墙策略,iptables采用了“表”和“链”的分层结构。每个规则“表”相当于内核空间的一个容器,根据处理数据包的时机不同,表容器内包括不同的规则“链”。针对特定数据包的各种防火墙规则,按顺序依次放入对应的规则“链”中。规则表按照防火墙策略的不同用途,iptables管理着四个不同的规则表,其功能分别由独立的内核模块实现。filter表,包含三个规则链:INPUT,FORWARD,OUTPUT。filter 表主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包。filter 表对应的内核模块为 iptable_filter。nat表,包含三个规则链:PREROUTING,P

6、OSTROUTING,OUTPUT。nat (Network Address Translation,网络地址转换)表主要用于修改数据包的IP地址、端口号等信息。nat 表对应的内核模块为 iptable_nat。mangle表,包含五个规则链:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。mangle表主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由

7、设备支持,因此应用并不广泛。mangle 表对应的内核模块为 iptable_mangle。raw表,包含两条规则链:OUTPUT、PREROUTING。raw表是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理。在匹配数据包时,raw表的规则要优先于其他表。raw表对应的内核模块为iptable_raw。Ps:在iptables的四个规则表中,mangle表和raw的表应用相对较少,下面主要介绍filter表和nat表的防火墙应用。规则链在处理各种数据包时,根据防火墙规则的不同介入时机,iptables供涉及5种默认规则链,其应用时间点分别对应如下。I

8、NPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则。OUTPUT链:当防火墙本机向外发送数据包(出战)时,应用次链中的规则。FORWARD链:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用次链中的规则。PREROUTING链:在对数据包作路由选择之前,应用次链中的规则。POSTROUTING链:在对数据包作路由选择之后,应用次链中的规则。Ps:期中INPUT、OUTPUT链更多的应用在“主机防火墙”中,即主要针对服务器本机进出数据的安全控制;而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”中,特别是防火墙服务器作为网关

9、使用时的情况。1.3、数据包过滤匹配流程在前面内容中,已经介绍过iptables管理的4个默认表和5种规则链,在每个表的规则链里都可以设置防火墙规则,防火墙将根据这些规则来决定如何处理数据包。那么,当网络数据包到达防火墙以后,会有限使用哪一个表、哪一个链里的规则呢?数据包出入防火墙的规则匹配过程是怎样的?下面从不同的角度依次介绍数据包过滤的匹配流程。、规则表之间的优先顺序当数据包抵达防火墙时,将依次应用raw、mangle、nat和filter表中对应链内的规则(如果有的话)就像上图;、规则链之间的优先顺序由于默认规则链是根据规则介入时机进行分类的,因此优先顺序直接取决于数据包的具体流程;、入

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

11、是否转发或拦截),然后再讲给POSTROUTING规则链(是否修改数据包的地址等)进行处理。、出战数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。1.4、规则链内部各条防火墙规则之间的优先顺序在数据包经由各条规则链的处理过程中,依次按第1条规则、第2条规则、第3条规则.的顺序进行匹配和处理。如果找到一条能够匹配该数据包的规则,则不会继续检查后面的规则(使用LOG记录日志的规则除外,下面iptables配置说明)。如果比对完整个规则链,也找

12、不到和数据包相匹配的规则,就按照该规则链的默认策略进行处理。2、管理和设置iptables规则前面讲解了linux防火墙的表、链结构,下面讲述netfilter防火墙的管理工具iptables命令的使用。2.1 、iptables的基本语法格式使用iptables命令设置防火墙规则时,其基本的命令格式如下:iptables -t 表名 命令选项 链名 条件匹配 -j 目标动作或跳转其中,表名、链名用于指定iptables命令所操作的表和链,若未指定表名,将默认使用filter表;命令选项用于指定管理iptables规则的方式,如插入、增加、删除以及查看等;条件匹配用于指定对符合什么样条件的数据

13、包进行处理;目标动作或跳转用于知道数据包的处理方式,如允许通过、拒绝、丢弃或跳转(jump)给其他链进行处理等。2.2、管理iptables规则在管理iptables防火墙的过程中,首先需要考虑的就是如何查看规则、添加规则、清空链内的规则等基本操作。12345678910111213141516iptables 命令的管理控制选项选项名 功能及特点-A 在指定链的末尾添加(-append)一条新的规则-D 删除(-delete)指定链中的某一条规则,按规则序号或内容确定要删除的规则-I 在指定链中插入(-insert)一条新的规则,若未指定插入位置,则默认在链的开头插入-R 修改、替换(-re

14、place)指定链中的某一条规则,按规则序号或内容确定要替换的规则-L 列出(-list)指定链中的所有的规则进行查看,若未指定链名,则列出表中所有链的内容-F 清空(-flush)指定链中的所有规则,若未指定链名,则清空表中所有链的内容-N 新建(-new-chain)一条用户自己定义的规则链-X 删除指定表中用户自定义的规则链(-delete-chain)-P 设置指定链的默认策略(-policy)-n 使用数字形式(-numeric)显示输出结果,若显示主机的IP地址而不是主机名-v 查看规则列表时显示详细(-verbose)的信息-V 查看iptables命令工具的版本(-Versio

15、n)信息-h 查看命令帮助信息(-help)-line-number 查看规则列表时,同时显示规则在链中的顺序号其中,添加、插入、删除、清空规则和查看规则是最常用的管理选项,下面通过实例的方式显示部分选项的应用。、添加及插入规则eg :在filter表的INPUT链的末尾添加一条防火墙规则。1rootnode1 # iptables -t filter -A INPUT -p tcp -j ACCEPTeg : 在filter表的INPUT链中插入一条防火墙规则(此处省略了“-t filter”选项,按默认处理filter表)。1rootnode1 # iptables -I INPUT -p

16、 udp -j ACCEPTeg: 在filter表的INPUT链中插入一条防火墙规则(作为链中的第二条规则)。1rootnode1 # iptables -I INPUT2-p icmp -j ACCEPTB、查看规则列表eg: 查看filter表INPUT链中的所有规则,同时显示各条规则的顺序号。(下面是对比图)1rootnode1 # iptables -L INPUT -line-numbers1rootnode1 # iptables -L INPUTC、删除、清空规则eg: 删除filter表INPUT链中的第2条规则。1rootnode1 # iptables -D INPUT2

17、eg: 清空filter表、nat表、mangle表各链中的所有规则。123rootnode1 # iptables -F/不指定表名时默认清空filter表rootnode1 # iptables -t nat -Frootnode1 # iptables -t mangle -FD、设置规则链的默认策略最基本的两种策略为ACCEPT(允许)、DROP(丢弃)。eg: 将filter表中FORWARD规则链的默认策略设为DROP1rootnode1 # iptables -t filter -P FORWARD DROPE、获得iptables相关选项用法的帮助信息eg: 查看iptable

18、s命令中关于icmp协议的帮助信息(在输出内容的最后部分列出)。1rootnode1 # iptables -p icmp -hF、新增、删除自定义规则链eg: 在raw表中新增一条自定义的规则链,链名为TCP_PACKETS.1rootnode1 # iptables -t raw -N TCP_PACKETSeg: 清空raw表中的用户自定义的所有规则链。1rootnode1 # iptables -t raw -XPs:在iptables的规则表中,允许用户自定义新的链。但是需要在默认的链中添加相应的跳转策略(如“iptables -I INPUT . -j 自定义链名”),否则在处理数

19、据包时将不会使用自定义链中的规则。后面会给个例子;好累2.3、条件匹配对于Linux防火墙来说,应该对什么样的数据包进行过滤,对什么样的数据包做地址转换.,对于一条有效的防火墙策略来说,条件匹配的设置起着决定性的作用,Linux防火墙需要非常清楚的知道针对符合什么条件的数据包进行什么样的处理。区分数据包的条件匹配方式可以分为通用匹配、隐含匹配和显式匹配,各种匹配条件可以结合在一起使用。A、通过(general)条件匹配这种匹配操作一般可以直接使用,而不依赖于其他的条件匹配及其扩展。常见的通用匹配方式包括以下集中。协议匹配。用于检查数据包的网络协议(-protocal),允许使用的协议名包含在/

20、etc/protocols文件中,常见的为tcp、udp、icmp和all(针对所有IP数据包)。在iptables命令中使用“-p 协议名”的形式。eg: 拒绝进入防火墙的所有icmp协议数据包。1rootnode1 # iptables -I INPUT -p icmp -j REJECTeg :允许防火墙转发除icmp协议以外的所有数据包(使用惊叹号!可以将除条件取反)。1rootnode1 # iptables -A FORWARD ! -p icmp -j ACCEPT地址匹配。用于检查数据包的IP地址、网络地址。在iptables命令中使用“-s 源地址”和“-d 目标地址”的形式

21、,分别对应于源(-source)地址和目标(-destination)地址。eg: 拒绝转发来自192.168.1.11主机的数据,允许转发来自192.168.0.0/24网段的数据。12rootnode1 # iptables -A FORWARD -s192.168.1.11-j REJECTrootnode1 # iptables -A FORWARD -s192.168.0.0/24-j ACCEPT网络接口匹配。用于检查数据包从防火墙的哪一个接口进入或离开。在iptables命令中使用“-i 网络接口名”和“-o 网络接口名”的形式,分别对应于接收数据包(-in-interface)

22、的网卡和发送数据包(-out-interface)的网卡eg: 丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包。123rootnode1 # iptables -A INPUT -i eth1 -s192.168.0.0/16-j DROProotnode1 # iptables -A INPUT -i eth1 -s172.16.0.0/12-j DROProotnode1 # iptables -A INPUT -i eth1 -s10.0.0.0/8-j DROPeg: 管理员在网关服务器上检测到来自某个IP网段(如 10.20.30.0/24)的频繁扫描,希望设置i

23、ptables规则封堵该IP地址段,两小时后解封。1234567rootnode1 # iptables -I INPUT -s10.20.30.0/24-j DROProotnode1 # iptables -I FORWARD -s10.20.30.0/24-j DROProotnode1 # at now +2hoursat iptables -D INPUT1at iptables -D FORWARD1at/此处按Ctrl+D组合键job4at2013-06-1122:47B、隐含(Implicit)条件匹配这种匹配通常需要以指定的协议匹配为前提,其对应的功能由iptables自动(

24、隐含)的装载入内核,一般不需要用户收到加载模块。常见的隐含匹配方式包括以下几种。端口匹配。用于检查数据包的TCP或UDP端口号,需要以“-p tcp”或“-p udp”匹配为前提。在iptables命令中使用“-sport 源端口号”、“-dport 目标端口”的形式,分别对应于源端口(-source-port)、目标端口(-destination-port)。端口可以表示为单个端口号或者用冒号“:”分割的端口范围。eg: 仅允许系统管理员从202.13.0.0/16 网段使用SSH方式远程登录防火墙主机。12rootnode1 # iptables -A INPUT -p tcp -dpor

25、t22-s202.13.0.0/16-j ACCEPTrootnode1 # iptables -A INPUT -p tcp -dport22-j DROPeg: 允许本机开放从TCP端口20-1024提供的应用服务12rootnode1 # iptables -A INPUT -p tcp -dport20:1024-j ACCEPTrootnode1 # iptables -A OUTPUT -p tcp -sport20:1024-j ACCEPTeg: 作为网关使用时,允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。12rootnode1 # iptables

26、 -A FORWARD -s192.168.0.0/24-p udp -dport53-j ACCEPTrootnode1 # iptables -A FORWARD -d192.168.0.0/24-p udp -sport53-j ACCEPT、TCP标记匹配。用于检查数据包的TCP标记位(-tcp-flags),需要以“-p tcp”匹配为前提。在iptables命令中使用“-tcp-flags检查范围被设置的标记”的形式,两个参数“检查范围”和“被设置的标记”均为TCP标记的列表,各标记之间用逗号分割。“检查范围”告诉iptables需要检查数据包的哪几个标记,“被设置的标记”则明确匹

27、配对应值为1的标记。eg: 拒绝从接口(eth0)直接访问防火墙本机的数据包,但是允许响应防火墙TCP请求的数据包进入。12rootnode1 # iptables -P INPUT DROP/此命令执行小心,不提前设置通过ssh的话,你的远程直接就断开了rootnode1 # iptables -I INPUT -i eth0 -p tcp -tcp-flags SYN,RST,ACK SYN -j REJECT、ICMP类型匹配。用于检查ICMP数据包的类型(-icmp-type),有选择的过滤数据包,需要以“-p icmp”匹配为前提。在iptables命令中使用“-icmp-type

28、ICMP类型”的形式。ICMP类型可以使用字符串或数字代码,例如“Echo-Request”(数字代码为8)、“Echo-Reply”(数字代码为0)、“Destination-Unreachable”(数字代码为3),分别对应ICMP协议的请求、回显、目标不可达数据。eg: 禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机(允许接受ICMP回应数据)。123iptables -A INPUT -p icmp -icmp-type Echo-Request -j DROPiptables -A INPUT -p icmp -icmp-type Echo-Reply -j AC

29、CEPTiptables -A INPUT -p icmp -icmp-type destination-Unreachable -j ACCEPTC、 显式(Explicit)条件匹配这种匹配的功能需要由额外的内核模块提供,因此需要手工指定匹配方式。在iptables命令中使用“-m 模块关键字”的形式调用显式匹配,当然,还的指定对应的匹配内容。在使用过显式匹配以后,可以执行“lsmod |grep xt_”命令查看到扩展防火墙功能的相关内核模块(如:xt_mac,xt_state,xt_multiport等)。常见的显式匹配包括以下几种。、MAC地址匹配。主要用于检查数据包的源MAC地址。在iptables命令中使用“-mac-source MAC地址”的形式。eg: 禁止转发来自MAC地址为3C-97-0E-77-7F-67(这是我本机的mac)的主机的数据包 1rootnode1 # iptables -A FORWARD -m mac -mac-source 3C-97-0E-77-7F-67-j DROP、多端口匹配。检查数据包的源端口、目标端口时,用于匹配多个不连续的端口号。在iptables命令中主要使用”-dports 端口列表“或者”-sports

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

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