Iptabes设置实验报告.docx
- 文档编号:23791074
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:26
- 大小:1.51MB
Iptabes设置实验报告.docx
《Iptabes设置实验报告.docx》由会员分享,可在线阅读,更多相关《Iptabes设置实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
Iptabes设置实验报告
实验名称:
小组成员:
指导教师:
所属班级:
一.实验描述
【实验背景】
IP-Table是与最新的2.6.x版本Linux内核集成的IP信息包过滤系统。
如果Linux系统连接到因特网或LAN的服务器,或连接到LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。
netfilter/IP-TableIP信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。
这些规则存储在专用的信息包过滤表中,而这些表集成在Linux内核中。
在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
【实验目的】
根据实验要求配置IP-Table,掌握IP-Table规则的编写。
【实验环境】
虚拟机使用信息:
VirtualBox与Vmware
Linux版本信息:
Ubuntu12.04.2(Final)
Linux内核版本:
3.8.0
二.实验准备
在进行IP-Table设置前需要搭建实验环境,实验所需的环境配置如下图所示:
【基于实验指导书Lab-6】
其中,1号机、3号机是内网计算机,2号机为网关,最右边蓝色区域为外网。
实验环境搭建成功之后,需要完成下面的实验步骤:
【PartA】
1、在2号机上用NAT表的POSTROUTING链配置NAT
1)伪装(MASQUERADE)包使内网的IP地址从外网隐藏
2)从1号机和3号机,只允许通过SSH连接到外网
2、此步骤的NAT配置在整个实验过程中持续有效
【PartB】
为来自或者到达2号机(网关)的包编写规则,到达以下目的:
1、允许来自或者到达2号机的SSH连接
2、允许来自或者到达2号机的ping连接
3、阻断来自或者到达2号机的其他所有通信
4、提示:
PartB需要INPUT和OUTPUT链,但不需要FORWARD链
【PartC】
1、清除PartB中filter表设置的规则
2、仅允许1号机(不允许3号机)向外网中的主机发起SSH通信
3、阻断其他所有通信
4、提示:
PartC需要FORWARD,INPUT和OUTPUT链
三.IP-Table规则分析
【IP-Table规则】——基于网络百科知识(摘要)
功效:
IP-Table规则指定所检查包的特征和目标。
如果包不匹配某条规则,将送往该链中下一条规则检查。
1)目标值(TARGETS)
目标值可以是用户定义的链名,也可以是某个专用值,如:
ACCEPT(通过)、DROP(删除)、QUEUE(排队)或者RETURN(返回)。
ACCEPT:
表示让这个包通过;
DROP:
表示将这个包丢弃;
QUEUE:
表示把这个包传递到用户空间;
RETURN:
表示停止这条链的匹配,到前一个链的规则重新开始。
如果到达了一个内建的链的末端,或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。
2)表(TABLES)
-ttable:
指定命令要操作的匹配包的表。
在IP-Table规则中有三个表,分别为:
filter:
这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)。
nat:
这个表被查询时表示遇到了产生新的连接的包。
它由三个内建的链构成:
PREROUTING(修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。
mangle:
这个表用来对指定的包进行修改。
它有两个内建规则:
PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由之前本地的包)。
3)选项(OPTIONS)
可被IP-Table识别的选项可以区分不同的种类,分别为:
●命令(COMMANDS)
这些选项指定执行明确的动作。
若指令行下没有其他规定,该行只能指定一个选项。
对于长格式的命令和选项名,所用字母长度只要保证IP-Table能从其他选项中区分出该指令就行了。
常用命令如下:
-F–flush:
清空所选链。
这等于把所有规则一个个的删除。
-X-delete-chain:
删除指定的用户自定义链。
这个链必须没有被引用,如果被引用,在删除之前你必须删除或者替换与之有关的规则。
如果没有给出参数,这条命令将试着删除每个非内建的链。
-Z–zero:
把所有链的包及字节的计数器清空。
-L–list:
显示所选链的所有规则。
如果没有选择链,所有链将被显示。
也可以和-Z选项一起使用,这时链会被自动列出和归零。
精确输出受其它所给参数影响。
-A–append:
在所选择的链末添加一条或更多规则。
当源(地址)或者/与目的(地址)转换为多个地址时,这条规则会加到所有可能的地址(组合)后面。
-D–delete:
从所选链中删除一条或更多规则。
这条命令可以有两种方法:
可以把被删除规则指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。
-P–policy:
设置链的目标规则。
●参数(PARAMETERS)
以下参数构成规则详述,如用于add、delete、replace、append和check命令。
-p-protocal[!
]protocol:
规则或者包检查(待检查包)的协议。
指定协议可以是tcp、udp、icmp中的一个或者全部,也可以是数值,代表这些协议中的某一个。
当然也可以使用在/etc/protocols中定义的协议名。
在协议名前加上"!
"表示相反的规则。
数字0相当于所有(all)。
Protocolall会匹配所有协议,而且这是缺省时的选项。
在和check命令结合时,all可以不被使用。
-s-source[!
]address[/mask]:
指定源地址,可以是主机名、网络名和清楚的IP地址。
mask说明可以是网络掩码或清楚的数字,在网络掩码的左边指定网络掩码左边"1"的个数,因此,mask值为24等于255.255.255.0。
在指定地址前加上"!
"说明指定了相反的地址段。
标志--src是这个选项的简写。
-d--destination[!
]address[/mask]:
指定目标地址,使用方法和-s类似。
-i-in-interface[!
][name]:
这是包经由该接口接收的可选的入口名称,包通过该接口接收(在链INPUT、FORWORD和PREROUTING中进入的包)。
当在接口名前使用"!
"说明后,指的是相反的名称。
如果接口名后面加上"+",则所有以此接口名开头的接口都会被匹配。
如果这个选项被忽略,会假设为"+",那么将匹配任意接口。
-o--out-interface[!
][name]:
这是包经由该接口送出的可选的出口名称,包通过该口输出(在链FORWARD、OUTPUT和POSTROUTING中送出的包)。
当在接口名前使用"!
"说明后,指的是相反的名称。
如果接口名后面加上"+",则所有以此接口名开头的接口都会被匹配。
如果这个选项被忽略,会假设为"+",那么将匹配所有任意接口。
-j--jumptarget:
-j:
目标跳转。
指定规则的目标。
也就是说,如果包匹配应当做什么。
目标可以是用户自定义链(不是这条规则所在的),某个会立即决定包的命运的专用内建目标,或者一个扩展。
如果规则的这个选项被忽略,那么匹配的过程不会对包产生影响,不过规则的计数器会增加。
四.建立相应实验环境
在本实验中需要数台计算机,分别使用相同的虚拟机以及ubuntu版本,并且其中1号机、3号机处于内网环境(它们处于同一个子网之下,并且相互间可以Ping通),另外有一台计算机(2号机)作为网关连接内网和外网,还需要有一台计算机处于外网环境。
因此要圆满完成本实验,至少需要4台计算机(最后这一台计算机可以我们利用了学校机房线程的机子)。
针对我的计算机的实际情况,可以将本机作为外网计算机,另外运行1个虚拟机作为2号机,再运行2个虚拟机作为1号机和3号机。
可是我的计算机在运行两个虚拟机的时候处理速度就变得非常慢,因此我只能运行1台虚拟机作为2号机,再运行一个虚拟机作为1号机,至于3号机,由于在PartA和PartB中,1号机和3号机的规则是相同的,因此只要有一个就足以达到验证规则的目的。
而在PartC中,二者的规则有区别,这可以通过修改1号机的IP地址达到验证的目的。
因此只运行两台虚拟机同样能达到验证规则,完成本实验的效果。
综上,在本实验中,我用本机作为外网计算机,用虚拟机ubuntu2作为内网计算机1号机,用虚拟机“ubuntu2的克隆”作为网关2号机。
配置实验环境的过程如下:
【2号机相关配置】
由于2号机是网关连接内网和外网,因此它必须有两块网卡,一块实现内网和2号机的直接通信,另一块实现外网和2号机的直接通信。
因此配置2号机的过程如下:
1)增加一个网卡
点击VMware左侧目录中的虚拟机“3000Shana”图标,右键“设置”,得到如下界面(图2),在左边界面中单击“添加”按钮进行硬件的添加,在弹出界面中选择硬件类型为“网络适配器”,然后点击“Next”。
【编辑虚拟机设置】
【选择添加硬件的类型】
之后选择网络连接方式为“自定义”,然后点击“完成”,完成增加网卡的过程。
【选择新增网卡的网络连接方式】
然后查看虚拟机的主界面,可以发现多了一个网络适配器图标,而且它连接方式变为“通用”!
【新增网卡后“Ubuntu2的克隆”的主界面】
2)运行“Ubuntu2的克隆”,修改新增网卡的有关配置
开启虚拟机“Ubuntu2的克隆”,以root用户登录。
登录后右键单击桌面上方网络连接的小图标,选择“编辑连接…”,可以看到“有线”一栏下有“Autoeth1”和“Autoeth2”两个网络接口,“Autoeth2”是新增的。
单击“Autoeth2”,选择“编辑”,在弹出界面中选择“IPv4设置”,然后选择方法为“手动”,可以看到“地址”部分变为可编辑。
单击“添加”,将地址设定为“10.10.10.1”(我认为这个IP地址的设置只要不和“Autoeth1”的IP地址在一个网段就可以),子网掩码设为默认的“255.255.255.0”,网关可以任意设定。
设定完之后选择“应用”。
【新增网卡接口“Autoeth2”的设置】
3)查看2号机的IP地址
PS:
后继所有关于ubuntu上的终端操作均以root权限为主
选择“应用程序”→“附件”→“终端”,在终端中输入命令“ifconfig”查看2号机的IP地址等信息:
【2号机的IP地址】
可以看到与外网连接的网口eth1的IP地址为:
192.168.0.98(Vmware中可以在子网范围内自由设置),与内网连接的网口eth2的IP地址为10.10.10.1,和我之前设置的一样,这说明2号机的配置成功!
2.配置1号机
1)选择“Ubuntu2”的网络连接方式
点击VMware的“Ubuntu2”的主界面中的“编辑虚拟机设置”,在弹出界面中单击“NetworkAdapter”,然后选择界面右侧的“Custom”,点击“OK”。
即将“Ubuntu2”的网络连接方式设为自定义,和“Ubuntu2的克隆”中和内网连接的网卡是一样的。
2)运行“Ubuntu2”,修改网卡的有关配置
开启虚拟机“Ubuntu2”,以root用户登录。
登录后右键单击桌面上方网络连接的小图标,选择“编辑连接…”,可以看到“有线”一栏下有“Autoeth0”这一个网络接口。
单击“Autoeth0”,选择“编辑”,在弹出界面中选择“IPv4设置”,然后选择方法为“手动”,可以看到“地址”部分变为可编辑。
单击“添加”,将地址设定为“10.10.10.2”(需要和2号机中“Autoeth1”的IP地址在一个网段),子网掩码设为默认的“255.255.255.0”,网关设定为“Autoeth1”的IP地址10.10.10.1。
设定完之后选择“应用”。
【1号机(ubuntu2)中“Autoeth0”的设置】
3)查看1号机的IP地址
选择ubuntu2的“应用程序”→“附件”→“终端”,在终端中输入命令“ifconfig”查看1号机的IP地址等信息:
【1号机的IP地址】
可以看到IP地址为为10.10.10.2,和我之前设置的一样,这说明1号机的配置成功!
3、验证环境配置成功
1)1号机和2号机能互相通信
1号机ping2号机
其中2号机的IP地址是与内网连接的网口“Autoeth2”的IP地址10.10.10.1
【1号机能ping通2号机】
2号机ping1号机
【2号机能ping通1号机】
2)2号机和外网能互相通信
首先查看本机的IP地址。
在本机点击“开始”→“运行”,输入CMD并点击确定,在出现的小黑框中输入“IPCONFIG”命令查看本机的IP地址
【本机IP地址】
外网ping2号机
其中2号机的IP地址是与外网连接的网口“Autoeth1”的IP地址192.168.0.98
【图13外网能ping通2号机】
2号机ping外网
【图142号机能ping通外网】
3)1号机和外网不能互相通信
使外网ping1号机
【外网不能ping通1号机】
4)综合1)、2)和3),可以证明符合实验要求的环境已经搭建成功!
五.实验PartA
1、在本机安装SSH服务器WinSSHD
1)从网上下载WinSSHD安装包,根据提示进行安装,安装成功后会出现提示信息
2)点击提示信息中的“确定”后会出现WinSSHD的配置界面,点击“3.Virtualaccounts”设置虚拟账户,账户名和密码都设为zmj,其他项采取默认设置,然后点击“Savechanges”保存设置。
【WinSSHD设置虚拟账户】
3)打开WinSSHD的主界面“WinSSHDControlPanel”,选择“Server”,点击“StartWinSSHD”开启WinSSHD
【开启WinSSHD】
至此就完成了WinSSHD的安装、配置及开启!
2、在1号机和2号机上安装openSSH-server
在“Ubuntu2”和“Ubuntu2的克隆”中输入命令“apt-getinstallopenssl-server”进行openssl-server的安装,安装成功会有相应信息:
【在1号机和2号机中成功安装openssl-server】
由上图知,在1号机和2号机中成功安装openssl-server,且SSH自动启动
3、编写符合要求的规则
根据IP-Table规则的说明和实验要求,编写规则如下:
1)清空表filter中的所有链及计数器(具体规则如下所示)
【PartA清空表filter中的所有链及计数器】
2)清空表nat中的所有链及计数器
【PartA清空表nat中的所有链及计数器】
3)修改表filter的默认规则
由于从1号机和3号机,只允许通过SSH连接到外网,因此要禁止INPUT链和OUTPUT链,允许FORWARD(转发)链:
【PartA修改表filter的默认规则】
4)配置POSTROUTING链,实现内网IP地址对外网的隐藏(具体规则如下图23所示)
【PartA配置POSTROUTING链,实现内网IP地址对外网的隐藏】
此规则的含义为:
-tnat:
指定nat表
-APOSTROUTING:
在POSTROUTING链后添加一条规则
-ptcp:
SSH连接为tcp协议的连接。
此条命令比较tcp协议
-s10.10.10.1/24:
包来源于内网
-oeth1:
包通过网口eth1输出,表示是向外网发的包
--dport22:
目的端口是22,表示是SSH连接
-jMASQUERADE:
如果包匹配,就跳转到MASQUERADE目标,即实现伪装
5)保存IP-Table设置
使用命令“IP-Table-save”保存IP-Table设置,并查看当前规则:
【PartA保存IP-Table设置】
由上图可知,之前对IP-Table的设置都已成功保存!
4、修改配置文件
为了能实现成功转发,还需要修改一些配置文件。
1)去掉/etc/sysctl.conf中“net.ipv4.ip_forward=1”前的注释
去掉/etc/sysctl.conf中“net.ipv4.ip_forward=1”前的注释
2)输入命令,将/proc/sys/net/ipv4/ip_forward的值设为1
【将/proc/sys/net/ipv4/ip_forward的值设为1】
5、验证规则是否正确有效
在1号机(ubuntu2)中输入命令“SSH**********.6.213”,通过SSH连接外网,在确定(yes)继续连接之后输入密码zmj,可以看到本机的命令框界面——
【PartA1号机通过SSH成功连接外网】
同时可以看到WinSSHD显示Session信息:
【PartA规则设置成功2_WinSSHD显示Session信息】
【分析】
不难看出,1号机通过SSH成功连接外网;从上图可以看出,RemoteIP为192.168.0.98,即为2号机中连接外网的网卡的IP,这说明内网IP成功实现了隐藏。
综上可以看出,PartA中规则的设置是符合实验要求的!
六.实验PartB
1、初步编写符合要求的规则
根据实验要求及提示,在保留PartA所有设置和规则的情况下,编写其他规则。
1)修改表filter的默认规则
本实验中要禁止FORWARD(转发)链:
【PartB禁止FORWARD(转发)链】
2)允许来自或者到达2号机的SSH连接
【PartB允许来自或者到达2号机的SSH连接】
3)允许来自或者到达2号机的ping连接
【PartB允许来自或者到达2号机的ping连接】
4)保存IP-Table设置
使用命令“IP-Table-save”保存IP-Table设置,并查看当前规则:
【PartB保存IP-Table设置】
【分析】
由上图可知,我之前对IP-Table的设置都已成功保存!
2、验证规则是否正确有效
1)验证:
允许来自或者到达2号机的ping连接
首先使2号机ping外网计算机:
【PartB使2号机ping外网计算机】
【分析】
由上图可知,IP-Table允许来自2号机的ping连接!
然后使外网计算机ping2号机:
【PartB使外网计算机ping2号机】
【分析】
由图34可知,IP-Table允许到达2号机的ping连接!
综上说明,规则中关于ping的部分是正确的!
2)验证:
允许来自或者到达2号机的SSH连接
使2号机通过SSH连接外网计算机
【PartB2号机通过SSH无法连接外网计算机】
【分析】
从图35可以知道,2号机通过SSH无法连接外网计算机,这说明规则中关于SSH的部分是错误的!
3、修改规则中关于SSH的部分
1)最开始我认为是相关INPUT和OUTPUT链中源端口和目的端口指定的问题,因此做了如下修改(如下图36所示):
【PartB修改规则1】
【分析】
可是保存规则后再次试图通过SSH连接,仍然失败。
2)之后我将相关INPUT和OUTPUT链中源端口和目的端口写在不同规则中,并保存IP-Table设置,然后试图让2号机通过SSH连接外网计算机,发现可以成功连接!
【PartB修改规则2,实现2号机通过SSH成功连接外网计算机】
【分析】
前两种规则都不正确的原因是:
第一种规则所描述的条件不够完整,主要是源端口和目的端口的问题;第二种规则在INPUT和OUTPUT链中,都把源端口和目的端口同时写在同一条规则中,这构成的应该是“与”的关系,因此导致规则限定的条件太过苛刻,达不到实验的要求。
4、修改规则后验证规则的有效性
在之前的步骤中,我已经验证了ping相关规则的有效性,且实现了2号机通过SSH成功连接外网计算机。
接下来需要验证外网计算机可以通过SSH连接2号机,且此规则可以阻断来自或者到达2号机的其他所有通信。
1)验证外网计算机可以通过SSH连接2号机
为了验证外网计算机可以通过SSH连接2号机,我需要在本机安装SSH的客户端,在此我选择安装的是Putty。
我从网上下载了Putty软件的压缩包,解压后可直接使用。
软件的主界面如下:
【Putty软件的压缩包】
双击“Session”,在界面右侧的“HostName”中输入想要连接到的目的IP地址,即2号机中eth1的IP地址192.168.0.98,“Port”中输入SSH的端口22。
然后单击选中“DefaultSettings”后,点击“Save”进行保存。
之后点击Open,即进行外网计算机通过SSH连接2号机的过程。
之后我们会看到弹出界面。
用户名输入root,密码为ubuntu2的克隆的root用户的密码,然后我们可以看到连接到ubuntu的欢迎信息,这说明外网计算机可以通过SSH连接2号机!
【PartB外网计算机可以通过SSH连接到2号机】
【分析】
综上可以验证,修改后的规则中关于SSH的部分是正确的!
2)验证规则阻断来自或者到达2号机的其他所有通信
我们不能对所有通信手段加以验证,在此只验证ftp通信。
试图让外网计算机通过ftp连接到2号机,发现无法连接
【PartB外网计算机无法通过ftp连接到2号机】
之后试图让2号机通过ftp连接到外网计算机,发现同样无法连接
【PartB2号机无法通过ftp连接到外网计算机】
【分析】
这说明规则阻断了来自和到达2号机的ftp连接!
综上可以验证出,PartB修改后的规则是正确的!
七.实验PartC
1、编写符合要求的规则
1)清除PartB中filter表设置的规则
清空PartB中filter表设置的规则(并没有清空nat表的设置),并且保存IP-Table的设置:
【PartC清除PartB中filter表设置的规则】
2)仅允许1号机(不允许3号机)向外网中的主机发起SSH通信
根据IP-Table规则的说明以及编写PartA和PartB中规则的经验,编写符合要求的规则并保存
【PartC规则设置】
【分析】
不同于之前所写的规则,在这里-s和-d之后都是一个固定的IP地址(即1号机的IP地址),而不是一个IP地址段。
这是实验要求所决定的。
2、验证规则是否正确有效
1)验证:
允许1号机向外网中的主机发起SSH通信
在1号机(ubuntu2)中输入命令,试图使1号机向外网中的主机发起SSH通信,可以看到1号机成功连接到外网计算机:
【PartC1号机通过SSH成功连接到外网计算机】
2)验证:
不允许3号机向外网中的主机发起SSH通信
3号机和1号机一样,都处于内网中,但二者的IP地址是不同的。
因为在搭建实验环境时,没有设置3号机,所以可以通过修改1号机的IP地址达到模拟3号机的作用。
修改1号机的IP地址为10.10.10.3,然后试图使1号机向外网中的主机发起SSH通信,发现无法连接:
【PartC3号机通过SSH不能连接到外网计算机】
3)验证:
阻断其他所有通信
和Pa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Iptabes 设置 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)