Очередная история о том, как нужно было быстро развернуть удаленный доступ для небольшой компании, которая уходила на самоизоляцию, но не могла себе позволить не работать дальше.

Как и многие другие, в компании, которая попросила меня помочь в организации удаленного доступа, осознали, что придется уходить на самоизоляцию буквально за несколько дней — до объявления этих мер президентом. Действовать нужно было быстро.

Я имею опыт внезапного перевода сотрудников на удаленную работу на сервера RDP. Это шок, ломаются все привычные процессы, на некоторое время снижается эффективность взаимодействия сотрудников, а некоторые процессы и вовсе останавливаются. Требуется время на то, чтобы все процессы снова заработали. В общем, вариант пересадить всех на RDP сервера в короткий срок, с учетом того, что и так привычная среда работы сотрудников меняется — не подходит. Поэтому решено предоставить доступ непосредственно к компьютерам сотрудников. В таком случае привычное рабочее окружение остается с сотрудником, в нем практически ничего не изменяется и не ломается.

В компании на ряду с традиционными профилями пользователей, такими как коммерсанты, продавцы, бухгалтерия и тд, присутствуют дизайнеры. Необходимо было убедиться, что дизайнеры смогут работать через RDP в графических приложениях. Так же нужно не забыть разрешить на всех ПК удаленный доступ сотрудников и настроить схему энергосбережения для того, чтобы компьютеры не засыпали по ночам.

Для проверки того, что дизайнеры смогут комфортно работать удаленно, был развернут тестовый OpenVPN, затем несколько дизайнеров подключились к своим ПК и проверили работу своих приложений. Удаленный доступ и схему энергосбережения разрешили через групповые политики.

Чтобы не упереться в производительность VPN сервера, иметь возможность расширять мощности доступа и проводить обслуживание серверов без остановки этого доступа, было решено развернуть кластер из нескольких OpenVPN нод, доступ, к которым будет распределять HaProxy.

Схема:


Авторизировать пользователей будем в домене Active Directory. Для этого в домене создадим группу, для удобства я ее назвал COVID-19. В эту группу нужно добавить пользователей, которым будет предоставлен удаленный доступ.

Для авторизации через AD в OpenVPN необходимо подключить предназначенный для этого модуль.
С openvpn-auth-ldap у меня не заработало, времени разбираться не было, по этому я использовал скрипт из этого репозитория. Подключается он легко, достаточно разместить его в директорию openvpn, добавить строку в openvpn.conf и указать параметры поиска пользователе AD.

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

В итоге, в течении нескольких дней сотрудники компании оперативно смогли перейти в режим самоизоляции и продолжить работать.

Детальный разбор настройки серверов приводить не буду. Кто хочет посмотреть и даже развернуть у себя кластер, я выложил на GitHub плейбук для ansible, который разворачивает HaProxy и OpenVPN на трех серверах. Внимание! Я использовал FreeBSD, плейбуки написаны под эту ОС.

Чтобы админы могли видеть, кто сейчас подключен и к какому серверу, написал скрипт, который по крону опрашивает сервера и генерирует простую html страничку. Информация о сотрудниках берется из внутреннего wiki ресурса, можно убрать этот блок из скрипта, оставив просто учетки AD или же заменить его на получении информации о сотрудниках из AD, если такая информация там имеется. Скрипт находится в папке misc, в репозитории ссылку на который я дал выше.

В процессе эксплуатации выявили неприятный баг Windows 10 1903. При работе удаленно через RDP 10-ка разрывала соединение после чего к ней невозможно было подключиться. Баг вылечится патчем КВ4522355

Это вся история. Цель ее, возможно запоздалая, показать пример того, как можно быстро развернуть удаленный доступ с минимальными затратами. Реализация подойдет как для небольших предприятий, так и для средних, с возможностью наращивать число удаленных подключений.

Спасибо за внимание.