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

배스천은 운영 팀(시스템 관리자, 개발자, 데이터베이스 관리자 등)이 일반적으로 ssh를 사용하여 장치(서버, 가상 머신, 클라우드 인스턴스, 네트워크 장비 등)에 안전하게 연결하기 위한 유일한 진입점으로 사용되는 머신 클러스터입니다.
The Bastion은 전체 인프라에 대한 인증, 권한 부여, 추적성 및 감사 가능성을 위한 메커니즘을 제공합니다.
사용자와 인프라 사이에 위치한 The Bastion은 중간에 추상화 계층을 추가하여 인프라가 운영 팀 구성원을 개별적으로 알 필요가 없도록 합니다.
각 팀 구성원은 The Bastion에 개인 계정을 가지고 있으며, 하나 이상의 배스천 그룹의 구성원이 될 수 있습니다. 이 그룹은 하나 이상의 인프라에 대한 액세스 권한을 부여할 수 있습니다. 인프라 장치는 자신이 속한 배스천 그룹만 알고 신뢰하면 됩니다.
The Bastion의 세분화된 RBAC는 계정 수명 주기 관리(인사 관리 시스템, LDAP 또는 AD와 연동), 그룹 ACL 최신 상태 유지(CMDB와 연동) 등을 위해 자동화에서 사용할 수 있는 계정을 포함하여 모든 계정(그룹 범위 또는 배스천 전체)에 일부 책임을 위임할 수 있게 합니다. 자동화된 프로세스는 JSON API over SSH를 통해 쉽게 구현할 수 있습니다.
멋진 그림을 보면서 더 알고 싶으신가요? 다음은 The Bastion의 핵심 기능과 원리를 더 자세히 설명하는 일련의 블로그 게시물입니다:
참고할 만한 다른 자료:
The Bastion을 작동시키기 위해 수신(ingress) 또는 송신(egress) 측에 특별한 것이 필요하지 않습니다.
연결에는 기본 ssh 클라이언트만 필요하며, 반대쪽에서는 표준 sshd 서버만 있으면 됩니다. 예를 들어, 사용자 정의 소프트웨어를 설치할 수 없는 네트워크 장치도 포함됩니다.
저보안 암호화 알고리즘 또는 텔넷만 지원하는 오래된 장치는 방화벽으로 차단하고 The Bastion만 허용함으로써 인터넷에서 숨길 수 있습니다. 이를 통해 배스천 수신 측에서는 높은 보안 등급의 연결만 허용하여 보안 수준을 낮추지 않을 수 있습니다.
온라인 문서 또는 doc/ 폴더에 있는 해당 텍스트 기반 버전을 참조하십시오.
몇 초 안에 The Bastion을 테스트할 수 있는 좋은 방법이지만, 프로덕션에서 컨테이너화를 진지하게 고려하고 있다면 FAQ를 읽어보세요.
샌드박스 이미지는 다음 아키텍처에서 사용할 수 있습니다: linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/s390x.
도커 이미지를 실행해 봅시다:
docker run -d -p 22 --name bastiontest ovhcom/the-bastion:sandbox
공개 SSH 키를 준비한 후, 첫 번째 관리자 계정을 구성합니다:
docker exec -it bastiontest /opt/bastion/bin/admin/setup-first-admin-account.sh poweruser auto
이제 기본 구성으로 실행 중입니다! 편리한 배스천 별칭을 설정하고 info 명령을 테스트해 봅시다:
PORT=$(docker port bastiontest | cut -d: -f2)
alias bastion="ssh [email protected] -tp $PORT -- "
bastion --osh info
배스천 관리자로 인사할 것입니다. 즉, 모든 명령에 액세스할 수 있습니다. 대화형 모드로 들어가 보겠습니다:
bastion -i
이렇게 하면 여러 --osh 플러그인을 연속으로 호출할 수 있습니다. 이제 도움말을 요청하여 모든 플러그인을 볼 수 있습니다:
$> help
배스천을 통해 연결하려는 원격 머신이 있다면, 송신 키를 가져옵니다:
$> selfListEgressKeys
이 공개 키를 원격 머신의 .ssh/ 폴더 아래 연결하려는 계정의 uthorized_keys에 복사한 후:
$> selfAddPersonalAccess --host <remote_host> --user <remote_account_name> --port-any
$> ssh <remote_account_name>@<remote_host>
대화형 모드를 사용하지 않고 직접 연결할 수도 있습니다:
bastion <remote_account_name>@<remote_machine_host_or_ip>
그게 다입니다! 물론 더 많은 기능이 있으며, 문서는 doc/ 폴더와 온라인에서 확인할 수 있습니다.
배스천 도움말(bastion --help)과 각 osh 플러그인의 도움말(bastion --osh command --help)을 확인하십시오.
또한 /etc/bastion/bastion.conf (Linux)에 있는 bastion.conf 파일을 사용자 정의하는 것을 잊지 마십시오.
아래의 Linux 배포판은 각 릴리스에서 테스트되지만, 이는 보안 제품이므로 강력히 최신 안정 버전의 OS에서 실행할 것을 권장합니다:
다른 소위 '현대적인' Linux 버전은 각 릴리스에서 테스트되지 않았지만, 약간의 조정만으로 작동할 것입니다.
다음 OS도 각 릴리스에서 테스트됩니다:
FreeBSD는 사용 가능한 pam 플러그인 세트가 제한되어 있어 부분적인 MFA 지원을 제공합니다. 추가 비밀번호 또는 TOTP 요소 중 하나에 대한 지원은 구성할 수 있지만, 동시에 둘 다는 구성할 수 없습니다.
perltidy로 실행됩니다.perlcritic으로 실행됩니다.가장 보수적이고 예방적이며 편집증적인 코딩 프로세스에서도 코드에는 버그가 있으므로 맹목적으로 신뢰해서는 안 됩니다. 따라서 배스천은 자체 코드를 신뢰하지 않습니다. 아래와 같이 운영 체제 보안 기본 요소를 활용하여 추가 보안을 확보합니다.
잘 알려지고 신뢰할 수 있는 UNIX 임의 접근 제어(DAC) 사용:
배스천 메인 스크립트는 배스천 사용자의 시스템 셸로 선언됩니다:
bash와 같은) 셸 액세스 권한이 없습니다.코드는 모듈식입니다:
ssh 액세스 활성화를 수행합니다.확장된 시스템 권한이 필요한 모든 코드는 헬퍼라는 모듈로 메인 코드와 분리되어 있습니다.
sudo 아래에서만 실행됩니다.sudoers 구성은 명령에 특정한 시스템 그룹에 연결되며, 사용 필요에 따라 계정에 부여됩니다.sudoers 구성에 하드코딩됩니다.sudo 아래에서 실행되는 모든 코드에는 Perl tainted 모드(-T)가 사용되어 사용자 입력이 로직을 방해하지 않도록 즉시 실행을 중단합니다.sudo 아래에서 실행되는 코드는 호출자를 신뢰하지 않으며 모든 입력을 다시 확인합니다.syslog (배스천 관리자도 기록을 조작할 수 없도록 원격 syslog 서버로 전송해야 함) 및/또는sqlite3 데이터베이스 (쉬운 검색을 위해)ttyrec으로 녹화되며, 이 기록을 암호화하여 원격 에스크로 파일러로 푸시하는 헬퍼 스크립트가 제공됩니다.비-완전한 커뮤니티 유지 관리 도구 목록:
Apache License, 버전 2.0("라이선스")에 따라 라이선스가 부여됩니다. 라이선스를 준수하지 않는 한 이 파일을 사용할 수 없습니다. 라이선스 사본은 다음에서 얻을 수 있습니다.
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에 의해 요구되거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 "있는 그대로" 배포되며, 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건도 없습니다. 라이선스에 따른 권리 및 제한 사항을 관리하는 특정 언어는 라이선스를 참조하십시오.
수신 측과 송신 측 사이에 프로토콜 분리가 이루어져 대부분의 프로토콜 기반 취약점을 무력화합니다.