Aller au contenu

Haproxy Et Log/blocage Des Ip Sur Dsm, Filestation..


Messages recommandés

Bonjour,

voila tous est dans le titre ^^.

j'ai déjà pauser plus ou moins la question sur se mais je pense que lui faire sujet a part est une bonne chose.

cela fait quelques jour que je passe a lire la doc de haproxy et d'affiner la configuration en fonction de mes besoins, donc après avoir fait se que je voulais je me pause devant un problème:

Comme avec le reverse proxy dsm, filestation, webdav.... ne reconnait pas l'ip réel du client qui c'est connecter.

au lieux de celle ci il voit l'ip local du serveur lui même. (ce qui est normal car REMOTE_ADDR contient l'ip de connexion qui est l'ip utiliser dans haproxy ou reverse proxy pour se connecter au serveur)

cette non prise en compte cause 2 soucis :

- les log du syno sont faussé car l'ip de connexion est l'ip local

- si le blocage des ip est activer le syno va se bloquer lui même

j'ai essayer plusieurs piste pour corriger le problème :

1) en modifiant le php.ini du syno en ajoutant la ligne de code suivant :

auto_prepend_file = /volume1/web/reverse/ip.php

avec le code php (ip.php)

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
{ 
   $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}

cette technique a le mérite de fonctionner avec webstation et photostation, mais cela ne fonctionne absolument pas avec DSM....

2) en modifiant le httpd.conf en lui ajoutant ce code :

SetEnvIf X-FORWARDED-FOR (.*) REMOTE_ADDR=$1

mais cela n'as encore aucun effet sur DSM....

3) directement avec haproxy avec l'option sources

backend transparent_ssl3
    # Connect to the SSL farm from the client's source address. It
    # is more conntrack-friendly.
    source 192.168.1.200 usesrc clientip

mais impossible de lancé haproxy avec cette option car apparemment il faut que TPROXY soit compiler (voir ici)

je suis a cours d'idée, auriez vous des piste? solution?

je suis sur de ne pas être le seul a vouloir des log correct et un blocage d'ip qui marche ^^

cordialement

Modifié par devildant
Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 66
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

En effet tu n'es pas le seul... Perso je ne veux pas modifier le php.ini pour ne pas avoir à le refaire à chaque update donc si tu trouves une solution dans la config d'HAProxy, je suis preneur !

je suis d'accord avec vous c'est dommage de re modifier la conf a chaque update, car c'est l'avantage avec haproxy, on a plus rien a faire ^^

Pour moi le plus propre serait que Synology prenne en compte le header HTTP_X_FORWARDED_FOR lorsqu'une requête arrive depuis localhost. Les autres applications savent très bien faire ça.

je suis également d'accord avec vous surtout que c'est qu'un if ou 2 a mettre (il pourrais en plus géré le HTTP_X_FORWARDED_PROTO qui contient soit http soit https ).

après le seul souci c'est qu'il faut qu'il accepte de l'ajouter donc si on veux voir cette fonction va falloir être plusieurs a faire la demande. ensuite si il accepte on ne l'aura pas tous tous de suite ^^.

il vas donc falloir qu'on soit beaucoup a demander cette fonction http://www.synology.com/company/contact_us.php?lang=fre.

sur se sujet je cherche aussi une alternative même si je dois modifier la conf pendant un moment ^^

Lien vers le commentaire
Partager sur d’autres sites

sinon TPROXY serais compliquer a compiler et a ajouter avec haproxy? (c'est une simple question)

car l'option de transparence du proxy semble intéressante (commande source au lieux de server) doc ici

backend transparent_ssl1
    # Connect to the SSL farm from the client's source address
    source 192.168.1.200 usesrc clientip
Modifié par devildant
Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...
  • 1 mois après...
  • 3 semaines après...

Bonjour a tous, je viens de passé en DSM 4.2 (je sais j'ai mit du temps mais je voulais être sur qu'elle était stable ^^)

j'ai testé a nouveau le blocage des ip et la miracle c'est la bonne ip qui est bloquer, j'ai put teste qu'en local je verais plus en détaille demain.

en tous cas si je n'est pas halluciné MERCI SYNOLOGY ^^ et également merci a diaoul pour cette excelent package et pour avoir contacté synology.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour a tous, je viens de passé en DSM 4.2 (je sais j'ai mit du temps mais je voulais être sur qu'elle était stable ^^)

j'ai testé a nouveau le blocage des ip et la miracle c'est la bonne ip qui est bloquer, j'ai put teste qu'en local je verais plus en détaille demain.

en tous cas si je n'est pas halluciné MERCI SYNOLOGY ^^ et également merci a diaoul pour cette excelent package et pour avoir contacté synology.

Salut,

As-tu toujours le auto_append dans ton php.ini?

Lien vers le commentaire
Partager sur d’autres sites

bizzare, moi je viens de me logger à dsm via happroxy et j'ai tjrs 127.0.0.1..( dans la fenetre "journaux récents" sur le bureau dsm )

Salut,

As-tu toujours le auto_append dans ton php.ini?

bonjour, cela est très étrange, moi maintenant la bonne ip est toujours catcher, j'ai vérifier ma conf dans le php.ini a été supprimer depuis la maj (auto_append vide dans php.ini). je pense que nous devons avoir une config haproxy différente

Lien vers le commentaire
Partager sur d’autres sites

global
daemon
maxconn 256
log localhost user info
spread-checks 10

defaults
mode http
stats enable
default-server inter 30s fastinter 5s
timeout connect 5s
timeout client 50s
timeout server 50s
timeout tunnel 1h

listen stats :8280
stats uri /
stats show-legends
stats refresh 10s
stats realm Haproxy Statistics
stats auth admin:xxxxx

frontend http
bind :5080
option http-server-close
option forwardfor
reqadd X-Forwarded-Proto: http
redirect scheme https
default_backend web

frontend httplocal
bind :5081
option http-server-close
option forwardfor
reqadd X-Forwarded-Proto: http
default_backend web

frontend https
bind :5443 ssl crt /usr/local/haproxy/var/crt/default.pem
option http-server-close
option forwardfor
acl photochecker url_beg /photo/
acl photopersochecker url_reg ~S+S+
acl localcheck hdr_beg(Host) -i 192.
acl valid_domains hdr_end(host) -i domainename.fr hdr_end(host) -i dyndns.fr
acl otherchecker url_beg /mail url_beg /phpMyAdmin/
reqadd X-Forwarded-Proto: https
rspirep ^Location: http://(.*)$ Location: https://1
use_backend web if photochecker || photopersochecker || otherchecker
use_backend webdav if { hdr_beg(Host) -i webdav. }
use_backend haproxy if { hdr_beg(Host) -i haproxy. }
use_backend station if { hdr_beg(Host) -i station. }
use_backend DSMIP if !valid_domains localcheck
default_backend webSSL

frontend httpslocal
bind :5444 ssl crt /usr/local/haproxy/var/crt/default.pem
option http-server-close
option forwardfor
reqadd X-Forwarded-Proto: https
rspirep ^Location: http://(.*)$ Location: https://1
default_backend webSSL

backend web
server www localhost:80 check

backend webdav
server webdav 192.168.1.25:5006 ssl check

backend haproxy
server haproxy 192.168.1.25:8280 check

backend station
server station 192.168.1.25:5001 ssl check

backend DSMIP
server diskstation 192.168.1.25:5001 ssl check

backend webSSL
server www localhost:443 ssl check

Modifié par devildant
Lien vers le commentaire
Partager sur d’autres sites

bonjour,

Bizarre, dans mon cas:

- si le login est valide:

  • dans syslog, j'ai une entrée haproxy avec la bonne IP
  • dans les journaux systèmes, la connexion n'apparait pas

- si le login est invalide:

  • dans syslog et dans les journaux systèmes, j'ai une entrée "Warning login incorrect

J'ai pourtant laissé la configuration de base de haproxy

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

J'ai oublié de préciser que je n'utilisait que le frontend https.

Ci-joint mon haproxy.cfg:

global
daemon
maxconn 256
log localhost user info
spread-checks 10

defaults
mode http
stats enable
default-server inter 30s fastinter 5s
log global
option httplog
timeout connect 5s
timeout client 50s
timeout server 50s
timeout tunnel 1h

listen stats :8280
stats uri /
stats show-legends
stats refresh 10s
stats realm Haproxy Statistics
stats auth admin:xxxxxxxxxxxxxxxx

frontend http
bind :5080
option http-server-close
option forwardfor
default_backend web

frontend https
bind :5443 ssl crt /usr/local/haproxy/var/crt/default.pem
option http-server-close
option forwardfor
rspirep ^Location: http://(.*)$ Location: https://1
use_backend dsm if { hdr_beg(Host) -i dsm. }
use_backend webdav if { hdr_beg(Host) -i webdav. }
use_backend audio if { hdr_beg(Host) -i audio. }
use_backend download if { hdr_beg(Host) -i download. }
use_backend video if { hdr_beg(Host) -i video. }
use_backend file if { hdr_beg(Host) -i file. }
default_backend web

backend web
server web localhost:80 check

backend dsm
server dsm localhost:5000 check

backend sabnzbd
server sabnzbd localhost:8080 check

backend nzbget
server nzbget localhost:6789 check

backend sickbeard
server sickbeard localhost:8081 check

backend couchpotatoserver
server couchpotatoserver localhost:5050 check

backend headphones
server headphones localhost:8181 check

backend maraschino
server maraschino localhost:8260 check

backend znc
server znc localhost:8250 check

backend transmission
server transmission localhost:9091 check

backend gateone
server gateone localhost:8271 ssl check

backend webdav
server webdav localhost:5005 check

backend audio
server audio localhost:8800 check

backend download
server download localhost:8000 check

backend surveillance
server surveillance localhost:9900 check

backend video
server video localhost:9007 check

backend file
server file localhost:7000 check

backend haproxy
server haproxy localhost:8280 check

backend deluge
server deluge localhost:8112 check

Modifié par maitryoda
Lien vers le commentaire
Partager sur d’autres sites

bonjour, ajouter deja a vos frontend

http:

reqadd X-Forwarded-Proto: http

https:

reqadd X-Forwarded-Proto: https

(cela permet de spécifier dans les header si il s'agit d'http ou https)

ensuite essayer de passer votre
backend dsm
server dsm localhost:5000 check

en


backend dsm
server dsm localhost:5001 ssl check

et faite vous bannir de dsm pour voir si la bonne ip est prise en compte

Lien vers le commentaire
Partager sur d’autres sites

Quel est l'intérêt de passer sur le port 5001 en SSL ? Ca ne va rien sécuriser du tout.

bonjour diaoul,

se n'est pas pour sécuriser, actuelement pour moi depuis la maj j'ai la bonne ip qui apparais dans les log/blocage dans DSM et maitryoda qui dispose de la config de base de haproxy rencontre des problèmes avec le catch de la bonne ip.

j'essaye donc de voir quels sont les diff entre ma conf et la sienne afin de voir se qui pourrais pauser problème.

après personnellement utilisé le backend en ssl pour dsm m'as permit de corriger un problème avec les applets de DSM (upload au drag&drop et la liste local), pour la partie web (webSSL dans ma conf) l'utilisation d'un backend en ssl m'as permit également de pouvoir gérer le forçage du ssl via un htaccess.

Modifié par devildant
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.