28 сентября 2021

Режимы работы листенеров: bastion

В Fudo есть целых 4 режима работы листенеров. В этой статье мы подробно поговорим о режиме bastion, в котором учетная запись на целевом хосте или сам хост указывается в строке, идентифицирующей пользователя, например, ssh john_smith#admin@10.0.2.22. Это позволяет облегчить доступ к группе отслеживаемых серверов через одну и ту же комбинацию IP-адреса и номера порта.
Важный момент: строка, определяющая целевой объект, должна однозначно идентифицировать учетную запись или сервер.
Строка целевого объекта сопоставляется в следующей последовательности:

1. Точное имя учетной записи - Fudo PAM пытается сопоставить строку с объектом учетной записи.
2. Точное имя сервера - Fudo PAM пытается сопоставить строку с именем объекта сервера.
3. Точный адрес сервера - Fudo PAM пытается сопоставить строку с IP-адресом объекта сервера, определенного в локальной базе данных.
4. IP-адрес, возвращаемый службой DNS - Fudo PAM запрашивает службу DNS и пытается сопоставить возвращенный IP-адрес с IP-адресом объекта сервера, определенного в локальной базе данных.
5. Имя хоста, возвращаемое службой обратного DNS - Fudo PAM запрашивает службу обратного DNS и пытается сопоставить возвращенное имя хоста с объектом сервера, определенным в локальной базе данных.

Из-за специальной интерпретации символа\различными системными оболочками (например, bash), комбинация логина пользователя и домена требует особого форматирования, например:
  • “domain\user"#bsd01@10.0.60.138
  • 'domain\user'#bsd01@10.0.60.138
  • domain\user#bsd01@10.0.60.138
Для этого режима мы решили использовать такую же схему, как и в режиме gateway и proxy:
Как и в предыдущей статье мы решили обойтись одним интерфейсом на Fudo и его маршрутом по умолчанию. В целом данную схему можно усложнить, главное, чтобы на другом L3 коммутаторе был прописан маршрут до целевого хоста через интерфейс Fudo.
В режиме bastion мы протестируем протоколы: RDP, SSH, т.к. MySQL и HTTP(S) в нем не поддерживаются.

Для тестирования работы данного режима, мы создали еще одного тестового пользователя, а именно Testuser2:
Также дополнительно мы должны создать еще один сервер и аккаунт, а, чтобы не запутаться, дал им такие же имена, добавив цифру «2». Листенер мы будем использовать один для обоих серверов, выглядит он так:
Отдельное внимание уделим хранилищу, в которое необходимо добавить второй сервер, в итоге внутри должна быть такая картина:
Как было описано выше, подключаться можно, используя разный синтаксис, но мы будем использовать самый простой, а именно с помощью нашего пользователя и IP-адреса + порта Fudo:
И как мы можем видеть, с помощью разных учетных записей и одного адреса + порта, мы подключаемся к разным устройствам:
Для RDP-серверов мы также будем использовать одно хранилище с добавленными туда аккаунтами и серверами:
Листенер выглядит так:
Подключаться будем, используя IP-адрес и порт Fudo:
В данной статье мы ознакомились с примерами и настройкой режима bastion. Как можно заметить, по сути он схож с proxy. Разница лишь в том, что мы можем создавать разные учетные записи для одного листенера.