Guide de connexion aux partages Windows à travers un tunnel SSH. P. Moniez 13/04/2005 Si vous êtes sur un réseau wifi dont le firewall ne laisse passer que les protocoles sécurisés et que vous souhaitez consulter des documents partagés par un serveur Windows (ou Samba en général), il vous est possible de le faire à travers un tunnel SSH. Ceci sous réserve d avoir accès à un serveur SSH qui peut joindre le serveur Samba (ou que tous les services soient sur le même serveur). 1 Principe. Nous allons créer un tunnel SSH en utilisant le «port forwarding» qui va permettre de faire suivre les données entre le port TCP netbios-ssn (139) du serveur Samba et le port de notre choix sur notre machine locale. Ensuite, c est notre machine que nous interrogerons directement sur le port choisi, avec un client Samba. Cette connexion se fera par l intermédiaire d un serveur SSH qui devra pouvoir atteindre directement le port 139 du serveur Samba. 2 Manipulations sur MacOS X. Merci à F. Goudal pour ce chapitre. Il faut avoir accès à un compte administrateur local de la machine pour les manipulations de ce chapitre. Si ce n est pas le cas, reportez-vous aux manipulations du chapitre 3 que vous pourrez faire dans un terminal. 2.1 Création du tunnel. Avant tout, si vous avez un partage Samba activé, il faut le désactiver : «Préférence système» -> «Partage» -> décocher la case «partage Windows». 1
Ouvrez ensuite un terminal et saisissez : sudo ssh -L 139:<serveur_samba>:139 <user_ssh>@<serveur_ssh> sudo ssh -L 139:brahmane.enseirb.fr:139 goudal@ssh.enseirb.fr Vous devez renseigner le mot de passe de l administrateur local puis celui de votre compte Unix sur le serveur SSH. 2.2 Connexion aux partages du serveur. Pour se connecter au serveur Samba depuis le Finder, il y a deux possibilités. 2.2.1 S authentifier dès l accès. Faire pomme-k (menu «Aller» -> «Se connecter au serveur» ) et saisir smb://<nom_domaine_nt>;<user_nt>@localhost/ smb://ecole;goudal@localhost/ 2
Vous avez alors directement l accès à votre partage personnel (cf. dernière copie d écran du chapitre). 2.2.2 Ouvrir l accès anonymement et s authentifier sur demande. Faire pomme-k et saisir smb://localhost/ Vous avez alors accès aux partages accessible aux utilisateurs anonymes. 3
Pour accéder à vos partages, cliquer sur «Authentification» et entrer les informations : nom du domaine, nom d utilisateur et mot de passe dans le domaine NT. Vous avez alors accès à vos partages. 3 Manipulations sur un Unix (Linux, FreeBSD, Solaris...). Seul l utilisateur root a le droit de s approprier les ports inférieurs à 1024, vous ne pourrez donc pas ouvrir le port 139 local (port par défaut) si vous êtes un utilisateur classique. Mais l accès reste possible car vous pouvez spécifier n importe quel autre port local supérieur à 1024, qui n est pas déjà utilisé, et le préciser ensuite au client. Si vous avez des partages Samba sur la machine cliente, il vous faudra également utiliser un port autre que le 139 ou, si vous tenez absolument à utiliser ce port, arrêter le service (su root puis /etc/init.d/samba stop ou autre commande équivalente telle que /etc/init.d/smbd stop ou encore /etc/init.d/smb stop, selon votre Unix, sa distribution, le type d installation). 4
3.1 Création du tunnel. Pour créer le tunnel, nous utilisons la commande suivante : ssh -L <port_local>:<serveur_samba>:139 <user_ssh>@<serveur_ssh> ssh -L 1139:brahmane.enseirb.fr:139 moniez@ssh.enseirb.fr Le mot de passe à renseigner est celui de votre compte sur le serveur SSH, ou la phrase de votre clé, si vous en avez généré une. 3.2 Connexion aux partages du serveur. Nous demandons ensuite la liste des partages à notre machine locale (localhost), le tunnel lui permettant d échanger avec le serveur Samba : smbclient -L //localhost -p <port_local> -U <user_nt> Pour avoir accès au partage, vous pouvez lancer la commande suivante, qui se comporte comme un client FTP : smbclient //localhost/<partage> -p <port_local> -U <user_nt> smbclient //localhost/moniez -p 1139 -U moniez Vous pouvez aussi utiliser la commande : smbmount //localhost/<partage> /mnt/smbwin -o username=<user_nt>,port=<port_local> (après avoir fait mkdir /mnt/smbwin) pour gérer le dossier de partage Samba comme s il était en local sur votre disque (dans le répertoire /mnt/smbwin). smbmount //localhost/moniez /mnt/smbwin -o username=moniez,port=1139 Pour ces dernières commandes, le mot de passe demandé est celui du compte Windows. A l ENSEIRB, les mots de passe Windows et Unix sont identiques. 4 Manipulations sur Windows. Les tests ont été effectués avec Windows XP mais la procédure devrait être la même quel que soit le système. Vous devez posséder un client ssh. L exemple se fait ici avec Putty (http://www.putty.nl/latest/x86/putty.exe). 4.1 Création du tunnel. Il faut arrêter le service de partage local pour utiliser le port 139. Ceci peut se faire dans une fenêtre de commande par : net stop server Vous devez ensuite lancer putty et indiquer le serveur SSH (ssh.enseirb.fr à l ENSEIRB) sur lequel aura lieu la connexion et le protocole : «SSH». 5
Cliquer sur «Tunnels» dans la partie gauche de la fenêtre. Cocher les cases «Local ports accept connections from other hosts» et «Remote ports do the same». Ensuite vous saisissez 139 comme «Source port» et votre «Destination», à savoir <serveur_samba>:139 (exemple ENSEIRB : brahmane.enseirb.fr:139). Laissez «Local» coché dans le bas de la fenêtre puis cliquez sur le bouton «Add» puis «Open». 6
4.2 Connexion aux partages du serveur. Une fois la connexion SSH effectuée, ouvrez un explorateur windows et saisissez dans la partie «Adresse» \\127.0.0.1 Le login et le mot de passe sont ceux du domaine NT reconnus par le serveur Samba (identiques à ceux Unix à l ENSEIRB). Vous devriez maintenant avoir accès à vos documents sur le serveur Samba. Pour simplifier la manipulation, vous pouvez utiliser le client plink. Créez un fichier de commande ssh.bat dans lequel vous entrez la ligne suivante : c:\putty\plink -A -N -L 139:<serveur_samba>:139 <user_ssh>@<serveur_ssh> c :\putty doit correspondre au répertoire où plink est installé sur votre ordinateur. Pour le reste des options, utiliser la commande plink seule pour avoir l aide. Ci-dessus un exemple de connexion à l ENSEIRB. Ainsi, lorsque vous exécutez ssh.bat, vous n avez qu à entrer votre mot de passe (ou passphrase) et le «port forwarding» est immédiatement activé. 7
5 Conclusion. Le partage Samba n est pas le seul service accessible par un tunnel SSH. Le «port forwarding», lorsqu il est autorisé par le serveur, permet d accéder à tous les ports accessibles au serveur SSH. Ainsi, vous pouvez, par exemple, rediriger le port http d un serveur web et y accéder en saisissant l adresse 127.0.0.1 dans votre navigateur (attention, vous n accédez alors qu à ce serveur), ou encore configurer votre client de messagerie pour envoyer vos courriers sur le port 25 de la machine locale, après avoir créé un tunnel vers votre serveur SMTP. De plus, les communications seront cryptées, garantissant une meilleure confidentialité. Attention cependant, le cryptage se fait entre le serveur SSH et votre poste, pas entre le serveur de services et le serveur SSH. 8