Sécuriser son installation AD

Désactiver les connexions null session

Hint

Samba-AD hérite d’un comportement des domaines NT4 qui n’est plus nécessaire en mode Active Directory.

En effet, on peut récupérer la liste des utilisateurs sans être loggué sur le domaine, ce qui n’est pas très élégant.

Par exemple, la commande suivante renvoie l’ensemble des utilisateurs du domaine (remplacer l’adresse ip par celle de votre contrôleur de domaine et appuyer sur Entrée au moment du prompt) :

rpcclient -U "" -c enumdomusers 10.0.0.11
  • pour éviter ce listing, rajouter la ligne suivante dans la section [global] du /etc/samba/smb.conf :

    restrict anonymous = 2
    

Désactiver NetBIOS

Hint

Si la configuration DNS est correctement faite, on peut désactiver les anciens protocols NetBIOS qui ne sont plus nécessaire.

  • rajouter dans la section [global] du /etc/samba/smb.conf :

    disable netbios = yes
    smb ports = 445
    

Désactiver le support des imprimantes

Hint

Le contrôleur de domaine ne doit pas être configuré avec le rôle de serveur d’impression.

Un serveur Samba configuré en serveur de fichiers est mieux adapté pour cette fonction.

  • désactiver le rôle impression qui est actif par défaut sous Samba :

    printcap name = /dev/null
    load printers = no
    

Remplacer le certificat par un certificat validé par votre Organisation

Hint

Contrairement à l’AD Microsoft, Samba-AD active par défaut le support LDAP STARTTLS et LDAPS. Pour cela un certificat autosigné est généré à l’installation. Il est important de le remplacer par un certificat valable au sein de votre Organisation.

  • rajouter les directives suivantes dans /etc/samba/smb.conf :

    [global]
    ...
    tls enabled = yes
    tls keyfile = /etc/samba/tls/srvads.mydomain.lan.key
    tls certfile = /etc/samba/tls/srvads.mydomain.lan.crt
    tls cafile = /etc/samba/tls/mondomaine_CA.crt
    

Générer des hashs de mot de passe supplémentaires

Hint

Il est fréquent d’avoir plus d’une LDAP d’authentification. Pour permettre de transférer des hashs sur une autre base d’authenfication, il est possible de demander à Samba-AD de générer des hashs supplémentaires quand un utilisateur change son mot de passe.

  • rajouter la ligne suivante au /etc/samba/smb.conf :

    [global]
    ...
    password hash userPassword schemes = CryptSHA256 CryptSHA512
    

Protéger les champs DNS wpad et isatap

Hint

Les serveurs AD Windows disposent d’une DNS Global Query Block List avec deux entrées :

  • wpad;

  • isatap;

La clef de registre GlobalQueryBlockList liste ces deux enregistrements DNS pour éviter qu’une entité non-autorisée agissant sur le réseau local ne crée ces enregistrement et déroute le trafic réseau. WPAD est notamment configuré par défaut sur les navigateurs Internet Explorer.

Même si les configurations wpad et isatap ne sont pas utilisées, il est quand même important de créer ces deux entrées pour éviter qu’elles puissent être utilisées car dans Samba-AD, il n’y a pas de manière de bloquer la création d’entrées comme avec Microsoft-AD.

Pour en savoir plus :

https://technet.microsoft.com/en-us/library/cc794902%28v=ws.10%29.aspx

samba-tool dns add `hostname -s` `hostname -d` wpad A 127.0.0.1 -P
samba-tool dns add `hostname -s` `hostname -d` isatap A 127.0.0.1 -P

Limiter la plage des ports dynamiques

Par défaut Active Directory utilise une plage dynamique très large pour les appels MS-RPC.

Il est possible et recommandé de restreindre cette plage. Pour cela rajouter la ligne suivante à la section [global] du fichier /etc/samba/smb.conf.

rpc server dynamic port range = 50000-55000
  • ensuite reconfigurer le firewall pour limiter la plage des ports ouverts :

    firewall-cmd --zone=public --remove-port=49152-65535/tcp --permanent
    firewall-cmd --zone=public --add-port=50000-50500/tcp --permanent
    

Limiter les sous-réseaux pouvant faire de la récursion DNS

Auditer les requêtes DNS Bind

Activer l’historisation des requêtes DNS Bind

Dans la configuration suivante on va configurer le service DNS Bind pour historiser toutes les requêtes DNS qui arrivent sur le serveur. Ces requêtes peuvent être ensuite renvoyées vers un aggrégateur de logs.

  • créer /var/log/bind/audit.log et /var/log/bind/requests.log :

mkdir -p /var/log/bind/
touch /var/log/bind/audit.log
touch /var/log/bind/requests.log
hown -R bind /var/log/bind
chmod u+rw /var/log/bind
  • créer un fichier de configuration des logs /etc/named/log.conf que l’on va inclure dans la configuration Bind9 :

logging {
       channel default_syslog {
               // standard syslog logging
               syslog local2;
       };
       channel audit_log {
               // audit log except DNS requests
               file "/var/log/bind/audit.log" size 10m;
               severity debug;
               print-category yes;
               print-severity yes;
               print-time yes;
       };
       channel requetes_log {
               // DNS requests logging
               file "/var/log/bind/requests.log" size 10m;
               severity debug;
               print-time yes;
               print-category yes;
               print-severity yes;
       };
       channel null {
               null;
       };
       category default { default_syslog; };
       category general { audit_log; };
       category security { audit_log; };
       category config { audit_log; };
       category resolver { audit_log; };
       category xfer-in { audit_log; };
       category xfer-out { audit_log; };
       category notify { audit_log; };
       category client { audit_log; };
       category network { audit_log; };
       category update { audit_log; };
       category queries { requetes_log; audit_log; };
       category lame-servers { null; };
     };
  • inclure le fichier de configuration dans /etc/named.conf :

include "/etc/bind/log.conf";
  • activer le log de query DNS :

rndc querylog on
  • redémarrer Bind9 et vérifier que Bind9 est bien démarré :

systemctl restart named

Activer la rotation des journaux d’historisation des requêtes Bind

La volumétrie des journaux d’historisation peut grandit très vite sur ce genre d’audit, donc on met en place une rotation journalière avec une conservation de 7 jours :

  • créer le fichier /etc/logrotate.d/bind

/var/log/bind/audit.log {
 daily
 missingok
 rotate 7
 compress
 delaycompress
 notifempty
 create 644 bind bind
 postrotate
   systemctl reload bind9 > /dev/null
 endscript
}

/var/log/bind/requests.log {
 daily
 missingok
 rotate 7
 compress
 delaycompress
 notifempty
 create 644 bind bind
 postrotate
   systemctl reload bind9 > /dev/null
 endscript
}
  • enclencher la rotation des journaux d’historisation :

logrotate -d /etc/logrotate.d/bind

Désactiver la rotation des journaux d’historisation des requêtes Bind

  • relancer la commande avec l’argument off ;

rndc querylog off

Auditer les accès aux répertoires SYSVOL et NetLogon

  • rajouter dans /etc/samba/smb.conf :

[global]
...
full_audit:failure = none
full_audit:success = pwrite write rename
full_audit:prefix = IP=%I|USER=%u|MACHINE=%m|VOLUME=%S
full_audit:facility = local7
full_audit:priority = NOTICE
  • ensuite dans les sections [sysvol] et [netlogon], rajouter :

[sysvol]
...
vfs objects = full_audit
[netlogon]
...
vfs objects = full_audit