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,iptables,ftp,--,0.2,防火墙,telnet,实验 来源: https://www.cnblogs.com/willing-sir/p/16098823.html