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.
Réponses
Trop de publicités?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 utiliserssh
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
; ajouterPermitRootLogin no
de l'hôte/etc/ssh/sshd_config
- Choisissez un port SSH non standard : Commenter
Port 22
; ajouterPort <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>
ouAllowUsers <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 ajoutezPasswordAuthentication 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.
- En général, vous pouvez faire pointer votre navigateur web sur
192.168.1.1
afin de vous connecter à votre routeur et de configurer la redirection de port. Voir Configurer le serveur OpenSSH et le routeur pour accepter une connexion SSH sur Internet ?
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çant123.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çant123.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.
- Ouvrir Nautilus sur le client
- Sélectionnez Fichier > Connexion au serveur
- Type :
SSH
- Serveur : Entrez l'adresse IP de l'hôte
- Port : numéro de port spécifié dans la page d'accueil de l'hôte
sshd_config
fichier - Nom d'utilisateur : username
- Mot de passe : password
En 14.04 :
- Ouvrir Nautilus sur le client
- Se connecter au serveur
- 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 !
É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
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.
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