Внедряем средство удаленной помощи в рамках удаленной поддержки в организации офисных сотрудников, находящихся на удаленке, имеющих разъездной характер работы и коллег, которым оказываем удаленную помощь в рамках, как родственникам, так и за вознаграждение.  Если раньше для удаленного взаимодействия использовалась утилита TeamViewer для некоммерческого использования, то сейчас увы с начала мая 2022 поставщик TeamViewer ушел. Нужно что-то делать чтобы быть востребованным, и я среди различных средств решил обратить свой взор на отечественную разработку проект Aspia. Попробовав – меня все устроило. Нюансов много, плюс дописывается автором, есть группа поддержки в Telegram, а самое главное он бесплатен, есть агент для Windows и серверная часть для Ubuntu LTS.

Данный инструмент реализует такую схему:

Схема работы сервиса Aspia

  • Я (Системный администратора) и у меня установлен aspia-console
  • VPS во вне имеющая статический белый IP адрес (Ubuntu 20.04 Server) на которую устанавливается aspia relay + aspia router
  • Клиентские системы (пользователей) на которые устанавливается aspia-host

Пакеты можно скачать как с официального сайта так и у меня здесь.

Как работает проект Aspia:

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

Aspia Router работает исключительно как маршрутизатор и при попытке создать соединение между хостом и клиентом, не пропускает его через себя, а перенаправляет трафик на Relay. Тем самым, не нагружая свой канал, чтобы всегда быть доступным для "сигнальных соединений". При этом, к одному Aspia Router может быть подключено множество Aspia Relay.

Aspia разбита на несколько модулей:

  • 1.Host — устанавливается на компьютер, которым необходимо управлять (на данный момент только Windows).
  • 2.Console — устанавливается на компьютер администратора и выполняет роль клиента с адресной книгой и имеет интерфейс по управлению router’ом (поддерживаются Linux, Windows, MacOS).
  • 3.Client — легковесная клиент с возможностью быстрого подключения к хосту (поддерживаются Linux, Windows, MacOS).
  • 4.Router — собственная реализация ID сервера для хостов, находящихся за NAT и, соответственно, не имеющих белого IP адреса (поддерживаются Linux и Windows).
  • 5.Relay — работает совместно с Router и служит для балансировки нагрузки. При небольших нагрузках возможно использование Router + Relay на одном физическом сервере (поддерживаются Linux и Windows).

Итак, я в тестовых условиях проработал все движения по исполнению которых могу с центральной системы или с системы, на которой установлено приложение aspia-console взаимодействовать с узлами, находящимися за NAT, т.е. не имеющими статического белого IP адреса. А вот после всего разобранного практически применил в организации где сейчас работаю.

Шаг №1: Покупаем перейдя по моей реферальной ссылке виртуальную машину с осью Ubuntu 20.04 Server (CPU = 2 Ghz, RAM = 1Gb, HDD = 30Gb, WAN-IP статический выдается бесплатно)

Шаг №2: Покупаем у регистратора имен доменное имя (к примеру, у меня это ekzorchik.com)

Шаг №3: На регистраторе имен где приобрели доменное имя прописываем в DNS сопоставление для записи A, что при обращении к узлу mail.ekzorchik.com идет сопоставление с WAN-IP виртуальной машины.

Шаг №4: Подключаюсь по SSH к mail.ekzorchik.com

Шаг №5: Настраиваю виртуальную систему где теперь доменное имя mail.ekzorchik.com и произвожу базовые вещи по настройке системы на дальнейшее использование.

Шаг №6: Скачиваю Aspia Router и устанавливаю на VPS:

Aspia Router пригодится вам в следующей ситуации: вам необходимо управлять компьютерами (с установленным на них Aspia Host), которые находятся за NAT и не имеют белого внешнего IP адреса или имеют динамический IP адрес.

root@ekzorchik:~# wget https://github.com/dchapyshev/aspia/releases/download/v2.4.0/aspia-router-2.4.0-x86_64.deb
root@ekzorchik:~# dpkg -i aspia-router-2.4.0-x86_64.deb
root@ekzorchik:~# rm -f aspia-router-2.4.0-x86_64.deb
root@ekzorchik:~# aspia_router --help
aspia_router [switch]
Available switches:
        --create-config Creates a configuration
        --keygen        Generating public and private keys
        --help  Show help

Шаг №7: Создаем конфигурационный файл router.json для Aspia Router:

root@ekzorchik:~# aspia_router --create-config
Creation of initial configuration started.
Settings file path: "/etc/aspia/router.json"
Settings file does not exist yet.
Public key directory path: "/etc/aspia"
Public key directory does not exist (Success). Attempt to create...
Public key directory created successfully.
Public key file: "/etc/aspia/router.pub"
Public key does not exist yet.
Creating a user...
User has been created. Adding a user to the database...
User was successfully added to the database.
Generating encryption keys...
Private and public keys have been successfully generated.
Writing a public key to a file...
Configuration successfully created. Don't forget to change your password!
User name: admin
Password: admin
Public key file: "/etc/aspia/router.pub"
root@ekzorchik:~#

Содержимое параметров конфигурационного файла router.json

  • AdminWhiteList — Список IP-адресов администраторов, которым разрешено подключаться к маршрутизатору. Адреса разделяются точкой с запятой. Если список пуст, то разрешены подключения от всех администраторов. Если список содержит элементы, то подключиться могут только администраторы, указанные в этом списке.
  • ClientWhiteList — Список IP-адресов клиентов, которым разрешено подключаться к маршрутизатору. Адреса разделяются точкой с запятой. Если список пуст, то разрешены подключения от всех клиентов. Если список содержит элементы, то подключаться могут только клиенты, указанные в этом списке.
  • HostWhiteList — Список IP-адресов хостов, которым разрешено подключаться к маршрутизатору. Адреса разделяются точкой с запятой. Если список пуст, то разрешены подключения со всех хостов. Если список содержит элементы, то подключаться могут только хосты, указанные в этом списке.
  • MinLogLevel — Уровень ведения журнала. Уменьшение значения увеличивает количество сообщений в журнале. Минимальное значение равно "0", максимальное значение равно "3". Значение по-умолчанию — 1. Оставим как есть.
  • Port — Порт, на котором будут приниматься входящие соединения. Если нет специфичной задачи, то менять не рекомендую.
  • PrivateKey — Приватный ключ шифрования роутера. Если у вас уже есть закрытый ключ, то напишите его здесь. Если это ваша первая установка, не меняйте значения. Ключ генерируется автоматически.
  • RelayWhiteList — Список IP-адресов ретрансляторов (Aspia Relay), которым разрешено подключаться к роутеру. Адреса разделяются точкой с запятой. Если список пуст, то разрешены подключения от всех ретрансляторов. Если список содержит элементы, то подключаться могут только ретрансляторы, указанные в этом списке. Вписываем IP адрес нашего ретранслятора (в случае расположения Aspia Relay на том же сервере — указываем 127.0.0.1).

Шаг №8: Чтобы изменить пароль на доступ к Aspia Router вместо дефолтной связки (admin:admin) нужно:

Пока не понятно, как, уточнил в Telegram канале, ответили

в консоли аспии… \инструменты\управление маршрутизатором

там вкладка «Пользователи»… можно добавить новых пользователей… админа отключить

Шаг №9: После окончания настройки, включаем и запускаем демона Aspia Router:

root@ekzorchik:~# sudo systemctl enable aspia-router
Created symlink /etc/systemd/system/multi-user.target.wants/aspia-router.service → /lib/systemd/system/aspia-router.service.
root@ekzorchik:~# sudo systemctl start aspia-router && sudo systemctl status aspia-router.service
● aspia-router.service - Aspia Router
     Loaded: loaded (/lib/systemd/system/aspia-router.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-05-13 09:28:24 MSK; 77ms ago
   Main PID: 3199346 (aspia_router)
      Tasks: 1 (limit: 1066)
     Memory: 892.0K
     CGroup: /system.slice/aspia-router.service
             └─3199346 /usr/bin/aspia_router

May 13 09:28:24 ekzorchik.com systemd[1]: Started Aspia Router

Шаг №10: Скачиваю Aspia Relay и устанавливаю на VPS:

После установки Aspia Router, нам необходимо установить и настроить Aspia Relay. Без этого наш роутер работать не будет.

root@ekzorchik:~# wget https://github.com/dchapyshev/aspia/releases/download/v2.4.0/aspia-relay-2.4.0-x86_64.deb
root@ekzorchik:~# dpkg -i aspia-relay-2.4.0-x86_64.deb
root@ekzorchik:~# rm -f aspia-relay-2.4.0-x86_64.deb

Шаг №11: Создаем конфигурационный файл relay.json для Aspia Relay:

root@ekzorchik:~# aspia_relay --create-config
Configuration successfully created.
root@ekzorchik:~#

Содержимое параметров конфигурационного файла relay.json

Далее, проверим параметры:

  • MaxPeerCount — Максимальное количество одновременных подключений, установленных между узлами (Client/Console и Host). По-умолчанию установлено — 100. Тут всё зависит от ваших потребностей (количества администраторов и управляемых машин) и возможностей сервера, на который установлен Relay.
  • MinLogLevel — Уровень ведения журнала. Уменьшение значения увеличивает количество сообщений в журнале. Минимальное значение равно "0", максимальное значение равно "3". Значение по-умолчанию — 1. Оставим как есть.
  • PeerAddress — Адрес, который пиры получат для подключения к серверу ретрансляции. Тут указываем адрес, по которому хост и клиент/консоль смогут достучаться да нашего сервера. Рекомендую указать DNS имя, например что-то вроде: relay1.aspia.example.com.
  • PeerIdleTimeout — Время в минутах. Если в течение этого времени данные от пиров не поступают, соединение прерывается. Рекомендую, оставить значение по-умолчанию.
  • PeerPort — Порт, через который одноранговые узлы будут подключаться к серверу ретрансляции. Если нет специфичной задачи, то менять не рекомендую.
  • RouterAddress — Адрес роутера, который мы устанавливали ранее. Он может быть равен localhost, если роутер установлен на том же сервере. В случае, если роутер и ретранслятор находятся на разных серверах, указывается тот адрес, по которому ретранслятор сможет достучаться до роутера (в большинстве случаев — это будет белый внешний IP или "127.0.0.1" для локального ретранслятора).
  • RouterPort — Порт роутера. Если вы не изменяли его при установке Aspia Router, то оставьте значение по-умолчанию.
  • RouterPublicKey — Публичный ключ шифрования роутера, который вы получили при его установке (хранится в файле /etc/aspia/router.pub).
root@ekzorchik:~# cat /etc/aspia/router.pub
EE5283767AA135610DF0D66E8ADB6941D1CE1D8AE82A4FCF18A1985063E9787Broot@ekzorchik:~#

Копирую публичный ключ router(а) в конфигурационный файл relay.json и изменяю PeerAddress:

root@ekzorchik:~#nano /etc/aspia/relay.json

{
    "MaxPeerCount": "100",
    "PeerAddress": "mail.ekzorchik.com",
    "PeerIdleTimeout": "5",
    "PeerPort": "8070",
    "RouterAddress": "localhost",
    "RouterPort": "8060",
    "RouterPublicKey": "EE5283767AA135610DF0D66E8ADB6941D1CE1D8AE82A4FCF18A1985063E9787B"
}

Шаг №12: После окончания настройки Aspia Relay, включаем и запускаем демона Aspia Relay:

root@ekzorchik:~# sudo systemctl enable aspia-relay
Created symlink /etc/systemd/system/multi-user.target.wants/aspia-relay.service → /lib/systemd/system/aspia-relay.service.
root@ekzorchik:~# sudo systemctl start aspia-relay.service
root@ekzorchik:~# sudo systemctl status aspia-relay.service
● aspia-relay.service - Aspia Relay
     Loaded: loaded (/lib/systemd/system/aspia-relay.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-05-13 09:33:20 MSK; 7s ago
   Main PID: 3199606 (aspia_relay)
      Tasks: 3 (limit: 1066)
     Memory: 1.1M
     CGroup: /system.slice/aspia-relay.service
             └─3199606 /usr/bin/aspia_relay

May 13 09:33:20 ekzorchik.com systemd[1]: Started Aspia Relay.
root@ekzorchik:~#

Шаг №13: Т.к. я на VPS использую надстройку над правилами IPTABLES, а именно firewalld, то добавляю порты, которые идут по умолчанию и которые я не изменял при установке aspia router & aspia relay:

sudo apt-get install -y fail2ban firewalld
sudo ufw disable
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --state
ip r | awk '{print $5}' | head -n1
eth0 

sudo firewall-cmd --zone public --change-interface=eth0 --permanent
 
sudo firewall-cmd --reload
 
sudo firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

root@amigo:~#
root@ekzorchik:~# netstat -tulpn | grep aspia
tcp        0      0 0.0.0.0:8070            0.0.0.0:*               LISTEN      3199606/aspia_relay
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      3199346/aspia_route
root@ekzorchik:~#
root@ekzorchik:~# firewall-cmd --add-port=8060/tcp --permanent
success
root@ekzorchik:~# firewall-cmd --add-port=8070/tcp --permanent
success
root@ekzorchik:~# firewall-cmd --reload
success
root@ekzorchik:~#

Шаг №14: Устанавливаю на узел, которому буду оказывать удаленную помощь пакет Aspia Host:

На систему Windows на которую производим установку Aspia Host предварительно следует зайти как локальный администратор или знать пароль локального администратора

https://github.com/dchapyshev/aspia/releases/download/v2.4.0/aspia-host-2.4.0-x86.msi

Запускаю msi, нажимаю Далее, соглашаюсь с лицензионным соглашением и нажимаю "Далее",

  • Установить Хост Aspia в: C:\Program Files (x86)\Aspia\Host\

И нажимаю "Далее"

  • Создать ярлык на рабочем столе: Отмечаю галочкой
  • Создать ярлык в меню "Пуск": Отмечаю галочкой

И нажимаю "Далее", "Установить", на запрос от UAC (User Account Control) также отвечаем Yes, Готово

После чего в трее рядом с часами появляется иконка установленного приложения Хост Aspia

Установленное приложения Aspia Host в трее рядом с часами

Нажимаем на нее, когда так называемая серверная часть не настроена, она выглядит так:

Когда Aspia Host не настроен то нет ID

Шаг №15: Настраиваю Хост Aspia на работу с установленным маршрутизатором (где у Вас установлена связка Aspia Router & Aspia Relay):

Aspia – Параметры – вкладка "Основные"

  • Входящий порт: 8050
  • Текущее состояние службы: Запущена
  • Использовать свой сервер обновлений: галочку снимаю

И нажимаю "Применить"

Aspia – Параметры – вкладка "Безопасность"

Защита настроек паролем: нажимаю "Установить"

  • Новый пароль: Aa1234567aA
  • Новый пароль (повторить): Aa1234567aA

И нажимаю ОК

  • Включить одноразовый пароль: галочку снимаю
  • Требовать подтверждение при подключении к компьютеру: галочку снимаю
  • Запретить закрытие Aspia: галочку не ставлю

И нажимаю "Применить"

Aspia – Параметры – вкладка "Маршрутизатор"

  • Включить использование маршрутизатора: отмечаю галочкой
  • Адрес: указываю mail.ekzorchik.com
  • Публичный ключ: EE5283767AA135610DF0D66E8ADB6941D1CE1D8AE82A4FCF18A1985063E9787B

Это ключ

root@ekzorchik:~# cat /etc/aspia/router.pub

EE5283767AA135610DF0D66E8ADB6941D1CE1D8AE82A4FCF18A1985063E9787Broot@ekzorchik:~#

Чтобы видеть, как это – смотрите скриншот для наглядного понимания:

Подключаем Aspia Host к Aspia Relay + Aspia Router

После нажимаю "Применить"

Aspia – Параметры — Вкладка "Пользователи" - "Добавить нового пользователя" (Создаю административную учетную запись которая будет иметь полный доступ к системе для подключения)

  • Имя пользователя: support
  • Пароль: Aa1234567aA
  • Пароль (повторить): Aa1234567aA
  • Разрешенные типы сессий:
  • Управление рабочим столом: отмечаю галочкой
  • Просмотр рабочего стола: отмечаю галочкой
  • Передача файлов: отмечаю галочкой
  • Информация о системе: отмечаю галочкой
  • Текстовый чат: отмечаю галочкой

На заметку: Пароль должен содержать строчные и прописные символы, цифры и не должен быть короче 8 символов.

Создаем административную учетную запись на Aspia Host

И нажимаю "Применить" - "ОК"

После чего если подключение к маршрутизатору корректно, то система с установленным Aspia host получит ID и статус у нее будет "Подключено к маршрутизатору"

Теперь Aspia Host подключен к собственному Aspia Relay + Aspia Router

Пользователю достаточно будет в трее возле часов нажать на программу и сказать Вам (системному администратору) Ваш ID чтобы вы могли подключиться к нему.

На заметку: Все внесенные изменения через приложение можно увидеть в сформированном конфигурационном файле C:\ProgramData\aspia\host.json который получаем можно распространять.

Шаг №16: Устанавливаем на систему с которой будем взаимодействовать с контролируемыми узлами aspia-console-2.4.0-x86.msi

  • Я принимаю условия лицензионного соглашения: Отмечаю галочкой
  • Установить Консоль Aspia в: C:\Program Files (x86)\Aspia\Console\
  • Создать ярлык на рабочем столе: Отмечаю галочкой
  • Создать ярлык в меню "Пуск": Отмечаю галочкой

И после нажимаю "Установить", т.е. я работаю с обычными правами то возникает окно UAC в котором указываю административную учетную запись и нажимаю "Готово"

Запускаю Aspia Console, первоначально выглядит так:

Так выглядит Aspia Console на стороне системного Администратора

Нажимаю Файл – Новая адресная книга

Вкладка "Основные"

  • Имя: polygon
  • Шифрование: Без шифрования

Вкладка "Маршрутизатор"

  • Использовать маршрутизатор: отмечаю галочкой
  • Адрес: mail.ekzorchik.com
  • Имя пользователя: admin
  • Пароль: admin

Вкладка "Конфигурация по умолчанию"

(Основные) (Данные для входа)

  • Имя пользователя: support
  • Пароль: Aa1234567aA

(Сессии) (Управление)

  • Кодек: VP8
  • Включить звук: снимаю галочку
  • Включить буфер обмена: устанавливаю галочку
  • Показывать форму удаленного курсора: устанавливаю галочку
  • Показывать положение удаленного курсора: устанавливаю галочку

(Сессии) (Управление) (Разное)

  • Отключить эффекты рабочего стола: устанавливаю галочку
  • Отключить обои рабочего стола: устанавливаю галочку
  • Отключить сглаживание шрифтов: галочку не ставлю
  • Очищать буфер обмена при отключении: устанавливаю галочку
  • Блокировать компьютер при отключении: галочку не ставлю
  • Блокировать удаленный вход: галочку не ставлю

(Сессии) (Просмотр)

Все аналогично "Сессии" - "Управление"

И нажимаю ОК

После нажимаю на пиктограмму "Быстрое подключение" или "Инструменты" - "Быстрое подключение" и указываю Ваш ID где установлен Aspia Host

Из Aspia Console инициирую подключение к рабочей станции с Aspia Host

Авторизуюсь

  • Имя пользователя: support
  • Пароль: Aa1234567aA

Авторизуюсь на Aspia Host указывая логин и пароль

И нажимаю OK

И вот я успешно подключился к рабочей станции с установленным Aspia Host находящейся за NAT (Т.е. не имеющей белого WAN-IP)

И вот я успешно подключился к рабочей станции с установленным Aspia Host находящейся за NAT (Т.е. не имеющей белого WAN-IP)

Шаг №17: Чтобы каждый раз не указывать логин и пароль на подключение можно по ID создать узлы в адресной книге:

Через правый клик мышью на "Корневая группа" — выбираю "Добавить компьютер"

Добавляю компьютер в Адресную книгу

И завожу добавляемый компьютер

  • Имя: rdphome
  • Родительская группа: Корневая группа
  • Адрес / ID: 4
  • Имя пользователя: support
  • Пароль: Aa1234567aA

Завожу компьютер указывая ID, логин и пароль

На заметку: Если на системе где установлен Aspia Host не произведена авторизация в системе, то подключиться по ID нельзя, это большой минус. Выходом из этой ситуации на стратегических системах может служить настроенный Autologon. Ошибка, можно, есть в режиме "Управление рабочим столом" соответствующая галочка, в режиме "Просмотр рабочего стола" данной галочки нет.

И не забываем сохранить адресную книгу: Файл – Сохранить – и указываем имя файла polygon (тип файла: Адресная книга Aspia (*.aab)) дабы можно было не заводить узлы в адресную книгу, а просто подгружать сохраненные для выполнения функцию удаленное помощи.

Шаг №18: Резервное копирование

База данных сервера хранится в файле "/var/lib/aspia/router.db3". Не забудьте настроить резервное копирование данного файла, а также конфигов роутера "/etc/aspia/routerjson" и "/etc/aspia/router.pub", т.к. в них хранятся публичные и приватные ключи. Данные файлы потребуются вам, если вы захотите переустановить Aspia Router с сохранением выданных ранее идентификаторов и не перенастраивать все подключенные ранее хосты.

Итого внедренный сервис работает с узлами, которые за NAT или же имеющими белый адрес.

Что мне нравится, что все узлы на подконтрольном мне железе и системах.

И работа, как через интернет так и в локальной сети, что может быть заменой Radmin.

Продолжаю использование, о различных нюансах продолжаем читать мой блог или писать мне в Telegram. Считаю, что пока на этом все, с уважением автор блога Олло Александр aka ekzorchik.