The ZATAZ network :: ZATAZ.com :: ZATAZ.net


Documentation : Tunneling SSH pour PHP

Date de publication : 19.7.2004
Date de modification : 12.2.2005

Contributeur : Eric Romang

Société : ZATAZ / http://www.zataz.net

Eric Romang co-fondateur de ZATAZ, avec Damien Bancal, supervise la direction technique de ZATAZ.

Situé au Luxembourg, Eric Romang a eu l'occasion au cours de ses années d'expériences dans le domaine au sein de datacenter de développer une expertise dans la haute disponibilité d'infrastructure, la mise en place de cluster MySQL, de solutions de stockages, de sauvegardes et de sécurisation d'environnement Linux.


But du document

Dans ce document, nous allons traiter de la mise en place d'un tunneling SSH STunnel permettant des connexions entre deux serveurs SQL, LDAP, au travers du langage PHP.

Pré-requis

Un serveur Linux
Un accès root sur la machine Linux.
Une bonne compilation de STunnel.

Mise en condition

Lors d'une connexion PHP - MySQL classique, sur un serveur distant, les informations transitent en clair dans le réseau internet. Si des échanges de données sensible doivent être effectuée, il nous faut absolument les crypter.

Exemple d'interception de données

Création du groupe et de l'utilisateur pour le serveur MySQL

Dans le root shell tapez :

shell > tcpdump -l -i eth0 -w - host ipdelamachine src or dst port 3306 | strings
3.23.41
p[W"AaG|
clientdb
RHHHNF[Y
base
SELECT id FROM offer WHERE offerstate='active'
offer
1345
1344
1347
1243


L'on voit clairement toutes les requêtes transiter entre les deux serveurs.

Solutions

Une protection des données lors du transite des informations est à effectuer.
Un cryptage des donées est alors préconisé.
La méthode du tunneling SSH sera utilisée.

Le logiciel stunnel se compose en deux parties, une partie cliente et une partie serveur.

Commandes Stunnel à lancer sur le Serveur 1

Commande client :

shell> stunnel -P/tmp/ -c -d 3308 -r server2 :3307

Commande serveur :

shell> stunnel -P/tmp/ -p /chemindaccesaucertificat/stunnel.pem -d 3307 -r 3306

Commandes Stunnel à lancer sur le Serveur 2

Commande client :

shell> stunnel -P/tmp/ -c -d 3308 -r server1 :3307

Commande serveur :

shell> stunnel -P/tmp/ -p /chemindaccesaucertificat/stunnel.pem -d 3307 -r 3306

Le prochain document traitera de l'utilisation de STunnel avec le gestion des certificats d'authentification

Modification PHP

Au niveau du code PHP, les modifications à apporter se situeront dans la fonction mysql_connect ou mysql_pconnect.

$Hydrogen_link = mysql_connect("127.0.0.1:3308","login","pwd");

Modification MySQL

Au niveau de MySQL un utilisateur devra être présent :

Sur le serveur 1 et 2

GRANT ALL on db.* to login@127.0.0.1 IDENTIFIED by "pwd";


Lien(s) Associé(s) :


contentRight


valider