87 votes

Comment configurer un serveur SFTP restreint sur Ubuntu ?

Je voudrais savoir comment configurer des comptes d'utilisateurs root, sudo, sftp-only qui n'auront pas besoin d'une authentification par clé publique à la connexion. J'aimerais également savoir comment configurer les répertoires personnels des utilisateurs sftp-only pour qu'ils ne puissent pas accéder aux autres répertoires de niveau supérieur.

98voto

jtd Points 2347

La meilleure ressource pour vous aider à commencer à configurer un service ssh sur une machine hôte utilisant Ubuntu est la suivante Serveur OpenSSH . Cela vous permettra d'utiliser Protocole de transfert de fichiers SSH (également appelé Secure File Transfer Protocol, ou SFTP) pour accéder à des fichiers, les transférer et les gérer via SSH à partir d'un ordinateur client.

Aperçu de la solution

  • Sur Ubuntu, vous pouvez configurer un OpenSSH server sur une machine hôte et un utilisateur peut alors utiliser ssh pour 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 d'avoir un 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'utilisateurs administratifs créés sur l'hôte auront les privilèges sudo, les comptes d'utilisateurs standard créés sur l'hôte ne les auront pas.

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 afin de pouvoir vous y connecter de manière fiable :

nm-connection-editor

Pour configurer votre serveur OpenSSH , "d'abord, faites une sauvegarde de votre fichier sshd_config en le copiant dans votre répertoire personnel, ou en faisant une copie en lecture seule dans /etc/ssh en faisant :"

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 sshd_config vous pouvez apporter des modifications avec 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 changements 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 tiers demande à votre routeur de le connecter au port 22, etc., votre routeur n'obtempère pas, sauf si vous avez activé la redirection de port.
  • Désactiver le login root : Commenter PermitRootLogin without-password ; ajouter PermitRootLogin no de l'hôte /etc/ssh/sshd_config
  • Choisissez un port SSH non standard : Commenter Port 22 ; ajouter Port <new-port-number> de l'hôte /etc/ssh/sshd_config
  • N'autorisez que les connexions locales : Ajouter ListenAddress 192.168.0.10
  • Autoriser certains utilisateurs sur certains ports : Ajouter AllowUsers <username>@<IP_address_1> <username>@<IP_address_2> ou AllowUsers <username>@111.222.333.* de l'hôte /etc/ssh/sshd_config
  • Autoriser uniquement les connexions par clé RSA (sans mot de passe) : Ajoutez le contenu de ~/.ssh/id_rsa.pub de chaque client comme une nouvelle ligne de l'hôte. ~/.ssh/authorized_keys . Puis ajoutez PasswordAuthentication no à celui de l'hôte /etc/ssh/sshd_config
  • Ralentissez les tentatives de piratage des attaquants : Utilisez ufw (uncomplicated firewall) sur l'hôte pour limiter le débit des connexions entrantes à 10/minute : sudo apt-get install ufw && sudo ufw limit OpenSSH
  • Pour d'autres idées, voir Sécuriser l'accès SSH

Si tu sens que tu dois le faire, Enable PasswordAuthentication dans votre sshd_config fichier

Trouvez la ligne avec la phrase PasswordAuthentication et le faire lire :

PasswordAuthentication yes

Enregistrez votre nouvelle sshd_config et ensuite redémarrer l'hôte ssh service :

sudo service ssh restart

Si vous avez besoin d'un accès depuis n'importe où sur Internet, configurez le transfert de port sur votre routeur local pour diriger le trafic vers votre serveur OpenSSH.

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

Se connecter à l'hôte et se connecter via la ligne de commande ou le terminal.

  • Pour ouvrir un terminal SFTP Shell 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 avec l'adresse IP de l'hôte :

    sftp <username>@123.123.1.23
    • Si vous avez modifié le numéro de port sur lequel le serveur OpenSSH de l'hôte écoute, faites-le :

      sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
  • Pour ouvrir un terminal SSH Shell 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 avec l'adresse IP de l'hôte :

    ssh <username>@123.123.1.23
    • Si vous avez modifié le numéro de port sur lequel le serveur OpenSSH de l'hôte écoute, faites-le :

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

Se connecter à l'hôte et se connecter via le gestionnaire de fichiers GUI (par exemple, Nautilus) pour un accès SFTP plus visuel afin de permettre les transferts de fichiers.

  1. Ouvrir Nautilus sur le client
  2. Sélectionnez Fichier > Connexion au serveur
  3. Type : SSH
  4. Serveur : Entrez l'adresse IP de l'hôte
  5. Port : numéro de port spécifié dans la page d'accueil de l'hôte sshd_config fichier
  6. Nom d'utilisateur : username
  7. Mot de passe : password

enter image description here

En 14.04 :

  1. Ouvrir Nautilus sur le client
  2. Se connecter au serveur
  3. Type : `ssh @123.123.1.23 :

Créez des comptes d'utilisateur standard sur l'hôte avec des autorisations de fichiers limitées en dehors de leur dossier personnel.

Les permissions de fichiers 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édera ses propres droits d'accès. /home/new_user mais ont des permissions limitées avec le reste de la structure des répertoires.

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

J'espère que c'est utile !

54voto

ytgmuabm Points 541

Étape 1 : Installer le paquetage OpenSSH s'il n'est pas installé

sudo apt-get install openssh-server

Etape 2 : Créer un groupe séparé pour les utilisateurs SFTP.

sudo addgroup ftpaccess

Étape 3 : Modifier /etc/ssh/sshd_config et apportez les modifications suivantes. Trouvez et commentez la ligne ci-dessous.

#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

Etape 5 : Ajouter un utilisateur avec le groupe ftpaccess et créer un mot de passe.

sudo adduser paul --ingroup ftpaccess --shell /usr/sbin/nologin

Étape 6 : Modifier la permission du répertoire d'origine.

sudo chown root:root /home/paul

Étape 7 : Créez un répertoire à l'intérieur de home pour l'upload et la permission de modification avec le groupe.

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

C'est tout.

Référer : Configurer SFTP sur ubuntu

0voto

firefly2442 Points 121

Denyhosts est un autre outil en plus de ceux mentionnés par "jtd" que vous pourriez vouloir regarder. Il peut bloquer automatiquement les tentatives de connexion répétées à votre serveur SSH. Il est disponible pour installation dans les dépôts Ubuntu.

0voto

Aimal Points 1

Limiter l'accès à l'utilisateur

Ici, nous n'autoriserons l'utilisateur qu'à effectuer des transferts de fichiers 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

Remplacer filemg avec votre nom d'utilisateur. Ensuite, enregistrez et fermez le fichier.

C'est tout.

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

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