PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache als Proxy für ntop



detonation997
13.04.05, 12:05
Hallo,

ich möchte ntop per Apache (+SSL) ins Internet zur Verfügung stellen.

Das müsste laut http://www.ntop.org/ntop.html (Proxying ntop through Apache) mit folgenden Direktiven funktionieren:



<VirtualHost *:443>
...
ProxyPass /ntop/ http://localhost:15123/
RewriteEngine On
RewriteCond %{HTTP_REFERER} xyz.net/ntop
RewriteCond %{REQUEST_URI} !^/ntop
RewriteRule ^/(.*)$ http://www.xyz.net/ntop/$1 [L,P]
#Zusätzlich noch von mir angegeben:
<Location /ntop>
Order deny,allow
Allow from all
</Location>
...
</VirtualHost>


Das Rewriting funktioniert soweit auch (ich benutze "RewriteLog" und "RewriteLogLevel"). Probleme gibts, da bei ntop die Angaben zu ein paar Ressourcen (hauptsächlich Bilder) in absoluten Pfaden erfolgt.

Wie funktioniert das im Zusammenspiel mit dem ProxyPass? Wird da am Server die neue URL generiert und diese gleich von eben diesem Server angefordert?

Ich bekomm nämlich 403er Meldungen (apache2/error.log):


[Wed Apr 13 11:53:09 2005] [error] [client xxx.xxx.xxx.xxx] client denied by server configuration: proxy:http://www.xyz.net/ntop/error/HTTP_FORBIDDEN.html.v
ar, referer: https://www.xyz.net/ntop/hostsInfo.html

Das Rewriting sieht so aus:


xxx.xxx.xxx.xxx - - [13/Apr/2005:11:55:11 +0200] [www.xyz.net/sid#81a8900][rid#82742a8/initial/redir#1] (2) init rewrite engine with requested uri /error/HT
TP_FORBIDDEN.html.var
xxx.xxx.xxx.xxx - - [13/Apr/2005:11:55:11 +0200] [www.xyz.net/sid#81a8900][rid#82742a8/initial/redir#1] (3) applying pattern '^/(.*)$' to uri '/error/HTTP_F
ORBIDDEN.html.var'
xxx.xxx.xxx.xxx - - [13/Apr/2005:11:55:11 +0200] [www.xyz.net/sid#81a8900][rid#82742a8/initial/redir#1] (4) RewriteCond: input='https://www.xfreaks.net/ntop
/hostsInfo.html' pattern='.*xfreaks.net/ntop.*' => matched
xxx.xxx.xxx.xxx - - [13/Apr/2005:11:55:11 +0200] [www.xyz.net/sid#81a8900][rid#82742a8/initial/redir#1] (4) RewriteCond: input='/error/HTTP_FORBIDDEN.html.v
ar' pattern='!^/ntop.*' => matched
xxx.xxx.xxx.xxx - - [13/Apr/2005:11:55:11 +0200] [www.xyz.net/sid#81a8900][rid#82742a8/initial/redir#1] (2) rewrite /error/HTTP_FORBIDDEN.html.var -> http:/
/www.xfreaks.net/ntop/error/HTTP_FORBIDDEN.html.var
xxx.xxx.xxx.xxx - - [13/Apr/2005:11:55:11 +0200] [www.xyz.net/sid#81a8900][rid#82742a8/initial/redir#1] (2) forcing proxy-throughput with http://www.xfreaks
.net/ntop/error/HTTP_FORBIDDEN.html.var
xxx.xxx.xxx.xxx - - [13/Apr/2005:11:55:11 +0200] [www.xyz.net/sid#81a8900][rid#82742a8/initial/redir#1] (1) go-ahead with proxy request proxy:http://www.xfr
eaks.net/ntop/error/HTTP_FORBIDDEN.html.var [OK]


Das acces.log file sieht so aus:


xxx.xxx.xxx.xxx - - [13/Apr/2005:11:57:12 +0200] "GET /gaugeS.jpg HTTP/1.1" 403 - "https://www.xyz.net/ntop/hostsInfo.html" "Mozilla/5.0 (X11; U; Linux i686
; en-US; rv:1.7.6) Gecko/20050406 Firefox/1.0.2 (Debian package 1.0.2-3)"


Das Logfile von ntop so:


127.0.0.1 - - [13/Apr/2005:11:59:13 +0200] - "GET /hostsInfo.html HTTP/1.1" 200 7530/88222 84


Irgendwie deutet das darauf hin, dass apache mit den rewriteten URLs nichts anfängt.

Probiert hab' ich auch schon:



RewriteRule ^/(.*)$ http://127.0.0.1:15123/$1 [L,P]


Da tut sich aber auch nicht viel mehr...
Versteh ich da was ganz falsch?

Benutzte Versionen:
Debian Linux (Sarge)
Apache 2.0.53
ntop v.3.0 SourceForge .tgz

Danke fürs Lesen!!
MfG Rainer

detonation997
13.04.05, 13:35
Ich hab ein wenig nachgedacht und folgendes ausprobiert:



wget --referer=https://www.xyz.net/ntop/hostsInfo.html https://www.xyz.net/fforward.gif


Auch hier wird dir URL wieder richtig substituiert. Die Fehlermeldung ist:


ERROR 403: Forbidden.


Lass' ich den Referer weg, so erhalte ich dies hier:


ERROR 404: Not Found.


Ich geh mal davon aus, dass eine <Limit> Direktive oder ähnliches fehlt...

r2k
17.05.05, 10:17
hi
hast du schon was gefunden?

ich suche das selbe

r2k

detonation997
17.05.05, 10:41
...vergessen meine Ergebnisse zu veröffentlichen.

Und zwar gibts da was - die <Proxy>-Direktive, die ist meines Wissens im 2er Apache neu.

Das steht im "normalen Part" (also ohne SSL), damit man nicht das Protokoll angeben muss und angenehm weitergeleitet wird:


Redirect /ntop https://www.xyz.net/ntop/


...und das steht im SSL-Part (erkennbar am 443er Port):


<VirtualHost *:443>
...
ProxyRequests Off
ProxyPass /ntop/ http://127.0.0.1:3000/
ProxyPassReverse /ntop/ http://127.0.0.1:3000/

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 0
#Commands for ntop
RewriteCond %{HTTP_REFERER} .*xyz.net/ntop.*
RewriteCond %{REQUEST_URI} !^/ntop.*
RewriteRule ^/(.*)$ http://127.0.0.1:3000/$1 [L,P]

<Location /ntop>
AuthType Basic
AuthName "Ntop statistics"
AuthUserFile /etc/apache2/auth/ntop.auth
require valid-user
</Location>
...
</VirtualHost>


Hoffe, das hilft (ich hab sehr lange gebraucht, um herauszufinden, dass es die <Proxy>-Direktive gibt *g*). Pass auf Tippfehler auf!

LG Rainer

Phlynn
29.05.08, 11:42
Vielleicht hilft es irgendwen weiter, bei mir ist ntop am gleichen host auf Port 3000.

Myserver ist der Apache Web Server


Well it works for me:




### PATCH SUGGESTED BY NESSUS ABOUT TRACE ATTACKS

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
##### NTOP (PROXY REVERSE) ########

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

#
#
ProxyPass /ntop/ http://localhost:3000/
ProxyPassReverse /ntop/ http://localhost:3000/
#


#
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/ntop/
RewriteRule ^/([^/]+\.[a-z]+)$ https://Myserver.com/ntop/$1 [L,R]
#


#
<Location /ntop/>
SetOutputFilter proxy-html
ProxyHTMLURLMap / /ntop/
ProxyHTMLURLMap /ntop/plugins/ntop/ /ntop/plugins/
RequestHeader unset Accept-Encoding
AuthName "NTOP Access"
AuthType Basic
AuthUserFile /etc/ntop/htpasswd.users
AuthGroupFile /etc/ntop/htpasswd.group
Require group ntop
</Location>
#