logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:reseau:ssh:serveur [30/12/2014 11:35]
paskal
doc:reseau:ssh:serveur [09/02/2021 20:29] (Version actuelle)
captnfab [ssh-server : autoriser les connexions extérieures de manière sécurisée]
Ligne 1: Ligne 1:
-====== ​ssh-server : autoriser les connexions extérieures de manière sécurisée ======+====== ​openssh-server : autoriser les connexions extérieures de manière sécurisée ======
  
   * Objet : Installer un serveur ssh   * Objet : Installer un serveur ssh
-  * Niveau requis : {{tag>avisé}}+  * Niveau requis : {{tag>débutant}}
   * Commentaires : //​Administrer son serveur à distance, établir un tunnel sécurisé pour relayer des ports, etc... //   * Commentaires : //​Administrer son serveur à distance, établir un tunnel sécurisé pour relayer des ports, etc... //
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
-  * Suivi : {{tag>à-compléter à-tester}}+  * Suivi : {{tag>}}
     * Création par [[user>​bendia]] le 07/01/2014     * Création par [[user>​bendia]] le 07/01/2014
-    * Testé par <...> le <...>+    * Testé par [[user>captnfab]] ​le 09/02/2021
   * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=1583 | ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))   * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=1583 | ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
- 
-**Nota :** 
- 
-Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! 
  
 ===== Installation ===== ===== Installation =====
 +Un seul paquet à installer
 +<code root>apt install openssh-server</​code>​
  
-<code root>​apt-get install openssh-server</​code>​+Le serveur SSH est automatiquement démarré après l'​installation du paquet.
  
 ===== Configuration ===== ===== Configuration =====
  
-La configuration par défaut est très bonne. ​\\+La configuration par défaut est très bonne, et il n'est pas conseillé d'y toucher à moins de bien savoir ce que vous faites. 
 Si vous voulez la personnaliser,​ il vous faut éditer le fichier ''/​etc/​ssh/​sshd_config''​ : Si vous voulez la personnaliser,​ il vous faut éditer le fichier ''/​etc/​ssh/​sshd_config''​ :
-<code root>nano /​etc/​ssh/​sshd_config</​code>​+<code root>editor ​/​etc/​ssh/​sshd_config</​code>​ 
 + 
 +Les valeurs de configuration par défaut sont souvent présentées commentées (avec un ''#''​ en début de ligne).
  
 Comme d'​hab',​ plus d'​infos dans le : Comme d'​hab',​ plus d'​infos dans le :
 <code user>man sshd_config</​code>​ <code user>man sshd_config</​code>​
  
-===== Sécurisation =====+Une fois configuré il vous suffit de relancer SSH, à faire en root : 
 +<code root>​service ssh restart</​code>​
  
-Jojo vous recommande de ne pas ouvrir cette connection SSH tel quelle sur le net... il y a des malins qui forcent le passage pour entrer chez vous en essayant des tetra…floppées de mot de passes courants ;-).+===== Sécurité et bonnes pratiques =====
  
-Donc si vous voulez **exporter** une session ​SSH via un PC 18 000 km :-D de chez vous, restez prudents ​et sécurisez-la au maximum(([[doc:​systeme:​securite | De la sécurité...]])) ​et en suivant les conseils suivants+Un serveur ​SSH permet ​priori à un utilisateur extérieur ​de se connecter sur le système. Il y a deux méthodes pour s'​authentifier auprès d'un serveur SSH 
 +  * avec le nom d'​utilisateur ​et le mot de passe d'un compte sur la machine. 
 +  * avec le nom d'​utilisateur ​et une paire de clefs privée/​publique associée à un compte sur la machine
  
-==== Restreindre les connexions à SSH ====+La deuxième méthode est plus sûre que la première.
  
-Il suffit d'éditer le fichier ''​sshd_config''​ en root sur le PC distant. Le fichier ​se trouve dans le dossier ///​etc/​ssh///​ +<note warning>Il est important que n'importe qui ne puisse pas se connecter à votre système !</note>
-<code root>​nano ​/etc/​ssh/​sshd_config</​code> +
-Puis de modifier les arguments suivants (le cas est pris pour une connexion __uniquement par clé__) :+
  
-<code bash>​PermitRootLogin no # évite la connexion root « plus que recommandé » +Le serveur SSH écoute ​sur le port 22 du systèmequi est accessible depuis le réseau local.
-RSAAuthentication yes # active la reconnaissance RSA +
-PubkeyAuthentication yes +
-AuthorizedKeysFile .ssh/​authorized_keys # va uniquement chercher la clé sur ce fichier +
-PasswordAuthentication no # désactive la connexion par mot de passe +
-PermitEmptyPasswords no # désactive les mots de passe vide +
-MaxStartups 1 # limite la connexionnormalement 6 par défaut +
-UsePAM no # désactive la connection par mot de passe +
-AllowUsers votrelogin secondlogin # restreint l'​accès à votre login uniquement +
-DenyUsers test guest admin root snort apache nobody # interdire l'​accès à certains users, pour les paranos... +
-</​code>​+
  
-<​note>​ +  ​Si ce port n'est pas rendu accessible depuis l'extérieur, vous êtes tranquille car seuls les utilisateurs de votre réseaux peuvent essayer de se connecter (mais vous ne pouvez pas joindre votre machine depuis l'extérieur…).  
-**Pour la ligne ''​PasswordAuthentication no''** :\\ +  ​Si au contraire vous avez redirigé un port de votre box vers le port SSH de votre système, alors attention. Il y a des petits malins qui forcent le passage pour entrer chez vous en essayant des tetra…floppées de mots de passe et noms d'​utilisateurs courants ;-). Dans ce dernier cas, vérifiez bien qu'​aucun compte n'a de mot de passe simple, ou mieux encore, bloquez la possibilité de se connecter au serveur avec un mot de passe (voir plus bas).
  
-Dans un premier temps, laisser **"# PasswordAuthentication yes"** pour permettre la première connexion depuis ssh client, c'​est-à-dire pour permettre la connexion par [[doc:reseau:ssh:​client#​par-nom-d-utilisateur-mot-de-passe|nom d'​utilisateur et mot de passe]] lorsque aucune clé n'a été générée.\\ ​+Il peut être intéressant de relire les conseils généraux en matière de [[doc:systeme:securite ​sécurité]] !
  
-Puis lorsque la génération [[doc:​reseau:​ssh:​client#​par-cles-asymetriques|des clés asymétriques]] a été faite et que celles-ci ont été exportées et sont opérationnelles (la "​passphrase"​ uniquement est demandée pour la connexion du client ssh au serveur ssh), on peut alors éditer à nouveau **/​etc/​ssh/​sshd_config** pour mettre **''​PasswordAuthentication no''​**</​note>​+Voici quelques options avec lesquelles il ne faut pas faire de blague.
  
-==== Restreindre la connexion à un utilisateur ​====+==== Connexion par root ====
  
-Moins de monde autorisé ​à se connecter ​via sshmoins de risques il y aura…+Il ne faut absolument pas autoriser root à se connecter ​par mot de passesauf à s'​assurer d'​avoir un mot de passe en béton armé((Au moins 30 caractères,​ majuscules, minuscules, chiffres, symboles, totalement aléatoire et changé régulièrement)).
  
-<code bash>​AllowUsers monuserquipeutseconnecter<​/code> +Vous pouvez autoriser les connexions à root par paire de clefs publique/privée, c'est le comportement par défaut: ''​PermitRootLogin prohibit-password'' ​ou complètement bloquer toutes les connexions: ''​PermitRootLogin no''
-Il est possible de spécifier plusieurs utilisateurs ​ou un masque d'expression régulière,​ je vous laisse lire la doc pour un paramétrage plus fin+
  
-==== Restreindre la connexion à un groupe ​====+==== Connexion par clefs ====
  
-dans le même esprit que le paramètre ci-dessus on peut autoriser directement tous les utilisateurs d'un groupe.+Par défaut, la connexion par clefs est autorisée, c'est très bien et reste sans conséquence si vous n'​utilisez pas cette possibilité''​PubkeyAuthentication yes''​
  
-<code bash>​AllowGroups mongroupadmin<​/code> +Les clefs ssh des utilisateurs sont lues par défaut dans deux fichiers du dossier personnel des utilisateurs : ''​~/.ssh/​authorized_keys''​ et ''​~/​.ssh/​authorized_keys2''​ (déconseillé). 
-Les options qu'il est conseillé de changer dans un premier ​temps sont :+Vous pouvez forcer l'utilisation unique du premier ​fichier avec ''​AuthorizedKeysFile .ssh/​authorized_keys''​.
  
-==== Le port ====+==== Connexion par mot de passe ==== 
 +Si vous voulez interdire la connexion par mot de passe (attention à être sûr de bien pouvoir vous connecter par clef avant…), vous pouvez désactiver cette possibilité avec ''​PasswordAuthentication no''​ et ''​UsePAM no''​
  
-  * Le port **22** # C'est le port par défaut du service SSH +Vérifiez que vous n'autorisez pas la connexion aux comptes dont le mot de passe est vide: ''​PermitEmptyPasswords no''​
-Nous allons le mettre ici à 10010 +
-<code bash>​Port 10010</​code>​+
  
-Une fois configuré il vous suffit ​de relancer SSH, à faire en root : +<​note>​ 
-<code root>​service ssh restart</​code>​+**Pour le bloquage ​de la connexion par mot de passe :**\\ 
  
-==== Contrôler les logs ====+Dans un premier temps, laisser **"# PasswordAuthentication yes"** pour permettre la première connexion depuis ssh client, c'​est-à-dire pour permettre la connexion par [[doc:​reseau:​ssh:​client#​par-nom-d-utilisateur-mot-de-passe|nom d'​utilisateur et mot de passe]] lorsque aucune clé n'a été générée.\\ ​
  
-  * Dans tout les cas, il est important de regarder les logs de temps en temps. Les tentatives de connections infructueuses ​sont consignées dans /var/log/auth.log .+Puis lorsque la génération [[doc:​reseau:​ssh:​client#​par-cles-asymetriques|des clés asymétriques]] a été faite et que celles-ci ont été exportées et sont opérationnelles (la "​passphrase"​ uniquement est demandée pour la connexion du client ssh au serveur ssh), on peut alors éditer à nouveau **/etc/ssh/​sshd_config** pour mettre **''​PasswordAuthentication no''​** 
 +</note>
  
-<code root>cat /​var/​log/​auth.log | grep Invalid</​code>​+==== Restreindre l'​accès à quelques utilisateurs ==== 
 +Plutôt que de laisser possible la connexion à n'​importe quel compte utilisateur (à condition d'​avoir la clef ou le mot de passe), vous pouvez n'​autoriser la connexion que pour certains comptes en spécifiant les noms d'​utilisateur:​
  
-  * logcheck+''​AllowUsers utilisateur1 utilisateur2''​
  
-==== Bien paramétrer son firewall... ====+Ou inversement,​ en interdisant spécifiquement la connexion à certains comptes: 
 +''​DenyUsers test guest admin root snort apache nobody''​
  
-  * [[:doc:​reseau:​iptables]]+Il est possible de spécifier plusieurs utilisateurs ou un masque d'​expression régulière,​ je vous laisse lire la doc pour un paramétrage plus fin.
  
-==== Fail2ban ​====+==== Restreindre la connexion à un groupe ​====
  
-<code root>apt-get install fail2ban</​code>​+Dans le même esprit que le paramètre ci-dessus on peut autoriser directement tous les utilisateurs d'un groupe.
  
-==== Le port knocking ====+<code bash>​AllowGroups mongroupadmin</​code>​
  
-TODO FIXME+==== Le port ==== 
 + 
 +Si votre serveur SSH est exposé sur internet, il peut être pratique pour limiter le bruit (et dans une moindre mesure, augmenter la sécurité),​ de changer le port d'​écoute de celui-ci. 
 + 
 +On peut par exemple changer le port **22** (c'est le port par défaut du service SSH) pour le port 10010 avec la directive ''​Port 10010''​ 
 + 
 +===== Contrôler les logs ===== 
 + 
 +Il est important de regarder les logs de temps en temps. Les tentatives de connections infructueuses sont consignées dans ''/​var/​log/​auth.log''​. 
 + 
 +<code root>​grep Invalid /​var/​log/​auth.log</​code>​ 
 + 
 +Un outil comme **logcheck** peut être utile pour envoyer systématiquement les logs par email.
  
 ===== Astuces ===== ===== Astuces =====
  
 ==== Accès depuis l'​extérieur ==== ==== Accès depuis l'​extérieur ====
-  * Rediriger ​le port 22 de la freebox/​livebox/​whateverbox vers votre machine pour vous connecter chez vous depuis l'​extérieur +Rediriger ​un port (22 par exemple) ​de la freebox/​livebox/​whateverbox vers le port ssh de votre machine pour vous connecter chez vous depuis l'​extérieur. 
-TODO FIXME+ 
 +==== Fail2ban ==== 
 + 
 +fail2ban est un utilitaire permettant de bannir automatiquement (pendant une durée configurable) les ip ayant échoué plusieurs fois d'​affilée à se connecter. 
 +<code root>apt install fail2ban</​code>​
  
 ==== Serveur de fichier sftp ==== ==== Serveur de fichier sftp ====
-  * Configuration ​de SSH comme serveur ​de fichier. + 
-TODO FIXME+Pour limiter SSH au partage de fichiers, voir [[:​doc:​reseau:​ssh:​tp-sftp-via-openssh-server|Configuration ​d'​OpenSSH ​comme serveur ​SFTP]]
doc/reseau/ssh/serveur.1419935756.txt.gz · Dernière modification: 30/12/2014 11:35 par paskal

Pied de page des forums

Propulsé par FluxBB