Vous êtes sur la page 1sur 4

Scurit Open SSH

Connexion scurise grce SSH


Rgis Senet

Protgez vos communications de l'ensemble des actes de piratage en chiffrant vos donnes ! La mise en place de protocole scuris pour les communications distantes est vivement recommande du fait que nous ne pouvons pas savoir qui nous coute chaque instant dans limmensit de linternet. Il est donc temps de remplacer tous ces protocoles laissant vos donnes transiter en claires sur le rseau, et de possder vos accs SSH.

linux@software.com.pl

SH ou bien Secure Shell est la fois un programme informatique et un protocole de communication scuris. Le protocole de connexion impose un change de cls de chiffrement en dbut de connexion. Par la suite toutes les trames sont chiffres. Il devient donc impossible d'utiliser un sniffer tel que Wireshark pour voir ce que fait l'utilisateur via les donnes quil reoit ou envoi. Le protocole SSH a initialement t conu avec l'objectif de remplacer les diffrents programmes rlogin, telnet et rsh qui ont la fcheuse tendance de faire passer en clair lensemble des donnes dun utilisateur vers un serveur et inversement, permettant une personne tierce de rcuprer les couples de login/mot de passe, les donnes bancaire etc. Le protocole SSH existe en deux versions: la version 1.0 et la version 2.0. La version 1.0 souffrait de failles de scurit et fut donc rapidement rendue obsolte avec lapparition de la version 2.0. La version 2 est largement utilise travers le monde par une grande majorit des entreprises. Cette version a rgl les problmes de scurit lie la version 1.0 tout en rajoutant de nouvelles fonc-

tionnalits telles quun protocole de transfert de fichiers complet. La version 1.0 de SSH a t conue par Tatu Ylnen, Espoo, en Finlande en 1995. Il a cr le premier programme utilisant ce protocole et a ensuite ouvert une socit, SSH Communications Security pour exploiter cette innovation. Cette premire version utilisait certains logiciels libres comme la bibliothque Gnu libgmp, mais au fil du temps ces logiciels ont t remplacs par des logiciels propritaires. SSH Communications Security a vendu sa licence SSH F-Secure.

Ce quil faut savoir...


Connaissance en systeme dexploitation UNIX/Linux.

Cet article explique...


Lintrt dutiliser des protocoles scuris, La mise en place dun serveur SSH.

70

Linux+ 5/2009

Scurit Open SSH

Installation

Au cours de cet article, la distribution utilise fut une Debian 5.0 (Lenny) entirement mise jour. Attention, il est possible que certaines commandes ne soient pas tout fait identiques sur une autre distribution. Lensemble des installations va se raliser grce au gestionnaire de paquets propre un systme Debian : APT (Advanced Package Tool).

Installation via les sources

Nous allons prsent voir linstallation via les sources directement disponibles sur le site officiel dOpenSSH (http://www.openssh.org/). Dans lventualit o vous avez dj install OpenSSH via le gestionnaire de paquet comme vu prcdemment, il est ncessaire de le dsinstaller avant de faire une nouvelle installation :
nocrash:~# apt-get autoremove ssh

Voici les paramtres principaux au bon paramtrage de notre serveur SSH :


Port 22

Mise jour du systme

Cette directive signifie simplement que le serveur SSH va couter sur le port 22 (port par dfaut). Il est possible de faire couter le serveur SSH sur plusieurs ports en rajoutant plusieurs fois cette directive avec des ports diffrents :

Il est possible tout moment quune faille de scurit soit dcouverte dans lun des modules composant votre systme que ce soit Apache ou quoi que ce soit dautre. Certaines de ces failles peuvent tre critiques dun point de vue scurit pour lentreprise. Afin de combler ce risque potentiel, il est ncessaire de rgulirement mettre jour lensemble du systme grce divers patches de scurit. Il est possible de mettre jour lensemble du systme via la commande suivante :
nocrash:~# apt-get update && apt-get upgrade

Une fois correctement dsinstall, il est possi- Protocol 2 ble de raliser linstallation par les sources : Cette directive permet de spcifier que seul nocrash:~# mkdir /usr/ssh la version 2 du protocole SSH sera utilise, nocrash:~# cd /usr/ssh/ la version 1 de SSH est obsolte pour des nocrash:~# wget ftp:// raisons de scurit :
ftp.openbsd.org/pub/OpenBSD/OpenSSH/ portable/openssh-5.2p1.tar.gz nocrash:~# tar xzvf openssh5.2p1.tar.gz nocrash:~# cd openssh-5.2p1/ nocrash:~# ./configure --bindir= /usr/local/bin --sbindir= /usr/sbin--sysconfdir=/etc/ssh nocrash:~# make && make install PermitRootLogin no

Le systme dexploitation est maintenant compltement jour, il est donc possible de mettre en place un serveur SSH dans de bonnes conditions. Il est possible de ne pas passer par cette tape mais elle est fortement conseille pour la scurit ainsi que la stabilit de votre systme dexploitation.

Cette directive permet dempcher toute connexion distante avec lutilisateur root (superutilisateur). Un accs distant grce avec lutilisateur root par une personne mal intentionne pourrait tre catastrophique pour lintgrit du systme :
PermitEmptyPasswords no

En cas derreur, reportez-vous NB.

Cette directive permet dinterdire les conSur certaines distribution, afin de pouvoir nexions avec un mot de passe vide, il est indisactiver le serveur SSH, il est ncessaire de pensable de mettre cette directive no : supprimer un fichier prsent par dfaut, le Installation de SSH fichier /etc/ssh/sshd_not_to_be_run avant de LoginGraceTime 30 Dans un premier temps, nous allons raliser pouvoir lancer le serveur SSH. linstallation via le gestionnaire de paquet Cette directive permet de limiter le laps de propre un systme Debian, le systme APT nocrash:~# rm -rf temps permettant de se connecter au SSH (Advanced Package Tool). Nous verrons lins/etc/ssh/sshd_not_to_be_run tallation via les sources un peu plus tard : AllowUsers nocrash Une fois le fichier supprim (sil existe), il est AllowGroups admin nocrash:~# apt-get install ssh possible de passer la phase de configuration. NB. Si votre systme a rcemment t insInstallation de SSH en ligne de commande. Configuration du serveur SSH tall, il est possible que certaine librairies soit Le fichier regroupant lensemble des confi- manquante. Il est ncessaire de les installer : Les paquets suivants sont des dpendan- gurations du serveur SSH se trouve tre le fices du paquet SSH : chier /etc/ssh/sshd_config. Nous allons diter Librairie gcc : apt-get install gcc openssh-client ce fichier afin de pouvoir y faire nos modi- Librairie libcrypto / SSL : client shell scuris fications : apt-get install libssl-dev
openssh-server

Configurations pralable

Serveur shell scuritaire

nocrash:~# vi /etc/ssh/sshd_config

Ces directives donnent la possibilit de nautoriser que certains utilisateur et/ou groupe :
AllowTcpForwarding no X11Forwarding no

Figure 2. Nous voici ainsi connect sur notre serveur distant grce Putty

Ces directives permettent de dsactiver le transfert de port TCP et le transfert X11.

www.lpmagazine.org

71

Scurit Open SSH

keys de la machine sur laquelle, vous voulez vous connecter. Pour raliser cela, il est ncessaire dutiliser la commande suivante :
nocrash:~# ssh-copy-id -i ~/.ssh/id_ dsa.pub login@Adresse_de_la_machine

A propos de l'auteur...
Rgis SENET est actuellement tudiant en quatrime anne lcole Suprieur dinformatique Supinfo. Passionn par les tests dintrusion et les vulnrabilits Web, il tente de dcouvrir la scurit informatique dun point de vue entreprise. Il est actuellement en train de sorienter vers le cursus CEH, LPT et Offensive Security. Contact : regis.senet@supinfo.com Site internet : http://www.regis-senet.fr

Pour mon exemple :


nocrash:~# ssh-copy-id -i ~/.ssh/id_ dsa.pub nocrash@192.168.1.138

Figure 3. puTTYKey generator

Authentification

Voici quoi pourrait ressembler le fichier de configuration :


Port 22 Protocol 2 ListenAddress 192.168.1.138 ServerKeyBits 1024 PermitRootLogin no PubkeyAuthentication no IgnoreRhosts yes PasswordAuthentication yes Compression yes .ssh/

Il existe deux mthodes afin de pouvoir sauthentifier en SSH sur une machine distante. Ces Port 22 deux mthodes sont : Protocol 2 Authentification par cl, Authentification par mot de passe.
ListenAddress 192.168.1.138 ServerKeyBits 1024 PermitRootLogin no PubkeyAuthentication yes AuthorizedKeysFile authorized_keys IgnoreRhosts yes #(mettez ces 2 options no si vous ne voulez offrir l'accs qu'aux utilisateurs ayant enregistr leur cls):

Authentification par cl

Lauthentification par cl est un trs bon moyen pour sauthentifier de manire scuris. En effet, des cls asymtriques de type DSA vont tre gnres. Afin de gnrer nos cls DSA, nous allons utiliser la commande suivante :
nocrash:~# ssh-keygen -t dsa

A prsent que lensemble des configurations sont faites, il est ncessaire de lancer le serveur SSH. Pour cela, nous allons utiliser la commande suivante :
nocrash:~# /etc/init.d/ssh start

Les cls gnres par dfaut auront une taille de 1024 bits, ce qui est largement suffisant pour assurer une bonne protection. Deux cls vont donc tre gnres : Une cl publique prsente dans le fichier ~/.ssh/id_dsa.pub avec les permissions 644. Une cl prive prsente dans le fichier ~/.ssh/id_dsa avec les permissions 600.

Authentification par mot de passe

Lors de la cration des cls, une passphrase vous sera demande, il est important de choisir un mot de passe complexe. En effet, cette passphrase permet de crypter la cl prive (cl devant rester absolument votre seule connaissance). Au cas o vous vous seriez tromp dans votre passphrase, il est toujours possible de la nocrash:~# cat /etc/passwd | grep modifier grce la commande suivante : nocrash
nocrash:x:1000:1000:nocrash,,,: nocrash:~# ssh-keygen -p /home/nocrash:/bin/bash

Lauthentification par mot de passe quand elle est une authentification trs simple mettre en place du fait quil ny a rien mettre en place. Il est ncessaire que lutilisateur voulant se connecter possde un compte sur la machine distante et cest tout. Dans lexemple suivant, nous voulons nous connecter avec lutilisateur NoCrash sur la machine rpondant ladresse IP 192. 168.1.138. Nous allons donc vrifier que cet utilisateur existe bien avant tout. Dans le cas o il nexisterait pas, il est ncessaire de le crer sur la machine distante avec un mot de passe (ne pas oublier la directive PermitEmptyPasswords no).

Si tout ce passe bien, nous allons avoir le message suivant :


Starting OpenBSD Secure Shell server :sshd.

Il est alors possible de pouvoir se connecter la machine distante.

Connexion

Afin de se connecter en SSH sur une machine distante possdant un serveur SSH, il est pos-

La dernire tape avant de pouvoir sauthenti- Le x juste aprs le login permet de spcifier fier par cl publique est dautoriser sa propre quun mot de passe est bien prsent. cl. Pour cela, il est ncessaire dajouter votre Voici quoi pourrait ressembler le fichier Figure 4. Configuration de Putty cl publique dans le fichier /.ssh/authorized_ de configuration :

72

Linux+ 5/2009

Scurit Open SSH

sible dutiliser la ligne de commande dans le Il est prsent ncessaire de copier la cl pucas o vous tes sous Linux ou MAC. blique que vous venez de gnrer sur le serPour cela, voici la commande utiliser : veur distant ladresse suivante : ~/.ssh/ authorized_keys nocrash:~# ssh login@ Une fois les cls gnres, il est possible Adresse_de_la_machine de se connecter avec Putty. Il est ncessaire de spcifier lemplacement de la cl prive Soit pour notre exemple : dans Connection>>SSH>>Auth avant de se connecter.
nocrash:~# ssh nocrash@192.169.1.138

Il est maintenant possible de vrifier vos mots de passe :


nocrash: ~# john /etc/shadow

Les mots de passe trouvs sont donc jugs comme tant trop simple, il est prfrable de les modifier.

Astuces

Pour les machines de type Windows, il nexiste pas de client SSH en natif, il est alors nces saire de passer par des logiciels, tels que Putty.

Authentification par cl

Comme il est possible de le voir dans lauthentification par mot de passe, nous allons tenter de nous connecter au serveur distant via SSH grce Putty. Putty ne sachant pas grer les clefs gnres par le serveur avec ssh-keygen il faut utiliser lutilitaire puttygen afin de gnrer un couple de cls utilisable. Ouvrez puTTYKey generator puis gnrer une nouvelle paire de cls. Cliquez prsent sur Save public key et Save private key afin de sauvegarder les cls.

Dans le fichier de configuration de ssh soit le fichier /etc/ssh/sshd_config, il nest pas obligatoire mais fortement conseill de modifier le port utilis par SSH. Par dfaut, il sagit du port 22. Ce petit changement permet de brouiller un attaquant qui sattendrais voir un SSH sur le port 22 et non pas sur le port 1998 par exemple :
Port 1998

Conclusion

Afin de vrifier que vos mots de passe sont assez complexes, il est possible de tenter de les casser vous-mmes afin de vrifier si quelquun dautre en est capable. Pour cela, il est ncessaire dinstaller John The Ripper, un utilitaire de cassage de mot de passe :
nocrash:~# apt-get install john

La mise en place de protocole scuris pour les communications distantes est vivement recommand du fait que nous ne pouvons pas savoir qui nous coute chaque instant dans limmensit de linternet. Il ne faut pas non plus croire que le danger vient simplement de linternet. En effet, la majorit des actes de piratages informatique se font au sein dune mme entreprise par les employs eux-mmes. Il est donc temps de protger vos communications de lensemble de ces voyeurs, il est temps de chiffrer vos donnes, il est temps de remplacer tous ces protocoles laissant vos donnes transiter en claires sur le rseau, il est temps de possder vos accs SSH.

www.lpmagazine.org

73

Vous aimerez peut-être aussi