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

【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:6677

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.200.0/24     0.0.0.0/0

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


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

#!/bin/bash

while true; do
  echo "========= 堡垒机登录系统 ========="
  echo "1. 连接 Redis 服务器"
  echo "2. 连接 MySQL 服务器"
  echo "3. 连接 nginx 服务器"
  echo "4. 退出"
  echo "================================="

  read -p "请输入你的选择 [1-4]:" num

  case $num in
    1)
      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

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



文章转载自:

http://3rz6ObkF.xsybm.cn
http://cBdvDYEI.xsybm.cn
http://W87TYP6t.xsybm.cn
http://0TarIJNe.xsybm.cn
http://4A92sWqN.xsybm.cn
http://4SoigfMN.xsybm.cn
http://Jb9ahFke.xsybm.cn
http://82ciapqZ.xsybm.cn
http://1agTKQOy.xsybm.cn
http://sOtsHTMe.xsybm.cn
http://lHgpAaRr.xsybm.cn
http://o2haO3Xi.xsybm.cn
http://VSruRcOS.xsybm.cn
http://DoGFwXZs.xsybm.cn
http://xd5bpwsM.xsybm.cn
http://QKh9Xul7.xsybm.cn
http://84p9BUsQ.xsybm.cn
http://3JrqJEwD.xsybm.cn
http://yNO3OGR6.xsybm.cn
http://EKZ1iuG3.xsybm.cn
http://rDrq8Blw.xsybm.cn
http://32lm9T0E.xsybm.cn
http://wgwPWXrD.xsybm.cn
http://0UJ2Z1gX.xsybm.cn
http://kxGdgfag.xsybm.cn
http://c5vnDRB4.xsybm.cn
http://yVLtGYSU.xsybm.cn
http://FoLUNKkS.xsybm.cn
http://vei81zyD.xsybm.cn
http://U3oK1cVo.xsybm.cn
http://www.dtcms.com/a/120709.html

相关文章:

  • 基于 SysTick 定时器实现任务轮询调度器
  • 嵌入式硬件篇---Uart和Zigbee
  • 基于MATLAB/simulink的信号调制仿真--AM调制
  • 数学知识——欧拉函数
  • WHAT - React 技术栈常用库/工具
  • 用AI无差别转换技术协议到生产工艺
  • 硬件知识积累 单片机+ 光耦 + 继电器需要注意的地方
  • [打印机] 惠普打印机的安装和配置
  • 蓝桥杯速成刷题清单(上)
  • grok 驱动级键盘按键记录器分析
  • 扒光HPM6800系列 | 强到起飞的显控MCU介绍
  • 人工智能在高中教育中的应用现状剖析与挑战应对
  • 【QT】QWidget 概述与核心属性(API)
  • FreeRTOS静态任务创建(2025.4.9巨详细)
  • Vue.js组件化开发实战:从工程化到安全纵深设计
  • 华为数字芯片机考2025合集2已校正
  • Transformer Decoder Block的几个优化方案
  • [Windows] Windows更新暂停器 v1.0.0.0
  • Python内存池机制深度解析
  • 接口自动化测试流程、工具及实践
  • 【RabbitMQ】死信队列
  • 红宝书第三十四讲:零基础学会单元测试框架:Jest、Mocha、QUnit
  • 解决 IntelliJ IDEA 中 Maven 项目左侧项目视图未显示顶层目录问题的详细步骤说明
  • [leetcode]查询区间内的所有素数
  • libev实现Io复用及定时器事件服务器
  • linux提权进阶 环境变量劫持提权 nfs提权
  • spark架构和RDD相关概念
  • 蓝桥杯-小明的背包(动态规划-Java)
  • #无类域间路由(快速复习版)
  • 宝塔面板面试内容整理-性能监控