Squid-Kit-Transparenter-Proxy nftables auf einem anderen Host

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Schaubild

Vorraussetzung


Voraussetzungen

  • Clients im Netz: 172.26.213.0/24
  • Proxy-Host: 10.88.213.4
  • Ziel: HTTP/HTTPS-Verkehr per Policy Routing an Squid weiterleiten, dort per REDIRECT + intercept abfangen

Firewall-Konfiguration

Die Datei /etc/nftables.conf ergänzen
table inet fwmark {
	chain prerouting {
		type filter hook prerouting priority mangle; policy accept;
		ip saddr 172.26.213.0/24 tcp dport { 80, 443 } meta mark set 0x00000001
	}
}
Neu laden
  • nft -f /etc/nftables.conf
Kontrolle
  • nft list ruleset
Policy Routing aktivieren
Die Datei /etc/network/interfaces ergänzen
#DMZ
auto enp0s9
iface enp0s9 inet static
 address 10.88.213.1/24 
 post-up ip rule add fwmark 1 lookup 100
 post-up ip route add default via 10.88.213.4 table 100

Netzwerk neu starten

Proxy-Konfiguration (nftables REDIRECT)

Nftables Tabelle, Kette und Regeln erstellen
  • nano /etc/nftables.conf
#!/usr/sbin/nft -f

flush ruleset

table inet nat {
	chain prerouting {
		type nat hook prerouting priority dstnat; policy accept;
		tcp dport 80 redirect to :3129
		tcp dport 443 redirect to :3130
	}
}
Enablen und starten von nftables
  • systemctl enable nftables.service --now
Checken
  • nft list ruleset

Squid-Konfiguration

vi /etc/squid/squid.conf

http_port 3129 intercept
https_port 3130 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1
ssl_bump bump all

Hinweise

  • Squid übernimmt die Verbindungen lokal über redirect + intercept
  • Zertifikat muss existieren und lesbar für den Squid-Benutzer sein
  • Root-CA muss auf Clients importiert werden, um HTTPS-Warnungen zu vermeiden

Diagnose

  • tail -f /var/log/squid/access.log
  • tail -f /var/log/squid/cache.log
  • nft list ruleset
  • ip rule show
  • ip route show table 100