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

news2025/1/27 13:01:56

目录

一、理论

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


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

 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执行

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

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)分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软考系统规划与管理师笔记】第6篇 IT服务部署实施

这章基本也是管理概念,考试内容基本以教材为主 1 概述 IT服务部署实施是衔接IT服务规划设计与IT服务运营的中间阶段,负责对服务组 件进行客户化,并在充分满足客户要求的前提下,使用标准化的方法管理人员、资源、 技术和过程&…

【超简单的串口通信的工作原理】

上图是电脑收到来自微控制器经过串口发送的信息, 那么电脑是如何收到这些数据的呢? 任何一种通信都要包括硬件物理接口和软件通信协议。 串口通信物理接口如下图: 微控制器与电脑的通信仅需1根数据线将数据一位一位按顺序发送,称…

matlab的矩阵常用操作方法

matlab中数据的基本格式是矩阵,行向量、列向量和标量都是矩阵的特例。矩阵可以是二维的,也可以是多维的。 (1)查找矩阵中的元素 ①find函数 在matlab中,可以调用find函数在矩阵中查找满足一定条件的元素&#xff0c…

#创作纪念日# 我的创作128天纪念日

我的创作128天纪念日 机缘收获日常成就憧憬 机缘 小升初时,我开始接触编程,进入了一个全新的世界。刚开始学习编程时,我只是对电脑的一些操作比较感兴趣,但慢慢地,我开始对编写程序、设计算法产生了浓厚的兴趣。在实践…

创新研报 | 如何激发中国半导体企业发展潜力从而获得竞争优势,领跑新一轮增长?

近年来,伴随网络化、信息化、智能化飞速发展,半导体的应用领域不断拓展,在全球经济及社会发展中的重要性与日俱增。与此同时,越来越多的国家纷纷加码半导体,各个国家在半导体价值链中拥有不同的竞争优势。目前&#xf…

AI-Prompt 1.0 版简介公测!你的AI提示词网站!

提示词(Prompt) 是什么? 在 AI 大模型中,一个 prompt 是一个输入文本,用于触发模型生成输出。例如,当我们向一个 AI 大模型提交需求时,我们的需求就是一个 prompt。 在介绍产品之前,…

C++:二叉搜索树(非平衡化)

文章目录 一.二叉搜索树(key_value模型)二.二叉搜索树的节点删除三.二叉搜索树类对象其他接口构造函数,析构函数和赋值运算符重载节点插入接口和节点查找接口key_value模型二叉搜索树类模板总体代码 四.未经平衡化的二叉搜索树的缺陷 一.二叉搜索树(key_value模型) 树的节点定…

华为OD机试真题B卷 JavaScript 实现【数据最节约的备份方法】,附详细解题思路

一、题目描述 有若干个文件,使用刻录光盘的方式进行备份,假设每张光盘的容量是500MB。 求使用光盘最少的文件分布方式,所有文件的大小都是整数的MB,且不超过500MB,文件不能分隔、分卷打包。 二、输入描述 每组文件…

mysql服务器启动和关闭

Windows 系统下启动停止 MySQL 服务的方式主要有以下两种: 通过计算机管理方式通过CMD命令行方式 备注: 测试数据库版本为MySQL5.7。 安装mysql服务器版本5.7成功,且加入系统变量成功之后,按照以下步骤启动/停止服务器。 一、通过计算机管…

Xubuntu22.04之绘制正弦波(一百七十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

测试人生 | 三十而已,何需惧怕!年薪40W+涨薪幅度超40%

关于我,普通二本,非计算机专业,培训出身,北漂,五年多的工作经验,做过外包,中间有过频繁的跳槽经历,手工点点点为主,最近确认了新Offer,远程办公,涨…

G - 1-n数组

第四次题组 [Cloned] - Virtual Judge (vjudge.net) 【题目描述】 给你一个数组一个a[n]组成n正整数。您可以对其执行操作。 在一个操作中,您可以替换数组的任何元素一个我​跟⌊/2​​⌋ 看看您是否可以多次应用该操作(可能操作为0) 来制…

Apache Commons CSV 基本使用

Apache Commons CSV 基本使用 文章目录 Apache Commons CSV 基本使用一、概述1、简介2、主要特点3、官方资料 二、基本使用1、引入依赖2、读取 .csv 文件文件内容读取文件 3、写入文件写入文件写入结果 一、概述 1、简介 Apache Commons CSV是Apache软件基金会的一个开源项目…

Android——认识Android (Android发展简介)(一)

如果想要学习好Android开发,首先需要能够熟练应用以下的几个知识: JavaSE : 理解面向对象,掌握网络通信,掌握集合,掌握IO操作,要懂得图形化界面swing。 JavaEE:也需要一定的了解,以…

mysql简单入门常见的语句使用

一、安装mysql 二、数据库操作 1、进入本地数据库 win r 运行cmd.exe 输入命令 mysql -uroot -p 敲回车;随后输入密码; -u用户名 -p密码; 1.1 连接远程数据库:mysql -h ip地址 -u 用户名 -p mysql -h 10.10.25.159 -u root -p root-h主机名…

git push 报错 error: src refspec master does not match any 解决

真是TN的邪了门了,今天在Gitee上创建了一个新项目,然后要把本地的代码push上去时,报了如下错误: ➜ *** git:(main) git push -u origin "master" error: src refspec master does not match any error: failed to pu…

Windows上通过CMake编译COLMAP源码操作步骤

COLMAP源码:https://github.com/colmap/colmap ,最新的稳定版本位于master分支,最新的开发版本位于dev分支,这里使用master分支进行编译,commit id为1555ff0。官方推荐使用vs2019,使用vs2022有一些已知bugs…

Metasploit介绍

Metasploit介绍 我们经常在电影里看到有关黑客的镜头,他们通常在几个屏幕上一顿操作就能轻松“黑“进各种系统。这样的场景是不是很熟悉,是不是很羡慕? 今天我来介绍一下Metasploit Framework,简称MSF。这个工具就可以做到“Hacki…

Qt5.12.6配置Android Arm开发环境(windows)

1. 安装jdk1.8 2.安装Android Studio 并安装 SDK 与NDK SDK Tools 选择 26.0.3 SDK Platform 选择 Android SDK Platform 26 NDK选择19版本 安卓ARM环境配置成功如下: JDK1.8 , SDK 26 , NDK 19 在安装QT时要选择 ARMv7(32位CPU)与ARM64-v8a(64位CPU) 选择支持android平台…

全国各个省份市区县明细数据

全国总共有23个省、5个自治区、4个直辖市、2个特别行政区。 此数据包含省、市、区、县数据,共2886个。——更新于2023年6月10日 费了不少时间,暂时应该没有比我更全的了~~~细致到区县了 包括台湾省:台北市,新北市,桃园市,台中市,台南市,高…