Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
the-bastion — SSH 访问的身份验证、授权、可追溯性和可审计性。 | Kitploit
工具/GitHubGitHub/ovh/the-bastion
身份验证与授权配置审计网络安全渗透测试实用工具与框架身份与访问管理 (IAM)红队
GitHubovh/the-bastion

the-bastion

SSH 访问的身份验证、授权、可追溯性和可审计性。

查看仓库
2.2k131224天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Bastion 标志

🔒 The Bastion

概述

Bastion 是一个由多台机器组成的集群,作为运维团队(如系统管理员、开发人员、数据库管理员等)连接设备(服务器、虚拟机、云实例、网络设备等)的唯一入口点,通常使用 ssh。

Bastion 为您的整个基础设施提供认证、授权、可追溯性和可审计性机制。

Bastion 部署在用户与基础设施之间,增加了一层抽象,使得您的基础设施无需单独了解运维团队的每个成员。

每位团队成员在 Bastion 上拥有一个独立账户,可以属于一个或多个 Bastion 组,这些组可能赋予他们访问一个或多个基础设施的权限。基础设施设备只需知道并信任它们所属的 Bastion 组。

Bastion 的细粒度 RBAC 使得可以将某些职责委托给任何账户(基于组或 Bastion 全局),包括可能被自动化工具使用的账户(例如,用于管理账户生命周期,与人力资源管理系统、LDAP 或 AD 关联;确保组 ACL 与 CMDB 同步等)。自动流程可以通过 基于 SSH 的 JSON API 轻松实现。

知识资源

想了解更多并查看一些漂亮的示意图?这里有一系列深入介绍 Bastion 核心功能和原理的博客文章:

  • 第 1 部分 - 起源
  • 第 2 部分 - 委托之迷
  • 第 3 部分 - 安全核心
  • 第 4 部分 - 新时代

其他可能有用的资源:

  • 在线文档
  • (法文视频,英文幻灯片) The Bastion 在 Very Tech Trip 2023,关于使用和不使用 Bastion 管理基础设施的案例研究
  • (法文视频,英文幻灯片) The Bastion 在 OSSIR, 2021,快速解释核心原理,然后详细说明 realm 功能,最后深入探讨为何所选的技术实现能增强安全性(故意在代码中添加安全漏洞以证明!)
  • (法文播客) The Bastion 在 NoLimitSecu, 2021,问答访谈

♻️ 对环境零假设

无需对 Bastion 的入口或出口侧进行任何特殊配置即可使其运行。

只需使用您熟悉的 ssh 客户端即可连接通过 Bastion,而在另一端,任何标准 sshd 服务端都可以正常工作。例如,这包括那些无法安装自定义软件的网络设备。

对于仅支持低安全性加密算法或 telnet 的旧设备,可以通过防火墙将其隐藏,仅允许 Bastion 访问,从而避免低安全性的折衷——在 Bastion 入口侧仅允许高安全级别的连接。

➰ 可靠性

  • 仅使用少数知名的库,更少的第三方代码意味着更小的攻击面
  • Bastion 被设计为自给自足:无需依赖数据库、其他守护进程、其他机器或第三方云服务,无论是认证还是授权阶段,从统计角度看意味着更少的停机时间
  • 可以设置高可用性,使多个 Bastion 实例形成集群,任何实例均可随时使用(主/主模式)

:godmode: 非详尽的功能列表

  • 个人 和 组 访问方案,支持组角色委托,确保团队自主性同时不牺牲安全性
  • 入口和出口连接之间的 SSH 协议中断
  • 交互式会话录制(标准 ttyrec 文件格式)
  • 非交互式会话录制(通过 ttyrec 记录 stdout 和 stderr)
  • 通过 syslog 支持全面的日志记录,便于 SIEM 消费
  • 认证功能包括在公钥认证基础上支持 MFA/2FA(密码、TOTP)
  • 支持 Yubico PIV 密钥证明的检查与强制验证,在入口连接侧
  • 在入口连接侧支持 mosh
  • 支持 scp、sftp 和 rsync 直通,用于从远程服务器上传和/或下载文件
  • 支持 netconf SSH 子系统直通
  • 支持 realm,可在两个可能属于不同公司的 Bastion 之间建立信任,将认证和授权阶段分开,同时仍执行本地策略
  • 在出口侧支持 SSH 密码自动登录,用于不支持公钥认证的旧设备,同时在入口侧仍强制进行公钥认证
  • 在出口侧支持 telnet 密码自动登录,用于不支持 SSH 的古老设备,同时在入口侧仍强制进行 SSH 公钥认证
  • 支持 HTTPS 代理,带中间人认证和授权处理,用于入口和出口密码解耦(主要用于网络设备 API)

🔧 安装、升级、使用 Bastion

请参阅 在线文档,或 doc/ 文件夹中的相应文本版本。

🎥 快速连接和重放示例

asciicast

⚡ TL;DR:测试它:使用 Docker 的即用沙箱

这是几秒钟内测试 Bastion 的好方法,但如果您认真考虑在生产中使用容器化,请阅读 FAQ。

沙箱镜像适用于以下架构:linux/386、linux/amd64、linux/arm/v6、linux/arm/v7、linux/arm64、linux/ppc64le、linux/s390x。

运行 Docker 镜像:

root@kitploit:~
docker run -d -p 22 --name bastiontest ovhcom/the-bastion:sandbox

准备好您的 SSH 公钥,然后配置第一个管理员账户:

root@kitploit:~
docker exec -it bastiontest /opt/bastion/bin/admin/setup-first-admin-account.sh poweruser auto

现在我们已经启动并运行默认配置!让我们设置一个方便的 bastion 别名,并测试 info 命令:

root@kitploit:~
PORT=$(docker port bastiontest | cut -d: -f2)
alias bastion="ssh [email protected] -tp $PORT -- "
bastion --osh info

它应该会提示您是 bastion 管理员,这意味着您有权访问所有命令。让我们进入交互模式:

root@kitploit:~
bastion -i

这在需要连续调用多个 --osh 插件时很有用。现在我们可以请求帮助以查看所有插件:

root@kitploit:~
$> help

如果您有远程机器想通过 bastion 连接,请获取您的出口密钥:

root@kitploit:~
$> selfListEgressKeys

将此公钥复制到远程机器的 authorized_keys 文件中,放在您要连接账户的 .ssh/ 文件夹下,然后:

root@kitploit:~
$> selfAddPersonalAccess --host <remote_host> --user <remote_account_name> --port-any
$> ssh <remote_account_name>@<remote_host>

请注意,您无需使用交互模式即可直接连接,例如:

root@kitploit:~
bastion <remote_account_name>@<remote_machine_host_or_ip>

就这样!当然,还有更多内容,文档位于 doc/ 文件夹和在线文档中。 请务必查看 bastion 的帮助(bastion --help)以及每个 osh 插件的帮助(bastion --osh command --help)。 另外,不要忘记自定义您的 bastion.conf 文件,该文件位于 /etc/bastion/bastion.conf(对于 Linux)。

🔀 支持的安装操作系统

以下 Linux 发行版在每个版本发布时都经过测试,但鉴于这是一个安全产品,我们强烈建议您运行最新、稳定的操作系统版本:

  • Debian 13 (Trixie), 12 (Bookworm), 11 (Bullseye)
  • RockyLinux 10.x, 9.x, 8.x
  • Ubuntu LTS 26.04, 24.04, 22.04
  • OpenSUSE Leap 16.0

其他所谓“现代”的 Linux 版本未在每个版本发布时测试,但应该可以在少量或无需调整的情况下工作。

以下操作系统也在每个版本发布时进行测试:

  • FreeBSD 15.1, 15.0, 14.4

FreeBSD 仅部分支持 MFA,因为其可用的 pam 插件集有限。可以配置额外的密码或 TOTP 因素之一,但不能同时配置两者。

🆗 代码质量

  • 代码经过 perltidy 处理
  • 代码经过 perlcritic 检查
  • 每次发布前都会进行功能测试

🛂 安全为核心

即使采用最保守、最谨慎、甚至偏执的编码流程,代码仍然存在缺陷,因此不应盲目信任。因此,bastion 不信任自身代码。它利用操作系统的安全原语来获得额外的安全保障,如下所示。

  • 使用众所周知且值得信赖的 UNIX 自主访问控制(DAC):

    • Bastion 用户映射到实际系统用户
    • Bastion 组映射到实际系统组
    • 所有代码在允许任何操作之前不断检查权限
    • UNIX DAC 作为安全带,即使代码被欺骗允许某项操作,也能防止其成功执行
  • Bastion 主脚本被声明为 bastion 用户的系统 shell:

    • 没有用户拥有系统上的真正(类似 bash 的)shell 访问权限
    • 所有代码在非特权用户的系统账户权限下运行
    • 即使某个用户能逃逸到真实 shell,他们也无法连接到没有权限的机器,因为他们没有文件系统级别的 SSH 密钥读取权限
  • 代码是模块化的:

    • 主代码主要检查权限、记录操作,并启用对其他机器的 ssh 访问
    • 所有辅助命令(称为 插件)位于与主代码分离的模块中
    • 模块可以是 开放 或 受限 的:
      • 只有被特别授予需要的账户才能运行特定的受限插件
      • 这由代码检查,并且也由 UNIX DAC 强制执行(插件只有特定于该插件的系统组可读可执行)
  • 所有需要扩展系统权限的代码与主代码分离,存放在称为 helpers 的模块中:

    • Helpers 仅通过 sudo 运行
    • sudoers 配置附加到命令特定的系统组,该组根据需要授予账户
    • Helpers 只有命令特定的系统组可读可执行
    • Helpers 的路径和一些不可变参数硬编码在 sudoers 配置中
    • 所有通过 sudo 运行的代码使用 Perl 污染模式(-T),防止用户输入干扰逻辑,立即终止执行
    • 通过 sudo 运行的代码不信任其调用者,并重新检查每个输入
    • 非特权代码与特权代码之间的通信通过 JSON 进行
  • 在入口和出口之间实现协议中断,使大多数基于协议的攻击失效

🔍 可审计性

  • Bastion 管理员必须使用 bastion 的逻辑连接自身以进行管理(或者更好,使用另一个 bastion 进行管理),这确保了所有情况下的可审计性
  • 每次访问和操作(无论允许还是拒绝)均记录以下内容:
    • syslog,也应发送到远程 syslog 服务器,以确保即使 bastion 管理员也无法篡改记录,以及/或者
    • 本地 sqlite3 数据库,便于搜索
  • 每个会话通过 ttyrec 录制,提供了辅助脚本用于加密并将这些记录推送到远程托管文件服务器
  • 该代码已在多个通过 PCI-DSS、ISO 27001、SOC1 和 SOC2 认证的生产环境中使用

🔗 相关

依赖项

  • ovh-ttyrec — ttyrec 的增强但兼容版本,一个终端(tty)录制工具

可选工具

  • yubico-piv-checker — 一个自包含的 Go 二进制文件,用于检查 PIV 密钥和证书的有效性。可选,用于启用 Bastion 的 PIV 感知功能
  • puppet-thebastion (GitHub) — 一个 Puppet 模块,用于自动化和维护 Bastion 机器的配置
  • the-bastion-ansible-wrapper — 一个封装器,用于通过 Bastion 运行 Ansible 剧本
  • debian-cis — 一个脚本,用于根据 CIS 建议应用和监控 Debian 主机的加固

社区工具

由社区维护的相关工具的非详尽列表:

  • chef-cookbook — 一个 Chef Cookbook,用于安装 the-bastion 并设置其默认配置
  • ansible role — 一个 Ansible 角色,用于安装和配置 the-bastion

📝 许可证

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

root@kitploit:~
http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

下载工具