From a57a250441758fc9143774945f0922b6c6100c19 Mon Sep 17 00:00:00 2001 From: tierce Date: Fri, 8 Oct 2021 23:52:45 +0200 Subject: [PATCH] tuto ssh --- content/images/ssh/paquet-ssh.png | Bin 0 -> 43743 bytes content/tutos/ssh.md | 373 ++++++++++++++++++++++++++++++ 2 files changed, 373 insertions(+) create mode 100644 content/images/ssh/paquet-ssh.png create mode 100644 content/tutos/ssh.md diff --git a/content/images/ssh/paquet-ssh.png b/content/images/ssh/paquet-ssh.png new file mode 100644 index 0000000000000000000000000000000000000000..e6748586340cf5322ebb97591f96a7fa6493a828 GIT binary patch literal 43743 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 + +## Retrouver l'adresse IP du nouveau serveur + +Avant de pouvoir se connecter en réseau sur la machine fraîchement installée, il faut retrouver son adresse IP. + +### S'y connecter physiquement + +Puisque le serveur vient d'être installé, vous devriez pouvoir vous y connecter en utilisant le clavier. + +En tant que `root` ou `bestiole` avec le mot de passe `trucmuche`. + +Et une fois votre session ouverte, la commande suivante vous affichera les adresses IPv4 de la machine. + +``` +# ip a s +``` + +Pour ip address show et dont le résultat devrait ressembler à ceci; + +``` +1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever +2: ens18: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 + link/ether 16:14:ed:f4:aa:33 brd ff:ff:ff:ff:ff:ff + altname enp0s18 + inet 192.168.30.27/24 brd 192.168.30.255 scope global dynamic ens18 + valid_lft 6271sec preferred_lft 6271sec + inet6 fe80::1414:f0ff:fea7:7b31/64 scope link + valid_lft forever preferred_lft forever +``` + +Et dans notre cas, c'est l'adresse `192.168.30.27` qui nous intéresse. + +### Ou bien scanner le réseau + +Depuis un autre ordinateur GNU/Linux la commande `arp-scan` peut être utile. + +Si vous connaissez le *range ip* de votre réseau, elle vous affichera la liste des adresses découvertes dans la table *arp*. + +``` +$ sudo arp-scan 192.168.30.0/24 +``` + +Ou, si vous ne connaissez pas le *range ip* de votre réseau, vous pourrez essayer avec ceci; + +``` +$ sudo arp-scan --localnet +``` + +## Première connexion ssh + +Maintenant que l'adresse IPv4 du serveur est connue, il est possible de s'y connecter à distance depuis un autre ordinateur GNU/Linux. + +Le mot de passe de l'utilisateur `bestiole` sera demandé pour vous connecter à la machine `192.168.30.27` sur le port `22`, le port par défaut de ssh. + +``` +$ ssh bestiole@192.168.30.27 +bestiole@192.168.30.27's password: +Linux ssh 5.10.0-8-amd64 #1 SMP Debian 5.10.46-5 (2021-09-23) x86_64 + +The programs included with the Debian GNU/Linux system are free software; +the exact distribution terms for each program are described in the +individual files in /usr/share/doc/*/copyright. + +Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent +permitted by applicable law. +Last login: Fri Oct 8 20:03:16 2021 from 192.168.30.31 +bestiole@ssh:~$ +``` + +## Installer sudo + +Par défaut `sudo` n'est pas installé sur Debian 11. + +Le mot de pass `root` sera demandé et c'est, pour rappel, le même que celui de `bestiole`, à savoir `trucmuche`. + +Notez le `-` dans la commande `su -` qui permet de démarrer un shell `root` avec ses propres variables d'envirronement et pas celles de l'utilisateur `bestiole`. + +``` +bestiole@ssh:~$ su - +Password: +root@ssh:~# +root@ssh:~# apt update +Hit:1 http://security.debian.org/debian-security bullseye-security InRelease +Hit:2 http://deb.debian.org/debian bullseye InRelease +Hit:3 http://deb.debian.org/debian bullseye-updates InRelease +Reading package lists... Done +Building dependency tree... Done +Reading state information... Done +All packages are up to date. +root@ssh:~# apt install sudo +Reading package lists... Done +Building dependency tree... Done +Reading state information... Done +The following NEW packages will be installed: + sudo +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Need to get 1,059 kB of archives. +After this operation, 4,699 kB of additional disk space will be used. +Get:1 http://deb.debian.org/debian bullseye/main amd64 sudo amd64 1.9.5p2-3 [1,059 kB] +Fetched 1,059 kB in 0s (4,589 kB/s) +Selecting previously unselected package sudo. +(Reading database ... 20861 files and directories currently installed.) +Preparing to unpack .../sudo_1.9.5p2-3_amd64.deb ... +Unpacking sudo (1.9.5p2-3) ... +Setting up sudo (1.9.5p2-3) ... +root@ssh:~# +``` + +## Ajouter bestiole au groupe sudo + +``` +root@ssh:~# adduser bestiole sudo +Adding user `bestiole' to group `sudo' ... +Adding user bestiole to group sudo +Done. +``` + +Si lors de la commande `adduser bestiole sudo` vous avez le message d'erreur `bash: adduser: command not found`, c'est que vous avez oubliez le `-` lors de l'utilisation de la commande `su -` en amont. + +## Configurer sudo sans mot de passe pour bestiole + +Lorsque vous êtes connecté en tant que `bestiole`, vous devez connaître le mot de passe `root` si vous souhaitez utiliser la commarde `su -` ou taper le mot de passe de `bestiole` si vous utilisez la commande `sudo`. + +Pour y remédier, et pouvoir utiliser `sudo` sans mot de passe, il faut ajouter la ligne suivante au fichier de configuration de `sudo`. + +Pour ce faire, c'est la commande `visudo` qui sera utilisée. + +``` +# visudo +``` + +Par défaut, c'est l'éditeur `nano` qui vous affichera le fichier de configuration de `sudo`. + +À la fin du fichier, vous pourrez ajouter la ligne suivante; + +``` +… +bestiole ALL=(ALL) NOPASSWD: ALL +``` + +Et utiliser les touches `CTRL + x` pour quitter et répondre `y` ou bien `o` pour enregistrer votre changement. + +## Tester le changement + +Vous pouvez quitter le shell `root` avec la combinaison de touche `CTRL + d` ou en tapant `exit`. + +``` +root@ssh:~# exit +logout +bestiole@ssh:~$ +``` + +Et pour vérifier que `bestiole` peut utiliser `sudo` sans mot de passe; + +``` +bestiole@ssh:~$ sudo su - +root@ssh:~# +``` + +Devrait vous ouvrir un shell `root` automatiquement. + +## Création d'une paire de clé sur votre ordinateur personnel + +Pour que vous *(en fait le compte utilisateur local de votre ordinateur personnel)* soit en mesure de se connecter à un serveur ssh **sans avoir à taper de mot de passe**, il faut que vous *(votre utilisateur local)* disposiez au moins d'une paire de clé publique / privée. + +Cela se fait sur votre ordinateur, celui que vous utiliserez pour vous connecter au serveur ssh. + +Votre utilisateur local disposera d'un dossier `~/.ssh/` qui contiendra votre ou vos clés privées et publiques. + +Attention que ces fichiers −parce que ce ne sont que des fichiers−, surtout la ou les clé **privées**, sont des documents **très précieux** qu'il vous faudra sauvegarder et ne transmettre à personne. + +Lors de la génération de votre paire de clé, vous pourrez choisir le type de chiffrement et éventuellement un mot de passe pour déverrouiller la clé privée. À chaque fois que vous souhaiterez utiliser la clé privée, et donc à chaque fois que vous souhaiterez vous connecter au serveur en utilisant `ssh` vous serez invité·e à taper le mot de passe de la clé. La plus part des distributions GNU/Linux disposent d'un logiciel, `ssh-agent` qui conserve l'accès à votre ou vos clé tant que vous ne fermez pas votre session ou que vous ne redémarrez pas votre ordinateur personnel. + +Si votre ordinateur fonctionne sur un disque chiffré et que votre mot de passe de session personnel est suffisamment fort *(long)* vous pouvez éventuellement vous passer de mot de passe pour votre ou vos clé, mais ce n'est pas une bonne idée. + +À vous de choisir entre un peu plus ou un peu moins de sécurité, mais prennez bien conscience que les clés publique et surtout les clés privées **peuvent donner accès aux serveurs ssh** que vous gérez sans vous demander de taper quoi que ce soit. + +### Avec l'algo RSA + +Voici la commande pour créer une paire de clé RSA avec l'algorithme RSA avec une taille de 2048 bit. + +``` +$ ssh-keygen -t rsa -b 2048 +Generating public/private rsa key pair. +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /home/vous/.ssh/id_rsa +Your public key has been saved in /home/vous/.ssh/id_rsa.pub +The key fingerprint is: +SHA256:33Y240klIIrel19EncUx1w/zVeP80SszU+4X49N4 vous@votreordi +The key's randomart image is: ++---[RSA 2048]----+ +| +o*| +| o.C*| +| =.*o@| +| .Oo%*| +| T =oOoO| +| . .==. +| +| . o *..| +| . = +E| +| O | ++----[SHA256]-----+ +``` +## Avec l'algo ed25519 + +Plus récent et plus performant, mais pas compatible avec des versions plus anciennes de `ssh`, il y a l'algorithme ED25519. + +``` +# ssh-keygen -t ed25519 +Generating public/private ed25519 key pair. +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /home/vous/.ssh/ed25519 +Your public key has been saved in /home/vous/.ssh/ed25519.pub +The key fingerprint is: +SHA256:ZlHC9yLZL6Ijd86YXNPpGeeBkJ6DMQ43SYfMp3l49ti vous@votreordi +The key's randomart image is: ++--[ED25519 256]--+ +| ..+o .| +| +.=.o + | +| ..B.B.*..| +| o o+*.B.o.| +| . SoB. +. | +| o..oo . oo| +| o + . .. =..| +| . o + o o . | +| E=. | ++----[SHA256]-----+ +``` + +Le choix entre RSA ou ED25519 dépend de la vielliesse des serveurs `ssh` auxquels vous souhaiterez vous connecter, minimum Debian 8 pour ED25519. + +## Copie de la clé vers votre serveur ssh + +Pour que votre utilisateur local, celui de votre ordinateur personnel, puisse se connecter en utilisant sa clé **privée**, il faut que l'utilisateur `bestiole` du serveur dispose de la clé **publique** correspondante. + +Pour ce faire, il existe au moins deux méthodes pour transmettre là clé **publique** sur le serveur ssh, dans la liste des clés authorizées pour l'utilisateur `bestiole`. + +### Avec ssh-copy-id + +Cette commande est à faire depuis votre ordinateur personnel. + +``` +$ ssh-copy-id bestiole@192.168.30.27 +``` + +Il vous sera demandé te taper le mot de l'utilisateur `bestiole`, à savoir `trucmuche`. + +### En éditant le fichier authorized_keys sur le serveur + +Une autre méthode moins automatique, est d'éditer le fichier de clés publiques autorisées pour l'utilisateur `bestiole` sur le serveur ssh. + +Cela se fait sur le serveur ssh en copiant / collant le contenu du fichier `~/.ssh/id_rsa.pub` de votre ordinateur personnel. + +Sur votre ordinateur personnel; + +``` +$ cat ~/.ssh/id_rsa.pub +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5daRSSVJD2xVXnqcB4pmjthAFr2u0/W+BP1OESo7lm60If9z7m80ztyFDmdfm82RDM/tpgaV050DDD9IZrfjmGjA3lTWFirA6CntWJsa0xYgtNrY9vop6ZRpRWx/+2AM5mLD+mqOdn++w+6/2ee6V0zIsaXr863XRApi81X0BlqPathNehv0/37sd2+JhtmhFHhBweGgjYllPIiAMmzzt23J2TSS8V0kNt6ZEjnTZKUUBmdTYwKZkLZDNxfCSptLFUf/pq7GgjxMK6x7g4roRCWwOl80RWs1mXodZ8FOGAHKlQ8mZoQCZ3uK4DpE74h8DOb3x5g7WWMf1IXtQhM8P vous@votreordi +``` + +Faites bien attention au `.pub` qui est bien la partie publique de votre paire de clé. + +Vous pouvez sélectionner le texte depuis `ssh-rsa AAAA…` jusque `…vous@votreordi` et utiliser la combinaison de touche `CTRL+MAJ+C` pour copier la clé **publique**. + +Sur le serveur; + +``` +$ ssh bestiole@192.168.30.27 # si vous n'y êtes plus connecté et tapez le mot de passe trucmuche +$ mkdir ~/.ssh +$ nano ~/.ssh/authorized_keys +``` + +L'éditeur `nano` vous affiche un fichier vide *(sauf si il contient déjà des clés autorisées)* et vous pouvez y coller votre clé publique avec les touche `CTRL+MAJ-v`. + +Quittez l'éditeur avec `CTRL+x` et répondez `o` ou `y` pour enregistrer le fichier. + +Nous allons ensuite modifier les droits d'accès à ce fichier pour autoriser uniquement le propriétaire du fichier, à savoir `bestiole` à l'écriture tout en laissant la lecture possible au groupe `bestiole` et au autres. + +``` +$ chmod 0644 ~/.ssh/authorized_keys +``` + +Voilà, votre clé publique est dans la liste des clés autorisées pour l'utilisateur `bestiole`, qui pour rappel, dispose de la possibilité de devenir `root` sans avoir de mot de passe à taper, comme nous l'avons fais bien avant dans ce tuto. + +## Tester la connexion + +Mis à part le mot de passe qui déverrouillerait votre clé privée, vous devriez pouvoir vous connecter au serveur sans avoir à taper le mot de passe de l'utilisateur `bestiole`. Et si votre clé privée n'est pas protégée par un mot de passe, vous n'aurez rien à taper de plus que la commande ssh suivante; + +``` +$ ssh bestiole@192.168.30.27 +``` + +Et vous devriez arriver dans un shel de `bestiole` sur le serveur. + +Et si vous tapez `sudo su -`, vous devriez être dans le shell de `root` sans avoir eu à taper de mot de passe. + +## Configurer ssh sur le serveur + +Actuellement, le serveur ssh autorise encore l'utilisation de mots de passe pour que les utilisateur·ice·s telque `bestiole` se connectent. + +Dans la version 11 de Debian, l'utilisateur `root` ne peut déjà plus se connecter avec mot de passe mais il pourrait encore se connecter en utilisant des clés publiques / privées. + +L'idée est d'interdire l'accès à `root` que ce soit avec mot de passe ou avec clés et aussi de désactiver l'authentification par mot de passe pour les autres utilisateur·ice·s du serveur, mais d'autoriser les connexions utilisant des clés publiques / privées. + +Il faut décommenter, éditer ou modifier les variables suivantes dans le fichier `/etc/ssh/sshd_config`; + +``` +# nano /etc/ssh/sshd_config +… +#PermitRootLogin prohibit-password +PermitRootLogin no +… +#PubkeyAuthentication no +PubkeyAuthentication yes +… +#PasswordAuthentication yes +PasswordAuthentication no +… +``` + +Et utiliser `CTRL+x` pour quitter en répondant `o` ou `y` pour enregistrer les modifications. + +Et puisque nous avons modifier la configuration du serveur `ssh`, il faut redémarrer le service; + +``` +# service ssh restart +``` + +Ou bien; + +``` +# systemctl restart ssh +``` + +## Conclusion + +Si tout c'est bien passé, vous devriez pouvoir vous connecter à votre serveur ssh en tant que `bestiole` et pouvoir utiliser `sudo` sans avoir à taper de mot ou de phrase de passe. + +Et `root` ne peux plus ouvrir directement de terminal sur votre serveur ssh, ce qui est un peu plus sécurisé puisque plein de bots tentent de se connecter en tant que root@machine avec des mots de passe aléatoires. \ No newline at end of file