Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
fr:ssh [2018/03/22 10:08] – [Paramétrer sshd_config] merlin8282 | fr:ssh [2024/06/23 20:28] – Memo sur l'ajout d'user et les bonnes pratiques zatalyz | ||
---|---|---|---|
Ligne 14: | Ligne 14: | ||
==== Générer une clé ==== | ==== Générer une clé ==== | ||
Ouvrez une console et générez une paire de clefs : | Ouvrez une console et générez une paire de clefs : | ||
- | ssh-keygen -t rsa -b 4096 | + | ssh-keygen -t ed25519 |
Ou | Ou | ||
- | ssh-keygen -t ecdsa -b 521 | + | ssh-keygen |
Vous devriez avoir le texte suivant qui s' | Vous devriez avoir le texte suivant qui s' | ||
- | < | + | < |
- | Enter file in which to save the key (/ | + | Enter file in which to save the key (/ |
Enter passphrase (empty for no passphrase): | Enter passphrase (empty for no passphrase): | ||
Enter same passphrase again: | Enter same passphrase again: | ||
- | Your identification has been saved in / | + | Your identification has been saved in / |
- | Your public key has been saved in / | + | Your public key has been saved in / |
+ | The key fingerprint is: | ||
+ | SHA256: | ||
+ | The key's randomart image is: | ||
+ | +--[ED25519 256]--+ | ||
+ | | =o | | ||
+ | | | ||
+ | | . o.. | | ||
+ | | . ..*. | | ||
+ | | . S . .o+o.| | ||
+ | | + o oo =oB| | ||
+ | | . + o .E.BO| | ||
+ | | . o ...%+=| | ||
+ | | . .*=B+| | ||
+ | +----[SHA256]-----+</ | ||
Si vous n' | Si vous n' | ||
- | Pour la " | + | Pour la " |
- | Une clef publique/ | + | Une clef publique/ |
- | L' | + | L' |
+ | L' | ||
+ | ssh-keygen -p -o -f chemin/ | ||
+ | === RSA, ECDSA ou Ed25519 ? === | ||
+ | Il existe différents protocoles pour générer une clé, en suivant la syntaxe '' | ||
+ | * DSA n'est plus accepté partout car considéré comme insuffisamment sûr. | ||
+ | * RSA est la référence par défaut, acceptée sur tous les serveurs. Cependant, afin de rester sûr il est nécessaire de générer des clés très grandes et sa conception fait que nous atteignons actuellement une limite de taille, [[https:// | ||
+ | * ECDSA est une variante de DSA qui, contrairement à ce dernier, repose sur l' | ||
+ | * Ed25519, aussi appelé EDDSA, est, tout comme ECDSA, une variante de DSA utilisant les courbes elliptiques. La différence avec ECDSA est l' | ||
- | + | Actuellement (octobre 2018) les seules clés considérées comme fiables sont les clés Ed25519, ECDSA ou RSA d'une taille au moins égale | |
- | + | ||
- | + | ||
- | === RSA ou ECDSA ? === | + | |
- | Il existe différents protocoles pour générer | + | |
- | + | ||
- | * DSA n'est plus accepté partout, c'est vraiment ancien. | + | |
- | * ECDSA est théoriquement accepté partout à présent et son empreinte est moins longue, donc plus rapide | + | |
- | * Enfin, RSA est la référence, | + | |
- | + | ||
- | Y' | + | |
- | + | ||
==== Le fichier / | ==== Le fichier / | ||
Ce fichier permet de personnaliser ses accès à ssh de façon extrêmement pratique. | Ce fichier permet de personnaliser ses accès à ssh de façon extrêmement pratique. | ||
Ligne 91: | Ligne 101: | ||
<WRAP center round tip 90%> | <WRAP center round tip 90%> | ||
- | Cela n'a généralement aucun intérêt : la même clé peut vous permettre de vous connectez sur tous les serveurs que vous souhaitez. Les clés asymétriques ne sont pas comme les mots de passe ; la sécurité n' | + | Cela n'a généralement aucun intérêt : la même clé peut vous permettre de vous connectez sur tous les serveurs que vous souhaitez. Les clés asymétriques ne sont pas comme les mots de passe ; la sécurité n' |
Cependant, c'est parfois une manipulation nécessaire. Par exemple, il fut un temps où Bitbucket ne supportait pas ECDSA, il fallait donc une clé RSA pour ce service et quelques autres serveurs en retard. | Cependant, c'est parfois une manipulation nécessaire. Par exemple, il fut un temps où Bitbucket ne supportait pas ECDSA, il fallait donc une clé RSA pour ce service et quelques autres serveurs en retard. | ||
Ligne 97: | Ligne 107: | ||
- | Imaginons qu'on ait généré deux clefs RSA comme indiqué au-dessus. Il suffit d' | + | Imaginons qu'on ait généré deux clefs RSA comme indiqué au-dessus. Il suffit d' |
- | * cle1 | + | * clepriv1 |
- | * cle2 pour aller sur le serveur 2 | + | * clepriv2 |
<code txt config> | <code txt config> | ||
host serveur1 | host serveur1 | ||
HostName serveur1.fr | HostName serveur1.fr | ||
- | IdentityFile ~/.ssh/cle1 | + | IdentityFile ~/.ssh/clepriv1 |
User totor | User totor | ||
| | ||
host serveur2 | host serveur2 | ||
HostName 202.127.12.13 | HostName 202.127.12.13 | ||
- | IdentityFile ~/.ssh/cle2 | + | IdentityFile ~/.ssh/clepriv2 |
User roxxor | User roxxor | ||
</ | </ | ||
- | Ensuite quand on se connectera avec SSH, le système saura que pour aller sur serveur1.fr, | + | Ensuite quand on se connectera avec SSH, le système saura que pour aller sur serveur1.fr, |
===== Se connecter à un serveur avec sa clé ===== | ===== Se connecter à un serveur avec sa clé ===== | ||
Ligne 177: | Ligne 187: | ||
===== Configurer SSH sur ses serveurs ===== | ===== Configurer SSH sur ses serveurs ===== | ||
- | <WRAP center round todo 60%> | ||
- | En brouillon. | ||
- | </ | ||
- | |||
La connexion par mot de passe doit être désactivée partout. La seule façon de se connecter est d' | La connexion par mot de passe doit être désactivée partout. La seule façon de se connecter est d' | ||
Ligne 201: | Ligne 207: | ||
* l' | * l' | ||
</ | </ | ||
+ | |||
+ | S'il y a plusieurs administratrices sur une même machine, les bonnes pratiques recommandent de les mettre dans un même groupe (historiquement " | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Astuce : si vous avez plusieurs machines où les mêmes sysadmins ont les mêmes privilèges, | ||
+ | </ | ||
+ | |||
==== Paramétrer sshd_config ==== | ==== Paramétrer sshd_config ==== | ||
Ligne 207: | Ligne 220: | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | Cette partie a été mise à jour le 6 février 2018. La sécurité étant un domaine en perpétuelle évolution, tenez-vous au courant | + | Cette partie a été mise à jour le 6 février 2018. La sécurité étant un domaine en perpétuelle évolution, tenez-vous au courant, n' |
</ | </ | ||
Ligne 234: | Ligne 246: | ||
Cela garantit que le serveur vérifie les modes et droits des fichiers de l' | Cela garantit que le serveur vérifie les modes et droits des fichiers de l' | ||
- | UsePrivilegeSeparation sandbox # si dispo sinon | + | |
# UsePrivilegeSeparation yes | # UsePrivilegeSeparation yes | ||
- | La première option, si elle est supportée par votre version de SSH, permet de bien séparer les privilèges et est à privilégier. Si vous avez une version SSH un peu plus ancienne, la seconde reste très acceptable. | + | <del>La première option, si elle est supportée par votre version de SSH, permet de bien séparer les privilèges et est à privilégier. Si vous avez une version SSH un peu plus ancienne |
+ | |||
+ | Cette option est dépréciée depuis la 7.5 car la séparation des privilèges est maintenant par défaut (et depuis un moment). Cette option n'a de sens que sur de très vieux serveurs, qui feraient mieux de ne pas être exposés à internet. | ||
AllowUsers Pseudo1 Moi Toiaussi | AllowUsers Pseudo1 Moi Toiaussi | ||
- | | + | |
- | '' | + | '' |
- | L' | + | L' |
À noter que vous pouvez aussi spécifier l' | À noter que vous pouvez aussi spécifier l' | ||
Ligne 251: | Ligne 265: | ||
Interdit purement et simplement à tous les utilisateurs de se connecter via ssh avec un mot de passe : il faut forcément une clé ssh enregistrée sur le serveur. | Interdit purement et simplement à tous les utilisateurs de se connecter via ssh avec un mot de passe : il faut forcément une clé ssh enregistrée sur le serveur. | ||
- | | + | |
- | Cela va avec le paramètre précédent et le complète. La meilleure explication (en anglais) est [[https:// | + | Cela va avec le paramètre précédent et le complète. La meilleure explication (en anglais) est [[https:// |
PermitEmptyPasswords no | PermitEmptyPasswords no | ||
- | |||
- | |||
Cela interdit de se connecter sans mot de passe. C'est sans doute superflu vu que de toute façon on oblige à se connecter avec sa clé SSH, mais dans le doute, on le renseigne. | Cela interdit de se connecter sans mot de passe. C'est sans doute superflu vu que de toute façon on oblige à se connecter avec sa clé SSH, mais dans le doute, on le renseigne. | ||
MaxAuthTries 6 | MaxAuthTries 6 | ||
- | |||
- | |||
Spécifie le nombre de tentatives d' | Spécifie le nombre de tentatives d' | ||
LoginGraceTime 30 | LoginGraceTime 30 | ||
- | |||
Temps en secondes pour saisir son mot de passe. En fait, 30 secondes, c'est plutôt long, même avec une passphrase un peu conséquente. D' | Temps en secondes pour saisir son mot de passe. En fait, 30 secondes, c'est plutôt long, même avec une passphrase un peu conséquente. D' | ||
Ligne 273: | Ligne 282: | ||
UsePAM yes | UsePAM yes | ||
- | En complément de '' | + | En complément de '' |
Protocol 2 | Protocol 2 | ||
- | SSh a évolué et nous utilisons à présent la 2e version du protocole. Pour des raisons de compatibilité, | + | SSh a évolué et nous utilisons à présent la seconde |
< | < | ||
MACs hmac-sha2-512-etm@openssh.com, | MACs hmac-sha2-512-etm@openssh.com, | ||
</ | </ | ||
- | Ajoutez ces lignes pour préciser les algorithmes acceptés et leur ordre de préférences | + | Ajoutez ces lignes pour préciser les algorithmes acceptés et leur ordre de préférence |
AllowTcpForwarding no | AllowTcpForwarding no | ||
Ligne 288: | Ligne 297: | ||
X11Forwarding no | X11Forwarding no | ||
- | '' | + | '' |
PrintLastLog yes | PrintLastLog yes | ||
- | Cette option permet surtout de faire un contrôle " | + | Cette option permet surtout de faire un contrôle " |
PrintMotd no | PrintMotd no | ||
Ligne 297: | Ligne 306: | ||
AcceptEnv LANG LC_* | AcceptEnv LANG LC_* | ||
- | Là, de ce que je comprends, cela permet à l' | + | Là, de ce que je comprends, cela permet à l' |
Subsystem sftp / | Subsystem sftp / | ||
Ligne 309: | Ligne 318: | ||
- | === Exemple de fichier | + | === Exemple de fichier |
Ligne 322: | Ligne 331: | ||
PermitRootLogin no | PermitRootLogin no | ||
StrictModes yes | StrictModes yes | ||
- | UsePrivilegeSeparation sandbox # si dispo sinon | ||
- | # UsePrivilegeSeparation yes | ||
PasswordAuthentication no | PasswordAuthentication no | ||
- | ChallengeResponseAuthentication | + | KbdInteractiveAuthentication |
PubkeyAuthentication yes | PubkeyAuthentication yes | ||
UsePAM yes | UsePAM yes | ||
Ligne 334: | Ligne 341: | ||
LoginGraceTime 30 | LoginGraceTime 30 | ||
- | AllowsGroups | + | AllowGroups |
AllowTcpForwarding no | AllowTcpForwarding no | ||
Ligne 349: | Ligne 356: | ||
- | N' | + | N' |
service ssh restart | service ssh restart | ||
| | ||
+ | ==== Gérer les droits des dossiers et autres bonnes pratiques ==== | ||
+ | Si vous ouvrez un accès SSH à plusieurs personnes sur un serveur, cela ne veux pas dire qu' | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Rappel vite fait pour créer une utilisatrice avec son groupe associé, un home et un shell fonctionnel (remplacer '' | ||
+ | sudo useradd USER -m -U -s /bin/bash | ||
+ | </ | ||
+ | |||
+ | Debian crée par défaut des répertoires " | ||
+ | |||
+ | sudo chmod o-rx /home/* | ||
+ | |||
+ | Ça n' | ||
+ | |||
+ | Si l' | ||
+ | |||
+ | < | ||
+ | mkdir / | ||
+ | sudo chmod ln -s / | ||
+ | sudo chown www-data: | ||
+ | </ | ||
+ | |||
===== Pour aller plus loin ===== | ===== Pour aller plus loin ===== | ||
* [[http:// | * [[http:// | ||
Ligne 358: | Ligne 387: | ||
* [[https:// | * [[https:// | ||
- | {{tag> | + | {{tag> |