Services de partage

Contenu en cours de développement

Objectifs de certification

RHCE EX300

  1. System configuration and management
    • 1.6. Configure a system to authenticate using Kerberos.
  2. NFS
    • 5.1. Provide network shares to specific clients.
    • 5.2. Provide network shares suitable for group collaboration.
    • 5.3. Use Kerberos to control access to NFS network shares.
  3. SMB
    • 6.1. Provide network shares to specific clients.
    • 6.2. Provide network shares suitable for group collaboration.

LPIC 202

  • Sujet 209 : Partage de fichiers
  • 209.1 Configuration d’un serveur SAMBA (valeur : 5)
  • 209.2 Configuration d’un serveur NFS (valeur : 3)
  • Sujet 212 : Sécurité du système
  • 212.2 Gestion des serveurs FTP (valeur : 2)
  • 212.3 Shell sécurisé (SSH) (valeur : 4)

1. Rappels

  • NFS
  • SMB
  • FTP Sécurisé

Mais aussi,

  • Partages d’imprimantes
  • Partages d’écran

SSH

  • SCP
  • SFTP
  • X11 Forwarding

Partage d’écran

  • VNC pur
  • Optimisation VNC
  • SPICE
  • autres

2. FTP

Installation du logiciel VSFTPD

yum -y install vsftpd

Editer le fichier /etc/vsftpd/vsftpd.conf et changer les directives :

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Activer le service

systemctl enable vsftpd
systemctl start vsftpd

Ouverture du pare-feu

firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

Configuration TLS : https://www.digitalocean.com/community/tutorials/how-to-configure-vsftpd-to-use-ssl-tls-on-a-centos-vps

3. SSH

Voir Secure Shell

  • SCP
  • SFTP

4. NFS

Partage dans un environnement local de confiance.

  • Versions 3 et 4
  • Ports TCP/UDP 2049 et bien d’autres à vérifier ou à fixer dans la configuration
  • Portmap / rpcbind : convertit les numéros de programmes RPC en numéros de port logiciel DARPA (TCP 111)

Options d’exportation

Options d’exportation les plus courantes

(source)

  • secure : cette option impose l’utilisation d’un port réservé (inférieur à 1024) comme origine de la requête.
  • rw : exporte le répertoire en lecture / écriture
  • ro : exporte le répertoire en lecture seule
  • async : le serveur NFS va pouvoir répondre que le fichier a été écrit sur le support de stockage, même si cela n’a pas encore été fait. Améliore les performances du serveur.
  • sync : le serveur NFS va écrire physiquement les fichiers sur le support de stockage avant de répondre. Réduit les performances du serveur.

Options liées aux correspondances de UID et de GID (UID et GID mapping)

Le principal problème avec NFS est la correspondance des UID et des GID. Effectivement, l’utilisateur alex peut avoir le UID 1000 sur le client et un UID différent sur le serveur. NFS travaille avec les UID et GID numérique, il va donc par défaut enregistrer sur le serveur que le fichier appartient à l’utilisateur 1000, et non à l’utilisateur alex.

Pour pallier à ces problèmes, NFS fournit des mécanismes pour transformer les UID et les GID.

Le problème se pose également avec le super-utilisateur root qui dispose du UID 0. Pour des raisons de sécurité, NFS va transformer par défaut les fichiers posés par le root vers le UID et le GID du compte anonyme (nobody.nogroup).

  • root_squash : option par défaut. transforme les requètes provenant de l’UID 0 / GID 0 vers le UID et GID du compte anonyme.
  • no_root_squash : ne transforme pas les requètes provenant de l’UID 0 / GID 0. A utiliser avec précaution.
  • all_squash : transforme tous les UID/GID vers le UID/GID de l’utilisateur anonyme.
  • anonuid : permet de spécifier le UID de l’utilisateur anonyme.
  • anongid : permet de spécifier le GID de l’utilisateur anonyme.

4.1. Serveur NFS srv03

Installation du service

# yum groupinstall -y file-server
...

================================================================================
 Package                     Arch      Version                 Repository  Size
================================================================================
Installing for group install "File and Storage Server":
 cifs-utils                  x86_64    6.2-7.el7               base        84 k
 gssproxy                    x86_64    0.4.1-7.el7             base        84 k
 nfs-utils                   x86_64    1:1.3.0-0.21.el7_2      updates    371 k
 nfs4-acl-tools              x86_64    0.3.3-14.el7            base        47 k
 samba                       x86_64    4.2.3-11.el7_2          updates    602 k
 targetcli                   noarch    2.1.fb41-3.el7          base        61 k
 targetd                     noarch    0.7.1-1.el7             base        49 k
Installing for dependencies:
 PyYAML                      x86_64    3.10-11.el7             base       153 k
 cups-libs                   x86_64    1:1.6.3-22.el7          base       355 k
 keyutils                    x86_64    1.5.8-3.el7             base        54 k
 libbasicobjects             x86_64    0.1.1-25.el7            base        24 k
 libcollection               x86_64    0.6.2-25.el7            base        40 k
 libevent                    x86_64    2.0.21-4.el7            base       214 k
 libini_config               x86_64    1.2.0-25.el7            base        59 k
 libldb                      x86_64    1.1.20-1.el7_2.2        updates    123 k
 libnfsidmap                 x86_64    0.25-12.el7             base        46 k
 libnl                       x86_64    1.1.4-3.el7             base       128 k
 libpath_utils               x86_64    0.2.1-25.el7            base        27 k
 libref_array                x86_64    0.1.5-25.el7            base        26 k
 libtalloc                   x86_64    2.1.2-1.el7             base        31 k
 libtdb                      x86_64    1.3.6-2.el7             base        45 k
 libtevent                   x86_64    0.9.25-1.el7            base        32 k
 libtirpc                    x86_64    0.2.4-0.6.el7           base        85 k
 libverto-tevent             x86_64    0.2.5-4.el7             base       9.0 k
 libwbclient                 x86_64    4.2.3-11.el7_2          updates     95 k
 libyaml                     x86_64    0.1.4-11.el7_0          base        55 k
 lvm2-python-libs            x86_64    7:2.02.130-5.el7_2.1    updates    166 k
 pyparsing                   noarch    1.5.6-9.el7             base        94 k
 pytalloc                    x86_64    2.1.2-1.el7             base        13 k
 python-configshell          noarch    1:1.1.fb18-1.el7        base        67 k
 python-ethtool              x86_64    0.8-5.el7               base        33 k
 python-kmod                 x86_64    0.9-4.el7               base        57 k
 python-rtslib               noarch    2.1.fb57-3.el7          base        88 k
 python-setproctitle         x86_64    1.1.6-5.el7             base        15 k
 python-six                  noarch    1.9.0-2.el7             base        29 k
 python-urwid                x86_64    1.1.1-3.el7             base       654 k
 quota                       x86_64    1:4.01-11.el7           base       176 k
 quota-nls                   noarch    1:4.01-11.el7           base        89 k
 rpcbind                     x86_64    0.2.0-33.el7_2          updates     57 k
 samba-client-libs           x86_64    4.2.3-11.el7_2          updates    4.3 M
 samba-common                noarch    4.2.3-11.el7_2          updates    269 k
 samba-common-libs           x86_64    4.2.3-11.el7_2          updates    156 k
 samba-common-tools          x86_64    4.2.3-11.el7_2          updates    443 k
 samba-libs                  x86_64    4.2.3-11.el7_2          updates    259 k
 tcp_wrappers                x86_64    7.6-77.el7              base        78 k
Updating for dependencies:
 device-mapper               x86_64    7:1.02.107-5.el7_2.1    updates    252 k
 device-mapper-event         x86_64    7:1.02.107-5.el7_2.1    updates    167 k
 device-mapper-event-libs    x86_64    7:1.02.107-5.el7_2.1    updates    169 k
 device-mapper-libs          x86_64    7:1.02.107-5.el7_2.1    updates    304 k
 lvm2                        x86_64    7:2.02.130-5.el7_2.1    updates    1.0 M
 lvm2-libs                   x86_64    7:2.02.130-5.el7_2.1    updates    872 k

...

Complete!

Activation du service

# systemctl enable rpcbind nfs-server
# systemctl start rpcbind nfs-server

Création des partages

# mkdir -p /home/tools
# chmod 0777 /home/tools
# mkdir -p /home/guests
# chmod 0777 /home/guests

Adaptation SELinux

# yum install -y setroubleshoot-server
# semanage fcontext -a -t public_content_rw_t "/home/tools(/.*)?"
# semanage fcontext -a -t public_content_rw_t "/home/guests(/.*)?"
# restorecon -R /home/tools
# restorecon -R /home/guests

Adaptation du fichier de configuration /etc/exports

# cat /etc/exports
/home/tools 192.168.22.0/24(rw,no_root_squash)
/home/guests 192.168.22.0/24(rw,no_root_squash)

Activation des points de montage

# exportfs -avr
exporting 192.168.22.0/24:/home/guests
exporting 192.168.22.0/24:/home/tools
# systemctl restart nfs-server

Montages disponibles

# showmount -e localhost
Export list for localhost:
/home/guests 192.168.22.0/24
/home/tools  192.168.22.0/24

Tests

# ls /home/tools/
# touch /home/tools/test.txt
# ls /home/tools/
test.txt

4.2. Client NFS

# yum install -y nfs-utils
# showmount -e srv01
Export list for srv01:
/home/guests 192.168.22.0/24
/home/tools  192.168.22.0/24
# mount -t nfs srv01:/home/tools /mnt
# df -h | grep tools
srv01:/home/tools                      6.7G  985M  5.7G  15% /mnt
# ls /mnt
# touch /mnt/test2.txt
# ls /mnt
test2.txt  test.txt

4.3. Scénario d’exercice

  • Accès à la création d’un dossier partagé en read-write
  • Création d’un disque LVM, montage sur le FS local
  • Création du partage
  • Accès au partage en Linux
  • Accès au partage en Windows
  • https://www.certdepot.net/rhel7-provide-nfs-network-shares-suitable-group-collaboration/
  • https://www.certdepot.net/rhel7-use-kerberos-control-access-nfs-network-shares/

4.5. Pare-feu

firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload

5. Partages Samba Server/client

Ports TCP/UDP 137, 138, 139, 445.

Source : https://www.certdepot.net/rhel7-provide-smb-network-shares/

Fournir un partage SMB

Installation

# yum groupinstall -y "file-server"
# yum install -y samba-client samba-winbind
cat /etc/samba/smb.conf
testparm
# yum install -y setroubleshoot-server
# semanage fcontext -a -t samba_share_t "/shared(/.*)?"
# restorecon -R /shared
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
systemctl enable smb
systemctl enable nmb
systemctl enable winbind
systemctl start smb
systemctl start nmb
systemctl start winbind
# useradd -s /sbin/nologin user01
# smbpasswd -a user01
smbclient //localhost/shared -U user01%pass
mount -t cifs //servername/sharename /mnt/point/ -o username=username,password=password

Cups

  • Client
  • Serveur

6. iSCSI

https://www.certdepot.net/rhel7-configure-iscsi-target-initiator-persistently/

http://www.itzgeek.com/how-tos/linux/centos-how-tos/configure-iscsi-target-initiator-on-centos-7-rhel7.html