[RESOLU] [C++ / MySQL] Connexion sécurisée

Connexion sécurisée [RESOLU] [C++ / MySQL] - C++ - Programmation

Marsh Posté le 12-07-2005 à 14:48:50    

Bonjour à tous,
 
J'ai fait quelques recherches sur le forum et je n'ai rien trouvé qui répond vraiment à ma question...
 
Je dois écrire une application en C++ pour configurer un firewall à distance. Pour certaines raisons, je souhaite stocker la configuration dans une base de données distante (qui sera sur une machine sécurisée). Puisqu'il s'agit de configurer un firewall, il ne faut surtout pas que les données transitent en clair entre mon application et la base de données (sinon, autant retirer le firewall tout de suite!!)
 
La base de données sera en mysql, l'application développée avec Gtk+2.
 
J'ai déjà pensé à faire des communications via ssh, j'ai trouvé trois méthodes :
 
- system("ssh ..." ) mais c'est pas propre
- libssh : http://www.0xbadc0de.be mais quand tu appliques le patch pour compiler sous windows ca diminue la sécurité
- libssh2 : http://libssh2.org qui est censé compiler sous windows (certains ont réussi) mais qui ne compile pas chez moi...
 
Je fais à la fois des recherches sur "pourquoi ca compile pas chez moi??" mais aussi sur une autre solution pour sécuriser les échanges mysql...
 
Si vous avez des idées, je suis preneur, tout en sachant me mon application doit fonctionner aussi bien sous windows que sous linux...
 
Merci d'avance!
 
p1c0


Message édité par _p1c0_ le 18-07-2005 à 16:24:47

---------------
-_- http://www.scienceshopping.com -_-
Reply

Marsh Posté le 12-07-2005 à 14:48:50   

Reply

Marsh Posté le 15-07-2005 à 00:37:00    

Réponse rapide, sans trop me renseigner :
 
- un petit system("ssh ..." ) en début d'appli pour faire de la redirection c'est pas bon  ? (me souviens plus de la syntaxe exacte) Ok il y a mieux mais ça peut aller non ?
 
- que veux tu faire avec les libssh ? elles vont t'offrir des fonctions permettant de crypter les envois, mais mysql utilise lui même des sockets, donc si il décide de ne pas crypter les échanges, je vois mal comment faire. A moins que la lib ssh te permette de faire de la redirection (en ajoutant le cryptage) ou qu'il y ait une méthode pour dire au client mysql de l'utiliser. Mais je ne me suis pas trop documenté là dessus
 
- autre solution plus bourrine : recompiler le client mysql de manière à ce qu'il permette de faire des envois cryptés, mais c'est limite
 
voila mon 1e point de vue. dis moi si ca va
 
edit : tes erreurs de compil, c'est pas dû à un appel incorrect de fonction (une des fonctions des socket mysql par hasard) ?
et puis c'est quoi le FW que tu vas configurer ?


Message édité par mooiz le 15-07-2005 à 00:39:58
Reply

Marsh Posté le 15-07-2005 à 11:24:37    

mooiz a écrit :

Réponse rapide, sans trop me renseigner :
 
- un petit system("ssh ..." ) en début d'appli pour faire de la redirection c'est pas bon  ? (me souviens plus de la syntaxe exacte) Ok il y a mieux mais ça peut aller non ?


Oui c'est toujours faisable mais c'est une application qui va être vendue donc si je pouvais faire quelque chose de propre ce serait mieux...
 

mooiz a écrit :


- que veux tu faire avec les libssh ? elles vont t'offrir des fonctions permettant de crypter les envois, mais mysql utilise lui même des sockets, donc si il décide de ne pas crypter les échanges, je vois mal comment faire. A moins que la lib ssh te permette de faire de la redirection (en ajoutant le cryptage) ou qu'il y ait une méthode pour dire au client mysql de l'utiliser. Mais je ne me suis pas trop documenté là dessus


Avec un client SSH, tu peux exécuter des commandes à distance avec une communication sécurisée. C'est le but ici, je me connecte en ssh sur mon serveur mysql et j'exécute mes commandes sur la bdd.
 

mooiz a écrit :


- autre solution plus bourrine : recompiler le client mysql de manière à ce qu'il permette de faire des envois cryptés, mais c'est limite
 
voila mon 1e point de vue. dis moi si ca va


Depuis la version 4.0, MySQL gère lui même les connexions cryptées avec SSL, seul problème, pour le compiler sous windows, il faut Visual Basic, or je dois faire tout avec du gratuit... En plus, il y a apparament des problèmes de licence pour mysql et openssl sous windows...
 

mooiz a écrit :


edit : tes erreurs de compil, c'est pas dû à un appel incorrect de fonction (une des fonctions des socket mysql par hasard) ?


En fait ca compile pas parce que c'est prévu à l'origine pour linux et que les auteurs ne s'occupent pas trop de windows pour le moment... (manque de temps apparament!)
 

mooiz a écrit :


et puis c'est quoi le FW que tu vas configurer ?


C'est un firewall fait maison : linux + iptables + snort
 
En gros :
 
Appli<------->BDD<-------->FW
 
Donc ca suppose communications cryptées entre Appli et BDD et aussi entre BDD et FW.
 
Avec un programme qui configure le FW en fonction des données dans la base de données et l'appli qui remplit la base de données et récupère les logs du FW dans la bdd.


---------------
-_- http://www.scienceshopping.com -_-
Reply

Marsh Posté le 15-07-2005 à 22:57:44    

_p1c0_ a écrit :

Oui c'est toujours faisable mais c'est une application qui va être vendue donc si je pouvais faire quelque chose de propre ce serait mieux...
Ca ne me choque pas tant que ça, c'est la méthode indiquée sur le site de mysql. Mais c'est toi le patron, donc voyons la suite
 
Avec un client SSH, tu peux exécuter des commandes à distance avec une communication sécurisée. C'est le but ici, je me connecte en ssh sur mon serveur mysql et j'exécute mes commandes sur la bdd.
Effectivement c'est pas bête, voyons cette solution...
 
Depuis la version 4.0, MySQL gère lui même les connexions cryptées avec SSL, seul problème, pour le compiler sous windows, il faut Visual Basic, or je dois faire tout avec du gratuit... En plus, il y a apparament des problèmes de licence pour mysql et openssl sous windows...
Effectivement, je viens de lire la doc la dessus. Donc si j'ai bien compris, ce qui est dit sur le site de mysql, c'est qu'il faut recompiler avec la lib ssl sous linux, et utiliser un client ssh pour faire du tunneling sous windows (ce que tu veux eviter).
 
De mon point de vue, après lecture des infos sur mysql.com, ça va effectivement être la galère pour recompiler sous win, étant donné la méthode utilisée (quoique des commentaires disent que c'est pas si dur, en tout cas avec VS  :)). Ceci dit, je ne vois pas vraiment en quoi vb est nécessaire ? et c'est quoi ces problèmes de licences ?
 
Sinon j'ai une solution un peu euh... dingue (bête ?) : redefinir les fonctions des sockets utilisées par mysql, de manière à utiliser tes propres fonctions qui feront appel à des fonctions de la lib ssl. Ca doit pouvoir marcher, tes fonctions doivent pouvoir prendre l'avantage sur celles de la lib socket, il y a une option à passer au compilo pour ça (mais je m'en souviens plus, évidement)
 
Enfin bon, les solutions sont pas simples si tu veux te passer d'un tunneling. A mon avis, le plus simple serait de commencer par un tunneling avec un client ssh externe, ensuite tu finis l'appli et s'il te reste du temps tu redeveloppe ça. Au pire tu as un truc qui marche mais pas super beau (quoique les clients vont pas aller te chercher là dessus ?), et tu peux même te faire payer en plus pour refaire ça + classe. Au mieux, tu as le temps de le finir. Mais à mon avis, le principal c'est déjà d'avoir un truc qui marche

 
En fait ca compile pas parce que c'est prévu à l'origine pour linux et que les auteurs ne s'occupent pas trop de windows pour le moment... (manque de temps apparament!)
Je veux bien te croire, j'ai pas essayé de compiler mysql sous windows. Tiens je vais m'y essayer demain :pt1cable: Je te previens si j'arrive à quelque chose
 
C'est un firewall fait maison : linux + iptables + snort
 
En gros :
 
Appli<------->BDD<-------->FW
 
Donc ca suppose communications cryptées entre Appli et BDD et aussi entre BDD et FW.
 
Avec un programme qui configure le FW en fonction des données dans la base de données et l'appli qui remplit la base de données et récupère les logs du FW dans la bdd.

Merci pour les infos sur le fw. J'ai bossé sur (enfin pas directement dessus, mais j'ai vu le fonctionnement ;)) un truc similaire l'année dernière (evidian), on peut en discuter en mp ?
 
Ah oui, et tu travailles avec quels outils ?

Reply

Marsh Posté le 18-07-2005 à 09:33:13    

mooiz a écrit :

Merci pour les infos sur le fw. J'ai bossé sur (enfin pas directement dessus, mais j'ai vu le fonctionnement ;)) un truc similaire l'année dernière (evidian), on peut en discuter en mp ?
 
Ah oui, et tu travailles avec quels outils ?


 
En fait, j'ai trouvé une solution à mon problème : stunnel http://stunnel.org
 
Ca permet de crypter les connexions et ca a l'air de marcher, j'ai sniffer (avec ethereal) une fois avec stunnel et une fois sans, la première fois, je vois apparaître MySQL mais pas la deuxième!
 
Sinon je veux bien en parler en mp mais evidian je connais pas du tout... Sinon pour les outils, c'est un peu les mêmes que dans Ipcop (si tu connais pas : http://www.ipcop.org)
 
Merci pour ton aide  


---------------
-_- http://www.scienceshopping.com -_-
Reply

Marsh Posté le 18-07-2005 à 16:05:46    

Je viens de regarder stunnel : tu dois pouvoier faire la même chose avec ssh. Ceci dit, au moins stunnel doit être plus petit que ssh. Merci de me l'avoir fait découvrir :)

Reply

Marsh Posté le 18-07-2005 à 16:24:02    

mooiz a écrit :

Je viens de regarder stunnel : tu dois pouvoier faire la même chose avec ssh. Ceci dit, au moins stunnel doit être plus petit que ssh. Merci de me l'avoir fait découvrir :)


 
Oui je suppose que ca doit exister aussi mais je suis tombé sur ca et ca me suffit très bien, mon but initial est atteint!  :bounce:  
 
De rien, c'est comme ca que j'en ai appris le plus, grâce aux forums!!  :)  


---------------
-_- http://www.scienceshopping.com -_-
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed