Renforcer la sécurité de votre installation WAPT¶
Par défaut, tous les paquets WAPT sont signés avec votre clé privée, ce qui offre déjà un haut niveau de sécurité. Cependant, vous pouvez améliorer davantage la sécurité de WAPT.
Pour sécuriser complètement votre installation WAPT, vous devez procéder comme suit :
Activez l’enregistrement authentifié pour filtrer les personnes autorisées à enregistrer le périphérique auprès du serveur WAPT.
Activez la vérification du certificat https sur les agents et la console pour vous assurer que les agents WAPT et la console WAPT se connectent au bon serveur WAPT.
Configurez l’authentification Active Directory pour permettre l’accès à la console WAPT uniquement aux administrateurs WAPT autorisés.
Activez l’authentification par certificat côté client pour n’autoriser que les appareils authentifiés à accéder au serveur WAPT (Remarque : c’est particulièrement important si vous voulez exposer votre serveur WAPT à l’extérieur dans une DMZ).
Si vous utilisez la version Enterprise de WAPT et que vous exploitez une grande flotte avec plusieurs administrateurs, vous serez peut-être intéressé de savoir comment configurer et appliquer correctement les ACLs.
Configuration du pare-feu sur le serveur WAPT¶
La configuration du pare-feu du serveur WAPT est essentielle et devrait être la première étape pour obtenir une meilleure sécurité dans WAPT.
Comme WAPT vise à être sécurisé dès la conception, seul un ensemble minimal de ports ouverts est nécessaire sur le serveur WAPT par rapport aux autres solutions.
Vous trouverez dans la documentation suivante des conseils autour des configurations de pare-feu pour renforcer la sécurité du serveur WAPT.
Comme vous pouvez le constater, seuls les ports 80 et 443 doivent être ouverts pour les connexions entrantes car les frameworks WAPT fonctionnent avec des websockets initiés par les agents WAPT.
Configuration du pare-feu pour le serveur WAPT sur Debian / Ubuntu¶
Par défaut sur Debian Linux, aucune règle de pare-feu ne s’applique.
Désactivez ufw et installez firewalld à la place.
ufw disable
apt update
apt -y install firewalld
Il suffit d’appliquer cette configuration firewalld.
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
systemctl restart firewalld
Configuration du pare-feu pour le serveur WAPT sur RedHat / CentOS¶
Il suffit d’appliquer cette configuration firewalld.
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
systemctl restart firewalld
Configuration de l’authentification kerberos¶
Note
Sans l’authentification kerberos, vous devez soit faire confiance à l’enregistrement initial, soit saisir un mot de passe pour chaque poste de travail lors de l’enregistrement initial.
Pour plus d’informations, consultez la documentation sur l’enregistrement d’une machine auprès du serveur WAPT et la signature des mises à jour d’inventaire.
L’authentification kerberos sera utilisée uniquement lors de l’enregistrement du dispositif.
Installation des composants kerberos et configuration du fichier krb5.conf¶
# Debian / Ubuntu
apt install krb5-user msktutil libnginx-mod-http-auth-spnego
# CentOS / RedHat
yum install krb5-workstation msktutil nginx-mod-http-auth-spnego
Note
L’enregistrement avec kerberos n’est pas disponible avec un serveur WAPT fonctionnant sous 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
La valeur default_realm
doit être écrit en MAJUSCULES ! !!
[libdefaults]
default_realm = MYDOMAIN.LAN
dns_lookup_kdc = true
dns_lookup_realm=false
Récupérer un keytab de service. Utiliser les commandes kinit et klist. Vous pouvez utiliser un compte Administrateur ou tout autre compte ayant le droit délégué de joindre un ordinateur au domaine dans le conteneur de destination approprié (par défaut CN=Computers).
Dans la transcription shell ci-dessous, les commandes sont en noir et le texte renvoyé est commenté en gris clair :
sudo kinit administrator
## Password for administrator@MYDOMAIN.LAN:
## Warning: Your password will expire in 277 days on Mon. 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 demande d’authentification est réussie, vous pouvez alors créer votre Keytab HTTP avec la commande msktutil.
Veillez à modifier la chaîne <DOMAIN_CONTROLER> avec le nom de votre contrôleur de domaine (par exemple : 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é votre nom d’hôte de serveur WAPT avant d’exécuter ces commandes ;
Afin de vérifier votre nom d’hôte, vous pouvez exécuter echo $(hostname) et il doit retourner le nom qui sera utilisé par l’agent WAPT fonctionnant sur les stations de travail clientes.
Appliquez les droits d’accès appropriés au fichier
http-krb5.keytab
.#Debian / Ubuntu sudo chmod 640 /etc/nginx/http-krb5.keytab sudo chown root:www-data /etc/nginx/http-krb5.keytab # CentOS / RedHat sudo chown root:nginx /etc/nginx/http-krb5.keytab sudo chmod 640 /etc/nginx/http-krb5.keytab
Post-configuration de kerberos pour le serveur WAPT¶
Vous pouvez maintenant utiliser le script de post-configuration pour configurer le serveur WAPT afin d’utiliser kerberos.
Le script de post-configuration va configurer Nginx et le serveur WAPT pour utiliser l’authentification kerberos.
Indication
Ce script de post-configuration doit être exécuté en tant que root.
/opt/wapt/waptserver/scripts/postconf.sh --force-https
L’authentification Kerberos sera maintenant configurée.
Cas particuliers d’utilisation¶
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 d’ordinateur srvwapt.
Ajouter un SPN sur le compte srvwapt$.
setspn -A HTTP/srvwapt.mydomain.lan srvwapt
Créer un keytab pour ce 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 dans
/etc/nginx/
(avec winscp par exemple).Appliquez les droits d’accès appropriés au fichier
http-krb5.keytab
.# Debian / Ubuntu sudo chmod 640 /etc/nginx/http-krb5.keytab sudo chown root:www-data /etc/nginx/http-krb5.keytab # CentOS / RedHat sudo chown root:nginx /etc/nginx/http-krb5.keytab sudo chmod 640 /etc/nginx/http-krb5.keytab
WAPT agents only have access to a RODC domain controller¶
Pour RODC, ajoutez le compte srvwapt au groupe de mots de passe autorisés pour la réplication.
N’oubliez pas de précharger le mot de passe du serveur WAPT avec les différents serveurs RODC.
Vous avez plusieurs domaines Active Directory, avec ou sans relations¶
Si vous avez plusieurs domaines Active Directory, 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 devrez ensuite 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
Débugger les problèmes avec les kerberos¶
Attention
The WAPT server address cannot be an IP, Kerberos works well only with DNS.
Dans votre test, l’url utilisée doit être exactement la même adresse que celle indiquée dans
C:\Program Files (x86)\waptwapt-get.ini
.
Avez-vous redémarré nginx correctement ?¶
systemctl restart nginx
Vérifier les permissions du fichier http-krb5.keytab¶
[root@srvwapt.mydomain.lan]# ls -l /etc/nginx/http-krb5.keytab
-rw-r----- 1 root www-data 921 janv. 4 16:20 /etc/nginx/http-krb5.keytab
Le mode kerberos est-il actif sur mon agent ?¶
Sur la machine Windows :
Vérifiez dans votre
C:\Program Files (x86)\wapt\wapt-get.ini
que la valeur use_kerberos estTrue
.[global] use_kerberos=1
Si vous modifiez cette valeur, n’oubliez pas de redémarrer le service WAPT.
net stop waptservice
net start waptservice
Le mode Kerberos est-il actif sur mon serveur ?¶
Sur la machine linux :
Vérifiez dans votre
/opt/wapt/conf/waptserver.ini
que la valeur use_kerberos estTrue
.
[options]
use_kerberos=1
Vérifiez dans votre
/etc/nginx/sites-enabled/wapt.conf
que cette configuration est présente.
location /add_host_kerberos {
auth_gss on;
auth_gss_keytab /etc/nginx/http-krb5.keytab;
proxy_pass http://127.0.0.1:8080;
}
Si l’une des deux configurations n’est pas présente, redémarrez la post-configuration et activez kerberos.
Vérification que le fichier keytab contient l’url correcte¶
[root@srvwapt.mydomaine.lan]# KRB5_KTNAME=/etc/nginx/http-krb5.keytab klist -k
Keytab name: FILE:/etc/nginx/http-krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
...
3 HTTP/srvwapt.ad.mydomain.lan@AD.MYDOMAIN.LAN
...
Essayer d’enregistrer l’hôte en utilisant un compte système¶
To switch to a system account you must use the psexe tool
from Microsoft: psexe
.
In cmd as an Administrator.
C:\Users\\xxxxxx\\Downloads\\PSTools\\psexec.exe -accepteula -s -i cmd
Dans la nouvelle fenêtre cmd, vérifiez que vous êtes identifié comme System.
C:\WINDOWS\\system32>whoami
NT AUTHORITY\System
Exécutez la commande register.
wapt-get register
Tenter une authentification avec le keytab de votre serveur WAPT¶
On the Linux machine.
[root@srvwapt.ad.tranq ~]# ktutil
ktutil: read_kt /etc/nginx/http-krb5.keytab
ktutil: list
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
1 3 srvwapt$@AD.TRANQUIL.IT
2 3 srvwapt$@AD.TRANQUIL.IT
3 3 srvwapt$@AD.TRANQUIL.IT
4 3 SRVWAPT$@AD.TRANQUIL.IT
5 3 SRVWAPT$@AD.TRANQUIL.IT
6 3 SRVWAPT$@AD.TRANQUIL.IT
7 3 host/srvwapt@AD.TRANQUIL.IT
8 3 host/srvwapt@AD.TRANQUIL.IT
9 3 host/srvwapt@AD.TRANQUIL.IT
10 3 HTTP/srvwapt.ad.tranquil.it@AD.TRANQUIL.IT
11 3 HTTP/srvwapt.ad.tranquil.it@AD.TRANQUIL.IT
12 3 HTTP/srvwapt.ad.tranquil.it@AD.TRANQUIL.IT
ktutil: quit
[root@srvwapt.ad.tranq ~]# kinit -k -t /etc/nginx/http-krb5.keytab srvwapt\$@AD.TRANQUIL.IT
[root@srvwapt.ad.tranq ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: srvwapt$@AD.TRANQUIL.IT
Valid starting Expires Service principal
05/02/2021 19:06:05 06/02/2021 05:06:05 krbtgt/AD.TRANQUIL.IT@AD.TRANQUIL.IT
renew until 06/02/2021 19:06:05
Tentative d’authentification avec curl¶
On the Linux machine.
[root@srvwapt.ad.tranq ~]# kdestroy
[root@srvwapt.ad.tranq ~]# kinit sfonteneau
Password for sfonteneau@AD.TRANQUIL.IT:
[root@srvwapt.ad.tranq ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: sfonteneau@AD.TRANQUIL.IT
Valid starting Expires Service principal
05/02/2021 19:10:42 06/02/2021 05:10:42 krbtgt/AD.TRANQUIL.IT@AD.TRANQUIL.IT
renew until 06/02/2021 19:10:39
root@srvwapt.ad.tranq ~]# curl -v --negotiate -u : https://srvwapt.ad.tranquil.it/add_host_kerberos -k
* Expire in 0 ms for 6 (transfer 0x563dece09f90)
* Uses proxy env variable no_proxy == 'localhost,127.0.01/8,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,ad.tranquil.it'
* Expire in 1 ms for 1 (transfer 0x563dece09f90)
...
* Expire in 0 ms for 1 (transfer 0x563dece09f90)
* Expire in 0 ms for 1 (transfer 0x563dece09f90)
* Trying 192.168.149.37...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x563dece09f90)
* Connected to srvwapt.ad.tranquil.it (192.168.149.37) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Request CERT (13):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
* subject: C=FR; ST=PDLL; L=Saint Sebastien sur Loire; O=Tranquil IT Systems; OU=TIS; CN=srvwapt.ad.tranquil.it; name=PKI TIS; emailAddress=technique@tranquil.it
* start date: Aug 3 12:48:03 2017 GMT
* expire date: Aug 1 12:48:03 2027 GMT
* issuer: C=FR; ST=PDLL; L=Saint Sebastien sur Loire; O=Tranquil IT Systems; OU=TIS; CN=Tranquil IT Systems CA; name=PKI TIS; emailAddress=technique@tranquil.it
* SSL certificate verify ok.
> GET /add_host_kerberos HTTP/1.1
> Host: srvwapt.ad.tranquil.it
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 401 Unauthorized
< Server: nginx
< Date: Fri, 05 Feb 2021 18:08:38 GMT
< Content-Type: text/html
< Content-Length: 188
< Connection: keep-alive
< WWW-Authenticate: Negotiate
< WWW-Authenticate: Basic realm=""
<
* Ignoring the response-body
* Connection #0 to host srvwapt.ad.tranquil.it left intact
* Issue another request to this URL: 'https://srvwapt.ad.tranquil.it/add_host_kerberos'
* Uses proxy env variable no_proxy == 'localhost,127.0.01/8,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,ad.tranquil.it'
* Found bundle for host srvwapt.ad.tranquil.it: 0x563dece07590 [can pipeline]
* Could pipeline, but not asked to!
* Re-using existing connection! (#0) with host srvwapt.ad.tranquil.it
* Connected to srvwapt.ad.tranquil.it (192.168.149.37) port 443 (#0)
* Expire in 0 ms for 6 (transfer 0x563dece09f90)
* Server auth using Negotiate with user ''
> GET /add_host_kerberos HTTP/1.1
> Host: srvwapt.ad.tranquil.it
> Authorization: Negotiate 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
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx
< Date: Fri, 05 Feb 2021 18:08:38 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 38
< Connection: keep-alive
< WWW-Authenticate: Negotiate oYG3MIG0oAMKAQChCwYJKoZIhvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvQoZWpMIm8fS3ZrHmI96KuJ4AnP1ztIwCCXGJy3HuI2+IQ4cccbhf2WLdbxjaf82eOb4MQDZDq8F/x0oFJX6n4DnhPZxrq/RnjwkoTnik7R8MJkKRuvYncBfTGBIHvTJktq6+j9pHqmBDH5D5L8A
< WWW-Authenticate: Basic realm=""
< Cache-Control: store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
<
* Closing connection 0
kerberos connection seems to be working
Verifying that you are successfully obtaining a Kerberos ticket¶
Attention
Exécutez toujours les commandes dans le compte système (voir le point précédent) !
klist purge
klist get http/srvwapt.ad.mydomain.lan
You must get (in your language):
C:\Windows\System32>klist get http/srvwapt.ad.mydomain.lan
LogonId est 0:0x13794d
Un ticket pour http/srvwapt.ad.mydomain.lan a été récupéré.
Tickets mis en cache : (2)
#0> Client : sfonteneau @ AD.MYDOMAIN.LAN
Serveur : krbtgt/AD.MYDOMAIN.LAN @ AD.MYDOMAIN.LAN
Type de chiffrement KerbTicket : AES-256-CTS-HMAC-SHA1-96
Indicateurs de tickets 0x40e00000 -> forwardable renewable initial pre_authent
Heure de démarrage : 2/4/2021 15:51:07 (Local)
Heure de fin : 2/5/2021 1:51:07 (Local)
Heure de renouvellement : 2/11/2021 15:51:07 (Local)
Type de clé de session : AES-256-CTS-HMAC-SHA1-96
Indicateurs de cache : 0x1 -> PRIMARY
KDC appelé : srvads.AD.MYDOMAIN.LAN
#1> Client : sfonteneau @ AD.MYDOMAIN.LAN
Serveur : http/srvwapt.AD.MYDOMAIN.LAN @ AD.MYDOMAIN.LAN
Type de chiffrement KerbTicket : AES-256-CTS-HMAC-SHA1-96
Indicateurs de tickets 0x40a80000 -> forwardable renewable pre_authent 0x80000
Heure de démarrage : 2/4/2021 15:51:07 (Local)
Heure de fin : 2/5/2021 1:51:07 (Local)
Heure de renouvellement : 2/11/2021 15:51:07 (Local)
Type de clé de session : AES-256-CTS-HMAC-SHA1-96
Indicateurs de cache : 0
KDC appelé : srvads.AD.MYDOMAIN.LAN
Si cela ne fonctionne pas, vérifier dans votre Active Directory que l’attribut serviceprincipalname
sur le compte de l’ordinateur du serveur WAPT a cette valeur : HTTP/srvwapt.mydomain.lan
.
Vérifiez qu’il fonctionne avec Firefox¶
Note
You must first configure Firefox for kerberos authentication.
Type about:config in the URL bar in your Firefox.
Edit
network.negotiate-auth.trusted-uris
, and add the url of the WAPT Server:srvwapt.mydomain.lan
.Vous pouvez maintenant visiter l’url : https://srvwapt.mydomain.lan/add_host_kerberos.
Si l’authentification ne fonctionne pas, le serveur renvoie un message d’erreur 403.
En cas d’erreur lors d’un des contrôles précédents¶
Supprimez le compte de la machine de l’Active Directory.
Supprimez le fichier
/etc/nginx/http-krb5.keytab
.Reboot the host you are testing with and re-run the keytab creation process again.
Note
Il est important de redémarrer la machine pour purger les tickets kerberos précédemment obtenus par la machine.
Pour éviter le redémarrage, vous pouvez également exécuter la commande « klist purge » en tant que SYSTEM.
Activation de la vérification du certificat SSL / TLS¶
Lors de l’exécution du script de post-configuration du serveur WAPT, le script générera un certificat auto-signé afin d’activer les communications HTTPS.
L’agent WAPT vérifie le certificat du serveur HTTPS en fonction de la valeur verify_cert
de la section [global]
dans C:\Program Files (x86)\wapt\wapt-get.ini
.
Options pour |
Fonctionnement de l’agent WAPT |
---|---|
|
the WAPT agent will not check the WAPT Server HTTPS certificate. |
|
the WAPT agent will check the WAPT Server HTTPS certificate
using the certificate bundle.
|
|
the WAPT agent will check the WAPT Server HTTPS certificate
with the certificate bundle.
|
Indication
To quickly and easily enable verification of the HTTPS certificate, you can use the Pinning method.
Épingler le certificat¶
L”épinglage de certificat consiste à vérifier le certificat SSL/ TLS à l’aide de la définition d’un paquet bien défini et restrictif.
Indication
Cette méthode est la plus simple lorsqu’on utilise un certificat auto-signé.
Pour cela, vous devez lancer les commandes suivantes dans le shell Windows cmd.exe (avec des privilèges élevés si UAC est actif).
Si vous avez déjà un shell Windows cmd.exe ouvert, fermez-le et ouvrez un nouveau shell afin de prendre en compte les variables d’environnement mises à jour :
wapt-get enable-check-certificate
net stop waptservice
net start waptservice
Validez le certificat avec wapt-get update
Lorsque vous avez exécuté la commande update, assurez-vous que tout s’est bien passé, et en cas de doute, vérifiez Problème lors du enable-check-certificate.
Attention
- If wapt-get enable-check-certificate returns an error,
remove the .crt with same name on
C:\Program Files (x86)\wapt\sslserver
Note
The command enable-check-certificate downloads the certificate
srvwapt.mydomain.lan.crt
in the folderC:\Program Files (x86)\WAPT\ssl\server
.Il modifie ensuite le fichier
wapt-get.ini
pour spécifier la valeurverify_cert
=C:\Program Files (x86)\wapt\ssl\server\srvwapt.mydomain.lan.crt
.L’agent WAPT va maintenant vérifier les certificats en utilisant le certificat épinglé.
Attention
If you use the certificate pinning method, BE REMINDED to archive
the /opt/wapt/waptserver/ssl
folder on your WAPT Server.
The file will have to be restored on your server if you migrate or upgrade your WAPT Server, if you want the WAPT agents to continue to be able to establish trusted HTTPS connections with the WAPT Server.
How to use a commercial certificate or certificates provided by your Organization?¶
Si la méthode d’épinglage ne vous convient pas, vous pouvez remplacer le certificat auto-signé généré lors de l’installation de WAPT.
Replace the old certificate with the new one in the folder
/opt/wapt/waptserver/ssl/
(Linux) or
C:\wapt\waptserver\ssl\
(Windows).
The new key pair must be in PEM encoded Base64 format.
Note
Cas particulier où votre certificat a été signé par une Autorité de Certification interne
Les certificats émis par une Autorité de certification interne doivent avoir la chaîne de certificats complète de l” Autorité de certification.
Vous pouvez ajouter manuellement la chaîne de certificats de l’autorité de certification au certificat qui sera utilisé par Nginx.
Exemple : echo srvwapt.mydomain.lan.crt ca.crt > cert.pem
- For Linux servers it is also necessary to reset
the ACLs:
# Debian / Ubuntu chown root:www-data /opt/wapt/waptserver/ssl/*.pem # CentOS / RedHat chown root:nginx /opt/wapt/waptserver/ssl/*.pem
Redémarrez Nginx pour prendre en compte les nouveaux certificats.
#Centos:
#Debian:
systemctl restart nginx
#Windows:
net stop waptnginx
net start waptnginx
Configuration de l’agent WAPT¶
Pour un certificat commercial, vous pouvez définir verify_cert = 1
dans wapt-get.ini
.
Pour un certificat émis par une autorité de certification interne, vous devez placer le certificat dans le dossier C:\Program Files (x86)\wapt\ssl\server\ca.crt
et spécifier le chemin du certificat avec verify_cert
dans le fichier :wapt-get.ini de l’agent WAPT.
Pour appliquer la nouvelle configuration à l’ensemble de votre flotte :
Régénérer un agent WAPT avec les paramètres appropriés.
Use a WAPT package to modify
wapt-get.ini
and push the certificate.
Vérification du certificat dans la console WAPT¶
Lorsque la console WAPT démarre pour la première fois, elle lit le contenu du fichier C:\Program Files (x86)WAPT\wapt-get.ini
et elle construit son fichier de configuration C:\Usersadmin\AppData\Local\waptconsole\waptconsole.ini
.
Ceci définit correctement l’attribut verify_cert
pour la communication HTTPS entre la console WAPT et le serveur WAPT.
Configuration de l’authentification des utilisateurs par rapport à l’Active Directory ¶
Par défaut, le serveur WAPT est configuré avec un seul compte SuperAdmin dont le mot de passe est défini lors de la post-configuration initiale.
On large and security-minded networks, the SuperAdmin account should not be used since it cannot provide the necessary traceability for administrative actions that are done on the network assets.
Il est donc nécessaire de configurer l’authentification par rapport à l’Active Directory pour les utilisateurs de la console WAPT ; cela permettra d’utiliser des comptes nommés pour les tâches.
Note
L’authentification Active Directory est utilisée pour authentifier l’accès à l’inventaire via la console WAPT.
However, all actions on the WAPT equipped remote devices are based on X.509 signatures, so an Administrator will need both an Active Directory login AND a private key whose certificate is recognized by the remote devices that the Administrator manages using WAPT.
Seul le compte SuperAdmin et les membres du groupe de sécurité Active Directory waptadmins seront autorisés à télécharger des paquets sur le dépôt principal (mode d’authentification par login et mot de passe).
Activation de l’authentification Active Directory¶
To enable authentication of the WAPT Server with Active Directory, configure the file
waptserver.ini
as follows.
Note
- The WAPT Server configuration file on GNU/ Linux and macOS systems
is found in
/opt/wapt/conf/waptserver.ini
or in/opt/wapt/waptserver/waptserver.ini
.- The WAPT Server configuration file on Windows systems
is found in
C:\wapt\conf\waptserver.ini
.
#waptserver.ini
wapt_admin_group_dn=CN=waptadmins,OU=groupes,OU=tranquilit,DC=mydomain,DC=lan
ldap_auth_server=srvads.mydomain.lan
ldap_auth_base_dn=DC=mydomain,DC=lan
ldap_auth_ssl_enabled=False
Options / Valeur par défaut |
Description |
Exemple |
---|---|---|
|
DN LDAP du groupe d’utilisateurs Active Directory autorisé à se connecter à la console WAPT |
|
|
Définit le serveur d’authentification LDAP |
|
|
Définit le DN de base de l’authentification LDAP |
|
|
Définit l’authentification SSL sur les connexions LDAP |
|
Redémarrer le service waptserver.
Avertissement
Pour Microsoft Active Directory, Microsoft a annoncé que l’authentification SimpleBind sur MS-AD sans SSL/TLS sera bloquée par défaut à partir d’avril 2020. Si vous n’avez pas de certificat installé, vous devrez modifier une clé de registre pour que l’authentification fonctionne.
Note
Par défaut Samba-AD ne permet pas l’authentification SimpleBind sans SSL/TLS. Si vous ne disposez pas d’un certificat valide, vous devrez modifier le paramètre ldap server require strong auth
dans /etc/samba/smb.conf
. Pour plus d’informations, vous pouvez consulter la documentation de Tranquil IT sur https://dev.tranquil.it/samba/en/index.html.
Activez le support SSL/ TLS pour les connexions LDAP dans le Contrôleur de Domaine Active Directory¶
Par défaut, l’authentification sur Active Directory repose sur LDAP SSL (port 636 par défaut).
SSL/ TLS n’est pas activé par défaut sur Microsoft Active Directory tant qu’un certificat SSL n’a pas été configuré pour le contrôleur de domaine.
Note
The WAPT Server uses the Certificate Authority bundles from the operating system for validating the SSL/ TLS connection to Active Directory.
Si le certificat Active Directory est auto-signé ou a été signé par une autorité de certification interne, vous devrez ajouter ces certificats au magasin de certificats.
Ajouter un Autorité de Certification dans le dossier /etc/pki/ca-trust/source/anchors/
et mettez à jour le magasin des CA.
# Debian / Ubuntu
cp cainterne.crt /usr/local/share/ca-certificates/cainterne.crt
update-ca-certificates
# CentOS / RedHat
cp cainterne.crt /etc/pki/ca-trust/source/anchors/cainterne.crt
update-ca-trust
# Windows
certutil -addstore -f "ROOT" cainterne.crt
Une fois que vous avez configuré le LDAP SSL/ TLS sur votre Active Directory (veuillez vous référer à la documentation Microsoft pour cela), vous pouvez activer la prise en charge de la sécurité SSL/ TLS pour AD dans
waptserver.ini
.
ldap_auth_ssl_enabled = True
Redémarrer le service waptserver.
Configuration de l’authentification par certificat côté client ¶
Si votre entreprise a besoin d’un serveur WAPT ouvert sur Internet, il peut être sécurisé grâce à l’authentification par certificat côté client.
Cette configuration restreint la visibilité du serveur WAPT aux seuls clients enregistrés. Cela se fait en s’appuyant sur la clé privée de l’agent WAPT générée lors de l’enregistrement. Elle fonctionne comme suit :
L’agent WAPT envoie un CSR au serveur WAPT qui le signe et le renvoie à l’agent WAPT.
Grâce au certificat signé, l’agent peut accéder aux parties protégées du serveur Web Nginx.
Note
- We strongly recommend enabling Kerberos or login/password registration
in the WAPT server post-configuration.
Avertissement
Toutes les actions sont à mener sur le serveur WAPT
Activation de l’authentification des certificats côté client¶
Avertissement
Pour Linux, vérifiez si le lien symbolique dans sites-enabled
existe :
cd /etc/nginx/sites-enabled/
find . -maxdepth 1 -type l -ls
The expected result should be:
269091 0 lrwxrwxrwx 1 root root 36 juil. 22 15:51 ./wapt.conf -> /etc/nginx/sites-available/wapt.conf
Otherwise use the following command:
ln -s /etc/nginx/sites-available/wapt.conf ./wapt.conf
To enable the authentication, you need to add those parameters to the following configuration file in the location section:
Sur Linux :
/etc/nginx/sites-available/wapt.conf
.Sur Windows:
C:\wapt\waptserver\nginx\conf\nginx.conf
.
location / {
...
proxy_set_header X-Ssl-Authenticated $ssl_client_verify;
proxy_set_header X-Ssl-Client-DN $ssl_client_s_dn;
if ($ssl_client_verify != SUCCESS) {
return 401;
}
...
}
Attention
- Please note that as of 2024-09-20, WAPT does not support
CRL, which means that when you delete a machine in the WAPT console, the machine will still have access to the WAPT repository.
Avertissement
- WAPTDeploy cannot use https to retrieve the WAPT agent,
you will have to add this section in the file:
server {
listen 80;
listen [::]:80;
server_name _;
location ~ ^/(wapt/waptsetup-tis.exe|wapt/waptagent.exe|wapt/waptdeploy.exe)$ {
add_header Cache-Control "store, no-cache, must-revalidate, post-check=0, pre-check=0";
add_header Pragma "no-cache";
root "/var/www";
}
return 301 https://$host$request_uri;
}
Déploiement des certificats des administrateurs informatiques locaux sur les clients¶
Indication
Certaines organisations choisiront de laisser les administrateurs informatiques locaux effectuer des actions sur les appareils équipés de WAPT en leur délivrant des certificats personnels qui fonctionneront sur l’ensemble des appareils dont les administrateurs informatiques locaux sont responsables.
Les administrateurs informatiques du siège déploieront les certificats des administrateurs informatiques locaux sur les ordinateurs que les administrateurs locaux gèrent sur leurs sites respectifs.
Ainsi, les administrateurs informatiques locaux ne pourront pas gérer les ordinateurs situés au siège, mais uniquement sur leurs propres sites.
Il est possible de gérer simplement et de manière plus fine en utilisant Access Control Lists avec la version Enterprise de WAPT.
Vous devrez copier les certificats des administrateurs informatiques locaux autorisés sur les clients WAPT dans C:\program files(x86)\wapt\ssl
.
Indication
N’oubliez pas de redémarrer le service WAPT sur les clients pour qu’ils utilisent leur nouveau certificat. Ouvrez une ligne de commande cmd.exe puis :
net stop waptservice && net start waptservice
Si vous voulez déployer les certificats en utilisant WAPT, utilisez un paquet de certificat
Configuration des listes de contrôle d’accès ¶
Indication
- Default
admin
user of WAPT are authenticated by password stored in
waptserver.ini
as a value ofwapt_password
key.- Others WAPT users may be local users (
htpasswd_path
) or AD account users (
ldap_auth_server
/ldap_auth_base_dn
).
Les ACL définissent les actions autorisées pour tous les types d’utilisateurs dans le contexte WAPT.
Note
- Default ACLs user level are defined by
default_ldap_users_acls
in
waptserver.ini
.
L’ACL par défaut pour un nouvel utilisateur est vue
.
Attention
La sécurité est définie par le certificat déployé sur les clients, et non par les ACL.
ACLs simply limit what actions the server is allowed to relay from the WAPT console to the WAPT agents.
A la date du |date|, les agents WAPT ne vérifient pas les droits ACL.
To configure ACLs in WAPT, go to
.Au premier lancement après l’installation du serveur, seul le compte SuperAdmin est présent dans la liste des utilisateurs.
Note
- If the SuperAdmin account does not exist or does not have the admin right,
then the account is recreated by restarting the waptserver service.
- The SuperAdmin account is authenticated using the value of
wapt_password
in the
waptserver.ini
configuration file.
Deux types de comptes sont gérables par ACL, local et Active Directory.
Compte d’utilisateur local¶
Les utilisateurs locaux sont définis par un fichier .htpasswd.
Configuration du serveur WAPT¶
For using local user accounts, you need create a file
named waptusers.htpasswd
in the same folder
on the WAPT server containing the waptserver.ini
file.
Create the
waptusers.htpasswd
.On Linux:
touch /opt/wapt/conf/waptusers.htpasswd chown wapt /opt/wapt/conf/waptusers.htpasswd
On Windows:
cd. > C:\wapt\conf\waptusers.htpasswd
Sur
waptserver.ini
ajoutez les paramètreshtpasswd_path
.htpasswd_path = password file location
Indication
Redémarrer le service waptserver
Création du compte utilisateur¶
Dans la fenêtre Droits des utilisateurs WAPT, cliquez sur Nouveau compte.
- It is possible to rename accounts by pressing F2
on the User column.
Sauvegardez en cliquant sur Enregistrer les comptes.
Pour définir un mot de passe, voir le point Changez le mot de passe.
For setting rights, see the section on managing ACL rights.
If the local user has a password in waptusers.htpasswd
,
then the username appears in bold and Local User is checked,
else change the password for this user.
Changer le mot de passe de l’utilisateur¶
Pour changer le mot de passe du compte sélectionné :
Faites un :menuselection:
clic droit sur le compte --> Changer le mot de passe utilisateur sur le serveur Wapt
.
Saisissez le nouveau mot de passe.
L’utilisateur local apparaît en gras et la case Mots de passe est cochée.
Utilisateurs WAPT définis comme utilisateurs Active Directory¶
Pour gérer les utilisateurs WAPT avec votre Active Directory, vous devez activer l”authentification Active Directory.
Après une première connexion réussie, le compte AD apparaîtra automatiquement dans la liste des utilisateurs WAPT.
Blocage des comptes d’utilisateurs locaux¶
Pour désenregistrer les utilisateurs locaux, faites :menuselection:clic droit sur le compte --> Invalider le mot de passe de l'utilisateur sur le serveur WAPT
.
Le compte sera bloqué et ne pourra plus gérer quoi que ce soit dans WAPT.
Liste des droits¶
De nombreux droits et restrictions peuvent être définis pour chaque utilisateur dans la console WAPT.
Droit |
Description |
---|---|
Admin |
Comme SuperAdmin, tous les droits sont accordés sauf Mot de passe. |
Voir |
Permet de visualiser uniquement les informations sur la console WAPT. |
Inscrire machine |
Allows to use the Admin credentials to register manually a host with the WAPT server. |
Désinscrire machine |
Permet de supprimer une machine depuis la console WAPT. |
Modif machine |
Permet de modifier le paquet machine sur la console WAPT. |
Modif paquets |
Permet de modifier les paquets de base qu’elle est autorisée à modifier. |
Modif groupes |
Permet de modifier les paquets de groupe sur la console WAPT. |
Modif self-service |
|
Modif WUA |
|
Modif paquets AD OU |
Permet de modifier les paquets unit sur la console WAPT. |
Modif paquets Profile |
|
Lancer les instalations |
|
Actions distantes machine |
Allows to make use of Windows Computer Management tool with the WAPT console. |
Modifier requêtes |
Permet de créer ou modifier des requêtes de rapport. |
Lancer requête |
Permet de exécuter des rapports SQL existants. |
Mot de passe |
Définit un utilisateur local |
Gestion des droits¶
Par défaut, le SuperAdmin est l’utilisateur du Certificat CA.
Pour les autres utilisateurs, il est possible d’associer un certificat qui a été généré à partir de la PKI WAPT ou d’une autre CA.
Ces certificats peuvent ou non être des enfants de l’autorité de certification WAPT.
Attention
Si les certificats ne sont pas émis par l’autorité de certification :
- Updated packages are available only to computers
where certificates are deployed.
- ACL are valid only on the perimeter of hosts
where the certificates are deployed.
Associer un certificat à un utilisateur¶
Indication
Par défaut, aucun certificat n’est défini pour aucun utilisateur (y compris SuperAdmin).
- The account in the WAPT console appears in italic
if no certificate is associated to the user.
To associate a certificate to an user, do
.Ensuite, choisissez le certificat à associer à l’utilisateur.
Ajouter / supprimer des droits¶
Pour ajouter ou supprimer des droits, sélectionnez la cellule avec
et cochez-la en appuyant sur la barre d'espace.Indication
- It is possible to do a multiple selection by using keyboard shortcuts
and pressing the spacebar.
Restreindre le périmètre des droits accordés à l’utilisateur¶
It is possible to associate a perimeter to a right given to a user.
Vue¶
Périmètre |
Description |
---|---|
Tout refuser |
Aucun droit de regard n’est autorisé (non coché). |
Autoriser sur tout le périmètre |
La visualisation est autorisée pour tous les agents WAPT. |
Autoriser des périmètres spécifiques |
|
Autoriser où le certificat d’utilisateur est déployé |
|
Modifier les paquets de groupe¶
Indication
Tous les paquets de groupe fonctionnent sur le même principe, décrit ci-dessous.
Périmètre |
Description |
---|---|
Interdire tous les paquets |
Aucune édition n’est autorisée pour aucun paquet (non coché). |
Autoriser tous les paquets |
Le droit de modification est autorisé pour tous les paquets. |
Autoriser des noms de paquets spécifiques |
Le droit de modification est autorisé pour les paquets sélectionnés disponibles dans la liste. |