SSH » Historique » Version 50
Fabien ADAM, 27/12/2015 23:22
Nouveaux paquets pour le SSH avec LUKS
1 | 42 | bikepunk bikepunk | {{>toc}} |
---|---|---|---|
2 | 1 | Laurent GUERBY | |
3 | 43 | bikepunk bikepunk | h1. Le Secure SHell (SSH) |
4 | 1 | Laurent GUERBY | |
5 | 43 | bikepunk bikepunk | Voici un tutoriel clair, en francais pour apprendre SSH depuis zéro : |
6 | 43 | bikepunk bikepunk | http://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/la-connexion-securisee-a-distance-avec-ssh |
7 | 2 | Charles-Alban Benezech | |
8 | 46 | bikepunk bikepunk | Pour aller plus loin et bien configurer SSH : |
9 | 46 | bikepunk bikepunk | https://wiki.archlinux.org/index.php/Ssh |
10 | 46 | bikepunk bikepunk | |
11 | 1 | Laurent GUERBY | TODO: avancé redirection de port, ssh-agent pour rebondir sur des machines |
12 | 18 | Charles-Alban Benezech | |
13 | 18 | Charles-Alban Benezech | http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html |
14 | 18 | Charles-Alban Benezech | |
15 | 2 | Charles-Alban Benezech | h2. Introduction |
16 | 1 | Laurent GUERBY | |
17 | 18 | Charles-Alban Benezech | |
18 | 42 | bikepunk bikepunk | Le SSH est un protocole permettant de créer un tunnel entre deux machines ou plus. La création d'un tunnel consiste en l'encapsulation par un protocole réseau d'un autre protocole réseau de même couche (modèle OSI) ou supérieur, ainsi les données échangées dans le datagramme seront illisibles car protégées par le protocole ssh qui chiffrera le contenu. Ce protocole peut-être utilisé par exemple lié avec des technologies comme le Virtual Private Network (VPN). |
19 | 18 | Charles-Alban Benezech | |
20 | 1 | Laurent GUERBY | !http://img41.imageshack.us/img41/5632/schemassh.jpg! |
21 | 18 | Charles-Alban Benezech | |
22 | 18 | Charles-Alban Benezech | |
23 | 42 | bikepunk bikepunk | La technique de tunnel pour chiffrer les communications sera utilisée pour assurer la confidentialité, l’intégrité et l'authenticité de la dite communication lorsque les communications transiteront sur un réseau non fiable (internet par exemple). En effet, le tunnel prendra tout son sens lors de connexions entre sites distants échangeant des informations. Plusieurs protocoles sont utilisables afin d'établir des connexions sécurisés; voici quelques exemples: L2TP, TLS, IPSEC... SSH dans sa deuxième version intègre un protocole de systèmes de fichiers, Ssh File Tranfert Protocole (SFTP, à ne pas confondre avec FTPS (FTP over SSL)); il est aussi utilisé pour la commande scp. |
24 | 42 | bikepunk bikepunk | SSH est un protocole mais aussi un programme basé sur ce protocole qui permet de connecter les machines entre elles en créant un tunnel. Afin d'établir la connexion entre les deux machines, ssh a besoin de vérifier l'identité de la personne qui essaye d'établir la connexion. Pour cela SSH peut utiliser deux méthodes: établir la connexion et ouvrir un prompt d'authentification où l'utilisateur devra entrer son login et son mot de passe; ou il peut utiliser un crypto-système asymétrique, pour cette dernière les clés publiques devront être distribuées sur toutes les machines sur lesquelles l'utilisateur désirera se connecter. |
25 | 1 | Laurent GUERBY | |
26 | 1 | Laurent GUERBY | |
27 | 18 | Charles-Alban Benezech | |
28 | 18 | Charles-Alban Benezech | |
29 | 18 | Charles-Alban Benezech | h2. Configuration |
30 | 18 | Charles-Alban Benezech | |
31 | 42 | bikepunk bikepunk | Afin d'établir une connexion entre deux machines via SSH il existe plusieurs méthodes diverses et variées. Tous d'abord, on peut commencer par dissocier les systèmes Windows, Linux et Mac. Je vais présenter les différentes manières de se connecter à une machine distante (serveur linux) via SSH sur ces différentes plate-formes. Dans un souci de permettre une meilleure compréhension voici un petit bilan d'information présentant les futures configurations à venir: |
32 | 7 | Charles-Alban Benezech | *Configuration du Serveur* |
33 | 7 | Charles-Alban Benezech | Nom: LCOSTST01 |
34 | 7 | Charles-Alban Benezech | OS: centos |
35 | 7 | Charles-Alban Benezech | *Configuration Windows* |
36 | 7 | Charles-Alban Benezech | Nom: pc01 |
37 | 7 | Charles-Alban Benezech | OS: Windows seven |
38 | 7 | Charles-Alban Benezech | Logiciel: putty |
39 | 10 | Charles-Alban Benezech | *Configuration Linux* |
40 | 10 | Charles-Alban Benezech | Nom: LCOSTST02 |
41 | 1 | Laurent GUERBY | OS: CentOS |
42 | 10 | Charles-Alban Benezech | Logiciel: ssh |
43 | 1 | Laurent GUERBY | *Configuration Mac* |
44 | 18 | Charles-Alban Benezech | en attente... |
45 | 1 | Laurent GUERBY | |
46 | 18 | Charles-Alban Benezech | |
47 | 18 | Charles-Alban Benezech | |
48 | 18 | Charles-Alban Benezech | h2. le service sshd |
49 | 18 | Charles-Alban Benezech | |
50 | 18 | Charles-Alban Benezech | |
51 | 42 | bikepunk bikepunk | Afin de nous permettre d'affiner la configuration de notre serveur et optimiser son système de sécurité nous pouvons paramétrer le fichier de configuration. Ce fichier est placer dans le répertoire "/etc/ssh/" (appellé ssh_config sous red Hat), il contient un certains nombre de paramètre (les paramètres commenté (ligne commencant par un "#" sont des paramètre par défaut) que nous pouvons juger pertinent de modifier: |
52 | 18 | Charles-Alban Benezech | |
53 | 42 | bikepunk bikepunk | Port [22]: Désigne le port sur lequel le démon ssh écoute. |
54 | 18 | Charles-Alban Benezech | |
55 | 42 | bikepunk bikepunk | HostKey [/etc/ssh/ssh_host_key]: définit l'emplacement des clés. |
56 | 18 | Charles-Alban Benezech | |
57 | 18 | Charles-Alban Benezech | |
58 | 18 | Charles-Alban Benezech | *Quelques petits conseils* |
59 | 42 | bikepunk bikepunk | Voici quelques conseils de paramètrage de sshd pour la sécurité: |
60 | 42 | bikepunk bikepunk | PasswordAuthentication [yes/no]: Une fois les clés ajouter avec succès nous pouvons désactiver la connexion par mot de passe car les clé suffiront à assuré la connexion et empêchera une personne à tenter d'attaquer les mot de passe ("PasswordAuthentication no"). |
61 | 18 | Charles-Alban Benezech | |
62 | 42 | bikepunk bikepunk | PermitRootLogin [yes/no]: Il peut être utile d'empêcher les utilisateurs de se connecter directement avec le compte root ce qu'ils pourront ensuite via la commande su. De cette manière un utilisateur ne peut pas se loger directement sur le serveur avec le compte root (PermitRootLogin no"). |
63 | 18 | Charles-Alban Benezech | |
64 | 42 | bikepunk bikepunk | AllowUsers [<utilisateur>]: Il est possible aussi de rajouter une liste d'utilisateur qui seront les seuls à pouvoir se loger sur le serveur. |
65 | 18 | Charles-Alban Benezech | |
66 | 42 | bikepunk bikepunk | ListenAddress [0.0.0.0]: permet de définir sur quel carte réseau le démon doit écouter. |
67 | 18 | Charles-Alban Benezech | |
68 | 18 | Charles-Alban Benezech | |
69 | 18 | Charles-Alban Benezech | h2. Utilisation |
70 | 18 | Charles-Alban Benezech | |
71 | 49 | bikepunk bikepunk | h2. trucs pratiques |
72 | 49 | bikepunk bikepunk | |
73 | 49 | bikepunk bikepunk | *http://howto.landure.fr/gnu-linux/trucs-et-astuces-dutilisations-de-ssh |
74 | 49 | bikepunk bikepunk | *http://fr.positon.org/tag/ssh |
75 | 18 | Charles-Alban Benezech | |
76 | 18 | Charles-Alban Benezech | |
77 | 7 | Charles-Alban Benezech | h2. *Windows* |
78 | 7 | Charles-Alban Benezech | |
79 | 18 | Charles-Alban Benezech | |
80 | 42 | bikepunk bikepunk | Afin d'établir une connexion SSH entre l'utilisateur et LCOSTST01 nous allons utiliser l'utilitaire Putty. Une fois l'utilitaire lancé, nous allons devoir entrer le nom de la machine ou son adresse IP puis le port ciblé. |
81 | 16 | Charles-Alban Benezech | !http://img339.imageshack.us/img339/9020/sshconnectionputty.png! |
82 | 42 | bikepunk bikepunk | Etant la première fois que nous établissons une connexion vers ce serveur,avant d'établir la connexion, Putty va nous demnander s'il peut rajouter le serveur (sa signature numérique)dans la liste des serveurs autorisés. |
83 | 7 | Charles-Alban Benezech | !http://img685.imageshack.us/img685/9701/sshconnectionputtyregis.png! |
84 | 42 | bikepunk bikepunk | Une fois la connexion établie il ne nous reste plus qu'à nous loger sur le serveur grâce à notre identifiant. |
85 | 1 | Laurent GUERBY | !http://img855.imageshack.us/img855/9994/sshconnectionputtylogin.png! |
86 | 42 | bikepunk bikepunk | Vous êtes maintenant connecté à votre machine au travers d'un tunnel ssh. |
87 | 1 | Laurent GUERBY | |
88 | 1 | Laurent GUERBY | |
89 | 1 | Laurent GUERBY | |
90 | 1 | Laurent GUERBY | h2. *Linux* |
91 | 1 | Laurent GUERBY | |
92 | 7 | Charles-Alban Benezech | |
93 | 42 | bikepunk bikepunk | Pour permettre les connexions sous linux deux solutions s'offrent à nous. |
94 | 19 | Charles-Alban Benezech | |
95 | 20 | Charles-Alban Benezech | h3. *Methode de connexion par mot de passe* |
96 | 19 | Charles-Alban Benezech | |
97 | 42 | bikepunk bikepunk | La première consiste à se connecter directement avec le programme ssh sur la machine visée, il ouvrira de cette manière un prompt et nous devrons nous loger avec nos identifiants. Pour ce faire nous nous logerons sous notre utilisateur sur notre machine et executerons la commande ssh. |
98 | 18 | Charles-Alban Benezech | !http://img801.imageshack.us/img801/7978/sshconnexionlinuxlogins.png! |
99 | 10 | Charles-Alban Benezech | |
100 | 42 | bikepunk bikepunk | h3. *Methode de connexion par crypto-système asymétrique* |
101 | 1 | Laurent GUERBY | |
102 | 42 | bikepunk bikepunk | La deuxième consiste à utiliser un crypto-système asymétrique, ainsi nous créerons une clé publique et une clé privée. La clé privée restera sur le serveur dans son dossier (/HOMEDIR/.ssh) ainsi qu'une copie de la clé publique et une autre copie de la clé publique sera envoyée sur le serveur sur lequel on veut se connecter automatiquement, il nous suffira d'ajouter la clé publique à la liste des clés autorisées. |
103 | 42 | bikepunk bikepunk | Dans un premier temps nous allons devoir créer la clé privée |
104 | 1 | Laurent GUERBY | !http://img811.imageshack.us/img811/4246/ssconnexionlinuxcreatio.png! |
105 | 42 | bikepunk bikepunk | Maintenant que notre clé est créée nous allons devoir l'envoyer à la machine sur laquelle nous voulons nous loger |
106 | 19 | Charles-Alban Benezech | |
107 | 11 | Charles-Alban Benezech | !http://img23.imageshack.us/img23/2088/sshconnexionlinuxenvoic.png! |
108 | 1 | Laurent GUERBY | |
109 | 11 | Charles-Alban Benezech | Nous pouvons maintenant essayer de nous loger |
110 | 1 | Laurent GUERBY | |
111 | 1 | Laurent GUERBY | !http://img837.imageshack.us/img837/5267/sshconnexionlinuxfin.png! |
112 | 1 | Laurent GUERBY | |
113 | 42 | bikepunk bikepunk | et voilà! Nous avons une connexion ssh automatisée sans avoir besoin d'échanger des mots de passe ou passphrase et tout aussi sécurisée, nous pouvons aussi utiliser l'agent ssh pour nous connecter. |
114 | 1 | Laurent GUERBY | |
115 | 1 | Laurent GUERBY | h3. *ssh-agent* |
116 | 1 | Laurent GUERBY | |
117 | 42 | bikepunk bikepunk | L'agent ssh (ssh-agent, lancer avec le service ssh) est un valet (service ayant pour fonction de mémoriser les mot de passe ou passphrase afin d'automatisé le log d'un utilisateur) lié au service ssh. L'agent ssh va ouvrir un shell dans lequel il chargera (grâce à la commande ssh-add) les clés et les passphrases et ainsi nous n'auront plus à les tapés à chaque connexion. |
118 | 19 | Charles-Alban Benezech | !http://img403.imageshack.us/img403/8236/sshagent.png! |
119 | 19 | Charles-Alban Benezech | |
120 | 44 | bikepunk bikepunk | h3. ssh et midnight commander |
121 | 19 | Charles-Alban Benezech | |
122 | 44 | bikepunk bikepunk | Il peut être pratique d'utiliser midnight commander pour gérer des fichiers sur une machine distante, voici un joli tutoriel (en anglais) pour faire ça : |
123 | 44 | bikepunk bikepunk | http://www.lampdocs.com/blog/2008/07/how-to-copy-files-via-ssh-using-midnight-commander/ |
124 | 19 | Charles-Alban Benezech | |
125 | 19 | Charles-Alban Benezech | |
126 | 19 | Charles-Alban Benezech | h2. Mac |
127 | 19 | Charles-Alban Benezech | |
128 | 16 | Charles-Alban Benezech | |
129 | 18 | Charles-Alban Benezech | En attente... |
130 | 42 | bikepunk bikepunk | |
131 | 42 | bikepunk bikepunk | h1. Déchiffrer une "full disk encryption" avec ssh et dropbear |
132 | 42 | bikepunk bikepunk | |
133 | 45 | bikepunk bikepunk | la doc est dans : */usr/share/doc/cryptsetup/README.remote.gz* |
134 | 45 | bikepunk bikepunk | |
135 | 50 | Fabien ADAM | _Update 2015-12_ : |
136 | 50 | Fabien ADAM | * Debian 9 un nouveau paquet existe : dropbear-initramfs, qui va configurer ce qu'il faut beaucoup plus facilement https://packages.debian.org/search?keywords=dropbear-initramfs |
137 | 50 | Fabien ADAM | * Fedora : installer le paquet dracut-crypt-ssh https://bugzilla.redhat.com/show_bug.cgi?id=524727 https://github.com/haraldh/dracut/pull/43/commits https://github.com/mk-fg/dracut-crypt-sshd |
138 | 50 | Fabien ADAM | |
139 | 42 | bikepunk bikepunk | https://projectgus.com/2013/05/encrypted-rootfs-over-ssh-with-debian-wheezy/ |
140 | 42 | bikepunk bikepunk | https://wiki.debian.org/RescueInitramfs |
141 | 47 | bikepunk bikepunk | |
142 | 47 | bikepunk bikepunk | Pour changer le port de dropbear dans initramfs, il faut passer par le workaround décrit ici : |
143 | 47 | bikepunk bikepunk | https://bugs.launchpad.net/ubuntu/+source/dropbear/+bug/539904 |
144 | 48 | bikepunk bikepunk | |
145 | 48 | bikepunk bikepunk | Au boot, ifup trouve que l'interface réseau (eth0) a déjà une adresse, et ne s'exécute pas. |
146 | 48 | bikepunk bikepunk | Pour que /etc/network/interface soit bien pris en compte, il faut rajouter la ligne : |
147 | 48 | bikepunk bikepunk | <pre> |
148 | 48 | bikepunk bikepunk | pre-up ip addr flush dev eth0 |
149 | 48 | bikepunk bikepunk | </pre> |
150 | 48 | bikepunk bikepunk | et là, ca prend en compte la bonne conf réseau :) |