MeshCentral: self-hosted сервер для удаленного управления компьютерами

MeshCentral это открытая бесплатная система для удаленного доступа и управления устройствами через веб интерфейс. Является отличной self-hosted альтернативной таким известным средствам удаленного доступа к рабочим столам компьютеров через Интернет, как TeamViewer и AnyDesk. Позволяет легко организовать удобный безопасный удаленный доступ к рабочим столам клиентов через собственную инфраструктуру, не используя чужие облака и проприетарное ПО. Легковесные агенты MeshCentral доступны для различных платформ, включая Windows, Linux, macOS, Android. MeshCentral позволяет прозрачно работать с клиентами за NAT и в защищенных сетях. В статье мы рассмотрим, как установить и настроить сервер MeshCentral для оказания удаленной ИТ поддержки на отдельном VPS сервер с Debian или Ubuntu.

Ключевые особенности и возможности MeshCentral

  • Полностью self-hosted решение с полным контролем за данными
  • Кроссплатформенность
  • Веб-консоль управления – всё управление и подключение к рабочим столам удаленных компьютеров выполняется через браузер
  • Легкий сервер и агенты, с возможностью обслуживания сотен и тысяч клиентов
  • Шифрование сессий между клиентом и сервером
  • Многопользовательский доступ, разграничение прав доступа по группам и устройствам
  • Инвентаризация и контроль состояния клиентов
  • Удаленный доступ к рабочим столам клиентов
  • Удаленный терминал (доступ к shell)
  • Файловый менеджер
  • Удаленное управление, включая возможность выключить компьютер или включить через Wake-on-LAN
  • Позволяет работать как в рамках только локальной сети организации, так и через интернет, включая доступ к клиентам за NAT и файерволами

Установка и настройка сервера MeshCentral

В простой конфигурации для сервера MeshCentral достаточно выделить отдельную виртуальную машину или VPS с минимум 1 vCPU и 1 Гб RAM.

Сервер MeshCentral написан на JavaScript на базе фрейморка Node.js и доступен для установки через NPM репозиторий. Мы рассмотрим официальный способ установки сервера MeshCentral через NPM и запуск в качестве системной службы systemd. Затем мы опубликуем веб-сервер управления MeshCentral обратный прокси Nginx с бесплатным сертификатом Let’s Encrypt (допустимо развертывание MeshCentral в контейнере docker, но это уже за рамками этой статьи).

Итак, начинаем с обновления пакетов Debian:

$ sudo apt update && sudo apt upgrade -y

Устанавливаем необходимые утилиты (если отсутствуют):

$ sudo apt install -y curl nano ufw build-essential

Открыть порт TCP/443 в файерволе:

$ sudo ufw allow 443/tcp

$ sudo ufw reload

Версия Node.js в репозитории Debian слегка устаревшая, поэтому подключаем официальный репозитория и ставим LTS версию Node.js 22 вручную:

$ curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash –

$ sudo apt update

Устанавливаем Node.js и пакетный менеджер NPM:

$ sudo apt install nodejs

Проверьте установленные версии hodejs и npm (они должны успешно отобразиться):

$ node -v

$ npm -v

Установка nodejs и npm в debian

Создадим отдельного пользователя для запуска MeshCentral:

$ sudo useradd -m -r -d /opt/meshcentral -s /bin/bash meshcentral

Создаем директорию для файлов meshcentral и предоставляем права пользователю:

$ sudo mkdir -p /opt/meshcentral

$ sudo chown -R meshcentral:meshcentral /opt/meshcentral

$ cd /opt/meshcentral

Устанавливаем MeshCentral под пользователем в эту директорию:

$ sudo -u meshcentral npm install meshcentral

По умолчанию MeshCentral использует встроенную базу данных NeDB. Для больших развертываний рекомендуется использовать вместо встроенной базы данных MongoDB или Postgresql.

Можно попробовать запустить сервер MeshCentral:

$ sudo -u meshcentral node ./node_modules/meshcentral

запуск сервера MeshCentral meshcentral node ./node_modules/meshcentral

При первом запуске приложение сгенерирует конфигурационные файлы и сертификаты. По умолчанию сервис MeshCentral HTTPS при запуске из-под непривилегированного пользователя запускается на порту 1024+. В нашем случае он запустился на TCP/1025.

WARNING: Server running without permissions to use ports below 1025.
MeshCentral HTTPS server running on port 1025.

MeshCentral HTTPS server running on port 1025

Мы планируем оставить MeshCentral работать на этом порту, но опубликовать его через nginx в качестве реверс-прокси и SSL-сертификатами Let’s Encrypt, автоматически полученными через Certbot. Устанавливаем Nginx и клиент Certbot для автоматического получения и продления SSL-сертификатов Let’s Encrypt:

$ sudo apt install -y nginx certbot python3-certbot-nginx

Настраиваем получение сертификатов для вашего домена, на котором будет доступен сервис MeshCentral:

$ sudo certbot certonly --nginx -d msh.winitpro.ru

Если по какой-то причине вы не сможете проверить владение домена через порт 80 (HTTP-01), можно выполнить проверку домена через DNS. Для этого запросите выпуск сертификата через DNS-01 проверку, при которой Certbot попросит вас создать проверочную TXT-запись в DNS зоне вашего домена (acme-challenge.msh.winitpro.ru):

$ sudo certbot certonly --manual --preferred-challenges dns -d msh.winitpro.ru -v

выпуск сертификата Let's Encrypt для MeshCentral

Выпущенные сертификат fullchain.pem и закрытый ключ privkey.pem будут сохранены в директорию /etc/letsencrypt/live/msh.winitpro.ru :

Сертификат и закрытый ключ

Добавим конфигурационный файл Nginx:

$ sudo nano /etc/nginx/conf.d/meshcentral.conf

server {
listen 443 ssl http2;
server_name msh.winitpro.ru; 
# SSL сертификаты Let's Encrypt
ssl_certificate /etc/letsencrypt/live/msh.winitpro.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/msh.winitpro.ru/privkey.pem;
# Настройка параметров безопасности TLS/SSL 
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:1025;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
В моей конфигурации nginx на Debian был активен дефолтный сайт, который пришлось отключить:

$ sudo rm -f /etc/nginx/sites-enabled/default

$ sudo nginx -t

$ sudo systemctl restart nginx

Настройки сервера MeshCentral задаются в конфигурационном файле config.json. Редактируем этот файл и приводим к следующей конфигурации:

$ sudo nano /opt/meshcentral/meshcentral-data/config.json

{
"$schema": "https://githubusercontent.com",
"settings": {
"cert": "msh.winitpro.ru",
"port": 1025,
"aliasPort": 443,
"redirPort": false,
"redundantToken": true,
"trustedProxy": "127.0.0.1",
"tlsoffload": true,
"ignoreAgentCertificateErrors": true
},
"domains": {
"": {
"title": "My MeshCentral Server winitpro",
"certUrl": "https://msh.winitpro.ru",
"newAccounts": false
}
}
}

Значимые параметры:

  • "port": 1025 —MeshCentral слушает только локально на порту 1025
  • "aliasPort": 443 – установочный файлы агента будут скачиваться с настройкой подключения на стандартный порт 443
  • "newAccounts": false – запретить открытую регистрацию новых пользователей на главной странице.

Так мы запретили пользователям регистрироваться самостоятельно, создадим первого пользователя-администратора следующей командой (сервер MeshCentral должен быть остановлен):

$ sudo -u meshcentral node node_modules/meshcentral --createaccount myadmin --pass SuperPassword123

Назначить пользователя администратором:

$ sudo -u meshcentral node node_modules/meshcentral --adminaccount myadmin

Следующих пользователей в дальнейшем можно создать из веб интерфейса панели администратора MeshCentral.

Еще раз запускаем сервер meshcentral:

$ sudo -u meshcentral node ./node_modules/meshcentral

Откройте браузер и перейдите на URL адрес вашего сервера MeshCentral. Появится форма для ввода имени пользователя и пароля. Попробуйте выполнить вход под созданной вами учетной запись администратора.

Если все работает, настроим автоматический запуск MeshCentraк через systemd:

$ sudo nano /etc/systemd/system/meshcentral.service

Добавляем конфиг:

[Unit]
Description=MeshCentral Server
After=network.target nginx.service
[Service]
Type=simple
LimitNOFILE=1000000
ExecStart=/usr/bin/node /opt/meshcentral/node_modules/meshcentral
WorkingDirectory=/opt/meshcentral
User=meshcentral
Group=meshcentral
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=meshcentral
[Install]
WantedBy=multi-user.target

запуск meshcentral как службы через systemd

Обновляем конфигурацию systemd, и запускаем новую службу:

$ sudo systemctl daemon-reload

$ sudo systemctl enable meshcentral

$ sudo systemctl start meshcentral

Установка агентов MeshCentral

Приступим к развертыванию агентов MeshCentral на управляемых устройствах.

Перейдите в веб-панель администрирования MeshCentral и создайте группу компьютеров. Например, OfficePC с типом управления Manage using a software agent.

Создать группу устройств в meshcentral

MeshCentral поддерживает также безагентное управление удаленными устройствами через Intel vPro AMT – в этом случае нужно выбрать тип агента Intel® AMT Agent-less Group.

Чтобы сгенерировать установочный файл агента, нажмите кнопку Add Agent, выберите платформу, на которой хотите установить агент и скачайте установочный файл. Доступны как интерактивный агент (работает только в момент запуска), так и фоновый (работает в виде службы). Доступны агенты для следующих платформ:

  • Windows
  • Linux/BSD
  • Apple macOS
  • Mobile device (APK файл для Android)

скачать агент meshcentral

Например, если вы хотите установить агент на компьютере Windows, скачайте установочный файл Mesh Agent Windowsx86-64.exe и запустите его на компьютере пользователя.

Установка агента meshcentral на Windows

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

Запуск агента meshcentral agent

После подключения агента к серверу, новой устройство появится в панели администрирования и будет доступно для подключения. Чтобы увидеть рабочий стол пользователя нажмите Desktop.

Подключение к удаленном столу пользователя через meshcentral

Также можно открыть консольную CMD сессию с устройством (для запуска произвольных команд или скриптов с правами System), подключиться через Web-RDP, VNC, передать файлы или получить базовую информацию о компьютере.

На вкладке General можно изменить имя компьютера, описание, проверить состояние служб безопасности. В разделе User consent можно указать нужно ли выводить уведомление пользователю о подключении в его сессию, и включить запрос на подтверждение внешнего подключения к сессии.

Настройки подключения к пользователю

Если вы установили агент в виде службы на клиентском устройстве, в списке служб появится Mesh Agent. При запуске этой службе клиент подключается к серверу и будет доступен для удаленного управления.

служба mesh agent в windows

Если агент по какой-то причине не может подключиться к серверу, для вывода ошибок в консоль, остановите службу и запустите его вручную командой с флагом отладки:

cd "C:\Program Files\Mesh Agent"

get-service "mesh agent"|stop-service

.\MeshAgent.exe run

запуск MeshAgent.exe run в режиме отладки

Для установки агента в Linux генерируется строка установки, которую нужно выполнить в консоли:

установка meshagent в linux

wget -O meshagent "https://msh.winitpro.ru/meshagents?id=ZZZZZ&installflags=0&meshinstall=6"

Запущенные агенты отправляют периодические heartbeat на сервер и в панели управления видно какие агенты сейчас активны (в сети), а какие нет.

веб интерфейс управления meshcenter

Дополнительно доступны следующие опции при подключении к агенту на Windows устройстве:

  • Получение сведений об оборудовании компьютера
  • Доступ к командной строке (как с правами пользователя, так и с правами системы)
  • Доступ к файлам на устройстве в режиме файлового менеджера через браузер
  • Доступ к удаленному реестру
  • Отправка сообщения удаленному пользователю c возможностью работы в режиме чата-переписки
  • Вывод списка установленных программ на компьютере с возможностью принудительного удаления программы
  • Возможность отправить компьютер в спящий режим, выключить или разбудить его
  • Можно сгенерировать временную ссылку с ограниченным сроком действия для предоставления доступа к рабочему столу компьютера в гостевой режиме произвольному внешнему гостю (пользователю без аккаунта)

Для безопасного входа пользователей в веб интерфейс MeshCentral можно включить второй фактор — 2FA аутентификацию с помощью TOTP, Time-based One Time Password (совместимо с приложениями Goggle Authenticator и Microsoft Authenticator). 2FA можно включить персонально в настройках пользователя, или глобально для всех пользователей в конфигурационном файле config.json.

Настройка 2FA аутентификации в MeshCentral

Администратор MeshCentral для гибкого управления может создать группы устройств и группы пользователей с разными правами для разных устройств.

Итак, MeshCentral – это простое и гибкое self-hosted решение с открытым исходным кодом, которое поможет вам организовать удаленный доступ к компьютерам пользователей как в локальной сети, так и в Интернет, не используют сторонние облачные сервисы, такие как TeamViewer или AnyDesk. MeshCentral удобен как для организации постоянной удаленной технической поддержки ИТ отделом внутренних пользователей, так и выполнения разовых заявок на оказание техподдержки внешних клиентов и партнеров. Проект активно развивается и поддерживается сообществом.


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)