IPtables实验
2022/4/5 7:20:32
本文主要是介绍IPtables实验,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
IPtables实验指导书
依照原先的实验报告模板,本指导书结合镜像做出了一些调整,抛弃了一些不必要的过程,主要实现iptables这个防火墙的作用和策略配置体现。这个实验的前期准备可能复杂,希望同学们能耐心地看指导书,并结合计算机网络的知识去理解这个实验。这个实验不是为了简单的复现几个策略指令。
ps:借鉴了刘浩源学长的博客https://sculptor-liu.github.io/2021/04/26/Centos%E4%B8%ADiptables%E9%85%8D%E7%BD%AE/
1.准备工作
说明:虚拟机搭建时,同学们看到分配内存为40G担心电脑内存不够,其实没有必要,因为不是设置40G就一下占据40G,实际只占用很小一部分,因为40G是虚拟机最大占用内存。
同时,希望大家养成给虚拟机拍快照的习惯
它可以帮助你将虚拟机还原到拍下快照时刻的状态,减少你重新搭建虚拟机的麻烦
1.1 靶机准备
一台Centos7作为防火墙
一台win7作为内网机
一台win2008作为DMZ服务器 ftp telnet
一台win2003作为外网服务器 iis
注意:
-
关闭所有虚拟机的防火墙,本实验中通过centos来构建防火墙
-
windows server 2008上需要搭建共享文件夹(或者搭建ftp服务器)和telnet,这项操作切记在修改网络之前完成,本次实验先完成此项,具体参考文末附上的常见问题总结
-
Centos7需要3个网络适配器,所有也得配置三个IP
-
远程连接需要安装telnet客户端和服务端,同时在
services.msc
中需要找到telnet 自启动
在本次实验开始之前,建议大家试试给除了防护墙的几台机子外部配置相同的自定义网络,内部配置一个网段下的IP去互ping,保证不是虚拟网络的问题。
例如:
windows server 2008 配置 192.168.1.100 255.255.255.0 网络适配器:自定义网络 #vm2
windows server 2003 配置192.168.1.200 255.255.255.0 网络适配器:自定义网络 #vm2
win7参照上述自定
实验开始前的基本配置(这是非常重要部分,保障后面做的不是无用工)
因为本实验的要求是用win7和win2008去访问win2003,所以不需要几台上面全都搭建一遍,主要是在win2003上配置共享文件夹和telnet,另外两台开启ftp和Telnet服务接口
搭建ftp功能有两种实现方式,一是通过设置共享文件夹,二是通过搭建ftp服务器,个人推荐共享文件的方式,这种方式较为简单
-
设置共享文件夹https://blog.csdn.net/qq_45089570/article/details/122398452
-
如果出现解决共享文件夹无法启用网络发现的问题,此教程虽然是2008的但是操作方式是一样的:https://www.cnblogs.com/grisa/p/10026079.html
-
搭建ftp站点https://blog.csdn.net/qq_28189423/article/details/82221018
1.参照此教程时注意一点,切记切记IP地址不要绑定,保持IP地址未分配即可
2.密码的设置上,这里的密码设置存在简单性建议,需要出现大小写,字符,数字,这里给大家一个统一的密码设定
Jit123456*,方便大家使用
如果站点输入密码后不能访问,那么到对应的站点中设置属性(参照共享文件夹的设置)
- windows server 2008配置telnet服务https://www.cnblogs.com/50614090/archive/2011/08/29/2158013.html
1.2 安装iptables-services
首先:Centos7先桥接模式下载iptables-services(注意:因为后面会配置自定义网络,无法联网,所以一定要先完成这项再进行后续操作)
#关闭防火墙 systemctl stop firewalld #安装或更新服务 yum install iptables-services #启动iptables systemctl enable iptables #打开iptables systemctl start iptables #规则策略保存 service iptables save #重启iptables服务(强调) service iptables restart #执行完毕之后/etc/syscofig/iptables文件就有了
1.3 IP准备
具体IP地址的实际配置请大家参照,我的学号是11,所以在此处IP地址中包含11,实际情况以个人为准
Centos7: enss33: #vm0 192.168.11.200 255.255.255.0 enss37: #vm1 10.11.0.200 255.255.255.0 enss38: #vm2 20.11.0.200 255.255.255.0
win7: #vm0 192.168.11.2 255.255.255.0 192.168.11.200
win2008: #vm1 10.11.0.2 255.255.255.0 10.11.0.200
win2003: #vm2 20.11.0.2 255.255.255.0 20.11.0.200
注意:centos无网关,其他几台虚拟机的网关都是以centos下的网络适配器为网关
1.4 centos IP地址配置
centos以外的几个系统配置IP地址并不麻烦,此处不做赘述,重点针对centos系统的IP地址配用进行介绍
首先需要增加网络适配器
centos内部的配置,emmm,我课上讲清楚吧,全写清楚不太现实
2. 实验
2.1 NAT转换
2.1.1 目的
实验目的:使用iptables命令配置防火墙,将内部IP地址映射到外部服务器,实现局域网主机通过内部IP地址(192.168.11.200)来访问外网服务器(20.11.0.2)。
实验原理:通过配置nat表的PREROUTING和POSTROUTING链实现地址映射
2.1.2 规则配置
//管理员登录 su //注:密码是以密文形式出现的,看不到,所以只要输完了enter一下就行 //清空防火墙nat表 iptables -t nat -F iptables -t nat -X iptables -t nat -Z //查看nat表已经清空 iptables -t nat -L --line-numbers //开启数据包转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward //查看转发功能 cat /proc/sys/net/ipv4/ip_forward //必须保证/etc/sysctl.conf文件中net.ipv4.ip_forward的值为1 //当linux主机有多个网卡时一个网卡收到的信息是否能够传递给其他的网卡 如果设置成1 的话 可以进行数据包转发 可以实现VxLAN 等功能. vim /etc/sysctl.conf //源地址192.168.11.200:80映射到目的地址20.11.0.2:80 iptables -t nat -A PREROUTING -d 192.168.11.200 -p tcp --dport 80 -j DNAT --to-destination 20.11.0.2:80 // iptables -t nat -A POSTROUTING -s 20.11.0.2 -p tcp --sport 80 -j SNAT --to-source 192.168.11.200 iptables -t nat -L -n --line-numbers #保存,重启 service iptables save service iptables restart
完成这些配置后不进行任何操作,首先对内外网虚拟机进行连通性检测,使用ping指令或者tracert,如果连不上则是存在问题的
防火墙的本质是一个路由器,可以实现数据包转发的功能,在未进行任何策略配置的情况下,默认是可以实现内外网互相通信的,如果不行,证明centos防火墙存在问题
2.2 iptables实现按网段访问网络资源
2.2.1 目的
实验目的:通过配置iptables防火墙来实现按网段访问ftp服务和telnet服务(ftp服务器和telnet服务器地址:10.37.0.2),具体要求是:
内网不可以访问DMZ区域ftp服务,但是可以访问telnet服务;
外网可访问DMZ区域ftp服务,但是不可以访问telnet服务。
(1) 192.168.11.0/24网段不可以访问ftp服务,20.11.0.2/24网段可以访问ftp服务。
(2) 192.168.11.0/24网段可以访问telnet服务,20.11.0.2/24网段不可以访问telnet服务。
实验原理:配置filter表中的FORWARD链
2.2.2 初始状态
按网段访问ftp服务器的实验步骤:
(1) 打开Windows 7的cmd,输入ftp 10.11.0.2,输入用户名administrator,密码@admin123,登录成功。
(2) 打开Windows server 2003的cmd,输入ftp 10.11.0.2,输入用户名ftp,密码@admin123,登录成功。
对于win7:
按网段访问telnet服务器的实验步骤:
对于win2003:
对于win7:
对于win2003:
2.2.3 规则配置
#管理员登录 su //初始化 iptables -F iptables -X iptables -Z iptables -L -n --line-numbers #ftp配置 iptables -t filter -A FORWARD -s 192.168.11.0/24 -p tcp --dport 21 -j DROP iptables -t filter -A FORWARD -s 20.11.0.0/24 -p tcp --dport 21 -j ACCEPT #telnet配置 iptables -t filter -A FORWARD -s 192.168.11.0/24 -p tcp --dport 23 -j ACCEPT iptables -t filter -A FORWARD -s 20.11.0.0/24 -p tcp --dport 23 -j DROP #保存,重启 service iptables save service iptables restart
2.2.4 实验结果
对于win7
无法访问ftp
可以telnet
对于win2003
可以ftp,但不能telnet
2.3 配置iptables禁止网络服务
2.3.1 目的
实验目的:通过配置iptables防火墙来禁止某些网络服务
实现按网段访问ftp服务和telnet服务(ftp服务器和telnet服务器地址:10.37.0.2),具体要求是:
(1) 禁止任何主机ping 10.37.0.2,但允许主机10.37.0.2 ping其它主机
(2) 禁止任何主机访问ftp服务(ftp服务器地址:10.37.0.2)
实验原理:配置filter表中的FORWARD链
2.3.2初始
win2003可以ping 10.11.0.2
win7可以ping 10.11.0.2
win server 2008 (10.11.0.2)可以ping通一切
2.3.3 规则配置
1.在防火墙CentOS7的终端输入如下命令,清空防火墙规则。
#初始化 iptables -F iptables -X iptables -Z iptables -L -n --line-numbers
2.配置防火墙,禁止访问icmp服务。在终端输入如下命令,在进入转发的数据包中,禁止源地址不是10.11.0.2的ping请求。
#ping配置 iptables -A FORWARD -p icmp --icmp-type 8 ! -s 10.11.0.2 -j DROP #ftp配置 iptables -t filter -A FORWARD -s 192.168.11.0/24 -p tcp --dport 21 -j DROP iptables -t filter -A FORWARD -s 20.11.0.0/24 -p tcp --dport 21 -j DROP
3.保存,重启
service iptables save service iptables restart
2.3.4 实验结果
1.在Windows 7的cmd上,输入ping 10.11.0.2,已经不能ftp和ping通10.11.0.2主机。
2.在Windows server 2003上,输入ping 10.11.0.2,也不能ftp和ping通10.11.0.2主机。
3.在10.11.0.2主机上输入ping 20.11.0.2和192.168.11.2,可以ping通。
2.4 使用脚本配置防火墙
在防火墙CentOS 7桌面新建firewall.sh,在终端输入命令vi firewall.sh
。
编辑脚本firewall.sh
:
#Remove any existing rules iptables -F iptables -X iptables -Z #setting for loopback interface iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT #setting default firewall policy iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP iptables -P INPUT DROP #setting access rules iptables -t filter -A INPUT -s 192.168.10.0/24 -p all -j ACCEPT #http iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT #icmp iptables -t filter -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT #others RELATED iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT1
//具体指令 su root vi firewall.sh chmod 777 firewall.sh ./firewall.sh
1.完成输入后,在终端输入“ESC”“:wq”,退出编辑。(vi编辑器的使用可自学) 2.此时在终端输入命令./ firewall.sh执行脚本时提示权限不够,输入命令chmod +x firewall.sh为其添加权限。再执行脚本,则可执行成功。 3.在终端输入命令iptables -L -n --line-numbers查看防火墙规则,可以看到防火墙规则添加成功。 4.但此时添加的防火墙规则只存在于内存中,并没有写入iptables配置文件中。一旦重启就会消失。将添加的防火墙规则永久保存在配置文件中,在终端输入命令service iptables save。 5.在终端输入命令cat /etc/sysconfig/iptables,查看iptables配置文件。 6.可以看到此时的防火墙与“手动执行iptables命令配置防火墙”实验中配置防火墙一样。相比于手动配置防火墙,使用脚本配置防火墙更加方便和快捷,不用一条一条手动地添加规则。
一些个人的感悟和后话
首先在此感谢柳老师和刘浩源学长的指点和教导,愿意给出时间帮助我解决问题,同时我也学到了很多。
这个实验本身不复杂,难在准备一个可以实现实验的环境,我也磕磕绊绊地走了很多弯路,忙几天做了很多无用工,这也让我意识到自己的不足,还有很多东西需要学习。这个实验前期准备的过程虽然繁琐,但是也能帮助大家更好地认识防火墙的实际运用效果和作用。个人觉得这个实验很贴近实际,在准备的过程中本人也学到了很多,希望这个实验可以帮助大家形成一个完整的虚拟机实验复现思路,更好地认识防火墙,也能帮助大家更好地运用虚拟机
这篇关于IPtables实验的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南