当前位置: 首页 > article >正文

【Linux】TCP_Wrappers+iptables实现堡垒机功能

规划

显示jumpserver的简单功能,大致的网络拓扑图如下
在这里插入图片描述


功能规划 & 拓扑结构

JumpServer(堡垒机)主要功能:

  • 对访问目标服务器进行统一入口控制(例如 nginx、mysql、redis)。
  • 使用 iptables 做 NAT 转发,控制从外部进入内部服务器的流量。
  • 使用 /etc/hosts.allow/etc/hosts.deny 做基于主机的简单访问控制。
  • 提供脚本化的登录菜单,方便用户连接目标服务。

网络拓扑图

正式的图结构如下:

┌──────────────┐        ┌─────────────┐       ┌──────────────┐
│ NAT客户端     │        │ NAT路由器     │       │ 目标内网服务器们 │
│ 192.168.100.x │ <───►  │ 192.168.100.202 │────►│ 192.168.200.201等 │
└──────────────┘        │ 192.168.200.250 │       └──────────────┘└─────────────┘

主机访问控制(hosts.allow / deny)

在客户端启用访问控制(防止非法 IP 直接访问内网服务器):

# /etc/hosts.allow
sshd:192.168.200.200
# 仅允许堡垒机 IP 登录 sshd 服务# /etc/hosts.deny
sshd:ALL
# 拒绝所有其他 IP

这样就实现了“只有堡垒机能登录这些服务器”。

加固堡垒机ssh

vim /etc/ssh/sshd_config
PermitRootLogin no
Port 6677

NAT 转发规则

配置在 nat-router 上:

#开启路由功能
echo  1  >/proc/sys/net/ipv4/ip_forward
#SNAT
# 源地址伪装,使内网服务器返回包能正常出去
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens32 -j MASQUERADE
#iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens32 -j SNAT --to-source 192.168.100.202# 将外网访问堡垒机端口 2233 的请求,转发到内网堡垒机的 6677 端口
iptables -t nat -A PREROUTING -i ens32 -d 192.168.100.202 -p tcp --dport 2233 -j DNAT --to-destination 192.168.200.200:6677[root@nat-router ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            192.168.100.202      tcp dpt:2233 to:192.168.200.200:6677Chain INPUT (policy ACCEPT)
target     prot opt source               destinationChain OUTPUT (policy ACCEPT)
target     prot opt source               destinationChain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.200.0/24     0.0.0.0/0

通过防火墙服务器的DNAT功能连接jumpserver服务器
在这里插入图片描述


堡垒机脚本(模拟登陆菜单)

#!/bin/bashwhile true; doecho "========= 堡垒机登录系统 ========="echo "1. 连接 Redis 服务器"echo "2. 连接 MySQL 服务器"echo "3. 连接 nginx 服务器"echo "4. 退出"echo "================================="read -p "请输入你的选择 [1-4]:" numcase $num in1)ssh root@192.168.200.201 -p 22;;2)ssh root@192.168.200.202 -p 22;;3)ssh root@192.168.200.203 -p 22;;4)echo "已退出。"exit 0;;*)echo "无效选择,请重新输入!";;esac
done

测试结果
在这里插入图片描述


相关文章:

【Linux】TCP_Wrappers+iptables实现堡垒机功能

规划 显示jumpserver的简单功能&#xff0c;大致的网络拓扑图如下 功能规划 & 拓扑结构 JumpServer&#xff08;堡垒机&#xff09;主要功能&#xff1a; 对访问目标服务器进行统一入口控制&#xff08;例如 nginx、mysql、redis&#xff09;。使用 iptables 做 NAT 转…...

git仓库中.git文件夹过大的问题

由于git仓库中存放了较大的文件&#xff0c;之后即使在gitignore中添加&#xff0c;也不会导致.git文件夹变小。 参考1 2 通过 du -d 1 -h查看文件大小 使用 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail…...

ssh 登录报错集合(FQA)

1、使用root登录失败&#xff08;远程主机不允许root登录&#xff09; 问题&#xff1a;通过 ssh 连接远程主机&#xff08; ubuntu &#xff09;时报错&#xff0c;Permission denied 如下&#xff1a; 解决方法&#xff1a;确认root的登录密码没错&#xff0c;且可以正常与远…...

NO.89十六届蓝桥杯备战|动态规划-分组背包-混合背包-多维费用背包|通天之分组背包|排兵布阵|樱花|L国的战斗间谍(C++)

P1757 通天之分组背包 - 洛谷 因为⼀个组⾥⾯最多只能挑⼀个元素&#xff0c;所以我们就以⼀个组为单位。 状态表⽰&#xff1a; dp[i][j]表⽰从前i 组中挑选物品&#xff0c;总重量不超过j 的情况下&#xff0c;最⼤的价值。 那么dp[n][m]就是最终结果。状态转移⽅程&#x…...

NVIDIA H100 vs A100:新一代GPU架构性能对比分析

一、核心架构演进对比 ‌Ampere架构&#xff08;A100&#xff09;‌采用台积电7nm工艺&#xff0c;集成540亿晶体管&#xff0c;配备6,912个CUDA核心和432个第三代Tensor Core&#xff0c;支持FP16、TF32和INT8精度计算。其显存子系统采用HBM2e技术&#xff0c;80GB版本带宽可…...

使用Mybatis时在XML中SQL高亮显示的方法

如图所示&#xff0c;上方的SQL代码很像是一个字符串&#xff0c;那么如何把上方的SQL改成和下方一样的SQL,使得IDEA可以识别SQL方言呢&#xff1f; 1.选中SQL中的一部分代码&#xff0c;此时左侧会出现一个黄色的灯泡图案&#xff0c;点击2.选择这个注入语言或者引用...

机场跑道异物检测数据集VOC+YOLO格式33793张31类别

数据集分辨率都是300x300,都是贴近地面拍摄&#xff0c;具体看图片 据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;33793 标注数量(xml文件…...

掌握C语言文件操作:从理论到实战指南

文件操作是C语言编程中不可或缺的一部分&#xff0c;它使得程序能够持久化存储数据&#xff0c;并在需要时高效读写。本文将从基础概念到实战技巧&#xff0c;系统讲解C语言文件操作的核心知识点&#xff0c;并结合代码示例帮助读者深入理解。 一. 为什么需要文件操作&#xf…...

如何进行预算考核

✅ 一、预算考核体系总体架构 模块内容说明考核内容1. 预算目标/指标完成情况2. 预算编制/执行情况双轮驱动,目标 + 执行双考核考核对象高层、中层、基层、后台支持分层分类考核考核周期月度(滚动)+ 季度(校验)+ 年度(决算)提高适应性和准确性考核工具指标体系、差错率评…...

在 Linux 上安装 MongoDB Shell

1. 下载 MongoDB Shell Download | MongoDB wget https://downloads.mongodb.com/compass/mongosh-2.5.0-linux-x64.tgz 2. tar -zxvf mongosh-2.5.0-linux-x64.tgz 3. copy 命令 sudo cp mongosh /usr/local/bin/ sudo cp mongosh_crypt_v1.so /usr/local/lib/ 4. …...

数据结构-复杂度详解

前言&#xff1a;大家好&#xff01;本文带来的是数据结构-复杂度的讲解&#xff0c;一起来看看吧&#xff01; 1.算法的时间复杂度和空间复杂度 1.1算法的效率 复杂度&#xff1a;衡量一个算法的好坏&#xff08;效率&#xff09;&#xff0c;从两个维度衡量&#xff0c;时…...

安宝特新闻丨Vuzix Core™波导助力AR,视角可调、高效传输,优化开发流程

Vuzix Core™ 光波导技术 近期&#xff0c;Vuzix Core™光波导技术赋能AR新视界&#xff01;该系列镜片支持定制化宽高比调节及20至40视场角范围&#xff0c;可灵活适配各类显示引擎。通过创新的衍射光波导架构&#xff0c;Vuzix Core™实现了光学传输效率与图像质量的双重突破…...

【SQL】常见SQL 行列转换的方法汇总 - 精华版

【SQL】常见SQL 行列转换的方法汇总 - 精华版 一、引言二、SQL常见的行列转换对比1. 行转列 Pivoting1.1 ​​CASE WHEN 聚合函数​​1.2 ​​IF 聚合函数​​1.3 ​​PIVOT操作符​​ 2.列转行 Unpivoting2.1 UNION ALL​​2.2 ​​EXPLODE函数&#xff08;Hive/Spark&#…...

【原创】vue-element-admin-plus完成确认密码功能,并实时获取Form中表单字段中的值

前言 我第一句就想说&#xff1a;vue-element-admin-plus真是个大坑货&#xff01;就一个确认密码功能都值得我单开一页博客来讲这么一个简单的功能 布局和代码 布局如图所示&#xff0c;我需要密码和确认密码&#xff0c;确认密码需要和密码中的内容一致&#xff0c;不然会返…...

Vue3中watch监视reactive对象方法详解

在Vue3中&#xff0c;使用watch监视reactive对象时&#xff0c;需根据监视的目标选择合适的方法。以下是详细的步骤和说明&#xff1a; 1. 监视整个reactive对象 自动深度监视&#xff1a;直接监视reactive对象时&#xff0c;Vue3会默认启用深度监视&#xff0c;无需设置deep:…...

PyTorch实现多输入输出通道的卷积操作

本文通过代码示例详细讲解如何在PyTorch中实现多输入通道和多输出通道的卷积运算&#xff0c;并对比传统卷积与1x1卷积的实现差异。 1. 多输入通道互相关运算 当输入包含多个通道时&#xff0c;卷积核需要对每个通道分别进行互相关运算&#xff0c;最后将结果相加。以下是实现…...

MySQL---数据库基础

1.数据库概念 文件保存数据有以下几个缺点&#xff1a; 文件的安全性问题 文件不利于数据查询和管理 文件不利于存储海量数据 文件在程序中控制不方便 数据库存储介质&#xff1a; 1.磁盘 2.内存 为了解决上述问题&#xff0c;设计出更加利于管理数据的东西 —— 数据库。…...

leetcode68.左右文本对齐

思路源自 leetcode-字符串篇 68题 文本左右对齐 难度高的模拟类型题目&#xff0c;关键点在于事先知道有多少单词要放在本行并且还要知道本行是不是最后一行&#xff08;最后一行需要全部单空格右对齐&#xff0c;不是最后一行就空格均摊&#xff09;&#xff0c;非最后一行的空…...

若依微服务集成Flowable仿钉钉工作流

项目简介 本项目工作流模块集成在若依项目单独一个模块&#xff0c;可实现单独运行部署&#xff0c; 前端采用微前端&#xff0c;嵌入在若依的前端项目中。因博主是后端开发&#xff0c;对前端不是太属性&#xff0c;没将工作流模块前端代码移到若依前端。下面贴上代码工程结构…...

MySQL 架构设计:数据库的“城市规划指南“

就像一座完美城市需要精心的规划才能高效运行&#xff0c;一个优秀的 MySQL 系统也需要精心的架构设计才能支撑业务的发展…让我们一起探索 MySQL 的"城市规划"&#xff0c;学习如何设计一个既高效又稳定的数据库王国&#xff01; 什么是 MySQL 架构设计&#xff1f…...

【从0到1学MybatisPlus】MybatisPlus入门

Mybatis-Plus 使用场景 大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国…...

依靠视频设备轨迹回放平台EasyCVR构建视频监控,为幼教连锁园区安全护航

一、项目背景 幼教行业连锁化发展态势越发明显。在此趋势下&#xff0c;幼儿园管理者对于深入了解园内日常教学与生活情况的需求愈发紧迫&#xff0c;将这些数据作为提升管理水平、优化教育服务的重要依据。同时&#xff0c;安装监控系统不仅有效缓解家长对孩子在校安全与生活…...

【简单理解什么是简单工厂、工厂方法与抽象工厂模式】

一、简单工厂模式 1.简单工厂模式 通过一个工厂类集中管理对象的创建 &#xff0c;通过参数决定具体创建哪个对象。 #适合对象类型较少且变化不频繁的场景&#xff0c;缺点是违反开闭原则&#xff08;新增产品需修改工厂类&#xff09; 开闭原则(对扩展开放‌对修改关闭‌) :当…...

DeepSeek和文心一言的区别

文章目录 1.开发公司&#xff1a;2.应用场景&#xff1a;3.训练数据&#xff1a;4.模型架构&#xff1a;5.技术特点&#xff1a;6.语言风格&#xff1a;7.开源性&#xff1a;8.界面与用户体验&#xff1a; 1.开发公司&#xff1a; DeepSeek 由杭州深度求索人工智能基础技术研究…...

HOW - React Developer Tools 调试器

目录 React Developer Tools使用Components 功能特性1. 查看和编辑 props/state/hooks2. 查找组件3. 检查组件树4. 打印组件信息5. 检查子组件 Profiler 功能特性Commit ChartFlame Chart 火焰图Ranked Chart 排名图 why-did-you-render 参考文档&#xff1a; React调试利器&a…...

STM32F103C8T6单片机开发:简单说说单片机的外部GPIO中断(标准库)

目录 前言 如何使用STM32F1系列的标准库完成外部中断的抽象 初始化我们的GPIO为输入的一个模式 初识GPIO复用&#xff0c;开启GPIO的复用功能时钟 GPIO_EXTILineConfig和EXTI_Init配置外部中断参数 插入一个小知识——如何正确的配置结构体&#xff1f; 初始化中断&#…...

Oracle序列介绍

文章目录 Oracle序列介绍1. Oracle序列演进2. Oracle序列使用3. Oracle身份列&#xff08;自增列&#xff09;4. Oracle序列常见使用与问题 Oracle序列介绍 1. Oracle序列演进 Oracle序列&#xff08;Sequence&#xff09;是数据库生成唯一数值序列的对象&#xff0c;主要用于…...

docker的安装使用0废话版本自学软硬件工程师778天

见字如面&#xff0c; 这里是AIGC创意人_竹相左边 上一篇 因为 自己开发客户系统&#xff0c;为了解决一键启动 前端后端&#xff0c;涉及到了docker-compose 在新的电脑上安装docker 有各种问题这里再次记录下&#xff0c;既是笔记也是分享。 我先用自己的话说一遍&#xff0…...

探秘 Svelte+Vite+TS+Melt - UI 框架搭建,开启高效开发

框架太“重”了&#xff1a;通常一个小型项目只由少数几个简单页面构成&#xff0c;如果使用 Vue 或者 React 这些框架来研发的话&#xff0c;有点“大材小用”了。构建的产物中包含了不少框架运行时代码(虚拟 DOM、响应式、状态管理等)&#xff0c;这些代码对于小型项目而言是…...

3D数据共享标准——GLB文件格式揭秘

GLB 文件格式&#xff1a;跨平台 3D 数据共享的标准 简介 在这个数据爆炸的时代&#xff0c;3D 数据因其直观、逼真的特点而得到广泛应用。然而&#xff0c;不同 3D 软件和平台之间的兼容性一直是一个难题。 为了解决这一问题&#xff0c;GLB 文件格式应运而生。作为一种标准…...