410 likes | 528 Views
1 . 项目课题引入. 2 . 防火墙的工作原理. 3 . 防火墙的配置与管理. 4 . NAT 的配置. 5 . 现场演示案例. 课题引入 —— 项目背景.
E N D
1. 项目课题引入 2. 防火墙的工作原理 3. 防火墙的配置与管理 4. NAT的配置 5. 现场演示案例
课题引入——项目背景 • 假设某单位租用DDN专线上网。网络拓扑如下图所示。iptables防火墙的eth0接口连接外网,IP地址为222.206.160.100;eth1接口连接内网,IP地址为192.168.1.1。假设在内网中存在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表主要用于对指定的包进行修改。在Linux 2.4.18内核之前,mangle表仅包含PREROUTING链和OUTPUT链。在Linux2.4.18内核之后,包括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链的最后添加一条规则,对来自192.168.1.1这台主机的数据包丢弃 。
iptables命令举例 • 【例15-6】向filter表中的INPUT链的第3条规则前面插入一条规则,允许来自于非192.168.3.0/24网段的主机对本机的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地址为192.168.0.1。企业内部网络的客户机都只有私有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的内核转发功能。 • [root@RHEL4 ~]# echo “1”>/proc/sys/net/ipv4/ip_forward • 实现SNAT。 • [root@RHEL4 ~]# 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的内核转发功能。 • [root@RHEL4 ~]# echo “1”>/proc/sys/net/ipv4/ip_forward • 实现IP伪装。 • [root@RHEL4 ~]# iptables –t nat –A POSTROUTING –o ppp0 -j MASQUERADE
使用Iptables实现NAT • 【例15-11】假设某企业网中NAT服务器安装了双网卡,eth0连接外网,IP地址为222.206.160.100。eth1连接内网,IP地址为192.168.0.1。企业内部网络WEB服务器的IP地址为192.168.1.2。要求当Internet网络中的用户在浏览器中输入http:// 222.206.160.100时可以访问到内网的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. 清空所有的链规则 • [root@RHEL4 ~]# iptables -F • //2. 禁止iptables防火墙转发任何数据包 • [root@RHEL4 ~]# 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. 接受来自内网的数据包通过 • [root@RHEL4 ~]# iptables -A FORWARD –s 222.206.100.0/24 –j ACCEPT • //5. 对于所有的ICMP数据包进行限制,允许每秒通过一个数据包,该限制的触发条件是10个包 • [root@RHEL4 ~]# iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
作业 • 根据如下防火墙配置的需求,写出配置命令: • 设置filter表中3个链的默认策略为拒绝 • 查看所有链的规则列表 • 添加一个用户自定义的链custom1 • 向filter表的INPUT链的最后添加一条规则,对来自192.168.1.10这台主机的数据包丢弃 • 向filter表中的INPUT链的第3条规则前面插入一条规则,允许来自于非192.168.3.0/24网段的主机对本机的25端口的访问