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是虚拟机最大占用内存。

同时,希望大家养成给虚拟机拍快照的习惯

image

它可以帮助你将虚拟机还原到拍下快照时刻的状态,减少你重新搭建虚拟机的麻烦

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地址未分配即可

image

2.密码的设置上,这里的密码设置存在简单性建议,需要出现大小写,字符,数字,这里给大家一个统一的密码设定

Jit123456*,方便大家使用

image

如果站点输入密码后不能访问,那么到对应的站点中设置属性(参照共享文件夹的设置)

image

  • 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,实际情况以个人为准

image

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地址配用进行介绍

首先需要增加网络适配器

image

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:

image

按网段访问telnet服务器的实验步骤:

对于win2003:

image

对于win7:

image

对于win2003:

image

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

image

可以telnet

image

对于win2003

可以ftp,但不能telnet

image

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

image

win7可以ping 10.11.0.2

image

win server 2008 (10.11.0.2)可以ping通一切

image

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主机。

image

image

2.在Windows server 2003上,输入ping 10.11.0.2,也不能ftp和ping通10.11.0.2主机。

image

image

3.在10.11.0.2主机上输入ping 20.11.0.2和192.168.11.2,可以ping通。

image

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

image

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实验的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程