1 . 项目课题引入

41

description

1 . 项目课题引入. 2 . 防火墙的工作原理. 3 . 防火墙的配置与管理. 4 . NAT 的配置. 5 . 现场演示案例. 课题引入 —— 项目背景. - PowerPoint PPT Presentation

Transcript of 1 . 项目课题引入

Page 1: 1 .  项目课题引入
Page 2: 1 .  项目课题引入

1. 项目课题引入

2. 防火墙的工作原理

3. 防火墙的配置与管理

4. NAT的配置

5. 现场演示案例

Page 3: 1 .  项目课题引入

——课题引入 项目背景

假设某单位租用 DDN专线上网。网络拓扑如下图所示。 iptables防火墙的 eth0接口连接外网, IP地址为 222.206.160.100; eth1接口连接内网, IP地址为 192.168.1.1。假设在内网中存在WEB、 DNS和 E-

mail3台服务器,这 3台服务器都有公有 IP地址。其 IP地址如图所示。设置防火墙规则加强对内网服务器的保护,并允许外网的用户可以访问此 3台服务器。

Page 4: 1 .  项目课题引入

——课题引入 项目分析

完成本项目需要解决的问题:

1、什么是防火墙 ,其工作原理是什么

2、如何使用 Iptables进行防火墙设置

3、如何配置包过滤防火墙

4、如何实现 NAT

Page 5: 1 .  项目课题引入

——课题引入 教学目标

学习本课需要实现的教学目标:1. 掌握防火墙的概念和工作原理2. 掌握 Iptables的结构和配置方法3. 掌握包过滤防火墙的配置方法4. 掌握 NAT的配置方法

Page 6: 1 .  项目课题引入

——课题引入 应达到的职业能力

学生学习本课后应该具有的职业能力:1. 掌握为企业设计防火墙的能力2. 掌握 Linux下 Iptables的配置方法3. 掌握包过滤防火墙的配置能力4. 掌握 NAT的配置能力5. 具有较好的团队合作能力

Page 7: 1 .  项目课题引入

项目问题一 防火墙的工作原理

防火墙是一种非常重要的网络安全工具,利用防火墙可以保护企业内部网络免受外网的威胁,作为网络管理员,掌握防火墙的安装与配置非常重要。

防火墙分成 2种 :代理服务器型防火墙包过滤型防火墙

Page 8: 1 .  项目课题引入

包过滤型防火墙

包过滤型防火墙内置于 Linux系统的内核,在网络层或传输层对经过的数据包进行筛选。筛选的依据是系统内设置的过滤规则( ACL)。通过检查数据流中每个数据包的源地址、目的地址、所有的协议、端口号等因素,来决定是否允许该数据包通过。如图所示是包过滤型防火墙常用的一种模式,主要用来阻隔来自外网对内部网络的威胁。

包过滤型防火墙有两种基本的默认访问控制策略:

•一种是先禁止所有的数据包通过,然后再根据需要允许满足匹配规则的数据包通过。

•一种是先允许所有的数据包通过,再根据需要拒绝满足匹配规则的数据包通过。

Page 9: 1 .  项目课题引入

代理服务器型防火墙

代理服务器型防火墙是应用网关型防火墙,通常工作在应用层。代理服务器实际上是运行在防火墙上的一种服务器程序。服务器监听客户机的请求,如申请浏览网页等。当内网的客户机请求与外网的真实服务器连接时,客户端首先连接代理服务器,然后再由代理服务器与外网真实的服务器建立连接,取得客户想要的信息,代理服务器再把信息返回给客户。

Page 10: 1 .  项目课题引入

包过滤型防火墙工作原理 包过滤型防火墙的工作过程:( 1)数据包从外网传送给防火墙后,防火墙在 IP层向 TCP层传输数据前,将

数据包转发给包检查模块进行处理。

( 2)首先与第一条过滤规则进行比较。

( 3)如果与第一条规则匹配,则进行审核,判断是否允许传输该数据包,如果

允许则传输,否则查看该规则是否阻止该数据包通过,如果阻止则将该数据包

丢弃。

( 4)如果与第一条过滤规则不同,则查看是否还有下一条规则。如果有,则与

下一条规则匹配,如果匹配成功,则进行与( 3)相同的审核过程。

( 5)依此类推,一条一条规则匹配,直到最后一条过滤规则。如果该数据包与

所有的过滤规则均不匹配,则采用防火墙的默认访问控制策略策略(丢掉该数

据包,或允许该数据包通过)。

Page 11: 1 .  项目课题引入

包过滤型防火墙工作原理

包过滤型防火墙原理图

包过滤规则检查内容:•源、目标 IP地址

•TCP和 UDP的源、目的端口

•协议类型

•ICMP消息类型

•TCP报头中的 ACK位、序列

号、确认号

•IP校验和

Page 12: 1 .  项目课题引入

项目问题二 Netfilter/iptables架构

从 1.1内核开始, Linux下的包过滤系统经历了 3个阶段:

在 2.0内核中,采用 ipfwadm来操作内核包过滤规则。

在 2.2内核中,采用 ipchains来控制内核包过滤规则。

在 2.4内核中,采用了一个全新的内核包过滤管理工具―― iptables。

Netfilter/iptables最早是与 2.4内核版本的 Linux系统集成的 IP信息

包过滤系统。它由 Netfilter和 iptables两个组件组成。

Page 13: 1 .  项目课题引入

Netfilter/iptables架构

Netfilter组件称为内核空间,它集成在 Linux的内核中。主要由信息包过滤表( tables)组成,而表由若干个链组成,每条链中可以由一条或者多条规则组成。总的来说,Netfilter是表的容器,表是链的容器,而链又是规则的容器。

Page 14: 1 .  项目课题引入

Netfilter/iptables架构

( 1)规则。规则存储在内核的包过滤表中,分别指定了源、目的 IP地址、传输协议、服务类型等。当数据包与规则匹配时,就根据规则所定义的方法来处理数据包,如放行、丢弃等动作。

( 2)链。链是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当数据包到达一条链时,会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件,如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则将继续检查下一条规则。如果该数据包不符合链中任一条规则,会根据该链预先定义的默认策略处理数据包。

Page 15: 1 .  项目课题引入

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五个链。

Page 16: 1 .  项目课题引入

iptables传输数据包过程

iptables传输数据包的过程如下图所示。

Page 17: 1 .  项目课题引入

iptables传输数据包过程

打开 Linux的路由转发功能:

( 1) 修改内核变量 ip_forward

( 2)修改 /etc/sysctl.conf “文件使 net.ipv4.ip_forward”的值设置为 1 。

Page 18: 1 .  项目课题引入

iptables命令iptables命令格式为: iptables [-t 表名 ] - 命令 [链名 ] 匹配条件 目标动作

Iptables表的常用命令:

Page 19: 1 .  项目课题引入

iptables命令Iptables命令中的常用匹配规则:

Page 20: 1 .  项目课题引入

iptables命令Iptables命令中的常用目标动作选项:

Page 21: 1 .  项目课题引入

iptables命令制定永久性规则集:

保存规则集:

恢复规则集:

Page 22: 1 .  项目课题引入

项目问题三 使用 iptables配置包过滤防火墙

【例 15-1 】清除所有链中的规则 。

Page 23: 1 .  项目课题引入

iptables命令举例

【例 15-2】设置 filter表中 3 个链的默认策略为拒绝 。

【例 15-3 】查看所有链的规则列表 。

Page 24: 1 .  项目课题引入

iptables命令举例

【例 15-4】添加一个用户自定义的链 custom 。

Page 25: 1 .  项目课题引入

iptables命令举例

【例 15-5】向 filter表的 INPUT链的最后添加一条规则,对来自 192.168.1.1 这台主机的数据包丢弃 。

Page 26: 1 .  项目课题引入

iptables命令举例

【例 15-6】向 filter表中的 INPUT链的第 3条规则前面插入一条规则,允许来自于非 192.168.3.0/24网段的主机对本机的 25端口的访问 。

Page 27: 1 .  项目课题引入

iptables命令举例

【例 15-7】向 filter表的 INPUT链中添加一条规则,拒绝外界主机访问本机 tcp协议的 100至 1024端口。

Page 28: 1 .  项目课题引入

iptables命令举例

【例 15-8】向 filter表的 INPUT链中添加一条规则,拒绝来自其他主机的 ping 请求 。

Page 29: 1 .  项目课题引入

项目问题三 NAT的基本知识

NAT的主要功能:

( 1)从 Intranet传出的数据包由 NAT将它们的专用地址转

换为公用地址。

( 2)从 Internet传入的数据包由 NAT将它们的公用地址转

换为专用地址。

( 3)支持多重服务器和负载均衡。

( 4 )实现透明代理 。

Page 30: 1 .  项目课题引入

NAT的基本知识

NAT的工作过程:

( 1)客户机将数据包发给运行 NAT的计算机。

( 2 ) NAT将数据包中的端口号和专用的 IP地址换成它自己的端口号

和公用的 IP地址,然后将数据包发给外部网络的目的主机,同时记录

一个跟踪信息在映像表中,以便向客户机发送回答信息。

( 3)外部网络发送回答信息给 NAT。

( 4) NAT将所收到的数据包的端口号和公用 IP地址转换为客户机的

端口号和内部网络使用的专用 IP 地址并转发给客户机。

Page 31: 1 .  项目课题引入

NAT的基本知识

NAT的工作过程示意图:

Page 32: 1 .  项目课题引入

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 。

Page 33: 1 .  项目课题引入

使用 Iptables实现 NAT

用户根据规则所处理的信息包类型,使用 iptables命令

设置 NAT规则:

要做源 IP地址转换的数据包的规则被添加到

POSTROUTING链中。

要做目的 IP地址转换的数据包的规则被添加到

PREROUTING链中。

直接从本地出去的数据包的规则被添加到 OUTPUT链

中。

Page 34: 1 .  项目课题引入

使用 Iptables实现 NAT

数据包穿越 NAT的工作流程示意图:

Page 35: 1 .  项目课题引入

使用 Iptables实现 NAT

【例 15-10】假设某企业网中NAT服务器安装了双网卡, eth0连接外网, eth1连接内网, IP地址为 192.168.0.1。企业内部网络的客户机都只有私有 IP地址。利用NAT服务使企业内部网络的计算机能够连接 Internet 网络。

Page 36: 1 .  项目课题引入

【例 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

Page 37: 1 .  项目课题引入

【例 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

Page 38: 1 .  项目课题引入

使用 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服务器。

Page 39: 1 .  项目课题引入

【例 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

Page 40: 1 .  项目课题引入

总结本项目的解决方案 :

//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

Page 41: 1 .  项目课题引入

作业

根据如下防火墙配置的需求 ,写出配置命令 :设置 filter表中 3个链的默认策略为拒绝查看所有链的规则列表添加一个用户自定义的链 custom1

向 filter表的 INPUT链的最后添加一条规则,对来自 192.168.1.10这台主机的数据包丢弃

向 filter表中的 INPUT链的第 3条规则前面插入一条规则,允许来自于非 192.168.3.0/24网段的主机对本机的 25端口的访问