« Installation et configuration de OpenSSH » : différence entre les versions

Aller à la navigation Aller à la recherche
(12 versions intermédiaires par le même utilisateur non affichées)
Ligne 16 : Ligne 16 :
=Modification du fichier sshd_config=
=Modification du fichier sshd_config=


Le fichier <code>/etc/ssh/sshd_config</code> permet de définir des options agissant sur le daemon sshd. Éditez ce fichier et ajoutez ou modifiez les lignes suivantes si nécessaire :
Le fichier <code>/etc/ssh/sshd_config</code> permet de définir des options agissant sur le daemon sshd. Éditez ce fichier et ajoutez ou modifiez les lignes suivantes si nécessaire. Dans la majorité des cas, la configuration par défaut de debian sera suffisante. Attention cependant, depuis debian jessie, le login root est désactivé par défaut (<code>PermitRootLogin no</code>).
 
Les deux directives auxquelles je touche le plus souvent :
<pre>
<pre>
Port 22
PermitRootLogin without-password
ListenAddress 192.168.51.1
AllowUsers root pfoo jonass
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
ServerKeyBits 1024
LoginGraceTime 120
KeyRegenerationInterval 3600
PermitRootLogin no
IgnoreRhosts yes
IgnoreUserKnownHosts yes
StrictModes yes
X11Forwarding no
PrintMotd yes
SyslogFacility AUTH
LogLevel INFO
RhostsAuthentication no
RhostsRSAAuthentication no
RhostbasedAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 4
AllowUsers pfoo jonass
</pre>
</pre>


Petite revue des options :
* Port : spécifie le port sur lequel le serveur ssh doit écouter. Par défaut, le port 22 est utilisé. Certaines personnes préfèrent utiliser un autre port afin de réduire les risques d'attaques, principalement par brute force. Personnellement, je trouve cela inutile du moment qu'on a bien configuré sshd.
* Port : spécifie le port sur lequel le serveur ssh doit écouter. Par défaut, le port 22 est utilisé. Certaines personnes préfèrent utiliser un autre port afin de réduire les risques d'attaques, principalement par brute force. Personnellement, je trouve cela inutile du moment qu'on a bien configuré sshd.
* ListenAddress : spécifie l'adresse ip sur laquelle le serveur ssh écoute. Par défaut, ssh écoute sur l'ip 0.0.0.0 (il écoutera donc toutes les ips configurée sur la machine).
* ListenAddress : spécifie l'adresse ip sur laquelle le serveur ssh écoute. Par défaut, ssh écoute sur l'ip 0.0.0.0 (il écoutera donc toutes les ips configurée sur la machine).
Ligne 117 : Ligne 97 :


Il faut ensuite générer vos clés publique et privée :
Il faut ensuite générer vos clés publique et privée :
<pre>ssh-keygen -t dsa -b 2048</pre>
<pre>ssh-keygen -t rsa -b 4096</pre>
Ici je génère une clé dsa de 2048 bits. L'algorithme rsa est lui aussi disponible.
Ici je génère une clé rsa de 4096 bits. D'autres algorithmes sont disponibles comme ecdsa et ed25519.<br />
 
Il vous sera posé deux questions. La première vous demandera d'indiquer le chemin où les clés doivent être installés. Vous pouvez laisser le chemin proposé par défaut si vous ne souhaitez utiliser qu'un seul couple de clé. La seconde question vous demande d'entrer la passphrase qui servira à protéger la clé privé. Vous pouvez entrer une passphrase ou non, mais il est recommandé d'en entrer une par mesure de sécurité.
Il vous sera posé deux questions. La première vous demandera d'indiquer le chemin où les clés doivent être installés. Vous pouvez laisser le chemin proposé par défaut si vous ne souhaitez utiliser qu'un seul couple de clé. La seconde question vous demande d'entrer la passphrase qui servira à protéger la clé privé. Vous pouvez entrer une passphrase ou non, mais il est recommandé d'en entrer une par mesure de sécurité.
Une fois les clés générées, il va falloir ajouter la clé publique à la liste des clés autorisées par votre serveur. Pour cela, on utilise la commande ssh-copy-id
Une fois les clés générées, il va falloir ajouter la clé publique à la liste des clés autorisées par votre serveur. Pour cela, on utilise la commande ssh-copy-id
<pre>
<pre>
$ ssh-copy-id -i ~/.ssh/id_dsa.pub plouf@hostname
$ ssh-copy-id -i ~/.ssh/id_rsa.pub plouf@hostname
Password:
Password:
</pre>
</pre>
Ligne 143 : Ligne 122 :
<pre>
<pre>
ssh-agent bash
ssh-agent bash
ssh-add .ssh/id_dsa
ssh-add .ssh/id_rsa
</pre>
</pre>


Ligne 165 : Ligne 144 :
Avec ce fichier, une tentative de connexion de l'utilisateur <code>pfoo</code> sur <code>serveur1.domain.com</code> utilisera la clé <code>~/.ssh/id_rsa_serveur1</code> alors qu'une connexion de l'utilisateur <code>blah</code> sur <code>serveur2.domain.com</code> utilisera la clé <code>~/.ssh/id_rsa_serveur2</code>.
Avec ce fichier, une tentative de connexion de l'utilisateur <code>pfoo</code> sur <code>serveur1.domain.com</code> utilisera la clé <code>~/.ssh/id_rsa_serveur1</code> alors qu'une connexion de l'utilisateur <code>blah</code> sur <code>serveur2.domain.com</code> utilisera la clé <code>~/.ssh/id_rsa_serveur2</code>.


=Directives intéressantes du fichiers sshd_config=
==Limiter l'utilisation==
 
* from=""
* command=""
* no-port-forwarding
* no-X11-forwarding
* no-agent-forwarding
* no-pty
 
exemple :
<pre>
from="votre_ip",no-port-forwarding,no-pty ssh-rsa AAAAB[...]
</pre>
 
=Forcer des utilisateurs à utiliser sftp=


La directive <code>Match</code> permet de définir des actions qui ne s'appliqueront qu'à un groupe d'utilisateur. Si vous voulez par exemple forcer un groupe d'utilisateur à se connecter en sftp uniquement (les utilisateurs de ce groupe ne pourront donc plus se connecter en ssh) vous pouvez ajouter les lignes suivantes à la fin du fichier de configuration de sshd :
La directive <code>Match</code> permet de définir des actions qui ne s'appliqueront qu'à un utilisateur (<code>Match User</code>) ou un groupe d'utilisateur (<code>Match Group</code>). Si vous voulez par exemple forcer un groupe d'utilisateur à se connecter en sftp uniquement (les utilisateurs de ce groupe ne pourront donc plus se connecter en ssh) vous pouvez ajouter les lignes suivantes à la fin du fichier de configuration de sshd :
<pre>
<pre>
Match Group sftponly
Match Group sftponly
Ligne 178 : Ligne 171 :
* aient pour groupe primaire sftponly
* aient pour groupe primaire sftponly
* que leurs répertoires home appartiennent à root et ne puissent être écrit par aucun autre utilisateur ou groupe.
* que leurs répertoires home appartiennent à root et ne puissent être écrit par aucun autre utilisateur ou groupe.
Vous pouvez aussi changer le shell de ces utilisateurs à /bin/false.
Vous pouvez aussi, pour plus de sécurité, changer le shell de ces utilisateurs à <code>/bin/false</code> : <code>chsh -s /bin/false username</code>
 
=Forcer des utilisateurs aux commandes de transfert de fichiers=
Vous pouvez utiliser <code>rssh</code> qui est un shell restreint qui ne permet l'usage que des commandes scp, sftp, cvs, svnserve (Subversion) rdist et rsync.
 
=Renouveler les clés ssh du serveur=
 
<pre>
rm -rf /etc/ssh/ssh_host*
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ''
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ''
</pre>
4 203

modifications

Menu de navigation