OpenBSD 6.7: Squid als transparenten Proxy -> Funktioniert nicht

LipkeGu

Member
Hallo an die BSDler,

Momentan habe ich vor ein DIY-Router zu bauen, auf dem OpenBSD läuft, eine Intel WLAN-Karte wird die tage gegen eine Compex ***200nx getauscht,
Da diese hostap unterstützt. Insrtalliert ist das Base.tgz + comp.tgz. Desweiteren habe ich igmpproxy, squid, sowie nano und npppd installiert.

Beim installieren von Squid habe ich das problem mit dem PF, ich lege die divert-to regel an und auch das divert-reply. tcpdump -pflog0 zeigt mir auch an,
dass traffic in ausgeh(en) will (PASS LOG) auf dem "reply" aber im browser der clients habe ich immer "Connection error". Ohne divert haben die Clients die möglichckeit Webseiten aufzurufen es.

Access.log ist leer in squid und cachemgr.log ist auch soweit OK. Es werden keine verbindungsanfragen protokolliert. ich habe "intercept", "transparent" und auch "TPROXY" probiert aber keines behebt mein problem.
 
Vielleicht mal ein paar Sachen zum Verständnis.

Wenn du den squid NICHT transparent laufen lässt, musst du ihn(+den port) explizit auf den Clients eintragen.
Wenn transparent, dann muss nichts auf den Clients gemacht werden.
Ohne SSL aufzubrechen, funktioniert es nur mit Seiten ohne, also 'http' und diese sind rar geworden.
Hast du das Netz erlaubt, in welchem der squid lauscht?
 
Squid 4.12 wurde per "pkg_add" installiert. Das Netz "10.20.1.0/24" ist erlaubt. und im Squid ist das als 10.20.0.0/16 erlaubt.
Dass ich ssl aufbrechen muss, dass ist mir ja bereits bewusst und ist im pf als port { www https } angegeben (in der Regel.

Ich möchte squid transparent nutzen, er läuft auf der Box, wo auch jener PF ist.
 
Wenn Du SSL Interception machen willst, musst Du auf den Clients bzw. in deren Browsern Deine Certificate Authority installieren, damit diese die vom Squid generierten Zertifikate akzeptieren. Das konterkariert nach meinem Verständnis etwas den Sinn eines transparenten Proxies, der ja ansonsten keine Client Konfiguration benötigt. Aber vielleicht hast Du ja ein anderes Anwendungsszenario als ich.
 
In der README steht doch schon ziemlich genau, was man machen muss:

Interception Proxying with PF
=============================
To configure an interception (a.k.a. "transparent") proxy, Squid should be configured in ${SYSCONFDIR}/squid.conf to bind to a specific address,for example:


http_port 127.0.0.1:3127 intercept

On the machine running Squid, add a firewall rule similar to this:

pass in quick log inet proto tcp to port 80 divert-to 127.0.0.1 port 3127

If the machine running Squid is already acting as a router/firewall for your client machines, there is no other special configuration.

https://github.com/openbsd/ports/blob/master/www/squid/pkg/README-main
 
In der README steht doch schon ziemlich genau, was man machen muss:

Interception Proxying with PF
=============================
To configure an interception (a.k.a. "transparent") proxy, Squid should be configured in ${SYSCONFDIR}/squid.conf to bind to a specific address,for example:


http_port 127.0.0.1:3127 intercept

On the machine running Squid, add a firewall rule similar to this:

pass in quick log inet proto tcp to port 80 divert-to 127.0.0.1 port 3127

If the machine running Squid is already acting as a router/firewall for your client machines, there is no other special configuration.

https://github.com/openbsd/ports/blob/master/www/squid/pkg/README-main

Das Problem ist, dass Squid mit --enable-pf-transparent gebaut sein muss, dass dieses funktioniert. Der im Port und auch im Packages, ist nicht mit jenem gebaut. Auch haben beide kein --enable-ssl --with-openssl.

ICh habe Squid selbst compiliert mit jenen optionen, die certs konfiguriert. Jedoch sagt mir Firefox, dass die verbindung nicht hergestellt werden kann.

Muss ich den explizit an localhost binden oder kann ich jenen auch an ein interface binden?
 
Code:
# PF transparent support requires access to /dev/pf to retrieve the original
# source address; ipfw-transparent (which requires divert-to) uses an
# unprivileged getsockname() call instead.
CONFIGURE_ARGS+= --disable-pf-transparent \
        --enable-ipfw-transparent
https://cvsweb.openbsd.org/cgi-bin/...e?rev=1.227&content-type=text/x-cvsweb-markup

Du solltest die config schon so wie im Makefile lassen und die configs wie in der README anpassen. Da haben sich die Maintainer aus Sicherheitsgruenden schon was dabei gedacht. Das package wurde laut dem Makefile auch mit --enable-ssl und --with-openssl gebaut. Probiere einfach mal ein ``pkg_add squid'' und mache die Anpassungen in der squid.conf, pf.conf und login.conf wie in der README beschrieben.
 
Code:
# PF transparent support requires access to /dev/pf to retrieve the original
# source address; ipfw-transparent (which requires divert-to) uses an
# unprivileged getsockname() call instead.
CONFIGURE_ARGS+= --disable-pf-transparent \
        --enable-ipfw-transparent
https://cvsweb.openbsd.org/cgi-bin/...e?rev=1.227&content-type=text/x-cvsweb-markup

Du solltest die config schon so wie im Makefile lassen und die configs wie in der README anpassen. Da haben sich die Maintainer aus Sicherheitsgruenden schon was dabei gedacht. Das package wurde laut dem Makefile auch mit --enable-ssl und --with-openssl gebaut. Probiere einfach mal ein ``pkg_add squid'' und mache die Anpassungen in der squid.conf, pf.conf und login.conf wie in der README beschrieben.

# PF transparent support requires access to /dev/pf hat die Gruppe _squid (read + write) bekommen. OK ich werde es heute abend mal testen. Also mein Squid -v zeigt das nicht an, dass es mit openssl gebaut wurde. ICh habe squid von hier gebaut: http://www.squid-cache.org/Versions/v4/ Werde das mal nacher austauschen (pf transparent to ipfw-transparent)...

.... auch im Packages ... wie bereits probiert im pkg_add ist es nicht aktiviert.
 
Hi,
Ich kenne squid nur aus alten Tagen,
und dort hat er SSL nur durch geschoben, dar squid kein Man in the Middle konnte.

Hat sich das geändert ?

Holger
 
Zurück
Oben