1 OpenSSH......................................................................................................................2 1.1 Introduction ..........................................................................................................2 1.2 Installation............................................................................................................2 1.3 Test de connexion ................................................................................................2 1.4 Configuration du serveur ssh ...............................................................................3 1.5 Contrle du service ssh ........................................................................................4 1.6 Log .......................................................................................................................4 1.7 Client ssh..............................................................................................................5 1.8 Connexion ssh ......................................................................................................6 1.8.1 Authentification par mot de passe....................................................................6 1.8.2 Authentification par cl (avec passphrase) ......................................................7 1.8.3 Authentification par cl (sans passphrase).....................................................12 1.9 La copie scurise ..............................................................................................15 1.10 Le transfert de fichier scuris ...........................................................................16 1.11 Le Xforwarding en utilisant SSH.......................................................................18 1.12 Tunnel SSH ........................................................................................................19 1.13 TUNNEL SSH -L (LOCAL) ET SSH -R (REMOTE) ......................................21 1.14 MMO ...............................................................................................................22
2014 Hakim Benameurlaine 2 1 OpenSSH 1.1 Introduction De nombreux outils ont t fournis pour utiliser la capacit du rseau. changer, copier, utiliser des Shells distance. Les noms de ces outils sont respectivement ftp, rcp, telnet, etc... Bien que ces outils, utiliss pendant des annes et mme encore aujourd'hui dans beaucoup dentreprises, soient trs pratiques, ils comportent une faiblesse importante. Leurs transactions sont transmises en clair via le rseau. De ce fait, n'importe quelle personne mal intentionne peut tre en mesure d'observer ce que vous fates, allant mme jusqu' subtiliser vos donnes personnelles et mots de passe. SSH signifie Secure SHell. C'est un protocole qui permet de faire des connexions scurises (cryptes) entre un serveur et un client SSH. Nous allons utiliser le programme OpenSSH, qui est la version libre du client et du serveur SSH. 1.2 Installation Pour RedHat, les paquetages openssh sont les suivants : openssh openssh-askpass openssh-clients openssh-server 1.3 Test de connexion
2014 Hakim Benameurlaine 3 1.4 Configuration du serveur ssh Le fichier de configuration du serveur SSH est /etc/ssh/sshd_config. A ne pas confondre avec le fichier /etc/ssh/ssh_config, qui est le fichier de configuration du client SSH. Les lignes les plus importantes de ce fichier de configuration sont: Port 22 Signifie que le serveur SSH coute sur le port 22, qui est le port par dfaut de SSH. Vous pouvez le faire couter sur un autre port en changeant cette ligne. Vous pouvez aussi le faire couter sur plusieurs ports la fois en rajoutant des lignes similaires. Protocol 2 Signifie que votre serveur SSH accepte uniquement la version 2 du protocole SSH. C'est une version plus scurise que la version 1 du protocole. Certains vieux clients SSH utilisent SSH version 1. Si vous voulez que le serveur accepte les deux protocoles, changez la ligne en : Protocol 2,1
PermitRootLogin yes Signifie que vous pouvez ouvrir une connexion SSH en tant que root. Vous pouvez changer et mettre "no", ce qui signifie que pour vous connecter en root distance, vous devrez d'abord vous connecter par SSH en tant que simple utilisateur, puis utiliser la commande su pour devenir root. X11Forwarding yes Signifie que vous allez pouvoir travailler en export display par SSH. Ce sera expliqu plus tard, dans la partie Xforwarding. 2014 Hakim Benameurlaine 4 Si vous avez modifi le fichier de configuration du serveur, il faut lui dire de relire son fichier de configuration :
1.5 Contrle du service ssh Dmarrer le service openssh # service sshd start Dmarrage de sshd : [ OK ] Vrifier le statut du dmon sshd # service sshd status sshd (pid 1579) en cours d'excution Arrter le service sshd # service sshd stop Arret de sshd : [ OK ] 1.6 Log Si problme vrifier le fichier log /var/log/secure # tail f /var/log/secure
2014 Hakim Benameurlaine 5 1.7 Client ssh Les informations spcifiques l'utilisateur se trouvent le rpertoire ~/.ssh
Le fichier de configuration du client est : /etc/ssh/ssh_config Il existe diffrentes options pour se connecter un hte via la commande ssh. -l login Identifiant de l'utilisateur. -v -vv -vvv Mode verbeux, permet d'obtenir les messages de debugage plus ou moins complets (le nombre maximum tant 3). -1 ou 2 Version de ssh employ. ssh1 ou ssh2 -p port Numro du port distant Exemple d' utilisation : ssh -vv -l utilisateur -p port -(1|2) hte ou ssh utilisateur@hte L'hte distant doit avoir un serveur ssh, nomm sshd, qui permet la connexion. 2014 Hakim Benameurlaine 6 1.8 Connexion ssh Il existe trois mthodes dauthentification via ssh. 1.8.1 Authentification par mot de passe C'est la mthode la plus simple. Depuis la machine cliente, tapez :
On peut spcifier le nom de lusager avec loption l :
Si c'est la premire connexion SSH depuis ce client vers ce serveur, il vous demande si le fingerprint de la cl publique prsente par le serveur est bien le bon. Pour tre sr que vous vous connectez au bon serveur, vous devez connatre de faon certaine le fingerprint de sa cl publique et la comparer celle qu'il vous affiche. 2014 Hakim Benameurlaine 7 Si les deux fingerprints sont identiques, rpondez yes, et la cl publique du serveur est alors rajoute au fichier ~/.ssh/known_hosts Si vous vous tes dj connect depuis ce client vers le serveur, sa cl publique est dj dans le fichier ~/.ssh/known_hosts et il ne vous demande donc rien. Ensuite, entrez votre mot de passe et vous verrez apparatre le prompt, comme lors dune connexion locale. Pour quitter la session ssh :
1.8.2 Authentification par cl (avec passphrase) Au lieu de s'authentifier par mot de passe, les utilisateurs peuvent s'authentifier grce la cryptographie asymtrique et son couple de cls prive/publique, comme le fait le serveur SSH auprs du client SSH. 1) Gnrer la paire de cls SSH s'appuie sur des algorithmes paire de clefs, ce qui signifie que vous disposez d'une cl publique, disponible pour tout un chacun et une cl prive dont vous gardez jalousement l'entre. Ce systme va nous permettre de nous identifier auprs des htes que nous dsirons contacter. Il nous faut au pralable crer le trousseau. 2014 Hakim Benameurlaine 8 Pour gnrer un couple de cls DSA, tapez :
Pour gnrer un couple de cls RSA, tapez :
Pour les deux algorithmes (DSA, RSA), le systme nous demande dans quel fichier nous dsirons sauvegarder la cl. Les fichiers par dfaut semblent une bonne solution. Par la suite, une passphrase nous est demande. Celle- ci est un mot de passe amlior , car non limit un mot ou une petite suite de caractres. Il faut cependant prendre des prcautions, car en cas de 2014 Hakim Benameurlaine 9 perte de la passphrase, vous ne pourriez plus vous authentifier en tant que propritaire authentique. Les cls gnres ont par dfaut une longueur de 1024 bits, ce qui est aujourd'hui considr comme suffisant pour une bonne protection. Par dfaut (il demande confirmation lors du processus de cration), la cl prive est stocke dans le fichier ~/.ssh/id_dsa avec les permissions 600 et la cl publique est stocke dans le fichier ~/.ssh/id_dsa.pub avec les permissions 644. Lors de la cration, il vous demande une passphrase qui est un mot de passe pour protger la cl prive. Le passphrase sert crypter la cl prive. La passphrase vous sera alors demande chaque utilisation de la cl prive, c'est dire chaque fois que vous vous connectez en utilisant cette mthode d'authentification. Un mcanisme appel ssh-agent permet de ne pas rentrer le mot de passe chaque fois... comme nous le verrons un peu plus loin. Vous pouvez tout moment changer la passphrase qui protge votre cl prive avec la commande :
2014 Hakim Benameurlaine 10 2) Autoriser votre cl publique Pour cela, il suffit de copier votre cl publique dans le fichier ~/.ssh/authorized_keys de la machine sur laquelle vous voulez vous connecter distance via ssh. La commande suivante permet de raliser cette opration via SSH : Si on refait la copie, il ne demande que le mot de passe :
On peut maintenant se connecter sans mot de passe de lusager. Il faut juste fournie la passphrase. 2014 Hakim Benameurlaine 11
3) Se connecter via ssh La commande est la mme que pour une authentification par mot de passe.
2014 Hakim Benameurlaine 12 1.8.3 Authentification par cl (sans passphrase) Gnome : paqurtage : polkit-gnome
Cette section s'adresse ceux qui utilisent un couple de cls publiques / prives, et qui ont crypt leur cl prive avec une passphrase (c'est la configuration la plus sre). Par consquent, le client SSH demande la passphrase chaque utilisation des cls pour s'authentifier. Pour viter d'avoir taper systmatiquement sa passphrase, il faut utiliser ssh-agent : ce programme tourne en tche de fond et garde la clef en mmoire. La commande ssh-add permet de donner sa cl ssh-agent. Ensuite, quand vous utilisez le client ssh, il contacte ssh-agent pour qu'il lui donne la cl. Mode console Dans une console, dmarrer ssh-agent en tche de fond : 2014 Hakim Benameurlaine 13 Puis donnez votre cl l'agent :
Il vous demande alors votre passphrase. Maintenant que votre cl a t transmise l'agent, vous pouvez vous connecter sans entrer de mot de passe toutes les machines pour lesquelles vous avez mis votre cl publique dans le fichier ~/.ssh/authorized_keys.
Pour tuer l'agent ssh-agent, il suffit de faire :
Mode graphique 2014 Hakim Benameurlaine 14 Dmarrez le serveur graphique avec la commande : # ssh-agent startx Il vous suffit ensuite d'ouvrir un (xterm) terminal graphique et de taper :
L'agent sera actif pour toutes les applications utilises en mode graphique.
2014 Hakim Benameurlaine 15 1.9 La copie scurise SSH fournit un outil de copie scurise en standard, sous le nom de scp pour SecureCoPy. Il remplace son anctre rcp. Son usage est trs simple : scp hte_source:source hte_destination:destination Lorsque l'hte correspond la machine o vous vous trouvez, il n'est pas ncessaire de l'inscrire.
Vous pouvez galement faire des copies rcursives, comme nous le ferions avec n'importe quel autre utilitaire de copie. Par exemple pour copier le rpertoire /data dans /root/data du serveur 192.168.1.102 :
2014 Hakim Benameurlaine 16 1.10 Le transfert de fichier scuris Tout comme on peut copier des fichiers distance par l'intermdiaire de scp, il est galement possible de transfrer des fichiers par l'intermdiaire d'un ftp scuris nomm SecureFTP.
2014 Hakim Benameurlaine 17 Commandes disponibles sur sftp : cd path Change le rpertoire distant vers 'path' lcd path Change le rpertoire local vers 'path' chgrp grp path Change le groupe de fichier 'path' par 'grp' chmod mode path Change les permissions du fichier 'path' 'mode' chown own path Change le propritaire du fichier 'path' par 'own' help Affiche ce message d'aide get remote-path [local-path] Tlcharge le fichier lls [ls-options [path]] Affiche le listing du rpertoire local ln oldpath newpath Cre un lien symbolique du fichier distant lmkdir path Cre un rpertoire local lpwd Affiche le rpertoire courant ls [path] Affiche le listing du rpertoire distant lumask umask Positionne l'umask local 'umask' mkdir path Cre le rpertoire distant put local-path [remote-path] Charge le fichier pwd Affiche le rpertoire courant distant exit Quitte sftp quit Quitte sftp rename oldpath newpath Renomme le fichier distant rmdir path Supprime le rpertoire distant rm path Supprime le fichier distant symlink oldpath newpath Cre un lien symbolique du fichier distant version Affiche la version de sftp !command Excute la 'commande' dans un shell local ! Sort vers un shell local ? Affiche ce message d'aide
2014 Hakim Benameurlaine 18 1.11 Le Xforwarding en utilisant SSH L'avantage d'utiliser ssh rside dans la connexion chiffre et l'impossibilit un agresseur ventuel de lire ce que vous fates via le rseau. 1) Il faut dabord autoriser le client recevoir le Xforwarding. Pour cela il faut modifier le fichier /etc/ssh/ssh_config (sur le serveur local):
2) Activer l' option X11Forwarding dans le fichier de configuration /etc/ssh/sshd_config du serveur distant. 3) Ensuite lancer lapplication dans la session ssh partir du serveur local : 192.168.189.128 tant ladresse du serveur distant. Lapplication xclock sera affiche le serveur local mais sexcute sur le serveur distant. 2014 Hakim Benameurlaine 19 1.12 Tunnel SSH Faire un tunnel SSH est un moyen simple de crypter n'importe quelle communication TCP entre votre machine et une machine sur laquelle vous avez un accs SSH. En premier, dmarrer le service apache sur le serveur 192.168.1.103 :
Ensuite tablir un tunnel SSH pour une connexion HTTP vers le serveur 192.168.1.103 partir du serveur 192.168.1.102 :
2012 est le numro de port sur la machine cliente partir duquel la connexion entre dans le tunnel SSH (le port doit tre suprieur 1024 si on ne veut pas avoir lancer le tunnel en tant que root). Il suffit de lancer un navigateur Web en lui demandant de se connecter en local sur ce port : 2014 Hakim Benameurlaine 20
2014 Hakim Benameurlaine 21 1.13 TUNNEL SSH -L (LOCAL) ET SSH -R (REMOTE) On va dcrire le fonctionnement d'un tunnel en mode local et en mode distant. SSH Local
Syntaxe : localhost% ssh -L port-local:adresse:port serveur-ssh Le SSH local permet de transmettre les demandes locales (sur le port port-local de localhost) vers le serveur-ssh qui les envoie sur le port port de l'adresse adresse. Le mode local vous permet d'accder un serveur sur un rseau priv.
2014 Hakim Benameurlaine 22 SSH Distant
Syntaxe : localhost% ssh -R port-distant:adresse:port serveur-ssh Le SSH distant permet de transmettre les demandes distantes (sur le port port-distant de serveur-ssh) vers localhost qui les envoie sur le port port de l'adresse adresse. Le mode distant vous permet d'ouvrir l'accs un serveur sur un rseau priv. 1.14 MMO
Sshd Serveur ssh Scp Copie distante scurise ssh-keygen gnration de clefs d'authentification Sftp Transfert scuris de fichiers slogin/ssh Client ssh ssh-add Ajoute les identits DSA ou RSA l'agent d'authentification ssh-agent Agent d'authentification ssh-keyscan Recueille les clefs publiques ssh