=====Proxy-Infoseite im Stil eine Captive Portals===== ====Problem:==== In einem Netzwerk, von dem aus man nur mit einem Proxy in "das Internet"((gemeint ist natürlich das per HTTP und HTTPS erreichbare WWW)) kommt, finden sich immer wieder Rechner (meist durch [[BYOD]]), die keinen Proxy konfiguriert haben und im Browser nur nichtssagende Fehlermeldungen über den nicht erreichbaren Server erhalten. ====Idee:==== Rechner, die einen direkten HTTP-Request (nicht via Proxy) lossenden, sollen eine Infoseite zurück geliefert bekommen. \\ Die direkten HTTP-Requests werden an die Firewall gerichtet, das sie das IP-Gateway zum Internet ist. Anstatt den Request zum Zielserver zu schicken, leitet man ihn an einen Webserver auf der Firewall weiter. Dieser antwortet mit einer (temporären) HTML-Redirect-Seite - also einer gefälschten Antwort. Diese Seite gibt dem Browser das Kommando eine andere Seite zu laden - die Infoseite. Für HTTPS-Requests funtioniert so eine Lösung natürlich nicht - die Fälschung würde nicht akzeptiert werden. Jedoch starten viele Browser/Betriebssystem bei einem frisch konfigurierten WLAN von sich aus einen HTTP-Zugriff auf entsprechende Seiten, damit diese Funktion für sogenannte Captive-Portals genutzt werden kann, also den Seiten, bei denen man sich z.B. in einem Hotel anmelden muss. ====Realisierung:==== 1. Infoseite * lege eine geeignete Infoseite an, hier auf http://intranet.example.de/proxyinfo.html. Diese Seite muss aus den internen Netzen ohne Proxy erreichbar sein! HTTPS ist auch möglich. 2. Redirect-Seite * installiere einen Webserver (hier apache) auf der Firewallmaschine, hier auf Port 8888 * konfiguriere den VirtualHost in der Datei 000-default.conf: # Der Server, der nur einen Redirect macht ServerAdmin webmaster@localhost RewriteEngine On RewriteRule ^ http://intranet.example.de/proxyinfo.html [L,R=302] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined * beachte, dass die 302 für eine temporäre Weiterleitung steht, damit der nächste Request durch den Browser wieder an das originale Ziel gerichtet wird. 3. Firewallkonfiguration * konfiguriere die Firewall für folgenden Redirect: * in Worten: Leite alle TCP-Pakete aus den lokalen Netzen (leh,kwl,lwl), welch an einen Port 80 (www) außerhalb der lokalen Netze (nicht 10.0.0.0/8) gerichtet sind und die Firewall erreichen an den Port 8888 der Firewall weiter * für Shorewall in der Datei rules - ggf. aber erst nach den Regeln, in denen Port-80-Zugriffe erlaubt werden: #ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST REDIRECT leh,kwl,lwl 8888 tcp www - !10.0.0.0/8 ====Test:==== * rufe mit [[curl]] die URL :8888 auf und beobachte den Redirect * rufe die Infoseite ohne Proxy auf * rufe mit curl eine Seite außerhalb((z.B. die IP des Internetrouters, der meist auf Port 80 reagiert)) der internen Netze auf und prüfe, ob der Redirect stattfindet. * Alternative: mit telnet kann man auch ohne Browser oder curl die Verbindung testen. telnet checkip.dyndns.org 80 {{tag>Proxy}}