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; } }
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
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)
Nom du groupe auquel appartiendront tous les utilisateurs SFTP crées.
-g : Groupe d’appartenance du compte USER1 / -d Chemin du profil / -s shell de connxion ⇒ aucun
-g : Groupe d’appartenance du compte USER2 / -d Chemin du profil / -s shell de connxion ⇒ aucun
-g : Groupe d’appartenance du compte USER3 / -d Chemin du profil / -s shell de connxion ⇒ aucun
-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)
Création du répertoire personnel de l’utilisateur associé à la société, accessible en R/W pour l’utilisateur.
Affectation des droits à root:root au répertoire dans lequel sera chrooté de l’utilisateur associé à la société.
Affectation des droits à $COMPTE$:sftp_users au répertoire dans lequel l’utilisateur associé à la société pourra lire et écrire.
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
-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)
Désactivation server SFTP par défaut
Activation serveur SFTP intégré à sshd
Bloc concernant le compte SFTP_ADM
Chroot du compte SFTP_ADM vers /data/sftp
Obligation du SFTP uniquement et changement du UMASK vers 0007 (correspond à 770)
Bloc concernant les membres du groupe sftp_users
Chroot des membres du groupe sftp_users vers /data/sftp/%u (%u est une variable pour le nom d’utilisateur)
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
Auteur:
