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
documentation:serveur_openssh [2014/03/08 00:18]
gardouille
documentation:serveur_openssh [2015/05/01 13:33] (Version actuelle)
loran42o nettoyage (mediawiki)
Ligne 1: Ligne 1:
 ====== Serveur OpenSSH ====== ====== Serveur OpenSSH ======
- 
  
 ====== Introduction ====== ====== Introduction ======
- 
- 
 Un serveur SSH sert principalement à prendre le contrôle de la  machine sur lequel il est installé depuis un autre poste,le client. ​ Évidemment c'est une définition très réductrice des possibilités ​ offertes par un serveur SSH, je laisse le loisir au lecteur de se  documenter [[http://​fr.wikipedia.org/​wiki/​Secure_Shell|à droite]], [[http://​www.openssh.com/​fr/​index.html|à gauche]] et [[http://​www.google.fr|ailleurs]]. Un serveur SSH sert principalement à prendre le contrôle de la  machine sur lequel il est installé depuis un autre poste,le client. ​ Évidemment c'est une définition très réductrice des possibilités ​ offertes par un serveur SSH, je laisse le loisir au lecteur de se  documenter [[http://​fr.wikipedia.org/​wiki/​Secure_Shell|à droite]], [[http://​www.openssh.com/​fr/​index.html|à gauche]] et [[http://​www.google.fr|ailleurs]].
- 
  
 L'​implémentation libre de référence du protocle SSH est OpenSSH et c'est donc celui-ci que nous allons utiliser. L'​implémentation libre de référence du protocle SSH est OpenSSH et c'est donc celui-ci que nous allons utiliser.
- 
  
 ====== Installation ====== ====== Installation ======
- 
  
 ===== Debian & dérivées ===== ===== Debian & dérivées =====
  
- +<​code>​$ sudo aptitude install openssh-server</​code>​
-<​code>​$ sudo aptitude install openssh-server +
- +
-</​code>​ +
  
 Cette commande permet d'​installer le serveur sshd ainsi que le paquet openssh-blacklist qui est une dépendance requise. Cette commande permet d'​installer le serveur sshd ainsi que le paquet openssh-blacklist qui est une dépendance requise.
- 
  
 Votre serveur SSH est opérationnel ! Votre serveur SSH est opérationnel !
- 
  
 Il ne nous reste plus qu'à affiner sa configuration. Il ne nous reste plus qu'à affiner sa configuration.
- 
  
 ====== Configuration ====== ====== Configuration ======
- 
  
 La configuration du serveur se passe dans le fichier /​etc/​ssh/​sshd_config. La configuration du serveur se passe dans le fichier /​etc/​ssh/​sshd_config.
- 
  
     * port 2222     * port 2222
- 
  
 Si la machine qui sert de serveur SSH est accessible par ce biais  depuis l'​Internet ce peut être une bonne idée de changer le port afin de  limiter les connections non désirées. Si la machine qui sert de serveur SSH est accessible par ce biais  depuis l'​Internet ce peut être une bonne idée de changer le port afin de  limiter les connections non désirées.
- 
  
     * Protocol 2     * Protocol 2
- 
  
 On décide de n'​utiliser que la version 2 du protocole ssh. On décide de n'​utiliser que la version 2 du protocole ssh.
- 
  
     * LoginGraceTime 60     * LoginGraceTime 60
- 
  
 Par défaut le serveur "​drop"​ les connections si l'​utilisateur n'​entre ​ pas son mot de passe au bout de 2 minutes. On réduit ce temps à 1  minute. Attention passer cette valeur à zéro désigne un temps infini! Par défaut le serveur "​drop"​ les connections si l'​utilisateur n'​entre ​ pas son mot de passe au bout de 2 minutes. On réduit ce temps à 1  minute. Attention passer cette valeur à zéro désigne un temps infini!
- 
  
     * PermitRootLogin no     * PermitRootLogin no
- 
  
 On supprime la possibilité de se logger directement avec le compte root. On supprime la possibilité de se logger directement avec le compte root.
- 
  
     * StrictModes yes     * StrictModes yes
- 
  
 Cette option indique au serveur SSH de vérifier que l'​utilisateur ai  bien un compte actif sur cette machine (shell valide, un répertoire ​ $HOME dont il est le propriétaire,​ un dossier ~/.ssh en 700, etc.) avant  de lui autoriser la connection. Cette option indique au serveur SSH de vérifier que l'​utilisateur ai  bien un compte actif sur cette machine (shell valide, un répertoire ​ $HOME dont il est le propriétaire,​ un dossier ~/.ssh en 700, etc.) avant  de lui autoriser la connection.
- 
  
     * MaxAuthTries 3     * MaxAuthTries 3
- 
  
 le serveur va autoriser 3 tentatives d'​identification avant de "​dropper"​ la connection. le serveur va autoriser 3 tentatives d'​identification avant de "​dropper"​ la connection.
- 
  
     * MaxSessions 5     * MaxSessions 5
- 
  
 un seul utilisateur ne pourra ouvrir "​que"​ 5 sessions par connection ​ (si il vous en faut plus d'une regardez déjà du coté de screen ou de  tmux ;) un seul utilisateur ne pourra ouvrir "​que"​ 5 sessions par connection ​ (si il vous en faut plus d'une regardez déjà du coté de screen ou de  tmux ;)
- 
  
     * AllowUsers pierre,​paul,​jack     * AllowUsers pierre,​paul,​jack
- 
  
 seuls les utilisateurs pierre, paul et jack pourrons ouvrir une session sur ce serveur seuls les utilisateurs pierre, paul et jack pourrons ouvrir une session sur ce serveur
  
 +<​code>​cette option peut être remplacée par **AllowGroups mon_groupe_ssh**,​ il faudra alors faire parti du groupe "​mon_groupe_ssh"​ pour ouvrir une session.</​code>​
  
-<​code>​cette option peut être remplacée par **AllowGroups mon_groupe_ssh**,​ il faudra alors faire parti du groupe "​mon_groupe_ssh"​ pour ouvrir une session. +    ​* PermitEmptyPasswords no
- +
-</​code> ​   ​* PermitEmptyPasswords no +
  
 pas de mot de passe , pas de session! pas de mot de passe , pas de session!
- 
  
     * X11Forwarding no     * X11Forwarding no
- 
  
 si il n'y à pas de raison de faire du [[http://​tldp.org/​HOWTO/​XDMCP-HOWTO/​ssh.html|tunneling X11]] alors cette option peut être passée à "​no"​ si il n'y à pas de raison de faire du [[http://​tldp.org/​HOWTO/​XDMCP-HOWTO/​ssh.html|tunneling X11]] alors cette option peut être passée à "​no"​
- 
  
     * UsePrivilegeSeparation yes     * UsePrivilegeSeparation yes
- 
  
 Cette option permet de contraindre le démon sshd à créer un processus ​ non privilégié pour la phase d'​identification puis ensuite un processus ​ qui bénéficie des privilèges liés à l'​identification. Cette option permet de contraindre le démon sshd à créer un processus ​ non privilégié pour la phase d'​identification puis ensuite un processus ​ qui bénéficie des privilèges liés à l'​identification.
- 
  
     * RSAAuthentication yes     * RSAAuthentication yes
Ligne 110: Ligne 73:
     * PasswordAuthentication no     * PasswordAuthentication no
     * UsePAM no     * UsePAM no
- 
  
 en lieu et place d'​identification par mot de passe (cependant ​ transmit dans un tunnel chiffré) nous allons utiliser le système ​ d'​identification par clés publique/​privée basée sur [[http://​fr.wikipedia.org/​wiki/​Rivest_Shamir_Adleman|l'​algorithme de cryptographie asymétrique RSA]]. le fichier qui renferme la liste des clés publiques autorisant une connection est stockée dans ~/​.ssh/​authorized_keys. l'​identification par mot de passe est désactivée. en lieu et place d'​identification par mot de passe (cependant ​ transmit dans un tunnel chiffré) nous allons utiliser le système ​ d'​identification par clés publique/​privée basée sur [[http://​fr.wikipedia.org/​wiki/​Rivest_Shamir_Adleman|l'​algorithme de cryptographie asymétrique RSA]]. le fichier qui renferme la liste des clés publiques autorisant une connection est stockée dans ~/​.ssh/​authorized_keys. l'​identification par mot de passe est désactivée.
  
- +N.B.: [[:​documentation:​fail2ban|Fail2ban]] ​et [[http://​www.sshguard.net/​|SSHGuard]] permettent ​aussi d'​accroître la sécurité de ssh (entre autre).
- ​\\ ​N.B.: [[:​documentation:​fail2ban|Fail2ban]] ​permet ​aussi d'​accroître la sécurité de ssh (entre autre). +
  
 ====== Créer une clé privée ====== ====== Créer une clé privée ======
- 
  
 Dans la configuration nous préconisons de ne permettre que des  connexions par échange de clés. Cela se nomme authentifier,​ car en plus  de m'​identifier je vais présenter un certificat attestant mon identité. Dans la configuration nous préconisons de ne permettre que des  connexions par échange de clés. Cela se nomme authentifier,​ car en plus  de m'​identifier je vais présenter un certificat attestant mon identité.
- 
  
 ===== Clé privée RSA ===== ===== Clé privée RSA =====
- 
  
 Dans une invite de commande (Shell) saisir sous son identité la commande: Dans une invite de commande (Shell) saisir sous son identité la commande:
  
 +<​code>​$ ssh-keygen -t rsa -b 1024 -C "​monlogin@serveur"</​code>​
  
-<​code>​$ ssh-keygen -t rsa -b 1024 -C "​monlogin@serveur"​ 
-</​code>​ 
 <file bash> <file bash>
 Generating public/​private rsa key pair. Generating public/​private rsa key pair.
Ligne 154: Ligne 110:
 +-----------------+ +-----------------+
 $ $
- 
 </​file>​ </​file>​
- 
  
 Cette commande a pour effet de créer 2 fichier dans le répertoire ~/.ssh de votre $HOME: ~/​.ssh/​id_rsa ~/​.ssh/​id_rsa.pub Cette commande a pour effet de créer 2 fichier dans le répertoire ~/.ssh de votre $HOME: ~/​.ssh/​id_rsa ~/​.ssh/​id_rsa.pub