Sécurisation du serveur de fichiers et d'impression

Profils de sécurité de Samba

Les deux niveaux de sécurité disponibles pour le protocole réseau CIFS (Common Internet Filesystem) sont user-level et share-level. La mise en œuvre des options de sécurité de Samba permet plus de flexibilité en fournissant quatre possibilités de sécurité au niveau de l'utilisateur plus une au niveau du partage :

  • security = user: requires clients to supply a username and password to connect to shares. Samba user accounts are separate from system accounts, but the libpam-winbind package will sync system users and passwords with the Samba user database.

  • security = domain: permet au serveur Samba d'apparaître aux clients Windows comme un contrôleur principal de domaine (PDC : Primary Domain Controller), un contrôleur de domaines de sauvegarde (BDC : Backup Domain Controller) ou un serveur membre du domaine (DMS : Domain Member Server). Consultez En tant que contrôleur de domaine pour plus d'informations.

  • security = ADS: permet au serveur Samba de joindre un domaine Active Directory. Consultez Integration Active Directory pour plus de détails.

  • security = server: est une option qui date de l'époque où Samba ne pouvait pas devenir un serveur membre et ne devait pas être utilisé en raison de plusieurs problèmes de sécurité. Consultez la section sécurité du serveur (en) du guide Samba pour plus de détails.

  • security= share : permet aux clients de se connecter aux partages sans fournir de nom d'utilisateur ni de mot de passe.

Le choix du mode de sécurité dépendra de votre environnement et de ce que vous attendez de votre serveur Samba.

Security = User

Cette section permet de reconfigurer le serveur de fichiers et d'impression Samba défini dans Serveur de fichiers et dans Serveur d'impression de façon à imposer une identification.

First, install the libpam-winbind package which will sync the system users to the Samba user database:

sudo apt install libpam-winbind

If you chose the Samba Server task during installation libpam-winbind is already installed.

Modifiez la section [share] du fichier /etc/samba/smb.conf :

    guest ok = no

Pour terminer, redémarrez Samba afin que les nouveaux paramètres soient pris en compte :

sudo systemctl restart smbd.service nmbd.service

Vous devrez désormais fournir un nom d'utilisateur et un mot de passe quand vous vous connecterez à un dossier ou une imprimante partagée.

Si vous connectez un lecteur réseau au dossier partagé, vous pouvez cocher la case « Reconnecter au démarrage ». Vous n'aurez alors à saisir le nom d'utilisateur et le mot de passe qu'une seule fois, du moins jusqu'au changement de mot de passe.

Sécurité des Partages

Plusieurs options sont disponibles pour accroître la sécurité de chaque dossier partagé. En utilisant l'exemple [share], cette section couvre les options les plus fréquentes.

Groupes

Les Groupes définissent un ensemble d'ordinateurs ou d'utilisateurs qui ont un niveau d'accès commun à des ressources réseau particulières, et offrent une certaine granularité dans le contrôle d'accès à de telles ressources. Par exemple, si un groupe qa est défini et contient les utilisateurs freda, danika, et rob, et un second groupe support est défini et contient les utilisateurs danika, jeremy et vincent, alors les ressources réseau configurées pour autoriser l'accès au groupe qa seront accessibles à freda, danika et rob, mais pas à jeremy ou à vincent. Comme l'utilisateur danika appartient aux deux groupes qa et support, elle aura accès aux ressources configurées comme accessibles par les deux groupes, tandis que tous les autres utilisateurs n'auront accès qu'aux ressources autorisant explicitement le groupe dont ils font partie.

Par défaut, Samba inspecte les groupes système locaux définis dans /etc/group pour déterminer quels utilisateurs appartiennent à quels groupes. Pour de plus amples informations sur l'ajout et la suppression des utilisateurs dans les groupes, consultez Ajout et suppression d'utilisateurs.

Pour définir un groupe dans le fichier de configuration de Samba, /etc/samba/smb.conf, vous devez le préfacer avec le symbole « @ ». Par exemple, si vous souhaitez définir un groupe nommé sysadmin dans une section spécifique de /etc/samba/smb.conf, vous devrez saisir @sysadmin.

Droits d'accès aux fichiers

Les permissions sur les fichiers définissent précisément les droits d'un ordinateur ou d'un utilisateur sur un dossier particulier, un fichier ou un groupe de fichiers. De telles permissions peuvent être définies en modifiant le fichier /etc/samba/smb.conf et en précisant les permissions sur un dossier partagé.

Par exemple, si vous avez défini un partage Samba appelé share et que vous souhaitez donner des droits en lecture seule à un groupe appelé qa, ainsi que des droits en écriture au groupe sysadmin et à l'utilisateur vincent, vous devez modifier le fichier /etc/samba/smb.conf et ajouter les lignes suivantes dans la section [share] :

    read list = @qa
    write list = @sysadmin, vincent

Un autre type de permissions dans Samba consiste à donner des permissions administratives sur une ressource partagée spécifique. Les utilisateurs ayant des permissions administratives sur une ressource peuvent lire, écrire ou modifier toutes les informations contenues dans celle-ci.

Par exemple, si vous voulez donner à l'utilisateur melissa des permissions administratives sur le partage share, vous devez modifier le fichier /etc/samba/smb.conf et ajouter les lignes suivantes à la section [share] :

    admin users = melissa

Après avoir modifié/etc/samba/smb.conf, redémarrez Samba pour que les nouveaux paramètres soient pris en compte :

sudo systemctl restart smbd.service nmbd.service

Pour que read list et write list fonctionnent, le mode de sécurité de Samba ne doit pas être réglé sur security = share

Maintenant que Samba a été configuré pour définir quels groupes ont accès au répertoire partagé, les permissions du système de fichier doivent être mises à jour.

Les permissions de fichiers traditionnelles de Linux ne correspondent pas exactement aux listes de contrôle d'accès (ACL) de Windows NT. Heureusement, les ACL POSIX sont disponibles sur les serveurs Ubuntu, permettant un contrôle plus fin des droits. Par exemple, pour activer les ACL sur un système de fichiers EXT3 /srv, il faut éditer le fichier /etc/fstab et ajouter l'option acl :

UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv  ext3    noatime,relatime,acl 0       1

Puis remontez la partition :

sudo mount -v -o remount /srv

L'exemple ci-dessus suppose que /srv est monté sur une partition dédiée. Si /srv, ou tout autre endroit où vous auriez configuré votre répertoire partagé, appartient à la partition /, un redémarrage de la machine pourrait être nécessaire.

Conformément à la configuration Samba ci-dessus, le groupe sysadmin aura les droits en lecture, écriture et exécution sur /srv/samba/share, le groupe qa aura les droits en lecture et exécution, et les fichiers auront pour propriétaire l'utilisateur melissa. Saisissez dans un terminal :

sudo chown -R melissa /srv/samba/share/
sudo chgrp -R sysadmin /srv/samba/share/
sudo setfacl -R -m g:qa:rx /srv/samba/share/

La commande setfacl ci-dessus donne les droits execute à tous les fichiers du répertoire /srv/samba/share, que vous pouvez désirer ou non.

Maintenant, à partir d'un client Windows, vous devriez remarquer la mise en œuvre des nouvelles permissions sur les fichiers. Consultez les pages de manuel acl et setfacl pour plus d'informations sur la gestion des ACLs POSIX.

Profil AppArmor pour Samba

Ubuntu est fourni avec le module de sécurité AppArmor, qui prévoit des contrôles d'accès obligatoires. Le profil par défaut d'AppArmor pour Samba doit être adapté à votre configuration. Pour plus de détails sur AppArmor voir AppArmor.

Il existe des profils par défaut pour les démons Samba /usr/sbin/smbd et /usr/sbin/nmbd. Ces profils font partie du paquet apparmor-profiles. Pour installer ce paquet, saisissez ceci dans un terminal :

sudo apt install apparmor-profiles apparmor-utils

Ce paquet contient des profils pour plusieurs autres exécutables.

Par défaut les profils pour smbd et nmbd sont dans le mode complain pour permettre à Samba de travailler sans modifier le profil et de journaliser les erreurs seulement. Pour placer le profil smbd dans le mode enforce et ainsi faire fonctionner Samba comme prévu, le profil doit être modifié de façon à tenir compte de tous les répertoires partagés.

Modifiez /etc/apparmor.d/usr.sbin.smbd en ajoutant les informations dans [share] à partir de l'exemple du serveur de fichiers :

  /srv/samba/share/ r,
  /srv/samba/share/** rwkix,

Maintenant, placez le profil dans enforce et rechargez-le :

sudo aa-enforce /usr/sbin/smbd
cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r

Vous devriez pouvoir lire, écrire et exécuter les fichiers dans le dossier partagé et l'exécutable smbd n'aura accès qu'aux fichiers et dossiers configurés. Assurez vous d'avoir ajouté une entrée pour chaque dossier que vous voulez partager avec Samba. Quoi qu'il en soit, toutes les erreurs seront écrites dans le fichier journal /var/log/syslog.

Ressources