Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
the-bastion — SSH 액세스에 대한 인증, 권한 부여, 추적 가능성 및 감사 가능성. | Kitploit
도구/GitHubGitHub/ovh/the-bastion
Authentication & AuthorizationConfiguration AuditingNetwork SecurityPenetration TestingUtilities & FrameworksIdentity & Access Management (IAM)Red Teaming
GitHubovh/the-bastion

the-bastion

SSH 액세스에 대한 인증, 권한 부여, 추적 가능성 및 감사 가능성.

저장소 보기
2.2k131571개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

The Bastion Logo

🔒 The Bastion

개요

배스천은 운영 팀(시스템 관리자, 개발자, 데이터베이스 관리자 등)이 일반적으로 ssh를 사용하여 장치(서버, 가상 머신, 클라우드 인스턴스, 네트워크 장비 등)에 안전하게 연결하기 위한 유일한 진입점으로 사용되는 머신 클러스터입니다.

The Bastion은 전체 인프라에 대한 인증, 권한 부여, 추적성 및 감사 가능성을 위한 메커니즘을 제공합니다.

사용자와 인프라 사이에 위치한 The Bastion은 중간에 추상화 계층을 추가하여 인프라가 운영 팀 구성원을 개별적으로 알 필요가 없도록 합니다.

각 팀 구성원은 The Bastion에 개인 계정을 가지고 있으며, 하나 이상의 배스천 그룹의 구성원이 될 수 있습니다. 이 그룹은 하나 이상의 인프라에 대한 액세스 권한을 부여할 수 있습니다. 인프라 장치는 자신이 속한 배스천 그룹만 알고 신뢰하면 됩니다.

The Bastion의 세분화된 RBAC는 계정 수명 주기 관리(인사 관리 시스템, LDAP 또는 AD와 연동), 그룹 ACL 최신 상태 유지(CMDB와 연동) 등을 위해 자동화에서 사용할 수 있는 계정을 포함하여 모든 계정(그룹 범위 또는 배스천 전체)에 일부 책임을 위임할 수 있게 합니다. 자동화된 프로세스는 JSON API over SSH를 통해 쉽게 구현할 수 있습니다.

지식 자료

멋진 그림을 보면서 더 알고 싶으신가요? 다음은 The Bastion의 핵심 기능과 원리를 더 자세히 설명하는 일련의 블로그 게시물입니다:

  • Part 1 - Genesis
  • Part 2 - Delegation Dizziness
  • Part 3 - Security at the Core
  • Part 4 - A new era

참고할 만한 다른 자료:

  • 온라인 문서
  • (프랑스어 영상, 영어 슬라이드) The Bastion at the Very Tech Trip 2023, The Bastion 유무에 따른 인프라 관리 사례 연구
  • (프랑스어 영상, 영어 슬라이드) The Bastion at the OSSIR, 2021, 핵심 원리를 빠르게 설명하고, realm 기능을 자세히 설명한 후, 기술 구현 선택이 보안을 강화하는 이유에 초점을 맞춥니다(보안 취약점을 코드에 의도적으로 추가하여 증명!).
  • (프랑스어 팟캐스트) The Bastion at NoLimitSecu, 2021, 질의응답 인터뷰

♻️ 환경에 대한 가정 제로

The Bastion을 작동시키기 위해 수신(ingress) 또는 송신(egress) 측에 특별한 것이 필요하지 않습니다.

연결에는 기본 ssh 클라이언트만 필요하며, 반대쪽에서는 표준 sshd 서버만 있으면 됩니다. 예를 들어, 사용자 정의 소프트웨어를 설치할 수 없는 네트워크 장치도 포함됩니다.

저보안 암호화 알고리즘 또는 텔넷만 지원하는 오래된 장치는 방화벽으로 차단하고 The Bastion만 허용함으로써 인터넷에서 숨길 수 있습니다. 이를 통해 배스천 수신 측에서는 높은 보안 등급의 연결만 허용하여 보안 수준을 낮추지 않을 수 있습니다.

➰ 신뢰성

  • 잘 알려진 소수의 라이브러리만 사용하며, 타사 코드가 적을수록 공격 표면이 작아집니다.
  • The Bastion은 자급자족하도록 설계되었습니다. 인증 또는 권한 부여 단계에서 데이터베이스, 다른 데몬, 다른 머신 또는 타사 클라우드 서비스와 같은 종속성이 없으므로 통계적으로 다운타임이 줄어듭니다.
  • 고가용성을 설정하여 여러 배스천 인스턴스가 클러스터를 형성하고, 항상 모든 인스턴스를 사용할 수 있도록 할 수 있습니다(액티브/액티브 방식).

:godmode: 비-완전 기능 목록

  • 개인 및 그룹 액세스 체계로 그룹 역할 위임을 통해 보안 타협 없이 팀 자율성을 보장합니다.
  • 수신 및 송신 연결 간 SSH 프로토콜 분리
  • 대화형 세션 녹화 (표준 ttyrec 파일)
  • 비대화형 세션 녹화 (ttyrec를 통한 stdout 및 stderr)
  • SIEM에서 쉽게 사용할 수 있도록 syslog를 통한 광범위한 로깅 지원
  • 인증 기능에는 공개 키 인증 외에도 MFA/2FA (비밀번호, TOTP) 지원이 포함됩니다.
  • 수신 연결 측에서 Yubico PIV 키 증명 확인 및 시행 지원
  • 수신 연결 측에서 mosh 지원
  • 원격 서버와 파일을 업로드/다운로드할 수 있도록 scp, sftp 및 rsync 패스스루 지원
  • netconf SSH 서브시스템 패스스루 지원
  • 영역(realms) 지원: 두 개의 서로 다른 회사의 배스천 간 신뢰를 생성하여 인증 및 권한 부여 단계를 분리하면서도 로컬 정책을 계속 적용합니다.
  • 공개 키 인증을 지원하지 않는 레거시 장치를 위해 송신 측에서 SSH 비밀번호 자동 로그인을 지원하면서도 수신 측에서는 적절한 공개 키 인증을 강제합니다.
  • SSH를 지원하지 않는 오래된 장치를 위해 송신 측에서 텔넷 비밀번호 자동 로그인을 지원하면서도 수신 측에서는 적절한 SSH 공개 키 인증을 강제합니다.
  • 수신 및 송신 비밀번호 분리를 위한 중간자 인증 및 권한 부여 처리가 포함된 HTTPS 프록시 지원 (주로 네트워크 장치 API에 유용)

🔧 The Bastion 설치, 업그레이드, 사용

온라인 문서 또는 doc/ 폴더에 있는 해당 텍스트 기반 버전을 참조하십시오.

🎥 빠른 연결 및 재생 예제

asciicast

⚡ TL;DR: Docker를 사용한 일회용 샌드박스 테스트

몇 초 안에 The Bastion을 테스트할 수 있는 좋은 방법이지만, 프로덕션에서 컨테이너화를 진지하게 고려하고 있다면 FAQ를 읽어보세요.

샌드박스 이미지는 다음 아키텍처에서 사용할 수 있습니다: linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/s390x.

도커 이미지를 실행해 봅시다:

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

이제 기본 구성으로 실행 중입니다! 편리한 배스천 별칭을 설정하고 info 명령을 테스트해 봅시다:

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

배스천 관리자로 인사할 것입니다. 즉, 모든 명령에 액세스할 수 있습니다. 대화형 모드로 들어가 보겠습니다:

root@kitploit:~
bastion -i

이렇게 하면 여러 --osh 플러그인을 연속으로 호출할 수 있습니다. 이제 도움말을 요청하여 모든 플러그인을 볼 수 있습니다:

root@kitploit:~
$> help

배스천을 통해 연결하려는 원격 머신이 있다면, 송신 키를 가져옵니다:

root@kitploit:~
$> selfListEgressKeys

이 공개 키를 원격 머신의 .ssh/ 폴더 아래 연결하려는 계정의 uthorized_keys에 복사한 후:

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 --help)과 각 osh 플러그인의 도움말(bastion --osh command --help)을 확인하십시오. 또한 /etc/bastion/bastion.conf (Linux)에 있는 bastion.conf 파일을 사용자 정의하는 것을 잊지 마십시오.

🔀 설치 지원 OS

아래의 Linux 배포판은 각 릴리스에서 테스트되지만, 이는 보안 제품이므로 강력히 최신 안정 버전의 OS에서 실행할 것을 권장합니다:

  • 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 버전은 각 릴리스에서 테스트되지 않았지만, 약간의 조정만으로 작동할 것입니다.

다음 OS도 각 릴리스에서 테스트됩니다:

  • FreeBSD 15.1, 15.0, 14.4

FreeBSD는 사용 가능한 pam 플러그인 세트가 제한되어 있어 부분적인 MFA 지원을 제공합니다. 추가 비밀번호 또는 TOTP 요소 중 하나에 대한 지원은 구성할 수 있지만, 동시에 둘 다는 구성할 수 없습니다.

🆗 코드 품질

  • 코드는 perltidy로 실행됩니다.
  • 코드는 또한 perlcritic으로 실행됩니다.
  • 모든 릴리스 전에 기능 테스트가 수행됩니다.

🛂 핵심 보안

가장 보수적이고 예방적이며 편집증적인 코딩 프로세스에서도 코드에는 버그가 있으므로 맹목적으로 신뢰해서는 안 됩니다. 따라서 배스천은 자체 코드를 신뢰하지 않습니다. 아래와 같이 운영 체제 보안 기본 요소를 활용하여 추가 보안을 확보합니다.

  • 잘 알려지고 신뢰할 수 있는 UNIX 임의 접근 제어(DAC) 사용:

    • 배스천 사용자는 실제 시스템 사용자에 매핑됩니다.
    • 배스천 그룹은 실제 시스템 그룹에 매핑됩니다.
    • 모든 코드는 작업을 허용하기 전에 지속적으로 권한을 확인합니다.
    • UNIX DAC는 코드가 속아서 작업을 허용하더라도 작업이 성공하는 것을 방지하는 안전 벨트로 사용됩니다.
  • 배스천 메인 스크립트는 배스천 사용자의 시스템 셸로 선언됩니다:

    • 어떤 사용자도 시스템에서 실제(bash와 같은) 셸 액세스 권한이 없습니다.
    • 모든 코드는 권한이 없는 사용자의 시스템 계정 권한으로 실행됩니다.
    • 사용자가 실제 셸로 탈출하더라도 SSH 키에 대한 파일 시스템 수준 읽기 권한이 없기 때문에 액세스 권한이 없는 머신에 연결할 수 없습니다.
  • 코드는 모듈식입니다:

    • 메인 코드는 주로 권한 확인, 작업 로깅 및 다른 머신에 대한 ssh 액세스 활성화를 수행합니다.
    • 플러그인이라고 하는 모든 부 명령은 메인 코드와 분리된 모듈에 있습니다.
    • 모듈은 공개(open) 또는 *제한(restricted)*될 수 있습니다.
      • 사용 필요에 따라 특별히 부여된 계정만 특정 제한 플러그인을 실행할 수 있습니다.
      • 이는 코드에서 확인되며 UNIX DAC에 의해 강제됩니다(플러그인은 해당 플러그인에 특정한 시스템 그룹만 읽고 실행할 수 있습니다).
  • 확장된 시스템 권한이 필요한 모든 코드는 헬퍼라는 모듈로 메인 코드와 분리되어 있습니다.

    • 헬퍼는 sudo 아래에서만 실행됩니다.
    • sudoers 구성은 명령에 특정한 시스템 그룹에 연결되며, 사용 필요에 따라 계정에 부여됩니다.
    • 헬퍼는 해당 명령에 특정한 시스템 그룹만 읽고 실행할 수 있습니다.
    • 헬퍼 경로와 일부 불변 매개변수는 sudoers 구성에 하드코딩됩니다.
    • sudo 아래에서 실행되는 모든 코드에는 Perl tainted 모드(-T)가 사용되어 사용자 입력이 로직을 방해하지 않도록 즉시 실행을 중단합니다.
    • sudo 아래에서 실행되는 코드는 호출자를 신뢰하지 않으며 모든 입력을 다시 확인합니다.

🔍 감사 가능성

  • 배스천 관리자는 배스천 자체를 관리하기 위해 배스천의 로직을 사용하여 연결해야 합니다(또는 다른 배스천을 사용하는 것이 더 좋습니다). 이는 모든 경우에 감사 가능성을 보장합니다.
  • 모든 액세스 및 작업(허용 또는 거부 여부)은 다음으로 로깅됩니다:
    • syslog (배스천 관리자도 기록을 조작할 수 없도록 원격 syslog 서버로 전송해야 함) 및/또는
    • 로컬 sqlite3 데이터베이스 (쉬운 검색을 위해)
  • 모든 세션은 ttyrec으로 녹화되며, 이 기록을 암호화하여 원격 에스크로 파일러로 푸시하는 헬퍼 스크립트가 제공됩니다.
  • 이 코드는 여러 PCI-DSS, ISO 27001, SOC1 및 SOC2 인증 환경에서 프로덕션에 사용됩니다.

🔗 관련

종속성

  • ovh-ttyrec - 터미널(tty) 레코더인 ttyrec의 향상된 호환 버전

선택적 도구

  • yubico-piv-checker - PIV 키 및 인증서의 유효성을 확인하는 자체 포함 Go 바이너리. The Bastion PIV 인식 기능을 활성화하기 위한 선택 사항입니다.
  • puppet-thebastion (GitHub) - The Bastion 머신의 구성을 자동화하고 유지 관리하는 Puppet 모듈
  • the-bastion-ansible-wrapper - The Bastion을 통해 Ansible 플레이북을 실행할 수 있게 하는 래퍼
  • debian-cis - CIS 권장 사항에 따라 Debian 호스트의 강화를 적용하고 모니터링하는 스크립트

커뮤니티 도구

비-완전한 커뮤니티 유지 관리 도구 목록:

  • chef-cookbook - the-bastion을 설치하고 기본 구성을 설정하는 Chef 쿡북
  • ansible role - the-bastion을 설치하고 구성하는 Ansible 역할

📝 라이선스

Apache License, 버전 2.0("라이선스")에 따라 라이선스가 부여됩니다. 라이선스를 준수하지 않는 한 이 파일을 사용할 수 없습니다. 라이선스 사본은 다음에서 얻을 수 있습니다.

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

해당 법률에 의해 요구되거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 "있는 그대로" 배포되며, 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건도 없습니다. 라이선스에 따른 권리 및 제한 사항을 관리하는 특정 언어는 라이선스를 참조하십시오.

도구 다운로드
  • 권한이 없는 코드와 권한이 있는 코드 간의 통신은 JSON을 사용하여 수행됩니다.
  • 수신 측과 송신 측 사이에 프로토콜 분리가 이루어져 대부분의 프로토콜 기반 취약점을 무력화합니다.