В небольших инфраструктурах часто делают просто: открывают SSH на всех серверах и заходят напрямую. Пока серверов 2-3 - это еще терпимо. Но когда инфраструктура растет, такой подход превращается в проблему безопасности.
Один из классических способов навести порядок: использовать bastion host (jump host).
Идея простая: внешний доступ по SSH есть только к одному серверу, а уже с него можно попасть во внутреннюю инфраструктуру.
Схема обычно выглядит так:
Internet
|
v
[Bastion Host]
|
+---- app01
+---- db01
+---- k8s-node01
+---- internal services
▪️ Что это дает на практике:
одна точка входа в инфраструктуру;
проще контролировать доступ;
легче логировать действия админов;
внутренние серверы вообще не торчат в интернет;
проще внедрять MFA, audit и ограничения.
Вместо подключения напрямую:
ssh app01.internal
подключение идет через bastion.
▪️ Самый простой вариант:
ssh -J bastion user@app01.internal
Ключ -J - это ProxyJump. То есть SSH сначала подключается к bastion, а уже через него к целевому серверу.
Чтобы не писать длинные команды, обычно добавляют конфиг в
~/.ssh/config:
Host bastion
HostName bastion.example.com
User admin
Host *.internal
ProxyJump bastion
User admin
После этого можно подключаться так:
ssh app01.internal
SSH сам пройдет через bastion.
▪️ На bastion часто дополнительно включают:
жесткую аутентификацию;
MFA;
ограничение по IP;
audit логирование;
запрет прямого root-доступа.
Хороший bastion - это не просто сервер-посредник. Это контрольная точка безопасности, через которую проходит весь административный доступ к инфраструктуре. Именно поэтому в серьезных средах SSH на внутренние серверы часто вообще не открыт извне, только через jump host.
#ssh #security
🧑💻 NetworkAdmin