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)

Configurer l’authentification par Kerberos

Note

  • sans l’authentification par Kerberos, vous devez soit faire confiance lors de l’enregistrement initial ou bien entrer un mot de passe pour chaque poste lors de l’enregistrement;

  • pour plus d’information, consultez la documentation enregistrer une machine sur le serveur WAPT et signer les mises à jour d’inventaire;

  • l’authentification par Kerberos ne sera uniquement utilisé que lors de l’enregistrement de l’appareil;

Installer les composants pour Kerberos et configurer le fichier krb5.conf

#Debian
apt install krb5-user msktutil libnginx-mod-http-auth-spnego

#CentOS
yum install krb5-workstation msktutil nginx-mod-http-auth-spnego

Note

Cette fonctionnalité n’est pas disponible avec un serveur WAPT Windows

Modifiez le fichier /etc/krb5.conf et remplacez tout le contenu par les 4 lignes suivantes en remplaçant MYDOMAIN.LAN par votre nom de domaine Active Directory (i.e. <MYDOMAIN.LAN>).

Attention

Le default_realm doit absolument être écrit en lettres MAJUSCULES !!

[libdefaults]
  default_realm = MYDOMAIN.LAN
  dns_lookup_kdc = true
  dns_lookup_realm=false

Récupérez un ticket keytab. Utilisez les commandes kinit et klist. Vous pouvez utiliser compte Administrator ou n’importe quel autre compte avec une délégation de droit permettant de joindre un poste au domaine dans la bonne OU de destination (par défaut CN=Computers).

Dans le shell retranscrit ci-dessous, les commandes sont en noir et le texte retouné est commenté en gris clair:

sudo kinit administrator
## Password for administrator@MYDOMAIN.LAN:
## Warning: Your password will expire in 277 days on lun. 17 sept. 2018 10:51:21 CEST
sudo klist
## Ticket cache: FILE:/tmp/krb5cc_0
## Default principal: administrator@MYDOMAIN.LAN
##
## Valid starting       Expires              Service principal
## 01/12/2017 16:49:31  02/12/2017 02:49:31  krbtgt/MYDOMAIN.LAN@MYDOMAIN.LAN
## renew until 02/12/2017 16:49:27

Si la requête d’authentification est réussie, vous pouvez créer votre HTTP Keytab avec la commande msktutil.

Assurez-vous de modifier l’entrée <DOMAIN_CONTROLER> avec le nom de votre contrôleur de domaine (eg: srvads.mydomain.lan).

sudo msktutil --server DOMAIN_CONTROLER --precreate --host $(hostname) -b cn=computers --service HTTP --description "host account for wapt server" --enctypes 24 -N
sudo msktutil --server DOMAIN_CONTROLER --auto-update --keytab /etc/nginx/http-krb5.keytab --host $(hostname) -N

Attention

Assurez-vous d’avoir correctement configuré le nom du serveur WAPT avant de lancer ces commandes;

Pour faire une double vérification de votre hostname, vous pouvez lancer echo $(hostname) et cela doit vous retourner le nom qui sera utilisé par l’agent WAPT lancé sur les postes clients.

  • appliquez les bons droits d’accès au fichier http-krb5.keytab:

    #Debian
    sudo chmod 640 /etc/nginx/http-krb5.keytab
    sudo chown root:www-data /etc/nginx/http-krb5.keytab
    
    #CentOS
    sudo chown root:nginx /etc/nginx/http-krb5.keytab
    sudo chmod 640 /etc/nginx/http-krb5.keytab
    

Post-configuration

Vous pouvez désormais utiliser le script de post-configuration pour configurer Kerberos sur le serveur WAPT.

Le script de post-configuration va configurer Nginx et l’utilisation de l’authentification par Kerberos sur le serveur WAPT.

Indication

Ce script de post-configuration doit être lancé en tant que root.

/opt/wapt/waptserver/scripts/postconf.sh --force-https

L’authentication par Kerberos va maintenant être configuré.

Cas spéciaux d’usage

Mon serveur WAPT n’a pas accès à un Active Directory en écriture

  • connectez-vous à votre Active Directory (Pas un RODC);

  • créez un compte machine srvwapt;

  • ajoutez un champ SPN sur le compte srvwapt$;

    setspn -A HTTP/srvwapt.mydomain.lan srvwapt
    
  • créez un keytab pour le serveur WAPT:

    ktpass -out C:\http-krb5.keytab -princ HTTP/srvwapt.mydomain.lan@MYDOMAIN.LAN rndpass -minpass 64 -crypto all -pType KRB5_NT_PRINCIPAL /mapuser srvwapt$@MYDOMAIN.LAN
    Reset SRVWAPT$'s password [y/n]?  y
    

    Note

    Si l’adresse de votre serveur WAPT est différente de celle de votre domaine Active Directory, remplacez HTTP/srvwapt.mydomain.lan@MYDOMAIN.LAN par HTTP/srvwapt.othername.com@MYDOMAIN.LAN.

  • transférez ce fichier vers /etc/nginx/ (avec winscp par exemple);

  • appliquez les bons droits d’accès au fichier http-krb5.keytab:

    #Debian
    sudo chmod 640 /etc/nginx/http-krb5.keytab
    sudo chown root:www-data /etc/nginx/http-krb5.keytab
    
    #CentOS
    sudo chown root:nginx /etc/nginx/http-krb5.keytab
    sudo chmod 640 /etc/nginx/http-krb5.keytab
    

L’agent WAPT a uniquement un accès vers un contrôleur de domaine RODC

  • pour un RODC, ajoutez le compte srvwapt » au groupe autorisé à répliquer les mots de passe;

  • n’oubliez pas de pré-charger le mot de passe du serveur WAPT avec les différents serveurs RODC;

Preload Password srvwapt account

Vous avez de multiples domaines Active Directory avec ou sans relations

Si vous avez des domaines Active Directory multiples, vous devez créer un keytab par domaine en suivant la procédure ci-dessus, ex :

  • http-krb5-domain1.local.keytab ;

  • http-krb5-domain2.local.keytab ;

  • http-krb5-domain3.local.keytab ;

Vous allez alors fusionner tous ces keytabs en un unique keytab:

ktutil
read_kt http-krb5-domain1.local.keytab
read_kt http-krb5-domain2.local.keytab
read_kt http-krb5-domain3.local.keytab
write_kt http-krb5.keytab