
Аутентификация, авторизация, отслеживаемость и аудируемость для SSH-доступов.

Бастионы — это кластер машин, используемый операционными командами (такими как системные администраторы, разработчики, администраторы баз данных и т. д.) в качестве единственной точки входа для безопасного подключения к устройствам (серверам, виртуальным машинам, облачным инстансам, сетевым устройствам и т. д.), обычно через ssh.
The Bastion предоставляет механизмы аутентификации, авторизации, отслеживания и аудита для всей вашей инфраструктуры.
Находясь между вашими пользователями и вашей инфраструктурой, The Bastion добавляет промежуточный уровень абстракции, чтобы вашей инфраструктуре не нужно было знать каждого члена операционной команды в отдельности.
Каждый член вашей команды имеет индивидуальную учётную запись в The Bastion и может быть участником одной или нескольких групп бастиона, которые могут предоставлять доступ к одной или нескольким инфраструктурам. Устройствам инфраструктуры нужно только знать и доверять группе (группам) бастиона, частью которых они могут быть.
Тонкая настройка RBAC в The Bastion позволяет делегировать некоторые обязанности любой учётной записи, в пределах группы или всего бастиона, включая учётные записи, которые могут использоваться вашей автоматизацией, например, для управления жизненным циклом учётных записей (связанных с вашей системой управления персоналом, LDAP или AD) или для обеспечения актуальности ACL группы (связанной с вашей CMDB). Автоматизированные процессы легко реализовать с помощью JSON API через SSH.
Хотите узнать больше, разглядывая красивые рисунки? Вот серия статей в блоге, которые глубже раскрывают основные функции и принципы The Bastion:
Другие ресурсы, которые могут быть интересны:
Для работы не требуется ничего необычного ни на стороне входа, ни на стороне выхода The Bastion.
Для подключения к нему нужен только ваш старый добрый клиент ssh, а с другой стороны подойдет любой стандартный сервер sshd. Это включает, например, сетевые устройства, на которых у вас может не быть возможности установить какое-либо собственное программное обеспечение.
Древние устройства, поддерживающие только криптографические алгоритмы с низким уровнем безопасности или telnet, можно скрыть от Интернета с помощью брандмауэра, разрешив доступ только для The Bastion, избегая таким образом компромисса с низким уровнем безопасности, допуская при этом только высокозащищённые соединения на стороне входа бастиона.
Пожалуйста, смотрите онлайн-документацию или соответствующую текстовую версию в папке doc/.
Это хороший способ протестировать The Bastion за секунды, но прочитайте FAQ, если вы серьёзно рассматриваете использование контейнеризации в производстве.
Образ песочницы доступен для следующих архитектур: linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/s390x.
Давайте запустим docker-образ:
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
Скопируйте этот открытый ключ в файл authorized_keys удалённой машины в папке .ssh/ той учётной записи, к которой вы хотите подключиться, затем:
$> 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).
Также не забудьте настроить файл bastion.conf, который находится в /etc/bastion/bastion.conf (для Linux).
Перечисленные ниже дистрибутивы Linux тестируются с каждым релизом, но поскольку это продукт безопасности, вам настоятельно рекомендуется запускать его на последней актуальной стабильной версии вашей любимой ОС:
Любые другие так называемые «современные» версии Linux не тестируются с каждым релизом, но должны работать с незначительными корректировками или без них.
Следующие ОС также тестируются с каждым релизом:
FreeBSD имеет частичную поддержку MFA из-за ограниченного набора доступных модулей pam. Можно настроить поддержку либо дополнительного пароля, либо фактора TOTP, но не одновременно.
perltidyperlcriticДаже при самом консервативном, осторожном и параноидальном процессе кодирования в коде есть ошибки, поэтому ему нельзя слепо доверять. Следовательно, бастион не доверяет собственному коду. Он использует примитивы безопасности операционной системы для получения дополнительной безопасности, как показано ниже.
Используется известный и проверенный дискреционный контроль доступа UNIX (DAC):
Основной скрипт бастиона объявлен как системная оболочка пользователя бастиона:
bash-подобной) на системеКод является модульным
ssh к другим машинамВесь код, требующий расширенных системных привилегий, отделён от основного кода в модулях, называемых helpers (помощники)
sudosudoers привязана к системной группе, специфичной для команды, которая предоставляется учётным записям по мере необходимостиsyslog, который также следует отправлять на удалённый syslog-сервер, чтобы даже администраторы бастиона не могли подделать свои следы, и/илиsqlite3 для удобного поискаttyrec, предоставляются вспомогательные скрипты для шифрования и передачи этих записей на удалённый депозитарийНеисчерпывающий список связанных инструментов, поддерживаемых сообществом:
Лицензировано на условиях Apache License, Version 2.0 («Лицензия»); вы не можете использовать этот файл иначе как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если иное не предусмотрено применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, предоставляется на условиях «КАК ЕСТЬ», БЕЗ ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых. См. Лицензию для ознакомления с конкретными разрешениями и ограничениями.
sudoerssudo, используется Perl-режим tainted (-T), предотвращающий любое влияние пользовательского ввода на логику путём немедленной остановки выполненияsudo, не доверяет вызвавшей стороне и повторно проверяет каждый вводМежду входящей и исходящей сторонами выполняется разрыв протокола, что делает большинство уязвимостей на основе протоколов неэффективными