web-dev-qa-db-fra.com

Comment installer un serveur SFTP restreint sur Ubuntu?

J'aimerais savoir comment configurer des comptes d'utilisateurs root, Sudo, sftp-only, qui ne seront pas tenus de s'authentifier par clé publique lors de la connexion. J'aimerais également savoir comment configurer les répertoires de départ des utilisateurs sftp-only où ne peut pas accéder aux autres répertoires du niveau supérieur.

80
Yuya Kobayashi

La meilleure ressource pour vous aider à commencer à configurer un service ssh sur une machine hôte utilisant Ubuntu est OpenSSH Server . Cela vous permettra d'utiliser protocole de transfert de fichiers SSH (également le protocole de transfert de fichiers sécurisé ou SFTP) pour accéder à, transférer et gérer des fichiers sur SSH à partir d'un ordinateur client.

Vue d'ensemble de la solution

  • Sur Ubuntu, vous pouvez configurer un OpenSSH server sur une machine hôte et un utilisateur peut ensuite utiliser sshpour se connecter du client au serveur de l'hôte en utilisant uniquement un nom d'utilisateur et un mot de passe. Notez cependant que l’authentification par clé publique est recommandée.

"Assurez-vous que vous avez un mot de passe fort avant d'installer un serveur SSH (vous pouvez vouloir désactiver complètement les mots de passe )"

  • Les comptes d’utilisateur administratifs créés sur l’hôte auront les privilèges Sudo, pas les comptes d’utilisateur standard créés sur l’hôte.

Installer et configurer votre serveur OpenSSH sur l'hôte

Pour installer un serveur OpenSSH sur l'hôte:

Sudo apt-get install openssh-server

Donnez à votre hôte une adresse IP statique pour pouvoir vous y connecter de manière fiable:

nm-connection-editor

Pour configurer votre serveur OpenSSH , "commencez par faire une sauvegarde de votre fichier sshd_config en le copiant dans votre répertoire personnel ou en créant une copie en lecture seule dans/etc/ssh en effectuant:"

Sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
Sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

"Une fois que vous avez sauvegardé votre fichier sshd_config, vous pouvez apporter des modifications à l'aide de n'importe quel éditeur de texte, par exemple:"

Sudo -H gedit /etc/ssh/sshd_config

Vous devez redémarrer votre service ssh sur l'hôte pour que ces modifications prennent effet

Sudo service ssh restart

Considérez les mesures de sécurité suivantes

  • N'activez pas la redirection de port sur votre routeur: lorsqu'un internaute demande à votre routeur de se connecter au port 22, etc., votre routeur ne se conforme pas, à moins que vous n'ayez activé la redirection de port.
  • Désactiver la connexion root: commentez PermitRootLogin without-password; ajouter PermitRootLogin no au /etc/ssh/sshd_config de l'hôte
  • Choisissez un port SSH non standard: commentez Port 22; ajouter Port <new-port-number> au /etc/ssh/sshd_config de l'hôte
  • Autoriser uniquement les connexions locales: ajoutez ListenAddress 192.168.0.10
  • Autoriser certains utilisateurs sur certains ports: Ajoutez AllowUsers <username>@<IP_address_1> <username>@<IP_address_2> ou AllowUsers <username>@111.222.333.* au /etc/ssh/sshd_config de l'hôte.
  • Autoriser uniquement les connexions à clé RSA (sans mot de passe): ajoutez le contenu de ~/.ssh/id_rsa.pub de chaque client en tant que nouvelle ligne du ~/.ssh/authorized_keys de l'hôte. Ajoutez ensuite PasswordAuthentication no à au /etc/ssh/sshd_config de l'hôte.
  • Tentatives de piratage des attaquants lents: utilisez ufw (pare-feu simple) sur l'hôte pour classer la limite des connexions entrantes à 10/minute: Sudo apt-get install ufw && Sudo ufw limit OpenSSH
  • Pour plus d’idées, voir Garder SSH Access Secure

Si vous pensez que vous devez le faire, activez PasswordAuthenticationdans votre fichier sshd_config.

Recherchez la ligne avec la phrase PasswordAuthenticationet faites-la lire:

PasswordAuthentication yes

Enregistrez votre nouveau fichier sshd_config, puis redémarrez le service sshde l'hôte:

Sudo service ssh restart

Si vous avez besoin d’un accès depuis Internet, configurez la redirection de port sur votre routeur local pour diriger le trafic sur votre serveur OpenSSH.

Notez que le service sshde l'hôte du port écoute dans le fichier sshd_config et configurez votre routeur pour qu'il transfère le trafic TCP/UDP destiné à ce port à l'adresse IP de votre serveur OpenSSH.

Se connecter à l'hôte et se connecter via une ligne de commande ou un terminal

  • Pour ouvrir un terminal Shell SFTP en tant que <username> sur l'hôte, ouvrez un terminal sur le client et entrez la commande suivante en remplaçant 123.123.1.23 par l'adresse IP de l'hôte:

    sftp <username>@123.123.1.23
    
    • Si vous avez modifié le numéro de port que le serveur OpenSSH de l'hôte écoute, procédez comme suit:

      sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      
  • Pour ouvrir un terminal shell SSH en tant que <username> sur l'hôte, ouvrez un terminal sur le client et entrez la commande suivante en remplaçant 123.123.1.23 par l'adresse IP de l'hôte:

    ssh <username>@123.123.1.23
    
    • Si vous avez modifié le numéro de port que le serveur OpenSSH de l'hôte écoute, procédez comme suit:

      ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      

Connectez-vous à l'hôte et connectez-vous via le gestionnaire de fichiers GUI (par exemple, Nautilus) pour obtenir un accès SFTP plus visuel et permettre les transferts de fichiers.

  1. Ouvrez Nautilus sur le client
  2. Sélectionnez Fichier> Se connecter au serveur.
  3. Tapez: SSHname__
  4. Serveur: entrez l'adresse IP de l'hôte
  5. Port: numéro de port spécifié dans le fichier sshd_config de l'hôte.
  6. Nom d'utilisateur: nom d'utilisateur
  7. Mot de passe: mot de passe

enter image description here

En 14.04:

  1. Ouvrez Nautilus sur le client
  2. Connecter au serveur
  3. Tapez: `ssh @ 123.123.1.23:

Créer des comptes d'utilisateur standard sur l'hôte avec des autorisations de fichier limitées en dehors de leur dossier de base

Les autorisations de fichier appropriées en place sur l'hôte garantissent que chaque utilisateur standard (sans privilèges Sudo) que vous créez sur l'hôte possède son répertoire /home/new_user mais dispose d'autorisations limitées avec le reste de la structure de répertoires.

  • Des autorisations limitées ne signifient pas nécessairement qu'ils ne peuvent pas afficher les noms de fichiers et la structure des répertoires.

J'espère que c'est utile!

89
jtd

Étape 1: Installez le paquet OpenSSH s'il n'est pas installé.

Sudo apt-get install openssh-server

Étape 2: Créez un groupe distinct pour les utilisateurs SFTP.

Sudo addgroup ftpaccess

Étape 3: Éditez le fichier /etc/ssh/sshd_config et apportez les modifications ci-dessous. Trouvez et commentez sous la ligne.

#Subsystem sftp /usr/lib/openssh/sftp-server

et ajoutez ces lignes à la fin du fichier.

Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Étape 4: redémarrez le service sshd.

Sudo service ssh restart

Étape 5: Ajoutez un utilisateur avec le groupe ftpaccess et créez un mot de passe.

Sudo adduser paul --ingroup ftpaccess --Shell /usr/sbin/nologin

Étape 6: Modifiez l'autorisation du répertoire de base.

Sudo chown root:root /home/paul

Étape 7: Créez un répertoire dans home pour le téléchargement et modifiez l'autorisation avec le groupe.

Sudo mkdir /home/paul/www
Sudo chown paul:ftpaccess /home/paul/www

C'est tout .

Référez-vous à: Setup SFTP on ubunt

50
ytgmuabm

Limiter l'accès à l'utilisateur

Ici, nous n'autoriserons que l'utilisateur à effectuer un transfert de fichier et nous désactiverons l'accès au terminal.

Pour cela, ajoutez les codes suivants au bas du fichier de configuration.

$ Sudo nano /etc/ssh/sshd_config

Maintenant, le fichier va s'ouvrir et coller le code.

/etc/ssh/sshd_config

. . .

Match User filemg

ForceCommand internal-sftp

PasswordAuthentication yes

ChrootDirectory /var/sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

X11Forwarding no

Remplacez filemg par votre nom d'utilisateur. Puis enregistrez et fermez le fichier.

C'est tout.

Référence: Comment utiliser SFTP dans Ubuntu 16.04

0
Aimal

Denyhosts est un autre outil que ceux mentionnés par "jtd" que vous voudrez peut-être regarder. Il peut bloquer automatiquement les tentatives de connexion répétées sur votre serveur SSH. Il est disponible pour être installé dans les dépôts Ubuntu.

0
firefly2442