Задача: Разобрать как на Lubuntu 22.04 Desktop настроить клиент Remmina дабы подключаться по SSH к VPS, а уже с нее через проброс порта до офисной системы с защитой по источнику.

Итак, ранее я для себя задокумментировал, как на рабочую систему Lubuntu 22.04 Desktop установить пакет Remmina, разобрал как подключаться к системам по RDP и по связке RDP+NLA, но так как выставлять правило на брандмаэуере на доступ по RDP к серверу ни в коем случае нельзя из вне. Почему нельзя? — Подберут пароль, будут блокировать если определят учетную запись, раскроют информацию об имени хоста. Не хорошо. А потому сделаем, что доступ к хосту в офисной сети по RDP возможен только с подконтрольного хоста Ubuntu 18.04.3. В качестве подконтрольного хоста может выступать любая Ubuntu система (другие не администрирую)

Схема будет следующая:

Схема подключения через SSH туннель на "Проброс порта" RDP

Шаг №1: На офисном шлюзе создаем правило, что любой трафик RDP подключения с хоста vpn.ekzorchik.ru может взаимодействовать с хостом "Офисная система Windows". См. схему выше

К примеру, если офисный шлюз это TMG или pfSense, на шлюзе настраивается правило проброс порта, т.е. при подключении на внешнее имя офисного шлюза, к примеру mail.ekzorchik.ru:40000 -> происходит перенаправление на 192.168.10.2:3389 (Офисная система). И обязательно источник подключения указываем хост vpn.ekzorchik.ru

Шаг №2: На подконтрольной системе VPS, к примеру vpn.ekzorchik.ru устанавливается брандмауэер (у меня это firewalld & ufw), устанавливается пакет openssh-server, где порт подключения по SSH вместо 22 порта меняем на 44200)

root@ekzorchik:~# nano /etc/ssh/sshd_config
Port 44200
PermitRootLogin yes
AllowGroups sshauth
root@vpn:~# systemctl restart sshd

Шаг №3: Чтобы заработало туннелирование через ssh активируем настройку:

root@vpn:~# sudo nano /etc/ssh/sshd_config
AllowTcpForwarding yes
root@vpn:~# systemctl restart sshd

Шаг №4: Настраивается брандмауэр (у меня это firewalld & ufw) на вход в систему только по SSH:

sudo ufw disable
sudo apt-get install -y firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --state
ip r | awk '{print $5}' | head -n1
ens18
sudo firewall-cmd --zone public --change-interface=ens18 --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens18
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
ekzorchik@srv-bionic:~$

а после добавляем порт 44200 на подключение из вне, а сервис ssh убираем

sudo firewall-cmd --zone=public --add-port=44200/tcp --permanent
sudo firewall-cmd --remove-service={ssh} --permanent
sudo firewall-cmd --reload

Шаг №5: Также на подконтрольной VPS устанавливаем и настраиваем защиту вашего сервиса SSH через fail2ban дабы пресечь попытки подбора логина и пароля, хотя лучше использовать доступ по ключу если есть такая возможность.

За основу данного шага берем заметку "Настройка связки Fail2ban + firewalld на Ubuntu 18.04"

Все выше работает, сам применяю во многих местах.

Шаг №6: На рабочей системе Lubuntu 22.04 Desktop установлен пакет Remmina опираясь на заметку "Как установить Remmina на Lubuntu 22.04 Desktop"

По итогу пакет Remmina должен быть версии 1.4.27

Шаг №7: Настраиваю подключение через туннелирование к vpn.ekzorchik.ru, а уже после к шлюзу, а после к офисной системе:

нажимаю клавишу Win - Internet - Remmina — нажимаю в левом верхнем углу программ на иконку "+" (всплывающее сообщение "Add a new connection profile")

  • Name: work(sshtunnelrdpnla)
  • Protocol: RDP - Remote Desktop Protocol

вкладка Basic

  • Server: mail.ekzorchik.ru:40000
  • Username: ekzorchik
  • Password: 712mbddr@
  • Domain: polygon
  • Resolution: Use client resolution
  • Colour depth: True colour (24 bpp)

вкладка Advanced

  • Quality: Poor (fastest)
  • Security protocol negotiation: NLA protocol security
  • Gateway transport type: HTTP
  • TLS Security Level: 0 - Windows 7 compatible

вкладка SSH Tunnel

нажимаю на Enable SSH Tunnel и выбираю custom, указываю адрес

  • root@vpn.ekzorchik.ru:44200
  • Authentication type: Password

и нажимаю Save

Шаг №8: Проверяю созданное подключение:

Проверяю созданное подключение под именем work(sshtunnelrdpnla)

в первый раз при подключении возникает окно запроса аутентификационных данных для SSH туннеля. Указываем

  • Username: нельзя указать, т.к. я предопределил в элементе настроек Custom
  • Password: указываю пароль для учетной записи root
  • Save password: перевожу в положение включено

и нажимаю ОК

Указываю пароль на аутентификацию учетной записи root

и если все указано верно и настроено верно, подключение должно осуществиться, но сперва соглашаюсь с сертификатом удаленной системы путем нажатия на запрос — Yes

Certificate details:

Subject: CN=srv-backup03.polygon.local

Issuer: CN=srv-backup03.polygon.local

Fingerprint: отпечаток удаленной системы

Accept certificate? нажимаю Yes

Принимаю сертификат удаленной системе к которой подключаюсь

И вот я внутри своей офисной системы

у меня это Windows Server 2012 R2 с сервисом бекапирования DPM

Успешно выполненное удаленное подключение через SSH Tunnel + Port Forward

С этой системы или по аналогии на любую другую настраивается подключение устанавливаются все необходимые утилиты для офисного Администрирования инфраструктурой, а доступ к ней получается в полной безопасности. Так подключаюсь я, а офисные сотрудники через сервис Remote Desktop Gateway с двойной доменной аутентификацией.

Такие сложности в моем случае нужны чтобы, когда я обновляю сертификат Let's Encrypt на сервисе Remote Desktop Gateway я не отвалился и не пришлось ехать на работу ночью чтобы все поправить, т.к. никто из сотрудников на удаленке не сможет работать.

Итого, заметка работоспособна и работает, на этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.