一、实验目的

*1. 配置linux系统下iptables防火墙*

(1)Iptables防火墙基本操作

(2)设置Iptables防火墙的包过滤规则,实现以下功能:

禁止所有主机ping本地主机;

允许某特定IP主机远程ping本地主机;

允许每10秒钟通过1个ping包;

阻断来自某个MAC地址的数据包。

(3)实现特定远端主机SSH连接本地主机

*2.实现内网服务的发布*

(1) 配置网络环境,测试网络连通情况

(2) 开启防火墙路由转发,设置iptables规则

(3) 验证公网主机能否通过访问防火墙获得内网服务

二、*实验环境*

实验1:

防火墙部署:Kali-linux 2022.3 192.168.8.129

客户端: windows xp 192.168.8.130
windows xp 192.168.8.131

Kali-linux 2022.3 192.168.8.132

Kali-linux 2022.3 192.168.8.133

实验2:

防火墙部署:Kali-linux 2022.3 192.168.8.129

客户端: windows xp 192.168.8.130(原) 10.21.240.150(新)
windows xp 192.168.8.131

软件:iptables、putty

虚拟机之间采用仅主机模式进行连接

三、*实验过程与结果*

(一)*访问控制实验*

  1. 先通过ifconfig命令查看防火墙所在主机网络配置信息

img
通过ping测试防火墙和其他主机的连通性,发现可以连通
img

  1. 通过查看iptables文档,选择对应的参数,设置iptables规则实现:(截图提交)

Ø 禁止所有主机ping本地主机

直接拒绝icmp 的请求包

sudo iptables -A INPUT -p icmp –icmp-type echo-request -j REJECT

img ping失败 img

Ø 仅允许某特定IP主机ping本地主机

iptables -I INPUT -p icmp –icmp-type echo-request -s 192.168.8.130 -j ACCEPT
img
131访问失败
img
130访问成功
img

Ø 允许每10秒钟通过1个ping包

先清除之前的规则iptables -F。

依次输入iptables -I INPUT -p icmp -m limit –limit 6/min –limit-burst 1 -j ACCEPT

和iptables -A INPUT -p icmp -j DROP,以实现允许每10s通过一个ping包
img
可见7个包用了68583ms,也就是10秒一个包
img

Ø 阻断来自某个mac地址的数据包

阻止MAC地址为00:0c:29:d5:b7:8f(xp 192.168.8.130)主机的所有通信:

iptables -A INPUT -m mac –mac-source 00:0c:29:d5:b7:8f -j DROP
img
拦截成功
img

3. *配置iptables,允许特定的远端客户机器SSH连接本地主机*

1) 在SSH服务器上打开服务,使得客户端可以通过22端口连接

img

查看服务器状态
img

ssh kali@192.168.8.129
客户端1
img

客户端2
img

客户端连接后,SSH服务器上会留下记录
img

2) 配置iptables,只允许特定远端主机SSH连接本地主机。

iptables -I INPUT -p tcp –dport 22 -s 192.168.8.132 -j ACCEPT

iptables -A INPUT -p tcp –dport 22 -j DROP
img

3) 验证防火墙效果

在iptables中允许连接的客户端1仍可远程SSH连接

img

客户端2已经无法操作
img

(二)*NAT实验*

  1. 配置网络环境

首先,给作为firewall的ubuntu(或kali)增设网卡,并设置两张网卡处在不同的网络中,ifconfig查看ip

img
img
由上图可知,网关的配置如下:

内网ip:10.21.240.149 子网掩码:255.255.128.0

公网ip:192.168.8.129 子网掩码:255.255.255.0

  1. 设置PC1的网络适配器,与firewall网络适配器ens33处于一个网段(Vmnet0);PC2使用物理主机(或使用另一台虚拟机,网络设置同firewall的网络适配器ens38(Vmnet1))。

PC1:
img

PC2:
img

设置PC1的网关为firewall,并测试网络连通性。应实现:PC1可以与firewall互相ping通;PC2可以与firewall互相ping通;PC1与PC2无法互ping。(PC2如果是物理主机,请使用指定网卡进行ping操作,参考命令ping -S
img

PC1 ping kali:
img

PC21 ping kali:

img

  1. 开启firewall的路由转发

echo 1 > /proc/sys/net/ipv4/ip_forward
img

  1. 设置NAT规则

对公网来的访问数据设置DNAT规则,将其访问目标地址通过NAT修改为提供服务的ip,以便将请求转发到内网对应IP上。

iptables -t nat -A PREROUTING -i ens38 -p tcp -d 192.168.8.130 –dport 80 -j DNAT –to-destination 10.21.240.150

设置一条SNAT的规则,以便内网对公网数据访问的回应信息能够到达请求的客户。

iptables -t nat -A POSTROUTING -o ens38 -p tcp -j SNAT –to-source 192.168.8.130

在FORWARD链上设置允许访问内网的规则。

iptables -A FORWARD -i ens38 -p tcp -d 10.21.240.150 –dport 80 -j ACCEPT

iptables -A FORWARD -p tcp -m state –state established,related -j ACCEPT

img

  1. 启动PC1的nginx开启http服务

img

  1. 在PC2上验证能否通过firewall的ip访问内网主机服务。

img

  1. 解释上述使用的iptables规则,并分析NAT的实现原理

这一实验中的iptables规则主要有以下几条
iptables -t nat -A PREROUTING -i ens38 -p tcp -d 192.168.8.130 –dport 80 -j DNAT –to-destination 10.21.240.150

这个iptables规则的作用是将进入ens38接口,目标地址为192.168.8.130,目标端口为80的TCP数据包的目标地址修改为10.21.240.150,用于实现端口转发。
iptables -t nat -A POSTROUTING -o ens38 -p tcp -j SNAT –to-source 192.168.8.130

这个iptables规则的作用是将离开ens38接口的所有TCP数据包的源地址修改为192.168.8.130。在NAT环境中,将内部主机的私有IP地址替换为网关的公共IP地址,以便在Internet上进行通信。
iptables -A FORWARD -i ens38 -p tcp -d 10.21.240.150 –dport 80 -j ACCEPT

iptables -A FORWARD -p tcp -m state –state established,related -j ACCEPT

这两个iptables规则用于配置包转发策略。第一个规则允许进入接口ens38的目标地址为10.21.240.150,目标端口为80的TCP数据包通过系统。第二个规则允许已建立的连接或与已建立连接相关的TCP数据包通过系统的转发。这通常用于处理与先前已建立的连接相关的数据包,以确保它们被正确转发。

因此可知,NAT的实现就是通过防火墙阻隔内网和外网之间的通讯,并为内网的所有IP地址分配相对应的外网网段地址。防火墙起到了地址转换的作用,当其对外网进行收发信息的时候会将内网地址转化为外网分配IP,或将外网IP根据对应表转化为内网地址。从而实现信息中专功能。

四、实验总结

在本次实验中,学习到了iptables的相关用法和NAT的原理知识。iptables是Linux操作系统中用于配置IPv4包过滤规则、进行网络地址转换(NAT)和包队列处理的强大工具。通过iptables命令,用户可以定义防火墙规则,控制数据包的流动,并实现网络安全策略,包括端口转发、地址转换等功能,以保护系统免受网络攻击。iptables的灵活性和可定制性使其成为Linux系统中网络管理和安全配置的关键组件。

NAT将内部私有网络中的局域网IP地址映射为外部公共网络上的一个或多个公共IP地址。这通过在数据包经过设备时修改其源或目标IP地址来实现。NAT允许多个内部设备共享同一个公共IP地址,有效地解决了IPv4地址短缺的问题。它的基本原理是在数据包经过设备时,根据预定义的转换规则,更新数据包的IP地址信息,使其在内外网络之间传递时能够正确路由。这种技术广泛用于家庭网络和企业环境,为多个设备提供对互联网的访问,同时提供一定程度的网络安全和隐私保护。

通过本次的实验我认识到NAT的实现原理相对简单,但需要对每一次内外网连接操作进行IP转换,相对来说较为繁琐,当内网中主机数目不断增加,网关的负载程度也会大规模增加。