学习情境5项目1管理与维护Iptables防火墙.ppt
Linux网络服务器配置管理项目实训教程,杨云 等编著 中国水利水电出版社,1.项目课题引入,2.防火墙的工作原理,3.防火墙的配置与管理,4.NAT的配置,5.现场演示案例,课题引入项目背景,假设某单位租用DDN专线上网。网络拓扑如下图所示。iptables防火墙的eth0接口连接外网,IP地址为;eth1接口连接内网,IP地址为。假设在内网中存在WEB、DNS和E-mail3台服务器,这3台服务器都有公有IP地址。其IP地址如图所示。设置防火墙规则加强对内网服务器的保护,并允许外网的用户可以访问此3台服务器。,课题引入项目分析,完成本项目需要解决的问题:1、什么是防火墙,其工作原理是什么2、如何使用Iptables进行防火墙设置3、如何配置包过滤防火墙4、如何实现NAT,课题引入教学目标,学习本课需要实现的教学目标:掌握防火墙的概念和工作原理掌握Iptables的结构和配置方法掌握包过滤防火墙的配置方法掌握NAT的配置方法,课题引入应达到的职业能力,学生学习本课后应该具有的职业能力:掌握为企业设计防火墙的能力掌握Linux下Iptables的配置方法掌握包过滤防火墙的配置能力掌握NAT的配置能力具有较好的团队合作能力,项目问题一 防火墙的工作原理,防火墙是一种非常重要的网络安全工具,利用防火墙可以保护企业内部网络免受外网的威胁,作为网络管理员,掌握防火墙的安装与配置非常重要。防火墙分成2种:代理服务器型防火墙包过滤型防火墙,包过滤型防火墙,包过滤型防火墙内置于Linux系统的内核,在网络层或传输层对经过的数据包进行筛选。筛选的依据是系统内设置的过滤规则(ACL)。通过检查数据流中每个数据包的源地址、目的地址、所有的协议、端口号等因素,来决定是否允许该数据包通过。如图所示是包过滤型防火墙常用的一种模式,主要用来阻隔来自外网对内部网络的威胁。,包过滤型防火墙有两种基本的默认访问控制策略:一种是先禁止所有的数据包通过,然后再根据需要允许满足匹配规则的数据包通过。一种是先允许所有的数据包通过,再根据需要拒绝满足匹配规则的数据包通过。,代理服务器型防火墙,代理服务器型防火墙是应用网关型防火墙,通常工作在应用层。代理服务器实际上是运行在防火墙上的一种服务器程序。服务器监听客户机的请求,如申请浏览网页等。当内网的客户机请求与外网的真实服务器连接时,客户端首先连接代理服务器,然后再由代理服务器与外网真实的服务器建立连接,取得客户想要的信息,代理服务器再把信息返回给客户。,包过滤型防火墙工作原理,包过滤型防火墙的工作过程:(1)数据包从外网传送给防火墙后,防火墙在IP层向TCP层传输数据前,将数据包转发给包检查模块进行处理。(2)首先与第一条过滤规则进行比较。(3)如果与第一条规则匹配,则进行审核,判断是否允许传输该数据包,如果允许则传输,否则查看该规则是否阻止该数据包通过,如果阻止则将该数据包丢弃。(4)如果与第一条过滤规则不同,则查看是否还有下一条规则。如果有,则与下一条规则匹配,如果匹配成功,则进行与(3)相同的审核过程。(5)依此类推,一条一条规则匹配,直到最后一条过滤规则。如果该数据包与所有的过滤规则均不匹配,则采用防火墙的默认访问控制策略策略(丢掉该数据包,或允许该数据包通过)。,包过滤型防火墙工作原理,包过滤型防火墙原理图,包过滤规则检查内容:源、目标IP地址TCP和UDP的源、目的端口号协议类型ICMP消息类型TCP报头中的ACK位、序列号、确认号IP校验和,项目问题二 Netfilter/iptables架构,从1.1内核开始,Linux下的包过滤系统经历了3个阶段:在2.0内核中,采用ipfwadm来操作内核包过滤规则。在2.2内核中,采用ipchains来控制内核包过滤规则。在2.4内核中,采用了一个全新的内核包过滤管理工具iptables。Netfilter/iptables最早是与2.4内核版本的Linux系统集成的IP信息包过滤系统。它由Netfilter和iptables两个组件组成。,Netfilter/iptables架构,Netfilter组件称为内核空间,它集成在Linux的内核中。主要由信息包过滤表(tables)组成,而表由若干个链组成,每条链中可以由一条或者多条规则组成。总的来说,Netfilter是表的容器,表是链的容器,而链又是规则的容器。,Netfilter/iptables架构,(1)规则。规则存储在内核的包过滤表中,分别指定了源、目的IP地址、传输协议、服务类型等。当数据包与规则匹配时,就根据规则所定义的方法来处理数据包,如放行、丢弃等动作。(2)链。链是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当数据包到达一条链时,会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件,如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则将继续检查下一条规则。如果该数据包不符合链中任一条规则,会根据该链预先定义的默认策略处理数据包。,Netfilter/iptables架构,(3)表。Netfilter中内置有3张表:filter表,nat表和mangle表。其中filter表用于实现数据包的过滤、nat表用于网络地址转换、mangle表用于包的重构。filter表是iptables默认的表,主要用于数据包的过滤。filter表包含了INPUT链(处理进入的数据包)、FORWARD链(处理转发的数据包)和OUTPUT链(处理本地生成的数据包)。nat表主要用于网络地址转换。nat表包含了PREROUTIN链(修改即将到来的数据包)、OUTPUT链(修改在路由之前本地生成的数据包)和POSTROUTING链(修改即将出去的数据包)。mangle表主要用于对指定的包进行修改。在内核之前,mangle表仅包含PREROUTING链和OUTPUT链。在内核之后,包括PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING五个链。,iptables传输数据包过程,iptables传输数据包的过程如下图所示。,iptables传输数据包过程,打开Linux的路由转发功能:(1)修改内核变量ip_forward(2)修改/etc/sysctl.conf文件使“net.ipv4.ip_forward”的值设置为1。,iptables命令,iptables命令格式为:iptables-t 表名-命令 链名 匹配条件 目标动作 Iptables表的常用命令:,iptables命令,Iptables命令中的常用匹配规则:,iptables命令,Iptables命令中的常用目标动作选项:,iptables命令,制定永久性规则集:保存规则集:恢复规则集:,项目问题三 使用iptables配置包过滤防火墙,【例15-1】清除所有链中的规则。,iptables命令举例,【例15-2】设置filter表中3个链的默认策略为拒绝。,【例15-3】查看所有链的规则列表。,iptables命令举例,【例15-4】添加一个用户自定义的链custom。,iptables命令举例,【例15-5】向filter表的INPUT链的最后添加一条规则,对来自这台主机的数据包丢弃。,iptables命令举例,【例15-6】向filter表中的INPUT链的第3条规则前面插入一条规则,允许来自于非网段的主机对本机的25端口的访问。,iptables命令举例,【例15-7】向filter表的INPUT链中添加一条规则,拒绝外界主机访问本机tcp协议的100至1024端口。,iptables命令举例,【例15-8】向filter表的INPUT链中添加一条规则,拒绝来自其他主机的ping请求。,项目问题三 NAT的基本知识,NAT的主要功能:(1)从Intranet传出的数据包由NAT将它们的专用地址转换为公用地址。(2)从Internet传入的数据包由NAT将它们的公用地址转换为专用地址。(3)支持多重服务器和负载均衡。(4)实现透明代理。,NAT的基本知识,NAT的工作过程:(1)客户机将数据包发给运行NAT的计算机。(2)NAT将数据包中的端口号和专用的IP地址换成它自己的端口号和公用的IP地址,然后将数据包发给外部网络的目的主机,同时记录一个跟踪信息在映像表中,以便向客户机发送回答信息。(3)外部网络发送回答信息给NAT。(4)NAT将所收到的数据包的端口号和公用IP地址转换为客户机的端口号和内部网络使用的专用IP地址并转发给客户机。,NAT的基本知识,NAT的工作过程示意图:,NAT的基本知识,NAT的分类:(1)源NAT(Source NAT,SNAT)。SNAT指修改第一个包的源IP地址。SNAT会在包送出之前的最后一刻做好Post-Routing的动作。Linux中的IP伪装(MASQUERADE)就是SNAT的一种特殊形式。(2)目的NAT(Destination NAT,DNAT)。DNAT是指修改第一个包的目的IP地址。DNAT总是在包进入后立刻进行Pre-Routing动作。端口转发、负载均衡和透明代理均属于DNAT。,使用Iptables实现NAT,用户根据规则所处理的信息包类型,使用iptables命令设置NAT规则:要做源IP地址转换的数据包的规则被添加到POSTROUTING链中。要做目的IP地址转换的数据包的规则被添加到PREROUTING链中。直接从本地出去的数据包的规则被添加到OUTPUT链中。,使用Iptables实现NAT,数据包穿越NAT的工作流程示意图:,使用Iptables实现NAT,【例15-10】假设某企业网中NAT服务器安装了双网卡,eth0连接外网,eth1连接内网,IP地址为。企业内部网络的客户机都只有私有IP地址。利用NAT服务使企业内部网络的计算机能够连接Internet网络。,【例15-10】的解决方案1,假设eth0的IP地址是静态分配的。公网IP地址池为222.206.160.100-222.206.160.150。此时应作SNAT,iptables命令的-j参数的语法格式为:-j SNAT-to-source/-to IP1-IP2:port1-port2 配置步骤:打开Linux的内核转发功能。rootRHEL4#echo“1”/proc/sys/net/ipv4/ip_forward 实现SNAT。rootRHEL4#iptables t nat A POSTROUTING p tcp o eth0 j SNAT-to 222.206.160.100-222.206.160.150:1025:30000,【例15-10】的解决方案2,假设连接外网的接口是利用ADSL拨号连接的ppp0。此时应作IP伪装,iptables命令的-j参数的语法格式为:-j MASQUERADE 配置步骤:打开Linux的内核转发功能。rootRHEL4#echo“1”/proc/sys/net/ipv4/ip_forward 实现IP伪装。rootRHEL4#iptables t nat A POSTROUTING o ppp0-j MASQUERADE,使用Iptables实现NAT,【例15-11】假设某企业网中NAT服务器安装了双网卡,eth0连接外网,IP地址为。eth1连接内网,IP地址为。企业内部网络WEB服务器的IP地址为。要求当Internet网络中的用户在浏览器中输入时可以访问到内网的WEB服务器。,【例15-11】的解决方案,根据题目要求可知,此时应作DNAT。iptables命令的-j参数的语法格式为:-j DNAT-to-destination/-to IP1-IP2:port1-port2 实现DNAT的配置语句:#iptables t nat A PREROUTING p tcp d 222.206.160.100-dport 80 j DNAT-to 192.168.1.2:80或者:#iptables t nat A PREROUTING p tcp i eth0-dport 80 j DNAT-to 192.168.1.2:80,总结,本项目的解决方案:/1.清空所有的链规则rootRHEL4#iptables-F/2.禁止iptables防火墙转发任何数据包rootRHEL4#iptables-P FORWARD DROP/3.建立来自Internet网络的数据包的过滤规则#iptables-A FORWARD p tcp d 222.206.100.2 p tcp-dport 80-i eth0-j ACCEPT#iptables-A FORWARD p tcp d 222.206.100.3-p tcp-dport 53-i eth0-j ACCEPT#iptables-A FORWARD p tcp d 222.206.100.4-p tcp-dport 25-i eth0-j ACCEPT#iptables-A FORWARD p tcp d 222.206.100.4-p tcp-dport 110-i eth0-j ACCEPT/4.接受来自内网的数据包通过rootRHEL4#iptables-A FORWARD s 222.206.100.0/24 j ACCEPT/5.对于所有的ICMP数据包进行限制,允许每秒通过一个数据包,该限制的触发条件是10个包rootRHEL4#iptables-A FORWARD-p icmp-m limit-limit 1/s-limit-burst 10-j ACCEPT,作业,根据如下防火墙配置的需求,写出配置命令:设置filter表中3个链的默认策略为拒绝查看所有链的规则列表添加一个用户自定义的链custom1向filter表的INPUT链的最后添加一条规则,对来自这台主机的数据包丢弃向filter表中的INPUT链的第3条规则前面插入一条规则,允许来自于非网段的主机对本机的25端口的访问,