1. 准备工作
1.1 靶机准备
一台Centos8作为防火墙
一台win7作为内网机
一台win2008作为DMZ服务器
一台win2003作为外网服务器
注意:
Centos8需要3个网络适配器,所有也得配置三个IP
win2008和win2003是要配置共享文件,远程连接和IIS
共享文件只需新建共享文件夹就可以了
远程连接需要安装telnet客户端和服务端,同时在services.msc
中需要找到telnet 自启动
1.2 安装iptables-services
首先:Centos8先桥接模式下载iptables-services
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # 关闭防火墙 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.2 IP准备
1 2 3 4 5 6 7 8 9 10 11 12 Centos8: enss33: #vm0 192.168.37.200 255.255.255.0 enss37: #vm1 10.37.0.200 255.255.255.0 enss38: #vm2 20.37.0.200 255.255.255.0
1 2 3 4 win7: #vm0 192.168.37.2 255.255.255.0 192.168.37.200
1 2 3 4 win2008: #vm1 10.37.0.2 255.255.255.0 10.37.0.200
1 2 3 4 win2003: #vm2 20.37.0.2 255.255.255.0 20.37.0.200
1.3 IP地址配置
方法一
1.3.1.1 查看网卡名字
1 2 3 4 5 6 7 8 # 查看网卡 [sculptor@localhost ~]$ nmcli d DEVICE TYPE STATE CONNECTION virbr0 bridge 连接(外部) virbr0 ens33 ethernet 已断开 -- lo loopback 未托管 -- virbr0-nic tun 未托管 --
1.3.1.2 编辑网卡配置
根据上面的查看可以知道现在可以使用的网卡名字是 ens33
所以其配置网卡配置文件是 /etc/sysconfig/network-scripts/ifcfg-ens33
1 sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
将 BOOTPROTO=dhcp
注释掉,添加 BOOTPROTO=static
开机启动时激活网卡设备ONBOOT 修改为yes
然后再最后添加
1 2 3 4 5 IPADDR=192.168.37.200 NETMASK=255.255.255.0 GATEWAY=192.168.37.1 DNS1=114.114.114.114 DNS2=8.8.8.8
最后就是 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=e500d1ea-d0ae-47a9-9c42-ca8cb1c55f9a DEVICE=ens33 ONBOOT=yes IPADDR=192.168.37.200 NETMASK=255.255.255.0 GATEWAY=192.168.37.1 DNS1=114.114.114 DNS2=8.8.8.8
1.3.1.3 重启网卡(使修改的网卡配置文件立即生效)
1 2 3 ifup ens33 或者 nmcli c reload
centos 设置临时IP地址并立即生效临时ip
1 2 ifconfg 网卡名 ip 网关 ifconfg ens33 192.168.8.129 255.255.255.0
方法二
找到Centos8右上角网络 ->添加有线设置
1.4 iptables默认允许规则
1.4.1 通过ftp,telnet,ping
允许所有网段可以文件共享和远程控制
1 2 3 4 5 iptables -t filter -A FORWARD -s 192.168.37.0/24 -p tcp --dport 21 -j ACCEPT iptables -t filter -A FORWARD -s 10.37.0.0/24 -p tcp --dport 21 -j ACCEPT iptables -t filter -A FORWARD -s 20.37.0.0/24 -p tcp --dport 21 -j ACCEPT # 默认是可以ping通的,所以这个是不用配置的
1 2 3 iptables -t filter -A FORWARD -s 192.168.37.0/24 -p tcp --dport 23 -j ACCEPT iptables -t filter -A FORWARD -s 10.37.0.0/24 -p tcp --dport 23 -j ACCEPT iptables -t filter -A FORWARD -s 20.37.0.0/24 -p tcp --dport 23 -j ACCEPT
1 2 3 iptables -t filter -A FORWARD -s 192.168.37.0/24 -p tcp --dport 80 -j ACCEPT iptables -t filter -A FORWARD -s 10.37.0.0/24 -p tcp --dport 80 -j ACCEPT iptables -t filter -A FORWARD -s 20.37.0.0/24 -p tcp --dport 80 -j ACCEPT
1 2 3 4 5 # 保存规则配置 service iptables save # 重启动iptables service iptables restart
1 2 3 //最后发现只要保存重启后,默认允许一切规则 //无语了。。。 //所以不需要上面的配置
2. 实验
2.1 NAT转换
2.1.1 目的
实验目的:使用iptables命令配置防火墙,将内部IP地址映射到外部服务器,实现局域网主机通过内部IP地址(192.168.37.200)来访问外网服务器(20.37.0.2)。
实验原理:通过配置nat表的PREROUTING和POSTROUTING链实现地址映射
2.1.2 规则配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 su root //清空防火墙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 vim /etc/sysctl.conf //源地址192.168.37.200:80映射到目的地址20.37.0.2:80 iptables -t nat -A PREROUTING -d 192.168.37.200 -p tcp --dport 80 -j DNAT --to-destination 20.37.0.2:80 // iptables -t nat -A POSTROUTING -s 20.37.0.2 -p tcp --sport 80 -j SNAT --to-source 192.168.37.200 iptables -t nat -L -n --line-numbers # 保存,重启 service iptables save service iptables restart
2.2 iptables实现按网段访问网络资源
2.2.1 目的
实验目的:通过配置iptables防火墙来实现按网段访问ftp服务和telnet服务(ftp服务器和telnet服务器地址:10.37.0.2),具体要求是:
内网不可以访问DMZ区域ftp服务,但是可以访问telnet服务;
外网可访问DMZ区域ftp服务,但是不可以访问telnet服务。
(1) 192.168.37.0/24 网段不可以访问ftp服务,20.37.0.2/24 网段可以访问ftp服务。
(2) 192.168.37.0/24 网段可以访问telnet服务,20.37.0.2/24 网段不可以访问telnet服务。
实验原理:配置filter表中的FORWARD链
2.2.2 原始
按网段访问ftp服务器的实验步骤:
(1) 打开Windows 7的cmd,输入ftp 10.37.0.2,输入用户名ftp,密码123456,登录成功。
(2) 打开Windows server 2003的cmd,输入ftp 10.37.0.2,输入用户名ftp,密码123456,登录成功。
对于win7:
对于win2003:
按网段访问telnet服务器的实验步骤:
对于win7:
对于win2003:
2.2.3 规则配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 管理员登录 su root //初始化 iptables -F iptables -X iptables -Z iptables -L -n --line-numbers # ftp配置 iptables -t filter -A FORWARD -s 192.168.37.0/24 -p tcp --dport 21 -j DROP iptables -t filter -A FORWARD -s 20.37.0.0/24 -p tcp --dport 21 -j ACCEPT # telnet配置 iptables -t filter -A FORWARD -s 192.168.37.0/24 -p tcp --dport 23 -j ACCEPT iptables -t filter -A FORWARD -s 20.37.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 原始
打开Windows 7的cmd,输入ping 10.37.0.2,可以ping通10.37.0.2主机。
打开Windows server 2003的cmd,输入ping 10.37.0.2,可以ping通10.37.0.2主机。
Windows server 2008可以访问一切
2.3.3 规则配置
在防火墙CentOS8的终端输入如下命令,清空防火墙规则。
1 2 3 4 5 # 初始化 iptables -F iptables -X iptables -Z iptables -L -n --line-numbers
配置防火墙,禁止访问icmp服务。在终端输入如下命令,在进入转发的数据包中,禁止源地址不是10.37.0.2的ping请求。
1 2 3 4 5 6 # ping配置 iptables -A FORWARD -p icmp --icmp-type 8 ! -s 10.37.0.2 -j DROP # ftp配置 iptables -t filter -A FORWARD -s 192.168.37.0/24 -p tcp --dport 23 -j DROP iptables -t filter -A FORWARD -s 20.37.0.0/24 -p tcp --dport 23 -j DROP
保存,重启
1 2 service iptables save service iptables restart
2.3.4 实验结果
在Windows 7的cmd上,输入ping 10.37.0.2,已经不能ftp和ping通10.37.0.2主机。
在Windows server 2003上,输入ping 10.37.0.2,也不能ftp和ping通10.37.0.2主机。
在10.37.0.2主机上输入ping 20.37.0.2和192.168.37.2,可以ping通。
2.4 使用脚本配置防火墙
在防火墙CentOS 8桌面新建firewall.sh,在终端输入命令vi firewall.sh
。
编辑脚本firewall.sh
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # 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
1 2 3 4 su root vi firewall.sh chmod 777 firewall.sh ./firewall.sh
1 2 3 4 5 6 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命令配置防火墙”实验中配置防火墙一样。相比于手动配置防火墙,使用脚本配置防火墙更加方便和快捷,不用一条一条手动地添加规则。
注意:当电源错关
1 使用记事本打开*.VMX文件上加上一行代码disk.locking = "FALSE",重新启动该虚拟机。这种方法我并没有测试过,在此做一记录以备后用。