Logo Khaganat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:ssh [2025/10/23 08:52] – [Paramètres de session et de connexion] J'avais oublié, avec sftp ça va être violent ce paramètre zatalyzfr:ssh [2025/11/16 10:12] (Version actuelle) – [SFTP] C'est un détail mais je viens d'y passer une heure zatalyz
Ligne 355: Ligne 355:
   AcceptEnv LANG LC_*   AcceptEnv LANG LC_*
 Cela permet à l'utilisateur de passer avec ses propres variables d'environnement mais uniquement pour la langue. ''AcceptEnv'' est à manier avec précaution, mais appliqué ici uniquement à la question linguistique, cela ne devrait pas être un problème. Cela permet à l'utilisateur de passer avec ses propres variables d'environnement mais uniquement pour la langue. ''AcceptEnv'' est à manier avec précaution, mais appliqué ici uniquement à la question linguistique, cela ne devrait pas être un problème.
- 
-  Subsystem sftp /usr/lib/openssh/sftp-server 
-Appelle un daemon pour gérer certains aspects, ici sftp. À ne laisser que si sftp est réellement utilisé et bien paramétré, sinon cela peut ouvrir des failles. 
  
 === Redirections et accès à distance === === Redirections et accès à distance ===
Ligne 371: Ligne 368:
   PermitTunnel no   PermitTunnel no
 Là aussi l'option par défaut est en théorie suffisante, mais autant la renforcer. Dans de rares cas, on a besoin de faire des tunnels, mais alors mieux vaut les permettre explicitement avec un ''Match Group''/''Match User''. Là aussi l'option par défaut est en théorie suffisante, mais autant la renforcer. Dans de rares cas, on a besoin de faire des tunnels, mais alors mieux vaut les permettre explicitement avec un ''Match Group''/''Match User''.
 +
 +=== SFTP ===
 +SFTP est un cas particulier. Ce protocole est très utile pour transférer des fichiers dans un environnement plus simple à sécuriser. La plupart des serveurs n'en ont cependant pas besoin : on utilise rsync, pas besoin de plus. 
 +
 +Donc, cette partie est totalement facultative ! 
 +
 +Dans le cas où vous voulez permettre à des utilisatrices de manipuler des fichiers et dossiers dans leur home, il faudra les déclarer dans le groupe "sftpuser", puis ajouter ceci à ''sshd_config.d/sftp.config''
 +<code>
 +Subsystem sftp internal-sftp -l INFO -f AUTH
 +
 +Match Group wheel
 +    ChrootDirectory none
 +    ForceCommand none
 +    PermitTTY yes
 +    PermitUserRC yes
 +    
 +Match Group sftpusers
 +    ChrootDirectory /home/%u
 +    ForceCommand internal-sftp -d /sftp
 +    PermitTTY no
 +    PermitUserRC no
 +    # Autoriser une connexion plus longue pour permettre de transférer des fichiers 
 +    ClientAliveInterval 15m
 +    ClientAliveCountMax 3
 +</code>
 +  * ''Subsystem sftp internal-sftp'' permet d'utiliser sftp via le module interne (directement fourni par SSH). Il faut cependant explicitement demander les logs lors de son usage (ici ''-l INFO -f AUTH'', comme les logs par défaut de SSH). 
 +  * L'ordre des "Match Group" est primordial. Ici, on s'assure que les sysadmins (wheel) continueront à avoir accès à un vrai shell en se connectant, même si elles font aussi partie du groupe ''sftpusers''
 +  * ''ChrootDirectory'' indique "où" le sous-sytème sftp est chrooté. Cela permet d'isoler les utilisatrices lors de leur connexion, et de leur éviter de bidouiller chez la voisine.
 +  * ''ForceCommand internal-sftp'' : lors de la connexion, la seule chose autorisée est l'usage de sftp. Et c'est pourquoi on précise "none" pour les sysadmin !
 +    * J'ajoute la commande ''-d /sftp'' qui force en plus l'utilisatrice à atterrir dans le sous-dossier ''sftp''. Voir le détail de pourquoi plus bas !
 +  * ''PermitTTY'' s'assurer explicitement de l'accès (ou non) au shell. Bien qu'il y aie peu de risque de contourner sftp, mais je suis parano. On ne donne pas d'accès au shell complet "comme ça", c'est ce qui permet par mal d'escalade de privilèges, dès qu'il y a une faille dans un logiciel.
 +  * ''PermitUserRC'' : à ''no'' pour nos sftpusers ; cela permet d'utiliser ''~/.ssh/rc'', lequel permet de lancer des commandes automatiques à la connexion. Une faille évidente si on le laisse libre d'accès.
 +  * On permet enfin une connexion plus longues avec ''ClientAliveInterval'' et ''ClientAliveCountMax'' sinon les gens se feront déconnecter en essayant d'envoyer leurs photos depuis une vieille connexion 2G pourrie. 
 +
 +À noter : le dossier paramétré par ChrootDirectory doit être possédé par root pour que tout fonctionne. L'utilisatrice n'auras pas la possibilité d'ajouter des dossiers/fichiers à la racine de son home (pas de ''/home/gudule/modossier'' par exemple) mais le pourra dans les sous-dossiers (''/home/gudule/web/monsite'' et ''/home/gudule/modossier''. Comme cela peut être un peu déstabilisant, on peut aussi directement forcer l'utilisatrice à être dans un sous-dossier (''/home/gudule/sftp/'', dont en théorie elle ne pourra pas sortir. Et elle ne pourra pas non plus bidouiller les fichiers cachés du home que Linux aime lire et interpréter. En soit, c'est donc aussi simple de forcer Gudule à rester dans ce dossier "sftp"
 +
 +Un autre point important : ajoutez sftpusers à la directive ''AllowGroups'' sinon... ça ne marchera pas. 
 +  AllowGroups wheel sftpusers
 +
 +
 +Voir aussi [[https://man.openbsd.org/sshd_config.5#Subsystem]].
  
 === Exemple de fichier sshd_config === === Exemple de fichier sshd_config ===
Ligne 414: Ligne 452:
 PermitUserEnvironment no PermitUserEnvironment no
 AcceptEnv LANG LC_* AcceptEnv LANG LC_*
-# Seulement si sftp est actif et bien paramétré 
-# Subsystem sftp /usr/lib/openssh/sftp-server 
  
 # Redirections et accès à distance # Redirections et accès à distance
Ligne 422: Ligne 458:
 GatewayPorts no GatewayPorts no
 PermitTunnel no PermitTunnel no
 +
 +# Uniquement si on permet sftp !
 +Subsystem sftp internal-sftp -l INFO -f AUTH
 +
 +Match Group wheel
 +    ChrootDirectory none
 +    ForceCommand none
 +    PermitTTY yes
 +    PermitUserRC yes
 +    
 +Match Group sftpusers
 +    ChrootDirectory /home/%u
 +    ForceCommand internal-sftp -d /sftp
 +    PermitTTY no
 +    PermitUserRC no
 +    # Autoriser une connexion plus longue pour permettre de transférer des fichiers 
 +    ClientAliveInterval 15m
 +    ClientAliveCountMax 3
 </code> </code>
  
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/ssh.1761209535.txt.gz · Dernière modification : de zatalyz

Licences Mentions légales Accueil du site Contact Inclusion