Transcript
Page 1: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

DHCP, Security undNetzwerkboot

Konstantin Agouros

SLAC 06/Berlin

Page 2: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Übersicht

• DHCP Geschichte• Wie funktioniert DHCP?• Implementierungen• ISC-DHCP-Daemon Details• Sicherheitsaspekte• Netzwerkboot Sun/Jumpstart• PXE• Live-Demo

Page 3: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

DHCP-Geschichte

• Am Anfang war die statische Adresse• RARP

– RPC-Bootparam

• Bootp• DHCP

Page 4: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

RFCs

• RFC 951 Bootp• RFC 1541 1. DHCP RFC• RFC 1542 DHCP “Klarstellungen”• RFC 2131 aktueller DHCP RFC• RFC 2132 “offizielle” DHCP Optionen und Bootp

Vendoroptionen• RFC 2485 DHCP und Open Group Authentisieung• RFC 2489 Verfahren zur Verabschiedung neuer Optionen• RFC 3670 „Unbenutzte Optionen“

Page 5: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Sinn und Zweck

• Client sucht seine Netzwerkkonfiguration– IP-Adresse– Router– DNS Konfiguration– Bootfile– LDAP-Server– ...

• Server stellt diese bereit– Abhängig vom Teilnetz– Abhängig vom Clienttyp– Abhängig vom Host

Page 6: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Funktionsweise

Discover

Offer

Request

Ack

Page 7: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Funktionsweise 3

• Verkürzter Verlauf (Renewal):– REQUEST– ACK

• Verweigerung des Servers:– DISCOVER/REQUEST– NAK

• Verweigerung des Clients– OFFER– DECLINE

• Ordentliches Herunterfahren– RELEASE

Page 8: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Relaying

Page 9: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Implementierungen

• ISC-DHCP-Daemon• Sun Solaris DHCP Daemon• udhcpd• Windows

Page 10: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

ISC-DHCP-Daemon

• Flexibelster Daemon• Bestandteil der meisten Linux Distributionen• Datenhaltung in ASCII• Gruppierung von Clients aufgrund von

– Netz in dem sie stehen– Mitgesendeter VendorID– Hardwaretyp– Frei definierbare Gruppen aufgrund von Hardware Prefixen

• HA-Modus• DNS-Updates• “Authoritative”

Page 11: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Security

• Grundproblem: Wer bekommt eine Adresse und wer darfüberhaupt an das Netzwerk

• Kontrolle im DHCP-Daemon über HW-Whitelist– Problem: MAC-Adressen können gefälscht werden– Hoher Verwaltungsaufwand, da jede MAC-Adresse eingepflegt

werden muss

• Monitoring mit arpwatch– Führt Buch über alle erscheinenden MAC-Adressen– Führt Buch über MAC-zu-IP Bindung– Gibt Warnmeldungen aus oder schickt Emails

Page 12: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Security 2

• DoS durch– Adresspool Erschöpfung– Überlast durch “viele” Request/Release Pakete

• Man in the Middle Angriffe

Page 13: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

„Sichere“ Konfiguration im ISC-DHCP-Daemon

subnet 192.168.1.0 netmask 255.255.255.0 { authoritative; pool 192.168.1.10 192.168.1.20; deny unknown clients;}

host host1 { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.1.10;}…

Page 14: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

IEEE 802.1X

• Zugang zum Netz ist Zertifikats Authentisiert• 802.1X beschreibt ein Protokoll, wie auf Ethernet Ebene

der Client seinen Zugang zum (W)LAN mit einem lokalinstallierten Zertifikat berechtigt

• Erfordert Unterstützung auf dem Client OS und demSwitch/WLAN-AP

• Benötigt Radius-Server bei dem die Netzwerk-HWnachfragt

Page 15: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

DNS-Updates vs. Sicherheit

• DHCP-Clients können dynamisch auf dem DNS-Servereingetragen werden– Dies geschieht entweder durch den Server oder Client macht dies

selbst– Forward und Reverse RRs werden eingetragen

• Der DNS-Server muß dies erlauben– Durch IP-Adress-basierende ACL unsicher– Durch Shared Secret mit dem “Updater” sicherer

• Sicherste Variante: Updates durch den DHCP-Server derein Shared Secret mit dem DNS-Server teilt.

• Bei Microsoft ADS Umgebungen macht alles der Client

Page 16: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

DNS-Updates und Risiken

• Wird ohne Überprüfung überschrieben sind “Man in themiddle” Attacken möglich

• ISC-DHCP-Daemon prüft nur, ob der Name existiert,nicht, ob der erzeugte Eintrag RFC konform ist– Die falschen Sonderzeichen im Hostnamen führen zu einer

illegalen Zone– Beim Restart des Nameservers wird die Zone nicht geladen

Page 17: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

ISC-DHCP-Konfiguration für DNS-Update

key DHCP-KEY \{ algorithm hmac-md5; secret "pjGqiQBjQUXELdUyP4lPzA=="; \}

In dhcpd.conf und named.conf

In Forward und Reversezone:

allow-update { key DHCP-KEY; };

Page 18: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

ISC-DHCP-Konfiguration für DNS-Update 2

In dhcpd.conf: zone example.com.de { primary 127.0.0.1; key DHCP-KEY; };

zone 1.168.192.in-addr.arpa { primary 127.0.0.1; key DHCP-KEY;; }; ddns-update-style interim;

Weitere Steuerung möglich.

Page 19: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Netzwerkboot allgemein

• Im einfachsten Fall nur das Bootimagefilename “vmlinux”;

• Wenn ein anderer Bootserver notwendig ist, diesenangeben

next-server 192.168.1.2;

Page 20: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Netzwerkboot Jumpstart

• Jedes OS mit DHCP und NFS-Server kann JumpstartServer sein– Linux benötigt einen Kernel-Patch im NFS-Daemon, für

Schreibzugriff auf Char-Device Files

• Die Notwendigen Optionen können auch im ISC-DHCPdgesetzt werden

• Aufsetzen des Dateibaumes am einfachsten unter Solarisund dann kopieren

Page 21: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Netzwerkboot Jumpstart 2

• Benutzt den Vendor-Option-Space SUNW• Sun Zur Erkennung schicken die Systeme eine Vendor-

Client-ID SUNW mit• Jedes SUN-Modell hängt eine Hardwarekennung an

(Ultra1, Ultra30 etc)– uname -i zeigt die richtige Schreibweise

• Standardoptionen die notwendig sind:– filename

– Ggfs. next-server

Page 22: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Netzwerkboot Jumpstart Vendor Options

Definition des Vendorspaces und der Optionen darunter: option space SUNW; option SUNW.root-mount-options code 1 = text; option SUNW.root-server-ip-address code 2 = ip-address; option SUNW.root-server-hostname code 3 = text; option SUNW.root-path-name code 4 = text; option SUNW.boot-file-path code 7 = text; option SUNW.posix-timezone-string code 8 = text; option SUNW.boot-read-size code 9 = unsigned integer 16; option SUNW.install-server-ip-address code 10 = ip-

address; option SUNW.install-server-hostname code 11 = text; option SUNW.install-path code 12 = text; option SUNW.sysid-config-file-server code 13 = text; option SUNW.terminal-name code 15 = text;

Page 23: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Netzwerkboot Jumpstart Vendor Options

Filtern der Clients:Vendor-Client-ID beginnt mit “SUNW”:

class "sun-clients" { match if substring (option vendor-class-identifier,

0, 4) = "SUNW"; vendor-option-space SUNW;

...

Page 24: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Netzwerkboot Jumpstart Vendor Options

Setzen der Werte: option SUNW.sysid-config-file-server

"192.168.1.8:/export/jumpstart/sysidcfg"; option SUNW.install-server-ip-address 192.168.1.8; option SUNW.install-path "/export/jumpstart/install"; option SUNW.root-server-ip-address 192.168.1.8; option SUNW.root-path-name "/export/jumpstart/boot"; option SUNW.posix-timezone-string "MET"; option SUNW.terminal-name "xterm"; next-server 192.168.1.8; if option vendor-class-identifier = "SUNW.Ultra-1" { filename "inetboot.32"; } else { filename "inetboot.64"; }

Page 25: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Netzwerkboot PXE einfach

• filename und next-server genügen• Bootloader möglich• PXEGRUB

– Abhängig von Netzwerkkarte

• PXELINUX– Bootet überall– Erweiterungen vorhanden, um beliebige Floppyimages zu booten– memtest86 lässt sich direkt starten

• Erkennung von PXE-Clients aufgrund der VendorID:PXEClient:Arch:00000:UNDI:002001

Page 26: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Netzwerkboot PXE einfach Beispielconfig

class "PXE-Clients" { match if substring (option vendor-class-identifier, 0, 9) ="PXEClient";

filename “pxelinux.0”; next-server 192.168.1.5;

}

Page 27: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

PXE für Fortgeschrittene

• Preboot eXecution Environment• Spezifikation von Intel• Handshakes und Bootmenus möglich• “Proxy-DHCP-Server” auf Port 4011• Erfordert hohe Flexibilität des DHCP-Daemons

Page 28: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

PXE Funktionsweise

Discover

Offer

Request

Ack

Boot Service Discover

Boot Service Reply

TFTP

Page 29: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

PXE Konfiguration mit Bootmenu

• Benötigt ein Array mit Einträgen die mehrere Typen haben• ISC-DHCP-Daemon kann dies im Prinzip aber nicht beim

Typ String• Daher Konfiguration in HEX-Strings für das Menu

Page 30: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

PXE Bootmenu

option vendor-encapsulated-options 06: 01: 06: 08: 1c: 00:00: 01: 0a:0a:FF:FB: 00:03: 01: 0A:0A:FF:FB: 00:01: 01: 0A:0A:FF:FB: 00:02: 01: 0A:01:FF:FB: 09: 29: 00:00: 0a: 4c:6f:63:61:6c:20:62:6f:6f:74: 00:03: 07: 53:6F:6c:61:72:69:73: 00:01: 05: 4c:69:6e:75:78: 00:02: 07: 57:69:6e:64:6f:77:73: 0A: 44: 1E: 50:72:65:73:73:20:3c:46:38:3e:20:6f:72:20:3c:4d: 3e:20:66:6f:72:20:6d:65:6e:75:2e:20:20:50:72:65:

Page 31: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

PXE Bootmenu Auswertung

• Die Eingabe des Benutzers muss verarbeitet werden• Darüber erfolgt dann die Angabe des zu bootenden

Images• Daten stehen im Vendor Option Space der vom Client

gesendeten Anfrage• Auswertung in HEX

Page 32: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

PXE Bootmenu Auswertung

if option vendor-encapsulated-options =47:04:00:01:00:00:FF {

filename "pxelinux.0"; ...} elsif option vendor-encapsulated-options =

47:04:00:03:00:00:FF { filename "/pxegrub-solaris"; ...}

Page 33: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

PXE Bootmenu Probleme

• PXE in Netzwerkkarten ist Buggy• PXEGRUB von Solaris 10 kommt in der Regel nicht damit

zurecht.

Page 34: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Q&A

Page 35: DHCP, Security und Netzwerkboot - heinlein-support.de · RFCs •RFC 951 Bootp •RFC 1541 1. DHCP RFC •RFC 1542 DHCP “Klarstellungen” •RFC 2131 aktueller DHCP RFC •RFC

Live Demo


Recommended