Aspia - это OpenSource приложение для удаленного управления компьютерами внутри локальной сети и за её пределами благодаря реализации ID сервера для обхода NAT.
Не нашел на хабре актуальной информации об этом бесплатном аналоге таких программ как TeamViewer, Radmin, AmmyAdmin, AnyDesk, а та информация какая есть - уже давно устарела, поэтому попробую восполнить данную пустоту своим обзором/мануалом.
В своей публикации, я бы хотел поделиться с вами информацией о возможностях Aspia, общей структуре работы, а так же затронуть вопросы установки и настройки.
Возможности Aspia на момент написания статьи (версия 2.5.2):
Управление рабочим столом компьютера с подключением по IP или ID (через ID сервер). Возможен режим полного управления и режим просмотра.
Передача файлов через собственный файловый менеджер.
Просмотр информации о системе: оборудование, установленные приложения, службы, запущенные процессы, лицензии Microsoft, сетевые адаптеры, маршруты, подключения, сетевые ресурсы (шары), переменные окружения, журнал событий, пользователи (только локальные), группы пользователей и другая полезная информация.
Текстовый чат между оператором и подключенным хостом.
Разделение прав доступа через создание нескольких пользователей с различными уровнями доступа (отдельно настраиваются права на управление рабочим столом, его просмотр, файловый менеджер, информация о системе, текстовый чат).
Для хранения и управления адресами и идентификаторами, а так же логинами и паролями от удаленных компьютеров используются адресные книги с бесконечной вложенностью папок. Адресные книги хранятся в отдельных файлах и их легко можно передавать другим операторам. Так же, поддерживается шифрование адресной книги для безопасности данных.
Обход NAT с помощью настройки собственного ID сервера и возможностью подключения к удаленным ПК по ID, вместо имени хоста или IP.
Возможность балансировки нагрузки на ID сервер с помощью установки нескольких ретрансляторов на разных серверах (подробности ниже).
Кроме всего прочего, Aspia поддерживает Linux Debian (со стороны операторов и ID сервера), Windows (со стороны операторов, удаленных ПК, сервера), MacOS (только для операторов). Версии для Windows упакованы в корректный подписанный MSI, для Linux в Deb пакеты, а MacOS в Dmg. Актуальность пакетов поддерживается разработчиком.
Примечание: со слов разработчика: приложение под Linux для удаленных ПК планируется, но на данный момент в стадии разработки.
Модульность Aspia или компоненты программы
Aspia состоит из нескольких компонентов. Каждый компонент отвечает за реализацию конкретного функционала.
Aspia Host (хост) - устанавливается на клиентских ПК, управление которыми необходимо осуществлять. Необходимый компонент, только Windows.
Aspia Console (консоль) - необходим для подключения к удаленным ПК и управления Aspia Router. Имеется адресная книга для сохранения списков удаленных ПК. Устанавливается на ПК операторов. Есть версии под Windows, Debian, MacOS.
Aspia Client (клиент) - легкая версия клиента для подключения к удаленным ПК. Устанавливается на ПК операторов. Есть версии под Windows, Debian, MacOS.
Aspia Router (маршрутизатор) - реализация ID сервера, используется для обхода NAT. Устанавливается на сервер. Есть версии под Windows и Debian.
Aspia Relay (ретранслятор) - работает совместно с Router и служит для балансировки нагрузки. При небольших нагрузках возможно использование Router + Relay на одном физическом сервере. Есть версии под Windows и Debian.
Aspia Router и Aspia Relay - схема работы и зачем нужны
Маршрутизатор всегда работает совместно с ретранслятором и не может работать без него. Aspia Relay служит для пропуска трафика между оператором и подключенным компьютером в обход Aspia Router. Оба компонента могут быть установлены как на одном сервере совместно, так и на разных для увеличения масштабируемости системы в целом и разделения нагрузки, в случае большого количества соединений.
Aspia Router работает исключительно как сигнальный маршрутизатор, т.е. знает обо всех подключенных к нему хостах/клиентах/консолях и при попытке создать соединение между клиентом/консолью и хостом, не пропускает его через себя, а перенаправляет трафик на Aspia Relay. Тем самым не нагружая свой канал, чтобы всегда быть доступным для «сигнальных соединений» от хостов и клиентов. При этом, к одному Aspia Router может быть подключено множество Aspia Relay.
Процесс выбора ретранслятора работает таким образом, что клиенту/консоли и хосту отдаётся адрес ретранслятора, на котором, в данный момент, больше свободных слотов для подключения. Количество свободных слотов (или размер пула), как и фактический внешний адрес ретранслятора настраивается в конфиге ретранслятора.
Какие компоненты Aspia выбрать
Для начала, вам необходимо определиться с тем, нужны ли вам Router и Relay.
Если все управляемые ПК расположены внутри периметра вашей локальной сети и/или подключены по VPN, то вам будет достаточно связки Aspia Host + Aspia Console.
Если у вас есть ПК, расположенные вне периметра вашей сети без прямого доступа к ним по VPN и выходящие в интернет через NAT, то помимо Aspia Host + Aspia Console, вам потребуется установить и настроить сервера Aspia Router + Aspia Relay.
Между Aspia Console и Aspia Client есть существенные отличия:
Aspia Client служит для быстрого подключения к удаленным компьютерам и только для этого.
Aspia Console - используется для более удобного подключения к удаленным компьютерам с помощью реализации адресной книги, а так же для управления Aspia Router.
Далее, можно переходить к установке компонентов.
Распространение Aspia Host на пользовательские ПК
Перед тем, как распространить Aspia Host, его необходимо предварительно установить на какой-либо компьютер, настроить и экспортировать настройки в json файл (или взять из %programdata%\aspia\host.json).
Далее, распространить MSI и конфиг на удаленные компьютеры (автоматикой или вручную).
Как распространить, если есть Active Directory
Все компоненты Aspia поставляются в корректно упакованных MSI, поэтому распространять их в доменной среде можно штатными механизмами Active Directory через установку программ в GPO (Конфигурация компьютера/Политики/Конфигурация программ/Установка програм).
Aspia Host все свои настройки хранит в конфигурационном файле, который находится в директории "%programdata%/aspia/host.json", а настраивать его можно как через GUI Aspia Host, так и вручную через конфиг.
Файл конфига можно распространить на ПК пользователей автоматически через GPO Active Directory (Конфигурация компьютера/Настройка/Конфигурация Windows/Файлы).
Как распространить, если нет Active Directory
Если в вашей среде нет Active Directory по каким-либо причинам, то вы можете положить заранее настроенный файл конфига рядом с msi файлом с названием aspia-host-config.json и при установке конфиг подтянется, а Aspia Host запустится сразу с актуальными настройками.
В некоторых случаях, необходимо выполнить настройку в два клика, для этого можно упаковать установщик MSI и конфиг для него в SFX архив (в нём необходимо настроить запуск инсталлятора, копирование конфига в %programdata%/aspia, перезапуск службы), далее отдать его пользователю. О том, как создать SFX архив хорошо расписано, например, на oszone.ru. На этом останавливаться не будем.
Для периодического обновления конфига, если необходимо, можно использовать Batch/PowerShell скрипты для замены конфига по расписанию. Скриптом можно подтягивать конфиг с расшаренной папки, с FTP или с web-сайта.
Обратите внимание, что в директории "%programdata%\aspia\" кроме самого конфига "host.json", при подключении к маршрутизатору, так же имеется файл "host_key.json" - он содержит идентификатор по которому Aspia Router авторизует хост и выдаёт ID. Этот файл копировать на другие компьютеры не нужно.
Распространение Aspia Console и адресной книги
Компонент Aspia Console не требует какой либо настройки, а вот адресную книгу обычно все хотят иметь общую.
Поэтому суть распространения Aspia Console такая же как и для Aspia Host. Только вместо конфига мы настраиваем адресную книгу и распространяем её либо доменом, либо в составе SFX архива, либо скриптами по расписанию.
Примечание: чтобы настроить автоматическое открытие адресной книги, необходимо щелкнуть ПКМ по вкладке с книгой и выбрать "Закрепить вкладку".
Настройка Aspia Router в связке с Aspia Relay
Aspia Router и Aspia Relay следует устанавливать на сервере, который будет всегда доступен для всех хостов/консолей/клиентов. В идеале, на выделенный/виртуальный сервер у какого-либо хостера, либо на сервер внутри локальной сети с пробросом портов, но тут есть нюанс.
Собственно, нюанс
Aspia Router и Aspia Relay между собой могут "общаться" по любым адресам, т.е. как "127.0.0.1" (в случае установки на одном сервере), так и по внутренним адресам вида "192.168.0.1", так и по внешним (если установлены на разных хостингах, например).
А вот общение консоли/клиента/хоста с маршрутизатором должно осуществляться исключительно через один и тот же адрес, который будет доступен всем участникам и если у вас есть внешние клиенты (вне периметра вашей локальной сети), то необходимо обязательно указывать в конфиге внешний адрес для подключений.
Из этого вытекает тот факт, что подключения по внешнему адресу фаервола изнутри локальной сети, как и проброс портов должны корректно отрабатываться.
Установка и настройка Aspia Router на Debian Linux
Установка заключается в скачивании deb пакета из репозитория автора проекта, его установке, генерировании и настройке конфигурационного файла:
wget https://github.com/dchapyshev/aspia/releases/download/v2.5.2/aspia-router-2.5.2-x86_64.deb
sudo apt install ./aspia-router-2.5.2-x86_64.deb
sudo aspia_router --create-config
Открываем конфиг файл и правим параметры:
sudo nano /etc/aspia/router.json
Подробное описание всех параметров
AdminWhiteList — Список IP-адресов администраторов, которым разрешено подключаться к маршрутизатору. Адреса разделяются точкой с запятой. Если список пуст, то разрешены подключения от всех администраторов. Если список содержит элементы, то подключиться могут только администраторы, указанные в этом списке.
ClientWhiteList — Список IP-адресов клиентов, которым разрешено подключаться к маршрутизатору. Адреса разделяются точкой с запятой. Если список пуст, то разрешены подключения от всех клиентов. Если список содержит элементы, то подключаться могут только клиенты, указанные в этом списке.
HostWhiteList — Список IP-адресов хостов, которым разрешено подключаться к маршрутизатору. Адреса разделяются точкой с запятой. Если список пуст, то разрешены подключения со всех хостов. Если список содержит элементы, то подключаться могут только хосты, указанные в этом списке.
RelayWhiteList — Список IP-адресов ретрансляторов (Aspia Relay), которым разрешено подключаться к роутеру. Адреса разделяются точкой с запятой. Если список пуст, то разрешены подключения от всех ретрансляторов. Если список содержит элементы, то подключаться могут только ретрансляторы, указанные в этом списке. Вписываем IP адрес нашего ретранслятора (в случае расположения Aspia Relay на том же сервере — указываем 127.0.0.1).
Port — Порт, на котором будут приниматься входящие соединения. Если нет специфичной задачи, то менять не рекомендую.
PrivateKey — Приватный ключ шифрования роутера. Если у вас уже есть закрытый ключ, то напишите его здесь. Если это ваша первая установка, не меняйте значения. Ключ генерируется автоматически.
ListenInterface — IP адрес сетевого интерфейса, на котором должен работать Aspia Router. Укажите «0.0.0.0», чтобы Aspia Router работал на всех доступных интерфейсах.
После окончания настройки, включаем и запускаем службу Aspia Router:
sudo systemctl enable aspia-router
sudo service aspia-router start
В дальнейшем, чтобы подключить к маршрутизатору ретранслятор и хосты, потребуется указание публичного ключа, который расположен в файле "/etc/aspia/router.pub"
Для просмотра журнала работы, используется следующая команда:
sudo journalctl -u aspia-router
Установка и настройка Aspia Relay на Debian Linux
Установка Aspia Relay не сложнее, чем Aspia Router: скачиваем deb пакет из репозитория автора проекта, устанавливаем, генерируем и настаиваем конфигурационный файл.
wget https://github.com/dchapyshev/aspia/releases/download/v2.5.2/aspia-relay-2.5.2-x86_64.deb
sudo apt install ./aspia-relay-2.5.2-x86_64.deb
sudo aspia_relay --create-config
Открываем конфиг файл и правим параметры:
sudo nano /etc/aspia/relay.json
Подробное описание всех параметров
RouterAddress — Адрес Aspia Router, который мы устанавливали ранее. Он может быть равен "localhost" или "127.0.0.1" , если маршрутизатор установлен на том же сервере. В случае же, если маршрутизатор и ретранслятор находятся на разных серверах, указывается тот адрес, по которому ретранслятор сможет подключиться к маршрутизатору.
В большинстве случаев — это будет белый внешний IP или "127.0.0.1" для локального ретранслятора.
RouterPort — Порт маршрутизатора. Если вы не изменяли его при установке Aspia Router, то оставьте значение по-умолчанию.
RouterPublicKey — Публичный ключ шифрования роутера, который был сгенерирован при установке Aspia Router (хранится в файле /etc/aspia/router.pub).
ListenInterface — IP адрес сетевого интерфейса, на котором должен работать Aspia Relay. Укажите "0.0.0.0", чтобы Aspia Relay работал на всех доступных интерфейсах.
PeerAddress — Адрес, который пиры (хосты/консоли/клиенты) получат для подключения к ретранслятору. Тут указываем адрес, по которому хост и клиент/консоль смогут достучаться да нашего сервера. Рекомендую указать DNS имя, например что-то вроде: relay1.aspia.example.com, чтобы в случае переезда ретранслятора не пришлось менять много настроек.
PeerPort — Порт, через который пиры будут подключаться к серверу ретрансляции. Если нет специфичной задачи, то менять не рекомендую.
PeerIdleTimeout — Время таймаута, в минутах. Если в течение этого времени данные от пиров не поступают, соединение прерывается. Рекомендую, оставить значение по-умолчанию.
MaxPeerCount — Максимальное количество одновременных подключений, установленных между узлами (Хост/Консоль/Клиент). По-умолчанию установлено — 100. Тут всё зависит от ваших потребностей (количества администраторов и управляемых машин) и возможностей сервера, на который установлен Relay.
StatisticsEnabled — Включение возможности передачи статистики подключений на маршрутизатор. Для просмотра статистики используйте Aspia Console (раздел управления роутером -> Ретрансляторы). Поддерживается два параметра: "true" (включено) или "false" (выключено).
StatisticsInterval — Интервал, в секундах, для отправки статистики подключений на маршрутизатор. Поддерживаются значения от "1" до "60".
После окончания настройки, включаем и запускаем службу Aspia Relay:
$ sudo systemctl enable aspia-relay
$ sudo service aspia-relay start
Для просмотра журнала работы, используется следующая команда:
$ sudo journalctl -u aspia-relay
Резервное копирование Aspia Router + Aspia Relay
При резервном копировании Aspia Router и Aspia Relay, необходимо сохранять следующие файлы:
/etc/aspia/router.json | Конфигурационный файл маршрутизатора |
/etc/aspia/router.pub | Публичный ключ для подключений к маршрутизатору |
/var/lib/aspia/router.db3 | База данных маршрутизатора |
/etc/aspia/relay.json | Конфигурационный файл ретранслятора |
Настройка подключения к Aspia Router через Aspia Console
Для подключения консоли к маршрутизатору и получения возможности управления им, необходимо:
Открыть консоль, создать книгу и настроить её через меню "Правка -> Свойства адресной книги"
На вкладке "Маршрутизатор" поставить галку "Использовать маршрутизатор" и указать адрес маршрутизатора, имя пользователя и пароль (по-умолчанию "admin:admin")
Для управления маршрутизатором откройте меню "Инструменты -> Управление маршрутизатором"
На вкладке "Пользователи" обязательно измените пароль по-умолчанию на свой и создайте пользователей, если необходимо. Пользователи используются для подключения операторов к маршрутизатору.
На вкладке "Ретрансляторы" вы сможете увидеть подключенный к вашему маршрутизатору ретранслятор и информацию о нем, а если щелкнуть по нему в списке, то еще и список текущих установленных соединений.
На вкладке "Хосты" вы сможете увидеть список подключенных хостов и информацию о них.
Заключение
Благодаря программному комплексу Aspia, нашей компании удалось избавиться от зоопарка программ для удаленного управления и "запереть" сервис удаленного управления внутри собственной инфраструктуры, не используя сторонних сервисов, что крайне важно в нынешнее время.
Ссылки, которые будут вам полезны:
Сайт проекта Aspia: aspia.org
Репозиторий с исходниками на Github: github.com/dchapyshev/aspia
Канал в телеграм: t.me/aspia_ru
Профиль разработчика на хабе: habr.com/ru/users/lentin/
Дополнительную информацию по работе с Aspia можно найти в моём блоге: it-35.ru/tags/aspia