组网课程设计.doc_第1页
组网课程设计.doc_第2页
组网课程设计.doc_第3页
组网课程设计.doc_第4页
组网课程设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前言:linux2.4 内核中netfilter/iptables的出现,为构建linux 下防火墙提供了很好的平台。iptables 是在linux 操作系统下基于2.4之上内核版本的集成网络安全工具包。该工具通过编程可以实现多种网络安全功能,如:数据包过滤、状态保持、nat(network address translation,网络地址转换)以及抵抗攻击等等。本课程设计主要是针对linux下iptables的的应用进行学习与研究,结构上可以分为三个部分:linux防火墙的概述,iptables的的简介以及如何使用iptables来为我们的日常工作所服务。例如在我们的日常工作中的应用到的过滤网址、ip,禁用端口、协议等等。利用iptables这个工具在linux服务器上实现安全稳定、功能强大的防火墙。目前这也是被企业和高校广泛采用的一种比较成熟的技术。本次毕设课题研究的实验环境均在虚拟机上实现,使用ubuntu 系统、win xp系统和win 2003系统。关键词:linux,防火墙,iptables,规则,过滤目录1 防火墙简介32 iptables简介42.1 iptables的基本概念42 .2 iptables数据包的传输过程53 iptables的使用64 iptables的一些配置实例84.1 一台虚拟机与iptable配置84.2 两台虚拟机连接通信有关的iptables配置10 4.3 三台虚拟机连接通信有关的iptables配置14 4.4 基于iptables的nat配置16 4.5 基于iptables的ftp服务器配置18 4.6 基于iptables的dns服务器配置195 iptables技巧实例216课程设计心得227参考书目231 防火墙简介防火墙是位于不同网络(如可信的企业内部网和不可信的公共网)或网络安全域之间,对网络进行隔离并实现有条件通信的一系列软件/硬件设备的集合。它通过访问控制机制确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。其基本功能是分析出入防火墙的数据包,根据ip包头结合防火墙的规则,来决定是否接收或允许数据包通过。防火墙系统可以由一台路由器,也可以由一台或一组主机组成。它通常被放置在网络入口处,所有内外部网络通信数据包都必须经过防火墙,接受防火墙的检查,只有符合安全规则的数据才允许通过。通过使用防火墙可以实现以下功能: 保护内部网络中易受攻击的服务。 控制内外网之间网络系统的访问。 隐藏内部网络的ip地址及结构的细节,提高网络的保密性。 对网络存取和访问进行监控和审计。 集中管理内网的安全性,降低管理成本。2 iptables简介2.1 iptables的基本概念在使用iptables之前我们先要理解规则、链、表这3个概念以及iptables传输数据包的过程。 规则 规则(rules)就是网络管理员预先定义的条件,每条规则的定义方式一般是“如果封包符合这样的条件就这样处理该数包”。 链 链(chains)是数据包传输的路径,每一条链中可以有一条或数条规则。 表 iptables内置了filter表、nat表和mangle表用于实现包过滤、网络地址转换和包重构的功能。(1)filter表filter表是iptables默认的表,如果没有指定使用哪个表,iptables默认使用filter表来执行所有的命令。filter表根据系统管理员预定义的一组规则过滤符合条件的数据包。在filter表中只允许对数据包进行接收、丢弃的操作,而无法对数据包进行更改。(2)nat表nat表主要是用于网络地址转换nat,该表可以实现一对一、一对多、多对多等nat工作。nat表包含了prerouting链、output链和postrouting链。其中prerouting链用于处理刚刚进入网络层未进行路由判断的数据包,output链用于处理在路由之前本地生成的数据包,postrouting链处理在路由判断之后即将通过网卡发送出去的数据包。(3)mangle表某些特殊应用可能需要改写数据包的一些传输特性,例如更改数据包的ttl和tos等,mangle表主要用于对指定包的传输特性进行修改。2 .2 iptables数据包的传输过程数据包通过iptables的具体流程如图所示。由图可知,当一个数据包进入计算机的网络接口时,数据首先进入postrouting链,然后内核根据路由表决定数据包的目标。若数据包的目的地址是本机,则将数据包送往input链进行规则检查,当数据包进入input链后,系统的任何进程都会收到它,本机上运行的程序可以发送该数据包,这些数据包会经过output链,再postrouting链发出;若数据包的目的地址不是本机,则检查内核是否允许转发,若允许,则将数据包送forward链进行规则检查,若不允许,则丢弃该数据包。若是防火墙主机本地进程产生并准备发出的包,则数据包被送往output链进行规则检查。3 iptables的使用iptables用于创建、维护和检查linux内核的ip包过滤规则,利用该命令可创建、删除或更名链,在链中创建或删除规则,设置链的策略等,功能很强大,用法也比较多,其命令基本格式为:iptables -t 表名 命令选项 链 匹配选项 操作选项1. 表名选项“-t表名”用来选择要操作的表,表名可以是 filter,nat,mangle三者之一,如该参数缺省则默认为filter表。2. 命令选项命令选项用来指定对链或规则的操作,包括插入、删除、添加规则等。 iptables的主要命令选项如表3-1所示。表3-1 iptables的主要命令选项3. 链名选项“链”指定要操作的链名,除使用系统定义的链名外,用户也可自定义链名。4. 匹配选项匹配选项指定数据包与规则匹配所应具有的特征,包括源地址、目的地址、传输协议和端口号等。主要的匹配选项如表3-2所示。表3-2 iptables的主要匹配选项5. 操作选项操作选项用于指定对匹配过滤规则的数据包所进行的处理。其形式为“-j target/jump”,其中“target”是对包的处理动作,“jump”代表一个用户自定义的链名,用于跳转到该链进行规则检查。对数据常用的处理动作如表3-3所示。表3-3 iptables的主要目标动作选项4 iptables的一些配置实例硬件环境:一台真机操作系统为window xp,cpu为酷睿i5内存为2g的笔记本电脑。软件环境:vmware workingstation虚拟机软件。 虚拟机:操作系统为window xp的虚拟机(作为客户机) 操作系统为ubuntu11.04的虚拟机(作为防火墙) 操作系统为win 2007的虚拟机(作为服务器)首先先预设置防火墙准备工作 1在电脑中装上vmware workingstation软件 2分别在虚拟机里装入window xp,ubuntu11.04,win2007虚拟机。 3为xp,win2007配置一张网卡,为ubuntu配置两张网卡4 将xp与ubuntu的一张网卡连接在同一个网段,为vmnet5。并将ubuntu的另一张网卡与win2007连接在另一个网段,为vmnet6。4.1 一台虚拟机与iptable配置在ubuntu虚拟机中,先关闭处于vmnet6的网卡,并将vmnet5中的网卡设置为nat方式共享上网。如图所示:在没有设置防火墙之前,ubuntu预设定的defalut pilicy为accept,即为接受、转发、发出任何数据包,可以正常上网。如图所示:实验步骤1. 在终端中输入sudo su,输入自己在装机时设置的密码进入管理员模式。2. 输入iptables l 查看当前iptables设置的情况。如图所示:3. 输入iptables p input drop :丢弃所有进入pc的数据。再次尝试访问google失败。规则表如图所示:3 输入iptables p input drop :丢弃所有进入pc的数据。再次尝试访问google失败。如图所示:4 输入iptable a input p tcp -sport 80 j accept(-a input 表示保护的对象,当前所使用的是input chain,其保护的对象为本机。-p tcp 匹配某个特定协议的封包。-sport 80匹配源端为80的端口,http协议默认的端口号为80即端口为80的数据包可向主机发送数据包。-j 将以上条件的封包以特定的方式来处理accept 允许通过)表示接受来并允许访问tcp协议来源端口号为80的数据。再次尝试访问谷歌的ip地址:03.访问成功,如图所示:(如需允许其他协议服务,修改端口号即可)5输入iptables f清除所有规则,并预设input为accept,output为acceptiptables a output -p tcp -o etho -dport 80 j drop不允许本机的应用程序从etho接口送出封包使用http协议,在此访问谷歌的ip地址,访问失败,无法连接上服务器,如图所示 (一台虚拟机几乎用不上forward链,所以在此先不进行配置)6.将ubuntu虚拟机的连接方式改回最初的状态,及etho连接在vmnet2, etho连在vmnet14.2 两台虚拟机连接通信有关的iptables配置1. 首先配置两台虚拟机的网络,使其处在同一个网段中,相互之间能ping的通1) 在xp虚拟机中,配置它的ip地址为4,子网掩码为。并在vmware workingstation中设置使其处于vmnet6。2) 在ubuntu虚拟机中,在命令行中一管理员身份输入ifconfig eth1 3、24,这样便设置了它的ip地址为3,子网掩码为,并在vmware workingstation中设置使其处于vmnet6。2. 尝试在xp虚拟机中ping ubuntu 虚拟机,在命令行中输入命令ping 3,成功,准备工作完毕。ping结果如图所示3. 然后在ubuntu虚拟机中开始设置规则1) 首先分别输入iptables f iptables x iptables t nat f iptables t nat x清除所有以前设置的规则,进行初始化。2) 输入iptables p input drop :丢弃所有进入pc的数据。此时的规则表如图所示3)再在xp虚拟机中ping ubuntu虚拟机,发现ping结果失败,防火墙生效,对一切信息不接受。结果如图所示:同时在ubuntu虚拟机中,尝试ping xp 虚拟机,结果依然失败,防火墙不接受一切进入的信息。结果如图所示4. 在ubuntu虚拟机终端中输入iptables a input i etho j accept-a input 表示添加规则保护某个对象,而此刻的对象为input,因而添加规则保护的对象为input表-i etho 表示条件中指定输入的端口为eth0,而eth0在一台虚拟机与iptables配置中被设为与真机nat方式共享上网的接口,既网络接口-j accept 将符合上述条件的封包以accept,即允许封包通过的形式处理此时,iptables表的情况如图所示:而上述语句的整体意思就是接受所以不是来源与网络接口eth0的封包,既允许封包在局域网里进行通信。5再次在xp虚拟机中尝试ping ubuntu虚拟机,ping3,成功,即防火墙允许xp虚拟机ping ubuntu虚拟机了。结果如图所示:同时在ubuntu虚拟机里ping xp虚拟机同样成功,结果如图所示:6. 在ubuntu虚拟机终端中输入iptables i input s 4 j reject向input表插入新的规则既不允许来自ip地址为4的主机发送一切封包通过防火墙,注:如果要封ip段,例如从到54的命令是iptables -i input -s 192.168.3 .0/24 -j reject-j reject表示将封包丢掉,并会送一个destination unreachable的icmp封包给发送端,发送端的应用程序受到这个错误的信息封包之后,既会终止连接操作(iptables的规则执行顺序匹配的原则,如果不符合第一条规则,会自动跳转到下一条规则进行匹配,假使都不能匹配成功的话,会进入default pilicy进行匹配),iptables设置情况如图所示:7. 此时尝试在xp虚拟机里ping 3 ,失败,当前的连接不可达结果如图所示:8. 此时,输入iptables i input 1 -s /24 j accept-i input 1在第一条规则之前插入一条新的规则,如果不写1的话默认是第一条规则整句话的意思是防火墙允许3.0 ip端的主机发送封包到主机。9. 再次在xp虚拟机中ping ubuntu虚拟机3,ping成功,结果如图所示:同时,可以发现如果一个封包符合了某一个规则之后便不会再向下进行匹配了,因此在设计防火墙的时候,最后把所有的defalut policy都给drop掉,这样有利于后期的配置10. 由于ubuntu上iptables是不会保存规则的。要让所以让网卡关闭时保存iptables规则,启动时加载iptables规则:首先创建/etc/network/if-post-down.d/iptables 文件,添加如下内容:#!/bin/bashiptables-save /etc/iptables.rules执行:chmod +x /etc/network/if-post-down.d/iptables 添加执行权限。创建/etc/network/if-pre-up.d/iptables 文件,添加如下内容:#!/bin/bashiptables-restore /etc/iptables.rules执行:chmod +x /etc/network/if-pre-up.d/iptables 添加执行权限。创建过程如图所示:1)在终端输入2)在记事本里编辑3)在终端输入4)在记事本输入5)在终端输入至此,让网卡关闭时保存iptables规则,启动时加载iptables规则步骤完成。4.3 三台虚拟机连接通信有关的iptables配置1. 分别启动并设置三台虚拟机 1)启动xp虚拟机,其网络配置和上一个实验一样,并将其网关设为ubuntu主机的ip地址。 2)启动ubuntu虚拟机,将eth0网络接口上的那边网卡设置为vmnet7,并更改其ip地址为3 子网掩码为。并进入/etc/sysctl.conf。将net.ipv4.ip_forward=1加入其中。再在终端输入sysctl p实现路由转发。结果如图所示: 3)启动win 2003虚拟机,将其网卡设置在vmnet7 网段,设置其ip为:4 子网掩码为:,并将其网关设置为ubunbu主机的ip地址。结果如图所示: 3)在win2003 虚拟机里尝试ping xp虚拟机的ip地址,成功。所以ubuntu虚拟机正常实现路由转发功能。相应的xp虚拟机也ping的通win2003虚拟机。结果如图所示:实验准备工作完毕。2. 然后在ubuntu虚拟机中开始设置规则 1)首先分别输入iptables f iptables x iptables t nat f iptables t nat x清除所有以前设置的规则,进行初始化。 2)输入iptables p forward drop :丢弃所有需要有ubuntu虚拟机的转发的数据。 3)尝试在xp虚拟机里平win2003虚拟机,失败。结果如图所示:3. 在ubuntu终端中输入:iptables -a forward -s 4 -j acceptiptables -a forward -d 4 -j accpet转发来自4的封包4. 尝试在xp虚拟机里ping win2003虚拟机成功,防火墙允许转发来自4的封包。结果如图所示:5. 在ubuntu终端输入:iptables -i forward -s etho -j dropiptables -i forward -s eth1 -j drop防火墙不允许路由转发功能,只允许主机端向防火墙端进行访问6. 尝试在xp虚拟机里分别ping ubuntu虚拟机和win 2003虚拟机,可以发现前者成功,后者失败,防火墙规则得以验证。结果如图所示:7. 在xp虚拟机里访问win 2003的web服务器 1)取消以上实验的规则,并设定defalut pilicy为default 2)在win 2003虚拟机里安装web服务器新建一个web主页,并编辑主页内容如图所示: 3)设定web主页的ip地址为4 4)在ubuntu虚拟机里设定规则iptables -t forward -i eth1 -o eth0 -j acceptiptables -t forwrad -i etho -o eht1 -j accept允许封包在eth0与eth1之间相互转发 5)在xp虚拟机ie里尝试访问4,访问成功。结果如图所示:4.4 基于iptables的nat配置1. 打开xp虚拟机与ubuntu虚拟机并对其进行配置 1)xp的虚拟机配置不变 2)在ubuntu虚拟机中,eth1接口不变,将eth0改回nat方式(既默认设置好的vmnet8)与真机共享上网。结果如图所示: 3)在xp虚拟机中尝试ping ubuntu虚拟机ip地址3 ,成功。并尝试ping百度的ip地址 。失败。结果如图所示:准备工作完毕2. 在ubuntu虚拟机中进入/etc/sysctl.conf。将net.ipv4.ip_forward=1加入其中。再输入sysctl p实现路由转发。3. 在ubuntu虚拟机中设定规则 1)先清空所有规则 iptables x iptables -t nat f iptables t nat x iptables -z 2)设定defalut pilicy iptables -p input accept iptables -p output accept iptables -p forward accept 3)设定forward转发连规则,允许转发从eth1接口进来的封包 iptables -a forward -i eth1 -j accept 4)设定nat规则 iptables -t nat -a postrouting -o eth0 -j masquerade 由于nat链不是默认的规则链,所以需要用-t nat。-a postrouting 在路 由之前进行nat规则检查。-o eth0表示匹配的条件是从eth1接口流出。-j masquerade表示符合条件的封包用nat的ip伪装技术 规则设定完毕,规则表如图所示:4. 尝试在xp虚拟机里ping百度ip地址 ,成功,结果如图所示: 5. 在ubuntu虚拟机的规则链中插入规则 iptables -i forward -s 4 -j drop 在规则表中阻止来自ip地址为4的封包进行转发6. 再次尝试在xp虚拟机中ping百度的ip地址,尝试失败。结果如图所示: 7. 恢复到规则设定完毕的状态,并删除postrouting链中规则 输入iptables -t nat -a postingrouting -o eth0 -s 4 -j snat -to 38 如果4这台主机要访问因特网上的主机,其服务请求封包内的source ip必然为private ip ,这个访问动作必然会失败,因而必须籍由nat主机上的snat机制将外送封包内的source ip改为nat主机上的public ip,这样才能让因特网上的主机响应来自回来的封包可以顺利返回到nat主机对外的public ip上,如果这个public ip不是固定的,可以像步骤4那样设定,设定为-j masquerade ,再次访问百度,成功。8. 如果要保护服务器端端的话,需要使用dnat方式,输入iptables -t nat -a prerouting -i eth0 -d 4 -j dnat -to 3在preouting链中设定,当要访问ip地址为4的服务器的话,将其ip dnat为3.隐藏服务器端的ip,当封包一进入nat机制,封包内的destionation ip就立即被变更。4.5 基于iptables的ftp服务器配置1. 在ubuntu虚拟机中,将eth0改为与主机nat方式共享上网,在安装ftp服务器具体步骤如下: 1)在终端中在管理员身份下使用命令apt-get install vsftpd 进行 下载并安装ftp服务器 2)安装完成后,输入命令vsftp进行服务器的设置,输入用户名,密码,然后输入命令ls -l查看服务器中全部文件的列表,如图所示: 3)在终端中输入 iptables -p input drop,禁止其他机器访问ubuntu中的ftp服务器 4)在xp虚拟机命令行中输入ftp ,open 3,打开ftp服务器失败结果如图所示:以上预设定完毕2) 在iptables中设置是win xp虚拟机能够访问ftp服务器,由于ftp服务器使用的是20和21号端口,所以在防火墙中只需要开放这两个端口就行了。iptables -a input -p tcp -dport 21 -j acceptiptables -a input -p tcp -dport 20 -j accept让20和20号端口发出封包给需要文件的主机并且再加一条规则,允许连接保持的被动访问:iptables a input -m state state established,related j accept其中-m 参数用来匹配连接状态,状态共有四种:invalid establishede new和related。3再次尝试在win xp虚拟机访问ftp服务器,成功,结果如图所示:4.6 基于iptables的dns服务器配置1. 在ubuntu虚拟机中安装dns服务器,具体步骤如下: 1)在终端中输入apt-get install dnsmasq 2)安装成功后,在终端中输入host ,解析域名成功,结果如图所示:2. 在iptables中配置default plicilyiptables -p input drop再次尝试解析.失败,结果如图所示3. 由于dns服务器使用的是udp协议中的dns协议即开53号端口,并且需要tcp协议中http协议即80端口的支持,所以为了配置该服务器的防火墙,需要开放53和80号端口。输入命令:iptables -a input -p tcp -sport 80 -j acceptiptables -a input -p udp -sprot 53 -j accept即允许解析出来的封包进入80 和53号端口4. 再次尝试在终端中输入:host ,成功,结果如图所示:5 iptables技巧实例(一).禁止客户机访问不健康网站【例1】添加iptables规则禁止用户访问域名为的网站,然后查看filter表的forward链规则列表。iptables-iforward- -j dropiptables -t filter -l forward【例2】添加iptables规则禁止用户访问ip地址为的网站,然后查看filter表的forward链规则列表。iptables -i forward -d -j dropiptables -t filter -l forward(二).禁止某些客户机上网【例1】添加iptables规则禁止ip地址为00的客户机上网,然后查看filter表的forward链规则列表。iptables -i forward -s 00 -j dropiptables -t filter -l forward【例2】添加iptables规则禁止子网里所有的客户机上网,然后查看filter表的forward链规则列表。iptables -i forward -s /24 -j dropiptables -t filter -l forward(三).禁止客户机访问某些服务【例1】禁止子网里所有的客户机使用ftp协议下载(即封闭tcp协议的21端口),然后查看filter表的forward链规则列表。iptables -i forward -s /24 -p tcp -dport 21 -j dropiptables -t filter -l forward【例2】禁止子网里所有的客户机使用telnet协议连接远程计算机(即封闭t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论