rejetto forum

A propos de Portable sHFS : HFS via Stunnel with configuration GUI

0 Members and 1 Guest are viewing this topic.

Offline SilentPliz

  • Moderator
  • Tireless poster
  • *****
    • Posts: 1298
  • ....... chut ! shh!
    • View Profile
Bonsoir AvvA !

Pendant que j'y pense: tu peux ajouter ceci dans le stunnel.conf:

; Path to file with random seed data
RNDfile  = random.rnd

; The SSL library will use data from this file first to seed the random number generator.
RNDoverwrite = yes


Tu ajoutes aussi le fichier random.rnd dans le répertoire de Stunnel (il est créé lors de la génération du certificat).

C'est très utile pour la sécurité, surtout sous Windows... cela amène de l'aléatoire, et le fichier est régulièrement automatiquement réécrit.
« Last Edit: August 02, 2010, 06:39:26 PM by SilentPliz »


Offline AvvA

  • Tireless poster
  • ****
    • Posts: 135
    • View Profile
Bonjour SilentPliz :)

Je suis tout à fait d'accord avec toi, la sécurité sur ce type de connexion doit être optimisée au maximum, tant qu'à faire ^^. J'ai testé pour voir, j'ai ajouté RNDfile = random.rnd à la main, et en effet, si le fichier existe, il est modifié avec une entropie assez impressionnante, ça me plait :)
Par contre, si le fichier n'existe pas il n'est pas généré par Stunnel.

Je créé déjà un fichier random.rnd au moment de la génération du certificat via OpenSSL, et le mets ici : X:/your folder/stunnel/openssl/random.rnd , via RANDFILE = ./random.rnd (dans pem.conf). Je vais tenter de l'écrire dans le répertoire parent directement (donc celui de Stunnel), afin de faire d'une pierre 2 coups.

Dans le stunnel.conf, RNDoverwrite est par défaut à 'yes', dixit ça, tu as une source plus récente qui dit l'inverse, ou une raison particulière pour l'indiquer ?
« Last Edit: August 02, 2010, 06:39:38 PM by SilentPliz »


Offline SilentPliz

  • Moderator
  • Tireless poster
  • *****
    • Posts: 1298
  • ....... chut ! shh!
    • View Profile
Salut AvvA  :)

Je créé déjà un fichier random.rnd au moment de la génération du certificat via OpenSSL, et le mets ici : X:/your folder/stunnel/openssl/random.rnd , via RANDFILE = ./random.rnd (dans pem.conf). Je vais tenter de l'écrire dans le répertoire parent directement (donc celui de Stunnel), afin de faire d'une pierre 2 coups.

Oui, c'est ce que je suggérais... peut-être pas assez clairement.  :)

Dans le stunnel.conf, RNDoverwrite est par défaut à 'yes', dixit ça, tu as une source plus récente qui dit l'inverse, ou une raison particulière pour l'indiquer ?

En effet, c'est à "yes" par défaut... mais de manière générale quand une option est modifiable par l'utilisateur je préfère l'écrire "en clair" dans le fichier de "conf"... par exemple pour qui voudrait pour x raisons la mettre à "no".
 
@+  ;)

Edit : je déplace nos 3 messages dans le topic en français... c'est moins "shocking" :)
« Last Edit: August 02, 2010, 06:39:49 PM by SilentPliz »


Offline AvvA

  • Tireless poster
  • ****
    • Posts: 135
    • View Profile
Ok, j'ai terminé les modifications vis à vis du fichier random.rnd, et le renommage des 2 fichiers de configuration de Stunnel, et j'ai màj Stunnel et OpenSSL aux dernières versions dispo (4.33 et 1.0.0a).

Ensuite j'ai regardé les divers HFS dispos, et je me tâte pour les versions à inclure...
Donc je vais lâchement te demander quelle version mettre, si ça t'embête pas trop :-*


Quand j'aurai lu ta réponse je testerai si tout fonctionne, et essaierai d'employer, à nouveau ^^', le test de port de rejetto, si je n'y arrive pas, je chercherai un serveur php qui accepte fsockopen pour le test du port. Voilà voilà :)


Offline SilentPliz

  • Moderator
  • Tireless poster
  • *****
    • Posts: 1298
  • ....... chut ! shh!
    • View Profile
Ok, j'ai terminé les modifications vis à vis du fichier random.rnd, et le renommage des 2 fichiers de configuration de Stunnel, et j'ai màj Stunnel et OpenSSL aux dernières versions dispo (4.33 et 1.0.0a).

Cool, j'en connais qui vont être heureux! :)

Ensuite j'ai regardé les divers HFS dispos, et je me tâte pour les versions à inclure...
Donc je vais lâchement te demander quelle version mettre, si ça t'embête pas trop :-*

Sans hésitation, la 266. Pas de bugs rédhibitoires, ce qui n'est pas le cas des 2 ou 3 versions précédentes.
De toute façon ton pack n'empêche pas les mises à jour... alors tu peux y aller les yeux fermés. 8)

Quand j'aurai lu ta réponse je testerai si tout fonctionne, et essaierai d'employer, à nouveau ^^', le test de port de rejetto, si je n'y arrive pas, je chercherai un serveur php qui accepte fsockopen pour le test du port. Voilà voilà :)

Tu va pouvoir t'y mettre alors!

Bon courage!  ;)


PS : en plus il y a quelques petites surprises dans la 266 VF que je n'ai pas encore documentées. ;)
J'ai mis un nouveau fichier en ligne.
« Last Edit: August 15, 2010, 10:54:04 PM by SilentPliz »


Offline AvvA

  • Tireless poster
  • ****
    • Posts: 135
    • View Profile
Merci, je vais prendre cette version alors, je la téléchargerai demain comme ça si tu màj à nouveau j'aurai le dernier fichier :)
Je m'y mettrai demain je pense, je commence à piquer du nez ^^.


Offline SilentPliz

  • Moderator
  • Tireless poster
  • *****
    • Posts: 1298
  • ....... chut ! shh!
    • View Profile

Offline AvvA

  • Tireless poster
  • ****
    • Posts: 135
    • View Profile
Merci et bonsoir :)

Déjà, bravo pour la version HFS FR, elle a rudement changé en 1 an et est beaucoup plus claire, je n'ai pas encore maté la version originale pour voir tes modifs, mais j'ai vu des options que je sais que la VO n'a pas ^^


Bon, j'ai tout fini, il me reste à corriger un vieux bug, j'ai besoin de ton aide sur ce coup là...

Il y a une case "autoriser le traffic HTTP en local" dans mon GUI, lorsque c'est coché, ça devrait autoriser les connexions locales en http, et continuer à autoriser les connexions distantes en https.

Pour le moment ça écrit un truc qui foire le http, voici les lignes qui sont créées dans les filtres de ban :
\127.0.0.1  -> qui autorise uniquement HFS à répondre quand c'est la machine qui l'exécute qui lui demande un truc (donc Stunnel).
192.168.0.* -> qui est censé autoriser le local... mais oui, je me suis trompé dans la logique et aurait du y mettre un \ devant.

j'ai testé aussi avec \127.0.0.1;192.168.0.* mais ça ne marche pas.
En voyant le panneau principal d'HFS on voit : "accepter les connections de" et ça, ça reste à 127.0.0.1:port, et donc forcément le http ne peut pas marcher puisque les ip autre que 127.* sont interdites.

Est-ce que ce que je veux faire est réalisable ?


Offline SilentPliz

  • Moderator
  • Tireless poster
  • *****
    • Posts: 1298
  • ....... chut ! shh!
    • View Profile

Offline SilentPliz

  • Moderator
  • Tireless poster
  • *****
    • Posts: 1298
  • ....... chut ! shh!
    • View Profile
Normalement tu gardes le ban : \192.168.*.*;127.0.0.1

Adresse IP > 127.0.0.1

Accepter les connexions > de toutes les adresses

connexions http en local : http://127.0.0.1:port d'écoute de HFS/
connexions https en local : http://192.168.1.X:port d'écoute de Stunnel/

Les connexions extérieures https via stunnel passent normalement... c'est ma config habituelle

d'habitude je n'utilise pas de "joker", car je n'ai qu'un PC... Je viens de tester en mettant les mêmes jokers que dans le ban de HFS dans stunnel.conf, et cela marche bien en http et en https en local et aussi bien en https de l'extérieur :

[https]
accept = 57800
connect = 127.0.0.1:44300
local = 192.168.*.*
TIMEOUTclose = 0
-------------------------------------

192.168.*.* fonctionne bien aussi dans Adresse vers Nom
« Last Edit: August 16, 2010, 10:03:12 PM by SilentPliz »


Offline AvvA

  • Tireless poster
  • ****
    • Posts: 135
    • View Profile
Ah oui ok je comprends, suis-je bête ^^'
C'est simplement que je dois accepter les connexions sur toute les IP dans hfs, je ne sais pas pourquoi ça ne m'a pas sauté aux yeux en le marquant au dessus... je comprends que tu n'ais pas compris ce que je voulais ^^"...
Si tu veux là je mettais les bans inversés, mais je disais à HFS d'écouter uniquement sur 127.0.0.1... forcément, il n'écoutait donc pas les 192.*   ;D

Sinon, pour t'expliquer mieux mon but :
Les connections provenant de l'extérieur passent par Stunnel en HTTPS, et les connections locales passent directement par HFS en HTTP, pour éviter l'encodage/décodage quand ce n'est pas nécessaire.

Du coup l'option dans hfstunel.conf (^^), local=192.0.*.* n'est pas ce que je recherchais (je crois que ça sert à dire que Stunnel ne répond que si l'adresse demandée est celle indiquée, si j'ai bien compris ^^).

Pour les jokers, je suis un peu obligé de les utiliser dans le but recherché, ça m'évite de faire plusieurs cases pour indiquer chaque IP sur le réseau local.
Au passage, si ton masque de sous-réseau est 255.255.255.0, alors le 'joker' correct est 192.168.0.0 qui est l'adresse du réseau, et qu'HFS ne comprend pas, il faut donc utiliser 192.168.0.*, le 1er 0 ne pouvant pas changer dû au masque de sous-réseau. (2 machines avec ce masque de sous-réseau et ayant pour IPs 192.168.0.1 et 192.168.1.1 ne peuvent pas communiquer ensemble directement, c'est le but des sous-réseaux)


En tout cas merci à toi, te lire m'a fait réaliser ce qui clochait  :-* (Accepter les connexions > de toutes les adresses)

Je regarderai ça demain à tête reposée, pour le moment, dodo time !

Bonne nuit :)


Offline SilentPliz

  • Moderator
  • Tireless poster
  • *****
    • Posts: 1298
  • ....... chut ! shh!
    • View Profile
Sinon, pour t'expliquer mieux mon but :
Les connections provenant de l'extérieur passent par Stunnel en HTTPS, et les connections locales passent directement par HFS en HTTP, pour éviter l'encodage/décodage quand ce n'est pas nécessaire.

J'avoue que je ne comprend pas bien. On dirait que tu veux parvenir à un mode de fonctionnement qui est déjà celui par défaut d'une configuration HFS/Stunnel.

Toutes mes connexions locale se font en http, sauf si j'impose le contraire.
Exemple d'une config standard :

Paramètres de HFS VF:

Autres Options > Navigation locale (localhost)

Port d'écoute de HFS : 44300

Adresse IP : 127.0.0.1

Accepter les connexions > De toutes les adresses

Bans > \192.168.1.*;127.0.0.1

Facultatif mais utile pour le log :

Adresse vers nom :

Local   127.0.0.1
Stunnel   192.168.1.*


Donc déjà le lien pour naviguer en http localement avec HFS est :

http://127.0.0.1:44300/  ou http://localhost:44300/
-----------------------------------------

Paramètre de Stunnel :

[https]
accept = 443  (Stunnel écoute tout sur ce port : équivalent à 0.0.0.0:443)
connect = 127.0.0.1:44300 (Stunnel communique avec HFS)
local = 192.168.1.*  (une connexion locale en https pourra se faire avec un telle adresse : https://192.168.1.3/  ou  https://192.168.1.3:PORT/ si un port autre que le 443 est utilisé).

Donc le serveur est joignable de l'extérieur uniquement en https avec : https://ip_publique/ ou https://domaine.truc par exemple.

Dans HFS si tu ne touche à rien de cette config, et que tu cliques sur "Ouvrir dans le navigateur" tu va naviguer localement en http : http://127.0.0.1:44300/ par défaut, seules les connexions entrantes de l'extérieur devront passer d'abord par Stunnel avec un lien https.

Si tu veux forcer une connexion locale en https, tu devra entrer dans ton navigateur : https://192.168.1.3/ par exemple ou https://192.168.1.3:PORT/ si un port autre que le 443 est utilisé dans Stunnel

Donc par défaut le connexions locales se font en http... corrige moi si je n'ai vraiment pas compris ce que tu souhaites faire.

Du coup l'option dans hfstunel.conf (^^), local=192.0.*.* n'est pas ce que je recherchais (je crois que ça sert à dire que Stunnel ne répond que si l'adresse demandée est celle indiquée, si j'ai bien compris ^^).

Non.

Quote

local = host
    IP of the outgoing interface is used as source for remote connections. Use this option to bind a static local IP address, instead.

Le plus simple est de tester cette config et tu vois comment ça réagit... avec l'event script du log et compagnie.
De toute façon c'est exactement le même modèle de config que produit ton interface jusqu'à présent.

Sinon, tout semblait fonctionner correctement avec ton interface... qu'est ce qui te poses problème?

@+ ;) dodo zzzzzzzzzzzzzz
« Last Edit: August 17, 2010, 01:46:53 AM by SilentPliz »


Offline AvvA

  • Tireless poster
  • ****
    • Posts: 135
    • View Profile
 ;D Je ne sais pas si on va arriver à se comprendre...

bon déjà, quand je dis connexion locale j'entends connexion au réseau local : 192.168.0.0 et non connexion sur l'hôte local (dans ce cas là j'emploierai localhost).
Si je dis connexions locales c'est par opposition à connexions distantes.

Maintenant mon GUI, de base, et par sécurité pour ceux qui n'y connaissent rien, si tu ne fais que donner ton IP publique et le port associé et que tu créés les fichiers de configuration, alors je créé automatiquement :
 - une règle de ban inversé HFS \127.0.0.1,
- limite l'écoute d'HFS à cette IP sur le port interne choisi (44300 dans ton exemple).

Ce qui empêche toute connexion directe à HFS sans passer par localhost:44300 ou ses assimilés (loopback, 127.0.0.1). Se connecter directement à HFS induit le protocole HTTP.

De fait, la connexion en HTTP est impossible ailleurs que sur la machine hôte d'HFS.
Donc de base, mon GUI empêche toute connexion depuis un autre poste du réseau local en HTTP (de même pour le distant bien sûr).

Également de base avec mon GUI, Stunnel écoute toutes les IP (0.0.0.0), qu'elles soient locales ou distantes.
Ainsi il est possible de se connecter en HTTPS depuis une machine distante (avec l'IP publique du serveur HTTP(S)) ou une machine du réseau local (avec l'IP locale du serveur).

ça c'était l'exacte configuration que je recherchais de base à créer pour un utilisateur néophyte.

----------------

Maintenant, la réponse à ton 1er quote :
Quote
Les connections provenant de l'extérieur passent par Stunnel en HTTPS, et les connections locales passent directement par HFS en HTTP, pour éviter l'encodage/décodage quand ce n'est pas nécessaire.

Avec mon GUI ce n'est pas le cas, les règles HFS de ban inversée et l'écoute uniquement sur 127.0.0.1:44300 (ou quelque soit ton adresse de loopback) font que ce quote n'est pas applicable. (Attention connexion locale = 192.168.0.* et non localhost)

-------------

Maintenant, tu m'as donné la solution même sans comprendre mon problème, règle HFS : écouter toutes les IP.
Ceci associé à la règle de ban inversée \127.0.0.1;192.168.0.* fera que mon quote sera possible.
C'est une erreur d'étourderie de ma part... je touchais aux règles de ban sans réfléchir aux à côtés...

Actuellement je n'ai donc plus ce problème :)
Mais j'en ai trouvé un autre pour pouvoir retarder la maj ;D (un p'tit souci pour insérer des lignes vierges dans le fichier pem...)

--------------

Par rapport à l'option local de Stunnel je n'arrive pas à te comprendre...
Quote
local = host
    IP of the outgoing interface is used as source for remote connections. Use this option to bind a static local IP address, instead.
C'est bien grâce à ça que j'arrive à ne pas être d'accord ^^, j'engraisse le mot qui change le sens.
Moi je traduis comme ça :
Usuellement, Stunnel utilise l'IP de la carte réseau utilisée pour les connexions sortantes comme source pour les connexions distantes.
Utilisez cette option pour assigner un IP statique locale à la place.


Donc pour moi cette option ne sert pas au but que tu lui alloues, et ne s'utilise probablement pas avec un joker (static local IP).
J'hésite entre 2 utilités :
- la machine qui fait serveur a 2 cartes réseaux et tu veux que seule l'une d'elle soit en contact avec Stunnel (pour clarifier le log ou simplement pour libérer ou exclure les autres cartes réseau),
- la machine qui fait serveur peut être appelée par son nom 'lamachineatoto', ou son IP '192.168.0.1', mais toi tu veux que seulement l'IP soit utilisée avec Stunnel, tu l'indiques alors avec local = 192.168.0.1.

Bien sûr je ne dis pas que j'ai raison, mais les 'éventuellement' et les 'je pense' rendent mes explications incompréhensibles, déjà que sans...


----------------------

Paramètre de Stunnel :

[https]
accept = 443  (Stunnel écoute tout sur ce port : équivalent à 0.0.0.0:443)
connect = 127.0.0.1:44300 (Stunnel communique avec HFS)
local = 192.168.1.*  (une connexion locale en https pourra se faire avec un telle adresse : https://192.168.1.3/  ou  https://192.168.1.3:PORT/ si un port autre que le 443 est utilisé).

Donc le serveur est joignable de l'extérieur uniquement en https avec : https://ip_publique/ ou https://domaine.truc par exemple.

Si tu accept sur toutes les IP, local, utilisé dans le sens que tu lui prêtes, n'est pas nécessaire vu que 192.168.1.* font déjà partie de toutes les IP. Quant à la connexion via un autre port je ne vois pas l'utilité :/

J'ai cherché des exemples, mais en vain, et vue que je n'ai pas besoin de cette option pour arriver à mes fins je ne pousse pas plus pour le moment, mais ça m'intéresserai de connaitre sa véritable utilité.

---------------

Donc au cas où ça t'ai échappé dans ce pavé, je n'ai plus ce problème, il suffisait que je modifie la règle de ban (sur une seule ligne), et que je paramètre HFS pour qu'il écoute toutes les IP. La règle de ban limitant l'écoute aux IP du réseau local et au loopback.
Une grossière erreur de débutant, j'ai honte ^^"


----------------

Bon, je vais modifier ça, tester et tenter de résoudre ce problème d'insertion de ligne blanche qui est apparu avec la maj des versions des logiciels employés et aussi peut-être avec win7... faut que je cherche plus avant pour comprendre ^^.


En attendant, merci à toi pour l'énergie que tu mets à m'aider à résoudre mes soucis !




edit :
J'utilise l'option local dans les paramètres avancés, au choix de l'utilisateur, et voici le but que je lui alloue :
Utile quand associé avec Adress2name. Demande à Stunnel d'attacher l'adresse que vous indiquez au lieu du localhost. Pour que ça fonctionne, il faut indiquer votre adresse de réseau local.

Ce qui rejoindrait ma 2ème explication pour cette option 'local' ^^ (la machine qui fait serveur peut être appelée par son nom 'lamachineatoto', ou son IP '192.168.0.1'...)
« Last Edit: August 17, 2010, 02:35:01 PM by AvvA »


Offline SilentPliz

  • Moderator
  • Tireless poster
  • *****
    • Posts: 1298
  • ....... chut ! shh!
    • View Profile
 ;) Saluto !

Par rapport à l'option local de Stunnel je n'arrive pas à te comprendre...C'est bien grâce à ça que j'arrive à ne pas être d'accord ^^, j'engraisse le mot qui change le sens.
Moi je traduis comme ça :
Usuellement, Stunnel utilise l'IP de la carte réseau utilisée pour les connexions sortantes comme source pour les connexions distantes.
Utilisez cette option pour assigner un IP statique locale à la place.


Donc pour moi cette option ne sert pas au but que tu lui alloues, et ne s'utilise probablement pas avec un joker (static local IP).
J'hésite entre 2 utilités :
- la machine qui fait serveur a 2 cartes réseaux et tu veux que seule l'une d'elle soit en contact avec Stunnel (pour clarifier le log ou simplement pour libérer ou exclure les autres cartes réseau),
- la machine qui fait serveur peut être appelée par son nom 'lamachineatoto', ou son IP '192.168.0.1', mais toi tu veux que seulement l'IP soit utilisée avec Stunnel, tu l'indiques alors avec local = 192.168.0.1.

Bien sûr je ne dis pas que j'ai raison, mais les 'éventuellement' et les 'je pense' rendent mes explications incompréhensibles, déjà que sans...


Si tu accept sur toutes les IP, local, utilisé dans le sens que tu lui prêtes, n'est pas nécessaire vu que 192.168.1.* font déjà partie de toutes les IP. Quant à la connexion via un autre port je ne vois pas l'utilité :/

J'ai cherché des exemples, mais en vain, et vue que je n'ai pas besoin de cette option pour arriver à mes fins je ne pousse pas plus pour le moment, mais ça m'intéresserai de connaitre sa véritable utilité.

Je pense que tu as raison. Après tests, j'en déduis que ce que je propose pour "Adresse vers nom" (Adress2name) se suffit en lui même pour ce que je veux "rendre" dans le log HFS<>Stunnel.

Par contre as tu essayé de "forcer" les connexions https sur toutes les machines d'un réseau local vers la machine "Serveur".
Est-ce que cela fonctionne sans problèmes?
Je ne peux pas tester ce cas de figure là où je suis en ce moment.





Offline AvvA

  • Tireless poster
  • ****
    • Posts: 135
    • View Profile
Salut :) (désolé j'ai pas tout le temps le réflexe ^^)

Donc déjà, oui, mon edit du post précédent se base sur tes explications et conseils  ;D


Ensuite, par rapport ta question, si tu ne coches pas la case 'Accès HTTP' dans mon GUI, alors les règles écrites sont les suivantes :
- ban inversé \127.0.0.1
- écoute HFS uniquement sur l'IP 127.0.0.1 (oui ça fait doublon avec le ban, mais bon, ça ne gêne en rien ^^)

Ce qui à pour effet de forcer tous les clients à passer par Stunnel pour se connecter au serveur HFS (sauf un client qui se situerai sur la machine locale d'HFS : localhost). De fait ils doivent utiliser HTTPS et accepter le certificat.

L'IP employée pour se connecter à HFS peut dans ce cas tout aussi bien être 192.168.0.1 que l'IP publique, et ceci depuis un poste situé sur le réseau local ou un poste distant, enfin, ce dernier ne peut pas utiliser l'IP locale, bien sûr ^^.

C'est la configuration basique que créé mon GUI si tu ne coches pas la case 'Accès HTTP' dans le cadre 'Réseau local'. A ce moment là, toutes les connexions se font en HTTPS.

Pour répondre sous un autre angle, la seule façon d'autoriser HFS à être contacté directement (donc en HTTP) est d'écouter sur toutes les IPs, et éventuellement de faire une règle de ban inversée : \192.168.0.* si l'on souhaite que seul les postes du réseau local puisse accéder au serveur HFS.
Ou bien écouter sur uniquement l'IP 192.168.0.1 .

edit : (désolé, si tu as lu ma première alternative d'explication, je suis reparti sur comment empecher la co en HTTP ^^)
« Last Edit: August 17, 2010, 03:33:42 PM by AvvA »