Neuling Transparenter Proxy

Started by tsom, January 04, 2017, 12:46:57 PM

Previous topic - Next topic
Hi, versuche mich zum ersten mal am OPNsense.
Die Installation verlief reibungslos und hatte auch sofort Zugang zum Internet.
Wan -> Fritzbox (DHCP) -> OPNsense (DHCP) -> Client.

Jetzt wollte ich einen transparenten Proxy einrichten und hier scheitere ich kläglich.
Ich bin nach folgender Anleitung vorgegangen: https://docs.opnsense.org/manual/how-tos/proxytransparent.html.

Bloß was soll ich jetzt mit Zertifikaten für den Browser und ssl?
Mir geht es doch nur um eine einfache Proxy weiterleitung.

NAT: Port Forward
Lan - TCP - * * Lan address 443 / 80 * * ==> Anti-Lockout Rule ?
Lan - TCP - Lan net * * 80(Http) 127.0.0.1 3128 ==> redirect traffic to proxy

Irgendwie stehe ich voll auf dem Schlauch und habe den vollen Überblicksverlust.
Ich leite alles von Prot 80 auf Port 3128 weiter und jetzt?

Kann mir jemand den Weg ins Licht zeigen?

Das passt ja - im Proxy muss noch der transparente  Modus aktiv sein. Zertifikate brauchst du für HTTP nicht - die werden nur für HTTPS-Intercept benötigt.

Wenn du HTTPS intercepten willst, brauchst du eine CA, welche du dann allen Clients in den Speicher vertrauenswürdiger CAs importieren musst. Außerdem musst du einen 2. Port auch umleiten und den Port in der Konfiguration des Proxy aktivieren.

Hi fabian,
vielen Dank für deine schnelle Antwort.
Wenn ich den transparenten Modus einschalte kann ich bloß keine http Seiten mehr aufrufen.
Der Browser rödelt dann ewig aber baut keine Seite auf.

Würde dir gern logs schicken, aber leider blicke ich noch nicht ganz durch welche bzw. von wo.

Https ist als nächstes dran wenn Http funktioniert. Sonst wirds schwierig mit der Kommunikation :)

Gruß Peter

Bei dem Fehler würde ich von einem TCP-Problem ausgehen - Vermutlich ist der Port nicht offen. Hast du die Proxykonfiguration gespeichert und geladen?

Konfiguration habe ich gespeichert!
Was heißt denn geladen? Aus alter Installation ? Nein, habe ich nicht. System ist neu aufgesetzt.

kannst du mal auf der shell "squid -k parse" ausführen und das ergebins posten?

Sorry ssh daemon läuft nicht oder muss ich den nach installiern oder ist der Port für ssh ein anderer?

Quote from: tsom on January 04, 2017, 12:46:57 PM
Hi, versuche mich zum ersten mal am OPNsense.
Die Installation verlief reibungslos und hatte auch sofort Zugang zum Internet.
Wan -> Fritzbox (DHCP) -> OPNsense (DHCP) -> Client.

Hmm,
das mag ich nicht so ganz glauben! Ohne die entsprechenden FW-Regeln für die LAN-Schnittstelle dürftest Du mit der OPNSense nicht ins Internet kommen.
Zumindest für die Ports 53, 80 und 443 (DNS, HTTP und HTTPS) muss eine Regel vorhanden sein, damit Du aus dem LAN ins Internet kommst. Oder aber es ist eine ANY-Regel aktiviert!

Poste doch mal dein komplettes Regelwerk auf der LAN-Schnittstelle.

Gruß
Dirk

Hallo Dirk,

Ich hoffe das ist was du meinst
Firewall Rules:

*    *    *    LAN Address    443
80    *         Anti-Lockout Rule    
IPv4 *    LAN net    *    *    *    *       Default allow LAN to any rule    
IPv6 *    LAN net    *    *    *    *       Default allow LAN IPv6 to any rule    
IPv4 TCP    LAN net    *    127.0.0.1    3128    *       NAT redirect traffic to proxy

Und noch für Fabian die squid Ausgabe:


squid -k parse
2017/01/04 15:15:09| Startup: Initializing Authentication Schemes ...
2017/01/04 15:15:09| Startup: Initialized Authentication Scheme 'basic'
2017/01/04 15:15:09| Startup: Initialized Authentication Scheme 'digest'
2017/01/04 15:15:09| Startup: Initialized Authentication Scheme 'negotiate'
2017/01/04 15:15:09| Startup: Initialized Authentication Scheme 'ntlm'
2017/01/04 15:15:09| Startup: Initialized Authentication.
2017/01/04 15:15:09| Processing Configuration File: /usr/local/etc/squid/squid.conf (depth 0)
2017/01/04 15:15:09| Processing: http_port 127.0.0.1:3128 intercept
2017/01/04 15:15:09| Starting Authentication on port 127.0.0.1:3128
2017/01/04 15:15:09| Disabling Authentication on port 127.0.0.1:3128 (interception enabled)
2017/01/04 15:15:09| Processing: http_port [::1]:3128 intercept
2017/01/04 15:15:09| Starting Authentication on port [::1]:3128
2017/01/04 15:15:09| Disabling Authentication on port [::1]:3128 (interception enabled)
2017/01/04 15:15:09| Processing: http_port 192.168.1.1:3128
2017/01/04 15:15:09| Processing: acl ftp proto FTP
2017/01/04 15:15:09| Processing: http_access allow ftp
2017/01/04 15:15:09| Processing: acl localnet src 192.168.1.0/24 # Possible internal network
2017/01/04 15:15:09| Processing: acl localnet src fc00::/7       # RFC 4193 local private network range
2017/01/04 15:15:09| Processing: acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
2017/01/04 15:15:09| Processing: acl SSL_ports port 443 # https
2017/01/04 15:15:09| Processing: acl Safe_ports port 80 # http
2017/01/04 15:15:09| Processing: acl Safe_ports port 21 # ftp
2017/01/04 15:15:09| Processing: acl Safe_ports port 443 # https
2017/01/04 15:15:09| Processing: acl Safe_ports port 70 # gopher
2017/01/04 15:15:09| Processing: acl Safe_ports port 210 # wais
2017/01/04 15:15:09| Processing: acl Safe_ports port 1025-65535 # unregistered ports
2017/01/04 15:15:09| Processing: acl Safe_ports port 280 # http-mgmt
2017/01/04 15:15:09| Processing: acl Safe_ports port 488 # gss-http
2017/01/04 15:15:09| Processing: acl Safe_ports port 591 # filemaker
2017/01/04 15:15:09| Processing: acl Safe_ports port 777 # multiling http
2017/01/04 15:15:09| Processing: acl CONNECT method CONNECT
2017/01/04 15:15:09| Processing: icap_enable off
2017/01/04 15:15:09| Processing: http_access deny !Safe_ports
2017/01/04 15:15:09| Processing: http_access deny CONNECT !SSL_ports
2017/01/04 15:15:09| Processing: http_access allow localhost manager
2017/01/04 15:15:09| Processing: http_access deny manager
2017/01/04 15:15:09| Processing: http_access deny to_localhost
2017/01/04 15:15:09| Processing: http_access allow localnet
2017/01/04 15:15:09| Processing: http_access allow localhost
2017/01/04 15:15:09| Processing: http_access deny all
2017/01/04 15:15:09| Processing: cache_mem 256 MB
2017/01/04 15:15:09| Processing: coredump_dir /var/squid/cache
2017/01/04 15:15:09| Processing: refresh_pattern ^ftp: 1440 20% 10080
2017/01/04 15:15:09| Processing: refresh_pattern ^gopher: 1440 0% 1440
2017/01/04 15:15:09| Processing: refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
2017/01/04 15:15:09| Processing: refresh_pattern . 0 20% 4320
2017/01/04 15:15:09| Processing: access_log /var/log/squid/access.log squid
2017/01/04 15:15:09| Processing: cache_store_log /var/log/squid/store.log
2017/01/04 15:15:09| Processing: uri_whitespace strip
2017/01/04 15:15:09| Processing: forwarded_for on
2017/01/04 15:15:09| Processing: logfile_rotate 0
2017/01/04 15:15:09| Processing: visible_hostname localhost
2017/01/04 15:15:09| Processing: cache_mgr admin@localhost.local
2017/01/04 15:15:09| Initializing https proxy context


January 04, 2017, 03:27:55 PM #10 Last Edit: January 04, 2017, 03:34:56 PM by monstermania
@tsom
Ok,
damit ist es schon klar.
Du hast eine ANY-Regel sowohl für IPv4 als auch IPv6.
Die Firewall arbeitet die Regeln von Oben nach unten ab! Da die ANY-Regel bereits alle Ports beinhaltet, werden alle Regeln die nach der ANY-Regel kommen nicht verarbeitet bzw. sind obsolet! Der Port 80 wird daher nie an den Proxy umgeleitet!

Deaktiviere mal die beiden ANY-Regeln!
Richte mal folgende Regeln ein:
IPv4 UDP LAN net * * 53 (DNS) *  DNS -> any   
IPv4 TCP LAN net * * 443 (HTTPS) *  HTTPS -> any

Wenn Du IPv6 nutzt müssen die Regeln natürlich für IPv6 eingerichtet werden!
Damit sollte es eigentlich mit dem Proxy (HTTP) klappen.

PS: Eine ANY-Regel auf der Firewall ist nix gut! Immer nur die Dienste (Ports) freischalten, die wirklich benötigt werden. Ich poste nachher mal meine FW Grundkonfiguration mit transp. Proxy.

Squid-Konfiguration müsste funktionieren. Ich würde aber den X-Forwarded-For-Header deaktivieren.

So sieht es jetzt bei mir aus:


* * * LAN Address 443
80
222 *   Anti-Lockout Rule
Deaktiviert => IPv4 * LAN net * * * * Default allow LAN to any rule
IPv4 UDP LAN net * * 53 (DNS) * DNS -> any
IPv4 TCP LAN net * * 443 (HTTPS) * HTTPS -> any
Deaktieviert => IPv6 * LAN net * * * * Default allow LAN IPv6 to any rule
IPv4 TCP LAN net * 127.0.0.1 3128 * NAT redirect traffic to proxy


Gut soweit aber die any Regeln habe ich nicht angelegt. Zumindest nicht händisch.

Auf HTTP Seiten kann ich derzeit ob Proxy an oder aus nicht zugreifen

Default LAN sollte nicht ausgestellt werden, zumindest ist es hier nicht notwendig. Der Proxy sollte sofort laufen, es sei denn er hat Schwierigkeiten selbst ins Internet zu kommen (z.B. DNS).

Welche Version läuft? Funktioniert ein Firmware-Update? Behebt es vielleicht sogar das Problem?


Grüsse
Franco

Quote from: monstermania on January 04, 2017, 03:27:55 PM
Die Firewall arbeitet die Regeln von Oben nach unten ab! Da die ANY-Regel bereits alle Ports beinhaltet, werden alle Regeln die nach der ANY-Regel kommen nicht verarbeitet bzw. sind obsolet! Der Port 80 wird daher nie an den Proxy umgeleitet!

Achtung: PF arbeitet auf Last-Match-Basis. Im GUI wird bei den Schnittstellen immer die Eigenschaft "quick" gesetzt, wodurch sich die Regeln der Schnittstellen wie First-Match verhalten.

NAT passiert übrigens vor den pass- und block-Regeln. Die pass any:any-Regel ist also nicht das Problem. Möglicherweise kann hier ein packet capture helfen.