Attention : le support de WAPT 1.8.2 a pris fin le 30 juin 2022.

Il y a plusieurs vulnérabilité présente dans la branche WAPT 1.8.2.7393. Merci de mettre à jour sur la version supportée la plus récente. Liste des CVEs (non exhaustive) :
  • * python engine : python 2.7 (CVE-2020-10735, CVE-2015-20107, CVE-2022-0391, CVE-2021-23336, CVE-2021-3177, CVE-2020-27619, CVE-2020-26116, CVE-2019-20907, CVE-2020-8492, etc.)
  • * cryptography : openssl : CVE-2022-2068, CVE-2022-1292, CVE-2022-0778, CVE-2021-4160, CVE-2021-3712, CVE-2021-23841, CVE-2021-23840, CVE-2021-23839, CVE-2020-1971, CVE-2020-1968, CVE-2019-1551
  • * python dependencies : cryptography (CVE-2020-36242, CVE-2020-25659), eventlet (CVE-2021-21419), jinja2 (CVE-2020-28493), psutil (CVE-2019-18874), waitress (CVE-2022-31015), lxml (CVE-2021-4381, CVE-2021-28957, CVE-2020-27783, CVE-2018-19787), ujson (CVE-2022-31117, CVE-2022-31116, CVE-2021-45958), python-ldap (CVE-2021-46823)

Problèmes fréquents

J’ai perdu mon mot de passe SuperAdmin

Il arrive parfois de configurer un serveur WAPT et d’oublier son mot de passe.

Pour réinitialiser le mot de passe SuperAdmin de la console WAPT, vous devez relancer le processus de post-configuration sur le serveur WAPT.

Réinitialiser le mot de passe du serveur WAPT Linux

  • se connecter au serveur avec SSH ;

  • se connecter avec l’utilisateur root (ou utiliser sudo) ;

  • lancer le script de post-configuration :

/opt/wapt/waptserver/scripts/postconf.sh

Attention

Pour éviter de casser la configuration existante du serveur WAPT, acceptez toutes les autres étapes, NE CRÉEZ PAS une nouvelle clé privée !

J’ai perdu ma clé privée WAPT

La sécurité et le bon fonctionnement de WAPT s’appuient sur les jeux de clés privés et de certificats publics.

La perte d’une clé privée nécessite donc de regénérer une nouvelle clé et les certifcats associés, et ensuite déployer sur le parc de machines les certificats pour la nouvelle clé.

Donc la procédure n’est pas anodine, même si elle est simple.

Procédure de renouvellement ou de création d’une clé privée

La procédure va être la suivante :

  • générer une nouvelle clé privée/certificat public. Vous conserverez alors la clé privée (fichier .pem) dans un endroit sûr ;

  • déployer le nouveau certificat .crt sur vos clients dans le dossier C:\Program Files (x86)\ssl manuellement ou en utilisant une GPO ;

Manipulation sur les paquets en conséquence

Les paquets du dépôt local étant signé avec l’ancienne clé, il convient de re-signer l’intégralité des paquets avec la nouvelle clé.

Afin de re-signer tous les paquets WAPT avec la nouvelle clé (les paquets logiciel et les paquets machine), utiliser la commande :

wapt-get sign-packages C:\\waptdev\\*

Je me suis fait voler ma clé privée

Attention

Toute la sécurité de WAPT repose sur la séquestration de cette clé privée.

WAPT ne gère pas encore la révocation des clés en utilisant une CRL.

La solution consiste à supprimer chaque certificat .crt associé à la clé privée volée, situé dans le dossier C:\Program Files (x86)\wapt\ssl.

Cette opération peut être effectuée par GPO ou manuellement.

Mon UUID BIOS bogue

  • il arrive parfois qu’un problème survienne avec certains BIOS. WAPT utilise l”UUID de la machine comme identifiant pour reconnaître les machines ;

  • l”UUID BIOS est censé être unique, malheureusement chez certains constructeurs et pour certaines séries de machines, les UUID des BIOS sont identiques ;

  • le PC remontera bien dans la console mais il écrasera le PC déjà présent considérant que l’ordinateur a changé de nom ;

Résolution

WAPT permet de générer un UUID aléatoire pour remplacer celui indiqué dans le BIOS.

wapt-get generate-uuid

Mon WAPTdeploy ne fonctionne pas

Symptôme

L’utilitaire waptdeploy n’arrive pas à installer l’agent WAPT.

Résolution

Ajouter l’url pour waptagent.exe

Ajouter l’argument waptsetupurl dans les paramètres de la stratégie de déploiement waptdeploy.

--waptsetupurl=https://monserverserveurwapt/waptagent.exe

Lancer WAPTdeploy localement

Lancer waptdeploy localement peut mettre en évidence un problème en affichant explicitement les erreurs.

Exemple de commande à lancer :

C:\Program Files (x86)\wapt\waptdeploy.exe --hash=2a9971aad083d6822b6e4d1ccfb9886be9429ec58bb13246810ff3d6a56ce887 --minversion=1.4.2.0 --wait=15

Dans notre cas le hash n’est pas le bon.

Error with WAPTDeploy

Error with WAPTDeploy

Attention

Ne pas oublier de lancer l’invite de commande en tant qu”Administrateur.

WAPTdeploy fonctionne manuellement mais ne fonctionne pas via GPO

Vérifier que la GPO est bien appliquée avec la commande :

gpresult /h gpo.html & gpo.html

Pour forcer l’application des GPO :

gpupdate /force

Si waptdeploy n’apparaît pas, il faut re-vérifier la configuration de la GPO.

# vous utilisez peut-être une ancienne version de waptdeploy, alors

téléchargez la dernière version de waptdeploy sur le store WAPT.

# merci à Emmanuel EUGENE de l”INSERM française

qui a soumis cette cause possible du mauvais fonctionnement du waptdeploy, si vous répliquez des contrôleurs de domaine, assurez-vous que les GPOs sont correctement synchronisées entre vos DCs et que les ACLs sont appliquées de manière identique sur le SysVols.

Windows n’attend pas le réseau au démarrage

Par défaut Windows n’attend pas le réseau au démarrage de la machine.

Cela peut poser soucis pour l’exécution de waptdeploy car celui-ci a besoin du réseau au démarrage pour télécharger l’agent WAPT.

Vous pouvez activer la GPO : Toujours attendre le réseau au démarrage et à la connexion:

Computer ‣ Configuration ‣ Administrative Templates ‣ System ‣ Logon ‣ Always wait for the network at computer startup and logon

GPO to wait network startup

WAPTexit ne se lance pas

Malgré la présence du script dans les stratégies locales d’arrêt de la machine, waptexit.exe ne se lance pas à l’extinction du poste.

Résolution: Hybrid Shutdown

Il faut désactiver l’arrêt hybride de Windows10, qui cause par ailleurs beaucoup d’autres comportements étranges. La désactivation de l’arrêt hybride rétablit l’exécution des scripts à l’extinction de la machine.

L’arrêt hybride peut être désactivé en précisant une valeur dans le fichier wapt-get.ini de l’agent WAPT, voir waptexit_ini_file.

Un paquet WAPT existe pour traiter le problème :

Résolution: Windows Home édition

Les GPO n’étant pas présentes sur les versions familiales de Windows, il est normal qu’elles ne s’exécutent pas.

La solution de contournement est d’utiliser une tâche planifiée qui appelle C:\Program Files (x86)\wapt\wapt-get.exe avec le paramètre upgrade.

Résolution: GPO locale corrompue

Il peut arriver que les stratégies de groupes locales de la machine soient corrompues.

Une des solutions consiste à supprimer les stratégies locales actuelles en supprimant le fichier C:\windows\system32\GroupPolicy\gpt.ini, puis en redémarrant la machine, et enfin en relançant l’installation de la tâche d’extinction :

wapt-get add-upgrade-shutdown

Si le problème se reproduit, cela signifie peut être qu’une autre application manipule également la GPO.

WAPTexit se coupe après 15 minutes et n’achève pas l’installation

Par défaut sous Windows, les scripts d’extinction ne peuvent s’exécuter plus de 15 minutes.

Si à l’arrêt de la machine, un script d’extinction n’a pas rendu la main au bout de 15 minutes, le script est interrompu.

Solution : augmenter le délai d’installation

Pour résoudre le soucis, il faut modifier la valeur preshutdowntimeout ainsi que la valeur max_gpo_script_wait.

Définissez ces valeurs dans C:\Program Files (x86)\wapt\wapt-get.ini pour modifier le comportement par défaut.

max_gpo_script_wait=180
pre_shutdown_timeout=180

Le paquet tis-wapt-conf-policy embarque cette configuration.

L’autre solution est d’utiliser la GPO File.ini.

GPO ini File

GPO ini File

Message d’erreur à l’ouverture de la console

Connection refused

La console WAPT ne parvient pas à joindre le port 443 du serveur.

  • vérifier si le service Nginx est démarré sur le serveur :

    ps aux | grep nginx
    
  • si Nginx n’est pas lancé, relancer Nginx :

    service nginx restart
    
  • si Nginx ne veux toujours pas démarrer, il faut analyser les fichiers de journalisation dans /var/log/nginx/ pour Linux ou dans C:\Program Files (x86)\wapt\waptserverginx\logs pour Windows.

Service Unavaible

Il est possible que le service waptserver soit stoppé.

  • vérifier si le service waptserver est en cours d’éxécution :

    ps aux | grep wapt
    
  • si la commande ne retourne rien, lancer le waptserver en utilisant :

    service waptserver start
    

Error connecting with SSL … verify failed

La console ne semble pas réussir à vérifier le certificat HTTPS du serveur.

Attention

Attention, avant toute chose vérifiez que vous n’êtes pas victime d’une attaque man in the middle !

Note

Si vous venez de refaire votre serveur WAPT et que vous utilisez un certificat auto-signé, vous pouvez récupérer les anciennes clés de votre ancien serveur wapt dans /opt/wapt/waptserver/apache/ssl.

  • fermer votre console WAPT ;

  • supprimer le dossier %appdata%\..\Local\waptconsole ;

  • lancer ensuite la commande wapt-get enable-check-certificate ;

  • assurez-vous que la commande précédente s’est bien déroulée ;

  • redémarrer le service WAPT avec net stop waptservice && net start waptservice ;

  • relancer la console WAPT ;

Dans le cas ou vous ne pratiquez pas le certificate pinning, cela signifie que le certificat envoyé par le serveur ne pas être vérifié avec le bundle python certifi. Veillez à bien fournir la chaîne complète pour le certificat sur le serveur WAPT.

Problème lors du enable-check-certificate

J’ai le message « certificate CN ### sent by server does not match URL host ### lors du enable-check-certificate »

Cela signifie que le CN envoyé par le certificat du serveur ne correspond pas au wapt_server du fichier wapt-get.ini.

Deux solutions :

  • vérifier le paramètre wapt_server dans votre fichier wapt-get.ini ;

    Si votre valeur est correcte, cela signifie sûrement qu’une erreur est survenue lors de la génération du certificat autosigné par le post conf, une faute de frappe …

    Vous pouvez donc regénérer vos certificats autosignés.

  • sur le serveur WAPT, supprimez le contenu du dossier /opt/wapt/waptserver/apache/ssl/.

    Ensuite, relancez le script de postconf (le même que pendant l’installation avec les mêmes arguments).

    Enfin, vérifiez bien le nom renseigné lors de l’étape FQDN for the WAPT serveur est correcte.

  • vous pouvez maintenant retenter votre enable-check-certificate.

Problème avec la création de paquet

Création de paquet via la console

Le glisser-déposer dans le dépôt privé dans la console WAPT ne fonctionne pas :

  • cela ne fonctionnera pas si la console n’a pas été lancée en tant qu”Administrateur Local ;

  • cela ne fonctionnera pas si la console WAPT a été lancée avec UAC ;

    Solution de contournement simple : passer par Outils ‣ Créer un modèle de paquet depuis un installeur ‣ Choisir un installeur.

  • la console ne renseigne pas automatiquement les informations dans les champs :

    • cela ne fonctionnera pas si vous avez un accent dans le chemin vers le fichier ;

    • l’installeur ne fournit peut être pas suffisamment d’informations sur ses propriétés ;

Problème de droit avec l’invite de commande Windows

Lors de l’édition d’un paquet, on obtient le message suivant :

OperationnalError: attempt to write a read-only database

OperationnalError: attempt to write a readlony database

Solution

Ouvrir une session en tant qu”Administrateur Local et refaire l’opération souhaitée.

Problème de droits avec PyScripter

Lorsqu’on souhaite tester l’installation d’un paquet sur son PC de développement de paquet à partir de PyScripter, on obtient le message :

OperationnalError: attempt to write a read-only database

OperationnalError: attempt to write a readlony database

Solution

Ouvrir une session en tant qu”Administrateur Local et refaire l’opération souhaitée.

Mon paquet WAPT est trop volumineux et je n’arrive pas à l’uploader

Quand un paquet est trop volumineux, il faut en général lancer le builder localement puis l’uploader avec WinSCP.

Solution

  • Builder le paquet dans PyScripter ou manuellement.

    Indication

    Si l”upload a précédemment échoué, vous pourrez trouver le paquet généré dans C:\waptdev.

  • télécharger et installer WinSCP à l’aide de WAPT :

    wapt-get install tis-winscp
    
  • à l’aide de WinSCP, téléversez votre paquet dans le dossier /var/www/html/wapt/ de votre serveur linux.

  • une fois le transfert terminé, il faut regénérer le fichier Packages sur votre dépôt :

    wapt-scanpackages /var/www/wapt/
    

Paquet WAPT en erreur

Problème d’installation

Symptôme

J’ai un paquet en erreur et le logiciel n’est pas installé sur la machine quand je me déplace.

Explication

Une erreur est survenue pendant l’exécution de l’installation définie dans setup.py.

Vous pouvez lire et analyser les messages d’erreur retournés dans la console et tenter de les comprendre.

L’installation sera retentée à chaque upgrade jusqu’à ce que le paquet ne génère plus d’erreur.

Solution

  • si WAPT fournit un code d’erreur, chercher ce code d’erreur sur Internet ;

    Exemple with a MSI : 1618 : Une autre installation est déjà en cours. Un redémarrage devrait solutionner le problème.

    Note

    Les différents codes d’erreur MSI sont disponibles ici.

  • se déplacer physiquement sur la machine en erreur et relancer l’installation silencieuse en ligne de commande. Vérifier ensuite que le logiciel à bien été installé;

    Attention

    Une fois l’installation silencieuse lancée, ne pas intervenir.

    L’objectif est de reproduire le comportement de l’agent WAPT.

  • si l’installation fonctionne en mode silencieux, en contexte utilisateur, cela peut signifier que l’installeur ne supporte pas l’installation en compte SYSTEM ;

  • si cela ne fonctionne toujours pas, lancer l’installation manuellement. Il est possible qu’une erreur apparaisse indiquant explicitement le problème. Exemple (Dépendance manquante: .Net , Java, etc..) ;

  • il est possible que l’installeur ne supporte pas l’écrasement d’une installation précédente, alors prévoir la désinstallation des anciennes version avant d’installer la nouvelle version ;

Erreur « timed out after seconds with output “600.0” »

Symptôme

Certains paquets dans la console retournent l’erreur :

"Erreur timed out after seconds with output '600.0'"

Explication

Par défaut lors d’une installation (avec run, install_msi_if_needed ou install_exe_if_needed) WAPT va attendre 600 secondes que l’installeur lui rende la main.

si l’installeur n’a pas terminé dans ce délai, WAPT coupera l’installation en cours.

Résolution: Installations volumineuses

Si vous tentez d’installer un gros logiciel (Office, Solidworks, Libreoffice …), il est possible que l’intervalle de 600 secondes ne soit pas suffisant.

Vous devez alors, augmentez cette valeur avec l’argument timeout, ex: timeout = 1200 :

run('"setup.exe" /adminfile office2010noreboot.MSP',timeout=1200)

Erreur « has been installed but the uninstall key can not be found »

Symptôme

Certains paquets dans la console retournent l’erreur :

XXX has been installed but the uninstall key can not be found.

Explication

WAPT s’appuie sur Windows pour installer les binaires .msi avec install_msi_if_need et les binaires .exe avec install_exe_if_need.

Par défaut, WAPT accepte les codes de retour : 0 (OK) et 3010 (redémarrage nécessaire), et il vérifie la clé de désinstallation résultante (uninstall key).

Malheureusement, on ne peut pas toujours se fier à ces codes d’erreur, WAPT vérifie enfin que tout s’est bien déroulé :

  • il vérifie la présence de la clé de désinstallation sur la machine ;

  • il vérifie que la version est bien égale ou supérieure à celle renseignée ;

  • si ce n’est pas le cas, il en déduit que le logiciel n’est peut-être pas présent sur la machine ;

La fonction bascule alors volontairement le paquet en erreur. L’installation sera retentée lors de chaque upgrade, jusqu’à ce que le paquet ne génère plus d’erreur.

Solution

Attention

Avant toute chose, il convient de se connecter sur la machine en erreur et de vérifier manuellement si le logiciel est correctement installé . Si ce n’est pas le cas, se référer à la documentation sur les problèmes d’installation d’un paquet..

  • si le logiciel est bien installé, cela signifie peut être que la clé de désinstallation ou la version fournie dans le paquet n’est pas bonne ;

  • récupérer la bonne clé de désinstallation et corriger le paquet en conséquence ;

  • si l’erreur se produit avec install_msi_if_needed cela signifie que l’installeur MSI est mal conçu et renvoie une mauvaise clé de désinstallation ;

Erreur « has been installed and the uninstall key found but version is not good »

Symptôme

Certains paquets dans la console retournent l’erreur :

has been installed and the *uninstall key* found but version is not good

Explication

Avec les commandes install_msi_if_needed et install_exe_if_needed, des vérifications supplémentaires sont effectuées pour vérifier que tout s’est bien passé.

Solution

Attention

Avant toute chose, il convient de se connecter sur la machine en erreur et de vérifier manuellement si le logiciel est correctement installé . Si ce n’est pas le cas, se référer à la documentation sur les problèmes d’installation d’un paquet..

Solution: Avec install_msi_if_needed

Les informations étant extraites depuis l’installeur MSI, cela signifie que le fichiers MSI ne renvoie pas la bonne version ou que la clé de désinstallation retournée n’est pas la bonne version.

Vérifier avec la commande :

wapt-get list-registry

Si la clé retournée n’est pas celle renseignée dans la partie installation du fichier setup.py , il n’est pas possible d’utiliser la fonction install_msi_if_needed.

Il faut rebasculer l’installation avec un simple run() et gérer les exceptions manuellement.

Avec install_exe_if_needed

Cela signifie probablement que la version renseignée dans la fonction install_exe_if_needed n’est pas la bonne. Corriger le paquet WAPT en conséquence.

Note

Si l’argument min_version n’a pas été renseigné, WAPT va tenter de récupérer automatiquement la version depuis l’installeur exe.

Pour vérifier la clé de désinstallation utilisée et le numéro de version, utiliser la commande :

wapt-get list-registry

Si aucune version n’est fournie avec la commande list-registry, cela signifie que la clé de désinstallation du logiciel ne fournit pas de version.

Deux solutions :

  • utiliser l’argument get_version pour fournir un chemin vers une autre uninstallkey ;

def install():

   def versnaps2(key):
       return key['name'].replace('NAPS2 ','')

   install_exe_if_needed('naps2-5.3.3-setup.exe',silentflags='/VERYSILENT',key='NAPS2 (Not Another PDF Scanner 2)_is1',get_version=versnaps2)
  • fournir une valeur vide en argument pour min_version afin d’indiquer à WAPT qu’aucune version n’est à vérifier ;

min_version=' '

Attention

Avec cette méthode on ne vérifiera plus la version lors de mise à jour !

Problèmes fréquents liés aux Antivirus

Certains Antivirus lèvent des alertes pour des composants de WAPT.

Parmis ceux-ci le composant nssm.exe est utilisé par WAPT comme utilitaire de service pour l’agent WAPT.

Voici une liste des exceptions possibles à déclarer dans votre interface de gestion centralisé antivirus :

"C:\Program Files (x86)\wapt\waptservice\win32\nssm.exe"
"C:\Program Files (x86)\wapt\waptservice\win64\nssm.exe"
"C:\Program Files (x86)\wapt\waptagent.exe"
"C:\Program Files (x86)\wapt\waptconsole.exe"
"C:\Program Files (x86)\wapt\waptexit.exe"
"C:\wapt\waptservice\win32\nssm.exe"
"C:\wapt\waptservice\win64\nssm.exe"
"C:\wapt\waptagent.exe"
"C:\wapt\waptconsole.exe"
"C:\wapt\waptexit.exe"
"C:\Windows\Temp\waptdeploy.exe"
"C:\Windows\Temp\waptagent.exe"
"C:\Windows\Temp\is-?????.tmp\waptagent.tmp"

EWaptBadControl: “utf8” codec can’t decode byte

Si vous recevez ce message, cela peut signifier que vous n’avez pas mis en place correctement votre environnement de développement. Visitez cette section de la documentation sur la configuration de l’UTF-8 (pas de BOM).

I have a lot more hosts in the console than I have host packages on my server?

Suite à une remarque de Philippe LEMAIRE du Lycée Français Alexandre Yersin à Hanoï, si vous utilisez la version Entreprise du WAPT et que vous faites un usage intensif des paquets unit ou profile packages, vous pouvez réaliser que vous aurez beaucoup plus d’hôtes dans votre console que de *host packages* sur votre serveur WAPT. C’est normal.

En fait, les paquets unit et les paquets profile ne sont pas explicitement attribués à la machine (c’est-à-dire comme des dépendances dans le paquet host) mais sont implicitement pris en compte par le moteur de dépendance de l’agent WAPT lors de la mise à niveau WAPT.

On peut donc ne pas avoir de paquet host sur le serveur si seuls des paquets unit sont utilisés pour gérer une flotte d’appareils.