MeshCentral — установка и настройка системы удаленного доступа в Debian 11
MeshCentral — достаточно интересный продукт, который несомненно заслуживает самого пристального внимания. Это система удаленного управления устройствами работающая через веб-интерфейс. Т.е. решается проблема установки серверной части системы на свой рабочий ПК как это происходило в случае с Veyon. Администрировать можно с любого устройства, достаточно запустить браузер и подключиться к серверу. При этом агенты для MeshCentral разработаны, практически, для любой известной операционной системы. Также заложена возможность одновременной работы в системе сразу нескольких человек.
Содержание:
- Подготовка контейнера в Proxmox
- Настройка системы после создания и запуска контейнера
- Выполняем установку MeshCentral
- Установка MongoDB
- Первичная настройка MeshCentral
- Добавление устройства под управлением ОС Windows
- Добавление устройства под управлением ОС Astra Linux
- Делегирование полномочий
- Запуск MeshCentral с поддержкой DNS имени
- Запуск сервера MeshCentral в автоматическом режиме
Разработчики предлагают разные варианты серверных платформ. Но мы возьмём за основу Debian 11. В нашем варианте это будет контейнер LXC в Proxmox VE.
1. Подготовка контейнера в Proxmox
1. 1. Создаем контейнер:
1.2. Указываем шаблон:
1.3. Задаем параметры системы:
1.4. Задаем настройки сети:
1.5. Запускаем процесс создания контейнера:
2. Настройка системы после создания и запуска контейнера
Подключаемся к системе с правами root и приступаем к настройке
2.1. Добавляем sudo в систему:
apt install sudo
2.2. Добавляем пользователя в систему, у меня это master:
adduser master Adding user `master' ... Adding new group `master' (1000) ... Adding new user `master' (1000) with group `master' ... Creating home directory `/home/master' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for master Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
2.3. Добавляем пользователя master в группу sudo:
usermod -aG sudo master
2.4. Входим в систему под учетной записью master:
machcenter login: master Password:
2.5. Устанавливаем NodeJS
sudo apt install nodejs -y sudo apt install npm -y
2.6. Разрешаем прослушивание портов ниже 1024
master@mechcentral:~$ whereis node node: /usr/bin/node /usr/include/node /usr/share/man/man1/node.1.gz master@machcentral:~$ sudo setcap cap_net_bind_service=+ep /usr/bin/node
3. Выполняем установку MeshCentral
3.1. Запускаем команду установки MeshCentral. Важно отметить, что установка выполняется с правами обычного пользователя:
npm install meshcentral
3.2. Запускаем MeshCentral
node ./node_modules/meshcentral
Если все правильно сделали, то получим следующий выхлоп:
Installing archiver@4.0.2... Installing otplib@10.2.3... MeshCentral HTTP redirection server running on port 80. Generating certificates, may take a few minutes... Generating root certificate... Generating HTTPS certificate... Generating MeshAgent certificate... Generating Intel AMT MPS certificate... MeshCentral v0.9.62, LAN mode. Server has no users, next new account will be site administrator. MeshCentral HTTPS server running on port 443.
В принципе, на этом этапе мы получаем уже рабочую систему.
3.3. Запускаем браузер и переходим по заданному ранее нами адресу:
В данном варианте для хранения настроек используется база данных NeDB. Однако разработчики рекомендуют использовать сервер баз данных MongoDB.
4. Установка MongoDB
4.1. Обновляем индексы репозитория:
sudo apt update
4.2. Выполняем установку доп. пакетов:
sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common
4.3. Скачиваем ключ репозитория:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
4.4. Добавляем репозиторий для Ubunru Focal:
sudo add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse'
4.5. Обновляем индексы репозитория:
sudo apt update
4.6. Выполняем установку MongoDB:
sudo apt install mongodb-org
4.7. Запускаем сервер баз данных MongoDB:
sudo systemctl start mongod
4.8. Добавляем сервис в автозагрузку:
sudo systemctl enable mongod
4.9. Проверяем статус сервиса:
systemctl status mongod
4.10. Запускаем конфигурационный файл MeshCentral на редактирование:
mcedit ~/meshcentral-data/config.json
Изначально он выглядит вот так:
{ "$schema": "http://info.meshcentral.com/downloads/meshcentral-config-schema.json", "__comment1__": "This is a simple configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.", "__comment2__": "See node_modules/meshcentral/sample-config-advanced.json for a more advanced example.", "settings": { "_cert": "myserver.mydomain.com", "_WANonly": true, "_LANonly": true, "_sessionKey": "MyReallySecretPassword1", "_port": 443, "_aliasPort": 443, "_redirPort": 80, "_redirAliasPort": 80 }, "domains": { "": { "_title": "MyServer", "_title2": "Servername", "_minify": true, "_newAccounts": true, "_userNameIsEmail": true } }, "_letsencrypt": { "__comment__": "Requires NodeJS 8.x or better, Go to https://letsdebug.net/ first before trying Let's Encrypt.", "email": "myemail@mydomain.com", "names": "myserver.mydomain.com", "production": false } }
и указываем что данные нужно хранить в MangoDB, для этого в параметрах «settings» добавляем строку ««MongoDb»: «mongodb://127.0.0.1:27017/meshcentral»,«:
{ "$schema": "http://info.meshcentral.com/downloads/meshcentral-config-schema.json", "__comment1__": "This is a simple configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.", "__comment2__": "See node_modules/meshcentral/sample-config-advanced.json for a more advanced example.", "settings": { "MongoDb": "mongodb://127.0.0.1:27017/meshcentral", "_cert": "myserver.mydomain.com", "_WANonly": true, "_LANonly": true, "_sessionKey": "MyReallySecretPassword1", "_port": 443, "_aliasPort": 443, "_redirPort": 80, "_redirAliasPort": 80 }, "domains": { "": { "_title": "MyServer", "_title2": "Servername", "_minify": true, "_newAccounts": true, "_userNameIsEmail": true } }, "_letsencrypt": { "__comment__": "Requires NodeJS 8.x or better, Go to https://letsdebug.net/ first before trying Let's Encrypt.", "email": "myemail@mydomain.com", "names": "myserver.mydomain.com", "production": false } }
Сохраняем изменения.
4.11. Запускаем MeshCentral:
node ./node_modules/meshcentral
Выхлоп должен получиться вот таким:
Installing mongodb@4.1.0... Installing saslprep... Resetting main indexes... Resetting events indexes... Resetting power events indexes... Resetting server stats indexes... MeshCentral HTTP redirection server running on port 80. MeshCentral v0.9.62, LAN mode. Server has no users, next new account will be site administrator. MeshCentral HTTPS server running on port 443.
5. Первичная настройка MeshCentral
5.1. Запускаем браузер и переходим по ip адресу, который мы задавали для нашего сервера. И создаем учетную запись администратора системы:
5.2. При первом входе в MashCentral система предлагает нам создать группы устройств:
5.3. Создаем группы устройств. Это могут быть кабинеты или одна общая группа:
5.4. После создания группы устройств необходимо добавить сами устройства:
6. Добавление устройства под управлением ОС Windows
6.1. Нажимаем кнопку «Добавить» и в появившемся диалоговом окне скачиваем дистрибутив агента:
6.2. Дистрибутив необходимо установить на ПК, которые мы будем администрировать:
После установки запись о ПК появиться в системе:
7. Добавление устройства под управлением ОС Astra Linux
7.1. Для добавления ПК под управлением Linux (в нашем случае это Astra Linux) необходимо скачать скрипт установки в MeshCentral:
7.2. Копируем скрипт и запускаем его с правами root на ПК под управлением Linux:
7.3. После окончания работы установочного скрипта переходим в панель управления MeshCentral и отмечаем появление записи о ПК под управлением Astra Linux:
8. Делегирование полномочий
8.1. Для того чтобы инженеры также могли работать в системе необходимо создать им учетные записи в разделе «Мои пользователи«:
8.2. Предоставляем пользователям доступ к группам устройств. Теперь администрировать ПК и оказывать техподдержку смогут и другие инженеры ОУ:
9. Запуск MeshCentral с поддержкой DNS имени
Изначально сервер MeshCentral запущен в режиме работы только в локальной сети без поддержки обнаружения клиентами по имени DNS:
MeshCentral v0.9.62, LAN mode.
Однако разработчики заложили в него функцию работы по доменному имени. Для этого необходимо в конфигурационном файле включить поддержку WAN режима, сгенерировать сертификат для доменного имени и указать его в конфиге. Нижнее подчеркиваие «_» перед параметром означает что он отключен.
9.1. Прописываем DNS запись на нашем DNS сервере. У меня он работает в локальной сети поэтому выглядит так:
9.2. Указываем в конфигурационном файле имя сертификата. У меня это meshcentral.g528.lan и подключаем параметр WANonly:
{ "$schema": "http://info.meshcentral.com/downloads/meshcentral-config-schema.json", "__comment1__": "This is a simple configuration file, all values and sections that start with underscore (_) are ignored. Edit a section and remove the _ in front of the name. Refer to the user's guide for details.", "__comment2__": "See node_modules/meshcentral/sample-config-advanced.json for a more advanced example.", "settings": { "MongoDb": "mongodb://127.0.0.1:27017/meshcentral", "cert": "meshcentral.g528.lan", "WANonly": true, "_LANonly": true, "_sessionKey": "MyReallySecretPassword1", "_port": 443, "_aliasPort": 443, "_redirPort": 80, "_redirAliasPort": 80 }, "domains": { "": { "_title": "MyServer", "_title2": "Servername", "_minify": true, "_newAccounts": true, "_userNameIsEmail": true } }, "_letsencrypt": { "__comment__": "Requires NodeJS 8.x or better, Go to https://letsdebug.net/ first before trying Let's Encrypt.", "email": "myemail@mydomain.com", "names": "myserver.mydomain.com", "production": false } }
9.3. Запускаем сервер MeshCenter в режиме поддержки сертификата:
node ./node_modules/meshcentral --cert meshcentral.g528.lan
Если ранее вы уже запускали сервер, то сервер может не запуститься в режиме WANonly. Для решения этой задачи я удалил все сертификаты и ключи из дериктории meshcentral-data и запустил сервер снова:
node ./node_modules/meshcentral
Возможно не самое удачное решение, но оно сработало )
Выхлоп должен получиться вот таким:
MeshCentral HTTP redirection server running on port 80. MeshCentral v0.9.62, WAN mode. MeshCentral Intel(R) AMT server running on meshcentral.g528.lan:4433. MeshCentral HTTPS server running on meshcentral.g528.lan:443.
Агента нужно будет генерировать и устанавливать заново. Однако теперь агенты будут находить сервер в сети по DNS имени.
10. Запуск сервера MeshCentral в автоматическом режиме
10.1. Проверим права на доступ к файлам конфигурации нашего сервера:
ls -l
В моем случае это выглядит так:
drwxr-xr-x 2 master master 2 Dec 26 13:16 meshcentral-backup drwxr-xr-x 2 master master 16 Dec 26 13:44 meshcentral-data drwxr-xr-x 3 master master 3 Dec 26 13:41 meshcentral-files drwxr-xr-x 150 master master 151 Dec 26 13:16 node_modules -rw-r--r-- 1 master master 108431 Dec 26 13:16 package-lock.json -rw-r--r-- 1 master master 159 Dec 26 13:16 package.json
10.2. Создаем конфигурационный файл запуска сервиса:
sudo mcedit /etc/systemd/system/meshcentral.service
И приводим его к виду:
[Unit] Description=MeshCentral Server [Service] Type=simple LimitNOFILE=1000000 ExecStart=/usr/bin/node /home/master/node_modules/meshcentral WorkingDirectory=/home/master Environment=NODE_ENV=production User=master Group=master Restart=always # Restart service after 10 seconds if node service crashes RestartSec=10 # Set port permissions capability AmbientCapabilities=cap_net_bind_service [Install] WantedBy=multi-user.target
Сохраняем изменения.
10.3. Запускаем последовательно команды:
sudo systemctl enable meshcentral.service sudo systemctl start meshcentral.service
10.4. Проверяем работу сервиса:
systemctl status meshcentral.service
Должно быть так:
* meshcentral.service - MeshCentral Server Loaded: loaded (/etc/systemd/system/meshcentral.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-12-26 14:08:44 UTC; 20s ago Main PID: 6589 (node) Tasks: 22 (limit: 4915) Memory: 115.6M CGroup: /system.slice/meshcentral.service |-6589 /usr/bin/node /home/master/node_modules/meshcentral `-6600 /usr/bin/node /home/master/node_modules/meshcentral --launch 6589 Dec 26 14:08:44 meshcentral systemd[1]: Started MeshCentral Server. Dec 26 14:08:44 meshcentral node[6589]: MeshCentral HTTP redirection server running on port 80. Dec 26 14:08:44 meshcentral node[6589]: MeshCentral v0.9.62, WAN mode, Production mode. Dec 26 14:08:45 meshcentral node[6589]: MeshCentral Intel(R) AMT server running on meshcentral.g528.lan:4433. Dec 26 14:08:45 meshcentral node[6589]: MeshCentral HTTPS server running on meshcentral.g528.lan:443.
Теперь сервер MeshCentral будет работать в режиме сервиса.
Добрый день!
Установил всё удачно по вашей инструкции на VPS, агенты вроде бы как тоже удачно подключаются, но в админке Meshcentral устройства не появляются. Установлено все также на Debian 11, iptables пустой. Подскажите, пожалуйста, в чем может быть проблема?
Если сервер запущен в режиме LAN, то устройства должны быть в одном сегменте сети с сервером, они его ищут broadcast запросами.
Здравствуйте. MeshCentral в одной локальной сети с клиентами или это сервер в сети Интернет?
Добрый день. Устанавливал proxmox на виртуалбокс (сеть в режиме моста), в Proxmox интернет есть, а в добавленном контейнере интернет отсутствует (пингует только хост Proxmoх’a). Сам контейнер в сети пингуется. Подскажите, пожалуйста, в чем может быть проблема?
серьёзно? проксмокс на виртуалбокс? и в нём разворачивать машину…
какая прелесть
Касперский убивает агента, детектируя что это вирус.
Касперский лечится исключением в %ProgramFiles% политикой Security Cloud или вручную если каспер обычной версии