Accès Shell sur une page web - stunnel inside !!!

Accès Shell sur une page web - stunnel inside !!! - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 30-12-2002 à 16:19:06    

Salut,
 
J'ai vu ca avec la distribution ipcop. On pouvait acceder a un shell par l'intermediaire d'une page web. Je ne sais plus ce que c'etait derriere (cgi, php, java, javascript....)
 
Enfin bref, ca m'interesse de mettre ca en place, car depuis mon boulot je ne peu pas acceder a mes pc a la maison, a moins de passer par le port 80 (SSH par 80 marche pas because proxy au taf)
 
Donc voila si vous aves un lien svp :)
Je pense utiliser SSL  + .htaccess, pour mettre ca en place histoire d'avoir un accès sécurisé
 
Merci d'avance


Message édité par lebibi le 11-02-2003 à 17:10:28
Reply

Marsh Posté le 30-12-2002 à 16:19:06   

Reply

Marsh Posté le 30-12-2002 à 17:00:18    

Webmin a une applet java qui te donne un acces ssh/telnet dans une page web ;)

Reply

Marsh Posté le 30-12-2002 à 17:08:40    

Dans le genre, un peu moins bourin, y a le SSH over SSL qui marche très bien (testé pendant pas mal de temps avec un proxy qui ne laisse passer que le SSL...)
 
tu fais un stunnel dans lequel tu fais passer du SSH... Faut voir ce qui t'arranges le plus... c'est un peu moins crade que ce que tu proposes... enfin, faut voir...

Reply

Marsh Posté le 30-12-2002 à 18:36:53    

Lebibi a écrit :

Salut,
 
J'ai vu ca avec la distribution ipcop. On pouvait acceder a un shell par l'intermediaire d'une page web. Je ne sais plus ce que c'etait derriere (cgi, php, java, javascript....)
 
Enfin bref, ca m'interesse de mettre ca en place, car depuis mon boulot je ne peu pas acceder a mes pc a la maison, a moins de passer par le port 80 (SSH par 80 marche pas because proxy au taf)
 
Donc voila si vous aves un lien svp :)
Je pense utiliser SSL  + .htaccess, pour mettre ca en place histoire d'avoir un accès sécurisé
 
Merci d'avance


 
cryptcat
 
un démon coté serveur en écoute sur le 80 (donc pas de http) avec l'option -e ( execution d'un binaire à la connexion en l'occurence un /bin/bash ? )
un client qui se connecte
et tout ce que tu tapes dans le client est envoyé au serveur tel quel , et tu peux choisir le protocole (tcp,udp)
 
j'ai fait un topic sur ce petit utilitaire il y a pas longtemps


Message édité par superX le 30-12-2002 à 18:40:06
Reply

Marsh Posté le 30-12-2002 à 18:39:47    

et tu peux choisir l'ip que doit écouter le démon et ainsi restreindre des 'tentatives'.  
L'avantage c'est que c'est tres simple à mettre en place , tres pratique mais pas forcément au gout de tout le monde ;)
 

Reply

Marsh Posté le 30-12-2002 à 19:03:05    

ok. En fait je voudrais quand même garder le port 80 de libre pour apache :)
 
Pour faire un tunnel pkoi pas, mais que me faut il exactement, et comment le mettre en place ?
 

Reply

Marsh Posté le 30-12-2002 à 22:47:49    

Bah pour ca, suffit d'utiliser le 443 (port https par défaut), que le proxy doit aussi laiser passer...
 
A priori, ca a même plus de chances de marcher qu'en utilisant le 80...

Reply

Marsh Posté le 30-12-2002 à 23:04:33    

sinon, pour la technique du stunnel (je recopie un howto rapide fait par une connaissance...)
 
céation d'un certificat SSL :  
 
en root sur la machine à laquelle aboutit le tunnel
 
    cd /etc/ssl/certs/
    openssl req -new -x509 -nodes -days 365 -out stunnel.pem -keyout stunnel.pem
    chmod 600 stunnel.pem
    dd if=/dev/random of=temp_file count=2
    openssl dhparam -rand temp_file 512 >> stunnel.pem
 
 (Ce sont les instructions du /usr/share/doc/stunnel/README.Debian,
  rien de plus.)
 
ca crée un certificat (stunnel.pem, valable 365 jours) permettant de crypter en SSL les données envoyée sur le stunnel, et lui donne les droits d'accès necessaires.
 
 
C'est une étape obligatoire des qu'on veut établir une connexion cryptée, à faire aussi pour l'autre méthode, mais peut-être automatisée dans ce cas...
 
 
toujours en root, à chaque démarrage (script) :  
 
stunnel -p /etc/ssl/certs/stunnel.pem -d 443 -r adresse_du_serveur:22
 
sur le client :
 
    stunnel -c -r adresse_de_la_machine_ou_aboutit_le_tunnel:443 -d 1242
 
Y va ptet gueuler en disant que le certificat n'est pas signé par une authorité compétence, mais bonn RAF... ca devrait marcher...
 
puis pour se connecter
 
    ssh -p 1242 utilisateur@localhost
 
 
Voila... Le principal problème, c'est qu'il faut avoir stunnel installé sur le client... Ce qui est pas forcément évident...

Reply

Marsh Posté le 31-12-2002 à 08:57:56    

héhé je me doutais bien de ca. Bah mon poste client est sous NT 4.0.
 
Je pensais prendre la main via Putty.
 
Bon je ne pense pas que ca soit possible, le mieux serait vraiment un shell en Java par exemple :)
 
J'en ai vu un en php mais c'est assez limitté quand même.
 
up par la même occasion :)
Merci pour les réponses deja

Reply

Marsh Posté le 31-12-2002 à 09:17:35    

stunnel existe sous windows (www.stunnel.org) auquel cas, tu peux tres bien utiliser putty...
 
bon, ok, j'arrete.. ;)

Reply

Marsh Posté le 31-12-2002 à 09:17:35   

Reply

Marsh Posté le 31-12-2002 à 09:35:18    

ok je regarde ca :)
 
je dl les fichiers pour windows, cette apres-midi je prepare mon linux comme il faut.
 
Par contre une petite question, j'ai une passerelle, le serveur web et sur un autre pc, je forward donc le port 80.
 
En utilisant SSH sur SSL je vais atterir sur le port 22 de ma passerelle ou sur le port SSL ?
 
Ou alors est ce que le port SSL ne me sert que pour sortir et passer au travers du proxy ?

Reply

Marsh Posté le 31-12-2002 à 11:19:56    

En fait, le principe est le même que pour un tunnel SSH :
 
tu crées le stunnel côté serveur sur la machine que tu veux (ta passerelle, par exemple) Tout ce quelle va faire, c'est désencapsuler les paquets, et les rediriger vers adresse_du_serveur, qui peux être n'importe quelle machine, à l'autre bout du monde si tu veux (ou, plus logiquement, ton serveur ici, ou localhost, si la machine à administrer est celle qui gère le tunnel...)
 
Si tu veux pouvoir administrer plusieurs machines, il faut soit redémarrer stunnel côté serveur à chaque fois en changeant l'adresse de destination, ou trouver plusieurs ports que ton proxy forwarde...
 
Enfin, dans ce cas, le plus simple, à mon avis, c'est de faire un beau tunnel vers une machine (la passerelle par exemple), et depuis le shell de cette machine, réouvrir des cessions SSH vers les autres...

Reply

Marsh Posté le 31-12-2002 à 11:32:44    

BigBen a écrit :

En fait, le principe est le même que pour un tunnel SSH :
 
tu crées le stunnel côté serveur sur la machine que tu veux (ta passerelle, par exemple) Tout ce quelle va faire, c'est désencapsuler les paquets, et les rediriger vers adresse_du_serveur, qui peux être n'importe quelle machine, à l'autre bout du monde si tu veux (ou, plus logiquement, ton serveur ici, ou localhost, si la machine à administrer est celle qui gère le tunnel...)
 
Si tu veux pouvoir administrer plusieurs machines, il faut soit redémarrer stunnel côté serveur à chaque fois en changeant l'adresse de destination, ou trouver plusieurs ports que ton proxy forwarde...
 
Enfin, dans ce cas, le plus simple, à mon avis, c'est de faire un beau tunnel vers une machine (la passerelle par exemple), et depuis le shell de cette machine, réouvrir des cessions SSH vers les autres...


 
oui c'est ce que je pense aussi. Donc si j'ai bien compris
 
Je créé le tunnel "serveur" sur ma passerelle linux en ecoute sur le port https.
 
Sur mon poste Windows au boulot, je lance le soft Stunnel qui ira se connecter au "serveur" tunnel (ma passerelle).  
Et apres hop je me connecte en ssh sur le port https.
 
Par contre, stunnel sous Win veut un fichier de conf, ok mais je ne trouve aucun exemple sur le net d'un fichier de conf pour la version Win

Reply

Marsh Posté le 31-12-2002 à 11:44:19    

bon, alors, j'essaie de résumer le principe de facon claire (j'ai dit que j'essayais, hein... ;) )
 
En fait, c'est ca :
 
|-------|
|serveur|\
|-------| \ |-------|.........(-----)...........|-------|
                \|tunnel2|------(proxy)--------|tunnel1|\
                 |-------|.........(-----)...........|-------| \ |------|
                                                                          \|client |
                                                                           |------|
 
sur tunnel1, t'ouvres une cession stunnel qui ecoute sur un port quelconque (le 1242 dans mon exemple), qui encapsule tout ce qu'il recoit dans du SSL, et qui envoie le tout vers tunnel2 sur le port 443. Ca passe à travers le proxy, vu que c'est du SSL, sur le 443, donc que ca ressemble beaucoup à du https.
 
tunnel2 recoit les paquets sur son 443, les désencapsule, et les réexpédie sur le 22 de serveur
 
le plus logique dans tonn cas, ca serait de faire tunnel1=client
 
tunnel2=ta passerelle
serveur=le serveur que tu veux administrer.
 
concrètement, pour te connecter, tu lances putty avec comme adresse tunnel1 et port 1242, dans mon exemple...
 
 
Pour ce qui est du paramétrage du stunnel, sais pas... y a rien sur leur site ?


Message édité par BigBen le 31-12-2002 à 11:51:15
Reply

Marsh Posté le 31-12-2002 à 11:48:02    

BigBen a écrit :

bon, alors, j'essaie de résumer le principe de facon claire (j'ai dit que j'essayais, hein... ;) )
 
En fait, c'est ca :
 
|-------|
|serveur|\
|-------| \ |-------|.........(-----)........|-------|
                \|tunnel2|------(proxy)--------|tunnel1|\
                 |-------|.........(-----)........|-------| \ |------|
                                                         \|client|
                                                          |------|
 
sur tunnel1, t'ouvres une cession stunnel qui ecoute sur un port quelconque (le 1242 dans mon exemple), qui encapsule tout ce qu'il recoit dans du SSL, et qui envoie le tout vers tunnel2 sur le port 443. Ca passe à travers le proxy, vu que c'est du SSL, sur le 443, donc que ca ressemble beaucoup à du https.
 
tunnel2 recoit les paquets sur son 443, les désencapsule, et les réexpédie sur le 22 de serveur
 
le plus logique dans tonn cas, ca serait de faire tunnel1=client
 
tunnel2=ta passerelle
serveur=le serveur que tu veux administrer.
 
concrètement, pour te connecter, tu lances putty avec comme adresse tunnel1 et port 1242, dans mon exemple...
 
 
Pour ce qui est du paramétrage du stunnel, sais pas... y a rien sur leur site ?


 
ok je comprend un peu mieux, c'est interessant comme tout :)
Sinon pour le fichier de conf stunnel version windows je ne trouve rien :/
 
Si tu trouves ;) je suis preneur

Reply

Marsh Posté le 31-12-2002 à 12:00:11    

apres edition d'un fichier de conf sous linux, à priori, si y a pas d'options supplémentaires pour la version win, y aurais pas de paramaètres à lui mettre ds le fichier de conf (correspondent à des options coté serveur...
 
t'as essayé avec un fichier de conf vide ?


Message édité par BigBen le 31-12-2002 à 12:03:13
Reply

Marsh Posté le 31-12-2002 à 12:06:49    

et sinon, t'as bien fait ca ?
 
1. Download libssl32.dll and libeay32.dll into \windows\system directory.
 
(risque d'être dur si t'as pas admin sur la machine... ptet que ca marche en les mettant ds un dossier quelconque qui est dans le PATH...

Reply

Marsh Posté le 31-12-2002 à 12:07:16    

BigBen a écrit :

apres edition d'un fichier de conf sous linux, à priori, si y a pas d'options supplémentaires pour la version win, y aurais pas de paramaètres à lui mettre ds le fichier de conf (correspondent à des options coté serveur...
 
t'as essayé avec un fichier de conf vide ?


 
oui oui sans le fichier stunnel.conf tu as un message d'erreur.
J'avais donc créé un stunnel.conf vide et stunnel se lance bien.
 
Il y a juste un message apres qui est :
 
2002.12.31 11:44:28 LOG5[208:239]: stunnel 4.03 on x86-pc-mingw32-gnu WIN32 with OpenSSL 0.9.6g 9 Aug 2002
2002.12.31 11:44:28 LOG3[208:271]: SSL_accept: Peer suddenly disconnected
 
C'est la derniere phrase que je n'aime pas trop.
 
Enfin bref, bon je rentre a la maison et je met en route stunnel sur mon linux, et on verra jeudi ce que ca donne :)
 
Faut il activer certaines options particulieres dans le noyau ?

Reply

Marsh Posté le 31-12-2002 à 12:15:47    

pour le log, sais pas trop, faudra essayer...
 
sinon, pas d'option particulière dans le noyau (enfin, bon, faut que le "networking" soit activé, quoi...  ;)
 
Sinon, faut juste installer openSSL avec si c'est pas déjà fait...

Reply

Marsh Posté le 31-12-2002 à 13:11:33    

bon voila j'ai fait comme tu m'as dit, il ne me reste plus qu'a tester jeudi depuis le bureau
 
Y a un moyen de faire des test ?
 
en interne ?

Reply

Marsh Posté le 01-01-2003 à 18:21:39    

up

Reply

Marsh Posté le 02-01-2003 à 15:35:28    

up
 
je suis au boulot mais ca ne marche pas :'(

Reply

Marsh Posté le 02-01-2003 à 16:01:42    

euuuh, c'est à dire ? à quel niveau, quel message d'erreur ?

Reply

Marsh Posté le 03-01-2003 à 10:17:37    

bah je n'arrive pas a me connecter avec putty :'(
 
C'est comme avant, je dois merder quelque part, c'est sur.
 
La conf de stunnel sous Win ? (y a rien dedans)
Conf de putty particuliere ?

Reply

Marsh Posté le 03-01-2003 à 12:43:16    

bah putty, faut juste s'assurer de mettre la bonne adresse et le bon port... celui du tunnel, pas du serveur directement (localhost:1242, si tu as suivi mon exemple...) sinon, bah c'est qu'il y a une couille qq part... sans plus d'indications, va être dur à diagnostiquer...

Reply

Marsh Posté le 03-01-2003 à 13:27:35    

BigBen a écrit :

bah putty, faut juste s'assurer de mettre la bonne adresse et le bon port... celui du tunnel, pas du serveur directement (localhost:1242, si tu as suivi mon exemple...) sinon, bah c'est qu'il y a une couille qq part... sans plus d'indications, va être dur à diagnostiquer...


 
stunnel -c -r adresse_de_la_machine_ou_aboutit_le_tunnel:443 -d 1242
 
ca je l'execute aussi sur ma passerelle ???

Reply

Marsh Posté le 03-01-2003 à 14:52:33    

t'executes ca sur ton client winnt, puis sur le même client, tu lances putty avec comme paramètres : serveur localhost, port 1242

Reply

Marsh Posté le 03-01-2003 à 16:33:53    

tiens pour la config de stunnel sous Win  
 

Code :
  1. Global options
  2. CApath          = CA certificate directory for 'verify' option
  3. CAfile          = CA certificate file for 'verify' option
  4. cert            = certificate chain
  5. ciphers         = list of permitted SSL ciphers
  6. client          = yes|no client mode (remote service uses SSL)
  7. debug           = [facility].level (e.g. daemon.info)
  8. EGD             = path to Entropy Gathering Daemon socket
  9. key             = certificate private key
  10. service         = NT service name
  11. output          = file to append log messages
  12. RNDbytes        = bytes to read from random seed files
  13. RNDfile         = path to file with random seed data
  14. RNDoverwrite    = yes|no overwrite seed datafiles with new random data
  15. session         = session cache timeout (in seconds)
  16. socket          = a|l|r:option=value[:value]
  17.                   set an option on accept/local/remote socket
  18. verify          = level of peer certificate verification
  19.                   level 1 - verify peer certificate if present
  20.                   level 2 - require valid peer certificate always
  21.                   level 3 - verify peer with locally installed certificate
  22. Service-level options
  23. accept          = [host:]port accept connections on specified host:port
  24. connect         = [host:]port connect remote host:port
  25. delay           = yes|no delay DNS lookup for 'connect' option
  26. ident           = username for IDENT (RFC 1413) checking
  27. local           = IP address to be used as source for remote connections
  28. protocol        = protocol to negotiate before SSL initialization
  29.                   currently supported: smtp, pop3, nntp
  30. TIMEOUTbusy     = seconds to wait for expected data
  31. TIMEOUTclose    = seconds to wait for close_notify (set to 0 for buggy MSIE)
  32. TIMEOUTidle     = seconds to keep idle connection


 
 
J'ai mis ca mais je ênse que c'est incomplet :/
 

Code :
  1. client = yes
  2. connect = bibi.hn.org:443

Reply

Marsh Posté le 11-02-2003 à 17:08:08    

up

Reply

Marsh Posté le 11-02-2003 à 17:53:35    

si t'y arrive pas avec la solution qu'il t'a été donné, essaye d'utilise http_tunnel
 
http://www.nocrew.org/software/httptunnel.html
 
http://linuxfr.org/tips/129.html


Message édité par nico168 le 11-02-2003 à 17:55:28
Reply

Marsh Posté le 12-02-2003 à 17:17:05    

ok je vais essayer ca, enfin ca me tente pas trop telnet ;)
je vais plutot voir ca avec SSH et putty

Reply

Marsh Posté le 14-02-2003 à 11:37:47    

j'ai essayé la solution de Linusfr mais ca ne semble pas marcher.
 
Par contre j'ai modifié 23 pae 22 (je veux du SSH) et je suis sous du NT 4.0 et je n'ai pas réussi a dl les fichiers pour NT, donc j'ai pris les Win32.
 
Je vois bien mon script dans le gestionnaire des taches.
 
Y a t'il quelque chose a configurer (j'utilise putty aussi) que j'ai pu oublier ?
 
Une autre solution ?
 
Merci de m'aider
 
Ha aussi je forward les ports 8888 (avec iptables) en u^dp et tcp vers une autre box de mon réseau
 
Si vous aves des idées, je suis preneur :)

Reply

Marsh Posté le 18-02-2003 à 02:02:42    

http://shellinabox.com/
 
tu installes l'applet java de pref sur un serveur web en ssl et apres, tu utilises un simple browser pour acceder a ton serveur. Pas de tunnel, pas de truc à lancer toi meme sur les machines, jsute l'applet java qui se gere elle meme plus un daemon qu'elle lance sous le user d'apache qd il le faut.
 
C sympathique comme soft en tout, chui fan depuis ce matin qu'on me l'a fait découvrir


---------------
Two thousand years of misery, of torture in my name, hypocrisy made paramount, paranoia the law, my name is called religion, sadistic, sacred whore.
Reply

Marsh Posté le 18-02-2003 à 11:47:54    

Ha oui c'est ca me semble cool :)
 
j'ai commencé a l'installer mais il me faut java.
 
je dl la jdk1.1 sur le site de ibm ?

Reply

Marsh Posté le 18-02-2003 à 12:07:30    

Lebibi a écrit :

Ha oui c'est ca me semble cool :)
 
j'ai commencé a l'installer mais il me faut java.
 
je dl la jdk1.1 sur le site de ibm ?


 
le jdk1.1 c'est la prehistoire !! recupere le jre1.4.1_01 chez sun ce sera bcp mieux

Reply

Marsh Posté le 18-02-2003 à 12:28:25    

une pitite kestion pour stunnel :
kan le client etablie une connexion avec le server, le server forward le trafic vers un port d une machine (k on a defini)
 
disons que c est le port 22 sur localhost.
 
Alors je me demandais : Est ce qu il faut ouvrir le port 22 a l exterieur, ou le port 443 suffit il ???
 
car si j ai pas besoin d ouvrir le port 22, ca serait vraiment sympa (pour les trous d uc avec nmap et compagnie :o )
 
voilou  :hello:

Reply

Marsh Posté le 18-02-2003 à 22:43:10    

up
 
 
si vous avez d'autres infos
ca merde avec java :'(

Reply

Marsh Posté le 19-02-2003 à 13:00:12    

Salut, j'ai pas compris ton pb sur le java, dsl.
 
J'ai pris le soft sur la page web, je l'ai decompressé dans un rep d'apache et hop, depuis le browser du taf ca marche. La java n'est requit que pour ton browser en tant que plugin


---------------
Two thousand years of misery, of torture in my name, hypocrisy made paramount, paranoia the law, my name is called religion, sadistic, sacred whore.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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