Bastilion — это веб-консоль SSH, которая централизованно управляет административным доступом к системам. Веб-администрирование сочетается с управлением и распространением открытых SSH-ключей пользователей. Управление ключами и администрирование основаны на профилях, назначенных определенным пользователям.
Администраторы могут войти в систему, используя двухфакторную аутентификацию с помощью Authy или Google Authenticator. Оттуда они могут управлять своими открытыми ключами SSH или подключаться к своим системам через веб-оболочку. Команды можно использовать в разных оболочках, чтобы упростить установку исправлений и исключить избыточное выполнение команд.
Bastilion накладывает TLS/SSL поверх SSH и выступает в качестве хоста-бастиона для администрирования. Протоколы объединены в стек (TLS/SSL + SSH), поэтому инфраструктура не может быть раскрыта посредством туннелирования/переадресации портов. Более подробную информацию можно найти в следующем техническом документе: Внедрение доверенной сторонней системы для Secure Shell. Кроме того, управление ключами SSH включено по умолчанию, чтобы предотвратить использование неуправляемых открытых ключей и обеспечить соблюдение лучших практик.
Bastilion доступен для бесплатного использования по лицензии Prosperity Public License.
https://github.com/basstillion-io/Bastillion/releases
или приобрести на торговой площадке AWS
https://aws.amazon.com/marketplace/pp/Loophole-LLC-Bastillion/B076PNFPCL
Кроме того, Basstillion можно установить на 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
Установите Authy или Google Authenticator , чтобы включить двухфакторную аутентификацию на Android или iOS.
Приложение | Андроид | iOS |
---|---|---|
Аути | Гугл Плей | iTunes |
Google Аутентификатор | Гугл Плей | iTunes |
Скачать bastilion-jetty-vXX.XX.tar.gz
https://github.com/basstillion-io/Bastillion/releases
Экспортировать переменные среды
для Linux/Unix/OSX
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
для Windows
set JAVA_HOME=C:pathtojdk
set PATH=%JAVA_HOME%bin;%PATH%
Запустить Бастилион
для Linux/Unix/OSX
./startBastillion.sh
для Windows
startBastillion.bat
Дополнительная документация доступна по адресу: https://www.basstillion.io/docs/index.html.
Установите Maven 3 или более позднюю версию.
apt-get установить maven
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 будет удалена база данных H2 и все данные.
Откройте браузер по адресу https://<любой IP>:8443.
Войти с помощью
username:admin
password:changeme
Примечание. При использовании экземпляра AMI паролем по умолчанию является <ID экземпляра>. Кроме того, AMI использует порт 443, как в https://<IP-адрес экземпляра>:443.
По умолчанию Bastilion перезапишет все значения в указанном файлеauthorized_keys для системы. Вы можете отключить управление ключами, отредактировав файл BastilionConfig.properties, и использовать Bastilion только в качестве хоста-бастиона. Этот файл находится в каталоге jetty/basstillion/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 периодически обновляется/обновляется на основе отношений, определенных в приложении. Если управление ключами включено, интервал обновления можно указать в файле BasstillionConfig.properties.
#authorized_keys refresh interval in minutes (no refresh for <=0)
authKeysRefreshInterval=120
По умолчанию Bastilion будет генерировать и распространять ключи SSH, управляемые администраторами, одновременно заставляя их загружать сгенерированные приватные ключи. Это вынуждает администраторов использовать надежные парольные фразы для ключей, установленных в системах. Закрытый ключ доступен для скачивания только один раз и не хранится на стороне приложения. Чтобы отключить и разрешить администраторам устанавливать любой открытый ключ, отредактируйте файл BasstillionConfig.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-ключ при первом запуске для использования при регистрации систем. Вы можете указать собственную пару ключей SSH в файле BasstillionConfig.properties.
Например:
#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;
По умолчанию хранилище данных настроено как встроенное, но можно поддерживать удаленную базу данных H2, настроив URL-адрес подключения.
#Connection URL to the DB
dbConnectionURL=jdbc:h2:tcp://<host>:<port>/~/bastillion;CIPHER=AES;
Внешнюю аутентификацию можно включить через BastilionConfig.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 можно сопоставить с профилями, определенными в Basstillion, с помощью модуля 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";
};
Пользователи будут добавляться или удаляться из определенных профилей при входе в систему и когда имя роли соответствует имени профиля.
По умолчанию аудит отключен. Журналы аудита можно включить с помощью log4j2.xml , раскомментировав определения io.basstillion.manage.util.SystemAudit и Audit-Appender .
https://github.com/basstillion-io/Bastillion/blob/master/src/main/resources/log4j2.xml#L19-L22
Аудит через приложение — это всего лишь проверка концепции. Его можно включить в файле BastilionConfig.properties.
#enable audit --set to true to enable
enableInternalAudit=true
Особая благодарность выражается этим замечательным проектам, благодаря которым этот (и другие замечательные проекты) стал возможным.
Сторонние зависимости упоминаются в 3rdPartyLicenses.md.
Bastilion доступен для использования по публичной лицензии Prosperity.
Лазейка, ООО - Шон Кавана