SSF




Principe :

On peut, entre autres, qualifier SSF/SSH de super-telnet-crypté mais il sait faire plein d'autres choses. Vous voulez , par exemple, faire du Telnet, du FTP ou tout autre application s'exécutant sur une couche TCP/IP, mais le fait que les données sensibles ,comme les mots de passe, circulent en clair sur le canal vous inquiète.(Non, ce n'est pas de la paranoïa galopante, mais des nuits plus tranquilles. C'est tout.) : Utilisez SSF !

Le beurre : SSF/SSH permet de se connecter sur un système distant en cryptant toutes les données dont, entre autres, le mot de passe.

L'argent du beurre : SSF/SSH intègre en sus, deux mécanismes facultatifs améliorant soit la sécurité soit la facilité de l'ensemble :

En résumé, SSF possède deux mécanismes différents d'authentification :

Le sourire de la crémière : SSF/SSH permet de faire passer toutes les données dans un tunnel crypté. Ainsi, une fois le tunnel chiffré entre le client et le serveur établi, on fait passer les applications  sensibles dedans.Vous n'avez qu'à utiliser vos outils de manière quasi-habituelle avec un avantage supplémentaire : vous ouvrez sur le serveur le port sensible et vous le bloquez sur le Firewall, il sera donc inutilisable sauf à passer par le tunnel. A ma connaissance, c'est un des principes du VPN (réseau privé virtuel).

Rappels sur la réglementation et conditions d'utilisation de SSF :

SSF est la version compatible avec la législation française de la version libre du protocole SSH (Secure Shell). De plus, SSF est compatible avec toutes les versions 1.5 de SSH. On parlera donc de SSF/SSH.

Site du concepteur :ccweb.in2p3.fr/

Donc, SSF respecte la loi française sur la cryptologie ( Decret du 17  Mars 1999).

 

Serveur Linux :

Installation

Téléchargez la dernière version (1.2.27.6-2)de ssf sur le site de l'in2p3. Soit au format rpm (Redhat & Mandrake), soit les sources au format .tgz.

Décompactez le rpm (rpm -ivh ssf.....rpm) ou installez les sources (tar zxvf ssf.....tgz ; ./configure; make ; make install ; make clean)

Lancez le démon ssfd. (/usr/local/sbin/ssfd). Pour l'instant la configuration du serveur est correcte, mais moyennement sécurisée.

Le serveur Linux fait tourner les démons suivants :

Et tous les démons selon l'usage:

Utilisation

 Informations et aide : man ssh (et non pas man ssf- Unix)

Le démon ftpd qui tourne par défaut sur les RedHat/Mandrake est wu-ftp (Washington University). in-ftpd n'est qu'un lien vers wu-ftpd.

Par défaut, le démon wu-ftpd n'accepte pas la redirection de port distant, il faut donc le recompiler avec les bonnes options (Si vous voulez le faire, je vous envoie la marche à suivre) ou alors utiliser celui que j'ai déjà recompilé (wu-ftpd-2.6.0-6mdk.src.rpm).

 

 

Client Linux :

Installation

Téléchargez la dernière version (1.2.27.6-2)de ssf sur le site de l'in2p3. Soit au format rpm (Redhat & Mandrake), soit les sources au format .tgz.

Décompactez le rpm (rpm -ivh ssf.....rpm) ou installez les sources (tar zxvf ssf.....tgz ; ./configure; make ; make install ; make clean)

Authentification simple :

Vous en avez fini pour l'instant. Passez à la partie blindage.

Authentification forte :

Connectez vous en tant qu'utilisateur non privilégié (PAS ROOT !).

Générez votre trousseau de clé (Publique & Privée) : /usr/local/bin/ssh-keygen ( Attention, il est possible que vous n'ayez pas la possibilité de naviguer dans l'arborescence.)

ssh-keygen vous propose alors de sauvegarder (dans votre arborescence personnelle) le trousseau de clé sous le nom par défaut : identity. Si vous devez gérer de multiples identités et/ou machines, il peut être préférable de le renommer sous un nom plus explicite.

Puis vous devez taper une passphrase (choisissez une grande longueur ainsi qu'une grande complexité, la sécurité de votre système dépend en très grande partie de la complexité de cette phrase.)

Vous obtenez donc deux fichiers identity (clé privée, NE LA DIFFUSEZ JAMAIS !! , personne n'en aura besoin sauf vous!) et identity.pub, (clé publique à diffuser!)

Vous devez maintenant diffuser votre clé publique au serveur par un moyen sûr, si quelqu'un produisait maintenant sa clé publique en lieu et place de la votre, il serait dans la place!!!

scp identity.pub vous@serveur:~/.ssh/authorized_keys     (Notez le point . devant ssh :    .ssh)

Attention, vous n'avez pas toujours les droits de créer ce fichier à distance. Si c'est la cas, copiez le plus haut, puis en root copiez le au bon endroit.

Vérifiez la connexion : /usr/local/bin/ssf vous@serveur    Vous serez connecté par la passphrase et non par le le mot de passe. Ca y est. Blindons un peu, et ça sera tout.

La clé privée est transportable d'une machine à une autre.  (N'oubliez pas la sauvegarde:  Plus de clé, plus de connexion !!!) Elle reste protégée par la passphrase.

Blindage :

Modifions le fichier /etc/sshd_config sur le serveur pour sécuriser le tout : 

Port 22                                                             

 ListenAddress 0.0.0.0                          

HostKey /etc/ssh_host_key             

RandomSeed /etc/ssh_random_seed       

ServerKeyBits 768                          

LoginGraceTime 600                             

KeyRegenerationInterval 3600        

PermitRootLogin no             

 IgnoreRhosts yes                  

StrictModes yes                        

QuietMode no                                             

X11Forwarding yes                                    

X11DisplayOffset 10                                  

FascistLogging no   

PrintMotd yes                             

KeepAlive yes     

          

SyslogFacility DAEMON                    

RhostsAuthentication no            

RhostsRSAAuthentication yes            

RSAAuthentication yes

PasswordAuthentication no

 

PermitEmptyPasswords no

UseLogin no

# CheckMail no

# PidFile /u/zappa/.ssh/pid

 

AllowHosts 10.*

DenyHosts ALL

# Umask 022

SilentDeny yes

Port par défaut

A l'écoute du reste du monde

Fichier des clefs

Fichier des clefs

Taille de la clé du serveur (96 octets)

Temps avant déconnexion du client en cas de login infructueux (10 minutes)

Période de régénération de la clef du serveur (1 heure))

Interdire le login root. Impose d'avoir un compte valide sur le serveur !

Interdit l'utilisation du fichier rhosts, méthode non sécurisée.

Vérifie la sécurité du répertoire perso avant d'autoriser le login.

N'enregistre dans le fichier de log que les erreurs fatales.

Autorise l'export du serveur graphique. L'interdire n'augmente pas obligatoirement la sécurité.

Décalage du display pour ne pas interférer avec les serveurs X11 existants.

N'enregistre pas toutes la transaction. Il est conseillé de respecter la vie privée de l'utilisateur !!

Le Message Of The Day est une Unixerie qui vous affiche un joli message de bienvenue.

Vérifie la présence du client à l'autre bout. Si à yes, vous risquez de casser la connexion au  moindre encombrement réseau .  Si à no, une session cassée restera ouverte indéfiniment, occupant des ressources et des connexions.

Système d'enregistrement des logs.

Interdit l'utilisation du fichier rhosts, méthode non sécurisée.

Ajoute la sécurité du fichier rhosts à celle du système RSA, bof.

Authentification RSA activée.

Authentification par mot de passe en cas d'authentification RSA échouée. A mettre à no dès que le système RSA est opérationnel.(pas avant ça ne marcherait pas par scp.)

Interdit la connexion par mot de passe vide en cas d'authentification par mot de passe. A DESACTIVER !! faut pas pousser......

???????

Vérifie la présence de courrier.

Numéro du processus SSF.

Liste des hôtes/domaines  autorisés. Vous pouvez préciser des IP ou des noms qualifiés. Attention notez les domaines génériques en utilisant le joker *. Par exemple : 10.*  pour le domaine 10.0.0.0/8.

Hôtes interdits. ALL permet de verrouiller les accès par Allowhosts.

Quels droits par défaut sont donnés au répertoire.

Informe-t-on le client sur la raison du refus de connexion ?

 

Utilisation

Authentification simple  & Authentification forte

Connexion : ssf compte@machine_distante   comme pour une adresse email.

Quelques options très utiles:

Voici les plus courantes, mais pour plus de détails, consultez les man pages de ssh : man ssh (et non pas man ssf- Unix)

-C : compression du canal (pour les réseaux à faible débit)
-n : redirection stdin /dev/null (pour les applications qui tournent en background)
-v : mode verbeux (pratique pour déceler les problèmes de sconnexion)
-f : mode background

On peut configurer chaque couple utilisateur/machine distante en créant dans le répertoire perso de la machine cliente de l'utilisateur un fichier config  . Par défaut, ce fichier n'existe pas, il faut donc le créer dans le répertoire .ssh (/home/user/.ssh). On peut y ajouter autant de machines cibles que l'on souhaite. Toutes les options que l'on peut faire figurer dans ce fichier sont décrites dans les man page de SSH.

SSF permet de faire du copier-coller écran distant / appli locale

Quelques paramètres :

Host machine-cible
User login
Compression yes/no

Exemples :

machine locale : locale, login : userlocal
machine distante : distante, login : userdistant

Fichier config dans le répertoire /home/userlocal/.ssh sur machine locale :

Host distante
User userdistant
Compression yes

Maintenant la demande de connexion par ssf se fait très simplement :

ssf distante 
au lieu de :
ssf -C userdistant@distante

Copie distante

scp est un outil sécurisé de transfert de fichier .C'est une alternative à FTP .

scp fichier user@machine-cible:Directory_cible

ou

 scp -r Directory_local user@machine-cible:Directory_cible

Exemple :

machine locale : locale, login : userlocal
machine distante : distante, login : userdistant

Copie de tous les fichiers du répertoire courant vers le répertoire sauve de la machine distante.

scp * distante:sauve

Maintenant une copie du répertoire Doc_Sauve qui est sur distante vers locale :

scp -r distante:Doc_Sauve .        (Notez le point . )


Tunnel applications

Création du tunnel :

ssf -n -f machine_cible -L   Nouveau_Port_Local:machine_cible:Port_Natif_Distant   sleep TTL

TTL : Durée de vie du tunnel en secondes
On redirige le port TCP Port_Natif_Distant vers le port TCP Nouveau_Port_Local

L'application distante est donc utilisable comme si elle tournait en local :

On remplace le nom du serveur par sa propre machine (localhost ou 127.0.0.1). et le port du serveur par le port local redirigé; Attention, on ne peut faire q'une seule redirection par port.

Exemple :

Au lieu de : 

mysql -h serveur -D base -u utilisateur -p  - e "select * from ma_table" -P 3306

On a :

ssf -n -f serveur  -L 1234:serveur:3306 sleep 600

mysql -h localhost -D base -u utilisateur -p  - e "select * from ma_table" -P 1234

Client Windows :

Installation

Les deux outils Teratermpro + ssf sont maintenant installés dans c:\program files\ttermpro

FTP

Utilisation

SSF

Il fait tourner les programmes suivants

Tunnel applications

Attention quelques limitations : Je n'ai pas encore vu où ça pouvait se faire, mais vous ne récupérez actuellement pas la variable PATH, donc toutes les commandes doivent être données par leur syntaxe complète. Dans le même ordre d'idée, ne créez pas d'utilisateur ainsi, il aura quelques difficultés avec son répertoire perso (entre autres).

Client Windows :

Le FTP, maintenant :

Après un rapide moulinage, la bestiole doit vous annoncer qu'elle est prête à subir vos affronts.

Statut :

Cette documentation est inspirée du travail de bernard perrot. à l'in2p3.


21 Mai 2001 Philippe Schwarz