Iptables防火墙配置与管理

Download Report

Transcript Iptables防火墙配置与管理

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端口的访问