Iptables mit Squid Transparenter Proxy: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
[[Kategorie: Proxy]]
 +
[[Kategorie: Squid]]
 +
[[Kategorie: iptables]]
 +
[[Kategorie: nftables]]
 
=Transparenter proxy=
 
=Transparenter proxy=
 
*Wenn man den http_port auf intercept für https auf https stellt kann er normal Anfragten nicht beantworten.
 
*Wenn man den http_port auf intercept für https auf https stellt kann er normal Anfragten nicht beantworten.
Zeile 5: Zeile 9:
 
=Installation von squid=
 
=Installation von squid=
 
;Wir brauchen eine angepasste Version von squid
 
;Wir brauchen eine angepasste Version von squid
;Diese können wir selbst komplilieren oder das squid-openssl Paket von nutzen
+
;Diese können wir selbst kompillieren oder das squid-openssl Paket von nutzen
 
*apt install squid-openssl
 
*apt install squid-openssl
 +
 
=Erstellen eines Selbstsignierten Zertifikates=
 
=Erstellen eines Selbstsignierten Zertifikates=
 
;Verzeichnis anlegen
 
;Verzeichnis anlegen
Zeile 15: Zeile 20:
 
*chown -R proxy:proxy squid_proxyCA.pem
 
*chown -R proxy:proxy squid_proxyCA.pem
 
*chmod 0400 squid_proxyCA.pem
 
*chmod 0400 squid_proxyCA.pem
;füge das squid_proxyCA-Zertifikat zum System hinzu, damit es standardmäßig vertrauenswürdig ist
+
;füge das squid_proxyCA-Zertifikat zum System hinzu, damit es standardmäßig vertrauenswürdig ist (optional)
 
*openssl x509 -inform PEM -in squid_proxyCA.pem -out squid_proxyCA.crt
 
*openssl x509 -inform PEM -in squid_proxyCA.pem -out squid_proxyCA.crt
 
*cp squid_proxyCA.crt /usr/local/share/ca-certificates
 
*cp squid_proxyCA.crt /usr/local/share/ca-certificates
Zeile 26: Zeile 31:
  
 
  ...
 
  ...
  http_port 3128 accel allow-direct
+
  http_port 3129 intercept
  https_port 3129 intercept ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem
+
  https_port 3130 intercept ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem
 
   
 
   
 
  ssl_bump peek all
 
  ssl_bump peek all

Aktuelle Version vom 12. September 2024, 10:32 Uhr

Transparenter proxy

  • Wenn man den http_port auf intercept für https auf https stellt kann er normal Anfragten nicht beantworten.
  • Wenn man beides will sollte man die Interception auf einen anderen zusätlichen Port legen.

Installation von squid

Wir brauchen eine angepasste Version von squid
Diese können wir selbst kompillieren oder das squid-openssl Paket von nutzen
  • apt install squid-openssl

Erstellen eines Selbstsignierten Zertifikates

Verzeichnis anlegen
  • mkdir /etc/squid/certs
  • cd /etc/squid/certs
Generieren Sie ein lokales selbstsigniertes CA-Zertifikat und geheimen Schlüssel (in derselben Datei))
  • openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout squid_proxyCA.pem -out squid_proxyCA.pem
  • chown -R proxy:proxy squid_proxyCA.pem
  • chmod 0400 squid_proxyCA.pem
füge das squid_proxyCA-Zertifikat zum System hinzu, damit es standardmäßig vertrauenswürdig ist (optional)
  • openssl x509 -inform PEM -in squid_proxyCA.pem -out squid_proxyCA.crt
  • cp squid_proxyCA.crt /usr/local/share/ca-certificates
  • update-ca-certificates

Splice Modus

  • Der Splice Modus weist Squid an den HTTPS-Verkehr nicht aufzubrechen
  • Dadurch ist eine reine Kontrolle der SNI durch die ACLs möglich ohne, dass ein Zertifikat generiert wird
  • vim /etc/squid/squid.conf
...
http_port 3129 intercept
https_port 3130 intercept ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem

ssl_bump peek all
ssl_bump splice all

Zertifikat auf den Clients installieren

!!!Wichtig Wichtig Wichtig!!!

  • squid_proxyCA.crt auf die Clients kopieren.
Firefox
  • Burgermenu
    • Einstellungen
      • Nach Zertifikaten suchen
        • Zertifikate anzeigen
          • Zertifizierungsstellen importieren

Zertifikats Cache anlegen

security_file_certgen — SSL certificate generator for Squid.
  • Das Generieren und Signieren von SSL-Zertifikaten nimmt Zeit in Anspruch.
  • Squid kann diesen Helfer als externen Prozess verwenden, um die Arbeit zu erledigen.
  • Die Kommunikation erfolgt über TCP-Sockets, die an die Loopback-Schnittstelle gebunden sind.
  • Dieser Helfer kann einen Festplattencache mit Zertifikaten verwenden, um die Antwortzeiten bei wiederholten Anforderungen zu verbessern.
  • Es kann auch ohne Cache arbeiten und generiert bei jeder Anfrage neue Zertifikate.
  • /usr/lib/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB
  • chown -R proxy:proxy /var/spool/squid

Squid Eintrag

  • cat /etc/squid/squid.conf
http_port 8889 intercept
Wichtig Wichtig https_port nicht http_port
#intercept https
https_port 8888 intercept ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE
ssl_bump bump all

Firewall

Iptables Kommando

  • iptables -t nat -A PREROUTING -j REDIRECT -i $LANDEV -p tcp --dport 80 --to 8889
  • iptables -t nat -A PREROUTING -j REDIRECT -i $LANDEV -p tcp --dport 443 --to 8888
  • iptables -A INPUT -p tcp --dport 8888 -s $LAN -m state --state NEW -j ACCEPT
  • iptables -A INPUT -p tcp --dport 8889 -s $LAN -m state --state NEW -j ACCEPT

nftables Version

  • vim /etc/nftables.conf
flush ruleset
...
table inet filter {
        chain input {
                type filter hook input priority filter; policy drop;
                iif lo accept
                ct state { established, related } accept
                ...
                iif $landev tcp dport { 3128, 3129 } accept
                ...
        }
...
}
...
table inet nat {
       chain prerouting {
               type nat hook prerouting priority -100;
               ...
               iif $landev tcp dport 80 redirect to 3128
               iif $landev tcp dport 443 redirect to 3129
               ...
       }
...
}