123788
Goto Top

PfSense: Squid-Zugang trotz fehlender Firewall-Regel

Hallo zusammen,

mir ist gerade eine sehr merkwürdige Sache bei pfSense aufgefallen:
Ich betreibe einen Squid-Proxy (mit SquidGuard), der in einem DMZ-VLAN aber nur bei Bedarf freigegeben wird (wenn ich Patches für die Server herunterladen möchte).
Nun kann man auf den Squid aber IMMER zugreifen, selbst wenn die zugehörige Firewall-Regel deaktiviert oder gänzlich gelöscht ist.
Ich habe das auf verschiedenen pfSense-Installationen mit unterschiedlichen Netzwerkkonstellationen ausprobiert... ist überall so.
Squid ist auf DIESEM Interface auch nicht transparent, sondern ganz normal im System eingetragen.

Warum? Ich würde das gern unterbinden.

Viele Grüße

Content-Key: 331169

Url: https://administrator.de/contentid/331169

Printed on: April 19, 2024 at 23:04 o'clock

Member: aqui
aqui Mar 04, 2017 at 14:26:49 (UTC)
Goto Top
Eine Topo Zeichnung würde hier wie immer helfen.
Es ist leider nicht ganz klar WIE dein Squid Server an die Firewall angebunden ist und WO an welchem Interface entsprechende Regeln aktiv sind.
Hast du bedacht das die Firewall Regeln immer nur Inbound, also ins FW Interface rein wirken ?
Hast du ebenfalls bedacht das das Prnzip First match wins bei den Regeln geht. Sprich du also nicht in einem Regelwerk erst was erlauben kannst und später wieder verbieten. Oder erst verbieten und dann wieder erlauben.
Du kannst ganz sicher sein das die Firewall solche Regeln absolut richtig handhabt. Wenn nicht wäre das ein grundlegender Bug den man bei Millionen von weltweiten Usern wohl zu 100% ausschliessen kann.
Irgendwo ist also in deinen Regeln oder des netzwerk Designs der Fehler.
Mitglied: 123788
123788 Mar 04, 2017 updated at 18:19:25 (UTC)
Goto Top
Hallo aqui,

Konfiguration der Interfaces ist recht einfach: ein 30er Subnet, der Server hängt mittels VLAN dran, in dem sich nur er selbst und pfSense befinden.
An dem VLAN-Interface sind auf pfSense nur die wesentlichen Regeln zugelassen: Zugriff auf DNS und NTP, das war's.
Zugang zu Squid (Auf Standardport 3128) EIGENTLICH nur bei Bedarf (Regel also deaktiviert), es funktioniert aber eben auch ohne.
Der DMZ-Server hat nur dieses eine Interface, er kann also nicht versehentlich eine andere Route nutzen o.ä.

Edit: Das ist auch nur so, wenn ich Squid benutze.
Sobald ich den Proxy aus der config des DMZ-Servers entferne, ihn dann direkt über HTTP/s rausgehen lasse (entsprechende config in pfSense vorausgesetzt) funktioniert alles normal. Bedeutet: Deaktiviere ich die HTTP/s-Regel auf pfSense dann, so hat der DMZ-Server keinerlei Zugriff mehr.
Member: Spirit-of-Eli
Spirit-of-Eli Mar 04, 2017 at 20:07:20 (UTC)
Goto Top
Moin,

hast du ne any to any rule aktive? ich kann das hier nicht bestätigen.

Ansonsten eben sowas hier:
fw rule
Mitglied: 123788
123788 Mar 04, 2017 updated at 21:16:15 (UTC)
Goto Top
Nein, es sind nur die beiden oben aufgeführten Regeln auf dem Interface aktiv. Komischerweise tritt's ja eben auch nur bei Squid auf. Habe das aber auf mindestens zwei unabhängigen pfSense-Systemen, die ansonsten unterschiedlich konfiguriert sind.

Ne Block-Regel habe ich gerade probiert. Das behebt zwar das Problem, aber ich möchte nun natürlich wissen, woher es überhaupt kommt.

Edit:
Habe gerade mal das Access-Log im Squid aktiviert und dort ist klar zu erkennen, dass von der korrekten IP des DMZ-Servers auf Squid zugegriffen wurde. Wird also wohl kein versehentlicher Redirect über eine andere Route o.ä. sein:


1488661641.784     30 192.168.1.2 TCP_MISS/304 258 GET http://xyz - HIER_DIRECT/123.456.789.012 -

Squid läuft auch im Wesentlichen mit der Standard-config, lediglich squidGuard ist noch mit installiert, auch dieser ist aber nicht in besonderer Weise weiter konfiguriert. Es ist eine Blacklist eingelesen und aus deren Kategorien wird manches geblockt, alles andere erlaubt.

Edit 2: Gerade das dritte pfSense-System getestet: Selbes Verhalten.
Die DMZ-Server sind übrigens jeweils Debian-Systeme, in deren apt-config der Proxy eingetragen wurde.
Member: Spirit-of-Eli
Spirit-of-Eli Mar 04, 2017 at 22:23:01 (UTC)
Goto Top
ist bei allen System Zugriff aus dem Internen Lan zumindest zum GW möglich? Dann hast du ja den Grund.
Mitglied: 123788
123788 Mar 04, 2017 at 23:08:46 (UTC)
Goto Top
*uff* den Satz habe ich nicht verstanden, entschuldige.

Also pfSense IST ja das jeweilige Gateway für die Clients.
Manche pfSense-Dinger hängen direkt am Internet, mit fester IP. Andere haben nen Router dazwischen und einen herkömmlichen DSL-Anschluss.
Insofern weiß ich grad nicht, was du meinst. Denn "vor" pfSense gibt's nix, das erreicht werden könnte, allenfalls die config-Oberfläche des Plastik-Routers.
Member: aqui
aqui Mar 05, 2017 updated at 12:13:18 (UTC)
Goto Top
ein 30er Subnet, der Server hängt mittels VLAN dran, in dem sich nur er selbst und pfSense befinden.
Das heisst du hat das 30er netz in einem Parent Interface und arbeitest auf der Physik mit VLAN Subinterfaces und gehst mit einem Tagged Uplink auf die pfSense ?? Ist das so richtg ?
Also so wie hier im Beispiel beschrieben:
VLAN Installation und Routing mit pfSense, Mikrotik, DD-WRT oder Cisco RV Routern
Ok gehen wir dann mal davon aus das dem so ist.
Wenn du dann auf dem VLAN Interface einzig nur als Source vlan30_net und als Desination any und Zielport UDP/TCP 53 (DNS) und UDP 123 (NTP) zulässt, dann kann ein Client an diesem Port gar nix machen.
Er kann lediglich Hostnamen auflösen aber alles andere scheitert dann sofort am Regelwerk des Interfaces. Nichtma ein Ping ist dann möglich.
Hier kann man nur davon ausgehen das du einen gravierenden Fehler in deinen Firewall Regeln am VLAN Subinterface gemacht hast.
Ein Screenshot wäre hier hilfreich.

Das ist dann so das das das VLAN Interface quasi deine DMZ ist in dem der Squid Proxy hängt und das native Interface dann das mit den Clients ist richtig ?
Am Client Seegment wenn du da doe Proxy Nutzung erzwingen willst darf dann nur DNS, NTP und TCP 3128 erlaubt sein. Dann könnten die Clients nur auf den Proxy zugreifen.
Erschwerend kommt vermutlich noch dazu das du den Proxy Server nur one armed (einbeinig) angeschlossen hast, oder ? Das bedeutet dann das sowohl eingehender Traffic auf dem Proxy als auch ausgehender Richtung Internet über ein und daselbe physische Interface rennt.
Ohne einen Screenshot der Regelwerke auf VLAN und native Interface kommen wir vermutlich nicht weiter, denn nur da dürfte der Fehler liegen.
Mitglied: 123788
123788 Mar 05, 2017 updated at 15:08:21 (UTC)
Goto Top
Moin aqui,

Screenshot kann ich gerade nicht machen, versuche es daher nochmal mit sprachlicher Beschreibung:
Die pfSense hat zwei Netzwerkkarten:

- re0 direkt mit statischer IP an nem Glasfaser-Provider angeschlossen
- rl0 ist nativ NICHT konfiguriert
- rl0_vlan1
- rl0_vlan2
- rl0_vlanN

nur mal schematisch. Zwei dieser VLANs sind DMZs mit 30er Subnet und so wie von dir oben schon richtig verstanden: Die können nur NTP und DNS und das auch nur an die pfSense gerichtet. Genau, der Netzwerkport der pfSense für rl0 am Switch ist natürlich tagged und die DMZ-Switch-Ports der Server sind untagged.
Fünf andere VLANs sind verschiedene weitere Netze im Haus, nen Gast-VLAN für's WLAN etc.
Squid läuft so, dass er über re0 ins Internet geht und die Daten dann ins jeweilige VLAN schaufelt.
Member: Spirit-of-Eli
Spirit-of-Eli Mar 06, 2017 at 17:29:54 (UTC)
Goto Top
Ich wollte darauf hinaus, was aqui auch angesprochen hat.

Wenn du "nur" DNS und NTP erlaubts läuft doch garnichts?
Allerdings lässt sich der Squid auch als Scheunentor konfigurieren.. Das wird bei dir wohl der Fall sein, Im "Normalfall" ist dies aber nicht so!
Mitglied: 123788
123788 Mar 06, 2017 at 21:15:45 (UTC)
Goto Top
Ah, jetzt verstehe ich das endlich face-wink

Ähm richtig, der Server selbst kann - normalerweise - erstmal nur die beiden Dienste erreichen.
Es gibt aber Firewall-Regeln aus anderen VLANs, die dann bestimmte Dienste erreichen können.
Auf einem der Server läuft z.B. ne Cloud und somit kann ein bestimmtes VLAN per HTTPS dann an diesen Server ran.
Member: Spirit-of-Eli
Spirit-of-Eli Mar 06, 2017 at 22:34:05 (UTC)
Goto Top
Das ergibt Sinn ;)
Mitglied: 123788
123788 Mar 07, 2017 at 07:58:05 (UTC)
Goto Top
Genau face-wink
Geht einfach nur darum, dass die Server nicht unüberwacht raus ins Netz können (Trojaner etc.) und genau deshalb soll Squid nicht permanent erreichbar sein.

Hat also jemand noch eine Idee? Im Zweifel würd' ich den Proxy einfach deinstallieren und die Server in Zukunft direkt per 80/443 ins Netz lassen (bei Bedarf). Das wäre nicht schön, aber zumindest ne Lösung.
Member: aqui
aqui Mar 07, 2017 updated at 11:33:53 (UTC)
Goto Top
nur mal schematisch. Zwei dieser VLANs sind DMZs mit 30er Subnet
Dazu 2 Fragen:
  • 1. VLAN 1 ist also nur eine Nummerierung und ncht das native VLAN 1, richtig ?? VLAN 1 wird in der Regel immer untagged übertragen und kann bei vielen Herstellen nicht getagged werden.
  • 2 VLANs mit 30er Netz ?? Wie sr das gemeint 2 unterschiedliche 30er Netze ?? also sowas wie 10.1.30.0 /24 und 10.2.30.0 /24 ?? Alles andere wäre nicht möglich da nicht routebar.
und genau deshalb soll Squid nicht permanent erreichbar sein.
Das ist doch eigentlich ganz einfach...
In den VLANs wo die Clients sind blockierst du TCP 80 und 443 inbound damit die nicht direkt ins Internet können. Du lässt nur das durch was die so dürfen sollen.
Dann aktivierst du mit einer zeitgesteuerten ACL Regel den Zugriff auf den Proxy wennimmer du das willst.
Damit können diese Clients dann zu diesen Zeiten via Proxyport 3128 ins Internet.
Das ist doch eigentlich ganz einfach umzusetzen....?!
Technisch ideal wäre es wenn die pfSense z.B. auf einem APU Board:
Preiswerte, VPN fähige Firewall im Eigenbau oder als Fertiggerät
rennen würde mit 3 physischen Ports und du einen dedizierten DMZ Port hättest für den Server. Dann könntest du den dadrin belassen und müsstest nur das LAN Interface mit den Client VLANs aufteilen. Das würde dein Regelwerk etwas vereinfachen und auch die Performance Richtung Internet erheblich entzerren.
Mitglied: 123788
123788 Mar 07, 2017 updated at 13:31:19 (UTC)
Goto Top
Hallo aqui,

genau, die VLAN-Nummerierungen waren jetzt einfach ein willkürliches Beispiel, die tatsächlichen Nummern sind glaub 302 und 305 (müsste ich nachschauen).

Die DMZ-Vlans haben z.B. folgende IP-Bereiche:

192.168.1.0/30
192.168.2.0/30
...

Wir verwenden in unseren "richtigen" Netzen das 10.0.0.0/8-Netz, daher sind die 192.168er für die DMZs vorgesehen.

Richtig, mir ist klar, dass das so ginge. Aber es funktioniert ja nicht face-wink
Ich habe ja momentan nur NTP/DNS frei und trotzdem kann man über den Proxy surfen. Alle anderen Ports sind von der DMZ aus ja ohnehin dicht.

An der Hardware kann man bestimmt was verbessern, es ist aber immerhin ein Xeon mit 16GB RAM, das genügt für die paar kbit, die da übertragen werden face-wink
Wir haben auch so viele VLANs und DMZ, dass es praktisch unmöglich ist, nen Server zu finden, der ausreichend NICs hat.
Member: aqui
aqui Mar 07, 2017 at 15:32:41 (UTC)
Goto Top
waren jetzt einfach ein willkürliches Beispiel,
OK, dann war das richtig verstanden... face-wink
Die DMZ-Vlans haben z.B. folgende IP-Bereiche:
OK, dann ist das auch geklärt. Du meist also einen /30er Prefix. Hättst du auch gleich sagen können dann wäre das kein Verwirrspiel geworden face-sad
Das bedeutet dann aber nur 2 Hostadresse pro DMZ. Eine geht für die pfSense drauf kannst du nur einen Server noch nehmen. Was soll da der tiefere Sinn sein ?? Oder hat bei dir jedes Client VLAN auch sein dediziertes DMZ VLAN ??
Das würde dein ursprüngliches Design noch viel fragwürdiger sein das alles über einen Port zu schieben.
Kein wirklich gutes Design face-sad
Da wäre es in der Tat erheblich besser das auf 3 Interfaces zu entzerren.
Dann könntest du auf dem DMZ Port die VLAN Subinterfaces setzen und auf dem LAN Port nur die Client VLANs.
Erheblich sinnvoller sowohl von der Logik des management als auch von der Performance.
An der Hardware kann man bestimmt was verbessern
Absolut !
s ist aber immerhin ein Xeon mit 16GB RAM, das genügt für die paar kbit, die da übertragen werden
Nein, das ist ein unsinniger Trugschluss, denn der gesamte Traffic aller Client und DMZ Segmente trifft sich bei dir auf einem einzigen physischen Port.
Und das gleich mehrfach, da er mehrere virtuelle Interfaces passieren muss dabei aber immer wieder über die physische NIC geschickt wird.
Nehmen wir mal an das das die üblichen 1 Gig sind dann hast du hier sehr sehr schnell ein Engpass. Da nützt dann auch ein Xeon herzlich wenig....
Wir haben auch so viele VLANs und DMZ, dass es praktisch unmöglich ist, nen Server zu finden, der ausreichend NICs hat.
Darum geht es auch gar nicht. Du machst schon beim Prozip ein Denkfehler. Wichtig ist es doch wiederkehrenden Traffic immer und immer wieder durch die gleiche physische NIC zu quetschen.
Clieht Traffic soll da bleiben wo die Client sind und DMZ Traffic da wo die DMZ ist.
Deshalb solltest du das zwingend mit einer 3ten NIC entzerren. Es gibt sehr sehr preiswerte 4 Port Intelkarten auch im Low Profile. Das wären 4 Port s dann.
Außerdem muss man dafür keinen XEON glühen lassen. Ein normales APU2 Board hat die 3 NICs und verbraucht 20 Euro Strom im Jahr im Vergelich zu 200 beim Xeon.
Nur mal so zu nachdenken face-wink
Mitglied: 123788
123788 Mar 07, 2017 updated at 19:24:51 (UTC)
Goto Top
Nicht böse sein, aber mich nervt immer, dass die Diskussionen hier nach spätestens drei Beiträgen abdriften in "aber ich kann das viel besser und SO macht man das schonmal garnicht".
Denke, du kennst weder unser Budget, noch die Gründe für die Kaufentscheidungen, noch weißt du, welche Datenmengen hier verschoben werden.
Insofern klar: Du darfst gern eine Meinung dazu haben, aber stell sie bitte nicht über meine, denn ich bin seit über 10 Jahren der Mann vor Ort und weiß, was hier verlangt wird.

Im übrigen sehe ich kein Problem darin, eine einzelne NIC zu verwenden, da wir aufsummierten niemals die 1Gbit-Marke auch nur ansatzweise erreichen. Genauso ist mir schleierhaft, warum man DMZ-Traffic physikalisch trennen muss, denn die tagged-Version ist genauso sicher, auch auf derselben NIC. Also bitte keine Glaubenskriege darüber, das führt nur von der eigentlichen Causa weg.

Zur Sache:
Hat noch jemand eine Idee, was ich probieren könnte, an welcher Stelle sich vllt. ein Fehler eingeschlichen hat?

Edit: Kurz ergänzend, das hatte ich noch nicht erläutert: Nen Xeon ist vor allem deswegen drin, weil hier viele Snort-Instanzen laufen (auf jedem (VLAN)-Interface eine). Und da Snort leider nicht wirklich multi-core fähig ist, benötige ich für jede NIC (theoretisch) einen eigenen CPU-Kern.
Member: aqui
aqui Mar 08, 2017 at 11:21:14 (UTC)
Goto Top
denn ich bin seit über 10 Jahren der Mann vor Ort und weiß, was hier verlangt wird.
Das sollte auch keine Kritik sein an dir als Person sein aber wenn du mal deinen gesunden Menschenverstand bzw. IT Verstand walten lässt dann musst du fairerweise schon zugeben das das Design gemessen an dem was du machst dort suboptimal ist.
Kein verantwortungsvoller Netzwerker würde das so machen. Allein die physische Vermischung schon von sicherheitsrelevantem Traffic mit Client Traffic ist nicht gut wenn man es auf ein klassisches FW Design runterbricht. Von den Performanceeinbußen auf dem System selber mal gar nicht zu reden. Wären dir interne Aufbauten von NIC Chipsätzen etwas geläufiger wäre auch keine Rede von Glaubenskrieg.
Aber zugegeben. Hintergründe dazu usw. kann ein Forum ja niemals liefern und deshalb führen solche doch eklatant sichtbaren Fehler dann immer zu solchen Diskussionen auf beiden Seiten. Eine evidente und auch menschlich normale Reaktion und Folge.
Aber nun gut, du machst klar das du weisst was du tust und das ist dann auch gut so. Case closed!
Der Fehler liegt ganz klar in deinen Firewall Regeln, soviel wenigstens ist absolut sicher. Die Firewall selber hat keinerlei Bugs was das Regelwerk anbetrifft in der 2.3.3er Version. Da sprechen die Release Notes eine mehr als eindeutige Sprache.
Mitglied: 123788
123788 Mar 08, 2017 updated at 12:41:09 (UTC)
Goto Top
Offtopic:
Wenn du keine physische Vermischung willst, darfst du aber nie tagged VLANs einsetzen. Auch keine entsprechenden Switches. Klar, wenn man das so betrachten möchte hast du recht. Da ich tagged VLANs aber - für diesen Fall - weit genug vertraue ist das hinfällig.
Auch wird wie gesagt niemals ein Traffic von einem Gigabit auch nur annähernd erreicht. Da wüsste ich nicht, was mehrere NICs bringen sollen. Performance-Einbußen entstehen da nicht, allenfalls im kaum messbaren Bereich. Natürlich ist das "von der Idee" nicht optimal, das auf einem Interface zu machen. Aber würde man auf mehrere NICs verteilt einen Unterschied spüren? Ich glaube kaum. Auch potenziell entstehen da keine Sicherheitsrisiken. Selbst wenn du's auf den NICs trennst, läuft's immernoch durch die selbe CPU und denselben RAM (Lanes etc. vernachlässige ich mal bewusst).
Allenfalls - wie eingangs erwähnt - wenn man generell keine physische Vermischung möchte. Das halte ich aber für übertrieben.
Insofern verstehe ich nicht, wo du hier "eklatante Fehler" siehst.

Ontopic:
Ich kann gern nochmal einen Screenshot posten, wenn das hilft. Auf dem Interface sind exakt 2 Firewall-Regeln definiert...