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


    目录

    一、理论

    1.SNAT

    2.DNAT

    3.tcpdump抓包工具

    二、实验

    1.SNAT实验

    2.DNAT实验

    3.tcpdump抓包


    一、理论

    1.SNAT

    (1)概念

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

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

     (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)实验拓扑

    (4)实验步骤

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

    1. systemctl stop firewalld
    2. setenforce 0

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

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

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

    PC1执行

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

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

    PC2执行

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

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

    cp /etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-ens36

    ens36配置文件修改:将UUID此行删除,修改ip和网关

    1. IPADDR=12.0.0.254
    2. 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 服务端并在服务端实时查看日志。

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

    PC1访问PC3

     PC3检查数据访问日志

    (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服务端做公网用户。

    (4)实验步骤

    ①首先给三台机器做一个SNAT,原因是做DNAT之后内网的PC1需要通过SNAT给公网的用户返回数据包。

    ②在内网PC1上安装一个httpd服务并开启,作为内网的业务服务器。

    ③PC2网关服务器上配置DNAT规则。

    PC2执行

    1. iptables -t nat -A PREROUTING -d 12.0.0.254 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.204.21:80
    2. # 从ens36网卡进入的流量目的地址为12.0.0.254目的端口为80的tcp协议NAT处理为访问192.168.204.21
    3. # -t nat 指定使用nat表
    4. # -A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
    5. # -d 指定目的ip
    6. # -i 指定输出网卡为ens36时
    7. # -p 指定协议为tcp协议
    8. # --dport 指定目的端口为80
    9. # -j 指定跳转到DNAT处理
    10. # --to 指定DNAT nat到192.168.204.21这个地址

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

    PC3搜索PC1

    PC1数据访问日志

    PC3访问PC1

    PC1数据访问日志

    (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刷新页面

    (2)下载到Windows

    rz:receive zmodem的缩写

    sz:send zmodem的缩写

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

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

    (3)分析

  • 相关阅读:
    but it set boost_system_FOUND to FALSE so package “boost_system“ is
    【数据结构与算法】总结篇:中缀表达式转后缀表达式 与 表达式树
    基于java web的网上招标系统
    AcWing 505. 火柴排队(每日一题)
    C语言程序设计算法题 -- lab07(1027 - 1030)
    如何判断一款软件的安全性?
    Spring启动后进行一些初始化的方式汇总
    小侃设计模式(五)-建造者模式与模板方法模式
    Vue 移动端(H5)项目怎么实现页面缓存(即列表页面进入详情返回后列表页面缓存且还原页面滚动条位置)keep-alive缓存及清除keep-alive缓存
    学习路之工具--SecureCRT的下载、安装
  • 原文地址:https://blog.csdn.net/cronaldo91/article/details/131140030