Web-bastion: RDP и SSH через браузер без прямого NAT

Цикл «Не светим лишнего». Выпуск 13.

Динамический allow-list хорош, но у него фундаментальное ограничение: после открытия firewall видит внешний IP. Если за ним сто человек, сетевой допуск получают все сто. Их ещё остановит авторизация целевого сервиса, но индивидуального сетевого коридора нет.

Для RDP, SSH и VNC можно не публиковать прямой коридор вообще. Пользователь входит на web-bastion, выбирает разрешённую машину и работает внутри браузера.

Как устроен Apache Guacamole

Apache Guacamole называют clientless remote desktop gateway. На пользовательском устройстве нужен только современный браузер.

Веб-приложение отвечает за интерфейс и авторизацию. Компонент guacd устанавливает настоящие RDP, SSH или VNC-соединения к внутренним узлам и переводит их в протокол, который понимает браузер.

Наружу опубликован только HTTPS самого Guacamole. Серверы Windows не имеют внешнего DNAT на 3389, а SSH-хосты — на 22. Между guacd и целевыми узлами действуют отдельные внутренние firewall-правила.

Что получаем кроме «работает в браузере»

Пользователь известен bastion по индивидуальной учётке, OIDC или LDAP. Ему можно показать только назначенные соединения. Общий NAT больше не мешает — действия проходят внутри отдельной веб-сессии.

Guacamole умеет управлять буфером обмена, передачей файлов, SFTP и записью графических сеансов. Это полезно для подрядчиков и чувствительного администрирования, если правила хранения и доступа к записям определены заранее.

Плюсы

Минусы

Где можно больно ошибиться

Выставить guacd наружу. Он должен быть доступен только веб-приложению по изолированной сети. Публичной точкой остаётся HTTPS.

Хранить общие админские пароли без защиты. Лучше персональные учётки на целевых системах, интеграция с каталогом или безопасное хранилище секретов.

Оставить всё включённым. Clipboard, drive redirection и загрузка файлов удобны, но для подрядчика могут стать каналом выноса данных или заноса исполняемых файлов.

Разрешить произвольные ad-hoc назначения. Если пользователь сам указывает любой ssh://10.x.x.x, bastion превращается в внутренний сканер. Нужны разрешённые ресурсы и сетевые ACL от guacd.

Записывать всё без правил. В записи могут оказаться персональные данные, пароли на экране и коммерческая информация. Определяем срок хранения, доступ и причину записи.

Забыть MFA и обновления. Bastion — единая внешняя дверь к множеству систем. Компрометация его учётки особенно неприятна.

Когда bastion лучше прямого доступа

Для подрядчиков, временной поддержки, администрирования с чужого устройства и доступа из общего NAT — почти всегда интереснее прямого DNAT. Постоянному сетевому инженеру иногда удобнее нативный SSH и WinBox; тогда TOTP + heartbeat может открыть узкий прямой доступ.

В финальной архитектуре эти способы не спорят: разные группы ресурсов проходят через разные точки применения политики.

Ранее в цикле

Документация и источники

#network