Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
securite:bonnespratiques:sshrenforce [2019/01/02 08:59] pinvidic-h [Quelques articles à lire] |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Utilisation de clés SSH ====== | ||
- | L' | ||
- | |||
- | On va voir également comment protéger sa clé SSH privée par une phrase de sécurité (// | ||
- | ===== 1 - Principe ===== | ||
- | |||
- | Le principe repose sur l' | ||
- | |||
- | ==== 1.1 - Création d'une paire de clé sous Linux ==== | ||
- | |||
- | Par défaut, c'est une clé RSA 2048bits qui est générée. C'est aujourd' | ||
- | |||
- | < | ||
- | herve@ubuntu: | ||
- | Generating public/ | ||
- | Enter file in which to save the key (/ | ||
- | Enter passphrase (empty for no passphrase): | ||
- | Enter same passphrase again: | ||
- | Your identification has been saved in / | ||
- | Your public key has been saved in / | ||
- | The key fingerprint is: | ||
- | SHA256: | ||
- | The key's randomart image is: | ||
- | +---[RSA 2048]----+ | ||
- | | E| | ||
- | | . | | ||
- | | | ||
- | |.. o . o| | ||
- | |+ = o | ||
- | | O * . .o + . . .| | ||
- | |.o* + +o = . . | | ||
- | |oo+o =+=*.o | ||
- | |o+ .==*+++ | ||
- | +----[SHA256]-----+ | ||
- | herve@ubuntu: | ||
- | total 16 | ||
- | drwx------ | ||
- | drwxr-xr-x 22 herve rv 4096 sept. 23 12:42 .. | ||
- | -rw------- | ||
- | -rw-r--r-- | ||
- | |||
- | </ | ||
- | |||
- | Il reste à copier la clé publique sur les systèmes distants. | ||
- | |||
- | < | ||
- | herve@ubuntu: | ||
- | / | ||
- | The authenticity of host ' | ||
- | ECDSA key fingerprint is SHA256: | ||
- | Are you sure you want to continue connecting (yes/no)? yes | ||
- | / | ||
- | / | ||
- | pinvidic-h@remote' | ||
- | |||
- | Number of key(s) added: 1 | ||
- | |||
- | Now try logging into the machine, with: " | ||
- | and check to make sure that only the key(s) you wanted were added. | ||
- | </ | ||
- | |||
- | |||
- | La connexion se fait sans demande de mot de passe: | ||
- | < | ||
- | herve@ubuntu: | ||
- | Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-112-generic x86_64) | ||
- | |||
- | pinvidic-h@remote: | ||
- | </ | ||
- | |||
- | ==== 1.2 - Création d'une paire de clé sous Windows ==== | ||
- | |||
- | Nous allons prendre exemple sur la suite d' | ||
- | |||
- | {{: | ||
- | |||
- | Les clés SSH peuvent être générées à l'aide de puttygen. Elles seront dans un format utilisable par Putty ou Kitty Portable. L' | ||
- | |||
- | |||
- | {{: | ||
- | |||
- | Pour protéger la clé privée, on définit une // | ||
- | |||
- | On peut installer la clé publique dans les clés SSH autorisées sur les systèmes distants. | ||
- | Pour cela, on transfère la clé public sur le serveur (linux) et on convertit la clé Putty au format SSH-RSA : | ||
- | < | ||
- | ssh-keygen -i -f putty1.ppk.pub > putty1.rsa.pub | ||
- | cat putty1.rsa.pub >> ~/ | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | ===== 2 - Renforcer les accès aux systèmes Linux ===== | ||
- | |||
- | Configurer le système " | ||
- | - passer à une base de comptes LDAP (en ldaps) | ||
- | - autoriser seulement un groupe LDAP à se connecter | ||
- | - configurer SUDO pour ce groupe | ||
- | - Renforcer la configuration SSH | ||
- | |||
- | |||
- | Modifier / | ||
- | |||
- | < | ||
- | # Désactiver l' | ||
- | ChallengeResponseAuthentication no | ||
- | PasswordAuthentication no | ||
- | UsePAM no | ||
- | |||
- | # interdire les connexions distantes à root : | ||
- | PermitRootLogin no | ||
- | |||
- | # ou n' | ||
- | PermitRootLogin prohibit-password | ||
- | AllowUsers root[at]172.20.13.* | ||
- | |||
- | # restreindre les accès au groupe ' | ||
- | AllowGroups admins | ||
- | |||
- | </ | ||
- | |||
- | ===== 3 - Passphrase et agent SSH ===== | ||
- | |||
- | Si l' | ||
- | |||
- | L' | ||
- | |||
- | L' | ||
- | |||
- | |||
- | ==== 3.1 Ajouter/ | ||
- | |||
- | Note: cela aurait pû être fait lors de la création de la clé SSH. | ||
- | |||
- | **Illustration en ligne de commande:** | ||
- | |||
- | < | ||
- | herve@ubuntu: | ||
- | Enter new passphrase (empty for no passphrase): | ||
- | Enter same passphrase again: | ||
- | Your identification has been saved with the new passphrase. | ||
- | </ | ||
- | |||
- | |||
- | A la première utilisation de sa clé privée (ou pour chaque utilisation si l' | ||
- | |||
- | < | ||
- | herve@ubuntu: | ||
- | Enter passphrase for key '/ | ||
- | </ | ||
- | |||
- | Si l' | ||
- | |||
- | < | ||
- | herve@ubuntu: | ||
- | SSH_AUTH_SOCK=/ | ||
- | SSH_AGENT_PID=15835; | ||
- | echo Agent pid 15835; | ||
- | |||
- | herve@ubuntu: | ||
- | Enter passphrase for / | ||
- | Identity added: / | ||
- | |||
- | </ | ||
- | |||
- | A partir de maintenant, les connexion utilisant la clé privée ne demanderont plus la passphrase : | ||
- | |||
- | < | ||
- | herve@ubuntu: | ||
- | Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-112-generic x86_64) | ||
- | |||
- | pinvidic-h@remote: | ||
- | </ | ||
- | |||
- | **Illustration avec l' | ||
- | |||
- | L' | ||
- | |||
- | {{securite: | ||
- | |||
- | \\ | ||
- | |||
- | Pour effacer les passphrases chargées dans l' | ||
- | < | ||
- | ssh-add -D | ||
- | </ | ||
- | |||
- | **Illustration avec putty agent: ** | ||
- | |||
- | On lance le programme pageant.exe | ||
- | |||
- | {{: | ||
- | |||
- | On charge la clé générée par puttygen et on renseigne la // | ||
- | |||
- | {{: | ||
- | {{: | ||
- | |||
- | On se connecte avec putty ou kitty sur le serveur distant sans mot de passe ou passphrase grâce à l' | ||
- | |||
- | {{: | ||
- | |||
- | ==== 3.2 - Limiter les accès SSH par IP avec des clés ==== | ||
- | |||
- | Il peut être judicieux de limiter la provenance des connexions SSH utilisant des clés à certaines IP. Cela peut être le cas pour l' | ||
- | |||
- | Le fichier ~/ | ||
- | < | ||
- | |||
- | On peut avoir par exemple : | ||
- | < | ||
- | ssh-rsa AAAAB3Nza...== pinvidic-h@pcbureau 20171225 | ||
- | from=" | ||
- | from=" | ||
- | </ | ||
- | |||
- | Attention : il ne faut pas introduire de risque d' | ||
- | donner l' | ||
- | |||
- | Dans le //pattern// from=" | ||
- | |||
- | |||
- | ===== 4 - Quelques articles à lire ===== | ||
- | |||
- | * [[https:// | ||
- | * [[http:// | ||
- | * https:// | ||
- | * https:// | ||
- | * https:// |