Shell脚本攻略:Linux防火墙(二)

目录

一、理论

1.SNAT

2.DNAT

3.tcpdump抓包工具

二、实验

1.SNAT实验

2.DNAT实验

3.tcpdump抓包


一、理论

1.SNAT

(1)概念

SNAT又称源地址转换。
源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址
(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。

就是把内网地址转成指定的IP地址,这个iP地址可以访问公网。

Shell脚本攻略:Linux防火墙(二)_第1张图片

 (2)SNAT常用选项

表1 SNAT常用选项

选项 功能
-t nat  指定使用nat表
-A POSTROUTING 添加在数据流出链,原因为在输出时添加只需要添加一次。
-s 指定源ip
-o 指定输出网卡为ens36时
-j 指定跳转到SNAT处理
--to 指定SNAT nat为相关地址

2.DNAT

(1)概念

DNAT:目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。
通常来说,合法地址的数量比起本地内部的地址数量来要少得多。

私网地址只能作为源地址来访问公网IP,而无法作为目标地址被其他主机访问。
所以DNAT将私网中web服务器映射到公网IP,使其公网IP作为目标地址被公网中主机进行访问。

(2)DNAT常用选项

表2 DNAT常用选项

选项 功能
-t nat 指定使用nat表
-A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
-d  指定目的ip
-i 指定输出网卡为ens36时
-p 指定协议为tcp协议
--dport 指定目的端口为80
-j  指定跳转到DNAT处理
--to 指定DNAT nat到相关地址

3.tcpdump抓包工具

(1)概念

wireshark 抓包工具只在windows中使用。
tcpdump 可以在Linux系统中使用。

tcpdump是Linux系统中自带抓包工具 

表3 tcpdump选项

选项 功能
-i ens33 只抓经过接口ens33的包。
-t 不显示时间戳。
-s0 抓取数据包时默认抓取长度为68字节。加上"-s0"后可以抓到完整的数据包。
-c 100 只抓取100个数据包。
dst port 80 不抓取目标端口是80的数据包。
src net 192.168.233.0/24 数据包的源网络地址为192.168.233.0/24。Net:网段,host:主机。
 
-w ./target.cap  保存成cap文件,方便用ethereal (即wireshark)分析。
 

(2)动态抓包

进行动态抓包处理(一旦遇到有指定数据包的出现,开始运转)。

二、实验

1.SNAT实验

(1)实验目的

公司内有2台机器,但是只有一个公网IP,利用SNAT技术实现2台私网地址都可以访问公网。

(2)实验环境

①三台服务器:PC1客户端、PC2网关、PC3服务端。

②硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡
③网络模式要求:PC1为NAT模式、PC2中作为PC1网关的网卡为NAT模式、作为PC3网关的网卡为仅主机模式、PC3为仅主机模式。

④IP地址要求:PC1为192.168.204.21--网关为192.168.204.254、PC2网关的ens33网卡地址为192.168.204.254、ens36为12.0.0.254--不需要网关、PC3为12.0.0.100--网关为12.0.0.254

(3)实验拓扑

Shell脚本攻略:Linux防火墙(二)_第2张图片

(4)实验步骤

①首先关闭三台机器的防火墙和selinux


systemctl stop firewalld
setenforce 0

②配置PC3服务端,安装httpd服务修改网卡ip为12.0.0.100--网关为12.0.0.254,重启网卡。


vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254

③配置PC1客户端,修改网卡ip为192.168.204.21---网关192.168.204.254,重启网卡。

PC1执行


vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.204.21
NETMASK=255.255.255.0
GATEWAY=192.168.204.254

④配置PC2网关服务器,首先配置ens33和ens36网卡的ip地址。

PC2执行


vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.204.254
NETMASK=255.255.255.0

复制ens33配置文件给ens36网卡,新增网卡不会有配置文件

cp /etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-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通。

PC1网络搜索PC3

 PC3查看数据访问日志

 ⑧在PC2中添加防火墙规则使得来源于192.168.30.0/24网段的所有从ens36网阿卡流出数据的ip全部NAT为12.0.0.254。然后再使用PC1去curl 服务端并在服务端实时查看日志。

iptables -t nat -A POSTROUTING -s 192.168.204.0/24 -o ens36 -j SNAT --to 10.0.0.10
# -t nat 指定使用nat表
# -A POSTROUTING 添加在数据流出链,原因为在输出时添加只需要添加一次。
# -s 指定源ip
# -o 指定输出网卡为ens36时
# -j 指定跳转到SNAT处理
# --to 指定SNAT nat为12.0.0.254这个地址

PC1访问PC3

Shell脚本攻略:Linux防火墙(二)_第3张图片

 PC3检查数据访问日志

Shell脚本攻略:Linux防火墙(二)_第4张图片

(2)实验结果

 不经过nat的地址为pc1自己的地址,使用虚拟机环境才会出现这种情况,生成环境是不通的。

经过nat之后的地址是公司的公网ip地址,由网关服务器iptables规则SNAT实现。

2.DNAT实验

(1)实验目的

为保护公司业务服务器安全,业务服务器在私网中,从公网访问的用户只能通过nat为业务服务器的私网网关地址才可访问。

(2)实验环境

①三台服务器:PC1客户端、PC2网关、PC3服务端。

②硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡
③网络模式要求:PC1为NAT模式、PC2中作为PC1网关的网卡为NAT模式、作为PC3网关的网卡为仅主机模式、PC3为仅主机模式。

④IP地址要求:PC1为192.168.204.21--网关为192.168.204.254、PC2网关的ens33网卡地址为192.168.204.254、ens36为12.0.0.254--不需要网关、PC3为12.0.0.100--网关为12.0.0.254

(3)实验拓扑

PC1客户方做业务服务器,PC3服务端做公网用户。

Shell脚本攻略:Linux防火墙(二)_第5张图片

(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.204.21:80
# 从ens36网卡进入的流量目的地址为12.0.0.254目的端口为80的tcp协议NAT处理为访问192.168.204.21
# -t nat 指定使用nat表
# -A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
# -d 指定目的ip
# -i 指定输出网卡为ens36时
# -p 指定协议为tcp协议
# --dport 指定目的端口为80
# -j 指定跳转到DNAT处理
# --to 指定DNAT nat到192.168.204.21这个地址

④实时查看PC1的/var/log/httpdd/access_log日志,使用PC3公网地址直接curl 内网的PC1,可以看到日志中源地址。

PC3搜索PC1

PC1数据访问日志

PC3访问PC1

Shell脚本攻略:Linux防火墙(二)_第6张图片

PC1数据访问日志

Shell脚本攻略:Linux防火墙(二)_第7张图片

(5)实验结果

经过DNAT之后的用户访问公网的网关即会跳转到内网的PC1内网的httpd服务中。PC1内网日志会显示访问的源公网ip。

3.tcpdump抓包

(1)抓包

PC2执行

tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.204.0/24 -w ./target.cap

PC1刷新页面

Shell脚本攻略:Linux防火墙(二)_第8张图片

(2)下载到Windows

rz:receive zmodem的缩写

sz:send zmodem的缩写

sz:将选定的文件发送(send)到本地服务器,即从Linux下载到Windows系统;

rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器。

(3)分析

Shell脚本攻略:Linux防火墙(二)_第9张图片

你可能感兴趣的:(linux,运维,服务器)