GNU/Linux >> Tutoriels Linux >  >> Linux

Tout ce que vous devez savoir sur le serveur Linux OpenSSH

La suite OpenSSH est un ensemble d'outils robustes destinés à faciliter le contrôle à distance et le transfert de données entre systèmes en réseau. Il se compose d'un certain nombre d'outils, notamment SSH, SCP, SFTP, SSHD et bien d'autres. Chaque fois que vous utilisez ssh pour vous connecter à une machine distante, vous êtes très susceptible d'exploiter le serveur OpenSSH. Dans ce guide, nous fournirons une discussion approfondie sur le fonctionnement d'OpenSSH et sur la manière de l'utiliser correctement pour répondre aux exigences croissantes en matière de sécurité. Donc, si vous voulez en savoir plus sur les subtilités d'OpenSSH, restez avec nous tout au long de ce guide.

Exploration approfondie du serveur et des services OpenSSH

Le serveur OpenSSH est au cœur de la communication à distance entre les machines Linux et/ou BSD. Certaines de ses fonctionnalités notables incluent le cryptage du trafic, plusieurs méthodes d'authentification puissantes, un tunneling sécurisé et des capacités de configuration sophistiquées. Les sections ci-dessous fournissent une compréhension significative des services fondamentaux et des conseils de sécurité.

Les principes de base d'un serveur OpenSSH

Comme son nom l'indique, OpenSSH utilise le protocole SSH (Secure Shell) pour fournir des installations de connexion et de transfert de données à distance. Il supprime les vulnérabilités de sécurité associées aux méthodes héritées telles que la commande Linux FTP et telnet. OpenSSH facilite l'authentification des utilisateurs légitimes et le chiffrement des connexions distantes.

L'utilitaire principal de la suite OpenSSH responsable de la gestion des connexions à distance est le serveur OpenSSH ou sshd. Il écoute en permanence les demandes entrantes et configure le type de connexion approprié lorsqu'une nouvelle demande arrive.

Par exemple, si un utilisateur utilise le programme client ssh pour communiquer avec le serveur, sshd établira une session de contrôle à distance dès que l'authentification aura réussi. Si l'utilisateur utilise SCP à la place, sshd lancera une session de copie sécurisée.

L'utilisateur final doit choisir le mécanisme de communication approprié pour sa connexion. Ceci est facilité par des outils tels que ssh-add et ssh-keygen. Lorsqu'un utilisateur se connecte avec succès à la machine distante à l'aide de la commande ssh, il est accueilli par une console textuelle. Toutes les commandes saisies sur cette console sont envoyées via un tunnel SSH chiffré pour être exécutées sur la machine distante.

Installation et configuration du serveur OpenSSH

La section suivante explique comment installer le démon de serveur OpenSSH et le configurer. Nous montrerons les meilleures options de configuration pour un usage personnel et à des fins professionnelles. Nous décrirons également les meilleures pratiques pour configurer et renforcer OpenSSH à la fin de cette section.

Comment installer le serveur OpenSSH

- -

La plupart des distributions Linux modernes sont livrées avec OpenSSH déjà installé. Cependant, si vous devez l'installer manuellement, vous pouvez le faire en utilisant la commande simple suivante.

$ sudo apt install openssh-server

Cette commande installera le démon du serveur. Utilisez la commande ci-dessous pour installer le client OpenSSH sur votre système.

$ sudo apt install openssh-client

Comment configurer le serveur OpenSSH

OpenSSH prend en charge un grand nombre d'options de configuration pour contrôler des éléments tels que les paramètres de communication et les modes d'authentification. Le fichier sshd_config spécifie les paramètres de configuration et contient l'adresse des autres fichiers de configuration, y compris une ou plusieurs clé d'hôte fichiers et authorized_keys des dossiers. Il se trouve dans le répertoire /etc/ssh/ répertoire de votre système de fichiers.

Avant de passer à la modification de certains de ses paramètres, nous vous suggérons de sauvegarder la copie actuelle de sshd_config dossier. Vous pouvez le faire en ouvrant votre émulateur de terminal Linux préféré et en lançant la commande suivante.

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

De cette façon, si vous gâchez votre sshd_config fichier, vous pouvez toujours revenir à la configuration d'origine. Maintenant, vous pouvez procéder à la configuration de votre serveur ssh. Avant cela, nous suggérons aux lecteurs de tester leur configuration sshd efficace en utilisant la commande simple ci-dessous.

$ sudo sshd -T

Maintenant que vous avez sauvegardé votre sshd_confi g et vu les paramètres par défaut, il est temps de modifier le fichier de configuration. Nous utiliserons l'éditeur de texte vim pour ouvrir et modifier notre fichier de configuration. Mais, vous pouvez utiliser n'importe quel éditeur de texte Linux que vous voulez.

$ sudo vim /etc/ssh/sshd_config

Comme vous devriez le remarquer, il existe déjà un certain nombre d'options préconfigurées. Cependant, la plupart d'entre eux sont commentés. Vous pouvez les activer en décommentant la ligne particulière qui spécifie le paramètre options. Supprimez le dièse "#" symbole depuis le début d'une ligne pour la décommenter. Nous discutons ci-dessous de certaines des options importantes.

  • AccepterEnv

Cette option spécifie quelles variables d'environnement envoyées par le client peuvent être copiées dans l'environnement distant.

  • Famille d'adresse

Définit la famille d'adresses IP pour l'utilisation de sshd. Les trois options disponibles sont - any, inet et inet6.

  • Autoriser le transfert de l'agent

Cette option définit si le transfert ssh-agent est autorisé ou non.

  • Autoriser le transfert local du flux

Définit si le transfert des sockets de domaine Unix est autorisé ou non.

  • Autoriser le transfert Tcp

Définit si le transfert TCP est autorisé ou non.

  • Autoriser les utilisateurs

Cette option peut définir une liste de noms d'utilisateurs autorisés à accéder en fonction d'un modèle. Tous les noms d'utilisateur sont autorisés par défaut.

  • Méthodes d'authentification

Cette option indique les méthodes d'authentification qu'un utilisateur doit effectuer avant de recevoir l'accès.

  • Fichier de clés autorisées

Cette option spécifie le fichier qui contient les clés publiques pour l'authentification de l'utilisateur.

  • ChallengeResponseAuthentication

Lorsqu'elle est activée, cette option permet l'authentification challenge-réponse.

  • ChrootDirectory

Spécifie le répertoire racine, qui sera présenté aux utilisateurs qui se sont authentifiés avec succès.

  • Chiffres

Cette option définit les chiffrements cryptographiques autorisés par le serveur OpenSSH. Il existe un large éventail d'options disponibles.

  • Compression

Spécifie si la compression est autorisée et, si c'est le cas, à quel stade.

  • Refuser les utilisateurs

Cette option peut être utilisée pour définir une liste de noms d'utilisateurs dont l'accès est refusé en fonction d'un modèle.

  • Forcer la commande

Il peut être utilisé pour forcer l'exécution d'une certaine commande. Cela oblige le serveur à ignorer toute commande fournie par le client ssh et tout ce qui est présent dans ~/.ssh/rc .

  • Ports de passerelle

Cette option définit si les hôtes distants peuvent se connecter aux ports qui ont été redirigés pour le côté client.

  • Authentification GSSAPI

Il est utilisé pour indiquer si l'authentification utilisateur basée sur GSSAPI est autorisée ou non.

  • Authentification basée sur l'hôte

Cette option spécifie si une clé publique présente sur la machine cliente peut authentifier un hôte sur le serveur distant.

  • HostbasedUsesNameFromPacketOnly

Cette option spécifie si le serveur doit effectuer une recherche de nom inversée pour les noms présents dans le /.shosts , ~/.rhosts , et /etc/hosts.equiv fichiers.

  • HostKey

Il peut être utilisé pour définir un fichier contenant une clé d'hôte privée. Les administrateurs peuvent spécifier plusieurs fichiers clés. les valeurs par défaut sont /etc/ssh/ssh_host_dsa_key , /etc/ssh/ssh_host_ecdsa_key , /etc/ssh/ssh_host_ed25519_key et /etc/ssh/ssh_host_rsa_key .

  • Algorithmes HostKey

Cette option définit les algorithmes de clé d'hôte mis à disposition par le serveur ssh. OpenSSH prend en charge un grand nombre d'algorithmes à cette fin.

  • IgnorerRhosts

Indique au serveur d'ignorer les .rhosts et .shosts fichiers pour RhostsRSAAuthentication et HostbasedAuthentication .

  • KbdInteractiveAuthentication

Cette option définit si le serveur autorise ou non l'authentification interactive au clavier.

  • KexAlgorithmes

Il est utilisé pour indiquer les algorithmes disponibles pour l'échange de clés ssh. OpenSSH prend en charge tous les principaux algorithmes d'échange de clés, y compris Diffie Hellman et Elliptic Curves.

  • ÉcouterAdresse

Définit les adresses locales que le démon sshd doit écouter.

  • ConnexionGraceTime

Cette option définit le temps après lequel sshd déconnecte l'utilisateur s'il ne parvient pas à se connecter avec succès.

  • Niveau de journal

Il définit le niveau de verbosité des messages de journal pour sshd.

  • MAC

Cette option est utilisée pour définir les algorithmes MAC (Message Authentication Code) disponibles. Ceux-ci sont utilisés pour protéger l'intégrité des données.

  • MaxAuthTries

Cette option définit le nombre maximum de fois qu'un utilisateur peut tenter de s'authentifier auprès du serveur.

  • Authentification par mot de passe

Définit si un utilisateur distant peut se connecter à l'aide de l'authentification par mot de passe.

  • Autoriser les mots de passe vides

Cette option spécifie si les utilisateurs peuvent utiliser un mot de passe vide pour les connexions à distance.

  • Autoriser la connexion racine

Cette option définit si la connexion root est autorisée ou non.

  • AutoriserTTY

Cette option définit si le pseudo TTY est autorisé ou non.

Décommentez la ligne qui contient l'une des options ci-dessus et définissez la valeur d'option souhaitée. La section ci-dessous illustre certaines pratiques courantes de renforcement de la sécurité pour OpenSSH.

Comment renforcer la sécurité du serveur OpenSSH

Puisque OpenSSH agit comme la porte d'entrée de votre serveur, il est extrêmement important de renforcer sa sécurité. Essayez de maintenir les suggestions suivantes pour rendre la connexion à distance plus sécurisée.

1. Désactiver la connexion racine

Vous ne devez jamais autoriser la connexion root sur votre serveur ssh car une escalade du compte root peut compromettre l'ensemble du serveur. De plus, le compte utilisateur root est constamment ciblé par des utilisateurs malveillants. Il est donc préférable de créer un utilisateur régulier et de lui accorder des autorisations sudo. Vous pouvez désactiver la connexion root en définissant la valeur de PermitRootLogin à non.

PermitRootLogin no

2. Limiter les tentatives d'authentification

Les administrateurs doivent limiter le nombre de tentatives de connexion à partir d'hôtes distants pour empêcher les tentatives de connexion par force brute. La montée de vastes armées de robots a rendu cela plus important que jamais. Utilisez l'option MaxAuthTries pour définir le nombre de tentatives d'authentification autorisées sur votre serveur. De nombreux administrateurs considèrent trois comme une valeur acceptable pour cette option. Cependant, vous pouvez le définir en fonction de vos normes de sécurité.

MaxAuthTries 3

3. Réduire le temps de grâce de connexion

Une autre façon d'empêcher les bots automatisés est de réduire le temps de grâce de connexion. Il s'agit de la durée pendant laquelle un utilisateur doit s'authentifier avec succès après s'être connecté au serveur. Le sshd_config file définit cette valeur en secondes.

LoginGraceTime 20

4. Désactiver l'authentification par mot de passe

Vous ne devez autoriser les utilisateurs à se connecter au serveur qu'à l'aide d'une authentification basée sur une clé. Assurez-vous donc de désactiver le schéma d'authentification par mot de passe. Vous pouvez le faire en définissant la valeur de PasswordAuthentication à non.

PasswordAuthentication no

C'est aussi une bonne idée de désactiver les mots de passe vides. Définissez la valeur du champ PermitEmptyPasswords sur non.

PermitEmptyPasswords no

5. Désactiver les autres méthodes d'authentification

OpenSSH prend en charge certaines méthodes d'authentification supplémentaires autres que l'authentification par clé et par mot de passe. Vous devez les désactiver complètement après avoir configuré l'authentification par clé et désactivé l'authentification par mot de passe.

ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

6. Désactiver le transfert X11

Le transfert X11 est utilisé pour afficher des applications graphiques sur le serveur vers la machine hôte distante. Cependant, il n'est pas nécessaire pour la plupart des serveurs d'entreprise. Alors, désactivez-le si vous n'avez pas besoin de cette fonctionnalité.

X11Forwarding no

Après avoir désactivé le transfert X11, vous devez commenter toutes les références à AcceptEnv . Ajoutez simplement un dièse (#) avant les lignes pour les commenter.

7. Désactiver les options diverses

Désactivez les options suivantes utilisées pour le tunneling et le transfert si vous n'en avez pas besoin pour votre serveur.

AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no

8. Désactiver la bannière SSH

La bannière ssh détaillée est activée par défaut et affiche des informations essentielles sur le serveur. Les pirates peuvent exploiter ces informations pour planifier une attaque sur votre serveur. C'est donc une bonne idée de désactiver la bannière ssh détaillée.

DebianBanner no

Si cette option n'est pas présente dans votre sshd_config fichier, ajoutez-le pour désactiver la bannière.

9. Implémenter la liste d'autorisation d'adresses IP

Dans la plupart des cas, vous accéderez au serveur distant à partir d'une poignée d'adresses IP connues. Vous pouvez créer une adresse IP permettant à la liste d'empêcher d'autres personnes d'accéder à votre serveur. Cela réduit le risque de violation du serveur, même si vos clés privées ont été compromises.

Cependant, vous devez être prudent lors de la mise en œuvre de la liste d'adresses IP autorisées et éviter d'utiliser des adresses dynamiques car elles changent très fréquemment.

Pour définir la liste d'autorisation, recherchez d'abord l'adresse IP que vous utilisez actuellement pour vous connecter au serveur OpenSSH. Vous pouvez le faire en exécutant la commande suivante dans votre terminal.

$ w

Notez l'adresse IP sous l'étiquette "FROM ‘. Nous supposerons un exemple d'adresse IP de 203.0.113.1 pour le reste de ce guide. Maintenant, ouvrez votre fichier de configuration ssh et utilisez le AllowUsers directive de configuration, comme indiqué ci-dessous.

AllowUsers *@203.0.113.1

La ligne ci-dessus limitera tous les utilisateurs distants à une adresse IP sélectionnée. Vous pouvez le remplacer par une plage d'adresses IP à l'aide de la notation CIDR (Classless Inter-Domain Routing), comme illustré ci-dessous.

AllowUsers *@203.0.113.0/24

10. Restreindre le shell des utilisateurs distants

Il est toujours recommandé de limiter les opérations effectuées par l'utilisateur distant. Vous pouvez le faire en restreignant le shell de l'utilisateur distant. OpenSSH permet plusieurs options de configuration pour faciliter cette tâche. Nous allons vous montrer comment restreindre l'accès au shell d'un utilisateur à SFTP uniquement à l'aide de ces options.

Tout d'abord, nous allons créer un nouvel utilisateur appelé mary en utilisant le /usr/sbin/nologin coquille. Cela désactivera les connexions interactives pour cet utilisateur, mais fournira toujours des sessions non interactives pour effectuer des opérations telles que des transferts de fichiers.

$ sudo adduser --shell /usr/sbin/nologin mary

Cette commande crée l'utilisateur mary avec le shell nologin. Vous pouvez également désactiver le shell interactif pour un utilisateur existant en utilisant la commande suivante.

$ sudo usermod --shell /usr/sbin/nologin alex

Si vous essayez de vous connecter en tant qu'un des utilisateurs ci-dessus, votre demande sera rejetée.

$ sudo su alex
This account is currently not available.

Cependant, vous pouvez toujours effectuer des actions qui ne nécessitent pas de shell interactif en utilisant ces comptes.

Ensuite, ouvrez à nouveau votre configuration sshd et utilisez le ForceCommand internal-sftp et ChrootDirectory directive pour créer un utilisateur SFTP uniquement hautement restrictif. Nous allons restreindre l'utilisateur alex pour cet exemple. De plus, il est fortement recommandé d'ajouter tous les blocs Match au bas de votre sshd_config .

Match User alex
ForceCommand internal-sftp
ChrootDirectory /home/alex/

Quittez le fichier de configuration et testez si le fichier de configuration provoque une erreur ou non. Vous pouvez le faire en exécutant la commande suivante dans votre émulateur de terminal Linux.

$ sudo sshd -t

Si tout se passe bien, vous devriez avoir créé une configuration robuste pour l'utilisateur alex. La session de connexion interactive est désactivée pour cet utilisateur et il n'a accès qu'au répertoire d'accueil de son compte.

Fin des pensées

Comme OpenSSH fait partie intégrante de la sécurité de votre serveur distant, il est essentiel d'apprendre comment cela fonctionne. C'est pourquoi nos éditeurs ont présenté diverses informations utiles concernant le serveur OpenSSH dans ce guide. Les rubriques incluent le fonctionnement d'OpenSSH, la lecture et la modification du fichier de configuration et la mise en œuvre des meilleures pratiques de sécurité.

J'espère que nous avons pu vous fournir les informations que vous recherchiez. Ajoutez ce guide à vos favoris pour de futures références. Et n'oubliez pas de laisser un commentaire si vous avez d'autres questions ou suggestions pour rendre ce guide plus utilisable.


Linux
  1. Tout ce que vous devez savoir sur Ubuntu 13.04

  2. Répertoire Linux tmp :tout ce que vous devez savoir

  3. Compression de fichiers Linux :tout ce que vous devez savoir

  4. Autorisations de fichiers Linux :tout ce que vous devez savoir

  5. Swappiness sous Linux :tout ce que vous devez savoir

Tout ce que vous devez savoir sur Black Lab Linux

Tout ce que vous devez savoir sur la distribution Linux Mint

Tout ce que vous devez savoir sur les inodes sous Linux

Tout ce que vous devez savoir sur le lien physique sous Linux

Tout ce que vous devez savoir sur l'UID sous Linux

Tout ce que vous devez savoir sur le répertoire Linux /tmp