====== MeshCentral ======
Tuto repris de mon tutos fait pour le SYRTE. \\
===== Installation Serveur =====
- Install Meshcentral à partir d'une base Ubuntu 18 : \\
PDF utilisé :
* [[http://info.meshcentral.com/downloads/MeshCentral2/MeshCentral2InstallGuide.pdf|Install Guide]]
* [[http://info.meshcentral.com/downloads/MeshCentral2/MeshCentral2UserGuide-0.2.7.pdf|User Guide]]
# En root
add-apt-repository universe # repository universe déjà activé (dans le doute...)
apt update
apt install nodejs -y
apt install npm -y
# Test si node et npm sont installé :
node –v
npm -v
# Install mongodb (base de donnée interne à meshcentral n'est pas adapté en cas d'un grand nombre de poste)
apt install mongodb -y
systemctl start mongodb
systemctl enable mongodb
#test de mongodb
mongo --host 127.0.0.1:27017
#Autorisation utilisation de port < 1024 sous Ubuntu
whereis node #Pour savoir ou est stocké node
setcap cap_net_bind_service=+ep /usr/bin/node
#Install meshcentral
useradd -r -s /sbin/nologin meshcentral
mkdir /opt/meshcentral
cd /opt/meshcentral
npm install meshcentral
chown -R meshcentral:meshcentral /opt/meshcentral
node ./node_modules/meshcentral # Va générer les fichiers de config.
Ctrl+C
# Configure Mongodb dans meshcentral
nano meshcentral-data/config.json
# retirer les "_" devant les 2 lignes suivantes :
"MongoDb": "mongodb://127.0.0.1:27017/meshcentral",
"Cert" : "syrtemesh.obspm.fr",
"WANonly": true,
"LANonly": false,
node ./node_modules/meshcentral # Va installer la base de donné dans mongodb
Ctrl-C
nano /etc/systemd/system/meshcentral.service
#copier le texte suivant :
[Unit]
Description=MeshCentral Server
[Service]
Type=simple
LimitNOFILE=1000000
ExecStart=/usr/bin/node /opt/meshcentral/node_modules/meshcentral
WorkingDirectory=/opt/meshcentral
Environment=NODE_ENV=production
User=meshcentral
Group=meshcentral
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
#Fin du fichier
Maintenant il faut récupérer les certificats. \\
Aller sur une machine qui contient les certif (hpiers ...) et on récupére les fichiers ''wildcard-syrte.obspm.fr.key'' et ''star\_obspm\_fr.crt'' \\
Copiez les wildcard dans le dossier ''/opt/meshcentral/meshcentral-data/'' \\
Supprimez ou mettez de cotés les fichiers suivant :
cp /root/wildcard-syrte.obspm.fr.key meshcentral-data/webserver-cert-private.key
cp /root/star_obspm_fr.crt meshcentral-data/webserver-cert-public.crt
Bien penser à remettre les bon droits d'accés sur les fichiers :
''chmod 644 webserver-cert-p*''
Pour let's encrypt voici 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. Edi$
"__comment2__": "See node_modules/meshcentral/sample-config-advanced.json for a more advanced example.",
"settings": {
"MongoDb": "mongodb://127.0.0.1:27017/meshcentral",
"cert": "mesh.dusong-laiguillon.xyz",
"WANonly": true,
"LANonly": false,
"_sessionKey": "MyReallySecretPassword1",
"_port": 443,
"_aliasPort": 443,
"redirPort": 80,
"_redirAliasPort": 80
},
"domains": {
"": {
"title": "MeshCentral",
"_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": "max@dusong-laiguillon.xyz",
"names": "mesh.dusong-laiguillon.xyz",
"production": true,
"rsaKeySize": 3072
}
}
Lancez le serveur serveur.
Faire les commandes suivantes :
systemctl enable meshcentral.service
systemctl start meshcentral.service
systemctl status meshcentral.service
Une fois lancé. \\
Il faut créer un compte, le premier compte créé est administrateur. Ici root.
Une fois logguer, les machines se mettent dans un groupe. \\
Les groupes et les machines peuvent avoir des configs pour notifier l'utilisateur cible que l'on se connecte à ça machine. Voir même de lui demander son autorisation.
URL:
* https://www.reddit.com/r/MeshCentral/
* https://github.com/Ylianst/MeshCentral/issues
===== Upgrade =====
cd /opt/meshcentral
npm install meshcentral
sudo -u meshcentral node ./node_modules/meshcentral # install ce qui lui manque.
#Si message d'erreur : Meshcentral n'arrive pas a installer un module node. Installer le à la main "npm install module"
chown -R meshcentral:meshcentral /opt/meshcentral
# Si répertoire de partage de fichier activé :
chmod 755 –R /opt/meshcentral/meshcentral-files
===== Client Windows =====
**Meshagent** pour **Windows** peut être lancé en ligne de commande. L'application avec l'argument ''-h'' ressort l'aide suivante :
Mesh Agent available switches:
run Start as a console agent.
connect Start as a temporary console agent.
start Start the service.
restart Restart the service.
stop Stop the service.
state Display the running state of the service.
-signcheck Perform self-check.
-install Install the service from this location.
-uninstall Remove the service from this location.
-nodeidhex Return the current agent identifier.
-fullinstall Copy agent into program files, install and launch.
-fulluninstall Stop agent and clean up the program files location.
-proxy:host:port Specifiy an HTTPS proxy (after -fullinstall only).
-tag:xxx Specifiy a agent tag (after -fullinstall only).
-resetnodeid Reset the NodeID next time the service is started.
Pour passer outre le smartscreen windows10 (testé sur SyrtePC039, a testé sur plus de machine) et install l'agent comme un service :
* Script Bash :
@ECHO OFF
PowerShell.exe -Command "Unblock-File -Path .\meshagent64-nomgroup.exe"
meshagent64-nomgroup.exe -fullinstall
Il faut également modifier les 2 gpo suivantes sinon on n'a pas accès à la fenetre UAC quand on doit mettre le mot de passe admin : \\
gpedit.msc => Paramètre windows => Stratégie Locale => Option de sécurité :
- Contrôle de compte utilisateur : passer au bureau securisé lors d'une demande d'élévation => Disabled
- Contrôle de compte d’utilisateur : autoriser les applications UIAccess à demander l’élévation sans utiliser le bureau sécurisé. => Enabled
Source : https://www.reddit.com/r/MeshCentral/comments/gicjvw/how_to_enter_admin_password_in_uac_promt_in/
** !! Voir comment automatiser par un script powershell !! **
\\
\\
**Rq1:** \\
Il semble qu'on peut faire ca dans la base de registre d'après https://eddiejackson.net/wp/?p=16923 :\\
''HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableUIADesktopToggle /t REG_DWORD /d 1'' \\
Régles ligne GPO : //Contrôle de compte d’utilisateur : autoriser les applications UIAccess à demander l’élévation sans utiliser le bureau sécurisé//
''HKEY\_LOCAL\_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v PromptOnSecureDesktop /t REG_DWORD /d 0'' \\
Régle la ligne GPO : //Contrôle de compte d’utilisateur : passer au Bureau sécurisé lors d’une demande d’élévation//
Cette ligne ne sert pas : \\
HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableSecureUIAPaths /t REG_DWORD /d 1 \\
Régle la ligne GPO : //Contrôle de compte d’utilisateur : élever uniquement les applications UIAccess installées à des emplacements sécurisés//
\\
\\
**Rq2:** \\
Si on utilise le client en "one shot" et que la personne en face n'est pas admin, meme si on fait la manip ci-dessus on n'aura pas accès à la fenetre UAC\\
Cela ne pose pas vraiment problème car dans notre utilisation, le client sera toujours installé en tant que service .
===== Client MacOS =====
Le client MacOS s'installe et semble fonctionner directement même sur des versions récentes 10.15. Attention il ne gère pas l'écran de connexion (login) mais on peut prendre la main sur le bureau de l'utilisateur (avec les problèmes habituels de clavier.
**Important**: l'application gère mal le réseau. Si lors de son lancement le réseau n'est pas disponible l'application se fige. La solution trouvée est de tester régulièrement par crontab la connexion de l'agent mesh avec notre serveur syrtemesh et en cas de besoin de relancer l'agent. Ceci se fait via un second paquet munki. __A retirer donc dès correction de ce bug.__
@reboot sleep 20; if [[ `netstat -t | grep syrtemesh | grep ESTABLISHED | wc -l` -ne 1 ]]; then (echo "START"; launchctl stop meshagent; launchctl start meshagent); fi
0 * * * * sleep 20; if [[ `netstat -t | grep syrtemesh | grep ESTABLISHED | wc -l` -ne 1 ]]; then (echo "START"; launchctl stop meshagent; launchctl start meshagent); fi
\\
\\
===== Notes diverses =====
:!: ''Attention'' :!:
Le script ne peut se lancer qu'en administrateur.
Donc à partir de Meshcentral nous avons accès à tous les fichiers de l'ordinateur, y compris les fichiers des utilisateurs dans USERS. On ne pourrait par exemple pas donner un compte à des utilisateurs sauf à être sûr qu'ils sont bien administrateurs par ailleurs sur l'ordinateur concerné (PC de manip session admin ouverte en permanence par exemple).