实验三 防火墙的配置.docx
《实验三 防火墙的配置.docx》由会员分享,可在线阅读,更多相关《实验三 防火墙的配置.docx(28页珍藏版)》请在冰豆网上搜索。
实验三防火墙的配置
实验三防火墙的配置
✧实验目的
1、了解防火墙的含义与作用
2、学习防火墙的基本配置方法
3、理解iptables工作机理
4、熟练掌握iptables包过滤命令及规则
5、学会利用iptables对网络事件进行审计
6、熟练掌握iptables NAT工作原理及实现流程
7、学会利用iptables+squid实现web应用代理
✧实验原理
Ø防火墙的基本原理
一.什么是防火墙
在古代,人们已经想到在寓所之间砌起一道砖墙,一旦火灾发生,它能够防止火势蔓延到别的寓所,于是有了“防火墙”的概念。
进入信息时代后,防火墙又被赋予了一个类似但又全新的含义。
防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合。
它是不同网络或网络安全域之间信息的唯一出入口,能根据企业的安全政策控制(允许、拒绝、监测)出入网络的信息流,且本身具有较强的抗攻击能力。
它是提供信息安全服务,实现网络和信息安全的基础设施。
在逻辑上,防火墙是一个分离器,一个限制器,也是一个分析器,有效地监控了内部网和Internet之间的任何活动,保证了内部网络的安全。
二.防火墙能做什么
1.防火墙是网络安全的屏障
一个防火墙(作为阻塞点、控制点)能极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。
由于只有经过精心选择的应用协议才能通过防火墙,所以网络环境变得更安全。
如防火墙可以禁止诸如众所周知的不安全的NFS协议进出受保护网络,这样外部的攻击者就不可能利用这些脆弱的协议来攻击内部网络。
防火墙同时可以保护网络免受基于路由的攻击,如IP选项中的源路由攻击和ICMP重定向中的重定向路径。
防火墙应该可以拒绝所有以上类型攻击的报文并通知防火墙管理员。
2.防火墙可以强化网络安全策略
通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、加密、身份认证、审计等)配置在防火墙上。
与将网络安全问题分散到各个主机上相比,防火墙的集中安全管理更经济。
例如在网络访问时,一次一密口令系统和其它的身份认证系统完全可以不必分散在各个主机上,而集中在防火墙一身上。
3.对网络存取和访问进行监控审计
如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并作出日志记录,同时也能提供网络使用情况的统计数据。
当发生可疑动作时,防火墙能进行适当的报警,并提供网络是否受到监测和攻击的详细信息。
另外,收集一个网络的使用和误用情况也是非常重要的。
首先的理由是可以清楚防火墙是否能够抵挡攻击者的探测和攻击,并且清楚防火墙的控制是否充足。
而网络使用统计对网络需求分析和威胁分析等而言也是非常重要的。
4.防止内部信息的外泄
通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。
再者,隐私是内部网络非常关心的问题,一个内部网络中不引人注意的细节可能包含了有关安全的线索而引起外部攻击者的兴趣,甚至因此而暴漏了内部网络的某些安全漏洞。
使用防火墙就可以隐蔽那些透漏内部细节如Finger,DNS等服务。
Finger显示了主机的所有用户的注册名、真名,最后登录时间和使用shell类型等。
但是Finger显示的信息非常容易被攻击者所获悉。
攻击者可以知道一个系统使用的频繁程度,这个系统是否有用户正在连线上网,这个系统是否在被攻击时引起注意等等。
防火墙可以同样阻塞有关内部网络中的DNS信息,这样一台主机的域名和IP地址就不会被外界所了解。
除了安全作用,防火墙还支持具有Internet服务特性的企业内部网络技术体系VPN。
通过VPN,将企事业单位在地域上分布在全世界各地的LAN或专用子网,有机地联成一个整体。
不仅省去了专用通信线路,而且为信息共享提供了技术保障。
三.NAT
NAT英文全称是“NetworkAddressTranslation”,中文意思是“网络地址转换”,它是一个IETF(InternetEngineeringTaskForce,Internet工程任务组)标准,允许一个整体机构以一个公用IP(InternetProtocol)地址出现在Internet上。
顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。
简单的说,NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(Internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共IP地址紧缺的问题。
通过这种方法,您可以只申请一个合法IP地址,就把整个局域网中的计算机接入Internet中。
这时,NAT屏蔽了内部网络,所有内部网计算机对于公共网络来说是不可见的,而内部网计算机用户通常不会意识到NAT的存在。
这里提到的内部地址,是指在内部网络中分配给节点的私有IP地址,这个地址只能在内部网络中使用,不能被路由(一种网络技术,可以实现不同路径转发)。
虽然内部地址可以随机挑选,但是通常使用的是下面的地址:
10.0.0.0~10.255.255.255,172.16.0.0~172.16.255.255,192.168.0.0~192.168.255.255。
NAT将这些无法在互联网上使用的保留IP地址翻译成可以在互联网上使用的合法IP地址。
而全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻址的地址。
NAT功能通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中。
比如Cisco路由器中已经加入这一功能,网络管理员只需在路由器的IOS中设置NAT功能,就可以实现对内部网络的屏蔽。
再比如防火墙将WebServer的内部地址192.168.1.1映射为外部地址202.96.23.11,外部访问202.96.23.11地址实际上就是访问192.168.1.1。
另外对资金有限的小型企业来说,现在通过软件也可以实现这一功能。
Windows98SE、Windows2000都包含了这一功能。
NAT有三种类型:
静态NAT(StaticNAT)、动态地址NAT(PooledNAT)、网络地址端口转换NAPT(Port-LevelNAT)。
其中静态NAT设置起来最为简单和最容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。
而动态地址NAT则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。
NAPT则是把内部地址映射到外部网络的一个IP地址的不同端口上。
根据不同的需要,三种NAT方案各有利弊。
动态地址NAT只是转换IP地址,它为每一个内部的IP地址分配一个临时的外部IP地址,主要应用于拨号,对于频繁的远程联接也可以采用动态NAT。
当远程用户联接上之后,动态地址NAT就会分配给他一个IP地址,用户断开时,这个IP地址就会被释放而留待以后使用。
网络地址端口转换NAPT(NetworkAddressPortTranslation)是人们比较熟悉的一种转换方式。
NAPT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。
NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。
在Internet中使用NAPT时,所有不同的信息流看起来好像来源于同一个IP地址。
这个优点在小型办公室内非常实用,通过从ISP处申请的一个IP地址,将多个连接通过NAPT接入Internet。
实际上,许多SOHO远程访问设备支持基于PPP的动态IP地址。
这样,ISP甚至不需要支持NAPT,就可以做到多个内部IP地址共用一个外部IP地址访问Internet,虽然这样会导致信道的一定拥塞,但考虑到节省的ISP上网费用和易管理的特点,用NAPT还是很值得的。
ØWindows2003防火墙
Windows2003提供的防火墙称为Internet连接防火墙,通过允许安全的网络通信通过防火墙进入网络,同时拒绝不安全的通信进入,使网络免受外来威胁。
Internet连接防火墙只包含在WindowsServer2003StandardEdition和32位版本的WindowsServer2003EnterpriseEdition中。
在Windows2003服务器上,对直接连接到Internet的计算机启用防火墙功能,支持网络适配器、DSL适配器或者拨号调制解调器连接到Internet。
它可以有效地拦截对Windows2003服务器的非法入侵,防止非法远程主机对服务器的扫描,从而提高Windows2003服务器的安全性。
同时,它也可以有效拦截利用操作系统漏洞进行端口攻击的病毒,如冲击波等蠕虫病毒。
如果在用Windows2003构造的虚拟路由器上启用此防火墙功能,能够对整个内部网络起到很好的保护作用。
1.启用/关闭防火墙
(1)打开“网络连接”,右击要保护的连接,单击“属性”,出现“本地连接属性”对话框。
(2)选择“高级”选项卡,单击“设置”按钮,出现启动/停止防火墙界面。
如果要启用Internet连接防火墙,请单击“启用(O)”按钮;如果要禁用Internet连接防火墙,请单击“关闭(F)”按钮。
2.防火墙服务设置
Windows2003Internet连接防火墙能够管理服务端口,例如HTTP的80端口、FTP的21端口等,只要系统提供了这些服务,Internet连接防火墙就可以监视并管理这些端口。
(1)解除阻止设置。
在“例外”选项卡中,可以通过设定让防火墙禁止和允许本机中某些应用程序访问网络,加上“√”表示允许,不加“√”表示禁止。
如果允许本机中某项应用程序访问网络,则在对话框中间列表中所列出该项服务前加“√”(如果不存在则可单击“添加程序”按钮进行添加);如果禁止本机中某项应用程序访问网络,则将该项服务前的“√”清除(如果不存在同样可以添加)。
在“Windows防火墙阻止程序时通知我”选项前打“√”则在主机出现列表框中不存在的应用程序欲访问网络时,防火墙会弹出提示框询问用户是否允许该项网络连接。
(2)高级设置。
在“高级”选项卡中,可以指定需要防火墙保护的网络连接,双击网络连接或单击“设置”按钮设置允许其他用户访问运行于本主机的特定网络服务。
选择“服务”选项卡,其中列举出了网络标准服务,加上“√”表示允许,不加“√”表示禁止。
如果允许外部网络用户访问网络的某一项服务,则在对话框中间列表中所列出该项服务前加“√”(如果不存在则可单击“添加程序”按钮进行添加);如果禁止外部网络用户访问内部网络的某一项服务,则将该项服务前的“√”清除(如果不存在同样可以添加)。
选择“ICMP”选项卡,允许或禁止某些类型的ICMP响应,建议禁止所有的ICMP响应。
3.防火墙安全日志设置
Windows2003防火墙可以记录所有允许和拒绝进入的数据包,以便进行进一步的分析。
在“高级”选项卡的“安全日志记录”框中单击“设置”按钮,进入“日志设置”界面。
如果要记录被丢弃的包,则选中“记录被丢弃的数据包”复选按钮;如果要记录成功的连接,则选中“记录成功的连接”复选按钮。
日志文件默认路径为C:
\WINDOWS\pfirewall.log,用记事本可以打开,所生成的安全日志使用的格式为W3C扩展日志文件格式,可以用常用的日志分析工具进行查看分析。
你也可以重新指定日志文件,而且还可以通过“大小限制”限定文件的最大使用空间。
「说明」建立安全日志是非常必要的,在服务器安全受到威胁时,日志可以提供可靠的证据。
Ølinux防火墙-iptable的应用
一.iptables简介
从1.1内核开始,linux就已经具有包过滤功能了,在2.0的内核中我们采用ipfwadm来操作内核包过滤规则。
之后在2.2内核中,采用了大家并不陌生的ipchains来控制内核包过滤规则。
在2.4内核中我们不再使用ipchains,而是采用一个全新的内核包过滤管理工具—iptables。
这个全新的内核包过滤工具将使用户更易于理解其工作原理,更容易被使用,当然也将具有更为强大的功能。
实际上iptables只是一个内核包过滤的工具,iptables可以加入、插入或删除核心包过滤表格(链)中的规则。
实际上真正来执行这些过滤规则的是netfilter(Linux内核中一个通用架构)及其相关模块(如iptables模块和nat模块)。
netfilter提供了一系列的“表(tables)”,每个表由若干“链(chains)”组成,而每条链中有一条或数条规则(rule)组成。
我们可以这样来理解,netfilter是表的容器,表是链的容器,链又是规则的容器。
netfilter系统缺省的表为“filter”,该表中包含了INPUT、FORWARD和OUTPUT3个链。
每一条链中可以有一条或数条规则,每一条规则都是这样定义的“如果数据包头符合这样的条件,就这样处理这个数据包”。
当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件:
如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。
最后,如果该数据包不符合该链中任一条规则的话,系统就会根据预先定义的策略(policy)来处理该数据包。
图3-2-1 网络数据包在filter表中的流程
数据包在filter表中的流程如图3-2-1所示。
有数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有三种情况:
(1)如果数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
(2)如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
(3)如果数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢掉。
当我们在使用iptablesNAT功能的时候,我们所使用的表不再是“filter”表,而是“nat”表,所以我们必须使用“-tnat”选项来显式地指明这一点。
因为系统缺省的表是“filter”,所以在使用filter功能时,我们没有必要显式的指明“-tfilter”。
同“filter”表一样,nat表也有三条缺省的链,这三条链也是规则的容器,它们分别是:
(1)PREROUTING:
可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的IP地址,为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT。
(2)POSTROUTING:
可以在这里定义进行源NAT的规则,在路由器进行路由之后才进行源NAT。
(3)OUTPUT:
定义对本地产生的数据包的目的NAT规则。
二.NAT工作原理
NAT的基本思想是为每个企业分配一个IP地址(或者是很少几个)来进行Internet传输。
在企业内部,每个电脑取得一唯一的IP地址来为内部传输做路由。
然而,当封包离开企业,进入ISP之后,就需要进行地址转换了。
为了使这个方案可行,IP地址的范围被声明为私有的,企业可以随意在内部使用他们。
仅有的规则是,没有包含这些地址的封包出现在Internet上。
「说明」IP私有地址范围是:
10.0.0.0~10.255.255.255/8、172.16.0.0~172.31.255.255/12、192.168.0.0~192.168.255.255/16。
如图3-2-2所示。
在企业内部,每个机器都有一个唯一的172.16.x.y形式的地址。
然而,当封包离开企业时,它要经过NAT转盒,NAT盒将内部IP源地址,即图中的172.16.0.50转换成企业的真实地址(这个地址对于Internet来说是可见的),此例中为202.198.168.150。
NAT盒通常和防火墙一起绑定在一个设备上,这里的防火墙通过小心地控制进出企业的封包提供了安全保障。
图3-2-2 NAT地址转换
三.iptables常用操作语法
四.常用通用匹配语法
对于任何协议及协议的扩展,通用匹配都可以直接使用。
(1)匹配指定协议。
匹配-p,--protocol/使用iptables-AINPUT-ptcp-jACCEPT/说明匹配指定的协议,指定协议的形式有以下几种:
①名字不分大小写,但必须是在/etc/protocols中定义的;②可以使用协议相应的整数值。
例如,ICMP的值是1,TCP是6,UDP是17;③缺少设置ALL,相应数值是0,要注意这只代表匹配TCP、UDP、ICMP,而不是/etc/protocols中定义的所有协议;④可以是协议列表,以英文逗号为分隔符,如:
udp,tcp;⑤可以在协议前加英文的感叹号表示取反,注意有空格,如:
--protocol!
tcp表示非TCP协议,也就是UDP和ICMP。
可以看出这个取反的范围只是TCP、UDP和ICMP。
(2)以IP源地址匹配包。
匹配-s,--src,--source/使用iptables-AINPUT-s192.168.0.1-jACCEPT/说明以IP源地址匹配包。
地址的形式如下:
①单个地址,如192.168.0.1,也可写成192.168.0.1/255.255.255.255或192.168.0.1/32;②网络,如192.168.0.0/24,或192.168.0.0/255.255.255.0;③在地址前加英文感叹号表示取反,注意空格,如—source!
192.168.0.0/24表示除此地址外的所有地址;④缺省是所有地址。
(3)以IP目的地址匹配包。
匹配-d,--dst,--destination/使用iptables-AINPUT-d192.168.0.1-jACCEPT/说明以IP目的地址匹配包。
地址的形式和—source完全一样。
(4)以包进入本地使用的网络接口匹配包。
匹配-i/使用iptables-AINPUT-ieth0-jACCEPT/说明以包进入本地所使用的网络接口来匹配包。
要注意这个匹配操作只能用于INPUT,FORWARD和PREROUTING这三个链,用在其他任何地方会提示错误信息。
指定接口有以下方法:
①指定接口名称,如:
eth0、ppp0等;②使用通配符,即英文加号,它代表字符数字串。
若直接用一个加号,即iptables-AINPUT-i+表示匹配所有的包,而不考虑使用哪个接口。
通配符还可以放在某一类接口的后面,如:
eth+表示匹配所有从Ethernet接口进入的包;③在接口前加英文感叹号表示取反,如:
-i!
eth0意思是匹配来自除eth0外的所有包。
(5)以包离开本地所使用的网络接口来匹配包。
匹配-o/使用iptables-AOUTPUT-o eth1-jACCEPT/说明以包离开本地所使用的网络接口来匹配包。
要注意这个匹配操作只能用于OUTPUT,FORWARD和POSTROUTING这三个链,用在其他任何地方会提示错误信息。
(6)匹配通信源端口。
匹配--source-port,--sport/使用iptables-AINPUT-ptcp--sport1111/说明当通信协议为TCP或UDP时,可以指定匹配的源端口,但必须与匹配协议相结合使用。
(7)匹配通信源端口。
匹配--destination-port,--dport/使用iptables-AINPUT-ptcp--dport80/说明当通信协议为TCP或UDP时,可以指定匹配的目的端口,但必须与匹配协议相结合使用。
五.iptables功能扩展
1.TCP扩展
iptables可以扩展,扩展分为两种:
一种是标准的;另一种是用户派生的。
如果指定了“-ptcp”,那么TCP扩展将自动加载,通过--tcp-flags扩展,我们指定TCP报文的哪些Flags位被设置,在其后跟随两个参数:
第一个参数代表Mask,指定想要测验的标志位;第二个参数指定哪些位被设置。
例:
设置iptables防火墙禁止来自外部的任何tcp主动请求,并对此请求行为进行事件记录。
其中ULOG指定对匹配的数据包进行记录,由日志生成工具ULOG生成iptables防火日志,--log-prefix选项为记录前缀。
2.ICMP扩展
例:
设置iptables防火墙允许来自外部的某种类型/代码的ICMP数据包。
其中--icmp-type为扩展命令选项,其后参数可以是三种模式:
(1)ICMP类型名称(例如,host-unreachable)。
(2)ICMP类型值(例如3)。
(3)ICMP类型及代码值(8/0)。
六.状态检测
“状态”的意思是指如果一个数据包是对先前从防火墙发出去的包的回复,则防火墙自动不用检查任何规则就立即允许该数据包进入并返回给请求者,这样就不用设置许多规则定义就可实现应用的功能。
我们可以把请求端与应答端之间建立的网络通信连接称为网络会话,每个网络会话都包括以下信息——源IP地址、目标IP地址、源端口、目的端口,称为套接字对;协议类型、连接状态(TCP协议)和超时时间等。
防火墙把这些信息称为状态(stateful)。
状态包过滤防火墙能在内存中维护一个跟踪状态的表,比简单的包过滤防火墙具有更大的安全性,而iptables就是一种基于状态的防火墙。
命令格式如下:
iptables-mstate--state[!
]state[,state,state,state]
其中,state表是一个由逗号分割的列表,用来指定连接状态,状态分为4种:
(1)NEW:
该包想要建立一个新的连接(重新连接或连接重定向)
(2)RELATED:
该包是属于某个已经建立的连接所建立的新连接。
举例:
FTP的数据传输连接和控制连接之间就是RELATED关系。
(3)ESTABLISHED:
该包属于某个已经建立的连接。
(4)INVALID:
该包不匹配于任何连接,通常这些包被DROP。
七.NAT操作
前面提到在iptables防火墙中提供了3种策略规则表:
Filter、Mangle和NAT,这3种表功能各不相同,而最为常用的就是filter和nat表。
nat表仅用于NAT,也就是网络地址转换。
做过NAT操作的数据包的地址就被改变了,当然这种改变是根据我们的规则进行的。
属于流的包只会经过这个表一次,经一个包被允许做NAT,那么余下的包都会自动地做相同的操作。
也就是说,余下的包不会再通过这个表一个一个的被NAT,而是自动完成的。
常用操作分为以下几类。
(1)SNAT(sourcenetworkaddresstranslation,源网络地址目标转换)。
SNAT是POSTROUTING链表的作用,在封包就要离开防火墙之前改变其源地址,这在极大程度上可以隐藏本地网络或者DMZ等。
比如,多个PC机使用路由器共享上网,每个PC机都配置了内网IP(私有IP),PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的IP,当外部网络的服务器比如网站Web服务器接到访问请求的时候,它的日志记录下来的路由器的IP,而不是