Sunteți pe pagina 1din 94

SSH : Secure SHell

De lutilisateur ladministrateur
Version novembre 2008

F. Bongat [fbongat@lmd.ens.fr]

Prsentation

Scuriser des connexions distance : Secure Shell

SSH permet de scuriser les communications des rseaux


Utilise pour cela de la cryptographie SSH est compos dun ensemble d'outils permettant des connexions scurises entre des machines. Ces outils ont pour but de remplacer les utilitaires de connexions classiques n'utilisant pas de chiffrage.

Remplace : rcp, rlogin, rsh, telnet (ftp par sftp en SSH V2)

SSH chiffre et compresse un canal de communication qui scurise les donnes transmises (permet dviter les sniffers rseaux) Non seulement le mot de passe est chiffr lors de la connexion mais les informations circulant sur le rseau entre les deux machines le sont aussi.

Prsentation

Terminologie de SSH :
Cest un protocole c'est--dire cest une mthode standard permettant des machines d'tablir une communication scurise dclin en 2 versions : Version 1 et version 2 : le protocole v1 possdait une faille permettant un pirate d'insrer des donnes dans le flux chiffr Cest aussi un produit : SSH Communications Security Inc (V1 et V2) Initialement dvelopp par Tatu Ylnen (payant) dernire version gratuite v1.2.12 OpenSSH du projet OpenBSD (V1 et V2) apparat en 1999, aujourdhui cest le plus utilis Produit en accord avec la lgislation franaise sur la cryptographie

http://www.ssi.gouv.fr/fr/reglementation/index.html#produits_crypto

Ce sont aussi des commandes en ligne

Prsentation

OpenSSH

Site : http://www.openssh.org Version logicielle actuelle : openssh-5.1.tar.gz

Existe en format packag pour toutes distributions

Subit un audit permanent du code OpenSSH utilise principalement :


OpenSSL Zlib pour la compression des flux Perl lors de linstallation, pour des applications tiers (ssh-copyid) Ainsi que des gnrateurs dentropie

PRNGD (Pseudo Random Number Generator Daemon) /dev/random

Prsentation

La bote outils SSH est gnralement compose de :


Serveur : sshd Clients : ssh, scp, sftp (ssh = slogin) Des outils de gestion: ssh-add, ssh-agent, ssh-keygen, sshkeyscan Les fichiers de configuration (OpenSSH) sont souvent dans:
Pour le serveur : /etc/ssh Pour les clients : /etc/ssh et $HOME/.ssh

Fonctionnement sur le schma dun systme client serveur


Les clients ssh demandent une ouverture de connexion au serveur sshd

Prsentation

Cryptographie dans SSH

Linux/Unix : PAM et SSH Gestion centralise des services:


Possibilit

Repose sur les algorithmes d'OpenSSL Algorithmes asymtriques: RSA et DSA Algorithmes symtriques: 3DES, Blowfish, AES, Arcfour ...

d'activer le support de l'interface PAM(Pluggable Authentication Modules) au niveau de sshd

SSH
Client

Fonctionnement du protocole SSH

Mise en place dun canal scuris


C demande la connexion

Serveur S divulguent les versions de protocoles autoriss Port 22 C envoie la version de protocole choisie S transmet la liste des informations paramtres (chiffrement, authentification, compression etc) et transmet aussi sa cl publique, cl de session et octets de contrle C envoie S sa cl de session chiffre avec la cl publique de S et lalgorithme utilis S dchiffre la cl de session puis envoie un message de confirmation chiffr avec la cl de session reue de C Fin de la phase de lauthentification du serveur

Dbut de la phase dauthentification de lutilisateur

Prsentation

L'authentification des serveurs


Le principe dauthentification du serveur se fait par chiffrement cl publique du protocole SSH. Le client doit donc connatre la cl publique du serveur sur lequel il veut se connecter avant toute connexion. Ainsi, il existe un mcanisme pour la machine cliente pour stocker les cls d'un serveur afin de les rutiliser ensuite; Il pourra ainsi vrifier la cl d'un serveur chaque nouvelle connexion avec celle enregistre lors de la premire connexion; Cela permet d'viter les attaques du type man-in-the-middle

Prsentation

L'authentification des utilisateurs

Une fois que la connexion scurise est mise en place entre le client et le serveur, le client doit s'identifier sur le serveur afin d'obtenir un droit d'accs.

Par mot de passe: Le client envoie un nom d'utilisateur et un mot de passe au serveur au travers de la communication scuris et le serveur vrifie si l'utilisateur concern a accs la machine et si le mot de passe fourni est valide Par cls publiques : Si l'authentification par cl est choisie par le client, le serveur va crer un challenge et donner un accs au client si ce dernier parvient dchiffrer le challenge avec sa cl prive Par hte de confiance : systme quivalent aux systmes utilisant rhost ou hosts.equiv en utilisant les cls publiques des serveurs Et aussi par Kerberos, SmartCard, PAM

Prsentation

VPN (virtual Private Network) avec SSH


Le support d'un protocole de VPN est une fonctionnalit apparue rcemment dans OpenSSH. Le principe est le mme que pour OpenVPN mais il est bas sur le protocole SSH (diffrents des tunnels TCP SSH) Supporte les interfaces rseaux virtuelles Tun/Tap (niveau 3/niveau 2) Option activer du ct serveur : PermitTunnel

10

Prsentation

Sparation de privilges du serveur SSH (chroot)

Chaque processus lors de son excution ne possde que les privilges ncessaires, et na alors accs quaux lments ncessaires son excution

cette mise en place augmente la scurit des applications

chroot est une commande des systmes d'exploitation UNIX permettant de changer pour un programme le rpertoire racine de la machine hte Cette commande permet d'isoler l'excution d'un programme et d'viter ainsi certaines malveillances

exemple: l'exploitation d'un dpassement de tampon, pour ensuite accder au rpertoire racine de la machine hte.

11

Prsentation

Sparation de privilges du serveur SSH (chroot)

sshd utilise deux processus :


le processus pre privilgi contrle les progrs du processus fils non privilgi (effectue le minimum ncessaire : la russite de l'authentification est dtermine par le processus pre) Le processus fils est non privilgi. Ceci est atteint en changeant ses uid/gid vers un utilisateur non privilgi

12

Prsentation

Mise en cage : chroot


OpenSSH intgre la directive ChrootDirectory permettant de chrooter dans un rpertoire aprs la connexion. Cette fonctionnalit est principalement utilise pour du SFTP on peu parfaitement configurer l'ensemble pour les utilisateurs SSH Il faut construire l'environnement ncessaire

13

Prsentation

Clients/serveurs multi plates-formes :

Windows (clients gratuits) :

SSH Tectia

SSH Secure Shell for Workstation (nom du produit) http://www.ssh.com/support/downloads/secureshellwks/non-commercial.html Seul le client Tectia 3 (ex-ssh.com) est gratuit, les versions Tectia sont payantes. Inconvnient de la version gratuite : le module de connexion base de certificats X509 est dsactiv ainsi que le transfert dagent Clients regroupant toutes les commandes connues sous OpenSSH http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Outil graphique de transfert de fichiers (scp/sftp, donc pas de ssh) trs performant http://winscp.net/eng/docs/lang:fr/ http://www.cygwin.com/ sshd aussi disponible seul sans lenvironnement Cygwin complet (attention au problmes de scurit lis ce serveur moins robuste)

Putty

Winscp (v3)

Serveur gratuit pour windows via Cygwin


14

Prsentation

Clients/serveurs multi plates-formes :

Mac

MacOS 9 et infrieur :

client nifty-telnet (v1 uniquement) http://www.lysator.liu.se/~jonasw/freeware/niftyssh/ clients/serveur natifs (OpenSSH) fugu : outil graphique de transfert de fichiers http://www.columbia.edu/acis/software/fugu/

MacOS X :

Unix (tous)

OpenSSH

http://www.openssh.org/ Propos en standard dans la plupart des distributions Unix

Ssh.com (Tectia): existe aussi en version Unix

15

Ct client

SSH

vu du ct client

16

Ct client : unix - ssh


Utilisation

simple : ssh
: ssh login@machine_distante

Connexion distante (alternative telnet, rlogin) :


Syntaxe

*******
Ou

bien avec loption -l

17

*******

Ct client : unix - ssh


Utilisation

simple : ssh

Premire connexion distante :


message

dalerte lors dune connexion vers une nouvelle machine distante

*******

18

Il est ncessaire de rpondre yes la question demande pour se connecter. En fait, il sagit dautoriser lenregistrement de la cl publique du serveur distant dans un fichier de configuration (known_hosts)

Ct client : unix ssh : rsh


Utilisation

simple : ssh
dune commande shell distance

Connexion distante (alternative rsh) :


Utilisation

Ici on liste le contenu du rpertoire $HOME/bin sur la machine distante fantasio *******
Execution de la commande shell ls afin dafficher le $HOME/bin distant

19

Ct client : PuTTY - ssh

SSH et Windows : PuTTY


Implmentation libre Proche dOpenSSH

Bote outils qui comprend un ssh, sftp, scp, ssh-agent et utilise des cls (compatibles avec les cls OpenSSH) 7 binaires ( ou un fichier zip) dont 5 indispensables (pageant, pscp, psftp,putty et enfin puttygen) copier (ou dcompresser) dans le dossier : C:\Program Files\PuTTY

20

Ct client : PuTTY - ssh

SSH et Windows : PuTTY

21

pageant : agent dauthentification (voir chapitre authentification forte) plink : ssh en mode commande dans une console (~ Invite de Commande) pscp : scp en mode console psftp : sftp en mode console putty : ssh en mode graphique puttygen : gestion des cls en mode graphique puttytel : telnet en mode graphique (pas besoin !)

Ct client : PuTTY - ssh


SSH et Windows : PuTTY

SSH

connexion rapide avec putty


Double cliquer sur licne PuTTY Puis remplir le champ suivant: Host Name

Et valider open pour lancer la connexion

22

Ct client : PuTTY - ssh

SSH et Windows : PuTTY

SSH

connexion rapide avec putty

Ajout de la cl publique dans la base de registres (quivalent au fichier known_hosts) Rpondre oui pour passer la suite !

23

Ct client : PuTTY - ssh

SSH et Windows : PuTTY

SSH

connexion rapide avec putty

Taper le login aprs le prompt login as Puis entrer le mot de passe Connexion en ssh sur la machine distante avec PuTTY

24

Ct client : unix - sftp

Utilisation simple : sftp

Transfert de fichiers (une alternative scurise ftp)


sftp login@machine uniquement, pas doption l Les commandes sont les mmes quavec ftp (put, get, mput etc)

*******

25

Ct client : PuTTY - sftp


psftp fonctionne comme sftp dans un shell

SSH et Windows : PuTTY

SFTP
Ouvrir une console Invite de commandes Tapper psftp dans cette fentre

psftp login@machine

26

! Si la commande nest pas trouve, rfrez vous la partie configuration avance pour configurer le PATH

Ct client : unix - scp


Utilisation

scp

simple : scp

Transfert de fichiers (alternative scurise rcp)


est une commande de copie de fichiers (ou rpertoires) entre 2 machines travers le rseau
Envoi dun fichier vers une machine

*******

*******

27

Rcupration dun fichier sur une machine distante

Informations sur le transfert

Ct client : unix - scp


Utilisation

simple : scp

Aucun rpertoire dans temp

Transfert de fichiers (alternative scurise rcp)


scp r (option rcursive) : permet de transfrer les rpertoires
Transfert du rpertoire bin

*******
Fichiers transfrs Et rpertoire cr % du transfert / Vitesse de transfert Taille transfre / Temps du transfert

28

Ct client : PuTTY - scp


pscp fonctionne comme scp dans un shell

SSH et Windows : PuTTY

SCP
Ouvrir une console Invite de commandes Tapper pscp dans cette fentre

pscp fichier login@machine:

29

! Si la commande nest pas trouve, rfrez vous la partie configuration avance pour configurer le PATH

Ct client : unix - fichiers impliqus

Structure des fichiers impliqus du ct utilisateur :


Rpertoire ssh par utilisateur : $HOME/.ssh 2 fichiers :


known_hosts : contient les cls publiques des serveurs sur lesquels lutilisateur sest connect (vrifie ainsi si un serveur na pas t substitu ou chang) config : personnalisation des configurations clientes

Exemple : contenu du fichier config : Host fantas Hostname fantasio.bdnet User fbongat lors dune connexion ssh et que les comptes sur les 2 machines sont diffrents, on pourra grce la configuration ci-dessus faire: ssh fantas ( la place de ssh fbongat@fantasio.bdnet) qui renverra systmatiquement le user fbongat, ce qui permettra de ne plus spcifier lutilisateur avec les options -l ou @

30

Ct client : PuTTY fichier des cls dhtes

ct client : PuTTY - Fichiers

SSH et Windows : PuTTY

Cl dhte des connexions (peuvent tre supprimes)

Gestion des cls dhtes


Ces cls sont insres dans la base des registres de Windows. Pour en supprimer une, lancer le programme regedit Via le menu Excuter du menu Dmarrer

Les cls sont situes dans : HKEY_CURRENT_USER\Software\Si monTatham\PuTTY\SshHostKeys

31

Ct client : PuTTY - profiles

SSH et Windows : PuTTY

Configuration avance

Rattacher les options slectionnes un profile dutilisateur


Donner un nom au profile Puis sauver : save

Utiliser le profile
le slectioner Puis le charger load

32

ct client : ssh et X11

SSH et les applications graphiques Unix :

relaye simplement toutes applications X11 travers le canal chiffr

Ne pas configurer de variable $DISPLAY dans les scripts de connexion (.cshrc, .profile, .bashrc etc..), ssh doit remplir lui-mme cette valeur

Donc cest plus simple que telnet !

Il est ncessaire davoir un serveur X11 sur la machine du client et de le mettre en fonctionnement Pour windows, il existe un serveur X11 gratuit, simple et efficace qui interagit trs bien avec PuTTY

Xming : http://freedesktop.org/wiki/Xming

Loption -X active lX11 en cas de non configuration de la variable ForwardX11 dans le fichier /etc/ssh/ssh_config : voir partie ct serveur
ssh X login@machine

33

ct client : ssh et X11

SSH et les applications graphiques Unix :

Avec le client Windows, il faut spcifier le demande de redirection du traffic X11 Unix dans la session ssh Option : X11 Forwarding dans PuTTY :

Lancer putty Menu SSH Tunnels Cocher la case : Enable X11 forwarding

34

Noubliez pas sous Windows, il faut aussi lancer un mulateur X11 (Xming)

Ct serveur

SSH

vu du ct serveur

35

Ct serveur : sshd

Le serveur : sshd

Rpertoire du serveur : /etc/ssh


Les fichiers de configuration :

sshd_config , ssh_config, denyusers

Les fichiers des cls prives/publiques du serveur :


Cls compatible V1 (ssh v1/ssf) ssh_host_key (prive) , ssh_host_key.pub (publique) Cls compatibles V2 (ssh v2) ssh_host_dsa_key (prive) , ssh_host_dsa_key.pub (publique) ssh_host_rsa_key (prive) , ssh_host_rsa_key.pub (publique)

36

Ct serveur : configuration
Configuration

sshd_config

du serveur : sshd

Fichiers de configuration :
: paramtrages lors des connexions vers le serveur local, ce fichier sapplique au dmon sshd : paramtrages base et gnral du client ssh, ce fichier sapplique donc pour les commandes ssh, scp, sftp

ssh_config

37

Ct serveur : sshd_config
Protocol : choix du protocole utiliser (initialiser de prfrence 2 ou si besoin dune compatibilit SSH V1, sshd_config laisser : 2,1) (partie 1) PermitRootLogin : autorise le compte root se connecter (de prfrence initialiser no) StrictModes yes : vrifie les permissions des fichiers et rpertoires importants (accs au propritaire uniquement) RSAAuthentication yes : mthode d'authentification par RSA uniquement en V1 et V2 PubkeyAuthentication yes : mthode dauthentification forte (rsa ou dsa) en V2 uniquement AuthorizedKeysFile .ssh/authorized_keys : nom et localisation du fichier de cls publiques individuelles sur les htes locaux.

38

Ct serveur : sshd_config
PasswordAuthentication yes : autorise la connexion par sshd_config mot de passe PermitEmptyPasswords no : interdit les connexions sans (partie 2) mot de passe X11Forwarding yes : active le transfert X pour sshd X11DisplayOffset 10 : rservation dun numro daffichage X11 afin dviter les collisions entre sshd et le vrai serveur X. X11UseLocalhost yes : bind sur linterface de la boucle locale, permet dviter les problmes de proxy Subsystem sftp /usr/lib/ssh/sftp-server : active le systme de transfert de fichiers via sftp

39

Ct serveur : sshd_config

Filtrage d'utilisateurs ou de groupes


Variables : AllowUsers et DenyUsers AllowGroups et DenyGroups Permettre l'accs certains utilisateurs et pas d'autres un accs ssh

Configuration pour autoriser les deux utilisateurs (fbongat et bob) et aucun autre se connecter en ssh: DenyUsers AllowUsers fbongat bob

40

Ct serveur : ssh_config
ssh_config
Host

* : spcifie les htes concerns par la configuration qui suit (adresse ip ou nom DNS, * = toutes) ForwardAgent yes : indique l'agent que lagent d'authentification doit tre renvoy vers la machine distante ForwardX11 yes : autorise la redirection du serveur graphique (possibilit de lancer des applications graphiques dans la session ssh) ForwardX11Trusted yes: noblige pas le client ssh crer un untrusted X cookie de sorte que les attaques sur la retransmission X11 ne puissent pas devenir des attaques des clients X11 depuis une machine distante

41

Ct serveur : ssh_config
ssh_config
VerifyHostKeyDNS

yes : Le client ssh peut vrifier la clef publique RSA/DSA dun serveur SSH laide du DNS yes/ask/no

StrictHostKeyChecking

42

no : automatise la gestion des cls dhtes dans known_hosts. Si la cl nexiste pas, la connexion ne sera pas refuse, et sera rajoute sans le demander lutilisateur (lutilisateur ne verra pas les changements de cls du serveur) ask : demande lutilisateur sil veut ajouter la cl dans le fichier known_hosts, puis permet la connexion, si la cl du serveur change, un message davertissement sera envoy (voir page 31) lutilisateur

Ct serveur : ssh_config
ssh_config
StrictHostKeyChecking

yes : vrifie que la cl publique de lhte distant existe sur lhte qui cherche se connecter et ensuite autorise la demande de connexion. Une non connaissance de la cl ou un changement de cl du serveur implique alors un chec de la connexion ssh Il faut donc fournir la cl publique du serveur distant la configuration cliente qui cherche se connecter /etc/ssh/ssh_known_hosts : base de donnes des cls dhte On ne peut donc pas se connecter la premire fois sans avoir la cl installe

43

Ct serveur : StrictHostKeyChecking
Exemple dune premire connexion un serveur
StrictHostKeyChecking ask

*******
StrictHostKeyChecking no Connexion avec message davertissement au dbut de la connexion

*******

Connexion russie sans message davertissement

StrictHostKeyChecking yes

44

Connexion chouant

Ct serveur : problme de cls

Problmatique lors dune connexion ssh

Alerte lors dune connexion alors que la cl enregistr dans le fichier known_host nest plus la mme que celle du serveur sur lequel on cherche se connect

45

Ct serveur : problme de cls

Problmatique lors dune connexion ssh

Dans le cas dun tel message dalerte, il est ncessaire de prvenir ladministrateur du serveur afin de vrifier si ce changement a bien t volontaire Ensuite afin de pouvoir se connecter, il faut supprimer lancienne cl dans le fichier .ssh/known_hosts, cest--dire la ligne avec le nom de lhte concern (pour tous les utilisateurs) La cl du 192.168.225.1 a chang, supprimer
cette ligne afin de ne plus avoir le message dalerte prcdent

Fichier : known_hosts

46

Ct serveur : cls du serveur

Les fichiers de cls du serveur sshd

En fonction de la version de protocole et des algorithmes :

Les cls prives :


Protgs en lecture pour root uniquement ssh_host_key : ssh v1, RSA1 ssh_host_key_rsa : v2, RSA ssh_host_key_dsa : v2, DSA

Les cls publiques


En lecture pour tous *.pub extension valable dans tous les cas

47

Ct serveur : cls du serveur


Exemples

Cl prive (rsa) dun serveur (elle est non chiffre)

48

Ct serveur : changement de cls


Changement

de cls du serveur

Commande : ssh-keygen t Algo f files Options :


-t : algorithme f fichier cible -N : phrase didentification vide
Changement de la cl rsa

49

Ct serveur : changement de cls

Consquence dun changement de cls du serveur


Alerte lors dune re-connexion alors que la cl du serveur a chang : Alerte pour tous les utilisateurs qui chercheront se connecter sur le serveur sshd

50

Ct serveur : gnralits

sshd en coute sur le port 22/TCP

Toutes les communications ssh passent par ce port (ssh, scp, sftp, tunnels ...)

Mode debug :

Mode debug du serveur sshd : # sshd d Sur un port non privilgi : (pour des tests) # sshd d p 5555
Document sous Licence GFDL

51

Ct serveur : dmarrage/arrt

Lancement du serveur :
# /etc/init.d/sshd start (ou # service sshd start)

Arrt du serveur :
# /etc/init.d/sshd stop (ou # service sshd stop)

Relancer le serveur aprs une modification de la configuration (sshd_config) :


# /etc/init.d/sshd reload (ou # service sshd reload) # /etc/init.d/sshd restart (ou # service sshd restart)
Rechargement du fichier de configuration Le redmarrage du serveur sshd ninterrompt gnralement pas les connexions ouvertes

52

Authentification forte (AF)

SSH

et lauthentification forte

53

Authentification forte

Connexion par authentification forte

Base sur une procdure d'identification plus complexe et diffrente de celle des systmes Unix classiques (nom et mot de passe) Cette procdure repose sur un principe dune paire de cls publique/prive dont la cl prive est protge par une phrase didentification

ATTENTION ! la scurit de ssh par authentification forte repose alors sur la protection de la cl prive : il faut imprativement mettre une VRAI PHRASE DAUTHENTIFICATION (au moins 14 caractres) qui est en fait plus qu'un simple mot de passe, mais une vritable phrase (moins de limitation)

Permet lutilisation de caractres blancs (sparateur) et dautres, mais attention aux caractres utiliss cause des diffrents types de claviers afin de pouvoir taper la passe-phrase

L'utilisateur s'identifiera alors sans utiliser le mot de passe de la connexion classique (mot de passe Unix), qui lui circule sur le rseau, mais par sa phrase didentification sur lhte local

54

Authentification forte

Connexion par authentification forte


Utilise un algorithme trs puissant pour le chiffrement (algorithme RSA/DSA) Ainsi chaque utilisateur possde son propre jeu de cls uniques (une cl prive = secrte, une cl publique = accessible par tous) une nouvelle connexion ncessite linstallation de la cl prive sur le client et de la cl publique sur le serveur le serveur va crer un challenge et donner un accs au client si ce dernier parvient dchiffrer le challenge avec sa cl prive

55

AF : gestion des cls - Unix


Gestion

des cls et agents = AF


des paires de cls :

Commandes lies :
Cration

ssh-keygen Options : -t algorithme : choix de lalgorithme (rsa1, rsa et dsa) -p changer sa phrase didentification
Mise

en mmoire des cls (vite la saisie rpte des phrases didentification


ssh-agent

Chargement

des cls dans lagent

ssh-add

56

AF : gestion des cls - Unix


Gestion

des cls et agents = AF

Structure des fichiers impliqus :


SSH V1 : identity / identity.pub

$HOME/.ssh

SSH V2 : id_rsa / id_rsa.pub config (configuration utilisateur) machine distante) known_hosts

authorized_keys (ensemble des cls publiques sur la (ensemble des cls des serveurs utiliss)

57

AF : gestion des cls - Unix

Gestion des cls :

Cration des paires de cls (SSH V2) RSA avec un exemple :


Cration dune paire de cl (v2)

*******

*******

phrase didentification Nom des fichiers de cls

On peut de la mme manire gnrer des cls avec un autre algorithme de cryptage : DSA
ssh-keygen t dsa

58

AF : gestion des cls - PuTTY

Gestion des cls et agents: PuTTY

Cration des paires de cls avec PuTTY

Lancer le programme puttygen

en double-cliquant sur licne :

59

AF : gestion des cls - PuTTY

Gestion des cls et agents: PuTTY

Cration des paires de cls avec PuTTY


Slectionner le type de cls crer (sous Unix le plus souvent ce sont les cls v2 RSA qui sont utilises) Lancer la gnration du couple de cls (publique/prive)

60

AF : gestion des cls - PuTTY

Gestion des cls et agents: PuTTY

Cration des paires de cls avec PuTTY


Les cls sont gnres Donner une phrase dauthentification (au moins 14 caractres minimum) Sauver les cls dans 2 fichiers

61

AF : gestion des cls - PuTTY

Gestion des cls et agents: PuTTY

Cration des paires de cls avec PuTTY

Sauvegardes des cls


Donner le mme nom (comme sous Unix) Cl publique : Ajouter .pub au nom du fichier pour bien la reprer Cl prive : Mme nom sans extension .pub

62

AF : gestion des cls - Unix


Gestion

des cls

Changement de phrase dauthentification avec un exemple :


ssh-keygen -p
Fichier protger concern

******* ******* *******

Entrer lancienne phrase Nouvelle phrase

63

AF : gestion des cls - distribution


Distribution

des cls

Problmatique de linstallation de la cl prive (id_rsa.pub) sur le serveur distant dans le fichier des cls (authorized_keys) :
Soit

transfrer la cl publique

On dispose de la cl publique sur la machine locale Il faut la transfrer et copier son contenu dans un fichier nomm authorized_keys sur la machine distante Ce fichier (authorized_keys) sur la machine distante va donc pouvoir contenir plusieurs cls publiques dutilisateurs
Soit

envoyer le fichier (cl publique) ladministrateur du serveur distant qui linstallera sur la machine

64

AF : gestion des cls - distribution

Mise en place des cls : mthode manuelle


La cl prive ct client : identity ou id_rsa (id_dsa) La cl publique sur le serveur dans le fichier :
authorized_keys = cls publiques situes dans $HOME/.ssh

client

serveur

$HOME/.ssh/id_rsa.pub Transfrer la cl publique sur la machine distante dans $HOME/.ssh

Puis dans $HOME/.ssh/ Faire : cat id_rsa.pub >> authorized_keys chmod 600 authorized_keys

65

AF : gestion des cls - distribution

Mise en place des cls : mthode automatique

Utilisation dun script shell : ssh-copy-id

installe la cl publique dans la liste des clefs autorises (authorized_keys) d'une machine distante

client

serveur

# ssh-copy-id serveur Transfrer la cl publique sur la machine distante dans $HOME/.ssh et le fichier authorized_keys directement

Rien faire sur le serveur

66

AF : connexion simple Unix

Fichier de configuration par utilisateur

Pour activer lauthentification forte dun client vers un serveur lorsque celui-ci laisse tous les choix dauthentification, il suffit dans la configuration du client de configurer le fichier config
en spcifiant la variable PubkeyAuthentication ou RSAAuthentication dindiquer la cl prive utilise (avec son path)

Fichier ~/.ssh/config Host fantasio


User fbongat PubkeyAuthentication yes IdentityFile ~/.ssh/id_rsa (ou aussi RSAAuthentication yes)

67

AF : connexion simple Unix


Connexions Fichier config

par authentification forte

Par
Phrase dauthentification

ssh :

Par

sftp :

68

AF : gestion des cls - distribution

Mise en place des cls PuTTY

La cl publique sur le serveur distant :


Copier/coller du cadre rouge sur 1 ligne dans le fichier authorized_keys de la machine distante (ssh-rsa AAAB3..k=) Vrification de cohrence : Sur linux :

ssh l f ~/.ssh/authorized_keys

69

AF : connexion simple Windows

Connexions par authentification forte

Par ssh PuTTY:


Lancer putty Dans la variable SSH Auth,

charger la cl prive cre par PuTTY Puis cliquer sur open

70

AF : connexion simple Windows


Connexions

par authentification forte

par ssh PuTTY:


Idem avec psftp et pscp

71

AF : connexion via le compte root


Gestion

du super utilisateur root

Il est conseill de ne pas permettre l'utilisateur root de se connecter distance

PermitRootLogin no

Pour des besoins spcifiques, il est possible d'utiliser ce compte via ssh en forant l'utilisation de l'AF

PermitRootLogin without-password La connexion n'tabliera que si un cl publique de l'utilisateur est installe dans le compte root Cela vite les tentatives d'attaque ssh force brute sur le compte root

72

AF : ssh agent

Utilisation dun agent pour le confort

Va permettre dinitier des connexions scurises en sauthentifiant quune seule fois (dbut dune session ou partir dun terminal), et ensuite de ne plus avoir redonner sa phrase dauthentification Seffectue en 2 phases :
Lancement dun agent avec la commande ssh-agent dans un shell # ssh-agent /bin/bash puis stockage en mmoire avec la commande ssh-add # ssh-add A partir de ce moment toutes les connexions lances de la fentre shell ou des xterm qui en dpendent, se font sans authentification supplmentaire.

73

AF : ssh agent via un shell


Gestion

des cls et dun agent


Phrase didentification demande

Agent dans un shell

Lancement de lagent Avec le shell utilis

Ajout de la cl en mmoire Connexion sans identification

74

Toutes les nouveaux terminaux lancs (xterm) partir du terminal dans lequel on a lanc lagent hrite de cette proprit

AF : ssh agent session graphique


Gestion des cls et agents dans un environnement graphique
Lancement de lagent et ajout de la cl prive dans lenvironnement graphique (KDE)

75

AF : ssh agent session graphique

Keychain : gestion des cls et des agents


Dvelopp par Gentoo Linux

Existe pour toutes les distributions (sous forme de package)

Ajout de lAF via les scripts shell de dmarrage linux Le programme keychain permet de rutiliser les instances de ssh-agent + ssh-add dans des sessions diffrentes et, si dsir, d'inviter l'utilisateur entrer les phrases de passe chaque ouverture de session.
Package installer sur linux keychain Lanc dans les scripts dinitialisation shell

/etc/profile.d/keychain.sh

76

AF : ssh agent session graphique

Pour KDE : gestion des cls et des agents

Lancement dans lenvironnement graphique

ssh-agent lanc dans /etc/X11/Xsession (par dfaut rien faire) Script : ssh-add rajouter dans le rpertoire : $HOME/.kde/Autostart/

Script ssh-add

77

AF : ssh agent session graphique

Pour GNOME : gestion

des cls et des agents

Autre mthode :
Via les menus : Prfrences Prfrences Supplmentaires Sessions puis longlet Programme au dmarrage Ou bien suivant les linux : Configuration GNOME Avanc Sessions et enfin longlet Programme au dmarrage

Ajouter un programme au dmarrage dune session cliquer sur Ajouter, puis entrer /usr/bin/ssh-add Donner une priorit de 60

78

Valider

AF : ssh agent session Windows


Gestion

des cls et agents avec PuTTY

Lancer lagent en double cliquant sur licne pageant : Il apparat alors dans la barre des tches actives : Cliquer avec le bouton droit de la souris pour faire apparatre le menu contextuel du pageant et cliquez ensuite sur Add Key pour ajouter les cls prives gres par lagent ssh
pageant actif

79

AF : ssh agent session Windows


Gestion

des cls et agents avec PuTTY


Cliquer AddKey Charger la cl prive Putty Entrer la phrase dauthentification

80

AF : transfert dagent - Unix


Transfert

dagent

relais des demandes dauthentification entre htes


Permet

de cascader les htes sans avoir donner dauthentification supplmentaire Ncessite une configuration administrateur sur toutes les machines cascader.
Il faut dmarrer un agent au dpart de la machine cliente source, et activer le chargement des cls en mmoire Et activer le transfert dagent au niveau de tous les serveurs concerns dans le fichier de configuration client

/etc/ssh/ssh_config : ForwardAgent yes

81

AF : transfert dagent - Unix


Transfert

dagent

relais des demandes dauthentification entre htes

transfert dagent

Pas de transfert dagent

82

AF : transfert dagent - Windows

Transfert dagent

relais des demandes dauthentification entre hte partir dun client PuTTY
Cocher la case : Allow agent forwarding

83

AF : batch ou AF sans mot de passe

Forage dune commande (ou script)

Utilisation pour le batch : lancement de scripts de manire autonome et sans mot de passe

Ncessite une cl publique sans passphrase associe

ATTENTION cela va lencontre de la scurit !!! Forcer lexcution de la commande

Il faut donc renforcer la scurit par :


exemple scp rp f fichier depuis 192.168.72.1 (machine source)

Forcer ladresse IP mettrice pour forcer la source Sur la machine cible, dans le fichier authorized_keys

from="@192.168.72.1" , Command="scp -rp f fichiers_a_tranferer*" ssh-rsa AAA.........

84

Forage de lIP

Forage de la commande

Suite de la cl publique

AF : batch ou AF sans mot de passe

Mode Hostbased

C'est une authentification par hte de confiance On utilise une paire de cls publique et prive pour tablir une connexion scurise et de confiance

Il faut cependant faire attention ne pas se faire voler sa cl prive ou sa machine

Donne

l'accs sans passphrase tous les utilisateurs d'une machine de confiance vers une autre. Utilisation pour le batch notamment pour les fermes de calcul

Attention aux accs la frontale --> problme de scurit ensuite

85

AF : batch ou AF sans mot de passe

Mode Hostbased
Configuration

ncessaire sous Linux :

Rcupration et installation des cls des machines de confiance # ssh-keyscan -t rsa machine1 machine 2 ... > /etc/ssh/ssh_known_hosts # cat /etc/ssh/ssh_known_hosts | cut -d" " -f1 > /etc/hosts.equiv Fichier ssh_config HostbasedAuthentication yes EnableSSHKeysign yes

86

Fichier sshd_config RhostsRSAAuthentication yes HostbasedAuthentication yes # vrifier les droits : chmod u+s /usr/lib/ssh/ssh-keysign

Attention aux problmes de scurit !!

Tunneling

Cest une mthode d'utilisation de SSH pour scuriser les autres applications TCP sensibles.

Son principe est de crer un tunnel chiffr entre deux machines et d'y faire passer les applications dedans. Ainsi, on peut continuer utiliser des outils comme FTP, IMAP, POP, smtp ... de manire scuris (pour FTP: cela dpend du paramtrage du serveur ftp)

Au niveau scurit, les tunnels posent quelques soucis car les ports locaux sur lesquels des transferts sont tablis sont accessibles tous les utilisateurs de la machine (notamment les passerelles)

87

Tunneling
- Transfert de port local
Position

du problme :

Il s'agit donc de rediriger des services souhaits et que lon ne peut accder normalement car ils sont filtrs; et dutiliser la connexion ssh (seule accepte) pour y faire passer ces services

Autres services inaccessibles directement

88

Service ssh accessible

Tunneling : cas dun intranet

Consultation dun Intranet depuis lextrieur


Crer le tunnel sur la machine locale: ssh L 18000:login@ServWeb:80 passerelle Puis lancer le navigateur Web avec lURL : http://localhost:18000
Intranet inacessible

Connexion ssh uniquement accessible depuis lextrieur Port local : 18000 (> 1024) Port ouvert : 22 Passerelle Port serveur : 80 ServWeb

89

localhost

Tunneling : services communs

Consultation de sa messagerie par Imap


Cration du tunnel pour accder au serveur Imap par le tunnel ssh ssh L 14300:localhost:143 machine2 ou : ssh N L 14300:localhost:143 machine2

Puis configurer lapplication client imap sur localhost:14300

Soit nom du serveur imap : localhost et port : 14300


Mozilla-mail Flux SSH Serveur Imap Port : 143

machine1

Port local : 14300

Serveur - Port : 22

machine2

90

-L : spcifie que les donnes arrivant sur le port 14300 de la machine1 doivent tre envoyes sur le port 143 lhte distant (machine2) -N : permet de pas donner de prompt aprs la connexion (ou mettre le sleep en secondes)

Le port local (> 1024), ici : 4321 Connexion sur localhost

Nom de la machine distante et le port distant Syntaxe : spirou:25

Tunneling : envoi de messages smtp

PuTTY et smtp

Envoi dun message vers un relai smtp filtr via une passerelle ssh
Lancer putty Aller dans la valeur SSH Tunnels Remplir les champs lis au tunneling dans la fentre Puis valider cliquant sur Add

91

Tunneling : envoi de messages smtp


PuTTY et smtp

Lancement du tunnelssh :
Le tunnel est configur Il faut maintenant lancer la connexion Open Donner son mot de passe afin dobtenir une connexion ssh classique Le tunnel sera ainsi prt Configurer lapplication pour quelle se connecte sur :

92

Nom distant : localhost Port : 4321

Tunneling : envoi de messages smtp

PuTTY et smtp

Exemple smtp : simulation dun client de messagerie

Configurer lapplication pour quelle se connecte sur :


serveur smtp sortant : localhost port : 4321

Exemple en simulant une connexion dun client de mail par un telnet en localhost sur le port 4321

Le serveur rpond enfin ! On peux envoyer des messages depuis ce serveur bien quil soit filtr

93

Conclusion

SSH est une bote outils complte Les connexions sont scurises

Amliore la scurit mais il permet aussi de la contourner

Existe diffrentes possibilits de connexions et de transferts de fichiers Les relais possibles des applications TCP permettent daccder de nouvelles ressources Install en standard sur tous les systmes (client et serveur) Unix et MacOS X De trs bons clients Windows notamment PuTTY, Winscp notamment en les associant Xming

94

S-ar putea să vă placă și