113 votes

Autoriser SFTP mais interdire SSH ?

Je lance une toute petite société d'hébergement pour quelques amis et petits clients, rien d'important.

Je veux donner à mes "clients" le droit de gérer leurs fichiers sur le serveur. Je déteste le FTP car il n'est pas sécurisé et il est à mon avis obsolète.

J'aimerais donc permettre à mes utilisateurs de se connecter via SFTP mais ne pas leur permettre de se connecter via SSH. (Je sais, je sais, SFTP utilise SSH). Mais je me demandais juste si c'était possible ?

Ainsi, je n'aurais pas à installer un service FTP sur le serveur et tout serait génial !

-1voto

Aaron Kangas Points 522

Vous pouvez modifier /etc/passwd et donner à cet utilisateur un faux Shell afin qu'il ne puisse pas utiliser ssh.

-1voto

Hudson Santos Points 34

N'oubliez pas de trouver la ligne UsePAM yes et le commenter :

#UsePAM yes

Sans cette désactivation, votre serveur SSH se bloquerait lors du rechargement/redémarrage. Étant donné que vous n'avez pas besoin des fonctions sophistiquées de PAM, cela ne pose aucun problème.

-1voto

bjornson Points 632

C'est la façon dont j'ai configuré SFTP et désactivé SSH.

veuillez faire ce qui suit :

  1. D'abord créer l'utilisateur sftp et le groupe sftp

  2. Créez un répertoire séparé comme racine pour les fichiers SFTP : sudo mkdir -p /home/sftpdir

  3. Avoir un fichier sshd_config testé qui autorise SSH sur le port 22 mais aussi SFTP sur un port aléatoire pour des raisons de sécurité.

#$OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Port 38250 Port 22 PasswordAuthentication no 
ChallengeResponseAuthentication no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'. UsePAM yes X11Forwarding yes PrintMotd no
# Allow client to pass locale environment variables AcceptEnv LANG LC_*
#DenyUsers sftpuser

# override default of no subsystems Subsystem       sftp    internal-sftp 
Match group sftp 
Match User sftpuser 
Match LocalPort 38250 
ForceCommand internal-sftp 
ChrootDirectory /home/sftpdir 
PermitTunnel no 
AllowAgentForwarding no 
X11Forwarding no    
AllowTcpForwarding no
  1. Redémarrer et vérifier l'état du service sshd

    sudo service sshd restart
    
    service sshd status
  2. Créer un fichier Shell. Ajoutez une exécution pour renvoyer un message de notification

    sudo touch /bin/sftponly
    echo -e '#!/bin/sh\necho "This account is limited to SFTP access only."' | sudo tee -a  /bin/sftponly
  3. Donner les permissions d'exécution et ajouter au fichier shells

    sudo chmod a+x /bin/sftponly
    echo "/bin/sftponly" | sudo tee -a /etc/shells
  4. enfin Test et vous ne devriez pas être en mesure de vous connecter.

  5. Un modèle de client SFTP à utiliser avec une clé SSH et une verbosité de base :

    sftp -v -oPort=$RANDOM_PORT -i ~/.ssh/$SSH_KEY.pem sftpuser@$HOST

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X