《第10章iptables防火墙与NAT服务PPT优秀课件》由会员分享,可在线阅读,更多相关《第10章iptables防火墙与NAT服务PPT优秀课件(59页珍藏版)》请在金锄头文库上搜索。
1、第第10章章 iptables防火墙与防火墙与NAT服务服务本章导读l 防火墙的概述l iptables简介l iptables基础l 关闭系统防火墙l NAT服务l 使用iptables实现NAT服务l iptables技巧实例110.1防火墙的概述防火墙的简介防火墙的分类防火墙的工作原理2防火墙的简介 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性。它通过访问控制机制,确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。它可以根据网络传输的类型决定IP包是否可以传进或传出内部网。防火墙通过审查经过的每一个数据包,判断它是否有相匹配的
2、过滤规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作。如果都不满足,则将数据包丢弃,从而保护网络的安全。3防火墙的简介通过使用防火墙可以实现以下功能: 可以保护易受攻击的服务; 控制内外网之间网络系统的访问; 集中管理内网的安全性,降低管理成本; 提高网络的保密性和私有性; 记录网络的使用状态,为安全规划和网络维护提供依据。4防火墙的分类 防火墙技术根据防范的方式和侧重点的不同而分为很多种类型,但总体来讲可分为包过滤防火墙和代理服务器两种类型。5防火墙的工作原理 1包过滤防火墙工作原理6防火墙的工作原理 数据包从外网传送到防火墙后,防火墙抢在IP
3、层向TCP层传送前,将数据包转发给包检查模块进行处理。 首先与第一个过滤规则比较。 如果与第一个模块相同,则对它进行审核,判断是否转发该数据包,这时审核结果是转发数据包,则将数据包发送到TCP层进行处理,否则就将它丢弃。 如果与第一个过滤规则不同,则接着与第二个规则相比较,如果相同则对它进行审核,过程与相同。 如果与第二个过滤规则不同,则继续与下一个过滤规则比较,直到与所有过滤规则比较完成。要是所有过滤规则都不满足,就将数据包丢弃。7防火墙的工作原理2代理服务型防火墙工作原理代理服务型防火墙是在应用层上实现防火墙功能的。它能提供部分与传输有关的状态,能完全提供与应用相关的状态和部分传输的信息,
4、它还能处理和管理信息。它的具体工作原理参见11.1.2节。810.2 iptables简介netfilter/iptables(下文简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换NAT等功能。 I ptables/netfilter包过滤防火墙其实是由两个组件构成的,一个是netfilter,一个是iptables。 910.3 iptables基础规则(rules)链(chains)表(tables)iptables传输数据包的过程10规则(rule
5、s) 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。 11链(chains) 链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一
6、条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。 12表(表(tables)表(tables)提供特定的功能,iptables内置了3个表,即filter表、nat表和mangle表,分别用于实现包过滤,网络地址转换和包重构的功能。 1filter表2nat表3mangle表13iptables传输数据包的过程 当一个数据包进入网卡
7、时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。 如果数据包是要转发出去的,且内核允许转发,数据包就会如图10-4所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。 1410.4关闭系统防火墙iptables命令格式iptables的使用1510.4关闭系统防火墙执行“setup”命令启动文字模式配置实用程序,在“选择一种工
8、具”中选择“防火墙配置”,然后选择“运行工具”按钮 。出现防火墙的配置界面,将“安全级别”设为“禁用”,然后选择“确定”即可。 16iptables命令格式命令格式iptables的命令格式较为复杂,一般的格式如下:iptables -t表 -命令 匹配 操作1表选项表选项用于指定命令应用于哪个iptables内置表,iptables内置包括filter表、nat表和mangle表。 17iptables命令格式命令格式2命令选项命令命令说明明-P或-policy 定义默认策略-L或-list 查看iptables规则列表-A或append 在规则列表的最后增加1条规则-I或-insert 在
9、指定的位置插入1条规则-D或-delete 从规则列表中删除1条规则-R或-replace 替换规则列表中的某条规则-F或-flush 删除表中所有规则-Z或-zero 将表中数据包计数器和流量计数器归零18iptables命令格式命令格式3匹配选项匹配匹配说明明-i或-in-interface 指定数据包从哪个网络接口进入,如ppp0、eth0和eth1等-o或-out-interface 指定数据包从哪块网络接口输出,如ppp0、eth0和eth1等-p或-proto协议类型 指定数据包匹配的协议,如TCP、UDP和ICMP等-s或-source 指定数据包匹配的源地址-sport 指定数
10、据包匹配的源端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口-d或-destination 指定数据包匹配的目标地址-dport目标端口号指定数据包匹配的目标端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口19iptables命令格式命令格式4动作选项动作作说明明ACCEPT接受数据包DROP丢弃数据包REDIRECT将数据包重新转向到本机或另一台主机的某个端口,通常用功能实现透明代理或对外开放内网某些服务SNAT源地址转换,即改变数据包的源地址DNAT目标地址转换,即改变数据包的目的地址MASQUERADEIP伪装,即是常说的NAT技术,MASQUERAD
11、E只能用于ADSL等拨号上网的IP伪装,也就是主机的IP是由ISP分配动态的;如果主机的IP地址是静态固定的,就要使用SNATLOG日志功能,将符合规则的数据包的相关信息记录在日志中,以便管理员的分析和排错20iptables的使用 1定义默认策略当数据包不符合链中任一条规则时,iptables将根据该链预先定义的默认策略来处理数据包,默认策略的定义格式如下。iptables -t表名 参数说明如下。 -t表名:指默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。 :定义默认策略。 :指默认策略将应用于哪个链,
12、可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。 :处理数据包的动作,可以使用ACCEPT(接受数据包)和DROP(丢弃数据包)。21iptables的使用2查看iptables规则查看iptables规则的命令格式为:iptables -t表名 链名参数说明如下。 -t表名:指查看哪个表的规则列表,表名用可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认查看filter表的规则列表。 :查看指定表和指定链的规则列表。 链名:指查看指定表中哪个链的规则列表,可以使用INPUT、OUTPUT、F
13、ORWARD、PREROUTING、OUTPUT和POSTROUTING,如果不指明哪个链,则将查看某个表中所有链的规则列表。22iptables的使用3增加、插入、删除和替换规则相关规则定义的格式为:iptables -t表名 链名 规则编号 -i | o 网卡名称 -p 协议类型 -s 源IP地址 | 源子网 -sport 源端口号 -d目标IP地址 | 目标子网 -dport目标端口号 参数说明如下。 -t表名:定义默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。 -A:新增加一条规则,该规则将会增加到
14、规则列表的最后一行,该参数不能使用规则编号。 -I:插入一条规则,原本该位置上的规则将会往后顺序移动,如果没有指定规则编号,则在第一条规则前插入。 -D:从规则列表中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。23iptables的使用 -R:替换某条规则,规则被替换并不会改变顺序,必须要指定替换的规则编号。 :指定查看指定表中哪个链的规则列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。 规则编号:规则编号用于插入、删除和替换规则时用,编号是按照规则列表的顺序排列,规则列表中第一条规则的编号为1。 -i | o
15、 网卡名称:i是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出。网卡名称可以使用ppp0、eth0和eth1等。 -p 协议类型:可以指定规则应用的协议,包含TCP、UDP和ICMP等。 -s 源IP地址 | 源子网:源主机的IP地址或子网地址。 -sport 源端口号:数据包的IP的源端口号。 -d目标IP地址 | 目标子网:目标主机的IP地址或子网地址。 -dport目标端口号:数据包的IP的目标端口号。 :处理数据包的动作,各个动作的详细说明可以参考表10-3。 24iptables的使用4清除规则和计数器在新建规则时,往往需要清除原有的、旧的规则,以免它们影响新设定的规则。如果
16、规则比较多,一条条删除就会十分麻烦,这时可以使用iptables提供的清除规则参数达到快速删除所有的规则的目的。定义参数的格式为:iptables -t表名 参数说明如下。 -t表名:指定默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。 -F:删除指定表中所有规则。 -Z:将指定表中的数据包计数器和流量计数器归零。2510.5 NAT服务什么是私有地址什么是NATNAT的工作原理26什么是私有地址 私有地址(Private address)属于非注册地址,是专门为组织机构内部使用而划定的。使用私有IP地址是无
17、法直接连接到Internet的,但是能够用在公司内部的Intranet的IP地址上 。私有私有IP地址范地址范围子网掩子网掩码10.0.0.010.255.255.255255.0.0.0169.254.0.0169.254.255.255255.255.0.0172.16.0.0172.31.255.255255.255.0.0192.168.0.0192.168.255.255255.255.255.027什么是NAT NAT是将一个地址域(如专用Intranet)映射到另一个地址域(如Internet)的标准方法。它是一个根据RFC 1631开发的IETF标准,允许一个IP地址域以一个公
18、有IP地址出现在Internet上。NAT可以将内部网络中的所有节点的地址转换成一个IP地址,反之亦然。它也可以应用到防火墙技术里,把个别IP地址隐藏起来不被外部发现,使外部无法直接访问内部网络设备。 28NAT的工作原理 1静态网络地址转换29NAT的工作原理 在NAT服务器上建立静态NAT映射表。 当内部主机(IP地址为192.168.16.10)需要建立一条到Internet的会话连接时,首先将请求发送到NAT服务器上。NAT服务器接收到请求后,会根据接收到的请求数据包检查NAT映射表。 如果已为该地址配置了静态地址转换,NAT服务器就使用相对应的内部公有IP地址,并转发数据包,否则NA
19、T服务器不对地址进行转换,直接将数据包丢弃。NAT服务器使用202.96.128.2来替换内部私有IP(192.168.16.10)的过程如图10.13所示。 Internet上的主机接收到数据包后进行应答(这时主机接收到202.96.128.2的请求)。 当NAT服务器接收到来自Internet上的主机的数据包后,检查NAT映射表。如果NAT映射表存在匹配的映射项,则使用内部私有IP替换数据包的目的IP地址,并将数据包转发给内部主机。如果不存在匹配映射项则将数据包丢弃。 30NAT的工作原理2动态网络地址转换31NAT的工作原理 当内部主机(IP地址为192.168.16.10)需要建立一条
20、到Internet的会话连接时,首先将请求发送到NAT服务器上。NAT服务器接收到请求后,根据接收到的请求数据包检查NAT映射表。 如果还没有为该内部主机建立地址转换映射项,NAT服务器就会决定对该地址进行转换(建立192.168.16.10:2320202.96.128.2:2320的映射项,并记录会话状态)。如果已经存在该映射项,则NAT服务器使用该记录进行地址转换,并记录会话状态。然后NAT服务器利用转换后的地址发送数据包到Internet主机上。 Internet主机接收到信息后,进行应答,并将应答信息回传给NAT服务器。 当NAT服务器接收到应答信息后,检查NAT映射表。如果NAT映
21、射表存在匹配的映射项,则使用内部公有IP替换数据包的目的IP地址,并将数据包转发给内部主机。如果不存在匹配映射项则将数据包丢弃。 32NAT的工作原理3网络地址端口转换33NAT的工作原理 当内部主机(IP地址为192.168.16.10,使用端口1235)需要与Internet上的某主机(IP地址为202.18.4.6,端口为2350)建立连接时,首先将请求发送到NAPT服务器上。NAPT服务器接收到请求后,会根据接收到的请求数据包检查NAPT映射表。如果还没有为该内部主机建立地址转换映射项,NAPT服务器就会为这个传输创建一个Session,并且给这个Session分配一个端口3200,然
22、后改变这个数据包的源端口为3200。所以原来的192.168.16.10:1235202.18.4.6:2350数据包经过转换后变为了202.96.128.2:3200202.18.4.6:2350。 Internet主机接收到信息后进行应答,并将应答信息回传给NAPT服务器。 当NAPT服务器接收到应答信息后,检查NAPT映射表。如果NAPT映射表存在匹配的映射项,则使用内部公有IP替换数据包的目的IP地址,并将数据包转发给内部主机。如果不存在匹配映射项则将数据包丢弃。 3410.6使用iptables实现NAT服务配置网络环境建立ADSL连接rp-pppoe的控制脚本使用iptables实
23、现NATNAT客户端的配置启动时自动拨号和配置NAT服务器3510.6使用iptables实现NAT服务36配置网络环境 (1)配置网卡eth0DEVICE=eth0#网卡的设备别名BOOTPROTO=static#网卡的IP地址是静态指定BROADCAST=192.168.16.255 #网卡的网络地址HWADDR=00:0C:29:FD:D3:29 #网卡的MAC地址IPADDR=192.168.16.1#网卡的IP地址NETMASK=255.255.255.0#网卡的子网掩码NETWORK=192.168.16.0#网卡的网络地址ONBOOT=yes#系统启动时激活该网卡TYPE=Eth
24、ernet#网卡的类型是以太网37配置网络环境(2)配置网卡eth1DEVICE=eth1#网卡的设备别名BOOTPROTO=static#网卡的IP地址是静态指定BROADCAST=172.16.1.255#网卡的网络地址HWADDR=00:0C:29:FD:D3:33 #网卡的MAC地址IPADDR=172.16.1.1#网卡的IP地址NETMASK=255.255.255.0#网卡的子网掩码NETWORK=172.16.1.0#网卡的网络地址ONBOOT=yes#系统启动时激活该网卡TYPE=Ethernet#网卡的类型是以太网38配置网络环境(3)为系统指定DNS服务器nameserv
25、er 61.144.56.101nameserver 202.96.128.68(4)使网络配置生效重启Linux或运行命令“/etc/init.d/network restart”使以上配置生效 。39建立ADSL连接 1rp-pppoe的安装默认情况下Red Hat Enterprise Linux安装程序会将rp-pppoe软件安装在系统上,可使用下面的命令检查系统是否已经安装了rp-pppoe软件或查看已经安装了何种版本。rpm -q rp-pppoe如果系统还未安装rp-pppoe软件,可将Red Hat Enterprise Linux 5第1张安装盘放入光驱,加载光驱后在光盘的S
26、erver目录下找到rp-pppoe软件的RPM安装包文件rp-pppoe-3.5-32.1.i386.rpm,使用下面的命令安装rp-pppoe软件。rpm -ivh /mnt/Server/rp-pppoe-3.5-32.1.i386.rpm40建立ADSL连接2设置ADSL连接参数41建立ADSL连接42建立ADSL连接43建立ADSL连接44rp-pppoe的控制脚本 1ADSL拨号adsl-start 2查看当前连接的状态如果要查看当前ADSL连接的状态,执行命令“adsl-status”即可。3断开连接如果要断开ADSL连接,执行命令“adsl-stop”即可。45使用iptabl
27、es实现NAT 使用iptables实现NAT的具体步骤如下。 打开内核的路由功能。要实现NAT功能,首先要将文件/proc/sys/net/ipv4/ip_forward设置为1(默认是0),才能打开内核的路由功能。具体的命令如下。echo 1/proc/sys/net/ipv4/ip_forward 实现IP伪装。在nat表中的POSTROUTING链加入一条规则,这条规则的内容是所有由ppp0接口送出的包会被伪装(MASQUERADE),这样就能使用iptables实现NAT命令了。具体的命令如下。iptables -t nat -A POSTROUTING -o ppp0 -j MAS
28、QUERADE46NAT客户端的配置 1Linux中NAT客户端的配置(1)设置默认网关的IP地址编辑文件/etc/sysconfig/network,然后使用GATEWAY选项来指定默认网关的IP地址。 设置DNS服务器的IP地址在Linux中配置DNS客户端的方法很简单,可直接编辑文件/etc/resolv.conf,然后使用nameserver选项来指定DNS服务器的IP地址 。47NAT客户端的配置2Windows 2000XP2003中NAT客户端的配置48启动时自动拨号和配置NAT服务器 为了能让Linux服务器在启动后自动拨号和配置NAT服务器,可添加以下命令到/etc/rc.d
29、/rc.local文件的末尾(后面介绍iptables的技巧实例,也可以添加到这个文件中)。/sbin/adsl-startecho 1/proc/sys/net/ipv4/ip_forward/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE4910.7iptables技巧实例禁止客户机访问不健康网站禁止某些客户机上网禁止客户机访问某些服务强制访问指定的站点禁止客户机使用QQ禁止使用ICMP协议发布内部网络服务器智能DNS服务50禁止客户机访问不健康网站 【例1】添加iptables规则禁止用户访问域名为的网站,然后查看fil
30、ter表的FORWARD链规则列表。iptables -I FORWARD -d -j DROPiptables -t filter -L FORWARD 【例2】添加iptables规则禁止用户访问IP地址为202.17.61.4的网站,然后查看filter表的FORWARD链规则列表。iptables -I FORWARD -d 202.17.61.4 -j DROPiptables -t filter -L FORWARD 51禁止某些客户机上网 【例1】添加iptables规则禁止IP地址为192.168.1.200的客户机上网,然后查看filter表的FORWARD链规则列表。ip
31、tables -I FORWARD -s 192.168.1.200 -j DROPiptables -t filter -L FORWARD【例2】添加iptables规则禁止192.168.2.0子网里所有的客户机上网,然后查看filter表的FORWARD链规则列表。iptables -I FORWARD -s 192.168.2.0/24 -j DROPiptables -t filter -L FORWARD52禁止客户机访问某些服务 【例1】禁止192.168.1.0子网里所有的客户机使用FTP协议下载(即封闭TCP协议的21端口),然后查看filter表的FORWARD链规则列表
32、。iptables -I FORWARD -s 192.168.1.0/24 -p tcp -dport 21 -j DROPiptables -t filter -L FORWARD 【例2】禁止192.168.1.0子网里所有的客户机使用Telnet协议连接远程计算机(即封闭TCP协议的23端口),然后查看filter表的FORWARD链规则列表。iptables -I FORWARD -s 192.168.1.0/24 -p tcp -dport 23 -j DROPiptables -t filter -L FORWARD53强制访问指定的站点 【例】强制所有的客户机访问210.21.
33、118.68这台Web服务器,然后查看nat表的PREROUTING链规则列表。iptables -t nat -I PREROUTING -i eth0 -p tcp -dport 80 -j DNAT -to 210.21.118.68:80iptables -t nat -L PREROUTING54禁止客户机使用QQ iptables -I FORWARD -p tcp -dport 8000 -j DROPiptables -I FORWARD -p udp -dport 8000 -j DROPiptables -I FORWARD -d -j DROPiptables -I F
34、ORWARD -d -j DROPiptables -I FORWARD -d -j DROPiptables -I FORWARD -d -j DROPiptables -I FORWARD -d -j DROPiptables -I FORWARD -d -j DROP55禁止使用ICMP协议 【例】禁止Internet上的计算机通过ICMP协议ping到NAT服务器的ppp0接口,但允许内网的客户机通过ICMP协议ping的计算机,然后查看filter表的INPUT链规则列表。iptables -I INPUT -i ppp0 -p icmp -j DROPiptables -
35、t filter -L INPUT56发布内部网络服务器发布内部网络服务器【例1】发布内网192.168.16.200主机的Web服务,Internet用户通过访问ppp0的IP地址即可访问该主机的Web服务。iptables -t nat -I PREROUTING -i ppp0 -p tcp -dport 80 -j DNAT -to-destination 192.168.16.200:80iptables -t nat -L PREROUTING【例2】发布内网192.168.16.100主机的终端服务(使用的是TCP协议的3389端口),Internet用户通过访问ppp0的IP地
36、址访问该机的终端服务。iptables -t nat -I PREROUTING -i ppp0 -p tcp -dport 3389 -j DNAT -to-destination 192.168.1.100:3389iptables -t nat -L PREROUTING57智能智能DNS服务服务【例】将所有从eth0接口进入的DNS请求都发送到IP地址为61.144.56.101这台服务器解析,然后查看nat表的PREROUTING链规则列表。iptables -t nat -I PREROUTING -i eth0 -p udp -dport 53 -j DNAT -to-desti
37、nation 61.144.56.101:53iptables -t nat -I PREROUTING -i eth0 -p tcp -dport 53 -j DNAT -to-destination 61.144.56.101:53iptables -t nat -L PREROUTING5810.8练习题【练习1】使用iptables作防火墙,设置以下规则。(1)禁止IP地址192.168.1.5从eth0访问本机。(2)禁止子网192.168.5.0从eth0访问本机的Web服务。(3)禁止IP地址192.168.7.9从eth0访问本机的FTP服务。【练习2】在Linux服务器上建立ADSL连接。【练习3】使用iptables实现NAT服务,并设置以下规则。(1)禁止所有的客户机使用QQ。(2)禁止Internet上的计算机通过ICMP协议ping到Linux服务器的ppp0接口。(3)发布内网192.168.2.5主机的Web服务到Internet。(4)禁止用户访问域名为的网站。(5)在Linux服务器上实现智能的DNS服务。59