Linux系统安全:SNAT和DNAT的实现
一、SNAT
1、SNAT实验目的
公司内有2台机器,但是只有一个公网ip,利用SNAT技术实现2台私网地址都可以访问公网。
2、SNAT实验环境准备
①三台服务器:PC1客户端、PC2网关、PC3服务端。
②硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡
③网络模式要求:PC1为NAT模式、PC2中作为PC1网关的网卡为NAT模式、作为PC3网关的网卡为仅主机模式、PC3为仅主机模式。
④IP地址要求:PC1为192.168.30.11/24--网关为192.168.30.12、PC2网关的ens33网卡地址为192.168.30.12/24--网关为192.168.30.12、ens36为12.0.0.254/24--不需要网关、PC3为12.0.0.100/24--网关为12.0.0.254
3、实验拓扑
4、实验步骤
①首先关闭三台机器的防火墙和selinux
三台机器全部执行:
systemctl stop firewalld
setenforce 0
②配置PC3服务端,安装httpd服务修改网卡ip为12.0.0.100/24--网关为12.0.0.254,重启网卡。
PC3执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254
③配置PC1客户端,修改网卡ip为192.168.30.11/24---网关192.168.30.12,重启网卡。
PC1执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=192.168.30.11
NETMASK=255.255.255.0
GATEWAY=192.168.30.12
④配置PC2网关服务器,首先配置ens33和ens36网卡的ip地址。
PC2执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=192.168.30.12
NETMASK=255.255.255.0
GATEWAY=192.168.30.12
cp /etc/sysconfig/network-script/ifcfg-ens33 /etc/sysconfig/network-script/ifcfg-ens36
#复制ens33配置文件给ens36网卡,新增网卡不会有配置文件
ens36配置文件修改:将UUID此行删除,修改ip和网关
IPADDR=12.0.0.254
NETMASK=255.255.255.0
⑤开启PC2网关服务器的路由转发功能,重启网卡。
vim /etc/sysctl.conf
添加内容:
net.ipv4.ip_forward=1
⑥检测PC1、PC2、PC3三台机器之间是否互通(使用虚拟机做实验默认是互通的,是由于处在同一环境中,生产环境内网和外网没有SNAT的情况下是不通的)
⑦在PC1上curl 服务端ip,然后在服务端实时查看/var/log/httpd/access_log日志。可查看到源ip为PC1的ip,所以是未经过NAT的,生产环境中不可能直接curl通。
⑧在PC2中添加防火墙规则使得来源于192.168.30.0/24网段的所有从ens36网阿卡流出数据的ip全部NAT为12.0.0.254。然后再使用PC1去curl 服务端并在服务端实时查看日志。
PC2执行:
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens36 -j SNAT --to 12.0.0.254
# -t nat 指定使用nat表
# -A POSTROUTING 添加在数据流出链,原因为在输出时添加只需要添加一次。
# -s 指定源ip
# -o 指定输出网卡为ens36时
# -j 指定跳转到SNAT处理
# --to 指定SNAT nat为12.0.0.254这个地址
5、实验结果
不经过nat的地址为pc1自己的地址,使用虚拟机环境才会出现这种情况,生成环境是不通的。
经过nat之后的地址是公司的公网ip地址,由网关服务器iptables规则SNAT实现。
二、DNAT
1、DNAT实验目的
为保护公司业务服务器安全,业务服务器在私网中,从公网访问的用户只能通过nat为业务服务器的私网网关地址才可访问。
2、DNAT实验环境准备
①三台服务器:PC1客户端、PC2网关、PC3服务端。
②硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡
③网络模式要求:PC1为NAT模式、PC2中作为PC1网关的网卡为NAT模式、作为PC3网关的网卡为仅主机模式、PC3为仅主机模式。
④IP地址要求:PC1为192.168.30.11/24--网关为192.168.30.12、PC2网关的ens33网卡地址为192.168.30.12/24--网关为192.168.30.12、ens36为12.0.0.254/24--不需要网关、PC3为12.0.0.100/24--网关为12.0.0.254
3、实验拓扑
备注:PC1客户方做业务服务器,PC3服务端做公网用户。
4、实验步骤
①首先给三台机器做一个SNAT,原因是做DNAT之后内网的PC1需要通过SNAT给公网的用户返回数据包。
②在内网PC1上安装一个httpd服务并开启,作为内网的业务服务器。
③PC2网关服务器上配置DNAT规则。
PC2执行:
iptables -t nat -A PREROUTING -d 12.0.0.254 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.30.12
# 从ens36网卡进入的流量目的地址为12.0.0.254目的端口为80的tcp协议NAT处理为访问192.168.30.12
# -t nat 指定使用nat表
# -A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
# -d 指定目的ip
# -i 指定输出网卡为ens36时
# -p 指定协议为tcp协议
# --dport 指定目的端口为80
# -j 指定跳转到DNAT处理
# --to 指定DNAT nat到192.168.30.12这个地址
④实时查看PC1的/var/log/httpdd/access_log日志,使用PC3公网地址直接curl 内网的PC1,可以看到日志中源地址。
5、实验结果
经过DNAT之后的用户访问公网的网关即会跳转到内网的PC1内网的httpd服务中。PC1内网日志会显示访问的源公网ip。