KEA Proxy PAC - Netzkwerk und Serveradministration: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Kategorie:DHCP Kategorie:Proxy = Proxy-Konfiguration via Kea DHCP (WPAD) = == Übersicht == WPAD (Web Proxy Auto-Discovery Protocol) ermöglicht es,…“)
 
 
Zeile 543: Zeile 543:
 
* Active Directory und Group Policy Objects können für zusätzliche Sicherheit verwendet werden
 
* Active Directory und Group Policy Objects können für zusätzliche Sicherheit verwendet werden
 
* Zugriff auf wpad.dat auf vertrauenswürdige Netzwerke beschränken
 
* Zugriff auf wpad.dat auf vertrauenswürdige Netzwerke beschränken
 
== Siehe auch ==
 
 
* [[Kea DHCP Server einrichten]]
 
* [[Squid Proxy Server]]
 
* [[Apache Webserver Konfiguration]]
 

Aktuelle Version vom 20. Oktober 2025, 07:50 Uhr


Proxy-Konfiguration via Kea DHCP (WPAD)

Übersicht

WPAD (Web Proxy Auto-Discovery Protocol) ermöglicht es, Proxy-Einstellungen automatisch an Clients zu verteilen. Über DHCP Option 252 wird die URL zu einer PAC-Datei (Proxy Auto-Config) übertragen, die die Browser automatisch herunterladen und konfigurieren.

Vorteile von WPAD

  • Zentrale Proxy-Konfiguration für alle Netzwerk-Clients
  • Keine manuelle Browser-Konfiguration auf jedem Client notwendig
  • Einfache Änderung der Proxy-Einstellungen durch Aktualisierung der PAC-Datei
  • Unterstützung durch die meisten modernen Browser

DHCP-Option für Proxy

  • Option 252 (DHCPv4): WPAD - Web Proxy Auto-Discovery
  • Format: String (URL zur PAC-Datei)
  • Definiert in draft-ietf-wrec-wpad-01

Voraussetzungen

PAC-Datei direkt auf Squid bereitstellen

Squid kann die PAC-Datei selbst ausliefern, ohne separaten Webserver.

Squid Installation

  • sudo apt install squid

PAC-Datei erstellen

  • sudo mkdir -p /usr/share/squid/wpad
  • sudo vim /usr/share/squid/wpad/wpad.dat

Beispiel PAC-Datei:

function FindProxyForURL(url, host) {
    // Lokale Adressen - kein Proxy
    if (isPlainHostName(host) ||
        shExpMatch(host, "*.local") ||
        isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
        isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
        isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
        isInNet(dnsResolve(host), "127.0.0.0", "255.0.0.0"))
        return "DIRECT";
    
    // Alle anderen Adressen über Proxy
    return "PROXY 10.88.1XX.100:3128; DIRECT";
}

Berechtigungen setzen

  • sudo chmod 644 /usr/share/squid/wpad/wpad.dat
  • sudo chown proxy:proxy /usr/share/squid/wpad/wpad.dat

Squid-Konfiguration

  • sudo vim /etc/squid/squid.conf

Komplette Konfiguration:

# ACL für lokales Netzwerk
acl localnet src 10.88.1XX.0/24
acl localnet src 172.16.1XX.0/24

# SSL-Ports
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl CONNECT method CONNECT

# ACL für PAC-Datei-Anfragen
acl wpad_request urlpath_regex ^/wpad\.dat$
acl wpad_request urlpath_regex ^/wpad\.da$
acl wpad_request urlpath_regex ^/proxy\.pac$

# Zugriff verweigern für nicht sichere Ports
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# Zugriff auf PAC-Datei erlauben (MUSS vor anderen Regeln stehen)
http_access allow wpad_request

# Zugriff erlauben für lokales Netzwerk
http_access allow localnet
http_access allow localhost

# Alles andere verweigern
http_access deny all

# Proxy-Port
http_port 3128

# Zusätzlicher Port für PAC-Datei auf Port 80
http_port 80 accel defaultsite=proxy.it1XX.int no-vhost

# PAC-Datei-Verzeichnis als Cache-Peer
cache_peer localhost parent 80 0 no-query originserver name=wpad

# Cache-Verzeichnis
cache_dir ufs /var/spool/squid 100 16 256

# Hostname
visible_hostname proxy.it1XX.int

# PAC-Datei aus lokalem Verzeichnis ausliefern
http_port 8080
acl pac_path urlpath_regex ^/(wpad\.dat|wpad\.da|proxy\.pac)$
http_access allow pac_path

Vereinfachte Alternative - Squid liefert PAC auf Port 8080:

# ACL für lokales Netzwerk
acl localnet src 10.88.1XX.0/24
acl localnet src 172.16.1XX.0/24

# SSL-Ports
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl Safe_ports port 8080        # PAC-Datei Port
acl CONNECT method CONNECT

# Zugriff verweigern für nicht sichere Ports
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# Zugriff erlauben für lokales Netzwerk
http_access allow localnet
http_access allow localhost

# Alles andere verweigern
http_access deny all

# Proxy-Port
http_port 3128

# Port für PAC-Datei
http_port 8080

# Cache-Verzeichnis
cache_dir ufs /var/spool/squid 100 16 256

# Hostname
visible_hostname proxy.it1XX.int

Webserver-Modul für PAC-Datei

Da Squid selbst keine statischen Dateien gut ausliefert, ist ein minimaler Webserver empfohlen:

  • sudo apt install lighttpd
  • sudo vim /etc/lighttpd/lighttpd.conf
server.modules = (
    "mod_access",
    "mod_accesslog"
)

server.document-root = "/usr/share/squid/wpad"
server.port = 8080
server.username = "www-data"
server.groupname = "www-data"

mimetype.assign = (
    ".dat" => "application/x-ns-proxy-autoconfig",
    ".pac" => "application/x-ns-proxy-autoconfig",
    ".da" => "application/x-ns-proxy-autoconfig"
)
  • sudo systemctl enable lighttpd
  • sudo systemctl start lighttpd

Squid starten

  • sudo systemctl enable squid
  • sudo systemctl restart squid

PAC-Datei testen

Erwartete Ausgabe:

HTTP/1.1 200 OK
Content-Type: application/x-ns-proxy-autoconfig
Content-Length: XXX
Date: Mon, 20 Oct 2025 15:00:00 GMT
Server: lighttpd

Kea DHCP Konfiguration

Benutzerdefinierte Option definieren

Da Option 252 keine Standard-Option in Kea ist, muss sie zuerst definiert werden.

  • sudo vim /etc/kea/kea-dhcp4.conf
{
  "Dhcp4": {
    "interfaces-config": {
      "interfaces": [ "enp0s3" ]
    },
    "lease-database": {
      "type": "memfile",
      "persist": true,
      "name": "/var/lib/kea/dhcp4.leases"
    },
    "valid-lifetime": 600,
    "max-valid-lifetime": 7200,
    
    "option-def": [
      {
        "name": "wpad",
        "code": 252,
        "type": "string"
      }
    ],
    
    "option-data": [
      {
        "name": "domain-name-servers",
        "data": "10.88.1XX.21"
      },
      {
        "name": "domain-name",
        "data": "it1XX.int"
      },
      {
        "name": "domain-search",
        "data": "it1XX.int, example.com"
      },
      {
        "name": "wpad",
        "data": "http://10.88.1XX.21/wpad.dat"
      }
    ],
    
    "subnet4": [
      {
        "subnet": "172.16.1XX.0/24",
        "pools": [
          {
            "pool": "172.16.1XX.50 - 172.16.1XX.100"
          }
        ],
        "option-data": [
          {
            "name": "routers",
            "data": "172.16.1XX.1"
          }
        ]
      }
    ],
    "loggers": [
      {
        "name": "kea-dhcp4",
        "output_options": [
          {
            "output": "/var/log/kea/kea-dhcp4.log"
          }
        ],
        "severity": "INFO"
      }
    ]
  }
}

Subnet-spezifische WPAD-Konfiguration

Verschiedene PAC-Dateien für unterschiedliche Subnetze:

{
  "Dhcp4": {
    "option-def": [
      {
        "name": "wpad",
        "code": 252,
        "type": "string"
      }
    ],
    "option-data": [
      {
        "name": "wpad",
        "data": "http://10.88.1XX.21/wpad.dat"
      }
    ],
    "subnet4": [
      {
        "subnet": "172.16.1XX.0/24",
        "option-data": [
          {
            "name": "routers",
            "data": "172.16.1XX.1"
          },
          {
            "name": "wpad",
            "data": "http://10.88.1XX.21/wpad-admin.dat"
          }
        ]
      },
      {
        "subnet": "10.88.1XX.0/24",
        "option-data": [
          {
            "name": "routers",
            "data": "10.88.1XX.1"
          }
        ]
      }
    ]
  }
}

In diesem Beispiel:

  • Subnet 172.16.1XX.0/24 verwendet eine spezielle PAC-Datei (wpad-admin.dat)
  • Subnet 10.88.1XX.0/24 verwendet die globale PAC-Datei (wpad.dat)

Dienst neu starten

  • Konfiguration testen
  • sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
  • Dienst neu starten
  • sudo systemctl restart kea-dhcp4-server
  • Status prüfen
  • sudo systemctl status kea-dhcp4-server

Client-Konfiguration (Linux)

Firefox

  • Firefox öffnen → Einstellungen → Allgemein → Netzwerk-Einstellungen
  • Proxy-Konfiguration automatisch erkennen auswählen

oder manuell:

Chrome/Chromium

Chrome verwendet die System-Proxy-Einstellungen.

GNOME Desktop

KDE Plasma

  • Systemeinstellungen → Netzwerk → Einstellungen → Proxy
  • Proxy automatisch erkennen aktivieren

oder

Kommandozeile (für alle Desktops)

Umgebungsvariablen setzen in ~/.bashrc oder /etc/environment:

export http_proxy="http://10.88.1XX.100:3128"
export https_proxy="http://10.88.1XX.100:3128"
export no_proxy="localhost,127.0.0.1,*.local,*.it1XX.int,10.*,172.16.*,192.168.*"

Für APT (Debian/Ubuntu):

  • sudo vim /etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "http://10.88.1XX.100:3128";
Acquire::https::Proxy "http://10.88.1XX.100:3128";

Überprüfung auf dem Client (Linux)

DHCP-Lease prüfen

  • cat /var/lib/dhcp/dhclient.leases | grep 252

oder

  • sudo dhclient -v

Browser-Test

Firefox

  • about:config aufrufen
  • Suchen nach: network.proxy

Sollte anzeigen:

Chrome

  • chrome://net-internals/#proxy aufrufen

Sollte die PAC-Datei und aktuelle Proxy-Einstellungen anzeigen

PAC-Datei manuell testen

Im Browser direkt die URL eingeben:

Die JavaScript-Datei sollte angezeigt werden.

Kommandozeile Test

DNS-basierte WPAD (Alternative/Ergänzung)

Zusätzlich zu DHCP kann WPAD auch über DNS funktionieren. Browser versuchen zuerst DHCP und dann DNS.

DNS-Eintrag erstellen

  • A-Record: wpad.it1XX.int → 10.88.1XX.100
  • CNAME: wpad → proxy.it1XX.int

Die PAC-Datei muss dann unter dieser URL erreichbar sein:

Browser-Kompatibilität (Linux)

Browser DHCP Option 252 DNS WPAD Hinweise
Firefox Teilweise (ab Version 88+) Ja Bevorzugt manuelle Konfiguration oder DNS
Chrome/Chromium Teilweise Ja Verwendet System-Proxy-Einstellungen
Epiphany (GNOME Web) Ja Ja Verwendet System-Proxy-Einstellungen
Konqueror Ja Ja Verwendet KDE-System-Einstellungen
Links/Lynx/w3m Nein Nein Nur manuelle Umgebungsvariablen

Hinweis: Die meisten Linux-Browser unterstützen DNS-WPAD besser als DHCP Option 252. Beide Methoden sollten konfiguriert werden.

Wichtige Hinweise

  • Option 252 überträgt eine URL zur Proxy-Konfiguration
  • Die PAC-Datei muss den richtigen MIME-Type haben: application/x-ns-proxy-autoconfig
  • Für DNS-WPAD muss die Datei wpad.dat heißen
  • WPAD ist kein offizieller Internet-Standard, wird aber weitgehend unterstützt
  • Aus Sicherheitsgründen sollte die PAC-Datei über HTTPS bereitgestellt werden (empfohlen für Produktivumgebungen)
  • Die URL in Option 252 sollte eine IP-Adresse oder einen vollqualifizierten Domainnamen enthalten

Troubleshooting

Client erhält keine WPAD-Konfiguration

  • DHCP-Lease erneuern:
  • sudo dhclient -r && sudo dhclient
  • Kea-Logs prüfen:
  • sudo journalctl -u kea-dhcp4-server -n 50
  • Option 252 im DHCP-Lease prüfen:
  • cat /var/lib/dhcp/dhclient.leases | grep -A5 -B5 252

PAC-Datei nicht erreichbar

  • Webserver-Status prüfen:
  • sudo systemctl status apache2
  • Firewall-Regeln prüfen:
  • sudo iptables -L -v -n | grep 80

Browser verwendet Proxy nicht

  • Browser-Cache leeren
  • Browser neu starten
  • Proxy-Einstellungen zurücksetzen
  • In Firefox: about:config → network.proxy.autoconfig_url prüfen

Squid Proxy funktioniert nicht

  • Squid-Logs prüfen:
  • sudo tail -f /var/log/squid/access.log
  • sudo tail -f /var/log/squid/cache.log
  • Squid-Konfiguration testen:
  • sudo squid -k parse
  • Port-Check:
  • sudo ss -tlnp | grep 3128

Sicherheitsüberlegungen

  • PAC-Dateien können manipuliert werden - HTTPS verwenden
  • DNS-Spoofing-Angriffe auf WPAD möglich - DNSSEC verwenden
  • Active Directory und Group Policy Objects können für zusätzliche Sicherheit verwendet werden
  • Zugriff auf wpad.dat auf vertrauenswürdige Netzwerke beschränken