Basstillion은 시스템에 대한 관리 액세스를 중앙에서 관리하는 웹 기반 SSH 콘솔입니다. 웹 기반 관리는 사용자의 공개 SSH 키 관리 및 배포와 결합됩니다. 키 관리 및 관리는 정의된 사용자에게 할당된 프로필을 기반으로 합니다.
관리자는 Authy 또는 Google Authenticator의 2단계 인증을 사용하여 로그인할 수 있습니다. 여기에서 공개 SSH 키를 관리하거나 웹 셸을 통해 시스템에 연결할 수 있습니다. 패치를 더 쉽게 만들고 중복 명령 실행을 제거하기 위해 명령을 셸 전체에서 공유할 수 있습니다.
Bastilion은 SSH 위에 TLS/SSL을 계층화하고 관리용 요새 호스트 역할을 합니다. 프로토콜은 스택형(TLS/SSL + SSH)이므로 터널링/포트 포워딩을 통해 인프라가 노출될 수 없습니다. 자세한 내용은 Secure Shell을 위한 신뢰할 수 있는 타사 시스템 구현 백서에서 확인할 수 있습니다. 또한 관리되지 않는 공개 키를 방지하고 모범 사례를 적용하기 위해 SSH 키 관리가 기본적으로 활성화됩니다.
Basstillion은 Prosperity Public License에 따라 무료로 사용할 수 있습니다.
https://github.com/bastillion-io/Bastillion/releases
또는 AWS 마켓플레이스에서 구매
https://aws.amazon.com/marketplace/pp/Loophole-LLC-Bastillion/B076PNFPCL
또한 Bastilion은 FreeBSD 포트 시스템을 통해 FreeBSD에 설치할 수 있습니다. 바이너리 패키지를 통해 설치하려면 다음을 실행하세요.
pkg install security/bastillion
Open-JDK / Oracle-JDK - 1.9 이상
apt-get은 openjdk-9-jdk를 설치합니다.
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Android 또는 iOS에서 2단계 인증을 활성화하려면 Authy 또는 Google Authenticator를 설치하세요.
애플리케이션 | 기계적 인조 인간 | iOS |
---|---|---|
오시 | 구글 플레이 | 아이튠즈 |
구글 OTP | 구글 플레이 | 아이튠즈 |
basstillion-jetty-vXX.XX.tar.gz 다운로드
https://github.com/bastillion-io/Bastillion/releases
환경 변수 내보내기
리눅스/유닉스/OSX용
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
윈도우용
set JAVA_HOME=C:pathtojdk
set PATH=%JAVA_HOME%bin;%PATH%
바스티리온 시작
리눅스/유닉스/OSX용
./startBastillion.sh
윈도우용
startBastillion.bat
추가 문서: https://www.bastillion.io/docs/index.html
Maven 3 이상 설치
apt-get 설치 메이븐
http://maven.apache.org
환경 변수 내보내기
export JAVA_HOME=/path/to/jdk
export M2_HOME=/path/to/maven
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
pom.xml이 포함된 디렉터리에서 실행
mvn package jetty:run
참고: mvn clean을 수행하면 H2 DB가 삭제되고 모든 데이터가 지워집니다.
https://<무엇이든 IP>:8443으로 브라우저를 엽니다.
다음으로 로그인
username:admin
password:changeme
참고: AMI 인스턴스를 사용하는 경우 비밀번호는 <인스턴스 ID>로 기본 설정됩니다. 또한 AMI는 https://<인스턴스 IP>:443과 같이 포트 443을 사용합니다.
기본적으로 Basillion은 시스템에 대해 지정된 Authorized_keys 파일의 모든 값을 덮어씁니다. BastilionConfig.properties 파일을 편집하여 키 관리를 비활성화하고 Bastilion을 배스천 호스트로만 사용할 수 있습니다. 이 파일은 jetty/bastillion/WEB-INF/classes 디렉터리에 있습니다. (또는 소스에서 빌드하는 경우 src/main/resources 디렉터리)
#set to false to disable key management. If false, the Bastillion public key will be appended to the authorized_keys file (instead of it being overwritten completely).
keyManagementEnabled=false
또한 Authorized_keys 파일은 애플리케이션에 정의된 관계에 따라 주기적으로 업데이트/새로 고쳐집니다. 키 관리가 활성화된 경우 BasillionConfig.properties 파일에서 새로 고침 간격을 지정할 수 있습니다.
#authorized_keys refresh interval in minutes (no refresh for <=0)
authKeysRefreshInterval=120
기본적으로 Basillion은 관리자가 관리하는 SSH 키를 생성 및 배포하는 동시에 생성된 개인 키를 다운로드하도록 합니다. 이로 인해 관리자는 시스템에 설정된 키에 대해 강력한 암호를 사용해야 합니다. 개인 키는 한 번만 다운로드할 수 있으며 애플리케이션 측에 저장되지 않습니다. 관리자가 공개 키를 비활성화하고 설정하도록 허용하려면 BasillionConfig.properties를 편집하세요.
#set to true to generate keys when added/managed by users and enforce strong passphrases set to false to allow users to set their own public key
forceUserKeyGeneration=false
Bastilion은 시스템 등록 시 사용하기 위해 초기 시작 시 자체 공개/개인 SSH 키를 생성합니다. BasillionConfig.properties 파일에서 사용자 정의 SSH 키 쌍을 지정할 수 있습니다.
예를 들어:
#set to true to regenerate and import SSH keys --set to true
resetApplicationSSHKey=true
#SSH Key Type 'dsa' or 'rsa'
sshKeyType=rsa
#private key --set pvt key
privateKey=/Users/kavanagh/.ssh/id_rsa
#public key --set pub key
publicKey=/Users/kavanagh/.ssh/id_rsa.pub
#default passphrase --leave blank if passphrase is empty
defaultSSHPassphrase=myPa$$w0rd
시작 후 키가 등록되면 시스템에서 제거할 수 있습니다. 암호와 키 경로가 구성 파일에서 제거됩니다.
데이터베이스 설정은 구성 속성에서 조정할 수 있습니다.
#Database user
dbUser=bastillion
#Database password
dbPassword=p@$$w0rd!!
#Database JDBC driver
dbDriver=org.h2.Driver
#Connection URL to the DB
dbConnectionURL=jdbc:h2:keydb/bastillion;CIPHER=AES;
기본적으로 데이터 저장소는 내장형으로 설정되어 있지만 연결 URL 조정을 통해 원격 H2 데이터베이스를 지원할 수 있습니다.
#Connection URL to the DB
dbConnectionURL=jdbc:h2:tcp://<host>:<port>/~/bastillion;CIPHER=AES;
BasillionConfig.properties를 통해 외부 인증을 활성화할 수 있습니다.
예를 들어:
#specify a external authentication module (ex: ldap-ol, ldap-ad). Edit the jaas.conf to set connection details
jaasModule=ldap-ol
연결 세부사항은 jaas.conf 파일에 설정되어야 합니다.
ldap-ol {
com.sun.security.auth.module.LdapLoginModule SUFFICIENT
userProvider="ldap://hostname:389/ou=example,dc=bastillion,dc=com"
userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))"
authzIdentity="{cn}"
useSSL=false
debug=false;
};
관리자는 인증되면 추가되며 전체 권한을 가진 사용자가 시스템 프로필을 할당할 수 있습니다.
사용자 LDAP 역할은 org.eclipse.jetty.jaas.spi.LdapLoginModule을 사용하여 Basillion에 정의된 프로필에 매핑될 수 있습니다.
ldap-ol-with-roles {
//openldap auth with roles that can map to profiles
org.eclipse.jetty.jaas.spi.LdapLoginModule required
debug="false"
useLdaps="false"
contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
hostname="<SERVER>"
port="389"
bindDn="<BIND-DN>"
bindPassword="<BIND-DN PASSWORD>"
authenticationMethod="simple"
forceBindingLogin="true"
userBaseDn="ou=users,dc=bastillion,dc=com"
userRdnAttribute="uid"
userIdAttribute="uid"
userPasswordAttribute="userPassword"
userObjectClass="inetOrgPerson"
roleBaseDn="ou=groups,dc=bastillion,dc=com"
roleNameAttribute="cn"
roleMemberAttribute="member"
roleObjectClass="groupOfNames";
};
사용자는 로그인할 때 그리고 역할 이름이 프로필 이름과 일치할 때 정의된 프로필에서 추가/제거됩니다.
감사는 기본적으로 비활성화되어 있습니다. io.bastillion.manage.util.SystemAudit 및 audit-appender 정의의 주석 처리를 제거하여 log4j2.xml 을 통해 감사 로그를 활성화할 수 있습니다.
https://github.com/bastillion-io/Bastillion/blob/master/src/main/resources/log4j2.xml#L19-L22
애플리케이션을 통한 감사는 단지 개념 증명일 뿐입니다. BasillionConfig.properties에서 활성화할 수 있습니다.
#enable audit --set to true to enable
enableInternalAudit=true
이 (및 기타 훌륭한 프로젝트)를 가능하게 해준 놀라운 프로젝트에 특별한 감사를 드립니다.
타사 종속성은 3rdPartyLicenses.md 에 언급되어 있습니다.
Basstillion은 Prosperity Public License에 따라 사용할 수 있습니다.
Loophole, LLC - 션 카바나