Présentation SSH-SSF Philippe.Weill@aero.jussieu.fr 23/10/2002 Présentation SSH-SSF (IPSL) 1
Plan Notion de réseau, sécurité et cryptographie Rappels sur Telnet, R-commandes et X11 SSF/SSH Qu est ce que c est? Les avantages de SSF/SSH Mécanismes Utilisation en environnement unix, windows et mac Utilisation avancée «port forwarding» Exemples, démos et questions Références 23/10/2002 Présentation SSH-SSF (IPSL) 2
Radio Notions de base réseau IP Bandes» Ondes courtes» Grandes ondes» Bande FM Bande FM Noms de stations Fréquences Tout le monde peut écouter à condition d être dans la zone d émission Réseau Procoles» ICMP :ping,traceroute» UDP :DNS,NFS» TCP :connexions Connexions TCP Services Numéro de ports Toute machine se trouvant sur le chemin peut tout écouter (Réseau local = Chemin) 23/10/2002 Présentation SSH-SSF (IPSL) 3
Principaux services (TCP) Services Telnet R-commandes FTP SMTP (mail) Pop Imap X11 SSF/SSH Port 23 513-514 21,20 25 110 143 6000 22 Fonction Connexions interactive à un serveur Remote login, remote copy, remote shell Transfert de fichier Echange de courriers Lecture de message par les clients Lecture de message par les clients Fenêtre graphique environnement Unix Remplacer le rouge Eventuellement remplacer ftp sécuriser le vert 23/10/2002 Présentation SSH-SSF (IPSL) 4
La sécurité c est l affaire de tous L internet a changé Quelques chiffres Environ 500 machines IPSL Jussieu 5 à 10 labos CNRS piratés par mois Les niveaux de sécurité Tous les systèmes ont des failles Le niveau global est celui du maillon le plus faible 23/10/2002 Présentation SSH-SSF (IPSL) 5
Notion de cryptographie 2 techniques pour établir une communication chiffrée Algorithme à clef secrète ( un secret partagé par tous les acteurs)» Comment transférer la clef» Risque si trop de monde à la clef Algorithme à clef public et privée» Ce qui est chiffré avec l une des clefs n est décodable qu avec l autre clef» Cryptage avec sa clef privée => décodage avec sa clef publique (signature électronique)» Cryptage avec la clef publique du correspondant => décodage par la clef privée du correspondant ( transfert de message chiffré ) 23/10/2002 Présentation SSH-SSF (IPSL) 6
Un mot sur la longueur des clefs symétriques Clefs 40 bits => décodable facilement Clefs 56 bits => on sait faire mais c est long et pas à la portée de n importe qui Clefs 128 bits => tant que l algorithme est fiable, on ne sait pas faire aujourd hui 23/10/2002 Présentation SSH-SSF (IPSL) 7
Rappel sur Telnet bash$ telnet localhost Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. login:weill Password: xxxxxxxx Last login: Sat May 19 07:49:36 on :0 $ Risque autour de telnet Ecoute réseau permet de récupérer le couple utilisateur mot de passe On a aucune certitude sur la machine destination (détournement d adresse) Au niveau du serveur on a aucune certitude sur la machine cliente ( vol de session ) 23/10/2002 Présentation SSH-SSF (IPSL) 8
Rappels sur les R-commandes rlogin [-l user] machine rsh [-l user] machine commande rcp [[user@]machine]:fichier [[user@]machine]:fichier Fichiers mis en jeu: Administrateur : /etc/hosts.equiv Utilisateur :.rhosts dans son répertoire d accueil» Protection du fichier : lecture uniquement pour l utilisateur» Format : machine_source utilisateur Problème : tout est basé sur la confiance dans les adresses IP et les noms de machines 23/10/2002 Présentation SSH-SSF (IPSL) 9
Rappel sur X Window Mon poste de travail est un serveur X une application graphique est le client d un serveur X serveurx Variable DISPLAY serveurx:0 Problèmes de sécurité : Les autorisations d accès au serveurx La connexion est initiée depuis le clientx xhost [+ -] [machine] Autorisation par machine xauth Autorisation par utilisateur Les clefs circulent en clair sur le réseau) 23/10/2002 Présentation SSH-SSF (IPSL) 10
SSF/SSH qu est ce que c est? Signifie «secure shell» SSF est une version en règle avec les lois françaises sur la cryptographie depuis Février 2002 l utilisation de la version standard de ssh est autorisée pour la communauté éducation et recherche (OpenSSH) La version française a été écrite par Bernard Perrot (IN2P3) C est un outil mieux sécurisé de connexion à un serveur ( pour du travail interactif) 23/10/2002 Présentation SSH-SSF (IPSL) 11
SSF SSH Serveur pour machine unix Client unix Client windows (ttssf-ssh.com) Client JAVA (mindterm) Payant Client mac MacOS < 10 (niftytelnet) 23/10/2002 Présentation SSH-SSF (IPSL) 12
2 versions du protocole SSH SSF n utilise que le protocole 1 Ssh peut utiliser les protocoles 1 et 2 de nombreux site ont désactivé le protocole 1 L utilisation des deux versions est très similaire Quelques options et noms de fichier de configuration changent Support standard de sftp en V2 23/10/2002 Présentation SSH-SSF (IPSL) 13
Les avantages de ssh Authentification des machines (par clef publique et privée) un peu plus de confiance dans les adresses et les noms de machine Les données ne circule pas sur le réseau en clair (par clef partagée) plus de difficulté pour les pirates à comprendre ce qu il écoute sur le réseau ou faire du vol de session Il existe différents niveaux d authentification de l utilisateur Tout est automatique pour le graphique X11 Peut permettre de faire passer des services dans la session chiffrée (utilisation avancée) 23/10/2002 Présentation SSH-SSF (IPSL) 14
Les principales commandes de ssh Commandes: slogin [options] [user@]machine ssh [options] [user@]machine commande scp [options] [[user@]machine:]fichier [[user@]machine:]fichier Principales options: -v : mode verbeux (affichage d informations suplémentaires) -C : active la compression -g : rend la variable display globale -P : peut être nécessaire sur certains sites (firewall) 23/10/2002 Présentation SSH-SSF (IPSL) 15
Fichiers Administrateur /etc/ssh_host_key (clef privée du serveur) /etc/ssh_host_key.pub (clef publique du serveur) /etc/sshd_conf ( fichier de configuration du serveur ) /etc/ssh_conf (fichier de configuration client) /etc/ssh_known_hosts (peut contenir les clefs publiques de certaines machines) /etc/shosts.equiv (peut contenir un certain nombre de machines ) 23/10/2002 Présentation SSH-SSF (IPSL) 16
Les fichiers de l utilisateur.shosts dans son répertoire d accueil (lecture uniquement pour l utilisateur) Fomat: machine_source utilisateur Répertoire.ssh config : mode client known_hosts : contient les clefs publiques des serveurs des serveurs auquels vous vous êtes déjà connecté authorized_keys identity,id_rsa identity.pub id_rsa.pub Utilisé uniquement en cas d authentification forte 23/10/2002 Présentation SSH-SSF (IPSL) 17
Mécanismes de ssh Première phase : Authentification du serveur» Réception de la clef publique du serveur» Vérification de cette clef Si ok envoie d une clef de session par le client ( clef partagée ) Deuxième phase Authentification de l utilisateur (trois solutions possibles au choix de l administrateur)» Fichier.shosts ou /etc/shosts.equiv» password unix» Clef publique et privée de l utilisateur (authentification forte) 23/10/2002 Présentation SSH-SSF (IPSL) 18
Première Phase (1) Premier cas : la clef du serveur n est pas connu $ slogin -v machine SSH Version SSF-1.2.27.6 [i686-unknown-linux], protocol version 1.5. Standard version. Does not use RSAREF. machine: Reading configuration data /etc/ssh_config machine: ssh_connect: getuid 901 geteuid 901 anon 1 machine: Connecting to machine [127.0.0.1] port 22. machine: Connection established. machine: Remote protocol version 1.5, remote software version SSF- 1.2.27.6 machine: Waiting for server public key. machine: Received server public key (768 bits) and host key (1024 bits). Host key not found from the list of known hosts. Are you sure you want to continue connecting (yes/no)? Répondre par yes ou no (y ou n n est pas suffisant) 23/10/2002 Présentation SSH-SSF (IPSL) 19
Première phase (2) deuxième cas : la clef du serveur est connu $ slogin -v machine SSH Version SSF-1.2.27.6 [i686-unknown-linux], protocol version 1.5. [ ] machine: Remote protocol version 1.5, remote software version SSF- 1.2.27.6 machine: Waiting for server public key. machine: Received server public key (768 bits) and host key (1024 bits). machine: Host machine is known and matches the host key. machine: Initializing random; seed file /home/weill/.ssh/random_seed machine: Encryption type: idea machine: Sent encrypted session key. machine: Installing crc compensation attack detector. machine: Received encrypted confirmation. L échange de la clef de session a eu lieu 23/10/2002 Présentation SSH-SSF (IPSL) 20
Première phase (3) Troisième cas : On connaît la clef du serveur mais on ne reçoit pas la bonne $ slogin machine @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the host key has just been changed. Please contact your system administrator. Add correct host key in /home/weill/.ssh/known_hosts to get rid of this message. Agent forwarding is disabled to avoid attacks by corrupted servers. X11 forwarding is disabled to avoid attacks by corrupted servers. Are you sure you want to continue connecting (yes/no)? 23/10/2002 Présentation SSH-SSF (IPSL) 21
Authentification de l utilisateur (1) Premier cas : Le fichier /etc/shosts.equiv contient «machine_source» Le fichier.shosts contient «machine_source user» machine: Trying rhosts or /etc/hosts.equiv with RSA host authentication. machine: Remote: Accepted for localhost [127.0.0.1] by /etc/shosts.equiv. machine: Received RSA challenge for host key from server. machine: Sending response to host key RSA challenge. machine: Remote: Rhosts with RSA host authentication accepted. machine: Rhosts or /etc/hosts.equiv with RSA host authentication accepted by server. machine: Requesting pty. machine: Requesting X11 forwarding with authentication spoofing. machine: Requesting shell. machine: Entering interactive session. Last login: Sat May 19 13:27:11 2001 from localhost $ echo $DISPLAY $ machine:10.0 23/10/2002 Présentation SSH-SSF (IPSL) 22
Authentification de l utilisateur (2) Deuxième cas : Méthode shosts ne marchant pas Fichier authorized_keys inexistant ou ne contenant pas la bonne clef machine: Trying rhosts or /etc/hosts.equiv with RSA host authentication. machine: Remote: Rhosts/hosts.equiv authentication refused: client user 'weill', server user 'weill', client host. machine: Server refused our rhosts authentication or host key. machine: No agent. machine: Doing password authentication. weill@machine's password: xxxxxxxx machine: Requesting pty. machine: Requesting X11 forwarding with authentication spoofing. machine: Requesting shell. machine: Entering interactive session. Last login: Sat May 19 13:30:56 2001 from localhost $ 23/10/2002 Présentation SSH-SSF (IPSL) 23
Authentification forte Génération de clef $ ssh-keygen Initializing random number generator... Generating p:...++ (distance 74) Generating q:...++ (distance 120) Computing the keys... Testing the keys... Key generation complete. Enter file in which to save the key (/home/weill/.ssh/identity): Enter passphrase: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Enter the same passphrase again: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Your identification has been saved in /home/weill/.ssh/identity. Your public key is: 1024 37 12967602997118705806648933028573696476889741371650541115764432891204 47847741624408181464201190941669813336042656215997387273022895893648 05906096629589710356904170479417540559910675985070315837554572275857 11211690619188420674982527285585921246074255868346541491485240173717 0864767235562809778136764577987412721 weill@localhost.localdomain Your public key has been saved in /home/weill/.ssh/identity.pub 23/10/2002 Présentation SSH-SSF (IPSL) 24
Authentification forte (2) Client local Serveur distant Unix : répertoire ~/.ssh identity (clef privée) identity.pub (clef publique) copie Répertoire ~/.ssh authorized_keys $ slogin user-distant@serveur-distant Enter passphrase for RSA key user-key@gen-key': 23/10/2002 Présentation SSH-SSF (IPSL) 25
Authentification forte (3) Utilisation des commandes ssh-agent et ssh-add taper les commandes suivantes dans un shell ( On peut aussi mettre ssh-agent au démarrage d une session graphique : fichier /etc/x11/xdm/xsession sous linux redhat) $ eval `ssh-agent` Agent pid 2998 $ ssh-add Need passphrase for /home/weill/.ssh/identity (weill@localhost.localdomain). Enter passphrase: xxxxxxxxxxxxxxxxxxxxx Identity added: /home/weill/.ssh/identity (weill@localhost.localdomain) $ slogin machine Last login: Sat May 19 13:41:53 2001 from localhost Ne jamais mettre ssh-agent et ssh-add dans les fichiers.profile, 23/10/2002 Présentation SSH-SSF (IPSL) 26.login ou.*rc
X11 et SSF/SSH: Mécanismes L option g de ssh permet de rendre ce pseudo serveur X visible à partir d autres machines Ne pas affecter sa variable DISPLAY dans les fichiers.login,.profile ou.*rc 23/10/2002 Présentation SSH-SSF (IPSL) 27
client SSF windows Installer teraterm et ttssf 23/10/2002 Présentation SSH-SSF (IPSL) 28
SSF/SSH Utilisation avancée «forwarding de ports» N est pas disponible pour les clients mac Sauf pour les mac en V10.x (UNIX) 23/10/2002 Présentation SSH-SSF (IPSL) 29
Redirection de ports Exemple : Messagerie CLIENT Flux crypté SERVEUR POP SMTP SMTP POP Client de messagerie POP SMTP Flux en clair Pop et SMTP 23/10/2002 Présentation SSH-SSF (IPSL) 30
Messagerie via ttssf sous Windows Lancer ttssf Cliquer sur setup ssf port forwarding Rediriger le port local 25 vers la machine distante xxxx port 25 Rediriger le port local 110 vers la machine distante xxxx port 110 Cliquer sur setup ssf Activer la compression ( Très efficace sur les fichiers attachés) Sauver le setup Ouvrir une connexion ssf avec xxxx Dans Eudora, netscape ou outlook : Mettre serveur de courier entrant : localhost Mettre serveur de courrier sortant : localhost 23/10/2002 Présentation SSH-SSF (IPSL) 31
Ports Forwarding en environnement unix Options avancées de ssh : -n : pas d interaction en entrée -f : passe en arrière plan après authentification -L port_local:machine_distante:port_distant redirige le port local n vers le port distant x de la machine distante -R port_local:machine_distante:port_distant redirige le port distant x de la machine distante vers le port local n de la machine local Attention sous unix il n est pas possible pour un utilisateur de rediriger un port local inférieur à 1024 23/10/2002 Présentation SSH-SSF (IPSL) 32
Port forwarding : Exemple Unix Exemple: Accéder au serveur WEB interne de l extérieur (normalement impossible) ssf n f sirocco.aero.jussieu.fr L 8080:wwwint.aerov.jussieu.fr:80 sleep 120 Dans le netscape local je donne comme URL http://localhost:8080/ et j accède au serveur web interne du laboratoire 23/10/2002 Présentation SSH-SSF (IPSL) 33
Références http://ccweb.in2p3.fr/securite/ssf/ http://polywww.in2p3.fr/informatique/doc/ssf/ http://www.medicis.polytechnique.fr/doc/medicis/ssf.html http://www.medicis.polytechnique.fr/doc/medicis/ssh-eng.html http://www.medicis.polytechnique.fr/doc/medicis/siret http://www-lns.mit.edu/compfac/ssh.html 23/10/2002 Présentation SSH-SSF (IPSL) 34