Linux网络管理及应用第13章.ppt
Linux网络管理及应用,第13章 iptables防火墙与NAT服务器的配置与应用,一、iptables的基本概念,1.iptables 简介iptables防火墙管理程序是用来建立Netfilter防火墙的,它的前身是ipchains。ipchains是随着Linux 2.2.x内核发行的防火墙管理程序,在Linux内涵发展到2.4.x后,ipchains逐渐被功能更强大的iptables所取代。和ipchains相比,iptables在语法上最大的差别在于输入和输出的网络接口被分开定义。iptables具有很高的模块化程度,一些模块甚至需要显示的加载。iptables可以配置有状态的防火墙。通常所说的iptables防火墙其实是iptables/netfilter数据包过滤防火墙,它有两个基本组件,即netfilter和iptables。,2.iptables 概念iptables使用规则、链和表的结构来规范整个防火墙的规则集,下面分别介绍这三个在iptables中非常重要的概念。规则(rules)iptables规则就是iptables防火墙管理命令,用户通过这些命令执行防火墙策略并管理防火墙行为。规则可以指定源地址、目的地址、协议(TCP、UDP、ICMP等)和服务类型(HTTP、FTP、SMTP)等各种不同的数据包报头信息。,链(chain)不同的规则针对不同的数据包,一般我们在审核特定的数据包时都会采用不止一条规则。这些针对特定数据包的一条或多条规则即构成了一条规则链(chains),也就是数据包在通过防火墙时需要通过的路径。表(tables)iptables的表(tables)提供某些特定的功能。iptables内置有三个表:filter表、nat表和mangle表。其中,filter表实现数据包过滤;nat表实现网络地址转换;mangle表实现数据包重构。,3.iptables 对数据包的处理过程,4.状态机制iptables防火墙是有状态的防火墙,所谓有状态的防火墙指的是iptables中有状态机制,能够对某个特定的连接进行连接跟踪。iptables中运行状态机制允许我们编写更严密的规则,从而使iptables防火墙比非状态防火墙更安全。在iptables上一共有四种状态,分别被称为NEW、ESTABLISHED、INVALID、RELATED,这四种状态对于TCP、UDP、ICMP三种协议均有效。,二、iptables命令,1.启动iptables服务启动iptables使用下面两条命令:#/sbin/chkconfig level 345 iptables on#/sbin/service iptables startChkconfig命令表示在系统启动时iptables在相应启动级别的缺省设置。,2.iptables命令格式iptables命令的基本语法都是以iptables本身开始的,后面跟着一个或多个选项、一个规则链、一个预定义条件和一个目标或部署(disposition)。一般格式如下:iptables-t table command match target/jump表选项用于指定命令应用于哪个表,可以是系统内置的filter表、nat表或者mangle表中的任意一个。命令选项用于指定iptables对提交的规则采取什么样的操作,包括插入、删除和添加规则等。,命令选项,匹配选项匹配选项指定数据包与规则匹配时所应具有的特征,包括源地址、目标地址、传输协议(例如:TCP、UDP、ICMP等)和端口号(例如:80、21、110等)。iptables的匹配规则大致可以归为五类:第一类是generic matches(通用匹配),适用于所有的规则;第二类是TCP matches,只适用于TCP包;第三类是UDP matches,只适用于UDP包;第四类是ICMP matches,只适用于ICMP包;第五类比较特殊,针对的是状态(state),所有者(owner)和访问的频率限制(limit)等。通用匹配是最常用的,无论我们使用的是何种协议和匹配的何种扩展,通用匹配都是可用的。,通用匹配选项,动作选项指定数据包与规则匹配后,iptables对数据包采取何种处理方式。动作选项,3.iptables常用命令(1)定义默认策略iptables-t table 参数说明如下:-t table:指定默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有特别指明,iptables默认使用filter表。:定义默认策略。:指定默认策略应用于哪个链,可以使用INPUT、OUTPUT、FORWORD、PREROUTING和POSTROUTING。:处理数据包的动作,可以使用接受数据包(ACCEPT)和丢弃数据包(DROP)。,(2)查看iptables规则iptables-t table 参数说明:查看指定表和指定链的规则列表 查看指定表中特定链的规则列表,如果不指明特定链,则显示某个表中所有链的规则列表。,(3)增加、插入、删除和替换规则iptables-t table 链名 规则编号-i|o 网卡名称-p 协议类型-s 源IP地址|源子网-sport 源端口号-d 目的IP地址|目的子网-dport 目的端口号 说明:A 新增加一条规则,并添加到规则列表的最后一行,该参数不能使用规则编号。I 在指定列表的指定位置插入一条规则,未指定位置时,则插入到第一条规则前。D 从规则列表中删除一条规则,需要指定具体的规则定义或规则编号。R 替换指定的规则,必须要指定待替换的规则编号。规则编号 编号按照规则列表的顺序排列,起始编号为1。,(4)清除规则和计数器iptables t table 说明:F 删除指定表中所有的规则。Z 将指定表中数据包计数器和流量计数器清零。,三、使用iptables建立NAT服务器,1.NAT服务NAT(Network AddressTranslation,网络地址转换)是一种用另一个地址来替换IP数据包头部中的源地址或目的地址的技术。这种技术使得人们在IP地址上完全将内部网络和外部网络隔离开来,内部网络的地址设置不用受到外部网络的限制,这使得随着网络应用高速发展对日益严重IPv4地址不足所造成的紧张状况大为缓解。,2.使用iptables配置NAT服务器iptables完全支持NAT功能,包括源地址转换(SNAT)和目的地址转换(DNAT),通过IP伪装,也部分的支持NAT功能。,3.源地址NAT(SNAT)在iptables的nat表中存在两种形式的源地址NAT:SNAT和MASQUERADE,它们需要定义为不同的策略。SNAT是标准的源地址转换;MASQUERADE是源地址NAT的一种特殊形式,主要用于基于动态IP分配的环境中。这两个策略都是应用于nat表的POSTROUTING规则链,在做出路由决定之后要根据选定的输出接口(公网IP地址)对源地址进行修改。故而,SNAT与输出IP地址有关。,(1)标准的SNAT一般的SNAT语法如下:iptables t nat A POSTROUTING o j SNAT tosource:portport说明:省略号表示任何其它指定的数据包选择规则。本来这些规则是应该添加在filter表的INPUT、OUTPUT和FORWARD规则链中的。转换的地址是用来替换数据包中的源IP地址的,可以是输出网卡IP地址,也可以是一个地址范围。端口范围定义了在NAT服务器上输出网卡可使用的端口集合。,(2)MASQUERADE源NAT一般的MASQUERADE源NAT语法如下:iptables t nat A POSTROUTING o j MASQUERADE toports port说明:在MASQUERADE源NAT中,输出网卡IP地址只有一个,故而不需要参数去指定输出IP地址。,4.目的地址NAT(DNAT)在iptables的nat表中存在两种形式的目的地址NAT:DNAT和REDIRECT。DNAT是标准的目的地址转换,REDIRECT是目的地址转换的特殊形式,可以将数据包重定向到NAT设备的输入或回环接口。这两个策略都可以应用于nat表的PREROUTING或OUTPUT规则链,在做出路由决定前选择合适的输出接口对目的地址进行修改。,(1)标准DNAT一般的DNAT语法如下:iptables t nat A PREROUTING i j DNAT todestination:portport和iptables t nat A OUTPUT i j DNAT todestination:portport,说明:省略号表示可以添加其它的数据包选择条件。地址选项是用来替换数据包中的原始目的地址的目的地址,多为本地服务器的地址,也可以指定一个目的地址范围。端口选项指定数据包将会被送到目的主机输入接口的目的端口或端口范围。端口选项是可选的。,(2)重定向目的地址NAT一般的REDIRECT语法如下:iptables t nat A PREROUTING i j REDIRECT toports 和iptables t nat A OUTPUT o j REDIRECT toports,REDIRECT重定向数据包到执行REDIRECT操作的那台主机。到达输入接口的数据包大多是送到其它的本地主机的。另一个情况可能是数据包是发往一个特定的本地服务端口的,并且数据包被透明地重定向到主机上一个不同的端口。,5.NAT客户端的配置(1)Linux中NAT客户端的配置编辑文件/etc/sysconfig/network,使用GATEWAY选项指定默认网关的IP地址。,编辑文件/etc/resolv.conf,使用nameserver选项指定DNS服务器的IP地址,可以指定多台DNS服务器IP地址,但只有前3台是有效的。客户端将按顺序查询DNS服务器。,(2)Windows 2000/XP/2003中NAT客户端的配置Windows2000/XP/2003中配置NAT客户端也很简单,只需要按上面一样的要求配置默认网关(NAT服务器的IP地址)和DNS服务器IP地址就可以了。,四、小结,本章主要内容:(1)防火墙工作的基本原理(2)iptables的基本概念(3)iptables建立NAT服务器及配置NAT服务器,