PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Proxy einrichten, transparent und trotzdem authentifizierung möglich?



Elektriker
01.10.11, 15:10
Hi.

So, da nun das Grundsystem schonmal gut steht, folgt der nächste Ausbauschritt.
Proxyserver. Der Proxyserver soll als Cache und als Filter eingesetzt werden.
Er soll neben HTTP auch HTTPS filtern können, und basierend auf einer Authentifizierung verschiedene Berechtigungsstufen bereit stellen.

Ideal wäre ein transparenter Proxy. Aber bei einem transparenten Proxy soll weder HTTPS noch Authentifizierung funktionieren.
Aber eine Authentifizierung im herkömmlichen Sinne habe ich ohnehin nicht geplant.

Ich hätte gerne eine Webbasierte Authentifizierung, d.H. man geht auf eine spezielle, interne Loginseite, um sich dort dann für eine gewisse Zeit für unbeschränkten Internetzugang freizuschalten.

Die Authentifizierung und Userverwaltung soll nicht über den Proxy selbst organisiert werden, sondern über ein eigenes PHP / Shellscript.

Folgender Plan:

Ich konfiguriere für den Proxy eine Whitelist und eine Blacklist. Der Porxy arbeiet im transparenten Modus mit der Whitelist als Default.

Nachdem man sich an meinem Login Script angemeldet hat, konfiguriert dieses Script den Proxy im laufenden Betrieb um, und zwar so, dass IP basiert für die NutzerIP von Whitelist auf Blacklist Filter umgeschaltet wird.
Außerdem werden für diese IP in IPTABLES weitere Ports freigeschaltet, so dass nach Login auch direktverbindungen ins Internet möglich sind.

HTTPS hätte ich auf jeden Fall gerne über den Proxy laufen. Selbst wenn er im transparent mode ist.
Würde das gehen, wenn ich nicht nur den Port80, sondern auch den HTTPS Port auf den transparenten Proxy umleite?


Oder wäre es möglich, den Proxy nicht als transparent zu konfigurieren, ihn mittels Firewall Regeln für die User trotzdem als transparenten Proxy erscheinen zu lassen, indem man die proxybasierte Userverwaltung abschaltet und Port 80 / 443 auf den Proxyport 8080 umlenkt?

Für die User soll der Proxy nutzbar sein, ohne dass man am PC etws konfigurieren muss. Selbst das umstellen der Einstellung von "kein Proxy auf Proxy automatisch erkennen" wäre schon als konfigurieren anzusehen.
Nur wenn es vollautomatisch per DHCP ö.ä ohne zutun des Nutzers und auch "Playstation 3 tauglich" machbar ist, kann man den Proxy im normalmode laufen lassen.

Die eigene Authentifizierung auf basis einer internen PHP Webseite müsste dann trotzdem gemacht werden. sofern man nicht mit erfolgreicher Proxyauthentifizierung von diesem ein eigenes backgrundscript anstoßen kann (Die Firewall für den User öffnen)


Wie würdet ihr das Problem angehen? Ist meine Idee brauchbar oder bin ich auf dem Holzweg? Oder hat von euch jemand sowas schonmal erfolgreich umgesetzt?

Irgenwie muss es ja funktionieren. Bei einem von mir häufig verwendeten kommerziellen Hotel WLAN Hotspot geht es ja auch.
Da muss man sich auch nicht an einem Proxy anmelden, man muss am Rechner exakt gar nichts einstellen. Und die Authentifizierung der User geht über eine interne login Webseite. Darauf hin wird dann dort auch die Firewall aufgemacht (so dass dann z.B. VPN, WoW, Teamspeak usw geht) und man kann außerhalb der allgemein verfügbaren Whitelist "surfen".

Viele Grüße und Danke schonmal für die Hilfe, wie ich dieses Problem angehen kann.

derRichard
01.10.11, 17:40
transparent und auth is meines wissens nicht möglich.

//richard

Elektriker
01.10.11, 18:34
Mit den Authentifizierungsmethoden des Proxys selbst ist bei transparentem Proxy definitiv keine Authentifizierung möglich.
Aber es sind, soweit ich weiss, noch ip basierte Filter möglich.
Man könnte also noch eine webbasierte Authentifizierung selbst dazu bauen.
Das ist zumindest die Möglichkeit, die ich sehe, und auch vor habe.

Alternativ ginge es vielleicht, Port80 auf einen norml konfigurierten Proxy umzuleiten, so dass man keine Proxyeinstellung machen muss.
Aber ob das geht, müsste ich erst mal ausprobieren.

Ich muss heute abend mal eine squid testinstallation machen

Elektriker
01.10.11, 18:44
Ein eigenes Authentifizierungs PHP script würde also quasi so aussehen:

-Prüfe Benutzername und PW aus einer eigenen Datenbank
-Ändere in der Proxykonfiguration die Filtereinstellung für die aktuelle IP des Nutzers
Ob man die Konfiguration ohne neustart oder kurze Proxyunterbrechung neu laden lassen kann?
-Ändere/Ergänze in iptables die regeln, so dass für den User die restlichen Ports freigegeben werden.

Das Script würde auf de lokalen Webserver abgelegt werden, jeder User müsste dann über dieses Script den Zugang selbst freischalten, der dann für eine gewisse zeit offen ist, bevor er wegen inaktivität oder Zeitablauf wieder geschlossen wird.

P.S. Da das ein Voucher basiertes System werden soll, wie im hotel, wäre eine webbasierte Authentifizierung mit eigenem PHP Script kein Nachteil, sonder sogar ein Vorteil.

Wie die im Hotel das alles technisch genau gelöst haben, kann ich gar nicht genau sagen. Dort ist es jedenfalls so, dass man nichts am rechner einstellen muss, und sich über eine Webseite anmeldet

derRichard
01.10.11, 18:47
das geht schon.
jedoch hindert das keinen user daran seine ip zu ändern um zugang zum internet zu bekommen...

//richard

Elektriker
01.10.11, 19:07
Ja, man müsste seine IP auf eine gerade verwendete ändern und den anderen user "rauskicken", um dann mit der gekaperten ip zu surfen.
Ein binden an die mac adresse wäre auch nicht viel sicherer.

Sicherer wäre es nur, wenn man das webbasierte anmeldefester während der sitzung offen lassen muss, und man über eine veschlüsselte verbindung (z.B. https) mittels ajax oder java script reloads ständig neu authentifiziert.
Genau so ist das in dem Hotel, an deren WLAN Hotspot System ich mich orientiere. Dort muss man das Anmeldefester offen lassen, man sieht dort dann auch schön seine restliche Zeit bzw Megabytes in echtzeit runter ticken.

Aber für den "Privatgebrauch" sollte es auch ip basierend reichen.

derRichard
01.10.11, 19:25
Aber für den "Privatgebrauch" sollte es auch ip basierend reichen.

warum brauchst du dann überhaupt authentifizierung?

//richard

Elektriker
01.10.11, 19:29
Mal sehen, vielleicht mache ich auch 2 Proxys. Einen richtigen mit Authentifizierung, und einen Transparenten, der auf den vorgelagerten Proxy zugreift.

Das Caching und die Blacklist übernimmt der erste, der transparente übernimmt die Whitelist.
So dass man auch mit nicht speziell konfigurierten Clients einfach "plug and play" zumindest ein paar "unkritische" Webseiten aufrufen kann.
Für Vollzugriff muss man sich dann am richtigen Proxy anmelden.

Oder ich setze auf eine VPN Lösung (PPTP, da mit Windows Bordmitteln oder einfachen "DSL " Routern von der Stange clientseitig machbar)
und 2x transparent Proxy.
Der eine als Cache und Blacklist Filter, der andere als nachgeschalteter whitelistproxy ohne großen cache.
Kann man 2 Squid auf 1 Maschine problemlos laufen lassen?

P.S Die Authentifizierung ist für das shared netzwerk notwendig. Trotzdem sollen die "small clients" wie PS3/PSP, Handy oder Gästelaptops usw ohne spezielle Konfiguration auf ausgewählte Inhalte einfach so zugreifen können (Per whitelist)
Die allgemein gültige blacklist wird nicht besonders groß, damit sperre ich nur ein paar komplett unerwünschte sachen, ansonsten ist es relativ frei.

Elektriker
01.10.11, 20:13
Folgendes muss ich noch dazu sagen:

Momentan ist alles erst mal nur zum Erwerben von KnowHow im Privaten Umfeld + Hausweites Internetsharing (Familie + nicht sehr technikaffiner Mieter)

Später soll das ganze durchaus mal im semiprofessionellen Umfeld produktiv genutzt werden.
In einem Umfeld, wo kein Geld da ist, sich sowas "einzukaufen"

Und zwar zur Internetversorgung in einer LowCost Pension (Leiharbeiter / Monteursbuden)

Das Caching ist übrigens extrem wichtig, da die Internetverbindung dort schon lange nicht mehr dem Stand der Technik entspricht (2 Mbit/s), und ich durch einen großen Cache da etwas mehr Performance herauskitzeln will.