OVH Cloud OVH Cloud

PHP & Authentification SSH

3 réponses
Avatar
Zouplaz
Bonjour, je compte utiliser SSH pour sécuriser l'accès à une application
conçue avec PHP.
Avec le tunneling de ports proposé par SSH, l'accès à l'application se fera
par un simple http://127.0.0.1:81 sur chaque poste connecté au serveur.
Par ailleurs le port 81 du serveur est totalement fermé sur l'IP publique.

Bon, je sais pas si c'est suffisant de faire ça mais la question n'est pas
là.

Dans le cas présent, après la connexion SSH, l'utilisateur doit à nouveau
s'authentifier lors de l'utilisation de l'appli afin que celle ci détermine
ses "droits" (au sens de l'application, pas au sens système), son rôle.

Y a-t-il un moyen pour que mon appli PHP puisse détecter quel est
l'utilisateur connecté (le compte au sens système) afin d'éviter une
deuxième phase d'authentification ?

Lors de la connexion SSH je peux si nécessaire exécuter un script shell,
voire php donc mettre à jour la base de l'applicatif avec une info qui me
permettrait de m'y retrouver par la suite.

Mais quelle info ? L'IP ? Pas bon, les utilisateurs sont derrière un
routeur et partagent donc la même adresse IP.

De toute façons, le premier problème c'est d'arriver à faire passer de
l'info entre un script et l'appli PHP. Et déjà ça je vois pas du tout
comment faire.

Si vous avez une idée ou un commentaire !!

3 réponses

Avatar
John Gallet
Bonjour,

Avec le tunneling de ports proposé par SSH, l'accès à l'application se fera
par un simple http://127.0.0.1:81 sur chaque poste connecté au serveur.
Par ailleurs le port 81 du serveur est totalement fermé sur l'IP publique.

Bon, je sais pas si c'est suffisant de faire ça mais la question n'est pas
là.



Suffisant j'en sais rien mais je me demande surtout l'intérêt de faire ça
par rapport à seulement passer en https... Sauf si un connard d'admin refuse
d'ouvrir le port correspondant, ça n'a que peu d'intérêt.

Y a-t-il un moyen pour que mon appli PHP puisse détecter quel est
l'utilisateur connecté (le compte au sens système) afin d'éviter une
deuxième phase d'authentification ?



Tout dépend de ce qu'est capable d'envoyer le client ! Si c'estdu HTML, on
va pas aller bien loin.

Mais quelle info ? L'IP ? Pas bon, les utilisateurs sont derrière un
routeur et partagent donc la même adresse IP.


S'il n'y a qu'un seul routeur, on peut quand même la retrouver (voir la FAQ
de ce forum) mais de toutes façons c'est jamais une idée lumineuse.

De toute façons, le premier problème c'est d'arriver à faire passer de
l'info entre un script et l'appli PHP. Et déjà ça je vois pas du tout
comment faire.



Quel script ? J'ai du mal à voir qu'est-ce qui est tourne où.

Si vous avez une idée ou un commentaire !!


Les utilisateurs nous cassent pas les couilles et ressaisissent leur
login:pass
a+
JG

Avatar
Zouplaz
John Gallet - :


Suffisant j'en sais rien mais je me demande surtout l'intérêt de faire
ça par rapport à seulement passer en https... Sauf si un connard
d'admin refuse d'ouvrir le port correspondant, ça n'a que peu
d'intérêt.



Parce que https = login/pass alors que ssh = clé + passphrase. Simplement
plus sûr.
D'autre part, la connection ssh permet d'encrypter dans la foulée d'autres
transmissions pour d'autres protocoles (smtp, pop3).


De toute façons, le premier problème c'est d'arriver à faire passer de
l'info entre un script et l'appli PHP. Et déjà ça je vois pas du tout
comment faire.



Quel script ? J'ai du mal à voir qu'est-ce qui est tourne où.



script = script bourne shell, python, perl ou php exécuté lors de la
connexion ssh de l'utilisateur. Quant à "appli" c'est l'appli php.

Je cherche donc une solution pour arriver à faire communiquer les deux.


Avatar
Johann Dantant
"Zouplaz" a écrit dans le message de
news:
John Gallet - :


Suffisant j'en sais rien mais je me demande surtout l'intérêt de faire
ça par rapport à seulement passer en https... Sauf si un connard
d'admin refuse d'ouvrir le port correspondant, ça n'a que peu
d'intérêt.



Parce que https = login/pass alors que ssh = clé + passphrase. Simplement
plus sûr.
D'autre part, la connection ssh permet d'encrypter dans la foulée d'autres
transmissions pour d'autres protocoles (smtp, pop3).


Concrêtement tu dois avoir côté serveur SSH un tube ouvert pour chaque
client, et le serveur SSH connaît pour chaque tube le certificat utilisateur
qui lui est associé (et ce quelque soit le trajet de routeur en routeur
entre le client et le serveur, non ?).

Ensuite, une fois que le tube est ouvert jusqu'au serveur SSH, c'est lui qui
va ouvrir la connexion vers le serveur Web, je me trompe ? Donc vu du
serveur Web, toutes les requêtes arrivent non pas avec l'adresse du routeur,
mais avec celle du serveur SSH, avec un numéro de port client différent pour
chaque tube (à moins que je n'ai pas compris ton architecture...).

Une piste pour résoudre ta problèmatique serait donc de retrouver (en
demandant gentiment au serveur SSH) l'association qu'il y a entre le port
client et le certificat utilisateur. Dès que tu peux faire ça par un script,
tu peux le faire en PHP dans ton application Web, non ?

De toute façons, le premier problème c'est d'arriver à faire passer de
l'info entre un script et l'appli PHP. Et déjà ça je vois pas du tout
comment faire.




-- J.D.
J'aurai aimé savoir si en Norvège il y avait effectivement des panneaux
de signalisation sur les routes indiquant la présence éventuelle de
fantômes? Merci.
-+- DM in :GNU- Il y a quelque chose de pouri au royaume du neuneu -+-