IPTables forward, aber HTTP(s) nur über squid zulassen

P0stbote

New Member
Moin,

momentan stehe ich vor ner kleinen Denkblockade. Ich hab hier ein Server stehen, der als Gateway dient. Zusätzlich läuft auf diesem Squid3 und ein Webserver, nämlich nginx.
eth0= WAN (dynm. IP)
bond0 = LAN (192.168.42.1)
Das ganze soll auf einer LAN-Party Anwendung finden. Nun will ich den Traffic über den squid leiten. Dies geht ja recht einfach, als transparent einrichten, Port von 80 auf 3128 umleiten und schon geht der gesamte HTTP Verkehr über den Proxy.
Hierbei stört mich aber noch das HTTPS nicht berücksichtigt wird, genauso wie FTP, ich will also den Nutzer quasi zwingen den Proxy in ihre Konfiguration einzutragen.

Ich kann das NAT zwar ausschalten, allerdings gehen damit andere Anwendung nicht, welche andere Protokolle benutzen. Das will ich möglichst auch vermeiden, da Instant Messenger öä. weiterhin funktionieren sollen.

Wenn ich jetzt den Port 80 sperre, funktioniert der Zugriff auf den internen Webserver aber nicht mehr, oder sehe ich das falsch?
Ich brauch hier mal ein wenig Nachhilfe :D


Gruß
 
Ich hoffe die LP ist groß genug, dass sich der ganze Aufwand auch lohnt. Zum Thema HTTPS: http://ajayadas.com/e110body-anchor/

In Zeiten von FB, Twitter und Co. würde ich auf irgendwelchen IM-Kram keine Rücksicht mehr nehmen, haben wir früher auch nicht. Mit FTP können die meisten Zocker eh nicht umgehen und die meisten Patches sind eh über Webserver downloadbar.

Steam und Co. (Blizzard, EA usw.) musst Du m.E. gesondert behandeln aber da bin ich bzgl. der benötigten Ports nicht mehr auf dem laufenden.

Webserver und Gateway (insbesondere wenn Squid als Proxy darauf läuft) würde ich zwingend trennen. Gateways mit Filter neigen auf LPs gern mal dazu in die Knie zu gehen, dann ist auch den Intranet im Orkus.
 
Es hilft dir nicht, 443 durch den Squid zu ziehen, weil das einzige, was du bekommst die IP-Adressen der Server sind.

Würdest du tatsächlich Daten mitloggen wollen, müsstest du MitM machen, was absolut inakzeptabel ist.
 
[...]Würdest du tatsächlich Daten mitloggen wollen, müsstest du MitM machen, was absolut inakzeptabel ist.
Auf einer LP gelten i.d.R. etwas andere Regeln und so lange die Filterung auch von SSL-Requests den Gästen eindeutig kommuniziert wird, sehe ich kein Problem. Ich gehe davon aus, dass es dem TE hier eher um Filterung (z.B. squiGuard) als um Logging geht, er also den Zugriff auf das WWW insgesamt auf der Veranstaltung einschränken will. Das ist als Veranstalter sein gutes Recht.

Zurück zum Thema:

In der Aufstellung des TE fehlt noch der DNS- und DHCP-Server (mit letzterem broadcastest Du ja DNS, Netmask und Gateway; dem ersteren musst Du noch was zum Thema DNS-Forwarding sagen). Da der Webserver (nennen wir ihn mal intranet) auf eine lokale Netzwerkadresse auflöst, kommt das Routing am Gateway nicht zum tragen.
 
Moin,

DHCP und DNS Server laufen auch auf der selben Maschine. Mir ist schon bewusst, das dies der Singlepoint of Failure ist, es geht aber "nur" um eine LP im kleinen Rahmen (~25 Leute)

Das Problem an der ganzen Geschichte ist allerdings die sehr schlechte Anbindung, habe nur eine DSL 3000er Leitung zu Verfügung. Deswegen betreibe ich auch DNS-Spoofing um Steam & Co per Cache abzufangen ( http://churchnerd.net/ )
Das alles hab ich hier zuhause schon eingerichtet und funktioniert wunderbar. Der Cache liegt auf ner Zweiten Maschine, weil ich mehr den Server auch nicht zutraue (Pentium G620, 4GB RAM, 2x2TB HDD, 120GB SSD)
HTTPS und FTP wollte ich nur der Vollständigkeit mit einbringen. Außerdem hat EAs Origin Probleme mit einem transparenten Proxy, da die ein ganz seltsames HTTP Authentifizierungsverfahren anwenden, wenn der Proxy "normal" läuft, funktioniert alles wunderbar.

Ich will also quasi nur erreichen, das der Proxy nicht transparent laufen muss, die Nutzer allerdings trotzdem gezwungen sind den Proxy einzutragen. Außerdem bearbeitet squid in der jetzigen Konfiguration auch die Webserverrequests. Dies ist eher nicht gewünscht, da dort natürlich viel Traffic drüber läuft (Fast Download von Maps/Mods)
Das ganze ist recht performant, dank SSD und LAN Bonding, nur der squid zieht dann ziemlich viel Ressourcen.
Normalerweise müsste ich um das zu erreichen ja eigentlich nur per IPtables die eingehenden 80er Port anfragen sperren. Wie mache ich das aber wenn gleichzeitig ein Webserver auf der selben Maschine erreichbar sein soll?


Gruß
 
Auf einer LP gelten i.d.R. etwas andere Regeln und so lange die Filterung auch von SSL-Requests den Gästen eindeutig kommuniziert wird

Nix is. Finde ich absolut inakzeptabel und gerade dem durchschnittlichen Spieler wird gar nicht bewusst sein, was das heißt.
Wenn die Veranstaltung klein genug ist, dass du dort jeden Nutzer einweisen kannst, ist sie auch klein genug, dass du jeden Spieler kennst und etwas solches nicht brauchst.

Ist die Veranstaltung dafür zu groß sollte man sich eher über andere Methoden der Internet-Limitierung gedanken machen, ein Herumfummeln/Transparentes-Umschreiben von SSL-Verbindungen ist aber keinesfalls auch nur ansatzweise eine gute Lösung.

Außerdem hat EAs Origin Probleme mit einem transparenten Proxy, da die ein ganz seltsames HTTP Authentifizierungsverfahren anwenden, wenn der Proxy "normal" läuft, funktioniert alles wunderbar.

Womit du sehr schön auf die harte Tour gelernt hast, warum es eine schlechte Idee ist gerade beim Einsatz von irgendwelcher proprietärer Software komische non-standard Basteleien zu machen.

Was willst du denn mit dem Squid erreichen? Wir haben bisher Jahrelang die HTTP-Verbindungen zu den Steam uvm. Content-Servern via DNS auf einen lokalen Cache umgebogen und sind damit gut gefahren. Was möchtest du mehr?
 
25 Leute? Srsly? Also dafür würde ich keinesfalls diesen Aufwand betreiben. Für eventuelle Aktivierungen und Auths (DRM etc. pp.) sollte die Leitung reichen. Patches kannst Du im lokalen Netz auf dem Intranet-Server (selbst den würde ich mir sparen) oder besser per Dateifreigabe bereitstellen. USB-Platten/-sticktausch ist auch eine praktikable Variante.

In Deinem Falle würde ich mir nur von allen Teilnehmern eine Erklärung unterschreiben lassen, dass sie über die Einhaltung der Urheberrechte blablabla belehrt worden sind und erklären diese einzuhalten. Mehr musst Du nicht tun, IMHO.

@manawyrm: Deine Bedenken sind nachvollziehbar aber ich habe die Serverinfrastruktur von LPs mit 120-320 Gästen aufgestellt und betreut. Da gilt als erste Prämisse: für den User muss möglichst alles out-of-the-box funktionieren, erspart jede Menge zusätzliche Supportanfragen gerade am Anfang. Da kannste es knicken ne Anleitung zum Einstellen eines Proxies bereitzustellen. Eine LP ist ja auch zum Zocken da und nicht um zu surfen ;)

Und bei der Menge an Usern war schon etwas Bandbreitenmanagement erforderlich sprich YT, YP sperren etc. pp.. Da wo notwendig haben die User von uns temporär eine ungefilterte Verbindung bekommen aber das war i.d.R. nur in einer Handvoll Fällen notwendig. Bei einer LP geht es um temporäre funktionale und schnelle praktikable Lösungen - in Schönheit sterben, nutzt da keinem etwas. Und in 99,5 % der Fälle war die transparente Proxy-Konfig absolut ausreichend, der Rest wird manuell geregelt.
 
Last edited by a moderator:
Erspare dir die Arbeit und gib den vollen Internet-Zugriff nur auf Nachfrage für einzelne MAC-/IP-Adressen fre (ggf. einfach über das Switch managen)i. Der Squid-Proxy wird dir mehr Probleme bereiten als du denkst. Das Aufweichen der SSL-Verschlüsselung ist absolut inakzeptabel und könnte euch hinterher sogar rechtliche Probleme bereiten. Datenschutzrechtlich ist das ein absolutes no-go.

Falls du einen Proxy einsetzen willst, dann als nicht-transparenten Proxy. Da z.B. Steam auf http gewechselt ist, kannst du sogar einiges im Vorfeld cachen. Auch nicht vergessen vorher nachzusehen welche Version von CS:GO aktuell ist, was kommen wird und ob ggf. die vorherige Version auch verfügbar ist und dann die Spieler darauf hinweisen.

Bzgl. DHCP wäre ich vorsichtig. Sobald jemand anderes im Netz einen DHCP betreibt, bist du aufgeschmissen. Managed Switches sollten DHCP anbieten. Soweit ich weiß kann man die auch so einstellen, dass Pakete aus anderen Quellen vom Port 53 gefiltert werden.
 
25 Leute? Srsly? Also dafür würde ich keinesfalls diesen Aufwand betreiben. Für eventuelle Aktivierungen und Auths (DRM etc. pp.) sollte die Leitung reichen. Patches kannst Du im lokalen Netz auf dem Intranet-Server (selbst den würde ich mir sparen) oder besser per Dateifreigabe bereitstellen. USB-Platten/-sticktausch ist auch eine praktikable Variante.
Das Ziel der ganzen Sache ist, die Leitung benutzbar zu halten. Vor gut einem jahr hab ich das schon mal mit gemacht, der Login schlug fast jedes mal fehl, da die Leitung so überlastet war. Pings lagen dauerhaft bei >2s. Der Squid ist schon eingerichtet und macht bei mir momentan keine Probleme.
Es besteht NUR das Problem mit Origin, wenn der Squid als transparent Proxy läuft (Was ich ohnehin vermeiden wollte)
Ich wollte eigentlich nur wissen, wie ich die Nutzer dazu bringen kann den Proxy einzutragen, ohne jetzt auf den guten Willen bauen zu müssen (Sprich Internet sperren, ohne den Webserver zu beeinflussen)
Hab nicht wirklich Lust jeder Person die Vorzüge (größtenteils für mich) der Verwendung eines Proxy zu erklären. Ein Zettel mit einer Anleitung oder ein Tutorial aufm Beamer ist dagegen schnell gemacht.
Mittlerweile hab ich mich auch mit Trafficshaping beschäftigt, damit der Upload der Leitung nicht überläuft, das sollte sie benutzbar halten. Da meine Leitung zu Hause allerdings zu gut ist sowas zu testen, muss ich die entsprechenden Regeln direkt vor Ort anpassen. Die groben Raten hab ich zwar bekommen, das Feintuning ist aber sicherlich noch nötig ;)

Sicherheitskopien von den wichtigsten Spielen liegen auf den Server.
Ich füll aber 2-3 Tage vorher die Festplatte des Caches schon mal vor, so dass die größten Updates schon mal geladen sind.

In Deinem Falle würde ich mir nur von allen Teilnehmern eine Erklärung unterschreiben lassen, dass sie über die Einhaltung der Urheberrechte blablabla belehrt worden sind und erklären diese einzuhalten. Mehr musst Du nicht tun, IMHO.
Das hab ich alles schon vorbereitet, hat allerdings mit den Topic nicht viel zu tun, wäre aber eigentlich auch nicht nötig gewesen, läuft alles im privaten Rahmen mit Bekannten.
Ich will auch nicht filtern, sondern cachen. Das SSL jetzt nicht darunter fällt ist mir momentan ziemlich egal, war nur ein Gedanke.

Erspare dir die Arbeit und gib den vollen Internet-Zugriff nur auf Nachfrage für einzelne MAC-/IP-Adressen fre (ggf. einfach über das Switch managen)i. Der Squid-Proxy wird dir mehr Probleme bereiten als du denkst. Das Aufweichen der SSL-Verschlüsselung ist absolut inakzeptabel und könnte euch hinterher sogar rechtliche Probleme bereiten. Datenschutzrechtlich ist das ein absolutes no-go.
Internet muss in Zeiten von Steam einfach vorhanden sein. Geht nicht anders.

Falls du einen Proxy einsetzen willst, dann als nicht-transparenten Proxy. Da z.B. Steam auf http gewechselt ist, kannst du sogar einiges im Vorfeld cachen. Auch nicht vergessen vorher nachzusehen welche Version von CS:GO aktuell ist, was kommen wird und ob ggf. die vorherige Version auch verfügbar ist und dann die Spieler darauf hinweisen.
Davon rede ich doch die ganze Zeit, siehe oben.

Bzgl. DHCP wäre ich vorsichtig. Sobald jemand anderes im Netz einen DHCP betreibt, bist du aufgeschmissen. Managed Switches sollten DHCP anbieten. Soweit ich weiß kann man die auch so einstellen, dass Pakete aus anderen Quellen vom Port 53 gefiltert werden.

Ist schon längst eingerichtet, der Mainswitch gibt DHCP nur auf Port 1+2 frei.
 
für den User muss möglichst alles out-of-the-box funktionieren
Wenn man den Usern sagt: "Stell' alles auf Auto", geht das eigentlich problemlos.
Man kann auch Proxyserver per DHCP zuweisen oder den WPAD-Mechanismus nehmen.

Gegen Rogue DHCP-Server helfen intelligente Swiche (z.B. HP Procurve), die Replies nur von definieren Ports durchlassen.

Wenn es unbedingt Filterung sein soll, würde ich eine fertige Software (z.B. Sophos UTM 9.2) nehmen.
Die Software gibt es wahlweise als Installations-CD und als fertige VM, für eine LAN sollte die kostenlose 30-Tage-Testlizenz genügen.
 
für den User muss möglichst alles out-of-the-box funktionieren

Deswegen würde ich eben keinesfalls irgendwelche wilden Proxy-Konfigurationen bauen. Einige Dinge wie YT und ähnliches von mir aus via DNS umbiegen und auf eine "Wenn du einen guten Grund hast, während der LAN YT zu glubschen, schick mir ne Mail" Seite patschen.

Der Rest ist ja wie gesagt soo schon OK.

dass Pakete aus anderen Quellen vom Port 53 gefiltert werden.
Praktische Idee, DNS Pakete zu filtern ;)
Hilft dir aber nicht gegen Rouge-DHCP-Server auf Port 67. xD

Viele Grüße,
Tobias
 
Man kann auch Proxyserver per DHCP zuweisen[...]

Gegen Rogue DHCP-Server helfen intelligente Swiche (z.B. HP Procurve), die Replies nur von definieren Ports durchlassen.
HTTP-Proxy per DHCP zuweisen? Ich kann mir im Moment nicht vorstellen, wie das funktionieren soll?

Zum Thema DHCP: Ach was, findige Netzwerktechniker, die in Windeseile Switch und Port des Störenfrieds identifizieren, dem Kabel nachlaufen und dann die Person mit ein paar schlagkräftigen Argumentverstärkern im Hintergrund freundlich über das Fehlverhalten belehren, reicht vollkommen aus. :rolleyes:

So haben wir das einmal gehandhabt als ein Spezi mit Nerd-Linux-Notebook mit meinem DNS-Server um die IP-Adresse ein Wettrennen veranstaltet hat, in dem er den Platzaufkleber nicht richtig lesen konnte und statt seiner Platz-IP die Gateway-Adresse sich zugewiesen hat.

Deswegen würde ich eben keinesfalls irgendwelche wilden Proxy-Konfigurationen bauen. Einige Dinge wie YT und ähnliches von mir aus via DNS umbiegen und auf eine "Wenn du einen guten Grund hast, während der LAN YT zu glubschen, schick mir ne Mail" Seite patschen.
Naja, i.d.R. willst da noch ne Menge mehr Adressen sperren also easy übliche Filterlisten verwenden anstatt umständlich DNS-Einträge umzubiegen. Das machte die "anlassbezogene" Erweiterung dann auch sehr einfach, nämlich nur die entsprechende störende Web-Adresse hinzutippern, reload, fertisch. Aber unsere letzte LP war 2008, danach haben wir aufgehört und das Team sich aufgelöst.
 
Last edited by a moderator:
HTTP-Proxy per DHCP zuweisen? Ich kann mir im Moment nicht vorstellen, wie das funktionieren soll?

http://wiki.gentoo.org/wiki/ProxyAutoConfig

Zum Thema DHCP: Ach was, findige Netzwerktechniker, die in Windeseile Switch und Port des Störenfrieds identifizieren, dem Kabel nachlaufen und dann die Person mit ein paar schlagkräftigen Argumentverstärkern im Hintergrund freundlich über das Fehlverhalten belehren, reicht vollkommen aus. :rolleyes:

Kann man so machen

So haben wir das einmal gehandhabt als ein Spezi mit Nerd-Linux-Notebook mit meinem DNS-Server um die IP-Adresse ein Wettrennen veranstaltet hat, in dem er den Platzaufkleber nicht richtig lesen konnte und statt seiner Platz-IP die Gateway-Adresse sich zugewiesen hat.

Ich kenne mich mit den Switches zwar nicht aus, aber die guten managed werden sicherlich auch die Möglichkeit haben, genau das zu unterbinden. Auf einer LAN mit 3000 Leuten würde sowas ansonsten zu organisiertem Chaos führen. So viele Mitarbeiter können die gar nicht haben.
 
Back
Top