en🇬🇧 fr🇫🇷

Traductions disponibles:

en Secured SFTP setup /

Informations sur la page:

Cet article contient 971 mots.
Comptez 5 minutes de temps de lecture

Paramétrage SFTP sécurisé complet

June 11, 2019
sftp linux securite

Objectifs

  • Fournir un accès sécurisé à des ressources sur un serveur Linux via SFTP.

  • Les comptes SFTP n’auront accès qu’à la ressources autorisées.

  • Un compte d’administration pourra gérer les ressources des autres comptes.

Mode de fonctionnement cible utilisateur

Failed to generate image: blockdiag failed: ERROR: 'ImageDraw' object has no attribute 'textsize'

blockdiag {
  default_shape = roundedbox;

   // Set labels to nodes.
   A1 [shape = actor,label = "USER1", numbered = 1];
   B [label = "SSHD", numbered = 2];
   C [label = "SSHD_CONFIG", numbered = 3];
   D [label = "/data/sftp/USER1" , numbered = 4];
   E [label = "UMASK 0007" , numbered = 5];
   F [label = "Dossier chroot par défaut: /upload", numbered = 6];

   // Set labels to edges. (short text only)
   A1 -> B [label = "SFTP"];
   B <- C [label = "read"];
   B -> D [label = "chroot"];
   B -> E [label = "set"];
   B -> F [label = "move"];
   group {
     label = "SSHD Match Group";
     orientation = portrait
     D -> E -> F;
    }
}

Mode de fonctionnement cible administrateur

Failed to generate image: blockdiag failed: ERROR: 'ImageDraw' object has no attribute 'textsize'

blockdiag {
  default_shape = roundedbox;

   // Set labels to nodes.
   A1 [shape = actor,label = "USER1", numbered = 1];
   A2 [shape = actor,label = "USER2", numbered = 1];
   B [label = "SSHD", numbered = 2];
   C [label = "SSHD_CONFIG", numbered = 3];
   D [label = "/data/sftp/%u" , numbered = 4];
   E [label = "UMASK 0007" , numbered = 5];
   F [label = "Dossier chroot par défaut: /upload", numbered = 6];

   // Set labels to edges. (short text only)
   A1 -> B [label = "SFTP"];
   A2 -> B [label = "SFTP"];
   B <- C [label = "read"];
   B -> D [label = "chroot"];
   B -> E [label = "set"];
   B -> F [label = "move"];
   group {
     label = "SSHD Match Group";
     orientation = portrait
     D -> E -> F;
    }
}

Contrôles

Contrôle activation SFTP dans SSHD

[root@server /]# cat /etc/ssh/sshd_config
....
# override default of no subsystems
Subsystem      sftp    /usr/libexec/openssh/sftp-server

Création de l’arborescence

mkdir -p /directory
chmod 700 /directory

Example:

[root@server /]# mkdir -p /data/sftp
[root@server /]# chmod 700 /data

Création du groupe et des users SFTP

groupadd sftp_users // (1)
useradd -g sftp_users -d / -s /sbin/nologin USER1 // (2)
useradd -g sftp_users -d / -s /sbin/nologin USER2 // (3)
useradd -g sftp_users -d / -s /sbin/nologin USER3 // (4)
useradd -g sftp_users -d / -s /sbin/nologin USER4 // (5)
  1. Nom du groupe auquel appartiendront tous les utilisateurs SFTP crées.

  2. -g : Groupe d’appartenance du compte USER1 / -d Chemin du profil / -s shell de connxion ⇒ aucun

  3. -g : Groupe d’appartenance du compte USER2 / -d Chemin du profil / -s shell de connxion ⇒ aucun

  4. -g : Groupe d’appartenance du compte USER3 / -d Chemin du profil / -s shell de connxion ⇒ aucun

  5. -g : Groupe d’appartenance du compte USER4 / -d Chemin du profil / -s shell de connxion ⇒ aucun

Paramétrage du mot de passe des utilisateurs crées

passwd USER1
passwd USER2
passwd USER3
passwd USER4

Controle du fichier contenant les utilisateurs SFTP

cat /etc/passwd
....
USER1:x:1002:1002::/:/sbin/nologin
USER2:x:1003:1002::/:/sbin/nologin
USER3:x:1004:1002::/:/sbin/nologin
USER4:x:1005:1002::/:/sbin/nologin

Création de l’arborescence de stockage des Flux

mkdir -p /data/sftp/USER2/upload // (1)
chown -R root:root /data/sftp/USER2 // (2)
chown -R USER2:sftp_users /data/sftp/USER2/upload // (3)
chmod 770 /data/sftp/USER2/upload // (4)

mkdir -p /data/sftp/USER1/upload // (1)
chown -R root:root /data/sftp/USER1 // (2)
chown -R USER1:sftp_users /data/sftp/USER1/upload // (3)
chmod 770 /data/sftp/USER1/upload // (4)

mkdir -p /data/sftp/USER3/upload // (1)
chown -R root:root /data/sftp/USER3 // (2)
chown -R USER3:sftp_users /data/sftp/USER3/upload // (3)
chmod 770 /data/sftp/USER3/upload // (4)

mkdir -p /data/sftp/USER4/upload // (1)
chown -R root:root /data/sftp/USER4 // (2)
chown -R USER4:sftp_users /data/sftp/USER4/upload // (3)
chmod 770 /data/sftp/USER4/upload // (4)
  1. Création du répertoire personnel de l’utilisateur associé à la société, accessible en R/W pour l’utilisateur.

  2. Affectation des droits à root:root au répertoire dans lequel sera chrooté de l’utilisateur associé à la société.

  3. Affectation des droits à $COMPTE$:sftp_users au répertoire dans lequel l’utilisateur associé à la société pourra lire et écrire.

  4. Affectation des droits au répertoire à l’utilisateur et au groupe d’appartenance dans lequel l’utilisateur associé à la société pourra lire et écrire.

Paramétrage compte SFTP ADM

[root@server sftp]# useradd -g sftp_users -d / -s /sbin/nologin SFTP_ADM // (1)
[root@server sftp]# cat /etc/passwd
...
SFTP_ADM:x:1006:1002::/:/sbin/nologin
  1. -g : Groupe d’appartenance du compte SFTP_ADM / -d Chemin du profil / -s shell de connxion ⇒ aucun

Paramétrage SSHD

[root@server sftp]# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.sav
[root@server sftp]# vi /etc/ssh/sshd_config
# override default of no subsystems
#Subsystem      sftp    /usr/libexec/openssh/sftp-server // (1)
## Add umask to U+G none to Others
Subsystem sftp internal-sftp -u 0007 // (2)
IgnoreRhosts yes
IgnoreUserKnownHosts no
PrintMotd yes
StrictModes yes
PubkeyAuthentication yes
#RSAAuthentication yes
PermitRootLogin no
PermitEmptyPasswords no

# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       PermitTTY no
#       ForceCommand cvs server

# A placer avant le test sur le groupe si le user appartient au groupe sftp_users
# SSHD lit la config dans l'ordre d apparition....
Match User SFTP_ADM // (3)
ChrootDirectory /data/sftp // (4)
## Add umask to U+G none to Others
ForceCommand internal-sftp -u 0007 // (5)

Match Group sftp_users // (6)
ChrootDirectory /data/sftp/%u // (7)
## Add umask to U+G none to Others
ForceCommand internal-sftp -u 0007 -d /upload // (8)
  1. Désactivation server SFTP par défaut

  2. Activation serveur SFTP intégré à sshd

  3. Bloc concernant le compte SFTP_ADM

  4. Chroot du compte SFTP_ADM vers /data/sftp

  5. Obligation du SFTP uniquement et changement du UMASK vers 0007 (correspond à 770)

  6. Bloc concernant les membres du groupe sftp_users

  7. Chroot des membres du groupe sftp_users vers /data/sftp/%u (%u est une variable pour le nom d’utilisateur)

  8. Obligation du SFTP uniquement et changement du UMASK vers 0007 (correspond à 770) et déplacement automatique dans le répertoire upload

Redémarrage SSHD et controles

systemctl restart sshd
systemctl status sshd
Vincent Gourrierec