Bastillion adalah konsol SSH berbasis web yang mengelola akses administratif ke sistem secara terpusat. Administrasi berbasis web dikombinasikan dengan pengelolaan dan distribusi kunci SSH publik pengguna. Manajemen dan administrasi kunci didasarkan pada profil yang ditetapkan untuk pengguna tertentu.
Administrator dapat login menggunakan otentikasi dua faktor dengan Authy atau Google Authenticator. Dari sana mereka dapat mengelola kunci SSH publik mereka atau terhubung ke sistem mereka melalui web-shell. Perintah dapat dibagikan ke seluruh shell untuk mempermudah patching dan menghilangkan eksekusi perintah yang berlebihan.
Bastillion melapisi TLS/SSL di atas SSH dan bertindak sebagai bastion host untuk administrasi. Protokol ditumpuk (TLS/SSL + SSH) sehingga infrastruktur tidak dapat diekspos melalui tunneling/port forwarding. Detail selengkapnya dapat ditemukan di whitepaper berikut: Menerapkan Sistem Pihak Ketiga Tepercaya untuk Secure Shell. Selain itu, manajemen kunci SSH diaktifkan secara default untuk mencegah kunci publik yang tidak dikelola dan menerapkan praktik terbaik.
Bastillion tersedia untuk penggunaan gratis di bawah Lisensi Publik Kemakmuran
https://github.com/bastillion-io/Bastillion/releases
atau membeli dari pasar AWS
https://aws.amazon.com/marketplace/pp/Loophole-LLC-Bastillion/B076PNFPCL
Selain itu, Bastillion dapat diinstal di FreeBSD melalui sistem port FreeBSD. Untuk menginstal melalui paket biner, jalankan saja:
pkg install security/bastillion
Open-JDK / Oracle-JDK - 1.9 atau lebih tinggi
apt-get instal openjdk-9-jdk
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Instal Authy atau Google Authenticator untuk mengaktifkan otentikasi dua faktor dengan Android atau iOS
Aplikasi | Android | iOS |
---|---|---|
Autentik | Google Bermain | itunes |
Google Otentikator | Google Bermain | itunes |
Unduh bastillion-jetty-vXX.XX.tar.gz
https://github.com/bastillion-io/Bastillion/releases
Ekspor variabel lingkungan
untuk Linux/Unix/OSX
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
untuk Windows
set JAVA_HOME=C:pathtojdk
set PATH=%JAVA_HOME%bin;%PATH%
Mulai Bastillion
untuk Linux/Unix/OSX
./startBastillion.sh
untuk Windows
startBastillion.bat
Dokumentasi Lebih Lanjut di: https://www.bastillion.io/docs/index.html
Instal Maven 3 atau lebih tinggi
apt-get install pakar
http://maven.apache.org
Ekspor variabel lingkungan
export JAVA_HOME=/path/to/jdk
export M2_HOME=/path/to/maven
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
Di direktori yang berisi proses pom.xml
mvn package jetty:run
Catatan: Melakukan mvn clean akan menghapus H2 DB dan menghapus semua data.
Buka browser ke https://<ip apa pun>:8443
Masuk dengan
username:admin
password:changeme
Catatan: Saat menggunakan instans AMI, kata sandi defaultnya adalah <Instance ID>. Selain itu, AMI menggunakan port 443 seperti pada https://<Instance IP>:443
Secara default Bastillion akan menimpa semua nilai dalam file otor_keys yang ditentukan untuk suatu sistem. Anda dapat menonaktifkan manajemen kunci dengan mengedit file BastillionConfig.properties dan menggunakan Bastillion hanya sebagai bastion host. File ini terletak di direktori jetty/bastillion/WEB-INF/classes. (atau direktori src/main/resources jika dibuat dari sumber)
#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
Selain itu, file otor_keys diperbarui/disegarkan secara berkala berdasarkan hubungan yang ditentukan dalam aplikasi. Jika manajemen kunci diaktifkan, interval penyegaran dapat ditentukan dalam file BastillionConfig.properties.
#authorized_keys refresh interval in minutes (no refresh for <=0)
authKeysRefreshInterval=120
Secara default, Bastillion akan membuat dan mendistribusikan kunci SSH yang dikelola oleh administrator sambil meminta mereka mengunduh kunci pribadi yang dihasilkan. Hal ini memaksa admin untuk menggunakan frasa sandi yang kuat untuk kunci yang diatur pada sistem. Kunci pribadi hanya tersedia untuk diunduh satu kali dan tidak disimpan di sisi aplikasi. Untuk menonaktifkan dan mengizinkan administrator menyetel kunci publik apa pun, edit properti BastillionConfig.
#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
Bastillion menghasilkan kunci SSH publik/pribadinya sendiri pada permulaan awal untuk digunakan saat mendaftarkan sistem. Anda dapat menentukan pasangan kunci SSH khusus di file BastillionConfig.properties.
Misalnya:
#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
Setelah startup dan setelah kunci didaftarkan, kunci tersebut kemudian dapat dihapus dari sistem. Frasa sandi dan jalur kunci akan dihapus dari file konfigurasi.
Pengaturan database dapat disesuaikan di properti konfigurasi.
#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;
Secara default, penyimpanan data disetel sebagai tertanam, tetapi database H2 jarak jauh dapat didukung melalui penyesuaian URL koneksi.
#Connection URL to the DB
dbConnectionURL=jdbc:h2:tcp://<host>:<port>/~/bastillion;CIPHER=AES;
Otentikasi Eksternal dapat diaktifkan melalui properti BastillionConfig.
Misalnya:
#specify a external authentication module (ex: ldap-ol, ldap-ad). Edit the jaas.conf to set connection details
jaasModule=ldap-ol
Detail koneksi perlu diatur di file 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;
};
Administrator akan ditambahkan saat mereka diautentikasi dan profil sistem dapat ditetapkan oleh pengguna dengan hak istimewa penuh.
Peran LDAP pengguna dapat dipetakan ke profil yang ditentukan di Bastillion melalui penggunaan org.eclipse.jetty.jaas.spi.LdapLoginModule.
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";
};
Pengguna akan ditambahkan/dihapus dari profil yang ditentukan saat mereka masuk dan ketika nama peran cocok dengan nama profil.
Audit dinonaktifkan secara default. Log audit dapat diaktifkan melalui log4j2.xml dengan menghapus komentar pada io.bastillion.manage.util.SystemAudit dan definisi audit-appender .
https://github.com/bastillion-io/Bastillion/blob/master/src/main/resources/log4j2.xml#L19-L22
Audit melalui aplikasi hanyalah pembuktian konsep. Ini dapat diaktifkan di properti BastillionConfig.
#enable audit --set to true to enable
enableInternalAudit=true
Terima kasih khusus ditujukan kepada proyek luar biasa yang membuat hal ini (dan proyek hebat lainnya) menjadi mungkin.
Ketergantungan pihak ketiga disebutkan di 3rdPartyLicenses.md
Bastillion tersedia untuk digunakan di bawah Lisensi Publik Kemakmuran
Celah, LLC - Sean Kavanagh