Squid im Intercept-Modus nftables auf einem anderen Host

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Voraussetzungen

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

Firewall-Konfiguration

Tabelle und Kette erstellen
  • nft add table inet fwmark
  • nft add chain inet fwmark prerouting '{ type filter hook prerouting priority mangle; policy accept; }'
  • Regel zur Paketmarkierung:
  • nft add rule inet fwmark prerouting ip saddr 172.17.113.0/24 tcp dport { 80, 443 } meta mark set 0x1
  • Policy Routing aktivieren:
  • ip rule add fwmark 1 lookup 100
  • ip route add default via 10.88.113.51 table 100

Proxy-Konfiguration (nftables REDIRECT)

Tabelle und Kette anlegen
  • nft add table ip nat
  • nft add chain ip nat prerouting '{ type nat hook prerouting priority dstnat; policy accept; }'
HTTP und HTTPS lokal umleiten
  • nft add rule ip nat prerouting tcp dport 80 redirect to :3129
  • nft add rule ip nat prerouting tcp dport 443 redirect to :3130

Squid-Konfiguration

vi /etc/squid/squid.conf

http_port 3129 intercept
https_port 3130 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem key=/etc/squid/certs/squid_proxyCA.key generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE
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