i pals&Co. & mit -Firewalls

open source library open source library

Open Source Software wird gegenüber kommerziellen Lösungen immer wichtiger. Addison-Wesley trägt dieser Entwicklung Rechnung mit den Büchern der Open Source Library. Administratoren, Entwickler und User erhalten hier professionelles Know-how, um freie Software effizient einzusetzen. Behandelt werden sowohl Themen wie Betriebs- systeme, Netzwerke und Sicherheit als auch Programmierung.

Eine Auswahl aus unserem Programm:

Dieses Buch zeigt, wie mit den Bordmitteln jeder Linux- Distribution – z. B. 2.0 – auf einem Linux-Server ein professionelles System zur Einbruchserkennung und -Verhinderung aufgesetzt wird. Der Autor erläutert die Anwendung von IDS auf komplexe Netzwerke, beschreibt die Arbeit mit den wichtigsten Tools (Tripwire und Snort) zur System- und Netzwerküberwachung, schildert ausführlich die Analyse der gewonnenen Daten sowie ihre Interpretation und gibt Richtlinien für die Prävention und die richtige Reaktion im Ernstfall. Er beschreibt außerdem die technischen und formalen Voraussetzungen für den Einsatz eines IDS, zeigt Grenzen auf und warnt vor juristischen Fallstricken. Ralf Spenneberg Intrusion Detection und Prevention mit Snort 2 & Co ISBN-13: 978-3-8273-2134-3 ISBN-10: 3-8273-2134-4 840 Seiten Euro 59,95 (D), 61,70 (A)

Dieses Buch beschreibt fokussiert und übersichtlich, wie SpamAssassin auf- und eingesetzt wird, um Spam erfolgreich abzuwehren. Der Autor schafft mit der Beschreibung verschiedener Abwehr-Verfahren zunächst die theoretischen Grundlagen, bevor er detailliert deren Umsetzung mit SpamAssassin beschreibt. Von der Zusammenarbeit mit verschiedenen Mailservern wie sendmail, qmail, postfix und exim über die dynamische Optimierung der Filter bis hin zu Performancefragen werden alle Aspekte der SpamAssassin-Praxis behandelt.

Alistair McDonald SpamAssassin ISBN-13: 978-3-8273-2205-0 ISBN-10: 3-8273-2205-7 288 Seiten Euro 39,95 (D), 41,10 (A) ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library Die Deutsche Bibliothek – CIP-Einheitsaufnahme

Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über abrufbar.

Die Informationen in diesem Produkt werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht ausgeschlossen werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Für Verbesserungsvorschläge und Hinweise auf Fehler sind Verlag und Herausgeber dankbar.

Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Die gewerbliche Nutzung der in diesem Produkt gezeigten Modelle und Arbeiten ist nicht zulässig.

Fast alle Hardware- und Softwarebezeichnungen und weitere Stichworte und sonstige Angaben, die in diesem Buch verwendet werden, sind als eingetragene Marken geschützt. Da es nicht möglich ist, in allen Fällen zeitnah zu ermitteln, ob ein Markenschutz besteht, wird das ® Symbol in diesem Buch nicht verwendet.

Umwelthinweis: Dieses Produkt wurde auf chlorfrei gebleichtem Papier gedruckt.

10987654321

08 07 06

ISBN-13: 978-3-8273-2136-7 ISBN-10: 3-8273-2136-0

c 2006 by Addison-Wesley Verlag, ein Imprint der Pearson Education Deutschland GmbH, Martin-Kollar-Straße 10–12, D-81829 München/Germany Alle Rechte vorbehalten Einbandgestaltung: Marco Lindenbeck, webwo GmbH ([email protected]) Lektorat: Boris Karnikowski, [email protected] Korrektorat: Friederike Daenecke, Zülpich Fachkorrektorat: Wilhelm Dolle, Berlin Herstellung: Monika Weiher, [email protected] Satz: LE-TEX Jelonek, Schmidt & Vöckler GbR, Leipzig Druck und Verarbeitung: Kösel, Krugzell (www.KoeselBuch.de) Printed in Germany IchDichauch;-) ü Claudia Für

open source library

1Znrl Zeitsynchronisation Zentrale 11 Protokollserver Zentrale 10 Werkzeuge IV Teil 9AufbaueinerDMZ lokale Eine 8 Firewall-Konfigurationen Typische III Teil -Prevention-Systeme und Intrusion-Detection- 7 6H Iptables ä mit Firewall einfache Eine r t5 Einführung – Iptables u mit Firewalls n II Teil ge i n e sL i n u x Firewall-Technologien -2 S y1Firewall-Geschichte s t Firewall-Grundlagen e I Teil m s Einleitung Vorwort Inhaltsübersicht erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 Firewall-Architekturen 3 ...... 241 ...... 143 ...... 81...... 31...... 165 ...... 51...... 33...... 185 ...... 171 37...... 45...... 41...... 215 169 213 79 35

open source library open source library 8nf-HiPAC 28 2.6.14 Kernel und Nfnetlink 27 Firewalls Hochverfügbare 26 Ipset 25 Protokollierung Fortgeschrittene 24 /proc-Dateisystem Das 23 Raw-Tabelle Die 22 Mangle-Tabelle Die 21 NAT-Tabelle Die 20 Tracking Connection 19 -O-Matic 18 Standardziele Alle 17 Iptables-Standardtests Die 16 Konfiguration Fortgeschrittene V Teil -werkzeuge und Testmethoden 15 Distributionswerkzeuge 14 Administrationsoberflächen 13 Protokollanalyse 12 8 ...... 469 ...... 359 ...... 489 ...... 273 ...... 319 ...... 451 ...... 461 ...... 493 ...... 251 ...... 425 ...... 411 ...... 383 ...... 427 ...... 421 ...... 375 ...... 401 ...... 297 Inhaltsübersicht 357 Inhaltsübersicht library

Teil VI Transparente Firewalls 495

29 ProxyARP ...... 497 open source

30 Iptables auf einer Bridge ...... 501

31 Ebtables ...... 507

Teil VII Protokolle und Applikationen 519

32 Behandlung einzelner Protokolle ...... 521

33 IPsec ...... 559

34 ICMP ...... 569

35 IPv6 ...... 587

A Postfix-E-Mail-Relay ...... 591

BFirewall-Skript...... 595

C Netzwerkgrundlagen ...... 599

Literaturverzeichnis ...... 629

Stichwortverzeichnis ...... 631

Über den Autor ...... 643

9

1Firewall-Geschichte Firewall-Grundlagen I Einleitung Vorwort Inhaltsverzeichnis Firewall-Technologien 2 erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 Firewall-Architekturen 3 . e Morris-Wurm Der Internets des Anfang 1.2 Der 1.1 . i rt Firewall erste Die 1.3 . ewr drs Translation Address Network 2.5 (Proxy) Application-Level-Gateway 2.4 Relay Curcuit 2.3 Paketfilter Zustandsorientierte 2.2 . ieal heute Firewalls 1.4 . Paketfilter 2.1 . nrie n Motivation und Angreifer 4.1 Architektur der Wahl 3.4 DMZ Multiple 3.3 . Screening- 3.1 . DMZ 3.2 ...... Mitbewerber 4.1.4 Insider 4.1.3 Script-Kiddies Hacker klassische 4.1.2 Der 4.1.1 ...... 52 ...... 37 ...... 51 ...... 43 ...... 42 ...... 51 ...... 43 ...... 31...... 51...... 46 ...... 33...... 41 ...... 42 ...... 48 ...... 37...... 41...... 45...... 38 ...... 38 ...... 39 ...... 48 ...... 53 ...... 52 ...... 45 ...... 35

open source library open source library ieenah iealmtIptables mit Firewall einfache Eine 5 Einführung – Iptables mit Firewalls II 12 . Angriffsmethoden 4.4 Schutzziele 4.3 Entwicklungen und Tendenzen 4.2 . h rtsFirewall-Skript erstes Ihr Filter-Tabelle die und 5.3 Iptables-Befehl Der Iptables 5.2 und Netfilter 5.1 . oncinTakn n Netzwerkverbindungen und Tracking Connection Boot-Prozess den 5.5 in Einbindung 5.4 . Filter-Regeln 5.6 . i A-ael n -Regeln und NAT-Tabelle Die 5.7 .. ece cuzbee ieFirewall? eine bietet Schutz Welchen 4.4.8 SQL-Injektion 4.4.7 Race-Condition 4.4.6 Formatstring-Angriffe 4.4.5 Bufferoverflow 4.4.4 Hijacking Session 4.4.3 Spoofing 4.4.2 (DoS) Denial-of-Service 4.4.1 .. errse n raiireKriminalität organisierte und Terroristen 4.1.6 Geheimdienste 4.1.5 .. Fehlersuche 5.3.1 .. palsudConntrack und Iptables Masquerading 5.5.6 und ICMP 5.5.5 und IPchains TCP 5.5.4 und IPchains UDP 5.5.3 und IPchains IPchains Paketfilter zustandslose 5.5.2 Der 5.5.1 ...... 55 ...... 57 ...... 75 ...... 66 ...... 81 ...... 71 ...... 53 ...... 89 ...... 81...... 64 ...... 105...... 103...... 109...... 121...... 70 ...... 54 ...... 58 ...... 110...... 100...... 110...... 82 ...... 77 ...... 59 ...... 102...... 119...... 53 ...... 98 ...... 102...... Inhaltsverzeichnis 79 Inhaltsverzeichnis library

5.7.1 Source-NAT ...... 122 5.7.2 Destination-NAT ...... 126 open source 5.7.3 NAT-Beispiel ...... 127 5.8 Die Mangle-Tabelle ...... 131 5.9 Die Raw-Tabelle ...... 132 5.10 Einstellungen des Kernels ...... 133 5.11 Protokollierung ...... 136 5.12 Test der Firewall ...... 139

6HärtungeinesLinux-Systems...... 143 6.1 Warum sollte eine Firewall gehärtet werden? ...... 143 6.2 Installation des Linux-Systems ...... 144 6.3 Updates ...... 146 6.3.1 -Updates ...... 147 6.3.2 SUSE-Updates ...... 147 6.3.3 Red Hat-Updates ...... 147 6.3.4 Fedora Core-Updates ...... 147 6.4 Deaktivieren überflüssiger Dienste ...... 147 6.4.1 Startskripten ...... 149 6.4.2 Internet-Super-Server ...... 149 6.4.3 Cron-Daemon ...... 150 6.5 Entfernen überflüssiger Software ...... 151 6.6 Sicherheit auf Dateisystemebene ...... 152 6.7 Sicherheit beim Bootvorgang ...... 154 6.8 Bastille-Linux ...... 155 6.9 Mandatory-Access-Control-Systeme (MAC) ...... 161

7 Intrusion-Detection- und -Prevention-Systeme ...... 165 7.1 Intrusion-Detection-Systeme ...... 165 7.2 Intrusion-Prevention-Systeme ...... 167

13 open source library 1Znrl Zeitsynchronisation Zentrale 11 Protokollserver Zentrale 10 Werkzeuge IV Firewall lokale Eine 8 Firewall-Konfigurationen Typische III 14 9AufbaueinerDMZ 13Sicherheit 11.3 ntpd-Zeitserver Der 11.2 NTP Zeitsynchronisationsprotokoll Das 11.1 Syslog-ng 10.3 Syslog Modular 10.2 Protokollservers zentralen eines Einrichtung 10.1 Owner-Match Der 8.3 Ketten Die Firewall? lokale 8.2 eine Wieso 8.1 . obnto i Gateway-Regeln mit Kombination 8.4 . M i wiPaketfiltern zwei mit DMZ 9.4 Ketten benutzerdefinierten mit Optimierung DMZ mit 9.3 Paketfilter Dreibeiniger 9.2 DMZ-Architekturen 9.1 132AymticeAuthentifizierung Asymmetrische 11.3.2 Authentifizierung Symmetrische 11.3.1 von Konfiguration 10.2.2 Msyslogd des Installation 10.2.1 122DrServer Der 11.2.2 Client Der 11.2.1 .. e neePaketfilter innere Der Paketfilter 9.4.2 äußere Der 9.4.1 .. nedn e euzrenetnKetten benutzerdefinierten der Anwendung 9.3.1 ...... 219...... 245...... 242...... 242...... 185...... 241 msyslogd ...... 204...... 171...... 209...... 206...... 181...... 186...... 220...... 220...... 241...... 228...... 246...... 247...... 215...... 195...... 245...... 173...... 171 ...... 215 ...... 185 ..... 178...... 199...... Inhaltsverzeichnis 169 213 Inhaltsverzeichnis library

12 Protokollanalyse ...... 251 12.1 Fwlogwatch ...... 251 open source 12.1.1 Installation von Fwlogwatch ...... 251 12.1.2 Konfiguration von Fwlogwatch ...... 252 12.2 IP Tables State (IPTState) ...... 263 12.3 Webfwlog Firewall Log Analyzer ...... 265 12.4 Scanulog und ulog-acctd ...... 267 12.5 Nulog ...... 270 12.6 EpyLog Log Analyzer ...... 271

13 Administrationsoberflächen ...... 273 13.1 Firewall Builder ...... 273 13.2 ...... 283 13.3 (Shoreline Firewall) ...... 287 13.3.1 Das Shorewall-Konzept ...... 288 13.3.2 Die Shorewall-Dateien ...... 292 13.3.3 Weitere Shorewall-Eigenschaften ...... 295

14 Distributionswerkzeuge ...... 297 14.1 Fedora Core 4 ...... 297 14.2 SUSE Linux OSS 10 ...... 298 14.3 Debian ...... 306 14.4 IPCop ...... 307 14.4.1 Das IPCop-Konzept ...... 307 14.4.2 IPCop-Installation ...... 308 14.4.3 IPCop-Web-Interface ...... 312 14.5 ...... 317 14.5.1 Smoothwall-Installation ...... 318 14.5.2 Smoothwall-Web-Interface ...... 318

15 open source library 6DeIptables-Standardtests Die 16 Konfiguration Fortgeschrittene V -werkzeuge und Testmethoden 15 16 53Nmap-Hilfswerkzeuge 15.3 61Eneat Tests Eingebaute 16.1 Nmap 15.2 Regeln der Test 15.1 54Nessus 15.4 62TCP-Tests 16.2 531Nmap-Audit 15.3.1 532NDiff 15.3.2 Anwendung Fortgeschrittene 15.2.3 Scans Einfache 15.2.2 Nmap-Installation 15.2.1 612-,–source -s, 16.1.2 –protocol -p, 16.1.1 Fe3d 15.3.5 nmaplr 15.3.4 Nmap-Parser 15.3.3 616-,–fragment -f, 16.1.6 –out-interface -o, 16.1.5 –in-interface -i, 16.1.4 –destination -d, 16.1.3 623tcp-flags 16.2.3 destinationport 16.2.2 sourceport 16.2.1 625tcp-options 16.2.5 syn 16.2.4 ...... 361...... 319...... 348...... 359 ...... 360...... 319 ...... 343...... 359...... 347...... 360...... 325...... 360...... 359...... 361...... 324...... 360...... 333...... 324...... 345...... 350...... 349...... 360...... 343...... 359...... 359...... 361...... 361...... Inhaltsverzeichnis 357 Inhaltsverzeichnis library

16.3 UDP-Tests ...... 361 16.3.1 sourceport ...... 362 open source 16.3.2 destinationport ...... 362 16.4 ICMP-Tests ...... 362 16.5 addrtype ...... 363 16.6 ah ...... 363 16.7 comment ...... 364 16.8 connbytes ...... 364 16.9 connmark ...... 365 16.10 conntrack ...... 365 16.11 dccp ...... 365 16.12 dscp ...... 365 16.13 ecn ...... 366 16.14 esp ...... 366 16.15 hashlimit ...... 366 16.16 helper ...... 367 16.17 iprange ...... 368 16.18 length ...... 368 16.19 limit ...... 368 16.20 mac ...... 369 16.21 mark ...... 369 16.22 multiport ...... 370 16.23 owner ...... 370 16.24 physdev ...... 370 16.25 pkttype ...... 370 16.26 realm ...... 371 16.27 recent ...... 371 16.28 sctp ...... 372 16.29 state ...... 373 16.30 string ...... 373 16.31 tcpmss ...... 373

17 open source library 8Patch-O-Matic 18 7Al Standardziele Alle 17 18 82WebkmeihPthOMtcudwewneihe an? es ich wende wie Patch-O-Matic,und ich bekomme Wie 18.2 Patch-O-Matic? ist Was 18.1 ULOG 17.24 TTL 17.23 TOS 17.22 TCPMSS 17.21 SNAT 17.20 SAME 17.19 RETURN 17.18 REJECT 17.17 REDIRECT 17.16 QUEUE 17.15 NOTRACK 17.14 NFQUEUE 17.13 NETMAP 17.12 MASQUERADE 17.11 MARK 17.10 LOG 17.9 ECN 17.8 DSCP 17.7 DROP 17.6 DNAT 17.5 CONNMARK 17.4 CLUSTERIP 17.3 CLASSIFY 17.2 ACCEPT 17.1 ttl 16.33 tos 16.32 ...... 377...... 375...... 383...... 382...... 380...... 380...... 379...... 378...... 377...... 377...... 377...... 382...... 382...... 377...... 377...... 374...... 374...... 383 ...... 380...... 380...... 379...... 378...... 375...... 379...... 379...... 379...... 375...... 378...... 375 Inhaltsverzeichnis .. 383..... Inhaltsverzeichnis library

18.3 Base-Patches ...... 386 18.3.1 IPV4OPTSSTRIP ...... 386 open source 18.3.2 connlimit ...... 386 18.3.3 expire ...... 387 18.3.4 NETMAP ...... 387 18.3.5 fuzzy ...... 387 18.3.6 ipv4options ...... 388 18.3.7 nth ...... 388 18.3.8 osf ...... 388 18.3.9 psd ...... 389 18.3.10 quota ...... 390 18.3.11 random ...... 390 18.3.12 set ...... 390 18.3.13 time ...... 390 18.3.14 u32 ...... 390 18.4 Extra-Patches ...... 392 18.4.1 ACCOUNT ...... 393 18.4.2 IPMARK ...... 393 18.4.3 ROUTE ...... 394 18.4.4 TARPIT ...... 394 18.4.5 TRACE ...... 395 18.4.6 XOR ...... 395 18.4.7 account ...... 395 18.4.8 condition ...... 396 18.4.9 connrate ...... 396 18.4.10 geoip ...... 396 18.4.11 goto ...... 396 18.4.12 h323-conntrack-nat ...... 396 18.4.13 ip_queue_vwmark ...... 397 18.4.14 ipp2p ...... 397 18.4.15 policy und IPsec-Patches ...... 397

19 open source library 9Cneto Tracking Connection 19 20 93TCP-Window-Tracking 19.3 ip_conntrack-Kernelmodul Das 19.2 Überblick – Tracking Connection 19.1 94/proc-Variablen 19.4 914DsCneto rcigfral etrnProtokolle weiteren alle für Tracking Connection Das 19.1.4 Tracking ICMP-Connection Das 19.1.3 Tracking UDP-Connection Das 19.1.2 Tracking TCP-Connection Das 19.1.1 unclean 18.4.26 tproxy 18.4.25 talk-conntrack-nat 18.4.24 sip 18.4.23 rsh 18.4.22 rpc 18.4.21 quake3-conntrack-nat 18.4.20 pptp-conntrack-nat 18.4.19 owner-socketlookup 18.4.18 mport 18.4.17 mms-conntrack-nat 18.4.16 941 ip_conntrack_tcp_timeout_close_wait 19.4.11 ip_conntrack_tcp_timeout_close 19.4.10 ip_conntrack_tcp_max_retrans 19.4.9 ip_conntrack_tcp_loose 19.4.8 ip_conntrack_tcp_be_liberal 19.4.7 ip_conntrack_max 19.4.6 ip_conntrack_log_invalid 19.4.5 ip_conntrack_icmp_timeout 19.4.4 ip_conntrack_generic_timeout 19.4.3 ip_conntrack_count 19.4.2 ip_conntrack_buckets 19.4.1 ...... 399...... 398...... 398...... 399...... 397...... 406...... 399...... 408...... 398...... 397...... 407...... 398...... 397...... 407...... 404...... 401...... 408...... 407...... 402...... 408...... 407...... 403...... 403...... 408...... 407...... 408...... 408...... 401 ..... 399...... 406...... Inhaltsverzeichnis ..404.... Inhaltsverzeichnis library

19.4.12 ip_conntrack_tcp_timeout_established ...... 409 19.4.13 ip_conntrack_tcp_timeout_fin_wait ...... 409 open source 19.4.14 TCP-Zustände ...... 410

20 Die NAT-Tabelle ...... 411 20.1 Die NAT-Tabelle und ihre Ketten ...... 411 20.2 Source-NAT ...... 413 20.3 Destination-NAT ...... 415 20.4 MASQUERADE ...... 415 20.5 NETMAP ...... 416 20.6 SNAT ...... 417 20.7 SAME ...... 417 20.8 DNAT ...... 418 20.9 REDIRECT ...... 418 20.10 TPROXY ...... 419 20.11 NAT-Helfermodule ...... 419 20.12 CONNMARK-Target ...... 420

21 Die Mangle-Tabelle ...... 421 21.1 Die Ketten der Mangle-Tabelle ...... 421 21.2 Aktionen der Mangle-Tabelle ...... 421 21.2.1 CLASSIFY ...... 421 21.2.2 CONNMARK ...... 422 21.2.3 DSCP ...... 422 21.2.4 ECN ...... 422 21.2.5 IPMARK ...... 422 21.2.6 IPV4OPTSSTRIP ...... 423 21.2.7 MARK ...... 423 21.2.8 ROUTE ...... 423 21.2.9 TOS ...... 423 21.2.10 TTL ...... 424 21.2.11 XOR ...... 424

21 open source library 3Ds/proc-Dateisystem Das 23 Raw-Tabelle Die 22 22 31Enürn n/proc in Einführung 23.1 Raw-Tabelle Die 22.1 32/proc/net/ 23.2 33/proc/sys/net/ 23.3 34/proc/sys/net/ipv4/conf 23.4 323ip_tables_* 23.2.3 ip_conntrack_expect 23.2.2 ip_conntrack 23.2.1 333inet_peer_* 23.3.3 igmp_* 23.3.2 icmp_* 23.3.1 336tcp_* 23.3.6 ipfrag_* 23.3.5 ip_* 23.3.4 344arp_filter 23.4.4 arp_announce 23.4.3 accept_source_route 23.4.2 accept_redirects 23.4.1 346bootp_relay 23.4.6 arp_ignore 23.4.5 341 medium_id 23.4.13 mc_forwarding 23.4.12 log_martians 23.4.11 forwarding 23.4.10 force_igmp_version 23.4.9 disable_xfrm 23.4.8 disable_policy 23.4.7 341 promote_secondaries 23.4.14 ...... 429...... 425...... 432...... 430...... 430...... 446...... 447...... 430...... 446...... 447...... 447...... 447...... 445...... 447...... 446...... 447...... 430...... 446...... 448...... 425 ...... 435...... 433...... 446...... 427 ..... 427...... 430...... 435...... 433...... 447...... 447...... Inhaltsverzeichnis Inhaltsverzeichnis library

23.4.15 proxy_arp ...... 448 23.4.16 rp_filter ...... 448 open source 23.4.17 secure_redirects ...... 448 23.4.18 send_redirects ...... 448 23.4.19 shared_media ...... 448 23.4.20 tag ...... 449 23.5 /proc/sys/net/ipv4/neigh ...... 449 23.6 /proc/sys/net/ipv4/netfilter ...... 449 23.7 /proc/sys/net/ipv4/route ...... 449 23.8 /proc/sys/net/ ...... 449

24 Fortgeschrittene Protokollierung ...... 451 24.1 Das ULOG-Target ...... 451 24.2 Das ipt_ULOG-Kernelmodul ...... 452 24.3 Der Ulogd-Daemon ...... 452 24.3.1 [OPRINT] ...... 456 24.3.2 [LOGEMU] ...... 456 24.3.3 [MYSQL] ...... 456 24.3.4 [PGSQL] ...... 457 24.3.5 [PCAP] ...... 457 24.3.6 [SQLITE3] ...... 458 24.3.7 [SYSLOG] ...... 458 24.4 Der Specter-Daemon ...... 458

25 Ipset ...... 461 25.1 ipset und iptables ...... 461 25.2 Die Ipset-Typen ...... 462 25.2.1 ipmap ...... 463 25.2.2 portmap ...... 463 25.2.3 macipmap ...... 464 25.2.4 iphash ...... 465 25.2.5 nethash ...... 465

23 open source library 24 ProxyARP 29 Firewalls Transparente VI Firewalls Hochverfügbare 26 0Itbe u ie Bridge einer auf Iptables 30 7NntikudKre 2.6.14 Kernel und Nfnetlink 27 8nf-HiPAC 28 66Zsadsnhoiainmtct_sync mit Zustandssynchronisation 26.6 Masquerading/NAT und Hochverfügbarkeit 26.5 KeepAlived mit Implementierung Praktische 26.4 Firewalls zustandsorientierten Hochverfügbarkeitbei 26.3 Problem? Hochverfügbarkeit das Einfache ist wo 26.2 und Hochverfügbarkeit, ist Was 26.1 53DsKmad ipset Kommando Das 25.3 03FlenafdrBig i iptables mit Bridge der auf Filtern Linux 30.3 mit Bridge einer Bau 30.2 Bridge? die funktioniert Wie 30.1 Fazit 29.4 Iptables mit Filterung 29.3 ProxyARP-Konfiguration 29.2 ProxyARP? funktioniert Wie 29.1 71Drconntrack-Befehl Der 27.1 81Wsitnf-HiPAC? ist Was 28.1 527iptree 25.2.7 ipporthash 25.2.6 661Installation 26.6.1 663Afa e ct_sync-Clusters des Aufbau 26.6.3 ct_sync von Funktion 26.6.2 ...... 466...... 469 ...... 501 ...... 489 ...... 466...... 466...... 500...... 498...... 470...... 502...... 501...... 497...... 480...... 504...... 477...... 483...... 500...... 497 ...... 493 ...... 476...... 473...... 478...... 489...... 493...... 471...... 469...... Inhaltsverzeichnis 495 Inhaltsverzeichnis library

30.4 Filtern auf der Bridge mit ...... 505 30.5 Fazit ...... 506 open source

31 Ebtables ...... 507 31.1 Ebtables-Installation ...... 507 31.1.1 Konfiguration des Linux-Kernels ...... 507 31.1.2 Installation des Userspace-Werkzeugs ...... 508 31.2 Die Ebtables-Tabellen ...... 508 31.2.1 Der Rahmen erreicht über ein Bridge-Interface das System .510 31.2.2 Der Rahmen erreicht über ein Nicht-Bridge-Interface das System ...... 510 31.2.3 Ein lokal erzeugtes Paket verlässt das System über die Bridge ...... 510 31.3 Die broute-Tabelle ...... 510 31.4 Die ebtables-Syntax ...... 513 31.5 Start einer Bridge auf Fedora Core ...... 517

VII Protokolle und Applikationen 519

32 Behandlung einzelner Protokolle ...... 521 32.1 DHCP ...... 521 32.1.1 Das DHCP-Protokoll ...... 522 32.1.2 Iptables-Regeln ...... 522 32.2 DNS ...... 523 32.2.1 Das DNS-Protokoll ...... 523 32.2.2 Iptables-Regeln ...... 524 32.3 HTTP/HTTPS/Proxy ...... 526 32.3.1 Iptables-Regeln ...... 528 32.4 ELSTER ...... 529 32.4.1 Iptables-Regeln ...... 529 32.5 Telnet ...... 530 32.5.1 Iptables-Regeln ...... 530

25 open source library 26 21 POP3 32.18 21 IMAP 32.17 21 TFTP 32.16 21 IRC 32.15 21 SMTP 32.14 21 PPTP 32.13 21 Amanda 32.12 21 SNMP 32.11 21 FTP 32.10 29PP P2P: 32.9 KaZaA P2P: 32.8 27PP Edonkey P2P: 32.7 26SSH 32.6 21. Iptables-Regeln 32.18.1 21. Iptables-Regeln 32.17.1 21. Iptables-Regeln 32.16.1 21. Iptables-Regeln 32.15.1 21. Iptables-Regeln 32.14.2 SMTP-Protokoll Das 32.14.1 21. Iptables-Regeln 32.13.1 21. Iptables-Regeln 32.12.2 Amanda-Protokoll Das 32.12.1 21. Iptables-Regeln 32.11.1 21. Iptables-Regeln 32.10.3 FTP-Protokolls des Inspection Stateful Die 32.10.2 FTP-Protokoll Das 32.10.1 291Iptables-Regeln 32.9.1 281Iptables-Regeln 32.8.1 Iptables-Regeln 32.7.1 261Iptables-Regeln 32.6.1 ...... 534...... 535...... 553...... 552...... 550...... 549...... 547...... 545...... 543...... 542...... 540...... 536...... 534...... 532...... 531...... 537...... 546...... 543...... 552...... 551...... 549...... 548...... 546...... 544...... 542...... 537...... 531...... 543...... 532...... 539...... Inhaltsverzeichnis Inhaltsverzeichnis library

32.19 NTP ...... 554 32.19.1 Iptables-Regeln ...... 554 open source 32.20 NNTP ...... 554 32.20.1 Iptables-Regeln ...... 554 32.21 H.323 ...... 555 32.21.1 Iptables-Regeln ...... 555 32.22 SIP ...... 556 32.22.1 Iptables-Regeln ...... 557

33 IPsec ...... 559 33.1 IPsec ...... 559 33.2 Iptables-Regeln zum Durchleiten von IPsec ...... 560 33.3 KLIPS ...... 561 33.4 26sec ...... 562 33.4.1 Transport-Modus ...... 563 33.4.2 Tunnel-Modus ...... 563 33.4.3 Filterung mit Firewall-Markierung ...... 566 33.4.4 Filterung mit dem policy-Match ...... 567

34 ICMP ...... 569 34.1 ICMP ...... 569 34.2 ICMP destination-unreachable ...... 570 34.3 ICMP fragmentation-needed ...... 572 34.4 ICMP source-quench ...... 576 34.5 ICMP redirect ...... 577 34.6 ICMP time-exceeded ...... 577 34.7 ICMP parameter-problem ...... 578 34.8 ICMP router-advertisment/router-solicitation ...... 578 34.9 ICMP timestamp-request/timestamp-reply ...... 579 34.10 ICMP address-mask-request/address-mask-reply ...... 580 34.11 ICMP echo-request/echo-reply (Ping) ...... 580

27 open source library 28 5IPv6 35 Netzwerkgrundlagen C BFirewall-Skript Postfix-E-Mail-Relay A 53Nu IPv6-Matches Neue 35.3 ICMP-Regeln der Optimierung 34.13 Traceroute 34.12 52Nu IPv6-Targets Neue 35.2 ip6tables mit Filterung 35.1 . IP C.2 TCP/IP C.1 Firewall der Stopp B.1 Amavisd-New A.3 Adressverifizierung E-Mail-RelayA.2 als Postfix A.1 rt 35.4 ...... 535ipv6header 35.3.5 hl 35.3.4 hbh 35.3.3 eui64 35.3.2 dst 35.3.1 521HL 35.2.1 .. Fragment-Offset C.2.7 Flaggen C.2.6 Identifikationsnummer C.2.5 Gesamtpaketlänge C.2.4 Type-of-Service C.2.3 Header-Länge C.2.2 Version C.2.1 ...... 589...... 588...... 589...... 589...... 588...... 595...... 592...... 587...... 601...... 603...... 602...... 591...... 602...... 584...... 602...... 587 ...... 599...... 600...... 590...... 595 ...... 582...... 589...... 589...... 593...... 599 ...... 591 ..... 589...... 602...... 601...... Inhaltsverzeichnis Inhaltsverzeichnis library

C.2.8 Time To Live (TTL) ...... 603 C.2.9 Protokoll ...... 604 open source C.2.10 Prüfsumme ...... 604 C.2.11 Quell-IP-Adresse ...... 604 C.2.12 Ziel-IP-Adresse ...... 604 C.2.13 IP-Optionen ...... 604 C.3 UDP ...... 606 C.4 TCP ...... 608 C.4.1 Auf- und Abbau einer TCP-Verbindung ...... 609 C.4.2 TCP-Header ...... 611 C.4.3 Fortgeschrittene Eigenschaften von TCP ...... 616 C.5 Explicit Congestion Notification ...... 619 C.6 ICMP ...... 621 C.6.1 Destination Unreachable ...... 622 C.6.2 Source Quench ...... 623 C.6.3 Time Exceeded ...... 623 C.6.4 Redirect ...... 624 C.6.5 Parameter Problem ...... 624 C.6.6 Echo-Request und Reply ...... 624 C.6.7 Address Mask Request und Reply ...... 625 C.6.8 Timestamp Request und Reply ...... 625 C.6.9 Router Solicitation und Advertisement ...... 626 C.7 ARP ...... 626

Literaturverzeichnis ...... 629

Stichwortverzeichnis ...... 631

Über den Autor ...... 643

29

issBc imtsc e Paketfilter dem sich widmet Buch Dieses Vorwort leBrih bee anudsc iieac ohi ls ene,hb ich habe befinden, Fluss auf Kapitel im (siehe Auswirkungen noch Kapitel auch sämtliche eigenes einige ein nicht in sich noch Neuerungen und diese selbst kann ich absehen auch Da Bereiche Funktionen alle diese einarbeiten. und ich Buch mir wollte dieses im zwischen Natürlich die Wettlauf geführt. in Teile, einem Kernel zu der große hat Release-Zyklen wird) Das den gesteuert ausgetauscht. Iptables Fra- sind, mit das verborgen das (das Kernel Netfilter-Team entwickelt, das Kernel hat im habe, geschrieben fortge- mework Jahren Buch die diesem letzten an auch den ich Während in das Jahren die schreiben, einigen behandelt, zu seit Eigenschaften per- Thema sind. bereits neue hinzugekommen mir diesem ich und hat zu habe Themen existiert, Buch Daher schrittenen Thema eigenes gefallen. diesem gut ein zu richtig überlegt, Literatur Buch an kein einiges sönlich bereits Obwohl 2.6. c üsh he ilSa emLsnudve rogbidrKngrto und Konfiguration der bei Erfolg viel und Linux-Firewall. Lesen Ihrer beim Administration Spaß viel Ihnen wünsche an Ich E-Mail oder Ihre haben über Ideen mich zusätzliche haben, freuen. ich Buch würde diesem vermissen, zu Kritik Informationen oder Fragen Sie Sollten mit Netzwerksicherheit Thema 2 mit das Snort ab. Buch »VPN mit Source treffen dieses Büchern Open Prevention rundet zu 3-8273-2134-4)« und meinen Geschmack (ISBN Detection Nach Ihren Co. »Intrusion & ist, liefern. und gelungen 3-8273-2114-X)« zu (ISBN Buch Informationen Linux diesem wertvolle mit Ihnen mir und es für dass er hoffe, die Ich geben, zu machen Hand zu die benötigt. an vertraut Firewall Mittel mächtige Paketfilters die eine Benutzer in des fortgeschrittenen ihn Materie dem und der auch berücksichtigen als mit zu behutsam Einsteiger den Kapiteln sowohl einzelnen versucht, ich habe Ansonsten wahrnehmen begrüßen. auch nicht Bereichen gar einigen entweder in aber Modifikationen oder diese Endanwender typische der Netfilter/Iptables 27 eshbn eohwird Jedoch verschoben. ) e iu-enl24und 2.4 Linux-Kernel der [email protected]

open source library etnWrzueudWrzuefrdnTs he Firewall. Ihrer Test mitgelie- den Distributionen für den Werkzeuge von und der Werkzeuge Betrachtung ferten eine zu Administration, Oberflä- und die Protokollanalysewerkzeuge, aufzubauen für Zeitserver, chen Firewall Protokollserver, eine be- sind erfolgreich Sie Dies um die warten. können, vorgestellt, und verwenden Werkzeuge zusätzliche Realisierung oder verschiedene nötigen der werden inklusive Teil vierten DMZ Im mit Firewall eine vor. Probleme und Ihnen möglicher stellt Firewall und Firewall-Architekturen lokale typischen mit eine sich beschäftigt Teil Ihre dritte Der die erkennen, wie zu hat. und abgewehrt Angriffe Außer- härten nicht Linux-Distribution realisieren. können, Firewall eine Iptables helfen Ihnen, Sie mit wie zeigt Intrusion-Detection-Systeme Kapitel, Gateway und Ihnen diesem einem Iptables in auf Sie in erfahren Firewall Einführung dem einfache einer eine mit Sie sich wie beschäftigt sind. entstanden Teil Firewalls zweite wie Der Überblick, kurzen Begriffe, einen ken- Sie wichtige Firewall-Technologien erhalten Sie verschiedenen Außerdem lernen der nen. Unterschiede Hier die Firewall-Grundlagen. und den Iptables Architekturen mit und beginnt Linux Buch von Das Hilfe mit Funktionen diese realisieren. dabei, zu Ihnen hilft Buch Schutz den Dieses Firewalls mit oder Netzes möchten implementieren. eines schützen zu innerhalb Sie Systeme auch die dieser sinnvoll, Systeme, es Netz ist Ihrem Dann in interne müssen? wirklich? es über Anwender Gibt oder und sein, ihnen? verbinden Benutzer Sie sinnvoll Vertrauen Ihre Netz es Sie anderen kann Kennen einem nachzudenken. verwenden, mit Linux-Firewalls Firewall nicht der kommerzielle Netzwerk Wert eine Ihr der hierzu Sie noch wenn nur selbst dann Ihnen Aber bleibt Es dann die wert. denn mehr gibt, umgehen, nichts zu Möglichkeit Hardware. Hilfsmittel fast keine anderer Firewall es oder die Modems An- dass ist eines anderen sicherstellen, Hilfe alle Sie mit weist müssen Firewall und Sie Natürlich Verkehr sollten gewünschten ab. Ihnen Dann Netz- fragen von den verbinden. beschränkt den Firewall unbekannten auf Internet Die anderen überwachen. werkverkehr dem Firewall mit einer wie mit Netzwerk Verbindung Netzwerken Ihr diese vertrauten Sie Eine nicht wenn Netzwerks. wichtig, und sicheren eines besonders Bestandteil Sicherheits- ist wesentlicher und Firewall ein Hackerangriffe Firewall Viren, eine ist neue lücken über Meldungen täglicher Angesichts Einleitung

open source library open source library mit eg he,weSeDC,Iv drIscfitr.DeeKptlsltnal Fragen alle sollten und Kapitel Protokolle Diese beantworten. filtern. einzelner Iptables-Firewall IPsec Besonderheiten eine oder um IPv6 den rund DHCP, mit Sie wie sich Ihnen, arbeiten. beschäftigt zeigt Bridge Teil einer auf siebte wie Der und Firewalls, sind sind unsichtbar Dies IP-Ebene gewidmet. der Firewalls auf transparenten die komplett ist Teil sechste sind. Der erwarten zu Iptables in Zukunft nächsten der rcigMcaimsuddse uiguddrBshebn e NAT-, Variablen der der Erklärung Beschreibung die hier der Sie und finden im Weiterhin Tuning Raw-Tabellen. und mit dessen Mangle- Connection- beginnt des und und Beschreibung Patch- einer gedacht Tracking-Mechanismus in Funktionen, den Anwender Ziele), zusätzlichen und fortgeschrittenen verfügbaren (Tests O-Matic die Iptables-Funktionen aller für Referenz kompletten ist einer Teil fünfte Der 34 /proc ipset Vrecns i enn i i nDtnaknpooolee,IP-Adressen protokollieren, Datenbanken in Sie wie lernen, Sie -Verzeichnis. rpirn ohefgaeFrwlsafae n eceFntoe in Funktionen welche und aufbauen Firewalls hochverfügbare gruppieren, Einleitung ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library Firewall-Grundlagen I Teil

open source library eemnldgihdeGfh ie aevrutsudetikleMtoe und Methoden entwickelte und Paketverlustes eines Gefahr kannte betrach- Jeder die Sicherheit Welt. Aspekt lediglich dem heile man unter eine und tete um Teilnehmer, Zeit anderen lange jedem Internet vertraute Internet einem und beim Das weltweit. sich Mbit/s. Netzen von es 45 50.000 Jahren handelte zu von Dennoch bis Zahl 8 mit einer nur Knoten zu Zeit 21 in dieser zu wuchs in kBit/s) akademischen wuchs (56 Dieses den Knoten gestartet. für 6 mit Speziell NSFNET Backbone DECNET. das das und wurde ent- SNA Bereich Bereich IBM kommerziellen BIT- (Xerox), Im aufgebaut: XNS CSNET. wurden standen SPAN, fol- Netzwerke HEPNET, den MFENET, Weitere In USENET, ARPANET. umgestellt. NET, RFC das TCP/IP einem wuchs auf in Jahren ARPANET 1982 das genden und wurde anerkannt 1.1.1983 1980 Standard Am als wurde beschrieben. bereits TCP/IP Defense die of begonnen. wurde das Department TCP/IP So vom größer Schwächen. Internetprotokollfamilie Je seine Netz. der jedoch dem wurden Entwicklung deutlicher in desto Kommunikation wurde, die ARPANET zwar erlaubte NCP-Protokoll vorgestellt. konnte Das E-Mail Anwendungen Applikation der erste Entwicklung als Die wurde verabschiedet: 1972 (NCP). offiziell beginnen. Protocol ARPANET Control das Network für Netzwerkprotokoll das erste Dezember das Im wurde verteilten begann. 1970 eines ARPANET Implementierung des erfolgreiche Entwicklung IPTO-Direktor die Die dem für Kommunikationsnetzwerks. Dollar Projects DARPA) Million der Research eine entwickeln. Taylor (Direktor Advanced zu Bob Kalifor- Hertzfeld Computer-Netzwerk Defense Charlie ein in für zur versprach SDC Konzept Angeblich dann ein des dort Roberts Q-32-Computer um Computer (DARPA), ging dem TX-2 Agency den mit 1966 Merrill Massachusetts verband. Thomas in nien mit Labs paketvermittelnde gemeinsam (WAN), Lincoln Roberts über Wide-Area-Network des G. erste Arbeit veröffentlichte Lawrence das in erste 1965 dem früher MIT, entstand eine in Jahr am Ideen MIT) Ein diesen Licklider Aus beschreibt. am J.C.R. Netzwerke. Network« (ebenfalls von »Galactic Notizen Kleinrock ein von Leonard 1962 Reihe eine er Internets als denen des begann Anfang Der Internet Das 1.1 der Entwicklung die skizzenhaft versucht, und Kapitel aufzuzeigen. bewerten Dieses Firewalls besser der können. diese Entwicklung um zu geschichtliche kennen, einschätzen zu die Technologien hilfreich, und als Produkte immer eingesetzten es empfinde persönlich Ich 1 Firewall-Geschichte

open source library open source library ätih ez nMtedncatzogen Mitleidenschaft um in Router, die Netze diese auslösten, sämtliche man Broadcast-Stürme nutzte Netzwerk-Fehlkonfigurationen eines Beginn dass Abschottung Zu verhindern, eingesetzt. die zu Netzen für anderen Sicherheitssysteme den als von Router Netzes bereits Firewall erste wurden Die früh Recht 1.3 kein Firewalls, keine es Schutz. gab anderweitigen vor Zeitpunkt keinen Netzwerke auch diesem ihrer und zu Schutz NAT Bis einen nachzudenken. über Internet Unternehmen, dem Ad- die begannen Defense Weiteren der Des von gegründet. Computer (DARPA) (CERT/CC) das Agency 1988 Center Projects November Research Coordination im vanced noch Team wurde Report Wurm den Emergency auf Reaktion direkte Als Agency Security und National Mor- Arbeit Wurms der Robert gemeinnütziger Chef-Wissenschaftler des Vater, (NSA). Zeitpunkt Stunden Freisetzer diesem sein 400 zu war als Senior, zu Interessanterweise ris 1989 verurteilt. 1990 Juli Geldstrafe Januar Dollar 26. 22. dama- 10.400 am des am 10% wurde und etwa Morris identifiziert Rechnern Robert 6000 mit Internets. ( Wurm ligen geführt dieser 2 infizierte Verbreitung und seiner Unix- 1 Bugtraq-Datenbank Ver- Nummern den der seine in den in für werden unter R-Dienste Epi- Sicherheitslücken Sicherheitslücken die verwendeten eine über und Die Morris Finger aus. drang breitung Sendmail, Tappan Wurm nutzte Robert und Dieser ein von aus. Betriebssystemen Morris-Wurm Internet der im löste demie 1988 Morris-Wurm November Der Im 1.2 der Verfügbarkeit die und garantieren. verhindern zu zu Kommunikation der Paketen und von Dienste Verlust den um Protokolle, 38 edr en otnafdmSse ü ieAmlugzrVrüugstellen Verfügung zur Anmeldung und eine für Baud System An- 9600 dem den mit auf jedoch Konten wollte Internetverbindung Ab- keine Ranum eine anderen Marcus wendern Sicherheitsstruktur. einer über ähnliche in verfügten eine Avolio Sie benötigten Frederick DEC. für bei diesem Ranum teilung von J. dann Marcus konnten arbeitete und Gleichzeitig zugreifen. ftp) Internet und im (telnet Systeme anmelden auf System System diesem auf sich etr osn i ehe itrdmRue ih o ie racs-ae erfe.An- Netzwerk- betroffen. der Broadcast-Paket Teil einem großen einen von Broadcast-Verkehr nicht der Router Netzwerk dem belegen. großen kapazität einem hinter in Rechner kann die sonsten sind Kommunika So die weiter. für Broadcast-Pakete verwendeten kl.BiDCbtibzncs ra eduddn alVxeenSse i dem mit System ein Vixie Paul dann und entwi- Reid AT&T Brian Namen und zunächst DEC betrieb bei DEC gleichzeitig Bei relativ ckelt. wurden Firewalls richtigen ersten Die 1 E nBodatPktwr o ee ehe nggneomn il e rtnProtokolle ersten der Viele entgegengenommen. Rechner jedem von wird Broadcast-Paket in gatekeeper.dec.com ü e urf u a nentmstndeAnwender die mussten Internet das auf Zugriff den Für . http://www.securityfocus.com/bid/1 1 . in i otrlie racs-aeenicht Broadcast-Pakete leitet Router Ein tion. Firewall-Geschichte 1 .Während ). 1.4 Firewalls heute library und schrieb daher den ersten FTP-Proxy für seinen Gatekeeper. Kurze Zeit später (1991) wurde diese Firewall bereits als erste kommerzielle Firewall DEC-SEAL (Se-

curing External Access Link) an einen großen Chemie-Konzern verkauft und dort open source im Juni 1991 auf mehreren Systemen eingerichtet. Ein Firewall-System bestand aus einem Gatekeeper, der als einziges System auf das Internet zugreifen durfte, und einem Gate, das den Zugriff des internen Netzes auf den Gatekeeper als Paketfilter überwachte. Der Gatekeeper verfügte über eine gewisse Anzahl von Proxys, die den Zugriff per telnet, ftp, E-Mail, News, Whois und X erlaubten. Die DEC SEAL wurde schließlich zur AltaVista Firewall weiterentwickelt. Frederick Avolio und Marcus Ranum wechselten zu Trusted Information Sys- tems (TIS) und programmierten dort das TIS Firewall-Toolkit (TIS FWTK, http:// www.fwtk.org/). Nach dem Kauf von TIS durch NAI 1998 wurde diese Firewall als Gauntlet kommerziell vermarktet. Gleichzeitig wurde bei AT&T von William R. Cheswick und Steven M. Bellovin in den Bell Laboratories eine Firewall entwickelt, die nicht über einzelne Proxys für jedes Protokoll verfügte, sondern als Curcuit-Relay-Proxy ausgelegt war. Dies war der Vorgänger des SOCKS-Protokolls und des SOCKS-Proxy. Kommerziell wurde diese Firewall als Raptor Eagle kurze Zeit später verkauft. Die ersten Firewalls waren also immer Systeme, die für die Funktion auf Proxys zu- rückgriffen. Auch heute gibt es noch viele Firewall-Systeme, die für die Realisierung Proxys einsetzen. Bei einigen Protokollen ist dies auch sinnvoll, um eine Filterung von Viren oder unerwünschten Inhalten durchzuführen. Im Jahr 1994 betrat Check Point den Markt der Firewalls und bot von Anfang an einen Paketfilter mit einer grafischen, leicht zu administrierenden Oberfläche an. Gleichzeitig war dieser Paketfilter in der Lage, den Zustand der TCP-Verbindungen zu überwachen und Verbindungen nur in bestimmten Richtungen zu erlauben.

1.4 Firewalls heute

Heute bestehen Firewall-Systeme meist aus einer Kombination aus Paketfilter und Proxy. Während einige Protokolle auf Grund ihrer Natur nicht mit einem Proxy ge- filtert werden können (z.B. IPsec), ist es bei anderen Protokollen zum Schutz der ei- genen Infrastruktur zwingend erforderlich, Proxys einzusetzen. Ein Paketfilter kann keinen Virus oder andere bösartige Inhalte in E-Mails oder in Webseiten erkennen und entfernen. Dennoch gibt es auch häufig Szenarien, bei denen dieses gar nicht gewünscht wird oder eine Proxy-Firewall nicht den Datendurchsatz bewältigen könnte. Hier werden dann reine Paketfilter eingesetzt.

39

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library l uhdePkt e oezelnSresi enmRglekberücksichtigen. Regelwerk seinem Clients in des Servers Pakete potenziellen belang- die des ist sowohl Pakete be- auftritt, daher die sich muss Paket auch Paketfilters das als für eines dem einzeln Administrator in wird Der Zusammenhang, los. Paket Der einer Jedes analysiert. zu nicht. und Paket trachtet oder ein ob gehört erkennen, Verbindung nicht Ablehnen aufgebauten kann das Paketfilter zustandsloser und klassischer Absender). Pakets Ein den des an Regel Verwerfen Fehlermeldung der einer das mit (Senden Pakets, die Pakets das wird des des sind so Routen Aktionen zu, unterstützten und Regel üblicherweise eine Annehmen Die Trifft Re- ausgeführt. testen. sie Aktion Paket das jedem verbundene Regelwerk, bei ein Regel üblicherweise für Header Paketfilter deren gel auch die ICMP-Paketes nutzen oder Be- Hierzu Paketfilter TCP- meisten UDP-, analysieren. ihre eines Die beschränken Falle IP-Header. im den sie zusätzlich sie können bedeutet, analysieren Dort Das IP-Pakete. IP-Paketfilter. auf trachtung sind Paketfilter damals meisten Paketfilter. die seit Die derartige Auch über werden Jahren ausgestattet. sind, seit Paketfilterfunktionalitäten verfügen verwandt zusätzlichen Netzwerkbetriebssysteme meisten mit miteinander Router eng alle Aufgaben fast beiden diese Da werden muss. weitergesendet werden Paketfilter verworfen überhaupt es Paket ein ob ein analysiert Rou- oder ob wird, darf bestimmt, normaler geschickt und ein Paket Paket Während das ein Router. zusätzlich wohin intelligenter entscheidet, ein lediglich Paketfilter ter ein ist nicht. Grunde oder Im darf passieren Paket ein ob trifft, scheidung u e SNXSme ofrnei äz18 i e Programm dem mit 1989 1989 März Der Jahr vor. im gateways: Paketfilter Conference im ersten Unix-based Summer Mogul einen einer for USENIX C. controls Implementierung der access Jeffrey auf die datagram auf für flexible geht ftp://ftp.digital.com/pub/Digital/WRL/research-reports/WRL-TR-89.4.pdf and Technologie Implementierung (Simple einfachste erste zurück die Die ist Firewall. Paketfilter Paketfilter Der 2.1 Funk- ihre beschreibt Nachteile. und und vor Vor- eingesetzt wichtigsten ihre Firewall die sowie einer stellt tionsweise Aufbau Kapitel beim Dieses die können. Technologien, werden verschiedene viele gibt Es 2 Firewall-Technologien screend s i srpc-rgam a i Ent- die das Userspace-Programm, ein ist .Mglstellte Mogul ). screend

open source library open source library itr(P)30(96 o arnRe.Eefls19 rcinmtdrS Firewall SF der mit IP- erschien 1996 war Ebenfalls Paketfilters Reed. Darren zustandsorientierten von ( eines (1996) 3.0 Variante (IPF) verfügbare Filter frei erste waren, Die worden Point aufgebaut die zuließ. innen Antworten sich Check sämtliche von der die automatisch die in und ist merkte, Verbindungstabelle, Verbindungen Produkt einfache sämtliche befindliche eine Firewall besaß Einsatz Produkt im Dieses verfügbar. noch Firewall-1. 1993 heute wurden bekannteste, Paketfilter Das kommerziellen zustandsorientierten Paketfilter ersten Zustandsorientierte Die 2.2 42 und weiterentwickelt SOCKS-Protokoll dem in 1996 Ap- aus- wurde Transport-Schicht verwendete Prinzip der das auf Dieses der Daten Transport-Schicht, tauscht. die der sondern auf versteht, Proxy nicht ein plikationsprotokoll ist Relay Relay Curcuit Curcuit Das 2.3 e anudaszsadoinire aefitrmtIseto drsgrDeep- sogar oder bietet. Inspection Sicherheit ausreichend mit Anwendungsfälle Paketfilter viele zustandsorientierter für durchfüh- Inspection-Analyse als Filterung Paketfilter leistungsgerechte und der eine ist, kann Gigabit-Netzwerke möglich ren der einfach Bereich und im durch- preiswert Proxys auch Implementierung den gegenüber die Bereichen da vielen in gesetzt, IDS. Ge- Paketfilter einem die die oder sich wird. haben Virusscanner an Dennoch einem eine übertragen Anforderung und wie Paketfilter hohen Virus gut reinen so der einem ein nicht aus meist und oder Kombination jedoch Paketfilters Deep-Inspection-Systeme Angriff die eines sind ein Natur schwindigkeit, analysieren der Verbindung die genauer Grund prüfen die Paketfilter noch Auf Hierzu über aus Pakete darstellen. ob Kombination Virenscanner die eine Systeme, oder – die Intrusion-Detection-System Deep-Inspection-Systeme Systeme, Deep-Inspection-Firewall. als und um besonders auch – sich oder und es Inspection- handelt die Hierbei ist erkennt. Weiterentwicklung tatsächlich Verbindung Eine der Teil als sie auf die dies Pakete, Kommuni- beschränkt die möglichen erforder- Firewall nicht zustandsorientierte jeden nun Die eines ist durchzulassen. Antwortpaket Es kationspartners an- Firewall. mögliche Zum der jedes Hälfte. Sicherheit grundsätzlich die die stark lich, um sehr mindestens auch schrumpft Regeln es Regeln erhöht der deren der Wartung die Zahl und die nicht Definition denn ist erkennen die erheblich, Regeln einen automatisch einzelne zum durch vereinfacht weniger Pakete Dies dieser erforderlich. oder Erkennung alle explizite mehr und Die zulassen. merken Verbindungen und Verbindungen dieser erlaubten Tabelle Pakete Regelsatz einer dem weiteren in von sich und sie aufgebauten dass die gemeinsam, ist Paketfiltern zustandsorientierten Allen zustandsorientier- sind. mächtigsten verfügbar die der Paketfilter, einen ten Iptables/Netfilter mit Linux Oberflä- besitzt grafischer Heute mit Firewall Sinus zur Jahren weiterentwickelt. weiteren che den in wurde Diese nux. http://www.ifi.unizh.ch/ikm/SINUS/sf-doc/impl.htm ieeseIpeeteugfrLi- für Implementierung erste eine ) Firewall-Technologien 2 2.4 Application-Level-Gateway (Proxy) library verbessert. Das SOCKSv5-Protokoll wurde in dem RFC 1928 definiert und festge- legt. Heute sind noch zwei Versionen des Protokolls im Einsatz: SOCKSv4 und

SOCKSv5. SOCKSv5 unterstützt auch Applikationen, die das UDP-Protokoll nut- open source zen. Der besondere Pluspunkt für den Einsatz des SOCKS-Proxys ist die einfache Imple- mentierung. Wenn der Quelltext einer Applikation verfügbar ist, kann diese sehr einfach mit der Fähigkeit ausgestattet werden, den SOCKS-Proxy zu nutzen. Der einfache Socket-Aufruf muss lediglich durch den SOCKS-Socket-Aufruf ersetzt wer- den. Viele kommerzielle Programme, wie der Microsoft Internet Explorer, enthalten bereits die hierfür notwendige Logik.

2.4 Application-Level-Gateway (Proxy)

Dies ist die klassische Firewall-Technologie, wie sie von Marcus Ranum (siehe Ka- pitel 1) in der ersten Firewall implementiert wurde. Hierbei handelt es sich um Proxys, die auf der Schicht des Applikationsprotokolls arbeiten. Daher benötigt ein derartiges Gateway für jedes Applikationsprotokoll einen eigenen Proxy. Diese Application-Level-Gateways können daher meist nur eine beschränkte Anzahl von Protokollen filtern. Obwohl Sie dies als einen Nachteil dieser Technologie ansehen können, bietet diese Technologie auch Vorteile. Die Application-Level-Gateways implementieren das Applikationsprotokoll und können daher auch die korrekte Verwendung prüfen. Speziell bei komplizierten und gefährlichen Protokollen wie FTP oder HTTP können diese Proxys durch selektive Unterstützung des Proto- kolls die gefährlichen Befehle herausfiltern und deren Verwendung unterbinden. Ein reiner Paketfilter kann dies nicht. Hier sind zusätzliche Funktionen in Form ei- nes Inspection- oder Deep-Inspection-Paketfilters erforderlich. Während jedoch das Application-Level-Gateway nur die erlaubten Funktionen implementiert (Positiv- Liste) und alle weiteren Verwendungen des Protokolls automatisch unterbindet, muss ein Deep-Inspection-Paketfilter die bösartige Verwendung des Protokolls er- kennen und verhindern (Negativ-Liste). Der Deep-Inspection-Paketfilter kann daher nur bekannte Angriffe erkennen und verhindern, während ein Application-Level- Gateway weiter reichende Sicherheit bietet. Dennoch haben sich in den letzten Jahren die Paketfilter in vielen Bereichen durch- gesetzt. Dies hängt mit den vielen verschiedenen, teilweise sehr komplizierten mo- dernen Protokollen zusammen. Für jedes dieser Protokolle ist ein eigener Proxy erforderlich. Deren Implementierung ist häufig so aufwendig und kompliziert, dass sie entweder gar nicht vorgenommen wird oder der Proxy anschließend selbst zu einem Sicherheitsrisiko wird, da die Implementierung Fehler aufweist.

2.5 Network Address Translation

Die Network Address Translation (NAT) wurde zunächst als Antwort auf die be- schränkte Anzahl von IP-Adressen im Internet entwickelt. Mit Hilfe von NAT kön- nen viele Rechner über dieselbe IP-Adresse auf Dienste im Internet zugreifen. Hier-

43 open source library uc i ltirn isrSseei ie M seeAbschnitt (siehe Umgebungen DMZ Zugriff einer meisten in den der Systeme in das dieser erfolgt auf Platzierung Dies die dem System, sein. durch Bei interne isoliert erlaubt. das zusätzlich Systeme wird, daher interne freigegeben auf sollte Zugriff Destination-NAT be- den des zu Firewall Einsatz die kritischer durch Sicherheitsaspekten es unter da trachten, Destination-NAT ein bestimmten ausgetauscht. ist Verbindung einer Grundsätzlich einer auf Zieladresse ist außen die Dies wird weiterleitet. von Dabei System die Destination-NAT. einem entsprechen- das Pakete, zu ein innen der nach existiert NAT-Tabelle, ankommen, es IP/Port-Kombination der außer IP- in möglich, deren Zugriff Eintrag Da kein unterbindet. der ist Firewall ist, Router/der unbekannt dem wirksam hinter Adresse auch Systeme es auf da eingesetzt, Zugriff Sicherheitsfunktion den als häufig wird Source-NAT Ta- Verbindung Das der der Quelle aus wird. die ausgetauscht, Verbindung dem Quelladresse bei die die Source-NAT, wird also der ein ab Beendigung ist Zeitgebers Tabelle Dies Nach eines ein der entfernt. weiter. belle Ablauf aus Sobald Rechner Ziel nach entsprechenden ab. echte den oder Tabelle an das Verbindung einer Paket Gerät das in das leitet liest Gerät verwen- und erreicht, die das Gerät und speichert das Verbindung Ports Antwortpaket eindeutigen die und einen über IP-Adressen Verbindung Information ersetzt. deten jede Die selbst für Port. Firewall Firewall lokalen Rou- Routers/der ungenutzten Router/die dem des implementiert. von IP-Adresse der dann die Firewall verwendet wird durch der Dabei Pakete Firewall ausgehenden oder der Internet oder Router das ter einem in aller auf IP-Adresse üblicherweise Die NAT wird für 44 Firewall-Technologien 2 3.2 ). genattet , ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library i rt mlmnirn e cenn-otr a der war Screening-Routers des Implementierung erste Screening-Router Die komplett 3.1 Sicherheit die Ausfall dessen bei Punkt, ein ist. Angriff ist kompromittiert Single-Point- erfolgreichen Das keinen einen sollte besitzen. auf Firewall-Architektur Reaktion of-Failure Ihre eine einzuräumen. Firewall Ihrer für Ihre in Gelegenheit auf Fehler die über- lange mögliche Ihnen möglichst Architektur um Hersteller Ihre den leben, si- durch aufzu- muss Implementierung 100%ig Daher der Firewall Eine und nicht. Konfiguration sichere wollen. es durchschneiden absolut gibt Netzwerkkabel Firewall eine das chere Gedanken, nicht Sie dem wenn von bauen, sich Hardware Sie benötigten Verabschieden der Form der in bei Aufwand Speziell den abwägen. Sie analysieren. Nutzen müssen und Architektur anderen Da- der Aufwand allen ihre Wahl bei immer hat Wie Sie Architektur Architektur. sollten richtige Jede Betrachtungen absolut vorstellen. son- keine Kapitel gibt diesem Geräten, Es in seinsberechtigung. Architek- von in Ihnen Diese Gruppe ich sich durchgesetzt. möchte haben eine Architekturen turen Firewall-Konzepts verschiedene oder eines Jahren Implementierung Gerät vergangenen die den einzelnes Für ein Konzept. ein nicht dern ist Firewall Eine 3 int neoe ednsle.Dn s nvee älnenScreening-Router demi- einer ein Verwendung Abschnitt interne Fällen die (siehe über auch vielen machen Gedanken ob Zone sich in litarisierten Net- ab, sollten ist Sie eines davon und Dann stark ausreichend, Sicherheit sollen. erlaubt nicht auch die werden außen sicherlich um angeboten nach hängt innen ausreichend, Dienste Dies von gewährleisten. Screening-Router Zugriff zu ein der zes ist nur soll, denen bei werden Umgebungen, Screening- vielen dem In von wird innen nach au- unterbunden. außen nach Router von innen Verbindungsaufnahme von Verbindungen Eine nur ßen. üblicherweise erlaubt Screening-Router Der Struktur. ledig- zusätzliche Firewall andere die keine basiert verwendet Architektur Abbildung und Als Screening-Router Paketfilter, wird. diesem einfacher beschrieben auf ein Buch lich als diesem anderes in nichts er Grunde wie im ist Screening-Router Ein gul. 3.1 Firewall-Architekturen eg i Architektur. die zeigt 3.2 ). screend o efe Mo- Jeffrey von

open source library open source library rhtku i i utpeDZwhe seeAbschnitt Firewall- (siehe mehrstufige wählen eine DMZ Ihr Multiple Sie die sollten auf wie verhindern, Zugriff Architektur zu kompletten dieses ein Komponente Um kann erhalten. dieser besteht, Netzwerk Überwindung offene Komponente einer die das aus Angriff bei durch nur erfolgreichen Angreifer ist Firewall-Architektur einem Screening-Routers Ihre oder Wenn einzelnen Implementierung Netz. der eines in Nachteil Fehler unterschätzender einem zu nicht Ein Netz. interne das schützt Screening-Router Ein 3.1: Abbildung 46 auf Zugriff ein nur Netz Abbildung internen (siehe ist dem möglich aus DMZ dass der Auch Screening- so Systeme ist. zusätzlicher die Paketfluss, Ein erforderlich die den aufgestellt. Internet DMZ Sie steuert dem dieser dem Router in aus in üblicherweise Zugriff wird Netz, ein Proxy ausgelagertes ein die entmilita- besonderes auch auf ein (häufig positionieren, ist Zone Systeme Dies demilitarisierte genannt). eine um Zone sich sich risierte Sie es beschäf- handelt sollten DMZ-Architektur Hierbei der sollen, mit tigen. werden Firewall-Konzepts Ihres genutzt oder Implementierung Netz Internet die im für vertrauenswürdigen Anwendern nicht anderen von einem die von möchten, anbieten Dienste Sie DMZ Sobald 3.2 Screening-Router 3.2 ). 3.3 Firewall-Architekturen 3 ). 3.2 DMZ library open source

Screening-Router

Abbildung 3.2: Die DMZ wird am einfachsten durch ein drittes Bein am Screening-Router realisiert. Der Screening-Router regelt den Paketfluss.

Ein direkter Zugriff auf das Internet wird so unterbunden1. Die Proxys greifen dann auf die Dienste im Internet zu und dienen dem internen Netz beim Zugriff auf das Internet als Mittelsmann. Alle Dienste, die Sie dem Internet anbieten möchten, wie zum Beispiel ein Web- und ein -Server, werden ebenfalls von Systemen in der DMZ implementiert. Da Sie diese Dienste anbieten möchten, können Sie diese Systeme nicht so schützen wie die internen Systeme, auf die kein Zugriff erlaubt wird. Bei einem erfolgreichen Angriff und Einbruch in diese weniger geschützten Systeme, sind die internen Systeme aber immer noch durch den Screening-Router geschützt, der hoffentlich nicht jeden Zugriff aus der DMZ in das interne Netz erlaubt. Diese Kombination aus Proxys und Paketfilter erhöht die Sicherheit der geschützten Systeme. Selbst wenn Sie keine Proxys einsetzen, erhöht die Auslagerung der ange- botenen Dienste aus dem internen Netz die Sicherheit desselben, da nun bei einem Angriff kein direkter Zugriff auf die weiteren Rechner des internen Netzes möglich ist.

1 Da einige Protokolle nicht von Proxys unterstützt werden, ist für diese Protokolle häufig noch ein direkter Zugriff auf das Internet notwendig, wenn diese Protokolle genutzt werden sollen.

47 open source library ofnlc emeflrihnAgifafdeFrwl eüedZi,mtentspre- reagieren. mit zu Zeit, Netzwerkverbindung) genügend haben der Firewall Sie (Unterbrechung die Maßnahmen Single-Point-of-Failure. auf chenden des Angriff Fehlen erfolgreichen das beim ist hoffentlich Architektur dieser Vorteil Der Architektur Schutzbedürf- der Variationen hohen zahlreiche einem auch mit denkbar. sind Netze Natürlich für erscheinen. nur adäquat natürlich nis Lösung Administrationsauf- diese einhergehende DMZ. lassen damit inneren oder wand der der und möglich, in Hardware-Aufwand Bein Application-Level-Gateways zugreifen schiere weiteres Der ein Datenbanken die Zugriff interne über diesen auf für nur benötigen Dienste Systeme Zugriff diese diese der Falls ist befinden DMZ. Screening-Router und äußeren müssen, inneren Netzwerkkarte der eine dem in nur von besitzen sich noch Dienste immer angebotenen Netz Die interne angrei- geschützt. das Application-Level-Gateway ein wird im- direkt könnte, Angreifer Netz fen der Screening-Router interne inneren wenn der das den Selbst Kann und ist DMZ. geschützt. Application-Level-Gateways äußeren so die der durch überwinden, und noch Screening-Router inneren mer der äußeren in den Bein einem Angreifer jeweils Netzwerkkarten mit zwei stehen über miteinander und Application-Level-Gateways direkt die di- Screening-Router verfügen keine beiden verbinden, die die zu realisiert, Anstatt Abbildung Screening-Router besitzen. in Verbindung zwei rekte Die durch Single-Point-of-Failure. wird zu kein Architektur existiert Firewall dargestellte DMZ mehrstufige multiplen eine der um Bei Abbildung verfügt. ich, DMZs verwende mehrere über DMZ die multiplen beschreiben, der DMZ Begriff Multiple Den 3.3 multiplen der ähnelt Dies Rest. dem und Paketfil- Abschnitt). DMZ externe (nächster der Der DMZ zwischen Netz. Verkehr internen Paketfil- den dem Paketfilter und regelt zwei interne DMZ ter Der durch der Paketfilter. zwischen DMZ Netz internen Verkehr die dieses den einen Sie regelt und Screening-Router der können externen der in einen ist, nur realisieren: Angreifer akzeptabel ter da nicht der zuzugreifen, dies ist Netz Wenn er- kann, schützt. interne der werden das macht, ausgenutzt auf der Fehler Angreifer Lage, bei einen einem Programmierer Screening-Routers von der des folgreich Single-Point-of-Failure, oder Entwicklung einem Administrator oder auf der Einrichtung Architektur Wenn der Screening-Router. Sicherheit dem die basiert Dennoch 48 einen Sie dann Falls Ihnen möchte. gefunden. er verkaufen Virenscanner warum nie einen ihn, noch und Sie eine IDS fragen sie ein erwähnt: verspricht, noch ich diese Her- auch schon habe Ihnen der der Wie Realität Hochglanzprospekten finden, in der einfach. Hersteller mag In Diese nicht existieren. nicht. ist es steller gibt Architektur Firewall richtigen sichere 100%ig der Architektur Wahl der Wahl Die 3.4 3.3 eg a Prinzip. das zeigt Firewall-Architekturen 3 3.3 3.4 Wahl der Architektur library open source

Screening-Router

Screening-Router

Abbildung 3.3: Bei einer multiplen DMZ gibt es keinen Single-Point-of-Failure.

Die Wahl der Architektur ist entscheidend für die Standhaftigkeit der Firewall. Ver- gleichen Sie Ihr Netzwerk mit einer Stadt aus dem Mittelalter. Im Mittelalter war jede Stadt in Bezug auf ihren Schutz auf sich allein gestellt. Es gab keine Polizei- gewalt, die den Austausch von Waren und das Reisen zwischen den Städten über- wachte. Vielmehr regierten außerhalb der Städte meistens Raubritter und Diebe. Es herrschte Anarchie, wie es heute in vielen Bereichen des Internets der Fall ist. Sobald Sie Ihr Netz mit dem Internet verbinden, sind Sie daher bezüglich der Si- cherheit Ihres Netzes auch auf sich allein gestellt. Sie müssen sich, wie die Städte im Mittelalter, gegen jeden nur möglichen Angriff verteidigen. Im Mittelalter bauten die Stadtbewohner daher Burgmauern und zogen Gräben. Meist wurde nicht nur eine Mauer oder ein Graben gezogen, damit die Verteidiger ausreichend Zeit für

49 open source library i ertfie ytmInnhfetihdentedg etzrVorbereitung gelangt. zur Netz Ihr Zeit in notwendige Angreifer bietet die der Ab- angreift, bevor hoffentlich die gezielt Verteidigung, Ihnen durch der tatsächlich Sie System Firewall Angreifer mehrstufiges mehrstufigen ein einer ein Falls mit geschützt. Sie gut sind schreckung Angriffe derartige Früchte) Ziele hängende Gegen geschützten (niedrig fruits« schlecht hanging die sich »low nur zeigt als bezeichnet. auch heute auch häufig Auch werden Angreifer Diese auf. angreifen. dass Schutzwälle Mittelalter, mehrere im Sie Technologien wie bauen unterschiedliche und Firewall-Architektur gießen. Verteidigung, Ihrer zu in zur Angreifer Gelegenheit, daher die die Sie die über und auch Zeit es benötigte Nutzen um der bringen, Boote in zu hatten Graben Sieden Verteidiger zum den Öl Die für ihr konnte. überwun- Angreifer Leiter einsetzen der einer nicht mit aber Leitern zwar konnte, Mauer und die werden dass Mauern den so erfolgreich mehrere Kombination, Angriff deren über den und verfügten um Gräben Leitern, Verteidigungsanlagen Mauer lange Gute eine genügend nur durchzuführen. nur Angreifer er der Musste benötigte erhielten. überwinden, Verteidigung der Vorbereitung die 50 Firewall-Architekturen 3 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library i etiiugz ütn s swctg i erhne ukne n zu und kennen zu für Bedrohungen sich die Um wichtig, durchführbar. anonym es fast Angriff ist überall Der rüsten, verstehen. von zu zugenommen. und Verteidigung stark Zeit die jeder Bedrohungen zu die immer, haben ist Vernetzung Modem. die per Durch und Diskette per Informationsaustausch zunehmenden dem und is retaayireae rtai isncatihdsPhänomen. das wissenschaftlich erstmalig aber analysierte Arbeit Diese o e rce,dr–mtänihmWse ugsatt–vruh,i fremde in versucht, – ausgestattet Wissen sich ähnlichem unterscheidet mit Funk- Hacker – interne Der der die Betriebssystems. Cracker, für eines dem Neugierde oder von aus Programms meist eines sich tion interessiert Hacker Hacker klassische klassische Der Der 4.1.1 verantwort- Angriff den für klassi- jedoch den dieser an ist Fällen zunächst lich. seltensten Angreifer den einem In Hacker. bei schen denken Administratoren und meisten Schlussfolge- Die Angreifer Sicherheit. direkt die potenziellen anschließend für Aufwand sich den erforderlichen ergeben über zum Hieraus rungen Gedanken machen. einige Motivation sich seine Sie Motivation und sollten Angreifer Zunächst 4.1 be- 1983 Doktorarbeit seiner erste in Der Cohen auf. Fred Viren Dr. von schrieben von Form in wurde Daten Bedrohung Virus von neue Austausch funktionsfähige zum eine Disketten tauchte von Verbrei- wurden, die Form größere eingesetzt in eine auch Massenspeicher Rechner garantierte und die fanden jedoch Serverraums tung Sobald physika- des Daten. vorhandenen Die und der gewährleistet. Rechnergehäuses Sicherheit Unbefugte Sicherheit des für ihre Sicherheit Systeme war lische Angriffe die wurden, Ordnung. Solange in aufgestellt Zugänge. noch unzugänglich physikalische Welt die auf war sich waren, beschränkten vernetzt nicht Rechner die Solange 4 1 A lrig xsire uhshnfüe rgam,deveeAzihnensVrsaufwiesen. Virus eines Anzeichen viele die Programme, früher schon auch existierten llerdings 1 i asclceVrriugbgn i e ebetn e B PCs IBM des Verbreitung der mit begann Verbreitung tatsächliche Die . entugvnSystemen von Vernetzung der bei Bedrohungen

open source library open source library auc u ihafeka umce,ds ri eodr il ytm einge- Systeme viele besonders in er dass ist. machen, Script-Kiddie drungen zu ein aufmerksam versucht sich in auf Hier Anerkennung dadurch nach motiviert. Suche Möchtegern-Hackerkreisen die und und Hacker- selbst Neugierde durch Exploit meist den werden Aus- ist, Script-Kiddies zum genug abfällig erfahren Alter eher nicht das soll Script-Kiddie entwickeln. Es auf zu Alter. das Bezug jedem dass keinen in bringen, hat es druck wird, gibt gesprochen Script-Kiddies Kiddies Personen. der von dass Tatsache, Die ein von in Vielzahl einzubrechen. Exploit eine Exploit dort um der und einen genutzt, anzugreifen dazu anschließend Hacker Systemen wird wird Skript anderer Häufig entwickeln. Dieses ein verwenden. eingebunden. zu Skript anschließend dass sind, Exploit sie angewiesen, Lage einen den darauf der und entwickelt, in sind analysieren selbst zu Angreifer nicht finden, Diese die zu Angreifer, Sicherheitslücke bezeichnet eine Script-Kiddie Begriff Der Script-Kiddies ( 4.1.2 Webpage seiner auf können. hat identifizieren Hacker Club Computer ethics Chaos in erforder- tatsächlich Der Angriff den interessiert, Bezahlung). für gegen daran die (teilweise meist Informationen nicht veröffentlicht lichen Er normalerweise einzudringen. ist Systeme fremde Hacker klassische Der ist«. so möglich einen es er das »weil hat und um so Weiterbildung erfolgreich, auszunutzen, er Ist Fehler gebrauchen. genannten diese zu Logik- Zwecken er, anderen Programmier-, zu versucht dabei Programm findet Anschließend und Designfehler. Algorith- Softwarefunktionen und oder die Programmiersprachen analysiert verwendeten Er sehr über die men. verfügt über Hacker Der Wissen anzurichten. spezialisiertes Schaden dort und einzudringen Systeme 52 den um handeln. sich VPN-Zugänge es um kann Zugänge oder Dabei über Netz werden. sie im überwacht da Zugang Firewall machen, lokalen der Firewall von die nicht um die Gedanken verfügen, keine unter sich müssen sie Meist Personen Informationen angreifen. können diese besser interne Dadurch oder Diese sind. über umgehen zugänglich handeln. Sicherheitsvorkehrungen sie nicht Umständen andere da möch- Angreifern oder gefährlich, anderen üben Berater die besonders Rache Zulieferer, verfügen, so um die deshalb sich Mitarbeiter, sind es enttäuschte Personen Wis- kann um internes Weiteren Insider. über auch Des die der aber ten. Mitarbeiter, ist entlassene oder um Angreifern verfügen, Beispiel potenziellen sen zum von sich es Gruppe handelt gefährliche Hier sehr zweite InsiderEine 4.1.3 ieHce-ti eöfnlct i e ihwhshilc i meisten die wahrscheinlich sich der mit veröffentlicht, Hacker-Ethik eine ) Exploit eudn en oiainitmitNuire Wissensdrang, Neugierde, meist ist Motivation Seine gefunden. erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 http://www.ccc.de/hacker 4.1 Angreifer und Motivation library

Auch wenn diese Gruppe häufig nicht über so hohes technisches Wissen in Bezug auf Sicherheitslücken wie ein Hacker verfügt, ist ihre kriminelle Energie meist höher

einzustufen. open source

4.1.4 Mitbewerber Auch Mitbewerber gehören zu den potenziellen Angreifern. Dabei reichen teilweise sicherlich auch Denial-of-Service-Angriffe aus, um einen wirtschaftlichen Vorteil zu erhalten. Stellen Sie sich vor, Sie suchen einen neuen Partner für das Outsourcing Ihrer E-Mail-Kommunikation inklusive Spam- und Virenschutz. In der heißen Phase der Verhandlung mit zwei potenziellen Partnern ist eines der beiden Unternehmen per E-Mail nicht mehr erreichbar. Welchem der beiden potenziellen Partnern ver- trauen Sie mehr? Unternehmen A, das gerade unter einem Denial-of-Service-Angriff (DoS) leidet, oder Unternehmen B, das diesen DoS durchführt oder in Auftrag ge- geben hat? Natürlich sind Ihre Mitbewerber aber auch an Ihren Daten interessiert. Wenn sich also die Gelegenheit ergibt, Zugang zu Ihrer Datenbank zu erhalten, den E-Mail- Verkehr mit Ihren Kunden mitzulesen oder Zugang zu neuen Produktentwicklun- gen zu erhalten, sind Ihre Mitbewerber sicherlich sehr interessiert. Ihre Mitbewerber haben meist auch die finanziellen Möglichkeiten, hochqualifizierte Angreifer (Industriespione) zu bezahlen. So können Ihre Mitbewerber selbst dann zur Gefahr werden, wenn sie selbst über kein entsprechendes Wissen verfügen.

4.1.5 Geheimdienste Die Geheimdienste waren schon immer an allen Informationen interessiert. Sie hö- ren die Kommunikation zwischen Regierungen, aber auch zwischen Unternehmen ab. Häufig betreiben sie auch Wirtschaftsspionage mit nationalem Interesse, um Unternehmen aus dem eigenen Land einen Wettbewerbsvorteil zu verschaffen. Die Nachrichtendienste verfügen meist über ausreichend finanzielle Mittel, die erforder- lichen Kenntnisse sowie die notwendigen Netzwerke und Computer, um Angriffe und Einbrüche durchzuführen. Sie sind auch in der Lage, schwach verschlüsselte Informationen sehr einfach und schnell zu entschlüsseln. Schließlich besitzen sie häufig auch die Möglichkeit, sich physikalischen Zugang zu bestimmten Informationen zu verschaffen, wenn ein Computerangriff nicht erfolg- reich ist. Häufig ist ein physikalischer Einbruch sogar einfacher.

4.1.6 Terroristen und organisierte Kriminalität Auch Terroristen und das organisierte Verbrechen erkennen im Internet immer mehr ein Potenzial für ihre Geschäfte – sowohl, um eigene Geschäfte über das In- ternet abzuwickeln, als auch, um durch Angriffe und Einbrüche an sensitive Daten heranzukommen.

53 open source library e ugh,devnMteebr neeetwerden. angeheuert Industriespio- Mitbewerbern den von und die Geheimdiensten ausgeht, den nen von GefahrenPotenzial größte das dass i erctt anmnrctenahdeGrafik die einfach Ener- recht kriminelle ihre man und kann Know-how betrachtet, ihr Angreifer, gie potenziellen die Entwicklungen nun und man Tendenzen Wenn 4.2 (Spam SPIT Der als erleben. wird VoIP Spam Form bezeichnet. Diese Medium mit Internet-Telefonie) worden. E-Mail das gefunden via bei bereits für ist Moment VoIP-Spam schon im für zunehmen sie befürchte Begriff wir weiter selbst wie stark Ich Entwicklungen, Zukunft entdecken. ähnliche nächster Medien in weitere September sicherlich und 11. werden dem Angriffe unternommen. nach Derartige Websites wurden muslimische So auf Angriffe motiviert. viele politisch besonders 2001 auch sind Angriffe Viele und 14/2004 Kon- 49292 c’t über (siehe angeblich Mafia verfügte default.shtml Online-Wettbüros russischen Erpresserring hat, zur Der versucht erpressen. takte Erpresserring zu ein DoS-Angriffen dass Empfänger mit bekannt, den auch die wurde versenden, 2004 we- zu sollen. bewegen von E-Mails Viagra Geschäft Zahl von ein großer unwissender Kauf zum mehr in Rechner um immer kompromittierte genutzt, ist werden vor- Anwender Spam Dabei nicht von Banden. Login-Informationen noch organisierten Versand an sicherlich nigen der gezielt 2005 Auch Banden und gelangen. organisierte 2004 zu versuchen Jahre Phishing der Beim Phishing-Angriffe bei. die sind So 54 krimineller steigender mit steigt Know-how. Angriffs steigendem erfolgreichen und eines Energie Risiko Das 4.1: Abbildung ). und http://www.heise.de/newsticker/result.xhtml?url=/newsticker/meldung/

Kriminelle Energie > Interne Angreifer Scriptkiddies Know-How Know-How > erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 Industriespione Geheimdienste Hacker 4.1 http://www.heise.de/ct/04/14/048/ regn is rfi zeigt, Grafik Diese erzeugen. 4.3 Schutzziele library open source

Abbildung 4.2: Die Qualität der Angriffswerkzeuge nimmt seit einigen Jahren stark zu. Das notwendige Know-how sinkt daher stetig.

Allerdings sollten Sie auch die Insider nicht aus den Augen verlieren. Ihre hohe kriminelle Energie macht sie besonders gefährlich. Die Script-Kiddies sind meist zu vernachlässigen. Sie führen keine gezielten Angriffe auf Sie durch, sondern suchen meist allgemein nach verwundbaren Systemen. Sie suchen die niedriger hängen- den Früchte, die leicht zu erreichen und anzugreifen sind. Ein gezielter Angriff gegen Ihre Systeme durch Script-Kiddies ist unwahrscheinlich, wenn Sie Ihre Haus- aufgaben gemacht haben, Ihre erreichbaren Systeme ordentlich gepatcht sind und Sie über eine Firewall verfügen. Dann zählen Sie nicht zu den niedrig hängenden Früchten. Dennoch müssen Sie möglicherweise mit gezielten Angriffen durch Mit- bewerber, Industriespione etc. rechnen. Hier kommt erschwerend hinzu, dass in den letzten Jahren die Angriffswerkzeuge immer besser geworden sind und das er- forderliche Know-how des Durchschnittseindringlings entsprechend abgenommen hat (siehe Abbildung 4.2)

4.3 Schutzziele

In diesem Abschnitt möchte ich ganz allgemein die zu schützenden Ziele beschrei- ben. Im Grunde gibt es vier Ziele beim Schutz von Netzen, Rechnern und Daten: I Integrität I Vertraulichkeit I Authentizität I Verfügbarkeit Datenintegrität bedeutet, dass eine Änderung der Daten durch Unbefugte nicht un- bemerkt bleibt. Die Integrität von Daten wird üblicherweise durch kryptographische Prüfsummen erreicht. Die Vertraulichkeit der Daten wird meist mit Hilfe von eingeschränkten Leserechten und zusätzlicher Verschlüsselung erreicht. Nur autorisierte Personen erhalten den

55 open source library irmse i ihbienrFrwl ölcewieasürihGdne ma- verlieren. Gedanken Blickfeld ausführlich möglicherweise dem Firewall aus Den- einer nicht bei uninteressant. chen. Datenschutz wol- sich Sie den Sie aufbauen Beispiel für müssen Fortune500 Hier zum möglicherweise der Sie Überlegungen Unternehmen sollten letzten ein noch für diese Firewall sind eine len, nicht Sie Falls Personen Sicherstellung andere Protokollie- und werden Revisionssicherheit sehen. das zur Nachvollziehbarkeit wird, Datenschutz Hilfsmittel der sehen wertvolle der Protokollen kritisch Während den hier in sein. eine Daten betroffen kann personenbezogener Fire- häufig Rahmenbedingungen eine ren durch hier dieser Protokollierung wird die Erfüllung Gerade wall spielen. und Aufgabe wichtige Einhaltung eine Firewall der bei Auch Ge- gültigen international viele auch Da sie unterliegen setzen. Sarbanes-Oxley-Act. ge- arbeiten, der komplexe global und sehr heute Unternehmen Basel-2 auch wie aber zum Rahmenbedingungen, Daten, wie sein, setzliche personenbezogener gesetzliche Gesetze Datenschutz auch einfache der können spielen Das Beispiel Revisions- Schließlich Rolle. spezielle Die große -haltung. und eine Rolle. und Rahmenbedingungen Inventuren sein. große Datenspeicherung Erhebungen, nachvollziehbar eine der Protokolle, muss Formen häufig zusätzliche Bank, hier verlangt einer spielt sicherheit in Revisionssicherheit Datenverar- for- Beispiel der die auch zum Nachvollziehbarkeit Auch Zielen die Vorgang, technischen Beispiel Jeder sehr zum beitung. diesen gehören neben Hierzu es Ziele. male gibt Unternehmen größeren In Internet- Spoofing- Abwehr die die einfachen sicherstellen. hochverfügbar durch anbindung selbst vor Daten oder aber der garantieren Verfügbarkeit schützt Denial-of-Service-Angriffs die eines Sie auch sie prüfen. kann begrenzt Schließlich Angriffen. nur Authentizität Die Firewall können. Kommunikati- eine werden bestimmte aufgebaut kann Ver- außen dass nach die verhindert, und stellt sie von indem Sie onsverbindungen sicher, ablehnt. Daten Datenbankserver, Kommuni- von sichert Eine den nichtautorisierte traulichkeit Sie haben. sie an erreichen. tun indem Beispiel zu Daten, zu zum gespeicherten Sicherheitsziele Firewall kationsanfragen, lokal diese einer der um mit Integrität Werkzeug, nun die ein Ziele auch diese ist was Firewall fragen, sich mögen Sie technische sichern. ge- häufig zu etc. Verfügbarkeit werden Cluster die Hier um Stromversorgungen, nutzt, unterbrechungsfreie sind. Backups, dass verfügbar verlangt, wie jederzeit Ziel Hilfsmittel, Dieses Daten vernachlässigt. gewünschten häufig wird die Daten von Verfügbarkeit Die In stammen. digitale Quelle und richtigen erreicht. Authentifizierungen der Signaturen durch aus dies Daten wird die Kommunikationsbeziehung das dass einer sicher, oder stellt Kommunikation Authentizität Die einer unmöglich. Abhören so wird Das Daten von Entschlüsselung. Ausspähen die für Schlüssel 56 erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 4.4 Angriffsmethoden library

4.4 Angriffsmethoden

Die meisten Angriffe lassen sich in wenigen Gruppen kategorisieren. Im Folgenden open source stelle ich Ihnen die wichtigsten Kategorien vor.

Hinweis Ich konzentriere mich im Weiteren auf die sehr technische Seite der möglichen Angriffe über ein Netzwerk. Daneben gibt es natürlich auch noch: I Social Engineering. Hier versucht der Angreifer, durch soziale Kompetenz vertrauliche Informationen, wie zum Beispiel Kenn- wörter, zu erhalten. Hierzu täuscht er einen legitimen Benutzer, einen Administrator oder andere vertrauenswürdige Personen vor. Kevin Mitnick hat ein sehr eindrucksvolles Buch zu diesem Thema geschrieben (The Art of Deception, Kevin Mitnick, 2003). I War Dialing. Anstatt den direkten Zugang durch eine Firewall zu suchen, bemüht sich der Angreifer, alternative Zugänge über unbewachte Modem- oder ISDN-Zugänge zu finden. Hierfür verwendet er Software, die jede erdenkliche Telefonnummer eines Unternehmens anwählt und die Antwort testet.

Zunächst gibt es die große Menge der Denial-of-Service-Angriffe. Hier versucht der Angreifer nicht, die Kontrolle über das System zu erhalten, sondern die Funktion des Systems zu stören. Beim Spoofing täuscht der Angreifer eine falsche Identität als Client oder Server vor. Beim Hijacking versucht ein Angreifer, eine aufgebaute Ver- bindung zu kapern. Ein Bufferoverflow kann auch einen Denial-of-Service auslösen. Jedoch versucht der Angreifer, wenn möglich mit einem Bufferoverflow die Kon- trolle über das System zu übernehmen. Der Bufferoverflow wird durch Program- mierfehler in den betroffenen Applikationen möglich. Der Formatstring-Angriff ist dem Bufferoverflow sehr ähnlich und erlaubt den Angreifer ebenfalls häufig die Übernahme der Kontrolle. Bei der Race-Condition handelt es sich um einen Feh- ler in der Programmlogik. Hierbei konkurrieren zwei Prozesse um eine Ressource. Wenn der Programmierer die Ressource nicht richtig vor dem Zugriff des zweiten Prozesses geschützt hat, kann der Angreifer dies ausnutzen. Die SQL-Injektion ist ein typischer Angriff auf Webserver mit dynamischen datenbankgestützten Websei- ten. Hier versucht der Angreifer, die von der Webapplikation verwendeten SQL- Abfragen zu modifizieren. So kann er auf Daten zugreifen, die die Webapplikation normalerweise nicht ausgeben würde, oder sogar die Daten in der Datenbank mo- difizieren. Im Folgenden werden die verschiedenen Angriffsmethoden ausführlicher darge- stellt. Ich werde Ihnen dann auch verschiedene Möglichkeiten der Abwehr nen- nen.

57 open source library hndnvrcidnnShctn u ee i omnkto erfolgt. Kommunikation die entspre- denen Diese auf durchzuführen. Schichten, DoS verschiedenen einen den Möglichkeiten, chen verschiedene viele gibt Servers DoS. eines Es einen einfachsten Kabel unwissentlich Im das bereits Staubsauger kann. zieht, ihrem Steckdose zugreifen mit der Dienst die aus Putzfrau, diesen eine dass auf bereits so, mehr verübt Dienstes Fall nicht eines Funktion Nutzer die legitimer Angreifer ein der stört Denial-of-Service einem (DoS) Denial-of-Service Bei 4.4.1 58 I I ndee ael epihr ednkne,s usdrSre Verbindungen Server der muss löschen. Verbindungen Tabelle so als dieser können, Pakete, nur aus werden mehr Computern) gespeichert Angreifer in Tabelle der dieser Tabellen Sendet in anderen auf. allen Größe begrenzte (ähnlich eine eintragen. jedoch Pending-Connections-Tabelle weist die Tabelle ant- in TCP-SYN/ACK-Paket Diese Verbindungen einem diese mit TCP-SYN-Pakete und Rechnern. alle existenten worten auf nicht Absenderadresse wird von Absenderadressen Server die hier Der zufällig sind von Sinnvoll Angreifer Vielzahl Pakete. der einer der mit fälscht Server den Hierbei Angreifer TCP-SYN-Paketen. der überflutet SYN-Flood einem Bei Connec- (Established Verbindungen aufgebauten eingetragen. Status Pending-Connections-Tabelle der tions) der den Tabelle der aus Verbindung in das wird und die Paket, gelöscht und erhält Verbindung dritte wird, aufgebauten das Verbindun- erhalten einer schwebenden Sobald Clients, Verbin- alle Connections). des der die (Pending TCP-ACK-Paket in er werden ab, vorgehalten speichert Server Tabelle gen kann, der einer sich erinnern in Damit Verbindungsaufbau Server dungsinformationen SYN/ACK-Paket. diesen Der einem anzeigen. an mit Verbindungsaufbau später Paket einen dieses die auf Pakete, Hierbei antwortet um TCP-SYN-Pakete. sich viele es generiert führt und Angreifer handelt an Der Servers durch. des SYN-Flood TCP-Stack den einen greift DoS-Angriff mögliche Absender- Syste- nächste Der verschiedenen die schwer. vielen sehr jedoch von das Pakete Werden ist diese verschickt, kann. und men filtern gefälscht möglich, Pakete vorher Providers der des vielleicht adressen Unterstützung Verkehr mit nur den Bot-Netz ist der Angriff Ein diesem vor werden. verwendet. Schutz Spam-E-Mails gesteuert Ein von Angreifer Versand zusammengeschlossen den dem Netz für nöti- häufig von einem wird den in gemeinsam möglich, Tausenden und wohl zu wurden (meist sehr die Rechner trojanisierte Windows), Bot-Netzen sind Microsoft Bot-Netze genannten generieren. so zu Netzwerkverkehr mit gen es erreichen. Der ist zu haben. Ziel Allerdings zugenommen sein stark um durchzu- Jahren Ressourcen, Angriff letzten enorme diesen den benötigt geworden, in Angreifer Bandbreiten schwierig Band- die sehr deren da durch heute führen, ist ist und Es Schicht Die- physikalischen begrenzt. wird. der transportiert breite komplett auf langsam also Servers sehr erfolgt nur Angriff des Verkehr ser Netzwerkbandbreite weiterer dass die so versuchen, auszulasten, kann Angreifer Der erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 4.4 Angriffsmethoden library

Erfolgt gleichzeitig zum SYN-Flood ein korrekter Verbindungsaufbau durch einen echten Client, so kann der Server nicht zwischen dieser Verbindung

und den Verbindungen des Angreifers unterscheiden. Sendet der Angreifer die open source TCP-SYN-Pakete so schnell, dass der Server auch die echte Verbindung aus der Tabelle der Pending Connections entfernen muss, bevor das dritte Paket des TCP-Handshakes vom Client empfangen wird, so wird der Server dieses Paket zurückweisen, da er keine Informationen über die Verbindung mehr besitzt. Die Verbindung wird abgebrochen und der Dienst steht nicht mehr zur Verfügung. Viele TCP-Implementierungen brechen ab 100 TCP-SYN-Paketen pro Sekunde zusammen. Linux bietet die SYN-Cookies . Diese erlauben immer noch einen Verbindungsaufbau bei einem SYN-Flood mit bis zu 100.000 SYN-Paketen pro Sekunde. Hierbei wird die Tabelle der Pending Connections ignoriert und ledig- lich auf Basis der Sequenznummer über einen Verbindungsaufbau entschieden. Die Funktionsweise wird in Kapitel 23 beschrieben.

4.4.2 Spoofing Spoofing bezeichnet Angriffe, bei denen der Angreifer bestimmte Informationen fälscht. Meist erfolgt dies, um die Identität eines anderen Rechners anzunehmen. Drei verschiedene Arten des Spoofings werden heute durchgeführt. Hierbei handelt es sich um: I IP-Spoofing. Bei dem IP-Spoofing verändert der Angreifer den IP-Header seiner Pakete. Meist fälscht er seine Absender-IP-Adresse. Hiermit kann er die Identität eines anderen Rechners annehmen. Dies erfolgt, um entweder seine Spuren zu verwischen oder um Vertrauensstellungen zwischen gewissen Rechnern auszu- nutzen. I ARP-Spoofing. Dies wird besonders von Angreifern in geswitchten Netzen ein- gesetzt, um trotz des Einsatzes eines Switches weiterhin sämtliche ausgetausch- ten Pakete zu protokollieren. Hierbei werden ARP-Antworten gefälscht. Außer- dem wird es für ein TCP-Session-Hijacking verwendet (s.u.). I DNS-Spoofing. Hierbei fälscht ein Angreifer die Zuordnung eines DNS-Namens zu einer IP-Adresse, indem er die Antwort eines DNS-Servers fälscht.

IP-Spoofing Dies ist die älteste Variante des Spoofings. Hierbei täuscht der Angreifer eine andere IP-Adresse als Absender vor. Dies wird zum Beispiel beim SYN-Flood verwendet, um die eigenen Spuren zu verwischen. Das IP-Spoofing kann jedoch auch für einen direkten Angriff genutzt werden. Bei dem SMURF-Angriff sendet der Angreifer ein ICMP-Echo-Request-Paket an die Broadcast-Adresse eines Netzwerks. Sämtliche Unix-Rechner dieses Netzwerks rea- gieren mit einem ICMP-Echo-Reply-Paket. Der Angreifer erhält hiermit also eine Multiplikation seiner Pakete. Fälscht der Angreifer nun die Absenderadresse so, dass sie die IP-Adresse des anzugreifenden Rechners darstellt, antworten alle Unix-

59 open source library ähih ilvrad.U isz rölce,bsttdrSic ieLse in ARP-Reply. Liste, (Abbildung eine ARP-Spoofing-Angriff Switch dem der Bei werden. tat- abgespeichert besitzt das Geräte ermöglichen, an angeschlossenen zu nur der dies MAC-Adressen Switch die Um vom Broadcast-Ethernet- versandt. jedoch die Ziel wird anschließend an sächliche IP-Paket Der weiterleiten. dieser mit eingesetzt, Geräte Ethernet-Rahmen da angeschlossenen Switch versandte alle ARP-Request, an ein den ist, gerichtet Netzwerk zunächst Adresse dieser diesem wird in so Geschwindigkeitsgründen aus Zielsystems. Wird des Zielsystems MAC-Adresse des die IP-Adresse an senden die MAC-Adresse Ethernet-Rahmen an Zielsystems den IP-Paket dazugehörige das und des die er IP-Adresse sendet um Anschließend die ARP-Request, ermitteln. zu- zu an einen ARP-Protokoll IP-Paket zunächst zu- das sendet ein Kommunikation ist möchte, der eigentliche Hierfür Rechner, die Ethernet-MAC-Adressen. Der die ständig. für be- noch Ethernet-Netzwerk so auch einem möchten, nächst unterhalten in IP-Protokoll sie dem mit nötigen sich werden. Netzwerkgeräte betrachtet zwei ausführlicher Wenn wenig ein Switch hier soll einen Angriff durch zweite TCP-Session- Der die ein einzusetzen. Umgebung, Netzwerksniffer Ziel, einer einen dennoch das in wird, oder entweder kontrolliert (s.u.) Angreifer durchzuführen der Hijacking verfolgt ARP-Spoofing Beim ARP-Spoofing Absenderadresse andere keine Netz physikalischen dann diesem werden, verwenden. Sie verwendet aus Wenn 192.168.0.0/24 sollten Netzwerk Anfragen akzeptiert. Hierbei dem IP-Adressen dürfen möglich. aus unzulässigen Adressen Firewall keine DMZ einer Ihrer Firewall in auf die nur dass ist achten, darauf IP-Spoofing vor korrekten Schutz dem Ein von sie käme akzeptiert als dann protokolliert, wird Rechner. dementsprechend Paket Meldung Das wenn die fälscht. Fall, mit entsprechend und diesem Meldungen IP-Adresse in die es von genügt Angreifer Protokollierung so der IP-Adressen, die bestimmten nur Syslogd-Server UDP-Protokoll ein dem Beispiel zum Erlaubt spoofen. darüber Acknowledgement-Nummern muss TCP- und Angreifer Schutz einer Sequenz- Der die Bei IP-Adresse. keinen auch der arbeitet. hinaus Fälschen bietet verbindungsorientiert das nicht nicht UDP-Protokoll genügt es Verbindung Das da Vertrauensstellun- Paketen, auszunutzen. um gespooften werden, vor Rechnern verwendet zwischen auch IP-Spoofing gen das Ad- kann dem Schließlich oder Hersteller eine dem von nur wird. meist abgestellt Broadcast-Echo-Request-Paket heute ministrator ein zu die auf Unix-Systemen, Rechners Antwort von angegriffenen Eigenschaft die so des ist genug, Netzwerkverbindung Jedoch häufig die dies überlasten. Erfolgt Möglichkeit, Rechner. die diesen an besteht Broadcast-Ping einem bei Rechner 60 erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 4.3 äsh e nrie Lpo)den () Angreifer der fälscht ) 4.4 Angriffsmethoden library

Switch open source

IP: 192.168.0.7 MAC: 7 IP: 192.168.0.5 MAC: 5

IP: 192.168.0.6 MAC: 6

Abbildung 4.3: ARP-Spoofing bei einem Switch.

1. Der Rechner 192.168.0.5 möchte ein Paket an den Rechner 192.168.0.6 senden. Er sendet einen ARP-Request: Welche MAC-Adresse hat der Rechner 192.168.0.6?

2. Der Angreifer beantwortet diese Anfrage nun. Hierzu fälscht er die Antwort, indem er Folgendes sendet: Der Rechner mit der IP-Adresse 192.168.0.6 besitzt die MAC-Adresse 7.

3. Der Rechner 192.168.0.5 sendet nun sein IP-Paket an: Ziel-IP: 192.168.0.6; Ziel- MAC: 7. Der Switch ist nicht in der Lage, die IP-Adressen zu lesen. Er arbeitet lediglich auf der Ebene der MAC-Adressen. Er schlägt in seiner Tabelle nach und stellt fest, dass das Netzwerkgerät mit der MAC-Adresse 7 an Port 4 ange- schlossen ist, und leitet das Paket an diesen Port weiter.

4. Der Angreifer muss auf seinem Rechner eine -Software aktivieren. Der Rechner des Angreifers erhält nun das Paket und verarbeitet es, da es an die MAC-Adresse seiner Netzwerkkarte gerichtet ist. Es ist jedoch nicht an seine IP-Adresse gerichtet. Dies ist typisch für einen Router. Wurde das Routing ak- tiviert, so leitet dieser Rechner das Paket nun an die IP-Adresse 192.168.0.6 und die MAC-Adresse 6 weiter. Als Absender trägt er die IP-Adresse 192.168.0.5 und seine eigene MAC-Adresse 7 ein. Der Switch wird dieses Paket nun beim rich- tigen Empfänger zustellen. Dieser wird das Paket verarbeiten und umgekehrt antworten.

Es existieren fertige Werkzeuge, die in der Lage sind, unter Linux ein ARP-Spoofing durchzuführen. Ein Schutz vor ARP-Spoofing ist nur durch die folgenden Maßnah- men erreichbar:

61 open source library .D ü is N-nrg bihres uähtdsUPPoooleingesetzt UDP-Protokoll das zunächst üblicherweise DNS-Anfrage diese für Da 2. .DrCin 9.6.. öheen ezekebnugmtdmRechner dem mit Netzwerkverbindung eine möchte 192.168.0.5 Client Der 1. erforderlich: Schritte folgenden die auf sind DNS-Spoofing Angriff Abbildung Beim dem der in der wird durch, Beispiel DNS-Ebene Ein auf gleicht. Angriff ARP-Ebene einen führt DNS-Spoofing Das DNS-Spoofing 62 DNS-Spoofing 4.4: Abbildung I I I e letmt asdrRechner teilt und der DNS-Server) dass echte aufweist. an der mit, antwortet als Client Angreifer (schneller Der DNS-Servers dem echten Pakete. des gespoofte Stelle gegen der Schutz kein existiert wird, ehes mdeez ritl,knatete ennDSSre n fragt und DNS-Server seinen er kontaktiert ermitteln, zu ihnnachderIP-Adressevon diese Um Rechners. www.sparkasse.de e brcriugshle e wthdnPr ab. Port den beschränken. Switch zu der MAC-Adressen schaltet erlaubten Überschreitung Port einem Bei an der Anzahl die lichkeit, Angriffe. auch Port-Security. damit ARP- und alle Änderungen überwacht meldet Er und ARP-Intrusion-Detection-System. Pakete Art eine ist und halten Befehl dem ARPwatch. mit Eintrag statischen einen erzeugen. Linux unter können ARP-Tabellen. Statische e RwthDeo s ndnmitnLnxDsrbtoe ent- Linux-Distributionen meisten den in ist ARPwatch-Daemon Der DNS-Server il rfsinleSice idvrata n itndeMög- die bieten und verwaltbar sind Switches professionelle Viele 192.168.0.5 ubun irubntg rzncs i PArsedieses IP-Adresse die zunächst er benötigt Hierzu aufbauen. Client ? e d . e s s a k r a p s . w w W

=

e d . e s s a k r a p s . 7 . w 0 . i flg isrTble s brsh uwni.Sie aufwendig. sehr aber ist Tabellen dieser Pflege Die w 8 6 W 1 . 2 192.168.0.7 9 1 Hacker www.sparkasse.de erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 www.sparkasse.de . www.sparkasse.de 192.168.0.6 4.4 i PArse192.168.0.7 IP-Adresse die dargestellt. r s"p "mac" "ip" -s arp 4.4 Angriffsmethoden library

3. Der Client wird sich nun mit diesem Rechner verbinden und in Wirklichkeit den Rechner www.sparkasse.de erwarten. Damit der Client diese Illusion erhält, richtet

der Angreifer auf dem Rechner einen Proxy ein, der sämtliche Anfragen an den open source echten Rechner weiterleitet und die Anworten an den Client übermittelt.

4. Dieser Angriff ist leicht durch die Verwendung von SSL zu vereiteln. Dazu ist aber zusätzlich erforderlich, dass der Client das SSL-Protokoll auch korrekt ein- setzt und die Authentifizierung des Servers überprüft.

Es existieren fertige Werkzeuge, die in der Lage sind, unter Linux ein DNS-Spoofing durchzuführen. Auch existieren Werkzeuge, die dann als SSL-Proxy versuchen, eine SSL-Verbindung zu unterwandern. Wenn der Client die SSL-Zertifikate nicht richtig prüft, kann ein Angreifer so eine Verbindung abhören.

Gespoofter Portscan Normalerweise ist ein gespoofter Portscan nicht möglich. Bei einem Portscan ver- sucht der Angreifer, Daten über das untersuchte System zu ermitteln. Spooft er jedoch seine Absenderadresse, so erhält er nie das Ergebnis seines Scans. Verschiedene Werkzeuge wie zum Beispiel Nmap (http://www.nmap.org) versuchen das Problem zu lösen, indem sie jedes Paket in einem Scan mehrfach senden. Alle zusätzlichen Pakete weisen eine gefälschte Absenderadresse (so genannte Decoys) auf. Dies erschwert eine Analyse und Bestimmung des Ursprungs des Portscans sehr oder macht diese Bestimmung sogar unmöglich. Jedoch gibt es auch die Möglichkeit, einen echten gespooften Portscan durchzufüh- ren. Hierzu ist ein dritter Rechner erforderlich. Dieser Rechner sollte gleichzeitig keine aktiven Netzwerkverbindungen besitzen. Daher wird er als Silent Host be- zeichnet. Abbildung 4.5 demonstriert die Vorgehensweise. Der Angreifer sucht zunächst einen so genannten Silent Host. Dies ist ein Rechner, der gleichzeitig keine anderen Netzwerkverbindungen unterhält. Hierbei kann es

Abbildung 4.5: Gespoofter Portscan

63 open source library 2. geschlossen. ist Port 1. der oder den Ab- offen, an ist die Port Antworten er Der seine fälscht Möglichkeiten: Hierbei zwei Opfer nun Opfer. das existieren das TCP-SYN-Pakete dass mehrere an so, sendet Abständen senderadresse Er regelmäßigen Portscan. gleichen dem den mit in Angreifer der beginnt Nun 256.) erscheint Win- als Linux (Achtung: Unter Inkrementierungsschritt inkrementiert. Identifikationsnummer. der 1 der damit Bytes um beiden immer die Nummer vertauscht diese dows wird so versendet, kete cn»deSa«uddrSln-otwr l Zmi«bzihe.Sebenötigen Sie der bezeichnet. heißt »Zombie« Hier als durchführen. unbedingt wird auch nicht Silent-Host also Versionen der einigen und seit »Idle-Scan« Scan Scan diesen kann nicht Nmap Portscans des Herkunft die kann so werden. wird, festgestellt überwacht Firewall vom eine durch es nicht dass nicht, dies vermutet, sich Opfer Ändert Das war. offen geschlossen. Port Port der der dass war Zeichen, so ein ist Dies inkrementiert. auf IP-Identifikationsnummer steigende TCP-RST/ACK- eine ein Paket weisen jedes Pakete für (Abbildung Diese erhält Er zurück. an senden. Paket (1/Sekunde) zu Abständen Port regelmäßigen han- geschlossenen in Universität einen TCP-SYN-Pakete asiatischen nun, einer beginnt 98-Rechner Er Windows deln. einen um Beispiel zum sich 64 in Angreifer der dass erforderlich, (Ses- jedoch Angreifer einen es durch ist Verbindung Hierzu der möglich. Übernehmen ein Hijacking) das ist sion wenn ist, selbst Fall Aber der wenn können. nicht werden vorgeführt, vorhergesagt TCP-Protokolls Sequenznummern des initialen Verwundbarkeit die die hat Mitnick-Angriff Hijacking Der Session 4.4.3 e rtkleIrrFrwl aafahe,ds atal nomtoe nden in Informationen alle fast dass achten, Analyse darauf der bei Firewall Protokollenfalschseinkönnen. lediglich sollten Ihrer Sie schützen. Protokolle nicht der sich Sie können Scan diesem Vor eemßgnAsädna a pe esne,wr i IP-Identifikationsnum- die vom wird die versendet, Pakete, Opfer der mer das an Abständen regelmäßigen der Da pe i ie C-S/C-ae nden an TCP-RST/ACK-Paket einem mit Opfer für Verbindung Geschlossen: die ist Damit Opfer. das an beendet. TCP-RST-Paket alle ein sendet und nen den an TCP-SYN/ACK-Paket Offen: a ae ih i ie etrnPaket. weiteren einem mit nicht Paket das ietHost Silent endrPr u e pe fe s,s nwre a pe i einem mit Opfer das antwortet so ist, offen Opfer dem auf Port der Wenn C.2 u Seite auf endrPr u e pe eclse s,s nwre das antwortet so ist, geschlossen Opfer dem auf Port der Wenn endrPr u e pe fe a,nnwieePkt in Pakete weitere nun war, offen Opfer dem auf Port der wenn , hping ietHost Silent enSebrisNa ntlir haben. installiert Nmap bereits Sie wenn , 601 .Wn e ehe lihetgkiewiee Pa- weiteren keine gleichzeitig Rechner der Wenn ). ietHost Silent ietHost Silent ndnAgefrgsne edn me m2 um immer werden, gesendet Angreifer den an erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 isrkn issPktnctzuord- nicht Paket dieses kann Dieser . ecntwr.Wn der Wenn wird. gescannt ietHost Silent ietHost Silent isrrair auf reagiert Dieser . ietHost Silent edt Es sendet. 4.4 Angriffsmethoden library der Lage ist, die Verbindung zu beobachten. Er kann dann die verwendeten TCP- Sequenznummern direkt von den ausgetauschten Paketen ablesen.

Durch eine sinnvolle Konstruktion von gespooften Paketen ist es dann möglich, open source eigene Daten in diese Verbindung zu injizieren. Dieser Angriff war in der Vergan- genheit sehr kompliziert und schwer durchzuführen. Seit einigen Jahren existieren jedoch mehrere Werkzeuge, die dies stark vereinfachen. Die bekanntesten Werk- zeuge sind juggernaut und hunt. Im Folgenden soll schematisch die Funktionsweise von hunt erläutert werden.

1. Wenn hunt eine laufende Verbindung beobachtet, so ist es in der Lage, diese Ver- bindung zu übernehmen. Das Programm hunt ist hierbei für Rlogin- und Telnet- Verbindungen optimiert. Der Angriff erfolgt, in dem hunt sowohl den Client als auch den Server davor überzeugt, dass sie die Pakete an andere MAC-Adressen versenden müssen (ARP-Spoofing). Anschließend senden sowohl Client als auch Server weiterhin korrekte TCP/IP-Pakete. Diese werden jedoch nicht mehr von der Gegenseite gesehen, da sie an falsche und unter Umständen nicht existente MAC-Adressen gerichtet sind. hunt sieht jedoch weiterhin diese Pakete und ist in der Lage, die wichtigen Informationen zwischen Client und Server auszutau- schen.

2. Nun kann hunt weitere Informationen in den Fluss dieser Verbindung injizieren. Da hunt dieTCP-Paketesieht,kannhunt die erforderlichen Sequenznummern berechnen.

3. Der Server wird den Empfang der zusätzlichen Daten bestätigen. Da er jedoch das ACK-Paket an die korrekte IP-Adresse des Clients sendet, aber die falsche MAC-Adresse nutzt, sieht der Client diese Bestätigung nicht und sendet keine Fehlermeldung an den Server. hunt ist weiterhin in der Lage, weitere Daten mit der Vertrauensstellung des Clients an den Server zu senden.

4. Nachdem die Injektion erfolgt ist, bestehen zwei grundsätzliche Möglichkeiten. hunt ist in der Lage, die Verbindung mit einem RST-Paket abzubrechen. hunt ist aber auch in der Lage, die Verbindung zu resynchronisieren. Hierbei werden einige Daten an den Client und den Server gesendet. Außerdem ist es erforder- lich, dass der Benutzer auf dem Client weitere Daten eingibt. Dann kann eine Resynchronisation erfolgreich sein. Der Client hat den Eindruck, dass die Netz- werkverbindung lediglich vorübergehend ausgefallen ist.

Das Werkzeug hunt ist auf der Homepage von Pavel Krauz erhältlich (http://lin.fsid. cvut.cz/~kra/index.html). Leider funktioniert diese URL aktuell nicht. Sie können das Werkzeug aber alternativ von http://packetstorm.linuxsecurity.com/sniffers/hunt/ herun- terladen. Die TCP/IP-Protokolle bieten keinen Schutz vor diesen Angriffen. Ein Schutz ist hier nur durch eine zusätzliche Signatur der Pakete, durch höhere Protokolle oder

65 open source library bee,wbie emSaezie ein n anrcwrsgeht. rückwärts dann und beginnt (siehe Stapelzeiger Anzahl beim zurückgegeben es entsprechende Unterprogramm wobei die ablegen, das um an wird Referenz Stapelzeiger Abbildung als Puffer Der und diesen an. verschoben es Stapel fordert Bytes so dem Variable, auf Stapelzei- eine (Buffer) dem für mit Speicherplatz wird Abbildung vorübergehend Dieser (siehe gramm Punkt. referenziert höchsten Lesen eine das dem (Stackpointer) lediglich auf ist ger kann. erlaubt Daten Stapel Stapel ablegen der Ein Schreiben Daten Der Stapel. und eigenen vorübergehend (Stack). einen Be- Programm besitzt Stapel des ein Programm dem Jedes Stand der aktuellen auf auf Struktur, den IP) sichert dynamische Unterprogramms muss, Pointer, des zurückspringen (Instruction Aufruf Hauptprogramm Unterpro- fehlszeigers dem im das vor es Damit Prozessor wohin kann. der verschiede- weiß, werden von das später aufgerufen realisiert, Hauptprogramms gramm Unterprogramm des einem Auf- Stellen in Diese nen gern vor. dann wiederkehrend Aufgaben werden einzelne gaben kommen hineinversetzen. verste- Programmen Programmierers vielen zu eines In Bufferoverflow Rolle die den in Um sich werden. Sie müssen ausgenutzt Bufferoverflow hen, mögliche Angreifer jeder einem nicht von und kann Bufferoverflow, Program- einem jeder Nicht zu Programmierfehlers. führt eines mierfehler Ergebnis das ist Bufferoverflow Ein Bufferoverflow 4.4.4 authentifiziert. ebenfalls dann Ein ist authentifiziert. und als übernehmen Verbindung Verbindung die die gilt kann Authentifizierung Anschließend eines Angreifer die durch. Authentizität Beginn führen zu Telnet die nur wie Möglichkeit, aber Applikationen keine Viele TCP/IP überprüfen. zu bietet Pakets Leider möglich. VPN ein 66 Bufferoverflows eines Funktionsweise 4.6: Abbildung IP Call Subroutine 4.7 .Dsbdue,dsUtrrgamkn u ae u e Stapel dem auf Daten nun kann Unterprogramm das bedeutet, Das ). erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 Return 4.6 .Bntg u a Unterpro- das nun Benötigt ). IP Stack Stackpointer 4.4 Angriffsmethoden library

Stack open source

Stackpointer

Puffer

IP

Abbildung 4.7: Pufferreservierung auf dem Stapel

Stellen wir uns vor, das Programm erwartet die Eingabe des Geburtsdatums des Benutzers. So genügen sicherlich 32 Bytes, um diese Eingabe entgegenzunehmen. Diese 32 Bytes werden nun auf dem Stapel reserviert. Aus irgendeinem Grund (Unwissenheit, Bösartigkeit) gibt der Benutzer jedoch 100 Zeichen ein. Überprüft der Programmierer vor der Kopie der Zeichenkette in den dynamisch allozierten Datenbereich auf dem Stapel ihre Länge nicht, so werden alle 100 Bytes auf den Stapel kopiert. Dadurch werden auch Bereiche überschrieben, die andere gültige Daten enthielten. Es kommt zu einem Überlaufen (Overflow) des originalen Puffers (siehe Abbildung 4.8). Hierbei können auch zum Beispiel Rücksprungadressen der Unterprogramme überschrieben werden. Es gibt einige Programmiersprachen, die dem Programmierer diese Arbeit (das so genannte Boundary Checking) abnehmen, jedoch gehören die Programmierspra- chen Assembler und C nicht dazu. In C werden die meisten Anwendungen für Unix- und auch für Windows-Betriebssysteme programmiert. Handelt es sich um willkürliche Daten, so stürzt das Programm ab und es kommt zum Segmentation Fault (Linux) oder zu einer allgemeinen Schutzverletzung (Ge- neral Protection Fault, Windows). Der Prozessor erkennt, dass es sich um eine uner- laubte Rücksprungadresse handelt. Ein Zugriff auf den Speicher an der Zieladresse ist dem Programm nicht erlaubt. Das Programm wird von dem Prozessor beendet (stürzt ab) und steht nicht mehr zur Verfügung. Dies ist ein Denial-of-Service. Unter Umständen besteht jedoch auch die Möglichkeit, den Ort einer Rücksprun- gadresse auf dem Stack vorherzusagen und so zu überschreiben, dass ein geziel-

67 open source library omnoelnurf u e nerfee ytmz erhalten. so zu und der starten System aus zu angegriffenen sich Shell dem leitet eine auf versuchen, Name Kommandozeilenzugriff Bufferoverflows Dieser klassische bezeichnet. dass Shell-Code ab, als Tatsache wird NOPs Code die injizierte ausführt. über Der Code Schlitten diesen einem schließlich als auf und man rutscht wie bezeichnet Bufferoverflow Befehlszeiger Dies zum Rücksprungadresse zeigen. der NOP-Befehle die da der muss (Sled), Bereich NOP-Schlitten so den in angepasst, ungefähr derartig der noch ausge- NOP nur Ist Bufferoverflow Prozessor weiterzubewegen. Ein den dem Instruction-Pointer NOP-Befehlen. für von den hundert er außer Code Funktion, wenn mehreren keine hat, zu wird, Befehl versieht bis führt Dieser Nun mit No-Operation-Befehl. berechnen. Beginn ein Rücksprungadresse zu ist die Code vorher- nicht Stacks seinen auch des er Zustand er den kann meist genannten genau ist selten Daher so beschrieben, nur sagen. gerade kann dem Angreifer wie an Der Rücksprung, möglich. gezielter leicht nicht Ein sind erkennen. zu Bufferoverflows Sled geschriebenen NOP zu ersten Rechner Exploits. der Root entsprechenden Viele von dem man spricht auf Fall diesem Rootprivilegien können In so um erlangen. auf, da werden, Mängel ungewis- brisant, derartige ausgenutzt aus Dienste besonders sie diese Eingaben Unix Weisen und unter entgegennehmen. verfügen Quelle ist ser Rootprivilegien Dies über Shell-Code. Netzwerkdienste als verwen- den Einbrecher viele häufig um dem auch von hierbei diesen Code sich man deten es bezeichnet Daten Daher ge- handelt eingegebenen Unix-Shell. der Üblicherweise einer den Programms Aufruf ausgeführt. missbrauchten in Code des Vorfeld Benutzerkontext eingegebene im dem rade sich in der wird Dann erfolgt, befand. Code auf Rücksprung ter Puffers des Überlaufen 4.8: Abbildung 68          Puffer IP Stack       erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4        überschrieben! Stackpointer 4.4 Angriffsmethoden library

Es gibt verschiedene Möglichkeiten, sich vor Bufferoverflows zu schützen. Der äl- teste Schutz erreicht dies, indem der gesamte Stapel für das Programm als nicht-

ausführbar gekennzeichnet wird. open source

Achtung Machen Sie nicht den Fehler anzunehmen, dass Sie mit dieser Me- thode aus dem Schneider sind. Erstens stürzt das Programm weiter- hin ab. Der Prozessor erkennt lediglich, dass unerlaubter Code an- gesprungen werden soll. Außerdem gibt es auch Heap-Overflows. Hier hilft die Methode nicht.

Bei älteren Prozessoren der i386-Architektur ist dies nur mit Tricks möglich. Aktu- elle Prozessoren unterstützen diese Funktion in Hardware. Bei dem Athlon64 exis- tiert das No-eXecute-Bit (NX), das von AMD als Enhanced-Virus-Protection Tech- nologie vermarktet wird. Intel hat bei den Itanium- und den neuesten Pentium 4- und M-Modellen das eXecute-Disable-Bit (XD) eingeführt. PowerPC, SPARC und Alpha-Prozessoren verfügen über diese Funktion schon länger.

Achtung Wichtig zu wissen beim NX- und XD-Bit ist, dass diese Bits nicht automatisch aktiviert werden. Sie müssen ein Betriebssystem ein- setzen, das diese Bits auch nutzt (zum Beispiel RHEL4 und Fedora Core mit ExecShield).

Es existieren noch drei weitere Varianten, um sich vor den Gefahren des Buffer- overflows zu schützen. Der modifizierte GNU-C-Compiler Stackguard implemen- tierte als Erster den Schutz mit dem so genannten Canary (Kanarienvogel). Hierbei erzeugt der Compiler modifizierten Code, der vor jedem Sprung in ein Unterpro- gramm eine Zufallszahl auf dem Stapel abspeichert. Vor jedem Rücksprung über- prüft das Programm, ob die Zufallszahl modifiziert wurde. Ist dies der Fall, wird ein Bufferoverflow angenommen und die Ausführung abgebrochen. Ansonsten fährt das Programm fort. Diese Vorgehensweise ist von IBM in ProPolice weiterent- wickelt worden. ProPolice gibt es für einige Linux-Distributionen und OpenBSD. Red Hat hat mit den Position-Independent-Executables (PIE) einen Schritt in eine andere Richtung gemacht. Auch hier wurde der GNU-C-Compiler so modifiziert, dass der entstehende Programmcode beliebig im Speicher arrangiert werden kann. Ein modifizierter Kernel (ExecShield-Patch) kann nun bei jedem Aufruf das Pro- gramm und alle Daten inklusive des Stapels zufällig an einer anderen Position ab- speichern. Der Angreifer hat nun das Problem, dass er die Rücksprungadressen nicht mehr vorhersagen kann. Stellen Sie sich vor, Sie wären in einem Raum mit

69 open source library nggnudgbndeWrefrair aus. formatiert Werte die geben und entgegen omttig n e ufrwre me brdnSae ndeFnto über- Funktion Die die an angeben. Stapel Formatstrings den über auch Die immer er geben. werden kann Puffer der wurde, und eingegeben Formatstrings Angreifer dem von itFrasrns i ee e nrie oolDtnvndmSae lesen Stapel dem von Daten sowohl Angreifer Beispiel der (zum denen kann mit Formatstrings, gibt nKmiainmtdmPeueIS( können Prelude-IDS Libsafe dem Puffers. mit stehenden Kombination Verfügung zur in vor des auf überprüfen Größe C-Funktionen Sie die neuen Aufruf Die auszutauschen. jedem Varianten sichere gegen eeto n rvninmtSot2&C. etr iwiezrInstallation. zur Hinweise »Intrusion weitere Buch Co.« & meinem 2 in Snort Sie mit Prevention finden und kann, Detection werden eingesetzt Detection-System otol brennDes drenSse uelne.Dbibsetmtdem mit besteht Dabei erlangen. zu die System um ein werden, oder verwendet Dienst auch einen Buf- also über einem Kontrolle kann also Formatstring-Angriff ähnelt Unterprogramms Ein Auswirkung eines Die feroverflow. Rücksprungadresse überschreiben. richtigen anschließend der und ermitteln Ort den zunächst greifer pah en esheeeFntoe,defraireTxasae erlauben: Textausgaben formatierte die Funktionen, Programmier- Die verschiedene wurden. kennt für geschrieben Bufferoverflow C C 2000 in der sprache Juni die wie Programme, im Ähnlich Problem verwendet. Mal dieses Gruppe WU-Ftpd-Server betrifft ersten junge den zum auf rechte wurde Angriff noch einen Formatstring-Angriff eine um Der sich Angriffen. es von handelt Formatstring-Angriffen den Bei Formatstring-Angriffe 4.4.5 aus zentraler C-Funktionen Austausch spezielle der nutzen ist Bufferoverflows Bufferoverflows (z.B. meisten vor eine Die Mal Schutzmöglichkeit C-Funktionen. jedes aber letzte vorher Tür dies Ihre richtige Sie schwerer. die und die vielfach Wenn ist dies einfach können. Stelle ist ist derselben ist, üben Es andere an Raum Versuch. immer anderen einen sie einem nur wenn in finden, haben zu Sie Tür offen. richtige ist Eine Türen. fünfhundert 70 spa- sondern schreiben an, und Formatstring Mühe den die immer sich Programmierer ren alle nicht geben Leider buffer) printf("%s", printf strcpy , scanf http://www.research.avayalabs.com/project/libsafe/ .DeLbaeBbite ittInndeMgihet is Funktionen diese Möglichkeit, die Ihnen bietet Libsafe-Bibliothek Die ). Achtung printf t.DeeFntoe emnennFrasrn n err Werte mehrere und Formatstring einen nehmen Funktionen Diese etc. ieFrwl annctvrenmBfeoeflwschützen. Bufferoverflow einem vor nicht kann Firewall Eine Fnto nepeir andeFrasrnsdsAgefr.Es Angreifers. des Formatstrings die dann interpretiert -Funktion %s und %x l uhWreshebnkn ( kann schreiben Werte auch als ) printf(buffer) erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 http://www.prelude-ids.org ennndrIhl e Puffers des Inhalt der nun Wenn . eutrae.D Libsafe Da herunterladen. %n .S andrAn- der kann So ). l Intrusion- als ) 4.4 Angriffsmethoden library

Formatstring %n die Möglichkeit, an beliebigen Adressen den Inhalt zu modifizieren. Der so von dem Angreifer injizierte Code muss also nicht auf dem Stapel liegen. Die

Schutzmechanismen, die einen Überlauf erkennen (Stackguard, ProPolice) oder den open source Stapel als nicht-ausführbar deklarieren, können uns daher nicht vor Formatstring- Angriffen wirksam schützen. Lediglich die Randomisierung der Adressen (Exec- Shield mit PIE, PaX etc.) bietet hier einen gewissen Schutz.

Achtung Eine Firewall bietet auch hier keinen Schutz!

4.4.6 Race-Condition Eine Race-Condition entsteht, wenn zwei Prozesse gleichzeitig auf eine Ressource zugreifen, dieser Zugriff nicht geordnet erfolgt und der Ausgang von der Reihen- folge des Zugriffs abhängig ist. Diesen langen komplizierten Satz möchte ich an- hand eines einfachen Beispiels erläutern. Stellen Sie sich vor, Sie haben bei einer Bank ein Konto. Das Konto weist ein Gut- haben von 500,00 EUR auf. Sie tätigen eine Überweisung und spenden 250,00 EUR für die Free-Software-Foundation-Europe (FSFE). Gleichzeitig geht Ihr Gehalt von Ihrem Arbeitgeber ein (2.500,00 EUR). Wenn diese beiden Vorgänge nun nicht ge- ordnet durchgeführt werden, kann Folgendes passieren:

1. Für die Spendenüberweisung wird das Guthaben gelesen. Guthaben = 500,00 EUR.

2. Für die Gehaltsüberweisung wird das Guthaben gelesen. Guthaben = 500,00 EUR.

3. Das Gehalt wird addiert, und die Summe wird als neues Guthaben geführt. Guthaben = 500,00 EUR + 2.500,00 EUR = 3.000 EUR. Diese Summe wird als Guthaben gespeichert.

4. Für die Überweisung wird von dem Guthaben (500,00 EUR, es wurde ja früher gelesen) 250,00 EUR abgezogen. Guthaben = 500,00 EUR – 250,00 EUR = 250,00 EUR. Diese Summe wird nun als neues Guthaben gespeichert. Die 2.500,00 EUR sind verloren.

71 open source library a ecpsw hl edzeile read while | do /etc/passwd cat $TEMP -f rm TEMP=/tmp/mytemp #!/bin/sh System- allen bei das möchten, entwickeln Skript auf ein Shell Sie die dass konten vor, sich sich es Sie temporäre dass Stellen kann, auf garantieren Zugriff handelt. nicht Datei mehrfachen Programm dieselbe auf. einem um das immer Race-Conditions Dateinamen bei den Dateien dass über temporären zusammen, Dateien von damit Behandlung hängt der Dies bei treten Häufig Dateien temporären von Behandlung der bei Race-Conditions vorstellen: Race-Conditions typische zwei Ihnen können, ich möchte werden Folgenden Im ausgenutzt Race- Netzwerkdienste System. über einem selten. Ferne erfor- sehr zu der Meist sind Zugang erlangen. aus An- bereits zu die ein Race-Condition Rechte Conditions, einer kann erweiterte Ausnutzen Teilweise um das ausnutzen, Daten. dert auch inkonsistenten aber zu diese also greifer 3.000,00 führt noch Race-Condition immer anschließend Eine FSFE die an trotz EUR besessen. Sie EUR 250,00 hätten Dann von können. Überweisung passieren andersherum der genau auch es hätte Natürlich 72 durch 7 Spalte der in Shell die 1-499 Nummern den mit an Konten Zeile allen ( eine bei möchte anschließend ersetzt und es anhängen da Datei Datei, neue temporäre die die zunächst löscht Skript Dieses odtosuddie und Conditions itn .:EnprRc-odto ewnbrsSkript verwundbares Race-Condition per Ein könnte Skript 4.1: Listing Ihr Linux-System. einem auf aussehen: Anmeldung folgendermaßen interaktiven der lichkeit ho 4 /etc/passwd 644 /etc/passwd chmod $TEMP mv $TEMP >> done co$el w F: \ -F’:’ awk | $zeile echo {f(>)& <0) rn $1":"$2":"$3":"$4":"$5":"$6":/bin/false"; print (<500)) && ((>0) ’{if lepit$0}’ print else ptrace /bin/false -Race-Condition. nenslt.EnSseknobntg en Mög- keine benötigt Systemkonto Ein sollte. ändern oe> $TEMP >> done erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 .Dn is sdeDatei die es liest Dann ). /etc/passwd /tmp -Race- 4.4 Angriffsmethoden library

/bin/false. Anschließend benennt das Skript die Datei in /etc/passwd um und setzt die Rechte entsprechend.

Wo ist hier die Race-Condition? Stellen Sie sich vor, der Angreifer wüsste, dass Sie open source dieses Skript als root starten. Er könnte versuchen, ein eigenes Skript gleichzeitig laufen zu lassen.

Listing 4.2: Der Exploit

#!/bin/sh

TEMP=/tmp/mytemp touch $TEMP while test -f $TEMP do NOP=0 # do nothing done echo "toor::0:0:toor owns your machine:/:/bin/sh" > $TEMP

Dieses Skript legt die temporäre Datei mit dem bekannten Namen an. Anschließend prüft das Skript, ob die Datei noch existiert oder bereits von dem verwundbaren Skript gelöscht wurde. Sobald das erkannt wurde, bricht die Schleife ab und das Skript schreibt die angegebene Zeile in die Datei /tmp/mytemp, bevor das verwundbare Programm seine Daten an diese Datei anhängt.

Tipp Wenn Sie dieses Problem nachstellen möchten, dann sollten Sie, da- mit es nicht von Ihrem Glück abhängt, in dem verwundbaren Pro- gramm die Zeitspanne des möglichen Exploits vergrößern. Fügen Sie einfach ein sleep 1 nach dem rm-Befehl ein.

Um sich vor diesen Race-Conditions bei der Verwendung von temporären Dateien zu schützen, ist es wichtig, dass der Name der temporären Datei möglichst nicht vorhersagbar ist. Viele Programme hängen daher ihre PID (Prozess-ID) an den Da- teinamen an. Jedoch ist auch diese PID auf vielen Linux/Unix-Systemen in gewis- sen Bereichen vorhersagbar. Die beste Lösung ist die Verwendung von benutzer- spezifischen temporären Verzeichnissen, in denen andere Benutzer keine Dateien erzeugen können, oder der Befehl mktemp, der eine temporäre Datei nach dem Mus- ter /tmp/tmp.XXXXXXXXXX erzeugt. Hiermit sind 2610 verschiedene Dateinamen möglich. Eine Vorhersage durch den Angreifer ist unmöglich.

73 open source library oto-ytm i Eiu,LD drgscrt.Wn is ytm uhdie auch Systeme Mandatory-Access- diese nur Ver- Wenn helfen grsecurity. Eine Hier Applikation oder ermöglichen. LIDS möglich. einer SELinux, Race-Condition nicht wie Design ist eine Control-Systeme Firewall logischen die einer Seiteneffekte, im mit es Fehler teidigung Pro- sind technischer ein ein Häufig mehr weniger ist. Race-Condition viel die als dass übernom- erkannt, grammierfehler System haben das Sie hoffe, über Ich Kontrolle komplette der die auf mit Tätigkeit hat bevor Prozess beliebige Er men. einen binden, jede ausüben. so anschließend Kindprozess System und er modifizieren den dem kann Code an den Kann so steuern, sich überträgt, verwendet. root-Privilegien Funktion root-Privilegien Fehlersuche die zur dieser Kernel modi- Debuggern mit zu von Angreifer Code wird den der und Funktion einzufügen Diese Breakpoints fizieren. beobachten, zu Prozesse lichkeit, i uz a isnnas e enlbee i der mit bietet Kernel Der die aus? nun Kernel dies der man bevor nutzt nehmen, Wie Einfluss Race-Condition. ge- Prozess die Benutzers ist den ursprünglichen Hier auf überträgt. des dieser root-Privilegien Kontext kann dem in wird, Kindprozess startet der Da Modul. das Dafür die durchzuführen. dann Privilegien, wurde um seiner suchen, Erweiterung verfügen, Sicherheitslücke eine root-Privilegien weiteren Privilege-Escalation, einer über eine nach nicht anschließend aber Angreifer er- der Netzwerkdienste Zielsystem musste meisten das Angreifer Sicherheits- die auf Die auch Da Kommandozeilenzugriff Apache-Webserver. gleichzeitig halten. Netzwerkdienst dem gab den wie es über Dennoch Januar denn Netzwerkdiensten konnten ausnutzbar. genutzt, weiteren im lokal Angriffen in die nur vielen lücken Linux-Kernel, war in im Sicherheitslücke sie Race-Condition Diese wurde eine wurde. um entdeckt sich 2003 es handelt Hierbei ptrace-Race-Condition Die 74 e enldeUe-DdsKnpoessaf0udld i e Befehl dem mit lädt und 0 auf stellt Kindprozesses au- Anschließend des Kernel Kindprozess. User-ID der einen die erzeugt Prozess Kernel Hierzu anfordernden der nachladen. dem un- Modul zu von ein häufig Protokoll-Familie tomatisch Kernel die Beispiel der Um muss Fall. zum ein der terstützen, ist über etc.) (PF_IPX, Protokoll-Familie PF_APPLETALK die Dies untypische PF_AX25, möchte, eine wird. PF_X25, für nutzen Netzwerk-Sockets realisiert Funktion eines eine Kernelmodul Öffnen beim Prozess geladenes ein nicht wenn noch auf, tritt Fehler Der auf. Sicherheitslücke diese Achtung en asen iealkieliSht itt irkn brein aber kann Hier bietet. geworden Schutz deutlich keinerlei M Ihnen Firewall A sollte eine C Angriffs dass - Ssein, des y Beschreibung s der t eBei mw i eS E L i n u xd u r c h a u sA b h i l f es c h a f f e n . ptrace Rc-odto euz.LnxKre ..5242 weisen 2.2.25/2.4.20 < Linux-Kernel genutzt. -Race-Condition erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 ptrace Fnto i Mög- die -Funktion modprobe 4.4 Angriffsmethoden library

Race-Condition selbst nicht verhindern können, wenden sie jedoch weiteren Scha- den von dem System ab. open source 4.4.7 SQL-Injektion Die SQL-Injektion wird hier als ein Paradebeispiel eines Angriffs über einen Webserver beschrieben. Erwartungsgemäß erfolgen heute die meisten Angriffe über das Netzwerk entweder über das HTTP/HTTPS- oder das SMTP-Protokoll. Dies sind in vielen Fällen noch die einzigen Wege in das Netzwerk eines Unternehmens. Jeder andere Zugriff wird heute meist von Firewalls unterbunden. Mögliche Fern- zugriffe werden über sichere VPN-Lösungen implementiert. Der Angreifer kann, vorausgesetzt Sie haben Ihre Hausaufgaben als Firewall-Administrator gemacht, nur auf den Webserver und den Mailserver des Unternehmens zugreifen. Aller- dings bestehen die meisten Websites heute aus dynamischen Seiten, die von einer Web-Applikation erzeugt werden. Diese Web-Applikation greift hierzu auf eine Datenbank im Hintergrund zu. Über diesen Zugriff erhält die Web-Applikation eines Internet-Shops zum Beispiel Informationen über den Preis und die Verfüg- barkeit eines Artikels. Diese Datenbank befindet sich meist in dem internen Netz des Unternehmens (siehe Abbildung 4.9). Der Webserver, der sich in der DMZ be- findet, benötigt daher Zugriff auf diese Datenbank. Ein Angreifer, der diese Logik ausnutzen kann, erhält so unter Umständen Zugriff auf interne Systeme! Bei der SQL-Injektion versucht der Angreifer herauszufinden, wie eine Web- Applikation die von ihm eingegebenen Daten verwendet. Wenn die Applikation

Abbildung 4.9: Die Web-Applikation auf einem Webserver greift meist durch die Firewall auf die interne Datenbank zu.

75 open source library ogneSLBfh ausgeführt: SQL-Befehl folgende brnctdsKnwr ie euzr.Dn ane ogneEnaeversu- Eingabe folgende er kann Namen, Dann den Benutzers. Angreifer eines der chen: Kennwort kennt das den Vielleicht Anweisung nicht diese Benutzers. aber liefert so angemeldeten korrekt, des Kennwort das Namen ist und Benutzer der name= Existiert WHERE users FROM name SELECT Namen als password="$pass« Angreifer AND der name="$name« Wenn WHERE users FROM name SELECT an Anfrage folgende Daten (Abbildung stellt: der Datenbank Überprüfung verfügt die zur Login-Seite Applikation die eine dass Möglichkeit, über Beispiel zum geschützt. Login-Seite eine durch sind Applikationen Viele 4.10: Abbildung 76 die an Eingabe- diese fehlende bevor prüfen, eine Gültigkeit Web- ihre um auf Die sich Eingaben Formatstring-Angriff. Da- sämtliche handelt dem muss eingegebenen Es oder Applikation Bufferoverflow prüft. die dem Verwendung Programmierer ähnlich der validierung der vor da nicht möglich, ten ist ein- liefert. Sicherheitslücke dem Ergebnis von Diese ein unabhängig Select-Anweisung Anmeldung die die da ist gültig, stimmt, Kennwort immer gegebenen 1=1 Ausdruck der Da name=" WHERE users Anwei- FROM folgende name die SELECT sich ergibt eingesetzt, SQL-Anweisung der sung: in nun dies Wird "1"="1" OR pass="weissnicht" name=Bob password= wisih"O "1"="1" OR "weissnicht" "Bob" Bob Bob AND " N password= AND erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 n l Kennwort als und "password" password 4.10 ,dn eth die besteht dann ), igb,wr der wird eingibt, 4.4 Angriffsmethoden library

Datenbank weitergereicht werden. In diesem Beispiel wäre es zum Beispiel sinn- voll, beim Benutzernamen zu prüfen, ob außer den Zeichen A-Z,a-z weitere nicht-

erlaubteZeichenindemNamenoderaußerA-Z,a-z,0-9weitereZeichenindem open source Kennwort vorkommen. Diese Aufgabe kann jedoch nur von der Web-Applikation selbst erledigt werden. Nur der Programmierer der Web-Applikation kann die gül- tigen Zeichen einer Eingabe festlegen. Eine Firewall ist hier überfordert.

4.4.8 Welchen Schutz bietet eine Firewall? Ich habe Ihnen auf den letzten Seiten verschiedene Bedrohungsszenarien bei der Anbindung Ihrer Rechner an das Internet vorgestellt. Bei fast allen Angriffen habe ich Sie darauf hingewiesen, dass sie von einer Firewall nur in geringem Maße oder gar nicht abgewehrt werden können. Warum sollen Sie dann überhaupt den Aufwand einer Firewall betreiben? Ohne Firewall wird alles noch schlimmer! Überlegen Sie sich, welche Dienste Sie in Ihrem Netz und auf Ihren Rechnern betreiben. Sicherlich möchten Sie nicht, dass je- der im Internet auf diese Dienste zugreifen kann. Wahrscheinlich ist es auch nicht in Ihrem Sinne, dass jeder Benutzer auf jeden Dienst im Internet zugreifen kann. Hier bietet die Firewall Schutz. Natürlich erkennt die Firewall keinen Bufferoverflow- oder Formatstring-Angriff. Ohne Firewall kann ein Angreifer mit diesen Methoden alle Ihre Systeme angreifen. Wenn Sie eine Firewall besitzen, ist dieser Angriff nur auf den Systemen möglich, auf die die Firewall den Zugriff erlaubt. Eine Firewall bietet Schutz nach dem Prinzip »Single-Point-of-Defense«. Anstatt je- den Rechner einzeln zu verteidigen und die Dienste in allen Punkten auf Sicher- heitslücken zu prüfen, regelt die Firewall, wer auf welche Dienste zugreifen darf. Natürlich sind diese Dienste dann immer noch besonders gefährdet. Diese Dienste können immer noch mit einem Bufferoverflow-Angriff getroffen werden. Die tat- sächliche Zahl der verwundbaren Systeme und Dienste haben Sie aber durch den Einsatz einer Firewall reduziert. Eine Firewall hilft auch bei der Schadensbegrenzung nach einem erfolgreichen An- griff, denn Angriffe erfolgen nur selten blind. Der Angreifer will nach dem Buffer- overflow auf der Kommandozeile des Zielsystems arbeiten, seine Privilegien erwei- tern und weiteren Schaden anrichten. Hierfür benötigt er Netzwerkverbindungen, Werkzeuge und die Möglichkeit, weitere Systeme zu kontaktieren. Betrachten Sie noch einmal die Abbildung 4.9. Wenn die Firewall Verbindungen des Webservers in das Internet unterbindet, kann ein Angreifer keine weiteren Werk- zeuge nachladen. Auch der Start einer Remote-Shell, die eine neue Netzwerkver- bindung aufbaut, ist nicht ohne weiteres möglich. Erlaubt die Firewall zusätzlich nur den Zugriff auf den Port des Datenbankservers in dem internen Netz, sind die weiteren Rechner vor dem Zugriff des Angreifers geschützt. Der Angreifer muss jetzt erst eine Sicherheitslücke in dem Datenbankserver finden, um diesen angreifen zu können.

77 open source library e,u uäzih anhe uipeetee,deSseergläi zu regelmäßig Systeme die aufrechtzuerhalten. implementieren, Sicherheit ken- so zu Bedrohungen und allen diese Maßnahmen patchen vor müssen nicht zusätzliche Sie aber um Internet. schützt dem nen, Firewall aus Die Bedrohungen sinnvoll. und wohl Gefahren sehr Firewall eine ist Daher 78 erhne e e entugvnSystemen von Vernetzung der bei Bedrohungen 4 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library Einführung – Iptables mit Firewalls II Teil

open source library

enndnUtrcidnctudnte is erfedhrasSnnm In Synonym. zunächst wir als beginnen daher daher Begriffe Begriffsdefinition: unterscheiden, einer diese Begriffe mit diese nutzen Sie und sollten nicht Wirklichkeit Unterschied den wer- Begriffe beschäftigen, die kennen Linux-Paketfilterfunktionen auf den zwangsläufig mit Sie Mal den erste Iptables das und sich Netfilter Sie Wenn 5.1 dann beschreiben Linux- Kapitel simple einfache Spätere eine einsetzen. bereits Funktionen. zu weitergehende Sie und ohne nie können Grundlagen, entwickeln Kapitel noch diesem nötigen Paketfilter-Firewall sich Nach sämtliche der gehen. auch mit zu an, erklärt direkt tief beginnt Linux-Benutzer aber Es den Beispielen, hat. beschäftigt praktischen Linie Linux-Paketfilterfunktionen erster den mit in ernsthaft spricht Kapitel Dieses 5 l nedrwre i ihnemtNtle ecätgnmse.Al ü Sie für Alle müssen. beschäftigen dem Netfilter mit mit Sie nie werden Funktionen sich interessanten Sie werden das Anwender noch Als auch (s.u.). zusätzlich erforderlich ist NAT-Subsystem Linux-Paketfilters das und des Connection-Tracking- Funktionalität gesamte die Für I I e.E adl ihas men azaleen tutr i Filterfunktionen die Struktur, allgemeine ganz eine aufgeru- um Paket Modul also anbietet. ein entsprechende sich Sobald handelt das anmelden. Es wird fen. Kernelmodule vorbeikommt, weitere Ankerpunkt dann diesem an sich können Hier an. Netfilter esheee ok o efitrgbne.E uz lodevnNtle zur die Netfilter an von die Iptables also Struktur. von nutzt gestellte Es werden Verfügung gebunden. Ketten Netfilter Diese von Hooks Ketten. verschiedenen mehreren aus besteht Tabelle Iptables palselutdeDfiiinvnRgl nTble Tbe) Jede (Tables). Tabellen in Regeln von Definition die erlaubt Iptables : efitrbee nepnt Hos mNtwrsae o Linux von Netzwerkstapel im (Hooks) Ankerpunkte bietet Netfilter : i Iptables mit Firewall einfache Eine Netfilter iptables und Iptables Bfh ofiuirnkönnen. konfigurieren -Befehl rfe.VeeAnwender Viele treffen.

open source library open source library Die lePkt,dea e ehe ebtgrcttsn,drhafndie durchlaufen sind, gerichtet selbst Rechner den an die Pakete, Alle palsvrattsieRgl nmnetn riTabellen: drei mindestens in Regeln lassen. finden seine Hinweis verwaltet interessante Iptables andere doch. oder aber eine ihn der Sie lesen sich Vielleicht könnte überspringen. Es Abschnitt diesen Sie können haben, aee i e ehe eilc etretnsl.Hebihnete ihas um werden. geschickt also Weiterleitung sich zur es Gateway handelt als Hierbei Firewall die soll. an weiterleiten die lediglich Pakete, Rechner der die Pakete, FORWARD des Einsatz dem mit Erfahrungen Filter-Tabelle einige die und bereits Iptables-Befehl Sie Der Wenn 5.2 82 Ketten. drei aus besteht Filtertabelle Die 5.1: Abbildung irwr uähtnrdie nur zunächst wird Hier lePkt,dedrRcnrsls reg,wre o e else e Rechners des Verlassen dem vor werden die erzeugt, selbst durch Rechner der die Pakete, Alle nder zunächst uns In wir werden darstellt, Firewall wird. einer beschäftigen. verworfen Funktion hiermit oder wesentliche abgelehnt die erlaubt, dies Paket Da ein ob Linux-Kernel, der entscheidet nwiee bcnte ( Abschnitten weiteren in filter seeAbbildung (siehe filter TbleitfrdeFleugdrPkt eatotih a eß,hier heißt, Das verantwortlich. Pakete der Filterung die für ist -Tabelle OUTPUT Achtung TbleutrcedtdrLnxKre riKetten: drei Linux-Kernel der unterscheidet -Tabelle Default Policy i ihbrismtdmPaketfilter Wenn dem neu. mit Iptables bei bereits ist sich Ketten Sie den unter Aufgabenteilung Diese e i o otnc ieadr uzn isrKetten. dieser Nutzung andere eine noch dort von Sie nen ROUTING Ktegfitr.Die gefiltert. -Kette INPUT 5.7 5.1 filter , .Deede etnhbngnudfiireAufgaben. definierte genau haben Ketten drei Diese ). 5.8 erörtert. ) Tblebsrce.DeadrnTble werden Tabellen anderen Die besprochen. -Tabelle FORWARD Default Policy FORWARD Prozess Lokaler Lokaler Ktekmetsc clelc mdie um schließlich sich kümmert -Kette ieenah iealmtIptables mit Firewall einfache Eine 5 ipchains ecätg ae,ken- haben, beschäftigt iptables Default Policy OUTPUT filter Bfhsgemacht -Befehls INPUT , mangle , INPUT OUTPUT und -Kette. und nat . 5.2 Der Iptables-Befehl und die Filter-Tabelle library

1. Regel 2. Regel

3. Regel open source 4. Regel 5. Regel ...

Default Policy

Abbildung 5.2: Die Regeln in einer Kette werden der Reihe nach abgearbeitet. Trifft keine Regel auf das Paket zu, gilt die Default-Policy.

Jede dieser Ketten besteht nun aus einer Liste von Regeln, die für jedes Paket nach- einander abgearbeitet werden (Abbildung 5.2). Sobald eine Regel auf das Paket zutrifft, wird die mit der Regel verbundene Aktion ausgeführt und mit wenigen Ausnahmen die Abarbeitung weiterer Regeln abgebrochen. Trifft keine Regel aus der Liste zu, so wird die Default Policy der Kette aktiv. Diese Default-Regel trifft auf alle Pakete zu, die nach Abarbeitung aller Regeln noch in der Kette verblieben sind. Da diese Einführung bisher recht theoretisch und abstrakt war, macht es Sinn, dies gleich in die Praxis umzusetzen. Im Folgenden setze ich voraus, dass Sie über einen Rechner mit einer aktuellen Linux-Distribution Ihrer Wahl verfügen und als root angemeldet sind. Prüfen Sie bitte zunächst Ihre Installation, indem Sie folgenden Befehl eingeben:1

[root@bibo root]# iptables -V iptables v1.2.9

Wenn der Befehl auf Ihrem System die Fehlermeldung »-bash: Iptables: command not found« ausgibt, dann prüfen Sie bitte, ob Sie das entsprechende Paket noch installieren müssen. Gibt der Befehl so wie oben eine Versionsnummer aus, können Sie direkt fortfahren. Die Version selbst ist im Moment noch unerheblich. Als Erstes sollten Sie sich eventuell bereits vorhandene Regeln anzeigen lassen:

[root@bibo root]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination

1 Wundern Sie sich bitte nicht über die Namen meiner Rechner. Alle meine Systeme haben Namen aus der Sesamstraße als Rechnernamen. Neben Kermit, Oskar und Grobi gibt es auch einen Bibo.

83 open source library 127.0.0.1 eatnFrwl ewre.Al etrnPkt önndeFrwl weiterhin ein- Firewall der die von können nun Pakete also weiteren werden passieren. Alle Ping-Pakete verworfen. ankommenden Firewall Rechner gebauten dem auf Alle ebctnSedeAsaedsPn,wn i e ogne eelabsetzen: Befehl folgenden den Sie wenn Ping, des Ausgabe die Sie Beobachten Befehl. o e iggntt s a e al iddsPktvrofn( verworfen Paket das wird Fall, der das Ist genutzt. Ping dem von u önnSeeseRgl regn isefltzncs ietafdrKom- ] der auf direkt OK zunächst erfolgt Befehl ] Dies dem [ erzeugen. mit Regeln mandozeile OK erste nach. Sie Distribution können Ihrer funk- be- [ Nun Dokumentation nicht zu der Systemen Distributionen in Ihren bitte und auf Sie Befehle Eventualitäten lesen aufgeführten tionieren, alle oben ] hier die möglich, Wenn rücksichtigen. nicht OK sicherlich ist Es [ abschalten: stop Firewall /etc/.d/firewall die Befehl dieser schließlich sollte Gentoo-System einem Auf stop ein: rcSUSEfirwall2 Befehl folgenden bitte Sie geben SUSE-Distribution einer Auf filter ACCEPT: Policy beenden: auf iptables-Module Chains Setze löschen: Firewall-Regeln destination root]# Befehl [root@bibo folgendem mit Sie abschalten: Hat können Firewall Red eingebaute Core) einer die destination ha- Fedora Auf gesetzt verantwortlich. (auch selbst Distribution Distribution die- nicht Ihre Linux-basierten Regeln Dauer wahrscheinlich diese die hierfür Sie für ist Wenn Sie ben, deaktivieren. sollten Regeln angezeigt, die Regeln Kapitels bereits ses Ausgabe dieser bei Werden source opt prot source ACCEPT) opt (policy target prot OUTPUT Chain ACCEPT) (policy target FORWARD Chain 84 die an Regel eine hängt Befehl Dieser ( bleiben. an unbeantwortet DROP INPUT-Kette nun -j sollte icmp Ping Der -p INPUT -A iptables root]# [root@bibo ole i e ifchi abrafenrgashnOeflceabie und den arbeiten Sie rufen Oberfläche Fenster grafischen einen einer dem In auf öffnen. halber Fenster zwei Einfachheit dort der Sie sollten a rtkl CP( ICMP Protokoll das (Abbildung evc palsstop iptables service A --append -A; p --protocol -p; 5.3 .I e nee ese retnSemtdem mit Sie arbeiten Fenster anderen dem In ). .DeeRglpüti e NU-et,o i Paket ein ob INPUT-Kette, der in prüft Regel Diese ). iptables ewne.Dee rtkl idzmBeispiel zum wird Protokoll Dieses verwendet. ) mdrk ie fetekne ukönnen, zu erkennen Effekt einen direkt Um . ieenah iealmtIptables mit Firewall einfache Eine 5 ping Bfh auf: -Befehl j -up DROP --jump, -j; iptables ping ). - 5.2 Der Iptables-Befehl und die Filter-Tabelle library open source

Abbildung 5.3: Der Ping-Befehl kann die Erreichbarkeit eines Rechners prüfen.

Achtung Ein DROP verwirft die betroffenen Pakete, ohne den Absender da- von zu unterrichten. Der Absender erhält keine Antwort und auch keine Fehlermeldung. Er wird es je nach Protokoll und Anwendung ein weiteres Mal versuchen. Nach mehreren Fehlversuchen wird der Absender üblicherweise den Verbindungaufbau mit einem Timeout abbrechen. Möchten Sie direkt dem Absender eine Fehlermeldung senden, um diesen Vorgang abzukürzen, können Sie das Ziel RE- JECT nutzen. Das REJECT-Ziel verwirft das Paket und sendet eine Fehlermeldung an den Absender, so dass dieser es nicht erneut ver- sucht.

[root@bibo root]# iptables -A INPUT -p icmp -j REJECT

Sie können sich die Regeln mit iptables -L wieder ansehen. Mehr Information erhal- ten Sie aber mit folgendem Befehl:

[root@bibo root]# iptables -vnL --line-numbers Chain INPUT (policy ACCEPT 142K packets, 209M bytes) num pkts bytes target prot opt in out source destination 1 2 168 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 112K packets, 6371K bytes) num pkts bytes target prot opt in out source destination

85 open source library --destination Pakete! ae a palshe .../ igtae.De nsrctenmNtwr mit Netzwerk einem entspricht Dies eingetragen. IP-Adressen. möglichen 0.0.0.0/0 allen hier Iptables hat daher irshnSedeasürih ( ausführliche die Sie sehen Hier 86 e,afdedeeRglzta.Hemtkne i uhIrnNetzwerkverkehr Ihren angege- auch Bytes Sie drit- der können Anzahl und Hiermit die zweiten zutraf. und der Regel Pakete In diese auswerten der kann die löschen. Anzahl Nummer auf die zu Diese ben, wieder Regel angezeigt. wird Regel diese Spalte der um ten Nummer werden, die aufge- verwendet wird Regeln später Spalte die ersten Kette der jeder In bei werden Anschließend und wurden sind. bearbeitet das zählt. Default-Policy Default-Policy dieser Bytes der von viele Hinter bereits wie Klammern. Pakete viele in wie Default-Policy Sie, ihrer sehen mit Kette jede wieder us( muss us ai is ee urft sitmgih e e regn ie ee so- Regel muss erreichen einer Rechner verwenden Erzeugung den der Paket Paket das bei das die ( möglich, über die ist anzugeben, Netzwerkkarte Es an, die zutrifft. wohl Netzwerkkarte Regel diese die damit geben muss, Spalten beiden nächsten e,dhrbfidnsc irSenhnasWlcr ü levrübrnKarten. verfügbaren alle für ( Wildcard Quelladresse als die Sternchen noch folgen hier Nun sich befinden daher ben, ice om( Form rischer i --in-interface -i; 2 S ekne uhRgl regn i enZe ae.DeeRgl älnnrdebetroffenen die nur zählen Regeln Diese haben. Ziel kein die erzeugen, Regeln auch können ie o --out-interface -o; 2 xus CIDR-Notation Exkurs: anshnSedsI-rtkl im)udmgih pinn Die Optionen. mögliche und (icmp) IP-Protokoll das Sie sehen Dann . e ufitrdnPkt.Ac irhbnwrkieAgb gemacht, Angabe keine wir haben hier Auch Pakets. filternden zu des ) 2.FrdeUwnln e ezak ndeCIDR-Notation die vor: in binär Netzmaske Netzmaske die der sich Sie Umwandlung stellen die Notation Für einfacher diese nutzt /24. Netzmasken 255.255.255.0 star- von Routing-(CIDR-) die Anstelle Domain den Um eingeführt. Internet von Notation Classless C. die sich und wurde man schreiben, B zu löste A, Subnetting Netzwerkklassen des ren Einführung der Mit 0000=/0 /8 /16 /24 = /32 = = = = /255.255.255.255 /255.255.255.0 /255.255.0.0 /255.0.0.0 /0.0.0.0 Folgen- Im nun geschrieben. werden han- Schrägstrich Diese Es denfindenSiedieüblichenNetzmaskeninCIDR-Notation: Einsen. dem ab. 24 nach links also Einsen, CIDR-Notation von acht als Netzmaske mal der drei um in sich Einsen delt die Sie zählen Nun 11111111.11111111.11111111.00000000 = 255.255.255.0 n --numeric -n; ,asac i ezekat,üe i sdnRcnrverlassen Rechner den es die über Netzwerkkarte, die auch als ), .I nee ee ae i en ezekat angege- Netzwerkkarte keine wir haben Regel unserer In ). i elnumr ( Zeilennummern mit ) v --verbose -v; s -r;--source --src; -s; it e een( Regeln der Liste ) --line-numbers ieenah iealmtIptables mit Firewall einfache Eine 5 n i ildes ( Zieladresse die und ) .Zncs ee Sie sehen Zunächst ). L --list -L; )innume- d --dst; -d; 5.2 Der Iptables-Befehl und die Filter-Tabelle library

Wenn Sie den Iptables-Befehl mehrfach wiederholen, fügen Sie mehrere Regeln in der INPUT-Kette hinzu:

[root@bibo root]# iptables -A INPUT -p icmp -j DROP open source [root@bibo root]# iptables -A INPUT -p icmp -j DROP [root@bibo root]# iptables -A INPUT -p icmp -j DROP [root@bibo root]# iptables -L INPUT Chain INPUT (policy ACCEPT) target prot opt source destination DROP icmp -- anywhere anywhere DROP icmp -- anywhere anywhere DROP icmp -- anywhere anywhere DROP icmp -- anywhere anywhere

Jede Regel wird »unten« an der Kette angehängt. Wenn Sie nur eine Kette anzeigen möchten, können Sie, wie hier gezeigt, auch den Namen der Kette beim Kommando iptables -L mit angeben. Um einzelne Regeln wieder zu löschen, können Sie die Option -D beziehungsweise --delete verwenden. Um die Regel Nummer Eins zu löschen, verwenden Sie:

[root@bibo root]# iptables -D INPUT 1

Existiert keine Regel mit dieser Nummer, erhalten Sie folgende Fehlermeldung:

[root@bibo root]# iptables -D INPUT 5 iptables: Index of deletion too big

Alle weiteren Regeln rücken automatisch nach dem Löschen auf. Löschen Sie die Regel Eins, so wird die Regel Zwei zu Eins, Drei zu Zwei usw. Möchten Sie alle Regeln löschen, können Sie den Befehl iptables -F verwenden. Die- ser Befehl löscht alle Regeln in allen Ketten der Filtertabelle. Möchten Sie nur sämt- liche Regeln der INPUT-Kette löschen, verwenden Sie:

[root@bibo root]# iptables -F INPUT [root@bibo root]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Nun sind Sie wieder da, wo wir angefangen haben. Sämtliche Ketten sind leer. Die Default-Policies sind auf ACCEPT gestellt.

87 open source library a mlklnNtwrvrer e ü i rficeOeflcebntg id oag noch können. Solange weiterarbeiten wird. Probleme benötigt ohne aber Oberfläche diesen grafische in die Sie für sollten sind, der geöffnet Netzwerkverkehr, Fenster lokalen am das ebnugafamnwee ette.Bnte i aubteflednBe- folgenden bitte SSH- die dazu auch Sie Sie können Benutzen fehl: betreiben, gestatten. SSH-Server ACCEPT wieder einen System Verbindungsaufnahmen -j Ihrem icmp auf Sie -p Wenn INPUT -A iptables root]# [root@bibo entgegennehmen mehr Pakete keine Rechner Ihr sollte Nun root]# [root@bibo Befehl: folgendem mit Sie erledigen Dies Sie setzen Hierzu und DROP. erlauben. war auf Protokolle INPUT-Kette erlaubt der ausgewählte alles in wir nur Default-Policy jetzt möchten die und wurde, zunächst bis verboten verbieten Während Regel alles spezifischen auf. einer nun anders mit ICMP-Protokoll Regeln das die nur wir bauen Nun 88 bytes) 23M packets, 398K ACCEPT (policy OUTPUT Chain bytes) 0 packets, 0 ACCEPT (policy FORWARD Chain bytes) ACCEPT 5528 -j packets, 22 51 --dport DROP tcp (policy -p -vnL INPUT INPUT iptables Chain -A root]# iptables [root@bibo root]# [root@bibo rabnSeasEse idrdnPn,idmSeseishdsPooolICMP Protokoll das spezifisch Sie indem Ping, den wieder akzeptieren: Erstes als Sie Erlauben erlauben. müssen können, Regeln zu einzelne nutzen durch keine wieder diese sollte Protokolle Sie außen ausgewählte von nun Shell-Verbindung Um Secure liefern. eine Antwort Auch sein. möglich mehr nicht ksbtstre rtoti u oredestination source destination out source in opt prot out target in bytes opt source pkts prot out target bytes pkts in opt prot target bytes pkts 3 W 582 CETtp- .../ .../ c dpt:22 tcp 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0 * * * * -- -- icmp tcp ACCEPT ACCEPT 372 8121 15 4 n i u he ehe u uhkienunFntrmh fnnkne,dn liegt dann können, öffnen mehr Fenster neuen keine auch nun Rechner Ihrem auf Sie enn Achtung oetüe a ezekabie,wr e ogneBfh Ihre Befehl folgende der unterbrechen! wird Verbindung arbeiten, Netzwerk das über Moment Sie dass sicher, Sie Stellen pals- NU DROP INPUT -P iptables lokal needtsn.Wn i ndiesem in Sie Wenn sind. angemeldet ieenah iealmtIptables mit Firewall einfache Eine 5 3 e igslt auch sollte Ping Der . 5.3 Ihr erstes Firewall-Skript library

Dieser Befehl fügt eine Regel in der INPUT-Kette hinzu, die alle Pakete akzeptiert, die das TCP-Protokoll verwenden (-p tcp) und an den Port 22 gerichtet sind (--dport; 4

--destination-port 22) . Dies setzt natürlich einen laufenden SSH-Server auf Ihrer Ma- open source schine voraus. Um nun den Originalzustand wiederherzustellen, genügt es nicht, den Befehl iptables -F aufzurufen. Dieser Befehl löscht zwar sämtliche Regeln in den Ket- ten, verändert aber nicht die Default-Policies! Da die Default-Policy in Ihrer INPUT-Kette aber immer noch auf DROP gestellt ist, werden weiterhin alle Pakete verworfen. Sie müssen zusätzlich noch den folgenden Befehl eingeben:

[root@bibo root]# iptables -P INPUT ACCEPT

Damit setzen Sie die Default-Policy wieder auf den ursprünglichen Wert. Jetzt wer- den wieder alle Pakete in der INPUT-Kette akzeptiert.

5.3 Ihr erstes Firewall-Skript

Nachdem Sie in dem letzten Abschnitt ein wenig mit dem iptables-Befehl herum- gespielt haben, sollen Sie nun Ihr erstes Firewall-Skript entwickeln. Dieses Skript soll die Regeln für ein Firewall-Gateway nach Abbildung 5.4 implementieren. Das Skript soll sämtliche Verbindung von innen nach außen zulassen, aber keine Ver- bindung von außen nach innen. Hierzu benötigen Sie zwei Rechner. Einer dieser beiden Rechner sollte über zwei Netzwerkkarten verfügen und mit dem Internet verbunden sein. Der andere Rechner sollte eine Netzwerkkarte besitzen und die zweite Karte des ersten Rechners erreichen können.

Achtung Im Weiteren benutze ich die Worte »innen« und »außen«, um je- weils das innere, von der Firewall geschützte Netz und das äußere Internet zu bezeichnen.

4 Falls Sie dies nun mit ssh localhost testen wollen, wird das noch nicht funktionieren. Sie benöti- gen hier noch zusätzlich die Regel:

[root@bibo root]# Iptables -A INPUT -p tcp --sport 22 -j ACCEPT Dies ist erforderlich, da auch der Client von der Firewall betroffen ist. Wenn Sie Ihren SSH- Client auf einer zweiten Maschine aufrufen, ist das nicht der Fall.

89 open source library bidn .:DsFrwl-aea cüz h nensNt o e urfe aus Zugriffen den vor Netz internes Ihr Internet. schützt dem Firewall-Gateway Das 5.4: Abbildung 90 verfügen: IP-Adressen folgende über sollten Rechner Die enSealsrctgkngrethbn ole i ndrLg en o dem von sein, Lage der voreingestellt. in Sie bereits sollten haben, User-Mode-Linux-Client konfiguriert beim richtig alles sind Sie Wenn IP-Adressen Diese I I I „außen“ Internet at e Clients des Karte Firewall der Karte Interne Firewall der Karte Externe iwi:User-Mode-Linux Hinweis: ietvndrC u tre önn ee i irui a Ver- das Sie in den hierzu Sie Rechner, Gehen virtueller können. starten kompletter zeichnis aus ein CD dieser der CD von an be- der direkt Hierzu Sie auf betreiben. können virtuell sich Client) verfügen, findet (den Rechner Rechner einen zwei auch über Stelle nicht Sie Falls terDebianmüssenSiedas ednsc ohädr.De idnc ndrentsprechenden der an noch wird Dies beschrieben. ändern. Stelle noch Netzwerkkarten der sich Namen werden die des Lediglich Aufgabe eingestellt. entsprechend die anschließend Abbildung aus wird Clients Diese Linux-Maschine. tuelle ohdsbeigelegte das noch u ue i a Skript das Sie rufen Nun Firewall-Gateway PArse1...0,Ntmse25000 aea 10.0.0.1 Gateway 255.0.0.0, Netzmaske 10.0.0.100, IP-Adresse : /virtualclient PArse1...,Ntmse255.0.0.0 Netzmaske 10.0.0.1, IP-Adresse : eibg PArseaßr10.x.x.x außer IP-Adresse Beliebige : user_mode_linux-.i386.rpm ü P-aireDsrbtoe üsnSie müssen Distributionen RPM-basierte Für . 5.4 ./start_client bremn i PArse idschon sind IP-Adressen Die übernehmen. uml-utilities ieenah iealmtIptables mit Firewall einfache Eine 5 Pktinstallieren. -Paket u.E ottdn ievir- eine dann bootet Es auf. Ihr Netzwerk „innen“ ntlirn Un- installieren. 5.3 Ihr erstes Firewall-Skript library

Firewall-System Ihren Client anzupingen (ping 10.0.0.100) und umgekehrt (ping 10.0.0.1).

Funktioniert so weit alles, beginnen Sie mit Ihrem Firewall-Skript. Warum sollten open source Sie ein Skript schreiben? I Nun, Änderungen sind in einem Skript mit einem Editor möglich. I Sie können sämtliche Regeln in dem Skript aufnehmen und dann auf einmal ausführen. I Nach einem Reboot vergisst der Linux-Rechner alle Regeln. Mit einem Skript können Sie diese wieder laden. I In einem Skript können Sie Kommentare einfügen, die später (auch nach einem Jahr) erläutern, warum Sie diese oder jene Regel für besonders wichtig hielten. I Außerdem können Sie in einem Skript Variablen nutzen und so die Wartung des Skripts stark vereinfachen. Ein ordentliches Shell-Skript sollte immer mit etwa folgenden Zeilen beginnen:

#!/bin/sh # # Autor : Ralf Spenneberg # Version: 0.1 # Datum : 17. Dez 2004 # # Dieses Skript lädt die Regeln für die Firewall

Die erste Zeile ist zwingend erforderlich. Durch diese Zeile erkennt das Betriebs- system, mit welchem Interpreter das Skript ausgeführt werden muss. Unter Linux gibt es viele Skriptsprachen. Jede besitzt ihren eigenen Interpreter. Da diese nicht kompatibel sind, sollten Sie den zu wählenden Interpreter in der ersten Zeile mit »#!« angeben. Diese Zeichenfolge wird auch als »She-Bang« bezeichnet. Die anderen Angaben können Sie entsprechend Ihren Wünschen anpassen. Für die dauerhafte Pflege Ihrer Skripte beschäftigen Sie sich am besten mit einem Revision-Control- System (RCS). Es gibt RCS und CVS. RCS ist auf fast jedem Linux-System vorhan- den und verfügt über eine einleitende Manpage (rcsintro(1)). Zunächst sollte Ihr Skript sicherstellen, dass der Befehl iptables immer gefunden wird. Da sich möglicherweise auch der Pfad in einer zukünftigen Distributions- version ändern kann, sollten Sie hierfür eine Variable verwenden. Fügen Sie die folgende Zeile zu Ihrem Skript hinzu, und Sie können den Pfad dann bei Bedarf anpassen:

IPTABLES="/sbin/iptables"

Nun sollten Sie alle Ketten zunächst durch das Skript sperren lassen. Dazu setzen Sie die Default-Policies in allen Ketten auf DROP:

91 open source library ekat.Dn önnSedrhen oikto he kit issa die an EXTDEV="eth1" dieses Skripts INTDEV="eth0" Ihres Modifikation eine Netz- anpassen. eine durch Situation mal Sie neue sich können ändert Vielleicht Dann Namen Variablen. werkkarte. die einfachsten wieder für am sich auch Sie Netzwerkkarten ist erzeugen Ihrer Unterscheidung Sinnvollerweise möglich. Diese müs- Netzwerkkarten können. Regeln die Pa- Die über unterscheiden weitergeleitete werden. um Richtung gesetzt sich FORWARD-Kette die der es von sen in handelt Verbindungen diese Firewall müssen nur die Daher sollen Für kete. Diese zulassen. außen werden. nach hinzugefügt innen Leer- Regeln keine die Gleichheitszeichen müssen Nun das um der dass Bei wichtig, Dollarzeichens. es vorkommen. des zeichen ist Voranstellen Wertes durch erfolgt des Variable Zuweisung die auf Zugriff Der DROP FORWARD DROP -P wird DROP OUTPUT $IPTABLES gesetzt -P DROP INPUT $IPTABLES auf -P indem Default-Policy $IPTABLES alles, die erstmal # Verwerfe Firewall # die für Regeln die IPTABLES="/sbin/iptables" lädt 2004 Skript Dez Dieses 17. # : # Spenneberg Datum Ralf 0.1 # : Version: # Autor # # #!/bin/sh 92 folgen- die Sie Iptables- fügen an: erlauben, der Skripts zu Ihres hinter innen Ende direkt von am Verbindung Regeln Anfang die den am nun Um sinnvollerweise ein. Sie Variable fügen Variablen Diese Achtung enSeUe-oeLnxenezn s i nen Netzwerkkarte interne die ist einsetzen, User-Mode-Linux Sie Wenn tap0 a eett i üsndeZiewefltabändern: folgt wie Zeile die müssen Sie bedeutet, Das . INTDEV="tap0" ieenah iealmtIptables mit Firewall einfache Eine 5 5.3 Ihr erstes Firewall-Skript library

$IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT open source Die erste Regel prüft, ob ein Paket über die interne Netzwerkkarte die Firewall erreicht (-i $INTDEV) und über die externe Netzwerkkarte die Firewall verlässt (-o $EXTDEV)5. Zusätzlich prüft die Regel den Zustand des Pakets. Hierzu pflegt das Linux-System eine Tabelle, in der jede erlaubte Verbindung eingetragen wird. Ein Paket besitzt den Zustand NEW, wenn es zu keiner bisher eingetragenen Verbindung passt. Es besitzt den Zustand ESTABLISHED, wenn es bereits eine Verbindung in der Tabelle gibt, der dieses Paket zugeordnet werden kann. Der Zustand RELATED wird verwendet, wenn das Paket nicht Teil der Verbindung ist, sondern in einer anderen Beziehung zu dieser Verbindung steht. Hierbei kann es sich zum Beispiel um eine ICMP-Fehlermeldung handeln. Eine ausführlichere Erklärung der Verbindungsüberwachung (engl. Connection Tracking) gibt es im Abschnitt 5.5 und in Kapitel 19. Die erste Regel akzeptiert so jedes Paket, das eine neue Verbindung aufbauen möchte und von innen nach außen geschickt wird. Gleichzeitig wird diese Verbindung dann in der Tabelle eingetragen. Die zweite Regel prüft dann lediglich, ob ein Paket den Zustand ESTABLISHED oder RELATED aufweist. Alle diese Pakete werden von der zweiten Regel akzep- tiert. So ist ein Verbindungsaufbau nur von innen nach außen möglich. Warum ist das sicher? Wenn nun ein Paket von außen eine neue Verbindung auf- bauen wollte, würde es von der Firewall nicht akzeptiert werden. Dieses Paket be- sitzt den Zustand NEW. In der ersten Regel werden zwar solche Pakete akzeptiert, aber dieses Paket würde nicht die Bedingung erfüllen, über die interne Netzwerk- karte die Firewall erreicht zu haben. Damit ein Paket von außen zugelassen wird, ist erst ein Paket von innen erforderlich, das dieses Paket anfordert und die Verbin- dung in der Zustandstabelle einträgt. Sobald dies erfolgt ist, erhalten alle weiteren Pakete der Verbindung den Zustand ESTABLISHED und werden von der zweiten Regel unabhängig von ihrer Richtung akzeptiert.

Achtung Warum werden die Regeln in der FORWARD-Kette hinzugefügt? Wieso nicht in der INPUT- oder OUTPUT-Kette? Wenn Sie sich nochmal die Abbildung 5.1 auf Seite 82 ansehen, wird Ihnen auffal- len, dass die Pakete, die durch das Gateway durchgeroutet werden, nur von der FORWARD-Kette bearbeitet werden. Die INPUT- und die OUTPUT-Kette sind hier gar nicht beteiligt. Diese Ketten wer- den nur aktiv, wenn das Gateway selbst Kommunikationspartner wäre. Dies wird in Kapitel 8 genauer besprochen!

5 Noch sicherer können Sie die Regel definieren, wenn Sie auch noch prüfen, ob die Absender- Adresse des Pakets aus Ihrem Netzwerk stammt. Hierzu können Sie eine Variable INTNET=10.0.0.0/8 anlegen und diese zusätzlich mit der Option -s $INTNET der Regel hinzufügen.

93 open source library i ofiuaindsLnxKreszrLuzi.FrdsFradn s i Datei die ist Forwarding das Für Laufzeit. zur Linux-Kernels des Konfiguration die /proc/sys/net/ipv4/ip_forward bei werden Funktionen Derartige virtuelle werden. das aktiviert über Linux Forwarding das soll Zunächst 2. fehlen Punkte wesentliche Zwei fertig. 1. ganz nicht funktioniert: noch es aber damit noch, Skript das ist Damit et s i ezeKte i i ae uclut a e ehe elst In 94 verlässt. Rechner den das durchläuft, Paket Diese ein die NAT-Tabelle. Kette, der letzte POSTROUTING-Kette MASQUERADE die der -j ist in $EXTDEV Kette erfolgt -o Masquerading POSTROUTING Das -A nat -t $IPTABLES Infor- Weitere überlassen. Befehl Ihnen den bleibt entscheiden, über hier mationen sich Sie Befehl welchen Für sgb rnstlc wiMgihetn mnndsFradn einzuschalten: Forwarding das nun um Möglichkeiten, zwei grundsätzlich Netzwerkkarten gibt allen Es zwischen Linux-Kernel weiter. der Router leitet als 1 Pakete einer die Bei aktiv. nicht ding rlr edn ai a aqeaig a ieseileFr e A ist, NAT des Form spezielle eine Regel: folgende das die Masquerading, Sie benötigen Abschnitt das funktioniert, im Damit werden werden. NAT-Tabelle erklärt die und (NAT) 5.7 Translation Address Network 23 I I . i ieNtokAdesTasaindrhür.Hebiwr i originale Dies ausgetauscht. die bezeichnet. Firewall Masquerading wird der als dem Adresse Hierbei auch die in wird durchführt. durch der beheben, Clients Translation Problem IP-Adresse die des Address dieses Die Absenderadresse Systemen Firewall Network ist. den die eine unbekannt kann da sie Daher Clients sollen, bekannt. des antworten ist Netzwerk Firewall sie außerhalb das wohin Systeme und die wissen, IP-Adresse werden nicht sendet, Firewall außen der nach Netzwerkpakete Client weiterleiten. ner nicht noch Moment im Masquerading diese sie wird erhält, außen nach terleitung Forwarding SST wnet.ipv4.ip_forward=1 -w $SYSCTL SYSCTL="/bin/sysctl" Befehl der ist /proc Möglichkeit zweite Die /proc/sys/net/ipv4/ip_forward > "1" $ECHO ECHO="/bin/echo" den verwenden Sie e coBfh etroben. weiter Echo-Befehl der ognemßnen speichern: 1 eine folgendermaßen ufhlc epohn irsl u i rodrih ee ogsel und vorgestellt Regel erforderliche die nur soll Hier besprochen. ausführlich Dtiytmlsnudste.DeflednZie rece aslewie dasselbe erreichen Zeilen folgenden Die setzen. und lesen -Dateisystem ebtwn i iealmmna o ne aeefrdeWei- die für Pakete innen von momentan Firewall die wenn Selbst : ebtwn i etretn kiir ud n i inter- ein und wurde aktiviert Weiterleitung die wenn Selbst : /bin/echo /proc sysctl utni.EtätdeeDtien ,s s a Forwar- das ist so 0, eine Datei diese Enthält zuständig. Dtiytmagshle.Dee aesse erlaubt Dateisystem Dieses angeschaltet. -Dateisystem Bfh.Mtdee eelkne i ndrDatei der in Sie können Befehl diesem Mit -Befehl. n das und /proc sysctl Dtiytmehle i mKapitel im Sie erhalten -Dateisystem isrBfh andeWreim Werte die kann Befehl Dieser . ieenah iealmtIptables mit Firewall einfache Eine 5 5.3 Ihr erstes Firewall-Skript library dieser Kette tauscht diese Regel die Absenderadresse jedes Pakets gegen die Ab- senderadresse der Firewall aus und merkt sich die Originaladresse. So kann die

Firewall bei einem Antwortpaket die originale Adresse wieder einsetzen. Dieser open source Vorgang soll nur für Pakete aktiviert werden, die die Firewall nach außen verlas- sen (-o $EXTDEV). Die NAT-Tabelle enthält auch noch die Ketten PREROUTING und OUTPUT. Diese Ketten und die weiteren Funktionen der NAT-Tabelle werden im Abschnitt 5.7 besprochen. Sinnvoll sind in dem Skript zu Beginn nun noch einige Befehle, die möglicherweise vorhandene Regeln aufräumen und entfernen, ehe neue Regeln hinzugefügt wer- den. Dies kann mit den folgenden beiden Zeilen erreicht werden:

$IPTABLES -F $IPTABLES -t nat -F

Das komplette Skript sieht nun wie folgt aus:

Listing 5.1: Das erste Firewall-Skript erlaubt nur Verbindungen von innen.

#!/bin/sh # # Autor : Ralf Spenneberg # Version: 0.1 # Datum : 17. Dez 2004 # # Dieses Skript lädt die Regeln für die Firewall

INTDEV="eth1" # Achtung: Bei Einsatz von User-Mode-Linux lautet diese Variable # INTDEV="tap0"

EXTDEV="eth0"

# Definiere einige Befehle ECHO="/bin/echo" SYSCTL="/bin/sysctl" IPTABLES="/sbin/iptables"

# Verwerfe erstmal alles $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP

# Leere die Ketten $IPTABLES -F

95 open source library ahne ncleedausführbar: anschließend es machen i elredne e hl ih eodr usgkätgsn ozmBei- zum da so können, – sind werden aussagekräftig gefunden besonders schwer nicht nur spiel: Shell die der ein, Fehlermeldungen Tippfehler die häufig Eingabe der SST wnet.ipv4.ip_forward=1 -w $SYSCTL # Alternativ: # /proc/sys/net/ipv4/ip_forward MASQUERADE > -j Forwarding "1" außen $EXTDEV das $ECHO nach -o Aktiviere Weiterleitung POSTROUTING # der -A ACCEPT bei nat sind -j ACCEPT Pakete -t Verbindung ESTABLISHED,RELATED -j alle $IPTABLES aufgebauten --state NEW Maskiere einer state --state # Teil -m state die FORWARD -m Pakete, -A $EXTDEV alle $IPTABLES -o Akzeptiere $INTDEV # -i innen FORWARD von -A Verbindungsaufbauten $IPTABLES Akzeptiere # werden geleert -F extra nat muss -t NAT-Tabelle $IPTABLES Die # 96 ge- vorher schon nicht Namen es dem Sie unter falls Skript testen, dieses zu Sie Skript speichern dieses Hierfür Zeit, haben. der tan an es ist Nun Achtung u e ot13tpnctvrefn odr i ie Fehlermel- einer mit sondern ablehnen: verwerfen, dung nicht Verbindungen 113/tcp Sie indem Port war- Problem, dem Verbindung das auf Sie Ihrer lösen mit einfachsten den Am Sie ten. Sie müssen Solange wiederholen mehrfach. wird, Da Versuch verworfen hat. aufgebaut Verbindungsversuch Dienst, Verbindung dieser diesen ursprüngliche fragen die FTP-Server Benutzer der welcher der und normalerweise E-Mailserver dem Unix-Systemen Der bei auf identd. horcht Ihnen Hier auf. zu 113/tcp Verbindung Port einem eine bei Ihrerseits FTP-Server verwerfen. und Verbindungsaufbau Fehlermeldung Unix-E-Mail-Server Verbindungen, ohne gerade alle bauen werden, Sie Leider aufgebaut dass außen Tatsache, von die zustande die E-Mail- ist verzögert einen daran erst auf Schuld Verbindung Zugriff kommt. die einem erwar- scheinbar bei es dass FTP-Server Sie sein, oder als kann Es anders, würden. Firewall ten Ihre sich verhält Möglicherweise ITBE AIPT- ETE ptp-dot13- REJECT -j 113 --dport tcp -p $EXTDEV -i INPUT -A $IPTABLES ho 5 firewall 755 chmod ieenah iealmtIptables mit Firewall einfache Eine 5 edrshece ihbei sich schleichen Leider . firewall bund ab 5.3 Ihr erstes Firewall-Skript library

[root@bibo root]# ./firewall iptables: No chain/target/match by that name open source Erfreulicherweise bietet die BASH-Shell eine Option, mit der die Zeile, auf der sich der Fehler eingeschlichen hat, leicht ermittelt werden kann. Die Option -x gibt jede Zeile vor der Ausführung auf dem Bildschirm aus. Sie müssen also nur die Fehler- meldung wiederfinden und die Zeile davor genau analysieren:

... gekürzt ... + /sbin/iptables -P INPUT DROP + /sbin/iptables -P OUTPUT DROP + /sbin/iptables -P FORWARD DROP + /sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state NEW -j ACCEPT + /sbin/iptables -A FORARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables: No chain/target/match by that name + /sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE ... gekürzt ...

Hier kann sehr schnell der Übeltäter erkannt werden. Es handelt sich um einen Tippfehler in dem Namen der FORWARD-Kette. Anstelle von FORWARD wurde FORARD verwendet. Herzlichen Glückwunsch, wenn keine Fehler auftreten. Sie sollten jetzt schon über einen funktionsfähigen Firewall-Regelsatz verfügen. Dieser erlaubt im Moment der Firewall selbst keinerlei Teilnahme am Netzwerkverkehr. Die Firewall kann also zum Beispiel nicht pingen und keinen Ping beantworten. Jedoch sollte ein Client durch die Firewall auf andere Rechner zugreifen können. Versuchen Sie doch ein- fach mal Ihr Glück mit einem Ping vom Client ins Internet. Wenn es nicht funk- tioniert, finden Sie am Ende dieses Abschnitts einige weitere Hinweise zur Fehler- suche.

Hinweis: Warum kann die Firewall nicht pingen? Die INPUT- und die OUTPUT-Kette enthalten keine Regeln. Da die Default-Policies dieser Ketten auf DROP gesetzt sind, werden in diesen Ketten daher keine Pakete akzeptiert, sondern sämtliche Pakete verworfen. Sowohl die Pakete, die von außen an die Firewall selbst gerichtet sind, als auch die Pakete, die die Firewall versenden möchte, sind davon betroffen. Nur in der FORWARD-Kette akzep- tiert die Firewall Netzwerkpakete. Daher ist ein Ping durch die Firewall möglich! Im Kapitel 8 werden die INPUT- und die OUTPUT-Kette genauer betrachtet. Dort lernen Sie, wie Sie auch hier sinnvoll filtern. Wenn Sie dieses Verhalten für den Moment abstellen wollen, ändern Sie in Ihrem Skript die Default-Policy der INPUT- und der OUTPUT-Kette auf ACCEPT. Dann schützt sich die Firewall aber selbst nicht mehr!

97 open source library e.Dn ole i brüe i rarn efgn iseülceFhe ebtz lösen. zu selbst Fehler diesbezügliche verfügen, garantie- Erfahrung dafür die nicht über ich aber kann Sie verwenden, sollten Iptables-Befehl Dann und/oder ren. Kernel selbstgebauten einen uhnSednFhe,udbhbnSein i bnerläutert. oben wie ihn, Sie beheben und funktionieren! Fehler, nicht Ihres den es Aufruf Sie Sie kann beim Dennoch Suchen Prüfen wird, Sobald erklären. ausgegeben denken. Richtigkeit. Fehlermeldung zu syntaktische zu auf eine versuche Skript Firewall-Skripts hier Eventualitäten bemüht, Ihr ich Erstes alle mich die als ich kommen, an bitte aber Fehlern habe und weiteren Daher zu erklären nicht. es zu oder kann ist genau begeistert Schritt System jeden einem von man ob EH 0 /proc/sys/net/ipv4/ip_forward > Forwarding "0" das $ECHO Deaktiviere # ACCEPT FORWARD ACCEPT -P ACCEPT OUTPUT $IPTABLES her -P wieder INPUT $IPTABLES Default-Policies -P die $IPTABLES Stelle # -F nat -t Regeln $IPTABLES vorhandenen -F alle $IPTABLES Lösche # Firewall die für IPTABLES="/sbin/iptables" Regeln die ECHO="/bin/echo" löscht 2004 Skript Dez Dieses 17. # : # Spenneberg Datum Ralf 0.1 # : Version: # Autor # # die #!/bin/sh setzt und Regeln zurück. alle ACCEPT entfernt auf (firewall_stop) wieder Skript Default-Policies Dieses Hierzu betrifft, beendet. 5.2: wieder Firewall-Skripten Listing Firewall von die verwenden: Schreiben das Skript erzeugen, das folgende das Skript was Sie ein können sind, auch sich Übung Sie in sollten gerade Sie Da 98 Pro- keine Kapitels des Nachvollziehen dem mit Leser meisten bleme die dass hoffe, FehlersucheIch beenden. 5.3.1 Testzwecken zu wieder immer Firewall Ihre Sie können Skript diesem Mit 6 D eBipeewre u e adlülce itiuinnudKrengtse.Wn Sie Wenn getestet. Kerneln und Distributionen handelsüblichen den auf wurden Beispiele ie 6 ae edn agrd i rtnVruh äfi aüe entscheiden, darüber häufig Versuche ersten die gerade da werden, haben ieenah iealmtIptables mit Firewall einfache Eine 5 5.3 Ihr erstes Firewall-Skript library

Wenn Ihr Skript erfolgreich lädt, Sie aber dennoch keinen Rechner außerhalb Ihrer Firewall erreichen können, gehen Sie bitte bei der Fehlersuche folgendermaßen vor: open source 1. Beenden Sie Ihre Firewall mit dem firewall_stop-Skript.

2. Prüfen Sie nun, ob Sie von Ihrem Client aus Ihre Firewall erreichen können: ping 10.0.0.1. Klappt das nicht, überprüfen Sie die Netzwerkverbindung. Ansonsten fahren Sie in der Fehlersuche fort.

3. Prüfen Sie nun, ob Sie von der Firewall einen Rechner außerhalb erreichen kön- nen. Klappt dies nicht, überprüfen Sie bitte die Netzwerkverbindung Ihrer Fire- wall.

4. Prüfen Sie nun die Routing-Konfiguration des Clients. Ist die interne IP-Adresse der Firewall das Standard-Gateway des Clients? Dies können Sie mit dem Befehl /sbin/route erledigen:

[root@bibo root]# /sbin/route Kernel IP Routentabelle Ziel Router Genmask Flags Metric Ref Use Iface 10.0.0.1 * 255.255.255.255 UH 0 0 0 eth0 192.168.0.0 * 255.255.255.0 U 0 0 0 eth1 default 192.168.0.254 0.0.0.0 UG 0 0 0 eth1

Hier ist hat das Default-Gateway die IP-Adresse 192.168.0.254. Sie können mit route del default vorübergehend das Default-Gateway entfernen und mit route add default gw neu setzen.

5. Wenn Sie DNS-Namen verwenden möchten, prüfen Sie bitte, ob der Client die richtigen DNS-Server kennt. Wenn Sie keinen direkten Zugriff auf das Inter- net haben, können die DNS-Server speziell des User-Mode-Linux-Clients falsch eingerichtet sein. Die DNS-Server werden in der Datei /etc/resolv.conf gepflegt. Tragen Sie hier die DNS-Server ein, deren Funktion Sie sicher kennen.

6. Aktivieren Sie testweise auf der Firewall das Forwarding und das Masquera- ding:

[root@bibo root]# iptables -t nat -A POSTROUTING -o $EXTDEV -j MASQUERADE [root@bibo root]# echo "1" > /proc/sys/net/ipv4/ip_forward

Ersetzen Sie hierbei $EXTDEV durch den Namen Ihrer externen Netzwerkkarte. Prüfen Sie anschließend, ob Sie nun von Ihrem Client aus den zuvor getesteten Rechner außerhalb Ihrer Firewall erreichen können.

7. Starten Sie nun Ihr Firewall-Skript erneut. Prüfen Sie, ob Sie immer noch den Rechner erreichen können.

99 open source library itn .:DrDfutRnee idi e ae eciitbdefiniert: /etc/inittab Datei der in wird Default-Runlevel Der 5.3: Listing ro@ioro] h -r who root]# [root@bibo runlevel N5 Befehl root]# dem mit [root@bibo Sie können befindet, System Ihr oder sich Zustand welchem In konfiguriert Bedeutung Oberfläche Nicht ihre grafischer und Reboot mit Runlevel aber 3, 5.1: wie Verwendung Tabelle Multi-User ohne aber 3, wie Vorkonfiguriert Netzwerkdiensten allen 7-9 mit Multi-User Netzwerkfunktionen 6 ohne Multi-User 5 Single-User 4 Halt-Zustand 3 2 1 0 Bedeutung Runlevel Runlevel. folgenden die unterscheiden bezeichnet. Be- Linux-Distributionen Runlevel dem modernen als von meisten wird hängt Betriebszustand Die Dieser wird, ab. gestartet Rechners Rechners des Dienste. des triebszustand der Bootvorgang Starten beim das Dienst und Welcher Systems des SysV-Init-Prozess Initialisierung der geladen die sich neu Bootvorgang, kümmert Regeln den Linux-Distributionen diese um meisten Neustart richtige jedem den eine bei Bei alle Für dass werden. Systems sind. erforderlich, verloren daher des wieder es Neustart wurden, geschrieben. ist gesetzt einem Firewall Firewall-Skript Skript nach das erstes dass durch die aufgefallen, Ihr Regeln, bereits erfolgreich Ihnen Sie ist haben Vielleicht Boot-Prozess Abschnitt den in letzten Einbindung Im 5.4 oiidfrRSLnxb acEigadDni Barnes Donnie and Ewing Marc by Linux RHS for Modified run-level. certain 100 a in system up the set Smoorenburg, should van process Miquel INIT the how describes file # This # Author: # # # inittab # # 5 Runlevel System in dem Moment von Datei im automatisch der System in Reboot Sie mein nächsten können sich wird, beim gewählt dass Runlevel einig, Welcher sich befindet. sind Befehle Beide h -r who ulvl5Dc2 63 last=S 06:37 20 Dec 5 Runlevel ermitteln: /etc/inittab ieenah iealmtIptables mit Firewall einfache Eine 5 festlegen: runlevel 5.4 Einbindung in den Boot-Prozess library

# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this)

# 1 - Single user mode open source # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault: ... gekürzt ...

Bei einer Firewall ist es sinnvoll, dafür zu sorgen, dass die Regeln beim Bootvor- gang unabhängig von dem gewählten Runlevel geladen werden. Daher sollten Sie Ihr Skript in den Bootvorgang des Runlevels 3, 4 und 5 einbinden. In den Runle- veln 1 und 2 stehen normalerweise keine Netzwerkdienste zur Verfügung, daher ist die Einbindung hier nicht zwingend erforderlich. Allerdings kann es auch nicht schaden. Daher können Sie auch in diesen Runleveln Ihr Skript einbinden. Die Einbindung erfolgt über Verknüpfungen in den Verzeichnissen /etc/rcX.d.Die Anleitung für die Einbindung in aller Kürze:

1. Kopieren Sie Ihr Skript in das Verzeichnis /etc/init.d/: cp firewall /etc/init.d/MyFirewall 2. Machen Sie das Skript ausführbar: chmod 755 /etc/init.d/MyFirewall

3. Gehen Sie in das Verzeichnis /etc/rc.d/rc3.d/, und erzeugen Sie einen Startlink: [root@bibo root]# cd /etc/rc.d/rc3.d/ [root@bibo rc3.d]# ln -s /etc/init.d/MyFirewall S05MyFirewall 4. Wiederholen Sie den letzten Schritt für die Verzeichnisse mit den Nummern 4 und 5. Wenn Sie möchten, können Sie dies auch für die Verzeichnisse 1 und 2 durchführen.

Diese vier Schritte genügen üblicherweise für die Einbindung des Skripts. Wenn Sie nun Ihren Rechner neu starten, sollte Ihr Skript automatisch geladen werden. Möglicherweise fragen Sie sich nun, warum ich die Nummer 05 für die Verknüp- fung S05MyFirewall gewählt habe. Die S-Nummer definiert die Reihenfolge der zu startenden Dienste. Die K-Nummer definiert die Reihenfolge, in der die Dienste beendet werden. Dies ist erforderlich, da es durchaus Abhängigkeiten unter den Diensten gibt. So ist zum Beispiel der Start des Netzwerks erforderlich, bevor ein Netzwerkdienst gestartet werden kann. Im Falle der Firewall-Regeln sollten diese geladen werden, bevor das Netzwerk ge- startet wurde und die Netzwerkkarten initialisiert wurden. Dies erfolgt bei Red Hat an der Position 10. Dadurch sind die Regeln schon aktiv, wenn die Netzwerkkarten aktiviert werden. So entsteht keine Lücke, die ein Angreifer ausnutzen könnte.

101 open source library ubuwsnlc ihrrFrwlsemgih.Geczii iddsRegelwerk das den wird Tracking Gleichzeitig übersichtlicher. Connection und ermöglicht. dieses einfacher Firewalls dass sicherer werden, wesentlich deutlich Aufbau Ihnen Im sollte UDP- ICMP-Pakete. Dann einer Iptables. machen Verbindungsü auch die Abschluss als Entwick- ich TCP- erläutere Den Die Anschluss einer zunächst werden. ipchains. anhand ich sowohl durchgesprochen wie beschreibe soll Verbindung Paketfilters Regeln verstehen, notwendigen einfachen zu der eines besser lung und Funktionsweise dies pflegt Um die Verbindungen bekannten kann. filtern. kurz der zu zuordnen Liste Verbindungen Pakete eine Lage, es der so indem in Iptables, Iptables Pa- erreicht ist nur Dies kann, wirklich filtern ist und Paketfilter unterscheidet, analysieren einfacher kete Paketfiltern ein älteren Während von Verbindungsüberwachung. Iptables die die Netzwerkverbindungen Eigenschaft, und Tracking wesentliche Connection Die Ihre 5.5 auch anschließend haben. ob eingestellt prüfen, sie Sie und wie starten wurden, neu geladen so Rechner Firewall-Regeln Ihren Sie Firewall. sollten die Nun deaktivieren und YaST Sie verwenden SUSE Bei off iptables zu- chkconfig Linux- wieder /]# Hat-basierten nicht [root@bibo Red Befehl: Arbeit einer dem mit Auf die das werden. Sie Firewall deaktiviert erreichen Distribution diese distributionseigene sollte die macht, verwalten nichte nun Distribution Ihrer distributionskonform Ihnen Werkzeugen Skript Damit den das mit Sie auch wie es Sie können. finden, dass dazu so Hinweise Dis- wer- einbinden, Distribution Ihrer weitere Ihrer Werkzeugen Handbuch Sie den dem mit In den können. Dienst konfigurieren diesen nicht Das Sie nun distributionskonform. dass tribution erkennen, nicht daran sicherlich Sie ist werden Einbindung vorgenommene hier Die 102 Bitte vorkommen. Erfahrungen bekannt 2.2 Kapitel Linux-Kernels dieses des sicherlich Ihnen IPchains wird Paketfilter haben, dem gesammelt mit IPchains bereits Paketfilter Sie zustandslose Der Wenn 5.5.1 Tipp rruihres rab der erlaubt Erfreulicherweise ü ezekatnudI-desn i ohnctexistieren! nicht noch die IP-Adressen, und Netzwerkkarten für ewcug(oncinTakn)durch Tracking) (Connection berwachung iptables ieenah iealmtIptables mit Firewall einfache Eine 5 Bfh a ae e Regeln der Laden das -Befehl 5.5 Connection Tracking und Netzwerkverbindungen library

überspringen Sie es dennoch nicht, denn viele Iptables-Anwender haben bis heute nicht den wesentlichen Funktionsunterschied zwischen IPchains und Iptables rich-

tig verstanden. open source IPchains ist ein klassischer Paketfilter, der in der Lage ist, die Protokoll-Header eines Pakets zu analysieren und anschließend das Paket zu akzeptieren oder zu verwer- fen. Dabei muss IPchains sich jedes Paket einzeln ansehen und ist als Paketfilter nicht in der Lage, Abhängigkeiten der Pakete zu erkennen. Im Folgenden sollen Beispielregeln für typische Netzwerkverbindungen in IPchains entwickelt werden. Sie müssen die IPchains-Syntax hierfür nicht erlernen. Ich werde sie an der entspre- chenden Stelle ausführlich erläutern. Sie ähnelt auch stark der Iptables-Syntax. Ich möchte Sie lediglich auf einige Sicherheitsprobleme im Zusammenhang mit Paket- filtern hinweisen.

5.5.2 IPchains und UDP Beginnen wir mit einer typischen UDP-Verbindung. Die DNS-Namensauflösung ist ein typische UDP-Verbindung und sicherlich für einen Großteil des UDP-Verkehrs im Internet verantwortlich. Hier fragt ein DNS-Client einen DNS-Server nach der IP-Adresse für einen DNS-Namen oder umgekehrt. Die Anfrage ist schematisch in Abbildung 5.5 dargestellt, und ein - Mitschnitt ist in Listing 5.4 zu sehen.

1027/udp 53/udp www.spenneberg.com

www.spenneberg.com = 217.160.128.61 1027/udp 53/udp DNS-Server Client

Abbildung 5.5: Der DNS-Client fragt den DNS-Server mit dem UDP-Protokoll auf Port 53 nach der IP-Adresse für www.spenneberg.com.

Listing 5.4: TCPDump-Mitschnitt der DNS-Anfrage »www.spenneberg.com«

[root@bibo tmp]# tcpdump -nvv port 53 tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes

17:33:50.850459 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto 17, length: 64) 192.168.0.112.35785 > 128.176.0.12.domain: [udp sum ok] 52380+ A? www.spenneberg.com. (36)

17:33:50.891933 IP (tos 0x0, ttl 48, id 51717, offset 0, flags [none], proto 17, length: 176) 128.176.0.12.domain > 192.168.0.112.35785: 52380 q: A? www.spenneberg.com. 2/2/2 www.spenneberg.com. CNAME spenneberg.com., spenneberg.com.[|domain]

103 open source library i ee iswrei PhisSna ognemßnlauten: folgendermaßen IPchains-Syntax in würde Eins Regel Die erlauben. Client den an Servers des Antwortpaket das muss Regel zweite Die 2. IP-Adresse Die erlauben. Server zum Client dem von Paket das muss Regel Eine bedeutet, Das 1. stellt. Frage die benötigt: Client Regeln zwei der Paketfilter DNS-Server der dass welchem bei bekannt, nicht 3 okn i nrg ahaßnzmDSSre eagn u usac die aus: auch muss folgendermaßen Nun sieht gelangen. Zwei DNS-Server Regel zum werden. außen akzeptiert nach Antwort Anfrage die kann So 53. e,drgnudeeAtvnAfae rabnsl (Abbildung Paketfil- soll ein erlauben sich Anfragen befindet von Server Art dem diese und genau Client der dem ter, zwischen vor, sich Sie Verwendung Stellen unter entwickeln. wer- zu antwortet verwendet Paketfilterregeln nun Server Server die können den um Informationen Der den, an Diese (domain). Ports. UDP-Paket und 53 ein IP-Adressen 35785 Port derselben Port dem von auf 192.168.0.112 128.176.0.12 Client der schickt Hier geschützt. Paketfilter einen durch nun wird Client Der 5.6: Abbildung 104 Dabei schickt. innen nach außen An- ACCEPT von ein 53 dass -j Absenderport verhindern, nicht dem $CLIENTS können mit Regeln -d UDP-Pakete Diese greifer nicht? 53 Regeln diese any/0 leisten Was -s udp -p forward -A ipchains ACCEPT -j 53 any/0 ( -d akzeptiert Regel $CLIENTS Diese -s udp -p forward -A ipchains CLIENTS=192.168.0.0/24 e ezek1218002 ( 192.168.0.0/24 Netzwerk dem mItre rabn i andeePkt u naddsvredtnProto- verwendeten erkennen. des (53) anhand Ports nur und Pakete DNS-Server (UDP) diese möglichen kolls kann theoretisch Sie kann, erlauben. jedem haben Internet geschickt von im DNS-Server Antwortpakete möglichen Da Regel Da- jeden akzeptieren. diese an hat. Antwortpaket muss Paket zu rausgeschickt mögliche ein sich DNS-Server aber theoretisch Lage, Client einen jedes der der an Regel in Paket diese nicht muss ein ist her Client Es ein Gedächtnis. dass kein merken, über jedoch verfügt (53) IPchains Port bekannt. Adressbereich der der und oder (UDP) IP-Adresse die Protokoll ist das Client Lediglich Vom fest. bekannt. stehen nicht ist Servers des Client 1027/udp 1027/udp www.spenneberg.com = 217.160.128.61 = www.spenneberg.com jACCEPT -j www.spen -s neberg.com ? )UDP-Pakete( n ie eibgnZearse( Zieladresse beliebigen einer und ) pudp -p ieenah iealmtIptables mit Firewall einfache Eine 5 i ie bedrdes aus Absenderadresse einer mit ) 5.6 .Dbisiaber sei Dabei ). -d 53/udp 53/udp )aufdemPort DNS-Server 5.5 Connection Tracking und Netzwerkverbindungen library beschränken diese Regeln nicht den Zielport auf dem Client. Dies ist auch nicht möglich, da dieser Port nicht bekannt ist. Jeder Client kann einen fast beliebigen

Port für seine Anfrage wählen. Bei jeder Anfrage wird er diesen auch neu wählen. open source Daher muss die Firewall Antworten auf jedem beliebigen Port erlauben. Dies ist nicht ganz richtig, werden einige Leser jetzt bemerken. Und richtig, unter Unix-ähnlichen Systemen darf ein Client nur einen nicht-privilegierten Port ver- wenden. Dies sind die Ports 1024 bis 65535. Meist verwendet der Client nur einen bestimmten Bereich, zum Beispiel würde ein Linux 2.6-Kernel einen Port-Bereich von 32768-61000 nutzen. Die meisten anderen Systeme halten sich auch an diese Konvention. Bei einem einfachen Paketfilter nutzt man diese Tatsache aus, um die Regeln noch sicherer zu machen:

Listing 5.5: Der Client verwendet einen unprivilegierten Port für den Verbindungsaufbau.

CLIENTS=192.168.0.0/24 ipchains -A forward -p udp -s $CLIENTS 1024:65535 -d any/0 53 -j ACCEPT ipchains -A forward -p udp -s any/0 53 -d $CLIENTS 1024:65535 -j ACCEPT

Dennoch kann die zweite Regel einen Angreifer nicht daran hindern, UDP-Pakete durch die Firewall an einen beliebigen Client auf einen unprivilegierten Port zu schicken. Diese Regel muss jedes scheinbar sinnvolle Paket durchlassen. Da es durchaus einige UDP-Dienste gibt, die einen derartigen Port verwenden, ist es möglich, durch diese Firewall eine UDP-Verbindung von außen nach innen auf- zubauen, vorausgesetzt, ich verwende als Client den Port 53/udp. Gute IPchains- Paketfilterkonfigurationen schließen diese Ports wieder aus.

Tipp Wie beeinflusse ich bei einem Angriff den Client-Port? Es gibt viele Möglichkeiten, dies zu tun. Wenn Sie aber nur schnell für einen Scan einer Firewall den Client-Port einstellen möchten, bieten die moder- nen Scan-Werkzeuge dies bereits an. So können Sie beim bekannten Werkzeug nmap (siehe Abschnitt 15.2) mit der Option --source-port den Client-Port einstellen. Der Befehl nmap -sU --source-port 53 würde den Client scannen, vorausgesetzt, es wird nicht gleichzeitig NAT eingesetzt.

5.5.3 IPchains und TCP Nachdem wir eine typische UDP-Verbindung betrachtet haben, soll nun eine TCP- Verbindung analysiert werden. Hier werden wir uns zwei verschiedene Applika- tionsprotokolle anschauen. Zunächst wird das HTTP-Protokoll betrachtet und an- schließend das FTP-Protokoll. Wenn Sie sich hier wundern sollten, warum ich zwei Protokolle betrachte, werden Sie sich nach der Erklärung des FTP-Protokolls wahr- scheinlich noch mehr wundern.

105 open source library mGgnazzmUPPoooldeÜetaugdrIfrainni e richti- der in Informationen der Reihenfolge. Übertragung garantiert gen die Es UDP-Protokoll UDP-Protokoll. zum das Gegensatz als im komplizierter ist TCP-Transport-Protokoll Das 106 ip C n UDP und TCP Tipp: en ntaeSqezumra e evrzrSynchronisa- zur Server ( diese den Client bestätigt an Dieser der im Sequenznummer tion. überträgt erfolgt initiale TCP-SYN-Paket Dies Beginn seine ersten feh- einigen. zu Im noch an- Sequenznummern Kommunikationspartner TCP-Handshake. welche verwendeten Übertragung beiden die und die die auf wurden sich wo übertragen müssen den- können, len, Daten nun erkennen Damit welche Seiten nummerieren. fängt, der Daten beide mit die noch nicht beginnend TCP-Verbindung 0 eine Nummer darf Sicherheitsgründen Daten Aus rich- noch der ob in erkennen, Daten und fehlen. die zusammenbauen Empfänger Reihenfolge der einer tigen kann mit Nummer Byte der (Bestätigungsnummer/Acknowledgement-Nummer). Anhand übertragene der jedes bestätigt Nummer TCP Diese Empfänger Sequenznummer. versieht die ist tun, Dies Nummer. zu dies Applikation die Um sich muss kümmern. Hier darum nicht. Zweifelsfall im Garantien diese ankommen. wurden, Reihenfolge leistet losgeschickt unterschiedlicher UDP in sie Pakete der die in wenn erhält, selbst Da- Reihenfolge Außerdem die derselben TCP- Empfängerseite neu. in der das auf ten Paket erkennt Applikation das die so dass selbstständig verloren, TCP, garantiert sendet Weg und dem generiert dies auf Fehlermeldung Protokoll Paket eine ein oder dass Geht werden vertrauen, wird. Protokoll übertragen dem Daten kann alle Applikation Daten. die der Transport bedeutet, den Das UDP-Protokoll zum Gegensatz Abschnitt im ausführlichere in rantiert Eine Sie ist. finden Protokollen Unter- Betrachtung wesentliche beiden der diesen mich für zwischen was schied erläutern, kurz ge- hier Vergangenheit möchte vergessen. der Ich wieder in Jahre der alle Laufe zwar im bereits es aber Administratoren haben lernt, viele Sie Schlauch. stehen dem bedeute, auf denn dies was genauer gefragt man nach, sei Fragt UDP verbindungslos. TCP UDP und Netzwerkadministratoren, und TCP verbindungsorientiert meisten zwischen die Unterschied antworten dem werden, nach sie Wenn SN.Deewr mditnPktnnvmCin bestätigt, worden. Client durchgeführt vom erfolgreich nun ist Paket TCP-Handshake dritten der im Synchronisation wird und zur Diese ebenfalls Sequenznummer (SYN). initiale seine trägt ACK )inseinemerstenPaketundüber- ieenah iealmtIptables mit Firewall einfache Eine 5 19.4.8 a C-rtkl ga- TCP-Protokoll Das . 5.5 Connection Tracking und Netzwerkverbindungen library

TCP wird immer dann von Applikationen eingesetzt, wenn grö- ßere Datenmengen transportiert werden müssen. UDP ist ein ty-

pisches Protokoll, wenn die Datenmengen sehr klein sind, so dass open source sie in ein Paket passen oder die Daten zeitkritisch übertragen wer- den müssen. Genügt ein Paket für den Transport, so ist die Rei- henfolge der Ankunft unerheblich. Ob das Paket angekommen ist, kann der Client an der fehlenden Antwort des Servers erkennen. Sind die Daten zeitkritisch, so schadet die Verzögerung durch die erneute Sendung der Daten möglicherweise mehr, als wenn diese Daten übersprungen werden. Schließlich ist es in bestimmten Um- gebungen sehr unwahrscheinlich, dass Daten verloren gehen oder die Reihenfolge durcheinander gerät. Im lokalen LAN wird daher häufig tFTP für den Datentransport mit Routern eingesetzt. Dieses sehr einfache Protokoll verwendet ebenfalls UDP.

Das TCP-Protokoll benötigt einen TCP-Handshake für den Aufbau einer Verbin- dung. Ansonsten unterscheidet es sich aus Sicht eines Paketfilters nicht von dem UDP-Protokoll (Abschnitt 5.7).

1027/tcp 80/tcp GET /index.html

Spenneberg.com Homepage 1027/tcp 80/tcp

Client

Abbildung 5.7: Der Webbrowser fragt den Webserver mit dem TCP-Protokoll auf Port 80 nach einer Webseite.

Listing 5.6: TCPDump-Mitschnitt der Web-Anfrage

[root@bibo root]# tcpdump -ni eth1 host www.nohup.info and port 80 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 12:57:44.543981 IP 192.168.0.112.39305 > 217.160.128.61.http: S 795473263:795473 263(0) win 5840 12:57:44.568941 IP 217.160.128.61.http > 192.168.0.112.39305: S 3041076941:30410 76941(0) ack 795473264 win 5792 12:57:44.568972 IP 192.168.0.112.39305 > 217.160.128.61.http: . ack 1 win 46 12:57:44.570825 IP 192.168.0.112.39305 > 217.160.128.61.http: P 1:130(129) ack 1 win 46 12:57:44.600939 IP 217.160.128.61.http > 192.168.0.112.39305: . ack 130 win 6432

107 open source library omtoe uüetae seeac Abschnitt In- auch die (siehe und um übertragen komplizierter TCP-Verbindungen, zu Firewall mehrere formationen verwendet der FTP-Protokoll Konfiguration Das die unsicherer. wird FTP-Verbindung einer Bei e evrDtnzmCin brrgnms,wr iezstlceDatenverbin- zusätzliche eine wird muss, übertragen geöffnet. aber Client dung Sobald zum wird übertragen. Daten zu Verbindung Server Befehle Diese alle der und Connection). Anmeldeinformationen auf. die (Control 21 um Steuerungsverbindung genutzt, Port zum die TCP-Verbindung ist eine Dies Port unprivilegierten einem von ausgehend 25:5687 P2710186.tp>1218012336 c 4 i 6432 win 141 ack . 1 192.168.0.112.39306: ack 53796983> > 140:140(0) 24326924 217.160.128.61.http F 217.160.128.61.http: 295 12:57:45.658078 a 53796983 > win 15511:15511(0) 140 ack 217.160.128.61.http ck . 53796983> IP 217.160.128.61.http: 24326922 12:57:45.628648 > 53796988 53796882

1291/tcp Steuerungsverbindung 21/tcp PORT 192,168,0,5,5,17 open source 1297/tcp Datenverbindung an 20/tcp 192.168.0.5:1297 192.168.0.5 FTP-Server

Abbildung 5.8: Bei dem aktiven FTP baut der Server eine TCP-Verbindung zum Client auf.

Für diese Datenverbindung gibt es zwei Möglichkeiten. Im klassischen Fall des aktiven FTPs wird diese Verbindung von dem Server von Port 20 zu einem unpri- vilegierten Port des Clients aufgebaut (siehe Abbildung 5.8). Im Fall des passiven FTPs wird die Verbindung von dem Client ausgehend von einem beliebigen unpri- vilegierten Port zu einem – vom Server vorher bestimmten – unprivilegierten Port des Servers aufgebaut. Aktives FTP durch einen IPchains-Paketfilter zu erlauben, heißt Türen und Tore öff- nen. Der IPchains-Paketfilter muss den Aufbau einer TCP-Verbindung von außen erlauben. Die einzigen Einschränkungen betreffen den Quellport (20) und den Ziel- port (1024-65535). Da dies inakzeptabel ist, wird aktives FTP von Administratoren, die Paketfilter wie IPchains einsetzen, meist nicht erlaubt. Passives FTP ist nicht ganz so kritisch, da die Verbindungen von innen aufgebaut werden. Jedoch kann der Firewall-Administrator nicht das Ziel der Verbindung beschränken. Der Client kann eine Verbindung zu einem beliebigen unprivilegierten Port im Internet aufbauen. Filesharing-Börsen wie KaZaa nutzen auch derartige Verbindungen! Wieso ist die Filterung so problematisch? Wenn der Paketfilter in der Lage wäre, einen Zusammenhang zwischen den Client- und den Serverpaketen und der Steue- rungsverbindung und der Datenverbindung aufzubauen, würden viele Probleme entfallen!

5.5.4 IPchains und ICMP Schließlich gibt es noch ein drittes sehr wichtiges Protokoll, das ein Paketfilter be- trachten kann: das Internet Control Message Protocol (ICMP). Dieses Protokoll wird zum einen von dem Ping-Befehl verwendet und ist zum anderen für die Übertra- gung von Fehlerzuständen im Internet verantwortlich. Dieses Protokoll kennt keine Ports wie TCP oder UDP, sondern nur Typen und Codes. Betrachten wir zunächst den Ping-Befehl. Dieser sendet, wie eine Client-Applikation, ein ICMP-Echo-Request-Paket an einen entfernten Rechner. Dieser Rechner antwor- tet, wie ein Server, mit einem ICMP-Echo-Reply-Paket.

[root@bibo root]# tcpdump -ni eth1 icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

109 open source library uhnctfrdeegnlceFleugdrPkt iste,snenmst auf musste sondern einsetzen, Pakete vertrauen. der Masquerading-Codes Filterung Funktion des eigentliche diese Intelligenz die die konnte für Firewall-Administrator die nicht die Der so tauchten auch auf. konnte wurde, verzichtet Probleme wurde, NAT erwähnten eingesetzt auf aber NAT oben Sobald mit werden. IPchains erhöht stark Wenn Sicherheit richtig. natürlich ist der durch- Das in sind. Pakete Verbindung die die bestimmten nur Translation, und einer Address überwachen Teil Network zu die Verbindungen Art zulassen, von eine Zustand ha- um den ist, hingewiesen sich Lage IPchains es von handelt Masquerading-Funktion Hierbei die ben. auf Beispie- innerlich letzten bereits den len bei werden IPchains-Firewall-Administratoren Masquerading erfahrene und Einige IPchains gültige eine 5.5.5 auf sich werden! Fehlermeldung durchgeführt nicht diese Typs IPchains ob des von kann Abhängigkeit Prüfung, bezieht, in Eine Verbindung nur möglich. ist entspre- Codes Fehlermeldungen Destination-Unreachable die und der als Absender Filterung werden der werden Eine Fehlermeldungen zugestellt erhält bezeichnet. nicht Diese Fehlermeldung Paket Information. dieser das Mit chende kann verworfen. erreichbar, nicht Hierbei Ziel nicht wird das verschicken. Ziel und dass das anzeigen, zu Ist die Fehlermeldungen Fehlermeldungen, ist. um erreichbar um Beispiel zum verwendet, sich es auch handelt aber wird ICMP passieren innen die sie nach muss Echo-Reply-Pakete Hierzu die erlauben. lassen. und dies 0 Firewall außen die nach seq muss Echo-Request-Pakete kann, 0 reply pingen seq Client echo ein request Damit 64: bytes echo icmp 96 64: 192.168.0.112: size icmp > capture 217.160.128.61: 217.160.128.61 (Ethernet), > IP EN10MB 192.168.0.112 14:09:36.875897 link-type IP eth1, 14:09:36.849952 on listening 110 erkennt Dabei Antwortpakete die akzeptiert! auch Pakete, auch Servers. weiteren sind, alle des fehlerfrei Verbindung und automatisch dieser alle System werden Teil das automatisch filtern! die und Verbindungen Pakete, Netzwerkverbindung, einer weiteren Verbindungsüberwachung filtert, Paket der ein Pakete akzeptieren Einsatz Paketfilter Sie beim von normaler Filterung ein Iptables die Während kann für können. Sie die einsetzen Verbindungsüberwachung, Verbindungen eine über Im verfügt eröffnen. Iptables Ihnen sich Möglichkeiten welche und geht wird Ab- Kapitel das (es Dieser wie Tracking filtern. Ihnen, sicherer Connection zeigt und IPchains des intelligenter schnitt gegenüber wesentlich Nutzung genannt) Iptables durch Machine bei State auch erläutert auch Syntax aber oben angepasste können ich Sie die die beachten. lediglich erzeugen, müssen um- Sicherheitsprobleme Sie eins zu dieselben habe. eins genau IPchains-Regelsätze aufgeführten und oben setzen die Sie können Conntrack Iptables und Mit Iptables 5.5.6 19 ne i etr iwiezmTnn e Verbindungsüberwachung. der Tuning zum Hinweise weitere Sie finden ieenah iealmtIptables mit Firewall einfache Eine 5 5.5 Connection Tracking und Netzwerkverbindungen library open source

Abbildung 5.9: Der Befehl iptstate zeigt die Verbindung ähnlich dem Befehl top an.

Wie funktioniert das? Das Conntrack-System des Linux-Kernels pflegt intern eine Tabelle aller bekannten Verbindungen. Dieses Conntrack-System kann sowohl als Modul geladen werden als auch fest im Linux-Kernel einkompiliert sein. Allerdings ermöglicht das Laden des Conntrack-Systems zusätzliches Tuning über Optionen (siehe Kapitel 19). Sie laden das Modul mit dem Befehl modprobe ip_conntrack7. Sobald nun ein neues Paket den Rechner erreicht, klassifiziert das Conntrack-System dieses Paket als NEW, ESTABLISHED, RELATED oder INVALID8. Diese Klassifi- zierung erfolgt übrigens in der PREROUTING-Kette der NAT-Tabelle (siehe Kapi- tel 20) für Pakete, die von außen kommen, und in der OUTPUT-Kette der NAT- Tabelle für lokal generierte Pakete. Hierzu betrachtet das Conntrack-System das Paket und vergleicht es mit den bereits in der Verbindungstabelle befindlichen Verbindungen. Den aktuellen Stand der Liste können Sie sich mit dem Befehl cat /proc/net/ip_conntrack anzeigen lassen. Falls sich bereits Verbindungen in dieser Ta- belle befinden, werden sie der folgenden ähneln.

Listing 5.7: Eine TCP-Verbindung in /proc/net/ipconntrack tcp 6 431995 ESTABLISHED src=192.168.0.112 dst=205.156.51.200 sport=36188 dport=80 src=205.156.51.200 dst=192.168.0.112 sport=80 dport=36188 [ASSURED] use=1

Eine aufbereitete Darstellung (Abbildung 5.9) der Tabelle kann mit dem Befehl ipt- state angezeigt werden (siehe auch Abschnitt 12.2).

7 Sobald Sie das Conntrack-System laden, werden alle Pakete von dem Conntrack-System auto- matisch defragmentiert. Während Sie die Defragmentierung bis zum Linux-Kernel 2.2 ein- und abschalten konnten, ist dies nun nicht mehr möglich (siehe auch Abschnitt 16.1.6). 8 Wenn der Kernel die Unterstützung für die Raw-Tabelle besitzt, ist auch noch der Zustand UNTRACKED verfügbar.

111 open source library t.,deI-desnud enwebiTPudUPvradn i ot der Zustände: Ports vier folgenden die der vorhanden, einen UDP dann erhält und Paket TCP ICMP Das bei Paket. UDP, wie dem (TCP, mit wenn Einträge Transportprotokoll und, IP-Adressen das die nun etc.), vergleicht Conntrack-System Das 112 Iptables mit Regeln nun Beispiele löchrigen aufgeführten die werden. oben nachvollzogen auf die Conntrack sollen komplett und verdeutlichen, möglich, zu dies nun Um Antwortpaket es mögliche ist die verzichten, Systems zu dieses Hilfe Mit I I I I e utn uemtenudz pihr,oe shnetsc meine um sich handelt es oder bezieht. Verbindung speichern, existente um nicht zu Ressourcen, eine und auf ausreichend sich ermitteln über die ICMP-Fehlermeldung, nicht zu System Zustand das den verfügt Entweder haben. aevridne ne mtne l EAE neee seeun- (siehe angesehen der INVALID RELATED Paket FTP- als das auch bekommt Umständen ten). werden Tabelle, Außerdem unter der RELATED. Datenverbindungen Conntrack-System Zustand in ICMP-Fehlermeldung Das den Verbindung eine Verbindung. ICMP-Fehlermeldung sich diese eingetragene Verbindung Existiert welche verwen- Tabelle bezieht. auf (ICMP) Zustand der erkennen, Protokoll den jedoch in anderes kann nicht die ein können sich bereits als Diese sie die den da beziehen. ICMP-Fehlermeldungen, erhalten, Verbindung um ESTABLISHED aufgebaute typischerweise steht. eine sich Verbindung vorhandenen auf es Tabelle der handelt in bereits Hierbei einer zu Beziehung deren RELATED eingetra- Tabelle der in ESTABLISHED automatisch existiert. nicht nicht noch aber Tabelle wird der gen. Verbindung in Ports neue und Diese IP-Adressen Protokoll, aus nation NEW utn e ebnugi e ael kulset ods is Verbindung der diese gleichzeitig dass wird so Paket, aktualisiert, derartige Tabelle Zustand erste der transpor- den nun Paket in das das Verbindung um Richtung der sich welcher Zustand es in Handelt in einerlei, Verbindung es wird. eine ist tiert auf Dabei genau passt. Ports Tabelle den der und IP-Adressen den Protokoll, seinem a ae rätdnZsadnu enenPktmtdee Kombi- dieser mit Paket ein wenn neu, Zustand den erhält Paket Das . ctn:Mxml naldrVridne ndrTabelle der in Verbindungen der Anzahl Maximale Achtung: asenPktdnZsadIVLDehl,kn wiUrsachen zwei kann erhält, INVALID Zustand den Paket ein Dass . a ae rätdnZsadRLTD ene nenrbeson- einer in es wenn RELATED, Zustand den erhält Paket Das . e.De idae nenmegnnKptl(ih Kapitel (siehe Kapitel eigenen einem tu- in schrieben. und aber anpassen wird auch Tracking, Dies wie Connection nen. Tabelle, des dieser Parameter natürlich Größe andere die ist viele Sie Verbindungsüberwachung können zur Allerdings Tabelle begrenzt. der Größe Die a ae rätdnZsadETBIHD ene mit es wenn ESTABLISHED, Zustand den erhält Paket Das . [ASSURED] hat. ü ugbueVridne zulassen. Verbindungen aufgebaute für e ieenah iealmtIptables mit Firewall einfache Eine 5 19 )be- 5.5 Connection Tracking und Netzwerkverbindungen library

1027/udp 53/udp www.spenneberg.com open source

www.spenneberg.com = 217.160.128.61 1027/udp 53/udp DNS-Server Client

Abbildung 5.10: Der DNS-Client fragt den DNS-Server mit dem UDP-Protokoll auf Port 53 nach der IP-Adresse für www.spenneberg.com.

Conntrack und UDP Wir beginnen wieder mit dem Beispiel einer DNS-Verbindung (Abbildung 5.10). Hier sendet der Client ein Paket an den DNS-Server und der DNS-Server, antwortet mit einem Paket. Wenn Sie einem Client durch Ihren Paketfilter den Zugriff auf einen beliebigen DNS-Server erlauben möchten, benötigen Sie folgende Regel:

Listing 5.8: Der Client baut mit seiner DNS-Anfrage eine neue UDP-Verbindung auf.

CLIENTS=192.168.0.0/24 iptables -A FORWARD -s $CLIENTS -p udp --dport 53 -m state --state NEW -j ACCEPT

Diese Regel erlaubt (-j ACCEPT) es einem Client (-s $CLIENTS), ein UDP Paket (-p udp)an den Zielport 53 (--dport 53) zu schicken, wenn die Zustandsmaschine (-m state)dieses Paket als neu kategorisiert (--state NEW). Zusätzlich merkt sich die Zustandsmaschine diese Verbindung nun in ihrer Tabelle. Um die Antwort des DNS-Servers auch zu erlauben, benötigen Sie die folgende Regel:

Listing 5.9: Akzeptiere alle weiteren Pakete in der Verbindung iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT

Diese Regel prüft, ob es sich beim Paket um ein Paket einer Verbindung handelt, die bereits erlaubt und aufgebaut wurde (--state ESTABLISHED). Ist dies der Fall, wird auch dieses Paket akzeptiert (-j ACCEPT). Es ist hier nicht nötig, erneut den Port zu testen. Verwendet das Paket einen anderen Port als 53/udp, dann gehört es nicht zu der aufgebauten Verbindung und wird daher verworfen. Wie stellt sich das in der Verbindungstabelle dar? Nachdem das erste Paket von dem Client durch die Firewall an den Server geschickt wurde, wird die Zustands- maschine folgenden Eintrag in der Zustandstabelle protokollieren: udp 17 28 src=10.0.2.100 dst=5.255.255.254 sport=1024 dport=53 [UNREPLIED] src=5.255.255.254 dst=10.0.2.100 sport=53 dport=1024 use=1 mark=0

113 open source library esre mitre ezelue öhe,kne i i een i i für wir die Regeln, die Sie beliebigen können einen möchten, auf erlauben Zugriff den Netz Paketfilter internen Ihren im durch Webserver Client einem nun Sie Wenn HTTP-Verbindung eine wieder zunächst gezeigt. auch Abbildung wir In wollen betrachten. TCP-Protokoll dem Bei TCP Verbindung und Conntrack dieser Paket zurück. weitere Ausgangswerte ihre Jedes auf Zustandstabelle. wieder Tabelle. Zähler der diese der in setzt in Verbindung Sekunden die Sekunden 180 bleibt erlaubt 30 hat, für verarbeitet Standardkernel für Antwortpakete Ein Zustandsmaschine UNREPLIED die lösen. Zustand Sobald Zeitgeber im in über UDP-Verbindung UDP-Verbindung kann nur eine kennt, die dies Verbindungsabbau lange keinen Zustandsmaschine wie UDP-Protokoll die das fragen, Da nun verbleibt. sich Tabelle der mag zugelassen. Leser und aufmerksamer gesehen Ein Richtungen beiden hat Zustandsmaschine in Die src=5.255.255.254 Pakete vorhanden. Verbindung dport=53 mehr diese nicht für sport=1024 [UNREPLIED] Status dst=5.255.255.254 der ist src=10.0.2.100 Nun 20 17 udp /proc/net/ Datei die über können Zustandstabelle werden. betrachtet der ip_conntrack Einträge Die Zustand 5.10: der Listing sich ändert wird, geschickt ge- Antwort Tabelle: Eine eine der Server Zielport. in dem der von die nun und Kapitel kommen Sobald in Absender- Sie Nun der finden angegeben. Angaben sowie (28) Verweil- der Erklärung Sekunden Zieladresse die nauere in die wird Tabelle das und Anschließend der sind Absender- in (17). Eintrags Eintrags des Protokollnummer Ant- des Angaben die keine dauer weiteren und Die noch hat. (udp) Zustandsmaschine verarbeitet die Protokoll Paket dass dieses an, für zeigt wort [UNREPLIED] Angabe Die 114 Port auf TCP-Protokoll dem mit Webseite. Webserver einer den nach fragt 80 Webbrowser Der 5.11: Abbildung s=00210sot5 pr=04ue1mark=0 use=1 dport=1024 sport=53 dst=10.0.2.100 Client 07tp80/tcp 1027/tcp 1027/tcp Spenneberg.com Homepage 5.11 s ohena i TPVridn schematisch HTTP-Verbindung die einmal noch ist GET /index.html ieenah iealmtIptables mit Firewall einfache Eine 5 19 . 80/tcp 5.5 Connection Tracking und Netzwerkverbindungen library den DNS-Server aufgestellt haben, fast unverändert übernehmen. Zunächst benö- tigen Sie auch eine Regel, die den Aufbau der Verbindung von innen nach außen

erlaubt: open source

CLIENTS=192.168.0.0/24 iptables -A FORWARD -s $CLIENTS -p tcp --dport 80 -m state --state NEW -j ACCEPT

Diese Regel erlaubt es dem ersten Paket einer jeden HTTP-Verbindung, von innen nach außen zu gelangen. Dieses erste Paket wird von der Zustandsmaschine als NEW kategorisiert9. Damit alle weiteren Pakete der Verbindung zugelassen werden, ist eine zweite Re- gel erforderlich: iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT

Aufmerksame Leser werden feststellen, dass sich diese Regel nicht von der entspre- chenden Regel für die UDP-Verbindungen unterscheidet. Sobald nun ein Paket von dieser Regel bearbeitet wird, das zu einer Verbindung gehört, die sich bereits in der Zustandstabelle befindet, wird das Paket akzeptiert. Es genügt als eine einzige Re- gel, um alle weiteren Pakete aufgebauter Verbindungen zu akzeptieren! Während Sie bei IPchains jeweils Regeln für die Rückrichtungen brauchten, genügt hier eine universelle Regel! Die Anzahl der Regeln ist daher bei Iptables wesentlich kleiner. Auch die TCP-Verbindungen werden in der Zustandstabelle gepflegt und können über die Datei /proc/net/ip_conntrack betrachtet werden. Allerdings besitzen diese Einträge auch weitere Zustände, die daher hier kurz vorgestellt werden sollen. Insgesamt kennt die Zustandsmaschine acht verschiedene Zustände einer TCP- Verbindung, die hier aber nicht alle gezeigt werden können. Sie finden weitere Informationen im Kapitel 19. Sobald der Client sein erstes Paket schickt, befindet sich in der Zustandstabelle folgender Eintrag: tcp 6 115 SYN_SENT src=10.0.2.100 dst=5.255.255.254 sport=1024 dport=80 [UNREPLIED] src=5.255.255.254 dst=10.0.2.100 sport=80 dport=1024 use=1 mark=0

Normalerweise sehen Sie diesen Eintrag gar nicht, da der Server sofort antwortet! Hier hat die Verbindung aber noch den Zustand [UNREPLIED]. Zusätzlich sehen Sie den Zustand SYN_SENT. Dies ist eine zusätzliche Information über die Verbin- dung. Sobald der TCP-Handshake komplett vollzogen wurde, wechselt die Verbindung ihren Zustand:

9 Die Zustandsmaschine macht hier aber noch zusätzliche Einschränkungen: Damit ein TCP- Paket den Zustand NEW haben kann, muss es sich um ein Paket handeln, das entweder nur das TCP-SYN-Flag oder das TCP-ACK-Flag oder kein Flag gesetzt hat. Die Zustand der TCP-Flags URG und PSH ist hierbei unerheblich.

115 open source library nomtoe ai e oet ndmsebntg edn ieübertragen. auslesen live das Informationen werden, ist diese benötigt Dies der sie kann. daher diese Code, dem verwerten können werden speziellen und in Server Jedoch Ports besitzt Moment, werden. der Zustandsmaschine Diese dem berücksichtigt Die und aus. eine in Regeln Client Daten den hier ja der der Proto- in Informationen auch vornherein Transport handeln dieses bietet von den FTP-Protokoll Probleme, Zustandsmaschine nicht für dem die die Ports Bei und Nun, dynamische an. filtern? FTP-Protokoll Lösung zu das geniale IPchains an mit noch koll sich Kapitel diese im Sie Sie werden hat können Erinnern Anpassung Kernel ESTABLISHED ihre verwendetem und Zustand Ver- nach Zeiten Der die weiteren erklärt. Je wird. Die damit Tagen! anpassen. Minuten entfernt muss, 5 Zeiten 2 Tabelle erreichen von von Firewall Verweildauer der von innerhalb die eine aus Verweildauer dass Verbindung nicht eine bedeutet, der bindung Das Beispiel Paket Zustandstabelle. zum nächste der diesen SYN_SENT das in Zustand Zustandsmaschine Minuten Zustandstabelle der die 2 der hat da in So Verweildauern wichtig, einräumt. dport=80 unterschiedliche sind sport=1024 Zuständen dst=5.255.255.254 Zustände verschiedenen src=10.0.2.100 verschiedenen TIME_WAIT Diese 119 6 Verbindung die wechselt hat, tcp gesendet FIN ihr Zustand: Gegenseite den die abermals FIN_WAIT. dport=80 Zustand auch den sport=1024 zusätzlich nun nun dst=5.255.255.254 Sobald aber hat src=10.0.2.100 [ASSURED], bleibt FIN_WAIT Verbindung Die 119 6 schickt, Verbindung der tcp Abbau den für Zustand: TCP-FIN-Paket der ein wieder wechselt nun den Client Verbindung ein die Sobald ESTABLISHED. erhält Information wurden, die dport=80 gesehen zusätzlich Richtungen sport=1024 und [ASSURED] beiden dst=5.255.255.254 Zustand in src=10.0.2.100 Pakete nun ESTABLISHED Da 431996 6 tcp 116 i asv ihrdrhIr iealelue oln eüe i folgenden die genügen wollen, erlauben Firewall Verbindung (aktiv Ihre diese FTP-Verbindungen durch auf also Befehle: anschließend sicher Sie Wenn die passiv) diese. RELATED. Pakete, wie Zustand analysiert Alle den und Datenverbindung erhalten ein. erwartende gehen, passen, zu Zustandstabelle resultierende (FTP) über- wird, die der 21 trägt Es angekündigt in und Port aktiv. Steuerungsverbindung Daten die den die es es Sobald über an ist extrahiert werden. Datenverbindung wurde), die eine eingebaut eingebaut Pakete, Sobald Kernel fest alle den (oder dann wurde in wacht geladen fest Modul oder dieses (empfehlenswert) Modul als r=.5.5.5 s=00210sot8 pr=04[SUE]ue1mark=0 use=1 [ASSURED] dport=1024 sport=80 dst=10.0.2.100 src=5.255.255.254 mark=0 use=1 [ASSURED] dport=1024 sport=80 dst=10.0.2.100 src=5.255.255.254 mark=0 use=1 [ASSURED] dport=1024 sport=80 dst=10.0.2.100 src=5.255.255.254 ip_conntrack_ftp Kremdl isrCd kann Code Dieser -Kernelmodul. ieenah iealmtIptables mit Firewall einfache Eine 5 19 5.5 Connection Tracking und Netzwerkverbindungen library modprobe ip_conntrack_ftp iptables -A FORWARD -s $CLIENTS -p tcp --dport 21 -m state --state NEW -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT open source

Die erste Zeile lädt das Modul zur Erkennung der Datenverbindungen10.Diezweite Zeile erlaubt den Aufbau der FTP-Steuerungsverbindung. Die dritte Zeile schließ- lich erlaubt alle Pakete, die zur FTP-Steuerungsverbindung gehören, und alle von der Zustandsmaschine erkannten FTP-Datenverbindungen. So können Sie sicher FTP-Verkehr filtern!

Conntrack und ICMP Kommen wir nun zum dritten sehr wichtigen Protokoll bei der Definition von Firewall-Regeln, dem ICMP-Protokoll. Wie bereits gesagt, wird dieses Protokoll so- wohl für die Meldung von Übertragungsfehlern als auch für den Ping-Befehl ge- nutzt. Beginnen wir mit dem Ping-Befehl. Erfreulicherweise betrachtet die Zustandsma- schine die Pakete, die von dem Ping-Befehl erzeugt werden, wie die Pakete, die zwischen einem Client und einem Server ausgetauscht werden. Eine Ping-Anfrage (ICMP-Echo-Request) baut eine Verbindung auf und erhält den Zustand NEW. Eine Ping-Antwort (ICMP-Echo-Reply) wird von der Zustandsmaschine als ESTABLIS- HED eingeordnet und entfernt auch sofort die Verbindung wieder aus der Tabelle. Das bedeutet, dass für jedes ausgesandte Echo-Request-Paket nur ein, und zwar das richtige Echo-Reply-Paket zugelassen wird. Die Zuordnung der einzelnen Pakete erfolgt über die ICMP-Sequenznummer. Ausgehend von unserem Firewall-Szenario benötigen Sie die folgende Regel, um nun das Echo-Request-Paket zuzulassen:

CLIENTS=192.168.0.0/24 iptables -A FORWARD -s $CLIENTS -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT

Diese Regel lässt ein neues Paket (-m state --state NEW) eines Clients (-s $CLIENTS)zu (-j ACCEPT), wenn es das Protokoll ICMP (-p icmp) und den ICMP-Typ Echo-Request (--icmp-type echo-request) verwendet. Nun benötigen Sie noch eine Regel, die die Antwortpakete erlaubt. Hier genügt wie- der die bereits oben vorgestellte allgemeine Regel, die alle Pakete mit dem Zustand ESTABLISHED erlaubt: iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT

10 Wenn Sie einen ungewöhnlichen FTP-Server verwenden, der nicht auf dem Port 21, sondern auf einem anderen Port Verbindungen entgegennimmt, wird das Modul die Verbindung nicht erkennen. Hierfür können Sie beim Laden des Moduls eine Liste von bis zu 8 Ports angeben (mit dem Parameter ports), die das Modul betrachten soll. Dies ist nicht möglich, wenn der Code fest in den Kernel integriert wurde!

117 open source library ite irennbsnee ac,drde ohwee ermöglicht. wieder doch PPTP-Protokoll dies das der Für Patch, überwachen. besonderen zu einen Verbindungen hier derartige es mehrere gibt gleichzeitig Lage, der in an ür isac u nfrugdrbtofnnVridn u e Zustands- der aus Verbindung betroffenen der ACCEPT zuordnen Entfernung tabelle! und zur -j auch erkennt dies RELATED Fehlermeldung führt eine kann, --state übrigens Zustandsmaschine state die -m Sobald icmp -p einschränken: RELATED. FORWARD ICMP-Pakete für -A Zustand auch das iptables vom Sie können möchten, FTP-Datenverbindungen nicht das auch ACCEPT Sie Wenn akzeptiert -j RELATED Regel das --state Diese ist state so -m Fall, filtern: der FORWARD Regel einer nicht -A mit das sicher iptables Ist Fehlermeldungen RELATED. alle Sie der Zustand können das den So Ist Paket nicht. INVALID. oder Paket das bezieht Feh- den erhält Tabelle die der so diese sich in Fall, ob Verbindungen kann sie, der erkennt eine und Dabei auf Fehlermeldungen lermeldung zuordnen. Zustandstabelle die der Erfreulicher- in Zustandsmaschine Verbindungen ICMP-Fehlermeldungen? die nun erkennt Zustandsmaschine weise die behandelt Wie Sekun- 30 maximal Verbindungstabelle. für der UNREPLIED in Zustand den im übrigens verbleibt Verbindung Die gelöscht direkt IPchains. Reply- bei er alle können wie grundsätzlich da So durchlassen nicht müssen Pakete sehen, sieht. Sie nie ICMP-Echo-Reply-Paket filtern. zustandsorientiert Eintrag das Ping-Pakete [UNREPLIED] Sie diesen Zustandsmaschine die Sie id=31489 sobald werden code=0 wird, Fällen type=8 meisten dst=5.255.255.254 den In src=10.0.2.100 29 1 ICMP- das icmp Firewall Eintrag die folgenden beobachten: den Nachdem Zustandstabelle Sie aus? der können Zustandstabelle in hat, verarbeitet der und in gesehen nun Echo-Request-Paket das sieht Wie 118 ACCEPT -j NEW ACCEPT --state -j state ESTABLISHED -m --state 50 state -p -m $CLIENTS FORWARD -s -A FORWARD iptables -A iptables CLIENTS=192.168.0.0/24 von auch können weiter, so und werden ESP überwacht GRE, IGMP, Conntrack wie IP-Protokolle, weiteren Alle Protokolle generischen weiteren alle und Conntrack pe a S-rtkl utnsretetz len ewne i i folgenden Bei- die zum Sie Um NEW, verwenden erhalten. filtern, Status ESTABLISHED zu den Regeln: zustandsorientiert Status erhält ESP-Protokoll den Paket das Pakete spiel erste weiteren Das alle UDP-Protokoll. während dem ähnlich Protokolle 11 r=.5.5.5 s=00210tp= oe0i=18 s= mark=0 use=1 id=31489 code=0 type=0 dst=10.0.2.100 src=5.255.255.254 D eohdeePoool ee brPrsnc brIM-D efgn s onrc nicht Conntrack ist verfügen, ICMP-IDs über noch Ports über weder Protokolle diese jedoch a 11 nose rog i itrn e generischen der Filterung die erfolgt Ansonsten . ieenah iealmtIptables mit Firewall einfache Eine 5 5.6 Filter-Regeln library

Das ESP-Protokoll ist das IP-Protokoll 50 (siehe /etc/protocols). Die erste Iptables- Regel akzeptiert jedes neue Paket eines Clients. Die zweite Regel akzeptiert alle

Pakete, die zu dieser aufgebauten Verbindung gehören. open source

Achtung Die zustandsorientierte Filterung dieser Protokolle ist nicht einfach, da Conntrack keine Informationen über den tatsächlichen Zustand der Verbindung extrahieren kann. Alle Pakete werden gleichwertig behandelt. Zur Überwachung des Zustands der Verbindung wer- den lediglich Zeitgeber eingesetzt, die entscheiden, ob eine Verbin- dung beendet wurde oder nicht (siehe Kapitel 19). Dies führt häufig zu Problemen. Daher sollten Sie überlegen, ob Sie diese Protokolle besser zustandslos filtern. Dies ist mit den folgenden zwei Zeilen möglich:

CLIENTS=192.168.0.0/24 iptables -A FORWARD -s $CLIENTS -p 50 -j ACCEPT iptables -A FORWARD -d $CLIENTS -p 50 -j ACCEPT

5.6 Filter-Regeln

Sie haben bereits in den Abschnitten 5.2 und 5.3 erste Filterregeln erzeugt. Dieses Thema soll in diesem Abschnitt vertieft werden. Während Sie im Abschnitt 5.2 nur einzelne Regeln zum Test der Funktionalität erzeugt haben, ist im Abschnitt 5.3 be- reits ein funktionsfähiges Firewall-Skript entstanden. Dieses wies jedoch lediglich Regeln auf, die Verbindungen durch die Firewall von innen nach außen erlaubten. Hier wurden dann aber alle denkbaren Verbindungen zugelassen. Weitere Verbin- dungen auf dem Gateway direkt wurden von dem Skript nicht geduldet. Für den ersten Start ist dies meist ausreichend, anschließend aber häufig vollkommen indis- kutabel. Was fehlt? Nun in vielen Fällen sind zusätzliche Verbindungen erwünscht, die von der Firewall abgehen oder auf der Firewall ankommen, da aus Budget-Gründen auf der Firewall zusätzlich zum Beispiel ein -Proxy oder ein Postfix-Mailserver installiert werden sollen. Außerdem ist es für viele Firmen indiskutabel, alle Ver- bindungen von innen nach außen zu erlauben. Meist existiert bereits in den Firmen eine Benutzerrichtlinie, die genau festlegt, welche Dienste die Benutzer beim Zugriff auf das Internet nutzen dürfen und zu welchem Zweck. Es ist dann sinnvoll, bei der Definition der Regeln nur diese Dienste zu erlauben, um so die Benutzer vor sich selbst zu schützen. Im Folgenden sollen diese Regeln vorgestellt und das Skript aus Abschnitt 5.3 ent- sprechend angepasst werden. Zunächst wollen wir die Regeln betrachten, die notwendig sind, um Dienste direkt auf der Firewall anzusprechen. Da die Firewall aber nicht ganz ohne Schutz geöffnet

119 open source library u e ot2 ( 22 Port dem auf etr aeeshce,dennnctmh e utn E,snendnZu- können. den haben sondern RELATED NEW, Fehlermeldung Zustand einer den Falle wird mehr im SSH-Client oder nicht der ESTABLISHED Auch nun stand komplett. die ganz schicken, nicht Pakete noch weitere aber die Regelwerk Verbindungen, das aufgenommen. ist nur Verbindungstabelle Damit die denn in erforderlich, werden nicht Eine haben, hier beziehen. erlaubt aufgebauten vorher diese ist erlaubten wir auf Ports zu sich des die Fehlermeldung Prüfung Diese eine Pakete, erneute werden. wie alle oder übertragen OUTPUT-Kette gehören Zustandskontrolle der Verbindungen der in leicht ACCEPT akzeptiert sehr -j Regel kann ESTABLISHED,RELATED Aufgabe --state Diese state -m OUTPUT -A $IPTABLES ( TCP-Verbindung neue eine die nicht Pakete, und alle sind Regel INPUT-Kette gerichtet neue Firewall der Unsere werden. die in verarbeitet an akzeptiert INPUT-Kette und der erreichen von Pakete, werden, sämtliche außen weitergeleitet dass von erkennen, Firewall in Sie die ACCEPT werden sind die betrachten, -j Erläuterung Abbildung Zur diese NEW Sie werden. Wenn --state gesendet sämtliche state Firewall analysiert die -m Kette an 22 Diese Abbildung außen angehängt. --dport von INPUT-Kette die tcp die Pakete, an -p wird $INTDEV Regel -i Diese $CLIENTS -s INPUT innen. -A von SSH-Verbindung $IPTABLES einer Aufbau den Erlaube auf 5.11: innen Listing Regel: von folgende Sie Sie Wenn benötigen ist. möchten, möglich zugreifen (sshd), Firewall Dienst beschränken. der diesen Secure-Shell-Dienst zu Fernadministration der Dienste ist eine wenige wird, dem gewünscht auf mit häufig nur der Zugriff Dienst, diesen typischer sinnvoll, Ein es ist soll, werden 120 Ketten. drei aus besteht Filtertabelle Die 5.12: Abbildung nlsetal aee i u e iealezutwre n is else,also verlassen, zulassen. diese und SSH-Client Secure-Shell-Servers. werden des den erzeugt Antwortpakete Kette Firewall die an Diese der auch erforderlich. auf Firewall OUTPUT-Kette die der Pakete, der alle in Antworten analysiert Regel entsprechende die eine ist auch Hierzu Sie müssen Nun 5.12 Default Policy ROUTING ohena i etndrFle-ael dargestellt. Filter-Tabelle der Ketten die einmal noch INPUT -pr 22 --dport öffnen. ) Default Policy FORWARD Prozess Lokaler Lokaler ieenah iealmtIptables mit Firewall einfache Eine 5 Default Policy OUTPUT ptcp -p ) 5.7 Die NAT-Tabelle und -Regeln library

Um auch diese Pakete auf der Firewall zu erlauben, ist es erforderlich, dass auch in der INPUT-Kette diese Pakete erlaubt werden:

$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT open source

Nach diesem Muster können Sie nun weitere Dienste hinzufügen. Möchten Sie zum Beispiel auch von außen auf den SSH-Server zugreifen, genügt nun die folgende zusätzliche Regel:

Listing 5.12: Erlaube den Zugriff mit SSH von außen.

$IPTABLES -A INPUT -i $EXTDEV -p tcp --dport 22 -m state --state NEW -j ACCEPT

Möchten Sie einen Webserver auf der Firewall betreiben, der von außen erreichbar sein soll, so genügt nun die folgende Regel:

Listing 5.13: Erlaube den Zugriff mit SSH von außen.

$IPTABLES -A INPUT -i $EXTDEV -p tcp --dport 80 -m state --state NEW -j ACCEPT

Achtung Ich halte es nicht für eine gute Idee, auf der Firewall gleichzeitig auch noch weitere Dienste, wie SSH und HTTP, anzubieten. Den- noch weiß ich, dass es in vielen Umgebungen zwingend erforderlich ist, da das Budget für dedizierte Systeme häufig fehlt. Dennoch soll- ten Sie auf einer Firewall nur die nötigen Dienste installieren und betreiben. Falls aus Kostengründen dies nicht möglich ist, sollten Sie mindestens über eine Virtualisierung nachdenken. Auf der anderen Seite können Sie natürlich auf jedem Linux-Server so eine lokale Firewall installieren und nutzen! Dies wird aber noch im Kapitel 8 genauer besprochen.

5.7 Die NAT-Tabelle und -Regeln

Jetzt sehen wir uns die NAT-Tabelle an. In den letzten Abschnitten haben Sie be- reits einige NAT-Regeln aufgesetzt. Dabei handelte es sich um Regeln, die die Ab- senderadresse von Paketen maskieren konnten. In diesem Abschnitt will ich nun alle Möglichkeiten der NAT-Tabelle vorstellen und kurz erläutern. Ausführlichere technische Hinweise finden Sie im Kapitel 20. Die NAT-Tabelle hat insgesamt drei Ketten: OUTPUT, PREROUTING und POST- ROUTING. Diese drei Ketten sind komplett eigenständige Ketten und sind nicht identisch mit gleichnamigen Ketten der anderen Tabellen. Die Abbildung 5.13 zeigt, wie sich die Tabellen in die Filtertabelle einbinden.

121 open source library A i ei eae.Dbiwre i ü ed äl uhenpa Beispiel- paar ein auch Fälle einbauen. Skript beide Ihrem für in Sie und Destination- werden lernen das kennen Dabei dann regeln genauer. und wenig Source-NAT ein das zunächst NAT wir Zieladresse! betrachten »echten« Folgenden der Im mit scheinbare Paket Filtertabelle die das Die wieder wird ausgetauscht. also NAT Zieladresse nun tatsächliche diesem betrachtet neue Bei Ana- eine Filterketten. der durch der vor entsprechenden Zieladresse in damit die passiert und durch Dies NAT-Tabelle Zieladresse. der lyse OUTPUT-Kette die der Firewall oder Absender- die PREROUTING- ändert »echten« Destination-NAT der dem mit Bei Paket analysieren. der Adressänderung originale der in das FOR- vor also das adresse. der Paket betrachten Da in das Filterregeln Filterregeln Absenderadresse. OUTPUT-Kette Ihre die der die dass und Firewall sichergestellt, WARD- die ist erfolgt, ändert POSTROUTING-Kette Source-NAT dem Bei klar. aes sgb rnstlc wivrcidn re e ewr drs Trans- eines Address Network Addressierung der die Arten (NAT): System verschiedene lation zwei das grundsätzlich ändert gibt Translation Es Pakets. Address Network der Bei Ketten. drei aus besteht NAT-Tabelle Die 5.13: Abbildung 122 Netzwerke IP-Adressen bei Lokale privaten häufig genannten erforderlich. so ist Internet von Dies das Zuhilfenahme unter an Pakets. üblicherweise Netzwerken eines werden von Absender-Adresse Anbindung die der ändert Source-NAT Source-NATDas 5.7.1 etnto-A s u ndrPEOTN-uddrOTU-et erlaubt. OUTPUT-Kette der und Abbildung PREROUTING- die Ein der sich erlaubt. Sie in NAT-Tabelle Wenn der nur POSTROUTING-Kette ist der in Destination-NAT nur ist Source-NAT Ein I I etnto-A:He iddeZearsegeändert. Zieladresse die wird Hier Destination-NAT: geändert. Absender-Adresse die wird Hier Source-NAT: PREROUTING Default Policy Default Policy ROUTING INPUT 5.13 uzashun idInnac ootdrSinn der sofort auch Ihnen wird anschauen, kurz Default Policy FORWARD Prozess Lokaler ieenah iealmtIptables mit Firewall einfache Eine 5 Default Policy Default Policy OUTPUT OUTPUT POSTROUTING Default Policy 5.7 Die NAT-Tabelle und -Regeln library aufgebaut. Hierbei handelt es sich um spezielle IP-Adressen, die im Internet nicht verwendet werden. open source Exkurs: Private IP-Adressen nach RFC 1918 Bei dem Aufbau eines Netzes ist es zwingend erforderlich, dass die verwendeten IP-Adressen nicht doppelt verwendet werden, son- dern eindeutig sind. Dies gilt auch, wenn mehrere Netze miteinan- der verbunden werden. Sobald Sie ein Netz mit dem Internet ver- binden, müssen Sie auch hier die Eindeutigkeit der verwendeten IP-Adressen sicherstellen. Das bedeutet für Sie, dass Sie garantieren müssen, dass die von Ihnen verwendeten IP-Adressen nicht im In- ternet genutzt werden! Das ist unmöglich, solange Sie nicht wissen, dass bestimmte IP-Adressen im Internet »verboten« sind. Hierzu wurde der RFC191812 geschaffen. Dieser RFC (Address Allocation for Private Internets) beschreibt die privaten IP-Adressen. Die folgenden IP-Adressen werden als private IP-Adressen reser- viert: I 10.0.0.0 – 10.255.255.255 I 172.16.0.0 – 172.31.255.255 I 192.168.0.0 – 192.168.255.255 Sobald Sie Ihre eigenen Netze mit diesen IP-Adressen aufbauen, er- zeugen Sie bei einer Anbindung an das Internet keinen IP-Adress- konflikt. Für kleine Netze ist der Bereich 192.168.0.0/24 üblich.

Wenn Sie jedoch private IP-Adressen für den Aufbau Ihres Netzes verwenden und nun das Netz mit dem Internet verbinden, haben Sie wieder ein Problem. Es kann zwar nun nicht mehr zum Adresskonflikt kommen, jedoch werden Sie auch keine Antwort erhalten. Betrachten Sie die Abbildung 5.14. Der Client sendet das Paket mit seiner privaten Absenderadresse über seinen Rou- ter in das Internet, wo es den Webserver erreicht. Der Webserver beantwortet das Paket und schickt sein Antwortpaket an die private Adresse des Clients. Da diese Adressen jedoch im Internet verboten sind, wissen die Internet-Router nicht, wohin sie dieses Antwortpaket weiterleiten sollen. Das Paket wird mit der Fehlermeldung »Ziel nicht erreichbar« (Destination unreachable) verworfen. Für diesen Zweck wurde nun das Source-NAT entwickelt. Dabei kann der Router des Clients dessen private IP-Adresse gegen eine offizielle IP-Adresse austauschen, deren Ort im Internet bekannt ist (siehe Abbildung 5.15). Damit die Antworten auch beim Router wieder ankommen, verwendet man hier die offizielle Internet-Adresse des Routers selbst. Grundsätzlich wäre es auch möglich, hier irgendeine andere Adresse einzutragen, jedoch würden die Antwortpakete des Webservers nicht beim Router landen und damit nie den Client erreichen.

12 Sie können die RFCs im Internet auf der Webseite http://www.rfc-editor.org nachlesen.

123 open source library e u e nentwee nderctgnCinsnc ne etrednkann. weitersenden innen nach das Clients er richtigen hierfür damit Antwor- die benötigt die an wurden, Iptables auch wieder genattet und Internet kann ihm dem natten aus von identisch ten Verbindungen die der Verbindungen, Pakete die weiteren alle sich merkt Router Der in Tatsache diese sich merkt und des aus IP-Adresse IP-Adresse Tabelle. private offizielle die einer Router eigene der seine tauscht gegen Source-NAT Clients dem Bei 5.15: Abbildung mit Verbindungsaufbau einen auf reagieren. kann nicht Internet IP-Adresse im privater Rechner Ein 5.14: Abbildung 124 hn eatotihist. verantwortlich chung 192.168.0.5 192.168.0.5 TCP: 80.155.17.3:1027 ->192.168.0.5:1027 80.155.17.3:1027 TCP: Client Client Tipp ih eae epehn i ne irü ieasürih Er- ausführliche eine hierfür Kapitel aber finden im hier Sie klärung wir besprechen. wollen genauer Dies Translation). nicht NAPT Port ein and um sondern Address mehr von Translation), (Network nicht Address Source-NAT eigentlich (Network NAT sich das ein es für um handelt IP-Adresse verwenden, offizielle Clients eine mehreren nur Sie Sobald NAT-Router 80.155.17.3 Von: 192.168.0.5:1027 An: Web-Server:80 Von: 192.168.0.5 An: Web-Server Von: ip_conntrack An: Web-Server:80An: 80.155.17.3 20 . Mdl a uhfrdeZustandsüberwa- die für auch das -Modul, :1027 ieenah iealmtIptables mit Firewall einfache Eine 5 Wo ist 192.168.0.5 ? Web-Server Web-Server 5.7 Die NAT-Tabelle und -Regeln library

Um nun ein Source-NAT zu realisieren, gibt es beim Befehl iptables das Ziel SNAT. Hiermit können Sie ein Source-NAT durchführen: iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 3.0.0.1 open source

Diese NAT-Regel sorgt nun dafür, dass sämtliche Verbindungen auf die Absender- adresse 3.0.0.1 genattet werden. Das bedeutet, dass in allen Paketen die Absender- adresse entsprechend ausgetauscht wird. Die Antwortpakete werden übrigens dann auch automatisch wieder an die Clients passend zurückgeschickt. Das heißt, das NAT wird für die Antwortpakete automatisch rückgängig gemacht. Sie benötigen hier keine zusätzliche Regel! Sobald Sie Änderungen an einer der Ketten der NAT-Tabelle vornehmen wollen oder diese nur anzeigen wollen, ist es wichtig, dass Sie die NAT-Tabelle spezifisch definieren: iptables -t nat -L # Zeigt den Inhalt der NAT-Tabelle iptables -L # Zeigt nur den Inhalt der Filter-Tabelle (default)

Mit der Option --to-source können Sie auch einen IP-Adressbereich oder sogar meh- rere Adressen durch Wiederholung der Option angeben:

--to-source 192.168.0.1-192.168.0.5 --to-source 192.168.0.1 --to-source 192.168.0.3

Diese IP-Adressen werden dann immer abwechselnd verwendet. In vielen Fällen ist das Ziel SNAT jedoch nicht einsetzbar. Vielleicht haben Sie zu Hause einen eigenen Internetzugang. Wahrscheinlich handelt es sich hierbei um einen ISDN- oder ADSL-Zugang. Bei den meisten derartigen Zugängen erhalten Sie für die Dauer Ihrer Onlinezeit eine zufällige IP-Adresse zugewiesen, die Sie für diese Zeit nutzen dürfen. Betreiben Sie nun einen Router und dahinter ein Netz mit privaten IP-Adressen, ist der Aufwand groß. Sie müssten immer Ihr Skript än- dern und die IP-Adresse, auf die Ihre Pakete genattet werden sollen, an die aktuell zugewiesene Adresse anpassen. Hierfür wurde ein zusätzliches Ziel geschaffen: MASQUERADE. Wenn Sie dieses Ziel an- stelle von SNAT einsetzen, müssen Sie nicht mehr die IP-Adresse angeben. Iptables wird nun selbst die aktuelle externe IP-Adresse ermitteln und verwenden. Wenn sich die IP-Adresse ändert, so verwendet Iptables automatisch anschließend die richtige IP-Adresse! Damit wird der Aufbau einer typischen NAT-Regel viel einfacher: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Diese Regel kennen Sie schon aus Ihrem ersten Skript aus dem letzten Abschnitt.

125 open source library e ehe o ue rece n nwdra h oa eihe idoder sind gerichtet lokal ihn an entweder 192.168.0.3 die und Pakete, erreichen --to-destination sämtliche außen DNAT DNAT OUTPUT-Kette von das -j der Rechner betrifft in 25 den PREROUTING-Kette und --dport PREROUTING- der der In tcp in durchführen. Destination-NAT -p ein eth0 können Sie -i PREROUTING -A nat -t 192.168.0.2 iptables hinzufügen: --to-destination Regel folgende E-Mailserver DNAT internen die Ihren -j Sie weiterzulei- auf können Rechner SMTP-Verbindungen 80 weiterleiten, anderen Beispiel einen zum --dport auf Sie Port Möchten tcp anderen ten. einen -p möglich, es eth0 ist Natürlich -i PREROUTING -A nat -t aus: iptables folgendermaßen sähe Beispiel dieses für wollen, Regel anbieten Die Firewall der auf anbieten! Webserver direkt erreichbar nicht, privaten nicht außen Sie dem merkt von die mit dennoch Internet Dienste, sondern Sie im Firewall, können der Client So mit spricht. Der nicht Firewall Wirklichkeit weiterleiten. Ihrer in Webserver 80 er TCP-Port dass einen dem auf auf Anfragen innen sämtliche nach Beispiel zum Sie anderen können einen So auf Damit war, gerichtet modifiziert. Firewall die Abbildung Pakets an weiterleiten. eines eigentlich Rechner das Zieladresse Paket, ein die Sie wird können Destination-NAT einem Port- Bei als auch häufig wird bezeichnet. Destination-NAT allen Forwarding Das verbundenen und damit unbekannt. üblich die häufig und allgemein Destination-NAT Möglichkeiten heute das sind Source-NAT ist, ein bekannt interessant Administratoren Während genauso Source-NAT. mindestens aber das anzutreffen, wie seltener ist Destination-NAT Das Destination-NAT 5.7.2 126 mit Systeme interne auf werden. außen von weitergeleitet Anfragen können Adressen DNAT privaten dem Bei 5.16: Abbildung An: 80.155.17.53:80 Von: Client:1027 5.16 edulctdeMöglichkeiten. die verdeutlicht 80.155.17.53 Firewall ieenah iealmtIptables mit Firewall einfache Eine 5 An: An: Von: Client:1027 192.168.0.2 :80 Web-Server 192.168.0.2 5.7 Die NAT-Tabelle und -Regeln library open source

Proxy 3128/tcp Webserver

Von: Client:1027 An: Webserver:80 LAN

Client Firewall mit Proxy

Abbildung 5.17: Das REDIRECT-Ziel leitet die Pakete auf einen anderen lokalen Port um. weitergeleitet werden müssen. In der OUTPUT-Kette betrifft das DNAT nur die lokal erzeugten Pakete. Zusätzlich zum Ziel DNAT gibt es noch ein weiteres Ziel: REDIRECT. Dieses Ziel erlaubt es, Pakete, die normalerweise an ein anderes beliebiges Ziel gerichtet sind, auf einen lokalen Port umzulenken (Abbildung 5.17). Hiermit ist es möglich, einen transpa- renten Proxy aufzubauen. Mehr Informationen über einen transparenten Proxy er- halten Sie im Abschnitt 20.9.

5.7.3 NAT-Beispiel Da sehr viele Erstanwender mit der Implementierung ihrer NAT-Regeln auf Pro- bleme stoßen, folgt nun ein kleines Beispiel. Stellen Sie sich vor, Sie hätten eine Internetanbindung mit einer statischen IP-Adresse, die Ihnen von Ihrem Provider fest zugeteilt worden ist. Nun möchten Sie sowohl auf das Internet und dessen Dienste zugreifen können als auch selbst Dienste anbieten. Da Sie aber die Dienste nicht auf der Firewall installieren wollen, haben Sie sich folgendes Setup (Abbil- dung 5.18) ausgedacht: Ihre Firewall ist mit dem Internet verbunden. Die Dienste installieren Sie auf dedizierten Rechnern in Ihrem internen Netz. In dem DNS fürIhreDomänetragenSiefürwww.meine-domaene.de die offizielle IP-Adresse Ihrer Firewall ein. Das Gleiche machen Sie für den Mail-Exchanger (MX)13 Ihrer Domäne. Im Folgenden sollen nun die NAT-Regeln definiert werden. Natürlich benötigen Sie zusätzlich auch noch Firewall-Regeln. Obwohl Sie diese nun selbst erzeugen können sollten, werden wir diese auch noch betrachten. Zunächst soll sichergestellt werden, dass die Clients im internen Netz das Internet erreichen können. Hierzu definieren Sie eine Regel, die sämtliche Pakete nattet:

13 Der Mail-Exchanger definiert, welcher Rechner für eine Domäne die E-Mails annimmt. Sie können im DNS mehrere Mail-Exchanger (MX) mit unterschiedlicher Priorität zur Lastverteilung und Ausfallsicherheit angeben.

127 open source library ITBE tnt- RRUIG- ETE ptp-dot2 jDNAT -j 25 --dport tcp -p $EXTDEV -i PREROUTING -A nat -t $IPTABLES u e C-ot8 n 5erihn nIrnWbevrbw he E-Mail- Ihren bzw. Webserver Ihren an erreichen, Firewall 25 Ihre außen und werden. weitergeleitet von 80 Server die TCP-Port Verbindungen, dass dem $EXTIP erreichen, auf noch --to-source Sie SNAT möchten Nun -j $EXTDEV -o POSTROUTING -A nat -t $IPTABLES EXTIP=3.0.0.1 INTDEV=eth1 EXTDEV=eth0 ein und sollen. Webserver werden erreicht ein Internet sich dem befinden aus Netz internen die E-Mailserver, dem In 5.18: Abbildung ITBE AFRAD- ITE o$XDV- tt -tt E jACCEPT 128 -j NEW ACCEPT --state -j state ESTABLISHED,RELATED -m --state $EXTDEV state -o -m $INTDEV FORWARD -i -A FORWARD $IPTABLES für -A außen zulassen: $IPTABLES nach Internet innen das auf von Zugriff noch Verbindungen Sie beim die benötigen Clients Nun Ihre zunächst aus. die vollkommen bereits Firewall-Regeln, NAT einige das für reichen Regeln Diese DNAT -j 80 --dport tcp -p $EXTDEV -i PREROUTING -A nat -t $IPTABLES EMAILSERVER=192.168.0.2 WEBSERVER=192.168.0.1 -odsiain$EMAILSERVER --to-destination $WEBSERVER --to-destination Internet Firewall 3.0.0.1 Web-Server 192.168.0.1 ieenah iealmtIptables mit Firewall einfache Eine 5 Internes Netz Internes E-Mail-Server 192.168.0.2   5.7 Die NAT-Tabelle und -Regeln library

Zusätzlich benötigen Sie noch Regeln, die die Web- und die E-Mail-Verbindungen nach innen auf Ihren Web- und Ihren E-Mail-Server erlauben:

open source $IPTABLES -A FORWARD -i $EXTDEV -o $INTDEV -p tcp --dport 80 -d $WEBSERVER -m state 

--state NEW -j ACCEPT $IPTABLES -A FORWARD -i $EXTDEV -o $INTDEV -p tcp --dport 25 -d $EMAILSERVER -m state  --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Die erste Regel erlaubt neue Pakete (-m state --state NEW) von außen (-i $EXTDEV)nach innen (-o $INTDEV), wenn sie an den Webserver (-d $WEBSERVER)aufdemTCP-Port80ge- richtet sind (-p tcp --dport 80). Die zweite Regel wiederholt dies für den E-Mailserver. Die dritte Regel erlaubt sämtliche weiteren Pakete dieser Verbindungen. Diese dritte Regel hatten wir aber bereits weiter oben definiert. Daher brauchen wir diese hier nicht erneut anzugeben! Ein komplettes Skript würde also folgendermaßen aussehen:

#!/bin/sh # # Autor : Ralf Spenneberg # Version: 0.1 # Datum : 17. Dez 2004 # # Dieses Skript lädt die Regeln für die Firewall. # Außerdem erlaubt es den Zugriff von außen auf einen internen Web- # und E-Mail-Server

INTDEV="eth1" # Achtung: Bei Einsatz von User-Mode-Linux lautet diese Variable # INTDEV="tap0"

EXTDEV="eth0"

EXTIP=3.0.0.1 WEBSERVER=192.168.0.1 EMAILSERVER=192.168.0.2

# Definiere einige Befehle ECHO="/bin/echo" SYSCTL="/bin/sysctl" IPTABLES="/sbin/iptables"

# Leere die Ketten $IPTABLES -F

129 open source library SST wnet.ipv4.ip_forward=1 -w $SYSCTL # Alternativ: # /proc/sys/net/ipv4/ip_forward > Forwarding "1" DNAT das $ECHO -j Aktiviere 25 # --dport tcp -p $EXTDEV -i PREROUTING -A nat DNAT -t -j $IPTABLES 80 --dport E-Mail-Server tcp und -p Web- $EXTDEV den -i auf PREROUTING MASQUERADE außen -A -j von Zeile nat $EXTDEV Zugriff diese -t -o den auch $IPTABLES POSTROUTING Natte Sie -A # können nat $EXTIP kennen, -t --to-source nicht $IPTABLES SNAT IP-Adressen # -j die nutzen: $EXTDEV Sie # -o Wenn POSTROUTING # außen -A nach nat state Zugriff -t -m den $IPTABLES $EMAILSERVER Natte -d # 25 NAT-Regeln --dport Setze tcp # -p $INTDEV -o $EXTDEV -i FORWARD -A $IPTABLES ITBE AFRAD- ETE o$NDV- c -pr 0- WBEVR- state -m $WEBSERVER -d 80 --dport tcp -p $INTDEV E-Mail-Server -o und $EXTDEV Web- -i ACCEPT den FORWARD sind -j ACCEPT für -A Verbindung ESTABLISHED,RELATED -j Verbindungen $IPTABLES aufgebauten --state NEW Akzeptiere einer state --state # Teil -m state die FORWARD -m Pakete, -A $EXTDEV alle $IPTABLES -o Akzeptiere $INTDEV # -i innen FORWARD von -A Verbindungsaufbauten $IPTABLES Akzeptiere # DROP FORWARD DROP -P DROP OUTPUT $IPTABLES -P INPUT $IPTABLES alles -P erstmal $IPTABLES Verwerfe # werden geleert -F extra nat muss -t NAT-Tabelle $IPTABLES Die # 130 -odsiain$EMAILSERVER --to-destination $WEBSERVER --to-destination ACCEPT -j NEW --state ACCEPT -j NEW --state ieenah iealmtIptables mit Firewall einfache Eine 5     5.8 Die Mangle-Tabelle library

5.8 Die Mangle-Tabelle

Die Mangle-Tabelle führt ein Schattendasein bei Iptables. Sie bietet nicht beson- open source ders viele Funktionen. Dabei verfügt sie über die meisten Ketten: INPUT, OUT- PUT, FORWARD, PREROUTING und POSTROUTING (Abbildung 5.19)14.Inder Mangle-Tabelle können Sie Pakete modifizieren. Leider bietet Iptables nur einige wenige Möglichkeiten für diese Modifikationen.

Filter-Tabelle

NAT-Tabelle

Mangle-Tabelle

Abbildung 5.19: In der Mangle-Tabelle können Sie ein Paket modifizieren.

Bevor wir uns über die verschiedenen Möglichkeiten einen Überblick verschaffen, betrachten Sie bitte die Abbildung 5.19. Ihnen sollte auffallen, dass jedes Paket zu- erst die entsprechende Mangle-Kette durchläuft, bevor die NAT- und Filter-Ketten durchlaufen werden. Dadurch können Sie in der Mangle-Tabelle ein Paket modifi- zieren und diese Modifikation in einer der Filter-Ketten zum Beispiel prüfen. Welche Möglichkeiten gibt es nun in der Mangle-Tabelle? Die meisten Distributio- nen bieten folgende Ziele für die Mangle-Tabelle an: I DSCP: Dieses Ziel erlaubt es, die Diffserv-Codepoints (DSCP) in dem TOS-Feld des IP-Pakets zu ändern. Diffserv-Codepoints werden für die Realisierung von Quality-of-Service verwendet. Weitere Informationen finden Sie im Abschnitt 21.2.3.

14 Wenn Sie noch einen alten Kernel < 2.4.18 einsetzen sollten, verfügt Ihr Kernel in der Mangle- Tabelle nur über eine PREROUTING- und eine OUTPUT-Kette.

131 open source library ushißn a eettdn brac lihetg asdeePkt nicht Pakete diese dass gleichzeitig, auch können. aber werden genattet dann mehr bedeutet Das ausschließen. ir hat siert 132 (siehe Raw-OUTPUT-Kette Raw-PREROUTING-Kette. die es die durchläuft es wurde, Erstes. durchläuft erzeugt Abbildung als lokal kommt, Ketten Paket auf außen diese das steht durchläuft von Wenn Sie Paket Paket Jedes OUTPUT. das Verfügung. und Wenn zur PREROUTING nicht Ketten: Kerneln zwei alten besitzt Raw-Tabelle Raw-Tabelle Die Die 5.9 iewieeEkäugdrZeeudIrrMgihetnmtBipergl finden Beispielregeln mit Möglichkeiten Kapitel Ihrer in und Sie Ziele der Erklärung weitere Eine Kleinschreibung. und Groß- die auf Sie Achten Verzeichnis herausbekommen. das selbst netfilter in leicht Sie einfach können Sie unterstützt, Ziele Schauen diese alle Kernel Ihr Ob 15 I I I I I I D nedne irü.WieeIfrainnfidnSei Abschnitt im Sie sinnvolle finden kaum Informationen existieren Es Weitere herabsetzen. hierfür. auch Anwendungen als herauf- sowohl TTL-Wert den Abschnitt im Sie finden Ziel dieses über formationen wenige derartig Abschnitt sehr im verwerfen nur Sie Firewalls finden nutzen Informationen viele Leider Weitere und Pakete. Internet. Funktion, markierte das diese für bisher Stauvermeidung Betriebssysteme Art eine ist e aeemtFrwl-een etr nomtoe ne i mAbschnitt im Sie Einsortierung finden die Informationen Weitere 21.2.1 erlaubt Firewall-Regeln. mit Ziel Pakete der Dieses Quality-of-Service-Klassen. schiedliche äs,wr i akeugeten.DeeFnto anzmBipe ü die Kapitel für (siehe ver- Beispiel werden Firewall zum die kann genutzt so Paket Funktion IPsec-VPN-Verkehr Paket, das Diese dem von Sobald entfernt. an befindet. Filterung Markierung Firewall Aufkleber die der ein wird auf wie lässt, sich klebt es sondern wie nicht, lange, Paket das verändert CLASSIFY TTL TOS ROUTE MARK ECN ie aesezue,dea i nee ilgrue id etr Informa- Weitere Abschnitt Kopie wird. im eine geroutet Sie sogar Ziel finden und anderes Ziel senden dieses ein Route über an tionen andere die eine erzeugen, über Pakets Paket eines ein Sie können mit nomtoe brdee ilfidnSei Abschnitt in Sie finden Ziel dieses über Informationen spsir ndrNAT-Tabelle. der in passiert as iri önnSednTLWr ie aesvrnen okne Sie können So verändern. Pakets eines TTL-Wert den Sie können In- Hiermit Weitere : setzen. IP-Header im Type-of-Service-Feld das kann Ziel Dieses : ECN entfernen. TCP-Header dem aus ECN-Bits die Sie können Hiermit : iri önnSePkt i ie almrirn is Markierung Diese markieren. Zahl einer mit Pakete Sie können Hiermit : ene ihdr i Datei die dort sich Befindet . issZe andeRueetcedn e enl brcrie.Da- überschreiben. Kernels des Routenentscheidung die kann Ziel Dieses : 15 . önnSehe i e ilNTAKPkt o e Überwachung der von Pakete NOTRACK Ziel dem mit hier Sie können , e iu-enlelutdeKasfiirn o aee nunter- in Paketen von Klassifizierung die erlaubt Linux-Kernel Der : 5.20 21 .D udee Zeitpunkt diesem zu Da ). . ipt_TTL.ko /lib/modules//kernel/net/ipv4/ ip_conntrack outrtttdrKre a Ziel. das Kernel der unterstützt so , ieenah iealmtIptables mit Firewall einfache Eine 5 21.2.8 ohnctdePkt analy- Pakete die nicht noch . 21.2.9 21.2.7 . . 21.2.3 33 .Weitere ). 21.2.10 . . 5.10 Einstellungen des Kernels library open source

Filter-Tabelle

NAT-Tabelle

Mangle-Tabelle

Raw-Tabelle

Abbildung 5.20: Die Raw-Tabelle wird vor jeder anderen Tabelle durchlaufen. Sie steht nicht auf allen Kerneln zur Verfügung.

Als zweites Ziel dieser Tabelle existiert TRACE. Dieses Ziel erlaubt es, bestimmte Pakete bei ihrem Durchlauf durch Ihr Regelwerk zu verfolgen. Ein Paket, das mit dem TRACE-Ziel markiert wurde, wird anschließend von jeder Regel, die auf das Paket zutrifft, protokolliert:

TRACE: tablename/chainname/rulenum packet

Weitere Informationen über die Raw-Tabelle finden Sie im Kapitel 22.

5.10 Einstellungen des Kernels

Zusätzlich zu den Firewall-Regeln gibt es auch noch eine ganze Reihe von Kernel- einstellungen, die eine zusätzliche Sicherheit für Ihr System schaffen können. Hier- bei handelt es sich um Einstellungen, die Sie in dem Verzeichnis /proc/sys/net/ipv4

133 open source library ae th u atalnatelnDsrbtoe u efgn n idübli- wird gelesen. sind: und Netzwerks Kernelparameter des Verfügung wichtige Neustart Weitere zur jedem nach Distributionen und aktuellen Booten dem allen nach fast cherweise auf steht Datei i i ustednVralnac ndrDatei der in auch Variablen setzenden zu die Sie i ncleedal crgtih uc ie Punkt einen durch Schrägstriche alle anschließend Sie enSebrisdeeseSna enn önnSesh ectdeSna des Syntax die leicht sehr Sie können kennen, Syntax erste die sysctl bereits Sie Wenn 2. gelernt: kennen bereits Sie haben Einstellung modifi- erste Kernels Eine des Verhalten das Laufzeit zur so zieren. Sie wodurch können, verändern 134 net/ipv4/ip_forward=1 -w sysctl i ae eet wiVratnkne een,weSedee eteinstellen Wert diesen nicht Sie Pakete wie 1. die gelernt, werden kennen so Varianten 0, zwei können: eine bereits statt. Datei Weiterleitung haben dieser eine Sie findet in so weiterleiten 1, Wert Wert Netzwerkkarten der der den Ist Ist weitergeleitet. zwischen nicht. Pakete oder System soll Ihr ob entscheiden, Sie 16 I I D b192.168.0.255 -b uc iefhehfeKngrto e ezsgrnctes nset wird entsteht, erst nicht abzuschalten: gar Linux-Systems des genannte Netzes die Funktion des diese so empfohlen, gibt Konfiguration allgemein sind fehlerhafte Netze eine erlauben, derartige durch SMURF-Angriff Vervielfältigung ( über DoS als eine Übersicht Smurf-Amplifier-Registry zum ist die die Eine Angriff Pakets, Netze, Dieser Amplifier-(Verstärker-)Netze. des kann. Die Zielnetz Vervielfältigung führen bekannt. einer dem Netzwerkleitung zu in die Absender- es gefälschter auf Unix/Linux-Systeme kommt mit sämtliche So Ping-Paket antworten. und ein nur loszuschicken, braucht adresse Angreifer Der werden. anen rb renn e eresytm brdee etefle.Eine erfolgen. Wert sinnvoll. diesen nicht Daher über ist Werte. Betriebssystems für Änderung 255) des Typisch (z.B. Erkennung andere werden. grobe verwenden eine erzeugt kann Betriebssysteme Rechner Andere Ihrem 64. von ist die Linux sollen, erhalten Pakete che ycl- net.ipv4.ip_forward=1 -w /proc/sys/net/ipv4/ip_forward sysctl > 1 echo il itiuinnhbndeeEntlugbriszmDfutgemacht. Default ip_default_ttl zum bereits Einstellung diese haben Distributionen Viele net.ipv4.ip_echo_ignore_broadcasts=1 -w sysctl ip_echo_ignore_broadcasts i ndeBodatArseensNte eedtwre(..mit (z.B. Ping-Anfrage, wurde eine gesendet um Netzes sich eines es Broadcast-Adresse handelt die Hierbei an Broadcast-Ping. die einen auf rltt crt s ih wnedefrelc.E ukinetauch: funktioniert Es erforderlich. zwingend nicht ist Schritt letzte er Kmadsalie.EtennSeenahdnPfad den einfach Sie Entfernen ableiten. -Kommandos i ismWr önnSednTLWr iseln e sämtli- den einstellen, TTL-Wert den Sie können Wert diesem Mit : .De anjdc ü ieDna-fSrieAtcegenutzt Denial-of-Service-Attacke eine für jedoch kann Dies ). lsicewierair ee Unix/Linux-Rechner jeder reagiert Klassischerweise : http://www.powertech.no/smurf/ ieenah iealmtIptables mit Firewall einfache Eine 5 /etc/sysctl.conf 16 i isrSna können Syntax dieser Mit . ip_forward /proc/sys/ .DmtdeGefahr die Damit ). iri können Hiermit . itae.Diese eintragen. n ersetzen und , ping 5.10 Einstellungen des Kernels library

I tcp_ecn. Hiermit stellen Sie ein, ob Sie die Explicit Congestion Notification (ECN)17 wünschen. Dabei handelt es sich um eine neue Methode, mit der zwei

kommunizierende Systeme im Internet eine "Verstopfung" frühzeitig erkennen open source können und durch präventive Verlangsamung der Pakete diese zu umgehen versuchen. Leider gibt es viele Firewalls, die Pakete verwerfen, die die ECN-Bits tragen. Daher ist es im Moment nicht sinnvoll, dies grundsätzlich einzuschalten. Wenn Sie ECN einschalten, können Sie es mit Hilfe von Firewall-Regeln in der Mangle-Tabelle für bestimmte Ziele auch wieder abschalten (siehe Abschnitt 21.2.4). I tcp_syncookies: Der TCP/IP-Stack der meisten Betriebssysteme (auch Linux) ist durch einen SYN-Flood-DoS verwundbar. Hierbei handelt es sich um sehr viele TCP-SYN-Pakete, die der Angreifer mit gefälschter Adresse an den Rechner schickt. Der angegriffene Rechner kann zwischen den gefälschten TCP-SYN- Paketen und regulären Paketen nicht unterscheiden und muss auf alle diese Pakete reagieren und sich die Informationen des Verbindungsaufbaus merken. Dies kann bei genügend gefälschten Paketen zu einem Überlauf der hierfür ver- wendeten Tabelle führen. Die TCP-Syncookies schaffen diese Tabelle ab und speichern die notwendigen Daten in der Verbindung selbst18.EinEinschalten dieser Funktion hilft natürlich nur auf dem angegriffenen Server selbst. Auf einem Paketfilter hat das keine Auswirkungen auf die durchgeleiteten Verbin- dungen19. I conf//accept_source_route: Diese Funktion sollte auf jedem System abge- schaltet sein. Bei eingeschaltetem Zustand besteht die Gefahr, dass ein Angreifer Pakete nach seinem Willen routen kann. Als Source-Routing bezeichnet man nämlich die Funktion, dass der Absender den Weg des Pakets über IP-Optionen beeinflussen kann. I conf//rp_filter: Dies ist ein in dem Kernel eingebauter Anti-Spoofing- Schutz. Sie können diesen Schutz anschalten (1) und abschalten (0). Der Linux- Kernel betrachtet bei eingeschaltetem Anti-Spoofing-Schutz jedes Paket und prüft, ob ein potenzielles Antwortpaket den umgekehrten Weg nehmen würde. Diese Reverse-Path-Filterung ist in dem RFC 1812 beschrieben. I conf//log_martians: Diese Protokollfunktion protokolliert alle unmögli- chen Pakete über den zentralen Syslog-Daemon. Dazu gehören zum Beispiel die Pakete, die von rp_filter und accept_source_route verworfen wurden. I conf//forwarding: Hiermit können Sie für jedes Interface einzeln die Forwarding-Funktion konfigurieren. Wenn Sie das Forwarding für den gesam- ten Rechner einschalten (ip_forward), wird dieser Parameter bei jeder Netzwerk-

17 Weitere Informationen erhalten Sie hier: http://www.icir.org/floyd/ecn.html 18 Für die Interessierten: Die Daten werden in der Sequenznummer verschlüsselt hinter- legt. Weitere Informationen über Syn-Cookies finden Sie unter: http://www.heise.de/security/artikel/ 43066/2 und http://cr.yp.to/syncookies.html. 19 OpenBSD kann als SYN-Proxy sogar als Paketfilter vor einem SYN-Flood schützen. Allerdings werden hier keine SYN-Cookies verwendet. OpenBSD verwirft zufällig Verbindungen, sobald die Tabelle sich füllt.

135 open source library öhe i loenTle-ae rtklirnudashißn ewre,so verwerfen, anschließend und Regeln: protokollieren zwei Telnet-Paket Sie Kette ein benötigen ist. ein der also worden Wenn in entschieden Sie so. nicht Regeln Möchten nicht noch der Schicksal LOG Abarbeitung sein bei über weitere das da die ist abgebrochen, erfolgte, nicht wird nicht Abar- wurde, weitere Kette protokolliert eine der REJECT, Paket und in (DROP, entschieden Regeln haben Pakets der gelernt des LOG beitung kennen Schicksal das bisher -j über Sie NEW direkt die ACCEPT), Ziele, --state anderen außen state alle von Während -m Verbindungsaufnahmen $EXTDEV alle -i protokolliert FORWARD Regel Firewall- -A der nächste iptables in Die das Ziel, # einfaches ein es wird: gibt angegeben Iptables Regel mit Protokollierung die Abschnitt Für (siehe besprochen Abschnitt späteren Kapi- einem (siehe in Kapitel kennen wird späteren Iptables einem mit in Protokollierung werden tel einfache Auswertung zur die Werkzeuge wir lernen. werden Abschnitt diesem Umgebun- In bestimmten in Pro- ist Verbindungen eine erlaubten Vielleicht wünschenswert. ist der gen erforderlich. Dafür Protokollierung zwingend vorgeht. eine Verbindungen Firewall auch abgelehnten seiner auf der Firewall- was Jeder tokollierung Firewall. wissen, einer bei sollte Vorgang wichtiger Administrator sehr ein ist Protokollierung Die Protokollierung 5.11 net.ipv4.conf.all.accept_source_route=0 -w net.ipv4.conf.all.rp_filter=1 sysctl -w sysctl 136 DROP -j LOG 23 -j --dport 23 tcp --dport -p tcp FORWARD -p -A FORWARD $IPTABLES -A $IPTABLES ü i uähtsnvlezstlcePrmtrsind: Parameter zusätzliche sinnvolle zunächst Sie Für ne etr ihiePrmtrudir rätrn mKapitel Sie im sprengen. Erläuterung Stelle ihre dieser und an Parameter Rahmen wichtige den weitere würde finden aufzuzählen, hier Parameter Alle 12 idra,s ettdeetpehneNtwrkrePkt ih erweiter. mehr nicht Pakete Netzwerkkarte Netzwerkkarte entsprechende bestimmte die eine leitet so für ab, ihn wieder Sie Schalten eingeschaltet. ebenfalls karte ogsel.Ac iewieefrgshitn rtklatraie(ULOG) Protokollalternative fortgeschrittene weitere eine Auch vorgestellt. ) Achtung i bretn e etrnRgl üd ih rogn n die werden! und ausgeführt erfolgen, nie nicht würde werden, würde durcheinander LOG-Regel Regeln verworfen Reihenfolge weiteren zuerst der Paket die Abarbeitung das die nicht nämlich Sie würde Dann dass bringen. darauf, Sie Achten LOG iePooolee ih anzmBipe oaus: so Beispiel zum dann sieht Protokollregel Eine . ieenah iealmtIptables mit Firewall einfache Eine 5 24.1 ). 23 . 5.11 Protokollierung library

Genauso können Sie ein Paket protokollieren und akzeptieren. Möchten Sie alle neuen Telnet-Verbindungen erlauben, aber auch protokollieren, können Sie die fol-

genden Regeln verwenden: open source $IPTABLES -A FORWARD -p tcp --dport 23 -m state --state NEW -j LOG $IPTABLES -A FORWARD -p tcp --dport 23 -m state --state NEW -j ACCEPT

Wie sehen nun die protokollierten Pakete aus? Das Protokollformat ist zunächst ein wenig gewöhnungsbedürftig, enthält aber alle wichtigen Informationen:

Jul 14 18:41:45 bibo kernel: IN= OUT=eth0 SRC=192.168.255.100 DST=209.132.177.100 LEN=453 TOS=0x00 PREC=0x00 TTL=64 ID=33418 DF PROTO=TCP SPT=35379 DPT=443 WINDOW=2068 RES=0x00 ACK PSH URGP=0

Dies ist ein typisches TCP-Paket, das so vom Syslog-Daemon protokolliert wurde. In welcher Datei die Protokollmeldungen auftauchen, hängt von Ihrer Syslog- Konfiguration ab.

Exkurs: Syslog-Daemon-Konfiguration Bei der Konfiguration des Syslog-Daemons sollten Sie zunächst prü- fen, welche Variante Ihr aktuelles Linux-System nutzt. Allgemein werden im Moment vor allem zwei alternative Syslog-Daemons ein- gesetzt: I Der von dem BSD-Syslogd abgeleitete Syslog-Daemon wird in der Datei /etc/syslog.conf konfiguriert, und der laufende Prozess heißt syslogd. I Der Syslog-ng ist ein moderner Syslog-Daemon, der viele Er- weiterungen gegenüber dem BSD-Syslog erfahren hat. Seine Konfigurationsdatei ist die /etc/syslog-ng.conf,undderProzess heißt auch entsprechend. Während im Folgenden kurz der BSD-Syslogd angesprochen wird, wird dieser Daemon in einem eigenen späteren Abschnitt besprochen (Abschnitt 10.3). Hier wollen wir uns kurz auf den BSD-Syslog beschränken. Schauen Sie in die Datei /etc/syslog.conf, und suchen Sie nach einem nicht auskommentierten Eintrag kernel. oder *..Inder rechten Spalte finden Sie dann den Namen der Datei, in der alle Meldungen des Kernels bzw. aller Protokollquellen mit mindestens der Priorität protokolliert werden. In dieser Datei fin- den Sie dann auch die Firewall-Protokolle.

Betrachten wir den Protokolleintrag der Reihe nach. Zunächst schreibt der Proto- kolldienst das aktuelle Datum und die Uhrzeit: Jul 14 18:41:45.

137 open source library rß e C-idw ( TCP-Windows des Größe u i desnfle i etrnIfrainnasdmI-edrdsPakets: des ( IP-Header IP-Paket Bytes dem aus in ein Informationen Länge weiteren die Ethernet-Paket die folgen dem Adressen die in Auf sich und dass (00:12:17:dd:dd:07) Information, (08:00). befindet Ziel-MAC-Adresse die die noch schließlich dann (00:0f:1f:1c:bd:15), Adresse sfltdeQel e Meldung: der kommen, Quelle Server die folgt welchem Es zusammenfassen von Einträge Protokollserver protokolliert. Name welche einem der wissen, auf auch später wird Protokolle Sie die Damit Sie können. und ist werkfähig ncleedwre i bedrudZe-PArseprotokolliert: Ziel-IP-Adresse und Absender die werden Anschließend verlässt. eth0 über ner o uhnc e tentHae e Pakets: des Ethernet-Header den noch auch vor nnme ( onsnummer ezekat a rtklirePktdnRcnrerih a n verlassen und hat welche erreicht über Rechner Information, den der mit Paket wird: beginnt protokollierte Sie das Meldung. Netzwerkkarte eigentliche die folgt Nun etc. news 5.0 DST=209.132.177.100 255.100 ncleedsheb e rtkldes e ae e ehes e e Ein- den der Rechners, des hat: Namen erzeugt den trag Protokolldienst der schreibt Anschließend 138 07:08:00 a O-ilvrütüe iieOtoe,desi ehle ohverändern noch Verhalten sein die Optionen, einige über können. verfügt LOG-Ziel sich Das wird Verbin- handeln. Es von HTTP-Verbindung) 443. (SSL-verschlüsselte Zielport Art HTTPS-Verbindung einen welche eine Sie um um finden daher Hier ableiten, handelt. Sie wahrscheinlich sich können es Zielports dung und Quell- des Anhand eze og a rnprpoool( Transportprotokoll das folgt Letztes e ie C-ae ognnndrQel n ilot( Zielport und Quell- ( der Header nun folgen TCP-Paket einem Bei ih Abschnitt siehe lggsttit usac e retPitrgsttsein: gesetzt Urgent-Pointer der auch muss ist, gesetzt Flag N OUT=eth0 IN= isrEhre-edretäti e rtnscsBtsdeQuell-MAC- die Bytes sechs ersten den in enthält Ethernet-Header Dieser . RES=0x00 Achtung ID=33418 rtklelne ubwhe oln üsnSesls ihdas Protokolldatei). der sich Namen selbst dem in Sie (z.B. müssen merken wollen, Jahr die aufbewahren Sie länger Wenn Jahreszahlen! Protokolle keine schreibt Unix-Protokolldienst Der n i etrnFasdsTPHaes( TCP-Headers des Flags weiteren die und ) 21.2.9 irhnete ihu i oa rege ae,dsdnRech- den das Paket, erzeugtes lokal ein um sich es handelt Hier . bibo LEN=40 .Wn a FBtgsttit rcen mPooolein Protokoll im erscheint ist, gesetzt DF-Bit das Wenn ). isitwctg adrPooolintgudäzihnetz- grundsätzlich Protokolldienst der da wichtig, ist Dies . ,drTLWr ( TTL-Wert der ), adl ssc menakmedsPkt ee i zu- Sie sehen Paket, ankommendes ein um sich es Handelt . ,drIhl e O-udPE-eds( PREC-Feldes und TOS- des Inhalt der ), WINDOW=2068 kernel: PROTO=TCP ,drZsaddrrsrire isi TCP- im Bits reservierten der Zustand der ), TTL=64 ndee tlefidnSeac al cron, mail, auch Sie finden Stelle dieser An . n i Fragmentierungsidentifikati- die und ) ). ieenah iealmtIptables mit Firewall einfache Eine 5 MAC=00:0f:1f:1c:bd:15:00:12:17:dd:dd: URGP=0 C PSH ACK P=57 DPT=443 SPT=35379 . .FlsenURG- ein Falls ). O=x0PREC=0x00 TOS=0x00 SRC=192.168. DF ,die ), .Als , 5.12 Test der Firewall library

I --log-level : Hiermit können Sie die Priorität der Meldungen anpassen und damit diese Meldungen durch eine Anpassung der /etc/syslog.conf in un-

terschiedlichen Dateien protokollieren. open source I --log-prefix : Sie können eine Zeichenkette von bis zu 29 Buchstaben ange- ben, die jeder Protokollmeldung vorangestellt wird. Damit können Sie anschlie- ßend sehr leicht (zum Beispiel mit grep) in Ihren Protokollen nach bestimmten

Meldungen suchen. $IPTABLES -A FORWARD -p tcp --dport 23 -m state --state NEW -j LOG  --log-prefix "Neue-Telnet-Verbindung"

I --log-tcp-sequence: Dies protokolliert bei jedem Paket auch die verwendeten Se- quenznummern. Sind die Sequenznummern und der Mechanismus ihrer Erzeu- gung bekannt, ist es möglich, einen Man-in-the-Middle-Angriff auf die Verbin- dung durchzuführen. Bei einer Protokollierung sollten Sie daher sicherstellen, dass zumindest keine normalen Benutzer die Protokolle lesen dürfen. I --log-tcp-options, --log-ip-options: Hiermit werden mögliche zusätzliche Optionen des TCP-Headers (z.B. MSS) und des IP-Headers (z.B. Source-Routing) protokol- liert. I --log-uid: Diese Option ist nur in der OUTPUT-Kette sinnvoll. Sie protokolliert bei lokal erzeugten Paketen zusätzlich die UID des Users, dessen Prozess das Paket erzeugt hat.

Achtung Achten Sie darauf, dass Sie vorsichtig mit der Protokollierung um- gehen. Eine unachtsam gesetzte Protokollregel kann schnell mehrere 100 MByte an Protokollen pro Tag erzeugen! Der Analyse der Pro- tokolle ist ein eigenes Kapitel (Kapitel 12)gewidmet.

5.12 Test der Firewall

Dies ist häufig eines der schwierigsten Kapitel für den Einsteiger. Wie testet man eine Firewall? Wie testet man, ob die Firewall sicher ist, aber dennoch die notwen- digen Zugriffe erlaubt? Zunächst sollten Sie prüfen, ob das von Ihnen geschriebene Skript syntaktisch kor- rekt ist. Wenn beim Aufruf Ihres Skripts bereits Fehlermeldungen erscheinen, soll- ten Sie diese Fehler suchen und entfernen. Anschließend können Sie die Funktion testen. Besonders schön ist es natürlich, wenn Sie eine möglichst reale Testumgebung für Ihre Versuche haben. Das kann auch eine virtuelle Testumgebung mit User-Mode- Linux sein.

139 open source library 1/c itrdbhmds filtered unknown filtered Fw1-mc-gui 310/tcp filtered unknown 271/tcp filtered unknown 258/tcp filtered rsvd http 237/tcp filtered snmp domain 225/tcp filtered emfis-data smtp 168/tcp filtered open ssh 161/tcp SERVICE open closed) 140/tcp state: open in 80/tcp are STATE open 53/tcp below shown CEST 25/tcp not 20:06 but 22/tcp 2005-07-14 scanned at (217.160.128.61): ports PORT ) mail.spenneberg.net 1618 http://www.insecure.org/nmap/ on (The ( ports 3.81 Interesting nmap www.nohup.info Starting -sT ähnelt: folgenden nmap der die ~]# ei- Ausgabe, die Ende [root@bibo eine Firewall Am Nmap Ihre (REJECT). von ablehnt Sie wenn erhalten nicht dauert, Scans und länger nes (DROP) wesentlich verwirft Scan Pakete ein unerwünschten dass 89,00) bitte, EUR Sie (aktuell Beachten kostenpflichtiger ein wird zu Stufe Verlag. Sie angeboten. weiteren Heise Intensivcheck anbieten, einer der Ihnen In ist die an. Dienstes Portscan Dienstleister, derartigen Internet eines im Anbieter Unter es einen kostenloser gibt über Trifft Ein so auch kann. scannen. zu, sich durchführen Sie nicht Scan der verfügen den alles nutzen, und Vielleicht das besitzt Rechner durch- hat. Internetzugang zweiten einen Internet eingewählt der einen dem Modem Bekannten, Beispiel oder aus keine zum ISDN Scan Sie Sie über den Falls können Live- Sie testen. seiner Hierzu in müssen Zugriff führen. System den müssen, dem auf auch durchführen Test einen außen Umgebung und von haben Verfügung allem zur vor Testumgebung Sie müssen Hierzu Konfigu- entsprechender werden. bei prüfen, protokolliert und nun auch abgelehnt Sie ration korrekt können Zugriffe unerwünschten Wünschen, alle Ihren ob entsprechend Dienste alle Funktionieren -sT nmap # dem mit Programmen Sie realen können den stehen, mit Verfügung effektiv zur wün- nicht und es Werkzeug Ihnen einfach Sie diese wie relativ Wenn funktionieren, Sie so durchführen. Dienste können alle Dies ob prüfen, schen. zunächst Sie sollten Dann 140 u,wee e letac ahnwürde. so machen TCP-Verbindung auch die Client der tatsächlich es baut wie Nmap auf, bedeutet, Das durch. Connect-Scan ednkne.Hez tre i mpmtdrOption der mit Nmap Sie starten Hierzu können. werden http://www.heise.de/security/dienste/itssecure/ nmap uidsespüe,o i eöitnVridne aufgebaut Verbindungen benötigten die ob prüfen, zumindestens ittdrVra ie einfachen einen Verlag der bietet ieenah iealmtIptables mit Firewall einfache Eine 5 -sT .DiesführteinenTCP- 5.12 Test der Firewall library

331/tcp filtered unknown 366/tcp filtered odmr

379/tcp filtered is99c open source 423/tcp filtered opc-job-start 443/tcp open https 536/tcp filtered opalis-rdv 567/tcp filtered banyan-rpc 641/tcp filtered unknown 722/tcp filtered unknown 734/tcp filtered unknown 743/tcp filtered unknown 814/tcp filtered unknown 819/tcp filtered unknown 843/tcp filtered unknown 852/tcp filtered unknown 877/tcp filtered unknown 891/tcp filtered unknown 950/tcp filtered oftep-rpc 993/tcp open imaps 1367/tcp filtered dcs 1449/tcp filtered peport 1482/tcp filtered miteksys-lm 1720/tcp filtered H.323/Q.931 2003/tcp filtered cfingerd 2004/tcp filtered mailbox 2201/tcp filtered ats 2604/tcp filtered ospfd 5490/tcp filtered connect-proxy 5555/tcp filtered freeciv 6007/tcp filtered X11:7 8888/tcp filtered sun-answerbook 9152/tcp filtered ms-sql2000 18185/tcp filtered opsec_omi

Nmap finished: 1 IP address (1 host up) scanned in 24.558 seconds Hier können Sie erkennen, dass sehr viele Ports von einer Firewall gefiltert werden, aber doch einige wenige Ports offen sind: 22, 25, 53, 80, 443 und 993. Auf dem Sys- tem laufen anscheined ein SSH-Daemon (22) und ein DNS-Server (53). Außerdem findet sich ein Webserver, der sowohl HTTP (80) als auch HTTPS-Verbindungen (443) entgegennimmt, und ein E-Mail-Server, der SMTP- (25) und SSL-verschlüsselte IMAP-Verbindungen (993) entgegennimmt. Alle hier nicht aufgeführten Ports wer- den nicht gefiltert, sind aber dennoch geschlossen, da auf dem Zielsystem kein Dienst installiert wurde. Weitere Hinweise zur Anwendung von Nmap und weitere Werkzeuge zum Test Ihrer Firewall werden im Kapitel 15 beschrieben.

141

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library int ekiirnudbse a ih ntlirn uhsltnal überflüs- alle sollten diese Auch Sie installieren. Konfiguration sollten nicht der umgehen, gar bei zu besser vornherein Ihnen und von unterläuft Dienste deaktivieren Probleme vielleicht die Dienste derartige Aber auf Um Zugriff ist. Fehler? ein möglich ein dass erst so, nicht über Firewall-Regeln auch gar Ihre Dienste Sie diese installieren könnten Natürlich sind, erreichbar sein. außen angreifbar von Netz das sie Netzwerkdienste dass überflüssigen die dieser so Wenn häufig einige aktiviert, enthalten. auch sind Sicherheitslücken Neustart einem auch Softwarepakete nach können Distribution Diese sondern Softwarepakete. überflüssig, nur überflüssige nicht zahllose, durch Firewall Sie Linux-Distribution installieren eine aktuelle so für installieren, eine Default-Einstellungen Sie zunächst der uns Wenn Anwählen wir bloßes bedeutet. sollten sollte, Härtung werden was werden? gehärtet gehärtet Firewall ansehen, Firewall eine eine warum sollte klären, Warum zu Um 6.1 unterstützt. prüfen. gut menügeführt sehr zu es Arbeit Konfiguration Sie manuelle dieser können Ihre möchten, bei um einsetzen verwenden, Zweck Sie diesen Assessment-Werkzeug das für als nicht HP-UX), es (und Sie und Bastille-Linux Linux-Distributionen wenn X Selbst wichtigsten Kapitel OS die im für Mac anschließend Werkzeug auch Ihnen ein ist ich unterschied- Bastille-Linux anschließend stelle vor. wichtige Systeme wurden, schnell ähnliche konfiguriert ist, häufig lich Aufgabe und einfache werden keine vergessen Betriebssystems Punkte eines Härtung die wieder. Da Betriebssystems Ihnen eines ich Härtung gebe oder der Folgenden RFC von Im Kein Vorstellung Betriebssystems. Antwort. meine eines allgemeine keine Härtung gibt die Es definiert Frage. Standard gute Härtung Eine Härtung? die ist auf Dennoch Was Blick einen geleistet. einmal Vorarbeit noch trotzdem gute Sie eine werfen. wenn Fire- bereits schaden, einer nicht meist es Distribution Anforderungen Hersteller kann vorbereitete besonderen Zweck die speziellen die haben diesen Fedora an für nutzen, OSS, eine nicht Sie Linux Wenn noch SUSE angepasst. diese sind wall Linux, sollte Debian) (SUSE wollen, und Distributionen nutzen Core üblichen Firewall-System Die als sein. Linux-Distribution gehärtet eine Sie Wenn 6 ie Linux-Systems eines Härtung

open source library open source library önnSejd itiuinfren iealenezn sitncterforderlich, nicht ist Es einsetzen. Fli4L Allerdings Firewall wie vorziehen. Gründe eine Distribution Distribution subjektive für spezielle andere mag eine Distribution oder es eine jede die und Sie ich Anwendung, können und der Sie in warum nicht und geben, ausspre- es Design Linux-Distribution dass im eine denke, für Unterschiede Empfehlung ich eine denn nicht chen, hier Linux-Systems Ihnen des möchte Installation Ich 6.2 SetUID- die (besonders werden. Befehle angepasst und ausführbaren die überprüft der sollten und sollte SetGID-Rechte) werden, und Bootvorgang und überprüft Verzeichnissse Der Systems der werden. des Rechte Kompromittierung entfernt zur System Möglichkeiten dem auf von Benutzerkonten sigen 144 el c e ist o wiFspatnmtenmSfwr-ad1 neinem In 1. Software-Raid einem mit Festplatten emp- möchten, zwei ausgeben von Raid-Controller Einsatz einen den für Geld ich mit das fehle Festplattenspiegel erforderlich. nicht nicht Sie Ein ist wenn 5 wird. Selbst Raid darauf, unterstützt Ein aber aus. Linux vollkommen Sie von reicht Budget 1 Achten auch Raid Ihr sinnvoll. Controller Main- es Hardware-Raid-Controller ein der Falls ein in dass Netzteile. möglich auch zwei wenn ist über und hergibt, Festplatten Stromversorgung zwei redundanter in mit lieber board Geld hier Ihr auch Sie reicht Investieren meist Aber Prozessor. aus. stromsparender anders einfacher natürlich ein das noch GHz. sieht 3 möchten, mit betreiben 4 tem Pentium einen die nicht als benötigt WennSieauchnochandereFunktionen(z.B.VPNoderProxy)aufdemselbenSys- erzeugt Paketfilter Sie Abwärme reiner Wählen weniger Ein Kühlung. auch Heizplatte. und ununterbro- neueste der Luftzufuhr System Prozessor, die stromsparenden das auf einen besonders Wenn lieber Sie Hardware. achten robuste soll, aber laufen möglichst chen tragisch, eine so also sein. nicht Sie unerwünscht um sicherlich Wählen Internets lediglich des das sich Ausfall ist ein es handelt, kann Falls Zwecke hier basiert. auch private Internet Kom- für dem gesamte Firewall auf Ihre ver- eine etc.) wenn das VoIP haben, kann (E-Mail, ausfällt, Geschäftsmodell munikation diese Ihr Wenn für dar. machen. Konsequenzen Systems Internetverbindung heerende des Ihre Ausfallsicherheit stellt die Firewall über Die Gedanken Systems. sich des Sie Installation sollten die Zunächst für Hinweise allgemeine einige es gibt Dennoch zu Distribution andere eine konfi- der raten, und die Ihnen testen. ich ich stoßen, kennen würde Probleme möchte besten sind, unüberwindbare zuzuschreiben lernen, am vor Distribution Sie Sie zu wenn die Distribution Lediglich Distribution, können. neue Sinn gurieren die allerdings eine Sie es Firewall Verwenden Ob einer wert. bezweifeln. Blick Aufbau einen beim sicherlich sie macht, sind kennen, nicht tributionen 2 1 http://www.ipcop.org http://www.fli4l.de 1 drIPCop oder i beste die itiuingb.Scelc ites gibt Sicherlich gibt. Distribution 2 unte.Wn i is Dis- diese Sie Wenn nutzen. zu ätn ie Linux-Systems eines Härtung 6 6.2 Installation des Linux-Systems library

Fehlerfall ist die Wiederherstellung zwar etwas aufwendiger, jedoch verlieren Sie nicht Ihre Daten. Die meisten großen Distributionen können bereits bei der

Installation ein Software-Raid einrichten und installieren. Ansonsten finden Sie open source in dem Linux Software-Raid-Howto (http://www.tldp.org/HOWTO/Software-RAID- HOWTO.html) entsprechende Hinweise für die Einrichtung. Der wesentliche Vorteil bei einem Raid-System ist die Tatsache, dass das System auch bei Ausfall einer Festplatte weiterarbeitet. Aus demselben Grund empfehle ich auch die Verwendung redundanter Netzteile. Die Netzteile und die Festplatten sind am häufigsten für den Ausfall eines Systems verantwortlich. Sind beide redundant vorhanden, arbeitet das System trotz Ausfall einer Komponente weiter. Wenn Sie das ganze Firewall-System redundant implementieren möchten, sollten Sie das Kapitel über den HA-Firewall-Cluster (Kapitel 26) lesen. Dort wird die Kon- figuration eines Firewall-Clusters auf der Basis von Linux beschrieben. Sobald Sie die Hardware ausgewählt und angeschafft haben, müssen Sie sich mit der Installation beschäftigen. Hier sind zunächst die Partitionierung und die Paket- auswahl wichtig. Bei der Partitionierung sollten Sie bedenken, dass die spätere Fire- wall nur einen geringen Platz für die binären Pakete benötigt. Jedoch werden die Systeme Protokolldateien erzeugen, die schnell sehr groß werden können. Dies soll- ten Sie in der Partionierung berücksichtigen. Folgendes Schema hat sich bewährt: I /boot 128M. So haben Sie immer ausreichend Platz für Kernel-Updates. I /usr 1G. Sie installieren nur wenige Pakete. I / 512M. Die Konfigurationsdateien (/etc/)undGeräte(/dev) benötigen nicht viel Speicher. I /tmp 256M. Der temporäre Speicher sollte auf einer eigenen Partition liegen, so dass er nicht die Root-Partition füllen kann. I /var Rest. Hier liegen die Protokolldateien. Dieses Verzeichnis wird bei der Ver- wendung der Firewall wachsen. Eventuell ist es sinnvoll, das Verzeichnis /var/log auch noch auf eine eigene Partition auszulagern. Bei der Paketauswahl sollten Sie dann eine Minimalinstallation wählen. Sollte der oben angegebene Platz nicht ausreichen, müssen Sie die eine oder andere Partiti- onsgröße anpassen. Allerdings kenne ich keine Distribution, bei der das aktuell der Fall wäre. Nach der Installation sollten Sie sich für den unwahrscheinlichen Fall, dass beide Festplatten ausfallen, mit einer Disaster-Recovery-Lösung wappnen. Dies ist umso wichtiger, wenn Sie nur eine Festplatte verwenden. Zwei Disaster-Recovery- Lösungen sind mir bekannt und werden von mir verwendet: I Mondo-Rescue: http://www.mondorescue.org/ I Mkcdrec: http://mkcdrec.ota.be/ Beide Programme analysieren das System und erzeugen ein oder mehrere bootfä- hige CD-Images, die für die Wiederherstellung des Systems genutzt werden kön-

145 open source library ce kulseugdrPkt eah.Dbihnet ssc mdas um sich es automati- handelte der Dabei mit Erfahrung gemacht. schlechte Pakete eine der Mal Aktualisierung genauso einziges schen ein System erst das habe persönlich müssen Ich und Sie manuell fehlschlagen. nur genauso durch, kann Schritte reparieren. manuell dieselben Update Distribu- Sie selbst Das Ihrer führen Sie von später. Grunde Update wenn Im das vorgehen, installieren. Sie Sie werden tion Wahrscheinlich wie aktualisieren. überlegen, Paket angegriffen sich das mehr Sie nicht sollten zumindest Außerdem kann Er für steht. anschließend Dienst Verfügung automatisch der werden. zur wenn und rechtzeitig nicht als fehlschlägt Zeit nicht größer, dieses einige ich ungemein wird, durchgeführt ist und durchgeführt. Update Schaden wird ein Risikoabwägung Der bekannt durchführe? eine Sicherheitslücke das Update mich eine wenn das für geprüft passiert, wenn Was habe stündlich passiert, rümpfen. ich Updates Was Nase Nun, die die nun fehlschlägt? Systemen mag Update meinen einer Manch auf Entschei- automatisch eingespielt. diese werden Systemen und Update-Mechanismus vielen So diesen auf getroffen. ich Sie habe dung persönlich ob mich überlegen, Für wollen. auch einbinden sich sollten Sie wird Mechanismen dieser Anwendung Debian, erläutert. Die Ihre bei unten Fall. wenn der anderem weiter Core das, unter Fedora ist ist und Dies RedHat einfach SUSE, anbietet. Sehr Mechanismus Fehler installieren. einen dafür an die Updates Distribution anschließend neuesten sind direkt die Paketen daher, Installation, einigen sollten die darauf bei Sie die und sicherheitsrelevant. Bei sind gefunden, sogar veraltet. möglicherweise dann Fehler teilweise zumindest installieren, wurden Installation CDs Paketen der vielen von bei Hilfe sicherlich mit Dateien Linux-System enthaltenen Ihr Sie Updates Wenn 6.3 auf. die unnötig nur dass Images darauf, die bläht Sie Dies Später Achten werden. mo- testen. gesichert erzeugen. vielleicht nicht zu oder Disaster-Recovery-Image Protokolle Systems und neues des installieren Änderung ein zu wesentlichen natlich jeder Lösungen nach beiden dann der Sie sollten eine sich, empfiehlt wiederher- Logical-Volume-Manager- Es Festplatte und großen Software-Raid- gleich umgehen. mit (LVM) kön- Programme mindestens können Partitionen und neuen, die Systeme Dateien einer Beide sondern alle auf stellen. kopiert, sichern dann blockweise Formatierung, diese nicht und nen Partitionierung System die das analysieren wird Dabei nen. 146 e elne rmrnNmsresir retentltn ukinet die funktionierte einstellten, Arbeit ihre aufgrund Nameserver Nameservers mehr. sekundären nicht die Namensauflösung primären als dies primären Wochen, fehlenden fiel einen zwei gab, der nach um des Nameserver Erst sekundäre sich wurde auf. weitere es sofort noch wurde, Da nicht es eingespielt den gestartet. für wieder Update handelte, nicht Nameserver das aber Nachdem gestoppt, Nameserver Distribution. RHEL-3 der ätn ie Linux-Systems eines Härtung 6 bind -Paket 6.4 Deaktivieren überflüssiger Dienste library

Wenn Sie wie ich nachts schlafen, ab und zu in den Urlaub fahren und nicht 24 Stunden am Tag ein Support-Team beschäftigen möchten, kann ich Ihnen nur

empfehlen, eine automatische Aktualisierung der kritischen Systeme einzurichten. open source

6.3.1 Debian-Updates Auf einem Debian-System ist ein Update einfach durchzuführen. Hierzu rufen Sie nacheinander die folgenden Befehle auf:

/usr/bin/apt-get update -q -y /usr/bin/apt-get upgrade -q -y

Der erste Befehl aktualisiert die lokal vorgehaltenen Paketlisten der verfügbaren Programmpakete. Der zweite Befehl aktualisiert die Pakete anhand dieser Liste. Die Option -q unterdrückt die Ausgabe von unnötigen Informationen (quiet), und die Option -y beantwortet automatisch alle möglichen Fragen mit Ja (yes).

6.3.2 SUSE-Updates Bei SUSE kann das YaST-Online-Update (YOU, Abbildung 6.1)überdasWerk- zeug YaST konfiguriert werden. Hierzu müssen Sie aber auch sicherstellen, dass das Online-Update-Paket installiert wurde. Bei dem Einsatz eines SUSE-Linux- Enterprise-Servers (SLES) benötigen Sie für das Online-Update auch noch ein Kennwort.

6.3.3 Red Hat-Updates Bei den kommerziellen -(RHEL-)Systemen erfolgt das Up- date der Pakete mit dem Kommando up2date. Dieses Kommando besitzt eine gra- fische Oberfläche. Jedoch können Sie diese auch mit der Option -nox deaktivieren. Um dieses Werkzeug nutzen zu können, benötigen Sie ähnlich wie beim SLES ein Red Hat Network-(RHN-)Login und einen Wartungsvertrag.

6.3.4 Fedora Core-Updates Bei der freien Fedora Core-Distribution ist ein Update der Pakete sehr einfach mit dem Befehl yum möglich. Ein yum update aktualisiert das System mit den aktuellen Paketen. Die Option -y beantwortet auch hier alle Fragen mit Ja.

6.4 Deaktivieren überflüssiger Dienste

Sobald Sie die Installation des Systems abgeschlossen und eventuelle Updates ein- gespielt haben, sollten Sie überflüssige Dienste deaktivieren. Wie finden Sie nun diese Dienste? Im Grunde gibt es drei verschiedene Varianten, wie auf einem typischen Linux-System ein Dienst automatisch gestartet wird.

147 open source library bidn .:YS rölctdsOnline-Update. das ermöglicht YaST 6.1: Abbildung 148 e intsan. Dienstes des nomtoe ih etrefn önnSevruhn u etdnDes zu Dienst den Test zum versuchen, Sie können weiterhelfen, nicht Informationen ih e alit ole i esce,e easune.Hlrihsn irdie hier sind Hilfreich herauszufinden. Pakets es das des versuchen, Falls treibt. Dokumentation Sie Dienst die sollten der vie- Manpage, ist, was bei wissen, Fall das Sie Sie der da dass nicht können, hoffe, erkennen Ich selbst Dienst? Diensten überflüssigen len einen nun Sie erkennen erläutert. Woran unten weiter wird Varianten dieser Konfiguration Die I I I 3 M ekint e Bedarf. bei werkdienste rnDeo.DrCo-amnsattatmtshPormez bestimm- zu Programme Zeiten. automatisch ten startet Cron-Daemon Der Cron-Daemon. Internet-Super-Server Der einziges die Internet-Super-Server. ein nutzen um Distributionen kleinere allem SysVInit-Skripten, Startskript. vor Einige, nutzen starten. zu Linux-Distributionen Dienste Viele Startskripten. tdmBefehl dem it p qf/etc/init.d/ -qif rpm egnSedeIfrainnüe a RPM-Paket das über Informationen die Sie zeigen 3 n aülc oge al he diese Ihnen Falls Google. natürlich und inetd ätn ie Linux-Systems eines Härtung 6 oder xinetd tre Netz- startet 6.4 Deaktivieren überflüssiger Dienste library deaktivieren. Falls bei einem Reboot keine Fehlermeldung auftritt und alle wichti- gen Funktionen zur Verfügung stehen, war der Dienst nicht erforderlich. open source 6.4.1 Startskripten Die meisten Distributionen nutzen SysVInit-Startskripten. Diese Skripten befinden sich in dem Verzeichnis /etc/init.d. Ob ein Dienst gestartet wird oder nicht, wird über Verknüpfungen in den Verzeichnissen /etc/rc.d/rc[0-6].d konfiguriert. Anstatt diese Verknüpfungen jedoch von Hand zu modifizieren, sollten Sie den Befehl chkconfig verwenden, der auf den meisten Distributionen vorhanden ist. Falls dieser Befehl bei Ihnen nicht existiert, lesen Sie bitte in der Dokumentation der Distribu- tion nach. Mit dem Befehl chkconfig --list können Sie den aktuellen Zustand der Startskripten anzeigen. # chkconfig --list postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off chkconfig off schaltet den entsprechenden Dienst ab. Alternativ zu den SysVInit-Skripten gibt es vor allem auf kleinen Distributionen ein einzelnes Startskript, das die Dienste startet. Hier müssen Sie in die Datei schauen und die entsprechenden Zeilen durch Kommentieren deaktivieren. Teilweise (z.B. OpenWRT) existiert auch ein Verzeichnis /etc/init.d, und jedes Skript in diesem Verzeichnis wird automatisch aufgerufen. Um einen Dienst zu deaktivieren, genügt es dann meist, die Ausführrechte von der Datei zu entfernen.

Achtung Änderungen in den Startskripten machen sich erst bei einem Neu- start oder dem Wechsel des Runlevels bemerkbar.

6.4.2 Internet-Super-Server Fast jede Linux-Distribution verfügt über den Internet-Super-Server inetd oder xinetd. Wird dieser Dienst über ein Startskript gestartet, so startet er bei Bedarf, entsprechend seiner Konfiguration, weitere Dienste. Das bedeutet, dass Sie den Telnet-Server in der Ausgabe von ps -ef nicht sehen, obwohl er verfügbar ist. Er wird erst bei Bedarf von dem (x)inetd gestartet. Der Inetd verfügt über eine Konfigurationsdatei /etc/inetd.conf, in der pro Zeile ein Dienst konfiguriert wird. Sie schalten die entsprechenden Dienste durch Auskom- mentieren der Zeile ab.

149 open source library nbäggvmWcetg()aseür.DsSkript Das ausgeführt. (*) Wochentag vom unabhängig i wieDti odre leBnte,aßrdndr ugfhtn ieCron- Befehl eine dem aufgeführten, mit dort wird den Existiert Cron-Tabelle außer anlegen. Benutzer, Diese Cron-Tabelle alle anlegen. eine dürfen Tabelle Benutzer so Datei, aufgeführten zweite dort die die nur dürfen so otx e rnDeo e eeli e u ibe pleafue soll. aufrufen dessen Spalte in siebten werden, nun angegeben der Benutzer in Befehl fünf- der den der kann Cron-Daemon zwischen Hier der Spalte auf. Kontext zusätzliche Spalte eine sechsten jedoch und weist ten Benutzer, der Tabellen den ezndsesrcednWre ( Wertes ensprechenden des Setzen rna -r crontab über dies ihm wenn anlegen, Cron-Tabelle persönliche Dateien eine die kann Benutzer Jeder meisten Cron-Tabellen. den von Auf Arten konfiguriert. zwei Cron-Tabellen existieren gestartet über Linux-Systemen Cron-Daemon wird dem Cron-Daemon von Der automatisch werden. auch Programme können Schließlich Cron-Daemon 6.4.3 Verzeichnis im Dateien einzelne über meist Dienste die werden /etc/xinetd.d Xinetd dem Bei 150 /bin/getmail.sh 1-5 * Skript Das * 7-18 */30 5*** 0 dtet i e Befehl dem Mit editiert. e eeli e ehtnSat u.Btahe i ogne Beispiel: folgendes Sie Betrachten Übereinstimmung aus. bei Minute Spalte führt jede sechsten mit und der vergleicht Zeit ebenfalls in Cron-Daemon eingetragenen Befehl Wochentag der den Der mit der Sonntag). Systemzeit wird = aktuelle die (0,7 Dabei angegeben sechs Wochentag. Minuten, mit Ziffer Zeitpunkts: und Tabelle einer eines eine Monat Definition um die Tag, sich enthalten handelt Stunden, Spalten Es fünf einfach. ersten recht Die ist Spalten. Datei dieser Syntax Die uäzihz e rnTble e euzreitetafenmmdre Linux- modernen einem System-Cron-Tabelle auf eine existiert Montag auch Benutzer von System der aufgeht) Cron-Tabellen Rest den zu ohne ausgeführt. Zusätzlich Datum Division vom die unabhängig (wenn (5) Minuten Freitag bis 30 (1) alle 18:30 bis Uhr Dienst. öce i diese. Sie löschen Achtung /bin/test.sh /etc/cron.allow etur.DeeDtinetatnen Zeile eine enthalten Dateien Diese gesteuert. aülc üsnSenc ie oikto e Konfiguration der Modifikation starten. einer neu Internet-Super-Server nach den Sie müssen Natürlich idu :0Ura ee a *,i ee oa * und (*) Monat jedem in (*), Tag jedem an Uhr 5:00 um wird /bin/test.sh rna -l crontab oder /etc/cron.deny egnSeIr ieeCo-ael n n mit und an, Cron-Tabelle eigene Ihre Sie zeigen enable=no /etc/crontab bzw. rab id xsir i rt Datei, erste die Existiert wird. erlaubt is rnTblegectstark gleicht Cron-Tabelle Diese . disable=yes ätn ie Linux-Systems eines Härtung 6 /bin/getmail.sh enable= rna -e crontab ekiirnSeden Sie deaktivieren ) oder disable= idvn7:00 von wird neetund angelegt .Durch 6.5 Entfernen überflüssiger Software library

01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly open source 42 4 1 * * root run-parts /etc/cron.monthly

Die obigen Zeilen stammen von einer Fedora Core Linux-Distribution. Der hier von dem Cron-Daemon aufgerufene Befehl ist run-parts. Diesem Befehl werden in Ab- hängigkeit von der Zeit unterschiedliche Verzeichnisse als Argument übergeben. Der Befehl durchsucht das angegebene Verzeichnis und ruft alle Befehle in die- sem Verzeichnis auf. So wird immer eine Minute nach der vollen Stunde jede aus- führbare Datei in dem Verzeichnis /etc/cron.hourly aufgerufen. Ähnlich wird immer Sonntag (0) um 4:22 das Verzeichnis /etc/cron.weekly abgearbeitet. Um zu erkennen, welche Programme aufgerufen werden, sollten Sie daher die Ver- zeichnisse analysieren und überflüssige Programme entfernen oder ihnen das Aus- führrecht entziehen. Dieses Verhalten ist eigentlich bei allen Linux-Distributionen ähnlich.

Achtung Änderungen an den Cron-Tabellen der Benutzer sind sofort aktiv. Ein Neustart des Cron-Daemons ist nur bei einer Modifikation der Datei /etc/crontab erforderlich. Auch Änderungen in den Verzeich- nissen /etc/cron.* erfordern keinen Neustart.

6.5 Entfernen überflüssiger Software

Nachdem Sie überflüssige Dienste deaktiviert haben, können Sie nun die entspre- chenden Pakete und vielleicht auch noch weitere Pakete entfernen. Das Entfernen von überflüssigen Paketen ist unter Linux seit der Einführung der Paketverwal- tungssysteme recht einfach geworden, da diese die Abhängigkeiten überwachen und im Zweifelsfall die Deinstallation verhindern. Beginnen Sie am einfachsten da- mit, dass Sie alle Pakete auflisten. Dies geht auf einer RPM-basierten Distribution recht einfach mit rpm -qa. Auf einer Debian-Distribution zeigt der Befehl dpkg -l die installierten Pakete an. Untersuchen Sie die Liste, und versuchen Sie, Pakete zu deinstallieren, die Sie nicht benötigen. Sobald das Paket noch von weiteren Paketen benötigt wird, wird die Paketverwaltung Ihnen einen Abhängigkeitskonflikt anzei- gen. Entscheiden Sie dann, ob Sie diese Pakete auch deinstallieren wollen.

151 open source library ehedsEigentümers des Rechte eel i ehedsEgnües(eUD drdrGup StI)afden auf (SetGID) kleinen Gruppe einem des der an Ausführung Rechte oder die diese (SetUID) erkennen für Sie Eigentümers werden übertragen. so des Prozess Rechte, Rechte diese die über waren Befehls SetGID-Recht Befehl das ein und Pro- Verfügt SetUID- dem Das geboren. Befehls übertragen. eines zu Ausführung Privilegien die erweiterte für zess erlaubt, es der geschaffen, Mechanismus e enKnwr nen ene en crirct ndrDatei Benut- der ein an Beispiel Schreibrechte zum keine soll er /etc/shadow wenn Wie ändern, alt. Kennwort sehr sein schon zer ist mit Problematik grundsätzliche Befehls Die des angepasst. Ausführung entsprechend die werden möchte, für zugreifen privilegier- Benutzer dem der von entweder root nur wird dürfen darf, Aktionen Benutzer benutzen normale weitere der viele Benutzer dort darf und besitzt ten Ping er Diese einfaches Benutzer und ein starten. zuzugreifen, einfacher Auch nicht DVD-Laufwerk ein Schreibrechte. oder keine normalerweise CD- gar hat das schon So auf funktio- möchte. Recht, unproblematisch müssen das Anwender so Hierfür nicht der auch brennen. es das zu damit wie anwenden, und niert, Tricks abzuspielen viele über ein- DVD Benutzer Systeme möglichst normaler eine diese als soll Oberfläche auch Es grafische als Multifunktionssystem. anzubieten die ausge- Netzwerkdienste ein Firewall-Zwecke sowohl eher sein, auf ist fach speziell Zielsetzung nicht Ihre sind richtet. Linux-Distributionen Dateisystemebene meisten auf Sicherheit Die 6.6 152 Befehl den Benutzer ein Wenn -r- ireBnte retnsle.Wn i emAfu e eel bereits unprivile- Befehle normale der überhaupt Aufruf Firewall beim Sie Ihrer Wenn auf sollen. ob arbeiten fragen, Benutzer können. gierte sich werden ausgeschlossen Sie nicht sollten Fehler Fehler wieder Daher weitere nicht immer Zukunft die Vergangenheit Rechte für der die dass in und so Befehle auf, durchführt die Vorgang wiesen vorgesehenen Leider missbraucht. den nur tatsächlich auch Gruppe der -r-xr- s Piieinasette drdeRct e esuc,afdedrBenutzer der die auf Ressource, der Rechte die oder ausgestattet -Privilegien --x1ro ot1807 ä 05/usr/bin/passwd 2005 Mär 7. 18840 root root 1 --x--x s - otty95 7 p 74 /usr/bin/wall 17:42 Apr 27. 9752 tty root 1 r-x a?Dhrwresh rhi e ecihevnUi 17)brisein bereits (1971) Unix von Geschichte der in früh sehr wurde Daher hat? Tipp tty root ez ae.FhtdrCCmie,itdeVrriugenssolchen eines über- Verbreitung selbst die gestoppt. sich ist Wurms C-Compiler, zunächst der System Fehlt die einem haben. setzt aufgetreten, auf Einbruch Würmer einem mehrfach In nach bereits entfernen. sind System mög- Vergangenheit Sie dem der dass von sicher, C-Compiler zumindest vorhandene Sie licherweise tref- stellen nicht wollen, oder noch können Erfahrung fen mangels Entscheidungen diese Sie Wenn sitdn ugb e eel upüe,ds e Anwender der dass prüfen, zu Befehle der Aufgabe dann ist Es . ucgfhtwre.DmtdnohenBnte e Befehl den Benutzer ein dennoch Damit werden. durchgeführt root e urfdsBefehls des Aufruf Bei . /usr/bin/passwd urf,eb rfrdeAsürn die Ausführung die für er erbt aufruft, /usr/bin/wall ätn ie Linux-Systems eines Härtung 6 s . rte i Rechte die er erbt /etc/passwd root oder sind 6.6 Sicherheit auf Dateisystemebene library oder die Rechte immer über sudo (siehe unten) erhalten, ist es nicht nötig, dass diese Rechte gesetzt sind.

Diese Rechte haben den zusätzlichen Nachteil, dass Sie jedem Benutzer, auch ei- open source nem Systembenutzer wie nobody, für die Ausführung die Privilegien übertragen. Sie sollten daher diese Rechte entfernen. Um das System nach derartigen Befehlen abzusuchen, können Sie die folgenden Befehle verwenden:

# find / -perm +4000 -ls # find / -perm +2000 -ls

Sie können die Rechte mit chmod u-s und chmod g-s entfernen. Prüfen Sie auch hier anschließend mit einem Neustart, ob das System noch so arbeitet, wie Sie es sich vorstellen.

Tipp: Sudo Sinnvollerweise legen Sie auf der Firewall lediglich für jeden Firewall-Administrator ein Benutzerkonto an, das Sie mit individu- ellen Kennwörtern versehen. Die Administration des Systems kann dann mit dem Befehl sudo erfolgen. Mit diesem Befehl können Sie einem bestimmten Benutzer bei der Ausführung eines bestimmten Befehls erweiterte Privilegien zuweisen. Bei der ersten Ausfüh- rung verlangt der Befehl zusätzlich noch die Authentifizierung des Benutzers, die Sie aber auch abschalten können. Sie konfigurieren den Befehl sudo in der Datei /etc/sudoers.DieseDa- tei sollten Sie jedoch nicht direkt, sondern mit dem Befehl visudo editieren. Dieser Befehl prüft die Syntax und warnt Sie vor dem Abspeichern bei Fehlern in der Datei. Um nun eine Gruppe von Administratoren mit root-Privilegien aus- zustatten, können Sie die folgenden Zeilen verwenden:

User_Alias ADMIN = spenneb, oliver ADMIN ALL=(root) ALL

Die erste Zeile definiert einen Alias ADMIN für die Benutzer spen- neb und oliver. Die zweite Zeile erlaubt diesen Benutzern, auf allen Rechnern als root jeden Befehl auszuführen. Die Einschränkung der Rechner ermöglicht es Ihnen, eine zentrale Datei zu erzeugen und für mehrere Systeme zu verwenden und zu verteilen. Dann können Sie hier den Rechnernamen angeben, für den diese Zeile gelten soll. Die Benutzer spenneb und oliver benötigen nun nicht mehr das root- Kennwort. Sie können selbst jeden Befehl ausführen. Bei der ersten Verwendung und nach Ablauf von 5 Minuten müssen Sie sich mit Ihrem eigenen Kennwort authentifizieren.

153 open source library ahdrMdfiaindrDtimse i ionuisalee.RfnSehierzu Sie Rufen installieren. verlangen. neu Lilo Kennwort Sie ein müssen Datei Bootvorgangs der des Modifikation der Modifikationen Nach lediglich dass dafür, -d $1$.... --md5 otvrclsenudi e rbKngrtosae i e Parameter dem mit Grub-Konfigurationsdatei der in und verschlüsseln wort e e otMngrGu önnSemtdmBefehl dem mit Sie können Grub Boot-Manager dem Bei edrmse i a enoti lretagbn i ole ae aafach- darauf daher sollten außer Sie angeben. keiner Klartext dass in Kennwort ten, das Sie müssen Leider restricted password=geheimes_Kennwort Datei der Anfang den ein an Sie Zeilen zwei fügen einfach ist, Sie /etc/lilo.conf können Fall Lilo der Boot-Manager dem nicht Bei dies Falls an. hinzu. Konfiguration Installation Distributionen zur der unbe- moderne Kennwort bei gegen bieten direkt Kennwort Erfreulicherweise einem dies ist. mit Ihnen Boot-Manager geschützt der Änderungen dass das fugte darauf, Sie auch Sichern Sie booten. Achten Kennwort. er- zu einem nicht USB-Stick mit es oder Änderungen BIOS CD unbefugte im gegen Diskette, BIOS Bootreihenfolge von die System dass das achten, Raum, möglicht, darauf einen Sie sondern erhält. sollten Flurs, Zusätzlich System des dem Ende am können. zu abschließen Besenkammer Zugang Sie die den physikalischen nicht Achten also Unbefugter wählen. Sie System kein Wählen das dass für darauf, Aufstellungsort den Sie Sie sorgfältig einbeziehen. sollten Sie mit sind, sollten Betrachtungen Zunächst vergebens Ihre in nicht Systems sichern, des zu Bootvorgang den System auch das Bootvorgang Bemühungen, beim Ihre Sicherheit Damit 6.7 154 -v lilo üsnSe ärn e ntPoesstartet, Init-Prozess Dazu bestätigen. die der zu noch während interaktiv zusätzlich diese Sie, Dienste existiert müssen der Linux-Distributionen Startens Core des Fedora während Möglichkeit, und Hat- Red Auf anzugeben. Kennwort u olekieubfgeMdfiaindsBovrag ermgihsein. möglich mehr Bootvorgangs des Modifikation unbefugte keine sollte Nun eznSehez ndrDatei kann. der überspringen in Dienst hierzu einen Sie Boot Setzen beim niemand damit abschalten, Möglichkeit auf. nee.Ashißn s ü eeMdfiaindsBovratn das Bootverhaltens des Modifikation jede für ist Anschließend angeben. anfügen: e 11:65 iosd:senb:TYps2;PD/uhf_uhbc ; PWD=/buch/fw_buch/buch ; TTY=pts/2 : spenneb sudo: bibo 15:16:59 11 Sep protokolliert: außerdem wird Zugriff Jeder SRro OMN=urbnti /var/log/messages COMMAND=/usr/bin/tail ; USER=root root is ae ee af e Parameter Der darf. lesen Datei diese /etc/sysconfig/init i Variable die I igbn i ole uhdiese auch sollten Sie eingeben. ätn ie Linux-Systems eines Härtung 6 grub-md5-crypt Prompt=no restricted . i Kenn- ein password sorgt 6.8 Bastille-Linux library

6.8 Bastille-Linux

Die von mir bisher beschriebenen Schritte zur Härtung können nur einen allgemei- open source nen Weg aufzeigen. Je nachdem, welche Distribution Sie verwenden, sind vielleicht noch weitergehende Schritte erforderlich, oder Sie können den einen oder anderen Schritt überspringen. Es ist in jedem Fall ein großer Aufwand, alle Schritte richtig und in der richtigen Reihenfolge reproduzierbar und dokumentiert durchzuführen. Bastille-Linux hilft Ihnen dabei. Bastille-Linux ist ein Härtungswerkzeug für Linux- und Unix-Systeme. Es unter- stützt RedHat Linux, RedHat Enterprise Linux, Fedora Core, SUSE, Mandrake, Gentoo, Debian, HP-UX und MacOS X. Sie können mit diesem Werkzeug einfach, reproduzier- und automatisierbar Dienste und Systemeinstellungen konfigurieren. Es schaltet unnötige Dienste ab und kann sogar Dienste in einem Chroot laufen lassen.

/ dev/ boot/ bin/ sbin/ Zugriff nicht usr/ möglich etc/ tmp/ var/ / chroot/ etc/ bin/ var/ dev/

Chroot

Abbildung 6.2: Nach einem Chroot kann ein Prozess auf Dateien außerhalb des Chroot nicht mehr zugreifen.

Tipp: Chroot Ein Chroot stellt eine zusätzliche Sicherheitsfunktion dar. Dabei wechselt ein Prozess beim Start sein Root-Verzeichnis (siehe Abbil- dung 6.2). Anschließend kann der Prozess auf Dateien außerhalb des eigenen Root-Verzeichnisses nicht mehr zugreifen. Ein Angrei- fer hat so nach einem Einbruch über diesen Prozess keinen Zugriff auf Dateien des restlichen Systems. Leider ist die Konfiguration eines derartigen Chroot sehr aufwen- dig, da alle Dateien, die der Prozess während seiner Ausführung

155 open source library 156 werden bedient Maus der mit kann -x). Oberfläche (bastille grafische Die 6.3: Abbildung hr asal rzsenc e ehe ndsCro uhihre auch Chroot das in Wechsel dem wechseln. nach Benutzeridentität Prozesse alle dass cher, dem in Prozess Benutzers wie ein des effektiv Sobald Privilegien so Unix-Plattformen. Chroot-Verzeichnis nicht Linux-System anderen einem einigen auf auf Chroot ein ist Leider werden. gestartet Chroot-Verzeichnis nem öie il int urf u etr ilohknudDateien und Bibliotheken weitere auf be- wie Zugriff So aus. Dienste nicht viele hier nötigen reicht Verknüpfung symbolische sein Eine vorhanden müssen. physikalisch Chroot-Verzeichnis diesem in benötigt, tte,sn u esildrBn-aeevrudSot Wei- Kommandozeilenbefehl Snort. unter- dem Chroot und mit ein Bind-Nameserver können aus der Dienste Haus Beispiel tere Diensten von zum einigen die sind bei Dienste, stützen, aber wert. umständlich, Aufwand recht den daher ist Chroot nes hnkn.EnCro cüz ih vor nicht schützt ausbre- Chroot Chroot-Verzeichnis Ein dem aus kann. Angreifer chen ein dass Gefahr, die /etc/passwd , /etc/resolv.conf , /etc/hosts ätn ie Linux-Systems eines Härtung 6 t.DeAmnsrto ei- Administration Die etc. root tle i ae si- daher Sie Stellen ! root eöit besteht benötigt, chroot nei- in 6.8 Bastille-Linux library open source

Abbildung 6.4: Firewall-Systeme verfügen meist nicht über eine grafische Oberfläche. Hier können Sie Bastille im Text-Modus einsetzen (bastille -c).

Sie können Bastille-Linux in zwei verschiedenen Varianten verwenden: interaktiv und nicht-interaktiv. Im interaktiven Modus können Sie zwischen einer grafischen /TK- (Abbildung 6.3) und einer textbasierten Perl/Curses-Oberfläche (Abbil- dung 6.4) wählen. Wenn Sie es interaktiv einsetzen, wird Ihnen Bastille-Linux die verschiedenen Optionen erklären, und Sie entscheiden, ob und wie die Probleme ab- gestellt werden. Der nicht-interaktive Modus bietet sich für die automatische Ver- vielfältigung einer Sicherheitsrichtlinie auf vielen Systemen an. Sie stellen so die Nachvollziehbarkeit der Systemhärtung sicher. Ich werde Ihnen nun kurz eine Führung durch die verschiedenen Funktionen von Bastille-Linux 3.0.X geben. Bastille-Linux beginnt mit der Härtung der Dateirechte. Zunächst werden die Rechte wichtiger Befehle der Systemadministration so modifiziert, dass ein norma- ler Benutzer keinen Zugriff erhält (Abbildung 6.5). Anschließend können Sie entscheiden, ob die Befehle at, ping, traceroute, mount etc. über die SetUID-Rechte verfügen sollen oder nicht. Damit Bastille-Linux die Sicher- heit erhöht, müssen Sie auf diesen Bildschirmen jeweils Yes anwählen. Im Bereich AccountSecurity können Sie wählen, ob die R-Werkzeuge, die eine Klar- textanmeldung ohne Kennwort, basierend auf der IP-Adresse, erlauben, deaktiviert werden sollen. Zusätzlich bietet Bastille-Linux die Implementierung von Richtlinien, die das Alter von Kennwörtern überprüfen, das Setzen einer Umask und das Ab- lehnen des root-Logins. Achten Sie darauf, dass Bastille-Linux einige Fragen bereits per Default mit Yes beantwortet! Bei der Betrachtung der Boot-Security kann Bastille-Linux den Reboot per Ctrl - Alt - Delete abstellen und den Single-User-Modus mit einem Kennwort schützen, falls dies noch nicht der Fall sein sollte.

157 open source library int i C-rpesüe ie eal-ita ndrDatei der in Default-Eintrag einen über TCP-Wrappers mit Dienste bidn .:Bsil nfrtbiSsdi-eelndeLs-udAsürehefür Ausführrechte und Lese- die Sysadmin-Befehlen Benutzer. bei unprivilegierte entfernt Bastille 6.5: Abbildung 158 be- auf eine nicht auf sich dürfen Konsolenzugriff Konten den weiteren anmelden. Beispiel Alle Konsole zum beschränken. der Konten Sie von Mo- können Liste Authentication Hier stimmte Pluggable an. der Konfiguration (PAM) die dules bietet Bildschirm nächste Der etc. FTP Telnet, Dienste schen Abbildung (siehe des Konfiguration der Bei Tipp nlsetdsSse n tltdeFae entsprechend. Fragen die Bastille-Linux wahr- stellt zusammen. und dies System Linux-Distribution das hängt analysiert Ihrer sollten, mit hin- bekommen darüber scheinlich gestellt oder weniger Fragen Bastille-Linux von ausgehende Aufruf beim Sie Falls 6.6 n i ofiuainvnSadr-anr ü i typi- die für Standard-Bannern von Konfiguration die und ) inetd ittBsil-iu uähtdeSceugder Sicherung die zunächst Bastille-Linux bietet ätn ie Linux-Systems eines Härtung 6 /etc/hosts.deny 6.8 Bastille-Linux library open source

Abbildung 6.6: Viele Netzwerkdienste nutzen TCP-Wrappers als Zugangskontrolle. Bastille-Linux kann den Zugriff auf diese Dienste mit einem Default-Eintrag ähnlich einer Firewall beschränken.

Der nächste Punkt, Logging, erlaubt die Aktivierung des Process-Accounting. Hier- mit überwacht und protokolliert der Linux-Kernel jeden aufgerufenen Befehl. Ach- tung, die Protokolle wachsen sehr schnell auf einem normalen System. Für eine Firewall kann dies aber durchaus sinnvoll sein. Denken Sie jedoch daran, dass auch die von Cron aufgerufenen Befehle protokolliert werden. Im Bereich Miscellaneous Daemons können Sie Dienste wie NFS und deakti- vieren, die Unterstützung für den HP Office Jet (HPOJ) abschalten und ISDN deak- tivieren. Dienste wie Apache und FTP werden gesondert behandelt. Bei der Konfiguration des Apache können Sie diesen zunächst nur auf dem lokalen Rechner (localhost) anbieten, auf eine spezielle IP-Adresse binden und zum Beispiel die Verwendung von symbolischen Verknüpfungen abschalten. Die FTP-Server-Konfiguration durch Bastille-Linux kann sowohl den WU-ftpd als auch den heute üblicheren Vsftpd konfigurieren und gegen Angriffe sichern. Unter dem Punkt TMPDIR bietet Bastille-Linux eine sehr interessante Möglichkeit zur Erzeugung temporärer sicherer /tmp-Verzeichnisse. Diese werden für jeden Be-

159 open source library innafdee aie verweisen. Kapitel dieses auf tionen efitrPoool n ritl ölcePrsasudAgif.Dee Werk- Dieses Kapitel Angriffe. At- im und Scan auch Portscans wird Port mögliche zeug des ermittelt Konfiguration und die Netfilter-Protokolle noch gute (psad, Bastille-Linux Detector einige bietet tack Skript Punkt Start diesem letzten des in guten Als Sie einen Feinheiten wollen. finden übernehmen auch sämtliche Vielleicht Sie Skript die dar. Ideen, nicht, das Eigenentwicklung die stellt Bastille-Linux für jedoch Ihnen auszuschöpfen, es Iptables-Befehls genutzten ermöglicht Ihren Natürlich zu Fragen Firewall-Skript. fertiges Bildschirmen ein Ende mehreren die am Abbildung in siehe es DNS, dem Sie (z.B. Diensten in müssen ersetzen, Hierzu zu ermög- Firewall-Konfiguration licht. Buch einer dieses Erzeugung skriptgesteuerten sogar, einer Bastille-Linux Möglichkeit versucht Grunde Im möglich. nicht seine so und über Verzeichnis sind Benutzer dieses ausnutzen, jeder die Verfügbarkeit Angriffe, verfügt allgemeine Viele So Verzeichnis. erzeugt. temporäres eigenes Anmeldung ein seiner bei automatisch nutzer ein Fragen einiger Beantwortung nach erzeugen. sogar Firewall-Skript kann Bastille-Linux 6.7: Abbildung 160 http://www.cipherdyne.org/psad/ 12 epohn ae öheihfrwieeInforma- weitere für ich möchte Daher besprochen. 6.7 enwre,udBsil-iu generiert Bastille-Linux und beantworten, ) n issWrzu analysiert Werkzeug Dieses an. ) ätn ie Linux-Systems eines Härtung 6 6.9 Mandatory-Access-Control-Systeme (MAC) library

Eine besonders nette Funktion von Bastille-Linux ist die Tatsache, dass Sie alle Än- derungen wieder rückgängig machen oder auf einer anderen Maschine klonen kön-

nen. Dies ist möglich, da die interaktive Oberfläche lediglich eine Konfigurations- open source datei erzeugt, aber diese noch nicht aktiviert. Diese Aktivierung erfolgt anschlie- ßend und kann auch auf einem anderen System durchgeführt werden. Diese Konfi- gurationsdatei befindet sich anschließend in dem Verzeichnis /etc/Bastille.Indieser Datei befinden sich die Fragen und die von Ihnen gegebenen Antworten. # Q: Are you finished making changes to your Bastille configuration? .End_Screen="Y" # Q: Would you like to enforce password aging? [Y] AccountSecurity.passwdage="Y" # Q: Should Bastille disable clear-text r-protocols that use IP-based authentication? [Y] AccountSecurity.protectrhost="Y" # Q: Should we disallow root login on tty’s 1-6? [N] AccountSecurity.rootttylogins="N" # Q: What umask would you like to set for users on the system? [077] AccountSecurity.umask="077" # Q: Do you want to set the default umask? [Y] AccountSecurity.umaskyn="Y"

... gekürzt ...

Bastille-Linux kann Sie so sehr mächtig und leicht reproduzier- und dokumentierbar bei der Härtung Ihrer Linux-Systeme unterstützen. Sicherlich ist die Härtung eines Systems eine Aufgabe, die Sie nicht auf jedem System durchführen werden. Es empfiehlt sich jedoch für alle exponierten Systeme in der DMZ und Firewalls.

6.9 Mandatory-Access-Control-Systeme (MAC)

Leider unterstützt ein klassisches Linux-System nur ein sehr einfaches Rechte- Modell. So können der Benutzer root und der Eigentümer einer Datei die Rechte dieser Datei modifizieren. Dabei können die Rechte für den Eigentümer, eine Gruppe und alle weiteren Benutzer definiert werden. Mit modernen Dateisystemen könnenauchdiePOSIX-ACLsverwendetwerden(sieheTipp).Dannistesmöglich, auch mehreren Benutzern unterschiedliche Rechte zuzuweisen. Auch beim Einsatz der POSIX-ACLs haben Sie lediglich die Rechte r, w und x.Sie können also lediglich die Rechte für das Lesen, Schreiben und Ausführen verwalten. Weitergehende Rechte existieren nicht. Wünschenswert wäre die Möglichkeit, die Privilegien des Benutzers root einzelnen normalen Benutzern für bestimmte Aufgaben zukommen zu lassen. Obwohl dies seit Jahren mit dem Capability-System möglich ist, existierte bis zur Einführung von SELinux keine sinnvolle Administrationsoberfläche, die zum festen Bestand- teil von Linux geworden ist. Alle anderen verschiedenen Ansätze (LIDS, grsecurity, RSBAC etc.) sind nur als Patch verfügbar. Diese Systeme werden häufig auch als

161 open source library nee euzrLsrcta e Datei der zentral Rechte an die Eigentümer Leserecht der werden Benutzer wenn MAC-System anderen Selbst einem verwaltet. Bei Dateien alle machen. hier- für Fehler kann Eigentümer leicht werden Der Rechte auch (die definiert). bei definiert Eigentümers Rechte des ihre Diskretion Datei DAC- der einer ein entsprechend Eigentümer ist der Unix hier ab. da System, (DAC) klas- Discretionary-Access-Control-System dem als von Unix sie sischen setzt Dies bezeichnet. (MAC) Mandatory-Access-Control-Systeme 162 i eet ndmBc ItuinDtcinudPeeto i nr Co.« & 2 Snort mit Prevention und Detection »Intrusion von Buch behandelt. aber ausführlich dem wurde nicht (LIDS) in Buches System bereits dieses Detection Lei- Intrusion Rahmen mir erhöhen. Linux im Das Systeme Betriebssystems sinnvoll. dieser und des Besprechung möglich Sicherheit komplette eine die ist den stark der MAC-System können das Systeme auch bedeutet, als Derartige Das DAC- das dar. sowohl Systeme müssen. Datei erlauben zusätzliche eine Zugriff auf nur Zugriff stellen beim Linux dass zur für ist MAC-Systeme Teilweise Alle verlangt. möglich. Kennwort MAC-Systems von des weiteres Modifikation derartigen ein keine Laufzeit hierfür einen wird über Häufig Superuser. verfügen MAC-Systeme Alle verhindern. noch über Zugriff einem von das MAC-System, ip POSIX-ACLs Tipp: Tipp mdeAL unte,mse i a aesse i der mit Dateisystem das Sie müssen nutzen, zu Option ACLs die Um ACLs. Linux-Dateisysteme erweiterten aktuellen diese geschaffen, auch Alle inzwischen POSIX-ACLs beheben. unterstützen zu die Problem wurden bieten dieses Unix Betriebssysteme um Für andere Möglichkeit. Schreib- Viele mit diese werden. Gruppe weitere nicht ausgestattet eine kann und zu rechten Es Leserechten (others) möglich. mit Rest nicht Gruppe den ist eine Abstufung und weitere Gruppe Eine eine die verwalten. Eigentümer, nur, den es erlauben für Linux-Dateisysteme Rechte und Unix- klassischen Die Gentoo. und 4 RHEL 4, Bei- und zum 3 das Core derartiges Fedora sind ein spiel Aktuell bereits mitbringt. die vorkonfiguriert Distribution, MAC-System eine einfach Sie Verwenden /etc/fstab acl ndretpehne pleenoe ee i beim sie geben oder ein Spalte entsprechenden der in one.Hez rgnSedeOto ndrDatei der in Option die Sie tragen Hierzu mounten. root thne ueue ewle id diesen wird, verwaltet Superuser stehenden /etc/shadow uesnwre önedas könnte würde, zuweisen ätn ie Linux-Systems eines Härtung 6 root äshihres einem fälschlicherweise root unterschiedlichen 6.9 Mandatory-Access-Control-Systeme (MAC) library

Mount-Vorgang auf der Kommandozeile ein. Um das Dateisystem /home mit ACL-Optionen neu zu mounten, verwenden Sie den fol-

genden Befehl: open source

mount -o remount,acl /home

Nun können Sie für Dateien erweiterte ACLs definieren. Hierfür gibt es die Befehle setfacl und getfacl. Leider unterstützen die Be- fehle ls und chmod die ACLs nicht.

# ls -l datei -rw-r--r-- 1 root root 0 19. Sep 18:17 datei # setfacl -m u:test:rw datei # ls -l datei -rw-rw-r--+ 1 root root 0 19. Sep 18:17 datei # getfacl datei # file: datei # owner: root # group: root user::rw- user:test:rw- group::r-- mask::rw- other::r--

# setfacl -m u:test:rwx datei # setfacl -m m::rx datei # ls -l datei -rw-r-xr--+ 1 root root 0 19. Sep 18:17 datei # getfacl datei # file: datei # owner: root # group: root user::rw- user:test:rwx #effective:r-x group::r-- mask::r-x other::r--

Sobald Sie eine ACL einer Datei hinzugefügt haben, zeigt der Befehl ls bei den Rechten ein + an. Dieses zeigt Ihnen, dass weitere ACLs verborgen sind. Außerdem wird an der Stelle, an der üblicherweise die Gruppenrechte angezeigt werden, nun die Maske angezeigt. Diese Maske definiert die maximalen Rechte, die mit den ACLs

163 open source library 164 brrfn il akpPormekne ih i Csum- ACLs sichert mit So nicht gehen. können Backup-Programme Viele überprüfen. d i eA C L sn i c h ta k t i v .A u ß e r d e ms o l l t e nS i eI h r eB a c k u p - P r o g r a m m e aber enSeAL iste,sltnSedru ctn asdsDatei- Option das dass der achten, mit darauf immer Sie system sollten einsetzen, ACLs Sie hinausge- Wenn ACL aktiv. per nicht Maske automatisch werden die Rechte über henden Alle können. werden vergeben star verwenden. tar i Csnct ntlevon Anstelle nicht! ACLs die acl eone id nose sind Ansonsten wird. gemountet ätn ie Linux-Systems eines Härtung 6 tar önnSie können ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library i nrso-eeto-ytm ednaleeni wiGupneingeteilt: Gruppen zwei in allgemein werden Intrusion-Detection-Systeme Die eingelei- Reaktionen anschließend und werden. analysiert es tet Meldungen ist Haus Intrusion-Detection-Konzept die trotz einem Haus erfolgreiches dass das in ein erforderlich, wird Für Feuermelder erfolgt, niederbrennen. einem Feueralarm Alarms den mit des auf ist zu Reaktion Sie keine Missbrauchs Detec- Wenn Einbruch. Intrusion oder vergleichbar. den Die Achtung: Einbruchs nicht auszulösen. verhindert als Angriffs, Alarm tion einen Netzwerk eines Zweifel das Anzeichen im und sowohl auf zu analysieren Systeme, Rechner und verschiedenen erkennen die zu die auch Missbrauch versuchen und Hierzu Einbrüche melden. versucht, Detection Intrusion-Detection-Systeme Intrusion Die 7.1 im ebenfalls das Co.« & 2 ist. Snort erschienen mit mei- Verlag Prevention in Addison-Wesley und Sie Einführung Detection finden kurze »Intrusion Informationen eine Buch Weitere Ihnen nem geben. ich Technologien werde verschiedenen Folgenden Angriff die Im diesen in ab. (IPS) Erkennung der Intrusion-Prevention-System bei ein direkt einem wehrt nach meldet, nur diesen sondern schafft, Intrusion- Angriff Sicherheit ein zusätzliche Während keine (IDS) -Prevention-Systeme. Detection-System und Intrusion-Detection- helfen ausgeführt. Hier daher innen die können und werden! dass von passieren protokolliert mehr so werden oder nicht abgewehrt außen, Angriffe Firewall weder externe von Viele die nicht kann. müssen Angriffe gar abwehren Diese auch nicht Angriff ihn potenzieller Firewall Sie ein sind kommt aber lesen, Vielleicht Konfi- aufmerksam machen? der Fehler Buch in keinen dieses Erfahrung Sie einige werden dass sicher, bereits oder Sie Firewalls haben von Natürlich guration sicher? Firewall Ihre Ist 7 I I otaireIS(HIDS) IDS Hostbasierte (NIDS) IDS Netzwerkbasierte n -Prevention-Systeme und Intrusion-Detection-

open source library open source library inudPeeto i nr o« SN387-144 rcinnit möchte ist, verweisen. erschienen Titel 3-8273-2134-4) diesen ISBN auf Informationen Co.«, Detec- weitere & (»Intrusion für 2 Thema Verlag ich Snort zum Addison-Wesley mit mir Prevention von im und und hin- Buch ist tion ein Firewalls Einbruch bereits von Aufbau einen Detection der Intrusion auf Buches dieses oder Thema das ist Da harmlos nun muss Meldung Administrator die Der weist. un- ob melden. erkennen entscheiden, anschließend und sie wieder Protokolldateien Systeme die die Zustände. Benutzer Meldungen, analysieren ungewöhnliche angemeldeten Logsurfer bekannte hier die oder melden Logwatch Prozesse, und wie der Speicherverbrauch Anzahl den die oder überwachen HIDS Be- Andere Open-Source- an der möglich. mit Samhain Zahl nicht ist Tripwire mit Dies steigende von überwachen. möglich, Variante zu eine es zentral machen Jahren gleichzeitig Systeme Funktionen eingesetzte einigen mehrere intelligente autorisierte häufigsten seit nicht Sehr am eine vorweisen. Samhain die auf nutzern kann Zeit dies lange war, ob oder Tripwire Applikation war Nachdem entscheiden, erlaubt hinweist. dann System Datei Handlung müssen der ein Sie Modifikation analysieren Dateien. die Diese überwachten ob Verifier der bezeichnet). Integrity Änderungen File Assessment melden um Integrity und sich Werkzeuge System es sind handelt als bekanntesten Hierbei (auch Samhain. Die unterschiedlichste oder erkennen. auf Aide und zu Tripwire, beziehen wie verschiedene Einbruch Host viele einen existieren einem versuchen, Es von Weise Variabilität. Daten mehr ihre wesentlich die es Technologien, gibt HIDS den Bei er- signaturbasiert noch immer werden NIDS des Funktionen wesentlichen Die 2. Daten. mehr immer transportieren und schneller immer werden LANs Die 1. mit allem vor heute Vor- kämpfen Problemen. das und NIDS zwei auf Angriffe. Paket und bekannter jedes Angriffsmuster Signaturen analysieren von auf Sie handensein Gültigkeit, Netzwerk. ihre dem auf aus Netzwerkverbindung Daten jede ihre beziehen NIDS Die 166 eodnsn,bsetdnohdePolmtk asmitnrfrbekannte aufwändig. für zu Applika- nur häufig sämtlicher ist meist Überprüfung tionsprotokolle komplette dass Eine Problematik, existieren. besser die Signaturen wesentlich Angriffe dennoch Snort wie besteht IDS sind, modernen der geworden Signaturen die wenn Auch reicht. Hard- prozessorunterstützte übliche spezielle kann und Meist erfüllen erforderlich. enorm. sind nicht müssen. Netzwerkkarten sind Anforderungen umgehen Hardware 10-Gbit/s-Verkehr diese die oder ware an 1-Gbit/s- bedeutet, spezielle mit Anforderungen Das heute überwachen. Die über Netze, NIDS ganze NIDS die meist sollen Systeme, dass müssen Gleichzeitig mehrere aber Paket-Switching- werden. Daher NIDS angeschlossen die eine beobachten. erlaubt, Spanning-Ports Netzwerk meist zu oder im Rechner Network-Taps Verkehr daher jedem gesamten wird mehr nicht den LANs es die dieser eingesetzt, Technologie Realisierung die Für nrso-eeto-ud-Prevention-Systeme und Intrusion-Detection- 7 7.2 Intrusion-Prevention-Systeme library

Achtung

Bei allem Hype um Intrusion-Detection-Systeme sollten Sie nie ver- open source gessen, dass ein Intrusion-Detection-System nie gute Systemadmi- nistration, gutes Patchmanagement und eine gute Firewall ersetzen kann. Außerdem vereinfacht ein IDS nicht die weitere Administra- tion, sondern erhöht den Aufwand, da die Meldungen des IDS ana- lysiert und ausgewertet werden müssen. Denken Sie an den Feuer- melder, den niemand hört!

7.2 Intrusion-Prevention-Systeme

Im Juni 2003 erklärte die Beratungsfirma Gartner, dass IDS bis zum Jahr 2005 über- flüssig werden würden. Dies führte zu viel Verwirrung bei den führenden Anbie- tern von IDS und ihren potenziellen Kunden. Gartners Schlüsselaussage war, dass Firmen in Zukunft mehr Geld in ihre Firewalls investieren würden, um Angriffe abzuwehren, anstatt in IDS, um die erfolgreichen Einbrüche zu melden. Diese Aussage weist eine gewisse Logik auf. Jedoch existierten kaum Firewalls, die die Angriffe abwehren können, die ein Intrusion-Detection-System erkennen kann. Die Hersteller von IDS sahen hier ein neues Geschäftsfeld. Die Intrusion Prevention war geboren. Ein Network-Intrusion-Prevention-System (NIPS) ist die aktive und intelligente Kombination aus Firewall und IDS. Dabei wird der Verkehr von der Firewall gefil- tert, und bestimmte Protokolle werden zusätzlich von dem IDS analysiert. Sobald das IDS einen Angriff erkennt, erlaubt die Firewall nicht die Weiterleitung des Netzwerkpakets. Jeder namhafte Hersteller hat seit einigen Jahren NIPS-Produkte in seinem Portfolio. Genauso haben die Anbieter von HIDS die Entwicklung von Host-Intrusion- Prevention-Systemen begonnen. Diese erkennen zum Beispiel den Versuch einer Dateimodifikation und verhindern diesen direkt. Zusätzlich kann der betroffene Benutzer gleichzeitig abgemeldet werden, können erneute Anmeldungen unterbun- den werden oder ähnliche Maßnahmen von dem HIPS eingeleitet werden. Ein HIPS kann Prozesse beenden oder dafür sorgen, dass ein Prozess immer läuft. Sobald ein bestimmter Prozess versucht, andere unautorisierte Prozesse zu starten (zum Beispiel eine Shell), kann der Prozessaufruf unterbunden werden oder sogar der Elternprozess beendet werden. Die größte Schwäche dieser IPS sind falsch-positive Angriffserkennungen. Während dies bei einem IDS ärgerlich ist und mit Fine-Tuning recht gut in den Griff zu bekommen ist, ist dies bei einem IPS unverzeihlich. Die Netzwerkverbindung oder der Zugriff auf eine Datei werden effektiv unterbunden. Falls gerade wichtige, nicht wiederherstellbare Daten transportiert oder gespeichert werden sollen, kann ein IPS hohe Verluste erzeugen.

167 open source library nr o«asdmAdsnWse Verlag. Addison-Wesley dem aus Co.« & experimentieren 2 Systemen Snort derartigen mit bereits die heute möchten,empfehleichIhnenmeinBuch»IntrusionDetectionundPreventionmit Ergänzung Sie und sinnvolle Wenn eine dar. werden sie Firewall einer stellen zielsicherer zurückgeht, Zukunft Erkennung falsch-positiver in Gefahr Intrusion-Prevention-Systeme die Wenn 168 nrso-eeto-ud-Prevention-Systeme und Intrusion-Detection- 7 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library yiceFirewall-Konfigurationen Typische III Teil

open source library

seednEkr idw-eko-ieal) ae is ytm iienicht kann einige Systeme sein diese Firewall-Systeme Vorteile. haben unterschätzende diese zu Windows-Desktop-Firewalls), über Exkurs den etabliert. Meinung Zeit (siehe unterschiedlicher einiger seit man Firewalls lokale Obwohl sich haben Windows-Desktop-Bereich darstellen. Im Systeme Trojaner derartige und für Viren Rettung der den verfügen, die Zeitalter vor dies Im Firewall zusätzlich schützen. kann zentrale Firewall Datenbankserver) eine einmal eine (z.B. durch über noch Rechnern Rechner ganz anderen Sie spezielle nicht nicht wenn vielleicht häufig meist Sie Auch sie sind möchten getrennt. zentrale werden DMZ Firewall die untereinander einer einer auf Zumindest in von Einfluss geschützt. Systeme keinen Auch gut gar nehmen. so Root-Servern) können Netzes erwähnt, (z.B. des Einführung Rechnern Firewall der in einigen Netzwerk bereits Ihr bei Wie schon doch Sie haben? Sie gesichert wenn Firewall einrichten, einer Firewall mit Firewall? lokale lokale eine Sie eine Wieso sollten Wieso lokalen Ihre dass so 8.1 einrichten, Firewall die Sie wie werden. geschützt Ihnen, DNS-Server, Dienste ein zeigt oder steht. Kapitel (DMZ) sein Dieses Zone Das Provider demilitarisierten handelt. einem einer in Standalone-Rechner bei ungeschützt einen Root-Server in- relativ der insbesondere um ein ist Beispiel Rechner Das zum beim schützen. den kann sich zu vor es System Netz wenn Ihr lokalen teressant, um im nutzen, Benutzer lokal sind. anderer auch weiterge- vorhanden Zugriffen also ihn Linux-System Firewall-Funktionen kompletten die durch die anderen können dass die jedem Sie jedoch, Dabei Pakete, auf vergessen beschäftigt. sämtliche Anwender auch Firewall Viele der Firewall-Funktionalitäten hat. typischen Router, gefiltert einer einen wurden, mit um leitet uns sich wir es haben handelte Kapitel letzten Im 8 xus Windows-Desktop-Firewalls Exkurs: ielkl Firewall lokale Eine enn ite u isnBtibytmnkieMöglichkeit, Benutzer keine der Sobald Betriebsystemen schützen. diesen diese zu besonders Da auf Benutzer/Rechte-Konzept Firewall-Prozess bieten. es den nicht das gibt Wirklichkeit kennen, nicht in diese Windows-Betriebssysteme sie vorgau- Sicherheit konnten scheinbare eine kelten, Systeme diese 9x Während Windows ME. für und erschienen Windows-Desktop-Firewalls ersten Die

open source library open source library rabi ee,Pkt uversenden. zu Pakete geben, Erlaubnis selbst. 172 Prozess dem nur erlau- DNS-Server zu einem Pakete auf um Beispiel der zum nutzen, auch Sie dem Zusammenhang können auf diesen So ist, Mög- Iptables installiert ben. Netzwerk System kann die dem demselben läuft, Firewall auf mit Firewall Prozess lokalen Kommunikation die eine einer Da Prozess darf. Vorteil führen welcher wichtigste entscheiden, der zu ist lichkeit nach Meinung Meiner 1 W rvrahäsgnhe imldeGfh ie ibuh ndnKre e Betriebssystems des Kernel den in Einbruchs eines Gefahr die einmal hier vernachlässigen ir eaeennZgifafdsItre ucfht okne Sie ein- recht können erkennen. Wissen So Trojaner und entsprechendem durchführt. Spyware bei fach Internet Software Desktop-Firewall das welche einer auf mit und Zugriff ob einen je- nachzuvollziehen, gerade ist Möglichkeit Desktop-Firewall derartigen die einer doch Funktion schöne sehr Eine oe id anenAgefrac nkie inteinbrechen Dienst keinen in auch ange- Angreifer Dienst ein kein kann Wo wird, daran: boten Firewall Sie derar- Denken die Angriff. ein suggeriert gefährlichen Während ist, erfolgt. einen ungefährlich kann. Popup- Rechner vollkommen schließen die Portscan sie den schneller tiger Anwender Firewalls der auf manche als Zugriff öffnen Fenster, Portscan Popup- beliebiger einem ein ein Bei Mal sobald jedes Fenster, erzeugen verwendet. aber mehr Desktop-Firewall-Produkte nicht Bekannte gar Viele Rechner der den vollkommen er ist dass früher verängstigt, Möglicherweise ja so er auch sei. dass werde, und gewesen angegriffen seien häufig Ah- ungeschützt gefährlich so ja Angriffe haben denn die hat. Sie er ob (denn installiert warum Treffen Rechnern), Firewall jedem von derartige bei nung Sie eine er Woche be- fragt Windows-Desktop einer Anschließend einen vielleicht seit der Phänomen und Bekannten, das nutzt einen kennen haben Sie Sie auch: gegenüber. Windows- kritisch dem auf Desktop Systemen derartigen weiterhin ich stehe abschaltet. Dennoch Firewall die oder Programm Benutzer aufgerufenes Administrator- der ihm dass mit von werden, ein verhindert nicht so Benutzer kann arbeitet, der eine rechten wer- anschließend kann konfiguriert Hier Solange möglich. und den. NT installiert Windows Administratorrechten ab mit erst Firewall ist der der Administration Dies die sobald hat. auf bieten, Firewall mehr erst Zugriff umkonfigurieren. keinerlei also Benutzer Programme und normale diese entfernen können des Schutz beenden, Rechten Einen den Firewall mit die Programm dieses Benutzers kann aufruft, Programm ein ielkl Firewall lokale Eine 8 named 1 . die 8.2 Die Ketten library

ROUTING FORWARD open source Default Policy

Lokaler INPUT OUTPUT Prozess Default Policy Default Policy

Abbildung 8.1: Für die Filterung der lokalen Pakete sind die INPUT- und OUTPUT-Ketten zuständig.

8.2 Die Ketten Während auf einer Firewall, die als Router fungiert, vor allem die FORWARD-Kette der Filtertabelle betrachtet werden muss, sind für eine lokale Firewall die Ketten INPUT und OUTPUT der Filtertabelle interessant (siehe Abbildung 8.1). Jedes Paket von außen wird in der INPUT-Kette gefiltert. Jedes Paket, das auf dem System erzeugt wird und den Rechner verlässt, wird in der OUTPUT-Kette gefiltert. Wenn Sie möchten, dass ein System nur Verbindungen nach außen öffnen darf, dass aber keine Verbindungen von außen aufgebaut werden dürfen, können Sie folgende Regeln verwenden:

Listing 8.1: Diese lokale Firewall erlaubt alle ausgehenden Verbindungen.

# (1) Verwerfe alle nicht explizit akzeptierten Pakete $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP

# (2) Lösche alle Regeln in den INPUT- und OUTPUT-Ketten $IPTABLES -F INPUT $IPTABLES -F OUTPUT

# (3) Erlaube neue Verbindungsaufbauten nach außen $IPTABLES -A OUTPUT -m state --state NEW -j ACCEPT

# (4) Erlaube Antwortpakete und Fehlermeldungen für aufgebaute Verbindungen $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# (5) Erlaube aufgebaute Verbindungen nach außen $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

173 open source library itn .:Deelkl iealelutnrdnZgifafDSudHTTP. und DNS auf Zugriff den könn- nur Sie erlaubt lokale Firewall erlauben. lokale Ihre Dienste Diese beiden Internet. 8.2: diese Listing im nutzen: auf nutzen: Surfen Dienste Regeln Zugriff zum folgende zwei den hierfür HTTP lediglich nur ten Client daher und Ihrem soll Namensauflösung auf Firewall die möchten für Sie vor, DNS sich Sie Kapitel be- Regelwerks Stellen (siehe derartigen Kapitel eines eigenen Aufbau einem der werden. exemplarisch ist in sprochen nur erlaubt, wird soll Dienste nicht Iptables Hier dieser dann mit behandelt. Funktion um Dienste Die Filterung möglich. Beispiel diese Ihre nicht zum Firewall und Systems des Ihre sich Arbeiten bestimmte Wenn es einwandfreies Funktion NTP. ein handelt seine oder für Hierbei Da- DNS System kann. einschränken. Ihr DHCP, Dienste benötigen dass vergessen, bestimmte grundsätzlich nicht auf Dienste aber Zugriff Sie den sollten auch bei Sie können Natürlich .Deeltt ee idgr egse.Jdc ukineton i ihs Diese nichts. sie ohne funktioniert Jedoch vergessen. gern wird Regel letzte Diese 5. .Mtdee ee edndeAtotaee( Antwortpakete die werden Regel dieser Mit 4. Verbin- neue eine sie wenn OUTPUT-Kette, der in Pakete erlaubt Regel Diese 3. Damit OUTPUT. und INPUT Ketten den in Regeln vorhandenen alle löscht Dies OUTPUT 2. und INPUT Ketten der (Policies) Grundregeln die werden Zunächst 1. Aufgabe: folgende die haben Regeln Die 174 Pakete akzeptierten explizit DROP nicht INPUT alle -P Verwerfe $IPTABLES (1) # utnsael nhle endr.Dmtwr lodsesePktenrjeden einer Paket erste das der also in wird erlaubt. nicht Damit Verbindung noch darf. Verbindung sein derartige enthalten eine Zustandstabelle dass bedeutet, Das aufbauen. dung Regeln einzigen die sind. Regeln Ketten eingefügten diesen anschließend in die dass sichergestellt, Regel ist eine durch explizit nicht das Paket, jedes verworfen. wird, wird akzeptiert Damit gesetzt. DROP auf i nwr rectac e oae rzs,ae ee etr ae e lo- des Paket weitere jedes aber verworfen. Prozess, wird lokalen Prozesses den kalen auch und erreicht antwortet, Regel Antwort Rechner diese angesprochene die Wenn der beziehen. Verbindungsaufbau, ein Verbindungen erfolgt diese fehlt, auf sich die akzeptiert, dungen etet eni e ebnugtble(oncinTracking-Table, (Connection Verbindungstabelle der in wenn zeptiert, ip_conntrack eizndnStatus den besitzen etet anndeVridn ean s n i aeenctmh den mehr nicht Pakete die und ak- ist mehr bekannt Verbin- nicht zum Verbindung Drei Regel Paket die Status der eine nun von das da werden nur zeptiert, Pakete aufgebauten erlaubt weiteren einer Drei Alle zu Regel dungsaufbau. die Pakete, Die erzeugten gehören. lokal Verbindung weiteren alle akzeptiert Regel is ee elredne,wn i iedrVridne ndrVerbin- der in Verbindungen der eine ( sie betreffen dungstabelle wenn Fehlermeldungen, Regel diese NEW iepsed ebnuggfne id uedmakzeptiert Außerdem wird. gefunden Verbindung passende eine ) uwie.Al etrnlklezutnPkt ie Verbindung einer Pakete erzeugten lokal weiteren Alle aufweisen. ESTABLISHED RELATED ). .Mitden RELATED Pktnwre uhFehlermel- auch werden -Paketen ESTABLISHED nee ehe ak- Rechner anderer ) ielkl Firewall lokale Eine 8 /proc/net/ 32 ) 8.2 Die Ketten library

$IPTABLES -P OUTPUT DROP

# (2) Lösche alle Regeln in den INPUT- und OUTPUT-Ketten open source $IPTABLES -F INPUT $IPTABLES -F OUTPUT

# (3a) Erlaube neue DNS-Anfragen $IPTABLES -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT $IPTABLES -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT

# (3b) Erlaube neue HTTP-Verbindungen $IPTABLES -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

# (4) Erlaube Antwortpakete und Fehlermeldungen für aufgebaute Verbindungen $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# (5) Erlaube aufgebaute Verbindungen nach außen $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Zunächst ist der Aufbau der Regeln wieder identisch mit dem ersten Ansatz. Die Regeln unterscheiden sich nur in dem Punkt 3. Während wir in dem ersten Ansatz (Listing 8.1) jede neue ausgehende Verbindung erlaubt haben, werden hier die mög- lichen Verbindungen stark eingeschränkt. Zunächst erlaubt der Punkt 3a die DNS- Anfrage. Hier müssen Sie die DNS-Anfrage sowohl mit dem UDP- als auch mit dem TCP-Protokoll erlauben. DNS ist ein wenig ungewöhnlich. Es stellt zunächst immer die Anfrage in UDP. Können jedoch mit UDP nicht alle Daten übertragen werden, stellt der Client die Anfrage erneut mit TCP. Weitere Informationen finden Sie im Abschnitt 32.2. Der Punkt 3b erlaubt dann neue HTTP-Verbindungen. Da die Pakete mit dem Zustand neu in der OUTPUT-Kette akzeptiert werden, ist nicht der Aufbau neuer Verbindungen von außen möglich. Der Rest der Regeln gleicht wieder dem ersten Ansatz.

Achtung Wenn Sie derart eine lokale Firewall aufsetzen, sollten Sie nie ver- gessen, dass auch lokale Prozesse untereinander über ein lokales Netz kommunizieren. Sobald die lokalen Prozesse Internet-Sockets2 und nicht Unix-Sockets nutzen, werden hierbei auch Pakete erzeugt, die in der OUTPUT- und INPUT-Kette gefiltert werden. Wenn Sie nicht spezielle Regeln vorsehen, die diese Pakete akzeptieren, unter- binden Sie die lokale Kommunikation. Viele Dienste funktionieren dann nicht mehr!

2 Ein Unix-Socket ist eine lokale Datei im Verzeichnisbaum, die für die Kommunikation genutzt wird. Ein Beispiel ist /dev/log. Netzwerkverbindungen nutzen Internet-Sockets. Diese können auch von lokalen Prozessen für die lokale Kommunikation genutzt werden. Wenn Sie den Befehl telnet localhost aufrufen, kommunizieren Sie über einen derartigen Internet-Socket.

175 open source library itn .:Delkl iealshttennRoot-Server. einen schützt Firewall die lokale Sie Die können 8.3: befinden, Listing SSH-Server ein diesem auf auch sich nutzen: als und Regeln Webserver folgenden betreiben Verbindung ein Root-Server die einen Sie sowohl kön- Beispiel Port Sie System welchen zum aufgebaut. Firewall auf Sie außen Protokoll lokale Wenn von welchem erlauben. eine Verbindungen mit Sie entscheiden, neuen ungeschützten können aber die ansonsten nen hier hier einem Noch Auch werden auf haben. möchten. Nur Sie erkannt nutzen. schützen wenn Firewall Dienste Firewall, lokalen die lokale der System die Mächtigkeit die wird bereits wichtiger nun sollten Sie auch normalerweise Interface stellt diesem Daher möglich. auf dar. Interface Verkehrs Sicherheitsproblem dieses gesamten kein auf des Zugriff Akzeptanz Verkehr kein lokalen eine ist gesamten den außen Loopback-Device das Von Interface, das virtuelles transportiert. über ein der ist Dies Verkehr, wird. gesamten abgewickelt den akzeptieren ACCEPT Regeln -j Diese ACCEPT lo -j -o lo OUTPUT -i -A Verkehr INPUT $IPTABLES lokalen -A zu den $IPTABLES Sie Akzeptiere fügen # einfachsten hinzu: Am Firewall-Skripten Ihren HTTP-Verbindungen. im grundsätzlich Regeln und akzeptiert folgende Firewall Netz- DNS- Beginn Die deren nur werden. dass aber verworfen sicherstellen, nicht Moment Firewall Sie Ihrer müssen von diese funktionieren, werkpakete Damit weiterhin nutzt. Netzwerkfunktionen auch ebenfalls Dienste Dienste genutzte die lokal Oberfläche, existieren grafische Häufig eine nicht. wie meist jedoch genügt Regelsatz Dieser 176 Verkehr lokalen den Akzeptiere OUTPUT-Ketten (3) und # INPUT- den OUTPUT in -F Regeln INPUT $IPTABLES alle -F Lösche $IPTABLES (2) # Pakete DROP akzeptierten OUTPUT explizit DROP -P nicht INPUT $IPTABLES alle -P Verwerfe $IPTABLES (1) # Hinweis e we-ac.Dee idInndeAbi relc vereinfa- erheblich Arbeit über die Abschnitt chen. Ihnen nächsten wird imple- den Dieser Szenario noch Owner-Match. dieses bitte den Firewall Sie ist Ihrer lesen Szenario in wollen, Sie Dieses mentieren Wenn akzeptieren. selten. blind recht Netz- Verkehr aber deren den Sie dürfen nicht arbeiten, soll, natürlich Benutzer werden überwacht mehrere untereinander auch System werkverkehr Ihrem auf Wenn ielkl Firewall lokale Eine 8 lo 8.2 Die Ketten library

$IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT open source # (4a) Erlaube neue SSH-Verbindungen von außen $IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

# (4b) Erlaube neue HTTP-Verbindungen von außen $IPTABLES -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

# (5) Erlaube Antwortpakete und Fehlermeldungen für aufgebaute Verbindungen $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# (6) Erlaube aufgebaute Verbindungen nach außen $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Den Großteil der Regeln kennen Sie bereits. Die meisten Regeln wurden nicht ver- ändert. Hier nochmal ihre Funktion in aller Kürze:

1. Hier werden die Grundregeln für die Ketten INPUT und OUTPUT auf DROP gesetzt.

2. Hier werden alle möglicherweise vorhandenen Regeln in den Ketten INPUT und OUTPUT gelöscht.

3. Diese Regeln akzeptieren den gesamten lokalen Verkehr auf dem Loopback- Interface.

4. Die Punkte 4a und 4b erlauben schließlich neue SSH- und HTTP-Verbindungen von außen.

5. Diese Regel erlaubt alle Pakete ab dem zweiten Paket in einer aufgebauten Ver- bindung von außen.

6. Diese Regel schließlich erlaubt es, dass der lokale Rechner auf die von außen aufgebauten Verbindungen reagieren darf.

Mit einem derartigen Firewall-Skript können Sie sicherstellen, dass von außen nur die von Ihnen gewünschten Dienste auf dem System genutzt werden dürfen, un- abhängig von den installierten und gestarteten Diensten. Die lokale Nutzung der installierten Dienste ist davon aber nicht betroffen. Wenn Sie zusätzlich den Zugriff einschränken möchten und immer von einer be- stimmten IP-Adresse auf den SSH-Server zugreifen, können Sie dies durch eine einfache Änderung der Regel 4a erreichen:

REMOTE_ACCESS=3.0.0.1

# (4a) Erlaube neue SSH-Verbindungen von außen $IPTABLES -A INPUT -p tcp -s $REMOTE_ACCESS --dport 22 -m state --state NEW -j ACCEPT

177 open source library i ogneZieverwenden: Zeile folgende Sie ITBE AOTU monr-udonr51- tt -tt E jREJECT -j NEW --state state -m ACCEPT 501 -j --uid-owner NEW 501 owner --state UID -m state die OUTPUT -m hat -A 500 Otto $IPTABLES --uid-owner Benutzer 500 owner # UID -m die OUTPUT hat -A Ralf $IPTABLES Benutzer # ande- einen doch und Be- nun zulassen Benutzers alle ablehnen: es eines Benutzer da macht Verbindungen ren implementieren, neue Owner-Match nicht können Der Sie dies nutzen. möglich. Sie Source-IP-Adresse können dieselbe werden Mitteln verwehrt nutzer normalen Zugriff den dieser das Mit meh- auf Benutzern dem soll. Recht, anderen das auf während haben Terminalserver, Benutzer zuzugreifen, einen Einige Internet dürfen. betreiben arbeiten Sie gleichzeitig ver- Benutzer vor, Owner-Matches rere des sich Möglichkeiten Sie die Stellen Ihnen deutlichen. wird Beispiel erstes einfaches Ein sehen. Abschnitt Beispielregeln im einige Sie Sie können werden Owner-Match des Syntax genaue Pro- Die Versionen verwenden! die Kommandonamen Neue auch den für verwenden. auch Option nur Auswahl können diese Iptables zur natürlich jedoch von kann Sitzungsnummer Funktion ist Zusätzlich die diese Dies kann. oder Iptables hat. zessnummer anbieten da festzustel- erzeugt Pakete es möglich, Paket erzeugte erlaubt OUTPUT-Kette lokal ein Option der Gruppe Diese in welche Iptables-Option, können. oder nur eine nutzen Benutzer um OUTPUT-Kette welcher sich der len, es in handelt Sie Hierbei indem die einsetzen. verbessern, Zugriff weiter Owner-Match den diese den nur können die Sie Sie haben. aufgebaut, zugelassen Firewalls Dienste lokale bestimmte mächtige auf sehr bereits jetzt Owner-Match haben Der Sie 8.3 Option der Mit 178 ACCEPT -j NEW --state state -m benutzen ssh ssh --cmd-owner darf 500 und --uid-owner 500 owner UID -m die OUTPUT hat -A Ralf $IPTABLES der Benutzer Wenn # erlauben. Befehle Kommando dem bestimmte mit nur Verbindungen auch Dabei nur darf. Ralf nicht Ralf das Benutzer Benutzer Otto dem Ralf Benutzer Benutzer der Sie RELATED- der während können und nun dürfen, wird zugreifen ESTABLISHED- akzeptieren, Internet alle das OUTPUT-Kette auf und ansonsten INPUT- Sie der dass in Pakete achten, darauf Sie Wenn oreI-des ketetwerden! akzeptiert Source-IP-Adresse -s enee i,ds u eeSHVridne o dieser von SSH-Verbindungen neue nur dass Sie, definieren ssh ubundr,können darf, aufbauen 16.23 ielkl Firewall lokale Eine 8 ahee.Hier nachlesen. 8.3 Der Owner-Match library

Achtung

Allerdings müssen Sie diese Funktion mit Vorsicht genießen. Der open source Anwender kann sehr einfach versuchen, diese Funktion zu unter- laufen, da er einen beliebigen Befehl in sein Heimatverzeichnis un- ter dem Namen ssh kopieren und dort aufrufen kann.

Diese Funktion können Sie auch verwenden, um einen Server zusätzlich zu sichern. Wenn Sie zum Beispiel einen kombinierten Mail- und Webserver betreiben, so kön- nen Sie sicherstellen, dass lediglich der Mailserver Verbindungen nach außen auf- bauen darf und der Webserver nur Verbindungen entgegennimmt. Sollte es einem Angreifer gelingen, in den Webserver-Prozess einzubrechen, so verfügt er nicht über die Möglichkeit, zusätzliche Angriffswerkzeuge aus dem Internet nachzula- den.

Listing 8.4: Nur der E-Mail-Server darf eine Verbindung nach außen aufbauen. Dem Webserver ist dies untersagt.

# Der Webserver hat die UID 48 (apache) # Der E-Mail-Server hat die UID 89 (postfix)

# Der E-Mail-Server baut (mindestens) DNS- und SMTP-Verbindungen auf

$IPTABLES -A OUTPUT -m owner --uid-owner 89 -p udp --dport 53 -m state --state NEW -j ACCEPT $IPTABLES -A OUTPUT -m owner --uid-owner 89 -p tcp -m multiport --dport 25,53 -m state  --state NEW -j ACCEPT

# Der Webserver darf keine Verbindung aufbauen $IPTABLES -A OUTPUT -m owner --uid-owner 48 -m state --state NEW -j REJECT

Die in diesem Regelsatz verwendete Option multiport erlaubt die gleichzeitige An- gabe von bis zu 15 UDP- oder TCP-Ports. So können mehrere Regeln zu einer zu- sammengefasst werden und kann die Lesbarkeit erhöht werden. Weitere Hinweise zu multiport finden Sie im Abschnitt 16.22. Zum Abschluss möchte ich Ihnen noch ein komplettes Beispielskript für einen Root- Server vorschlagen. Sie können es entsprechend Ihren Wünschen natürlich anpas- sen:

Listing 8.5: Dieses Firewall-Skript schützt einen typischen Root-Server.

# # # Firewall-Skript für einen Root-Server # (c) Ralf Spenneberg 15. Juni 2005 #

179 open source library e N-evrbu ebnugnasBnte ae auf named Benutzer als ACCEPT Verbindungen -j named) baut NEW -u DNS-Server --state UID=$(id Der state # -m 53 Verbindungen --dport Ausgehende udp # -p INPUT -A $IPTABLES ITBE AIPT- c mmliot-dot2,38,4,9 mstate -m IMAPS 25,53,80,443,995 und --dport HTTPS multiport HTTP, -m DNS, tcp SMTP, -p für INPUT Verbindungen -A ACCEPT eingehende $IPTABLES -j Akzeptiere ACCEPT lo # -j -o lo OUTPUT Loopback-Schnittstelle -i -A der INPUT $IPTABLES auf -A Verkehr $IPTABLES Akzeptiere # DROP FORWARD DROP -P OUTPUT $IPTABLES DROP DROP -P auf INPUT $IPTABLES Default-Policy -P die $IPTABLES Setze Regeln" # "Setze $ECHO net.ipv4.icmp_echo_ignore_broadcasts=1 -w net.ipv4.tcp_syncookies=1 $SYSCTL -w Kernelparameter" $SYSCTL "Setze $ECHO Firewall" "Starte $ECHO erreichen zu SYSCTL=/sbin/sysctl DNS-Server Namensauflösung ECHO=/bin/echo anderen zur einen Variablen IPTABLES=/sbin/iptables DNS-Server eigenständig, E-Mail) Definiere lokalen versucht von # den Dienste Verschicken nutzt der (zum Dienst Keiner lokale # (Zeitsynchronisation) 25/tcp Jeder 53/udp 123/udp Port # und Port 53/tcp # Port SMTP # auf NTP 53/udp Zugriff # und benötigt DNS 53/tcp Root-Server # Port Dieser # 995/tcp # 25/tcp Port DNS Port # IMAPS 443/tcp # 80/tcp Port SMTP Dienste Port # folgende HTTPS die # bietet HTTP Root-Server # Dieser # 180 -tt E jACCEPT -j NEW --state ielkl Firewall lokale Eine 8  8.4 Kombination mit Gateway-Regeln

library $IPTABLES -A OUTPUT -p udp --dport 53 --m owner --uid-owner $UID -m state 

--state NEW -j ACCEPT 

$IPTABLES -A OUTPUT -p tcp --dport 53 --m owner --uid-owner $UID -m state open source --state NEW -j ACCEPT

# Der NTP-Server baut Verbindungen als Benutzer ntp auf

UID=$(id -u ntp) $IPTABLES -A OUTPUT -p udp --dport 123 --m owner --uid-owner $UID -m state  --state NEW -j ACCEPT

# Der SMTP-Server baut Verbindungen als Benutzer postfix auf

UID=$(id -u postfix) $IPTABLES -A OUTPUT -p tcp --dport 25 --m owner --uid-owner $UID -m state  --state NEW -j ACCEPT

# Alle bereits aufgebauten Verbindungen sollen erlaubt werden $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$ECHO "Firewall erfolgreich gestartet"

Tipp Wenn Sie das Skript auf mehreren Rechnern einsetzen wollen, kann es sein, dass der Benutzer postfix aufdiesenSystemeneineunter- schiedliche UID aufweist. Der Befehl id -u postfix ermittelt die ak- tuelle UID. So können Sie das Skript leichter auf weitere Systeme übertragen.

Dieses Skript sollte Ihnen genug Material für erste Experimente mit einer lokalen Firewall geben. Weitere Anregungen und Hinweise erhalten Sie in den fortgeschrit- tenen Kapiteln. 8.4 Kombination mit Gateway-Regeln

Sie werden nur in wenigen Umgebungen den idealen Fall antreffen, dass eine Fire- wall keinerlei eigene Dienste anbieten wird. In vielen Fällen wird mindestens noch ein SSH-Daemon für die Administration auf dem System installiert sein. In eini- gen Konstellationen wird sich auf der Firewall auch ein VPN-Produkt befinden, das einen VPN-Zugang in das interne Netz ermöglicht. Daher müssen Sie häufig auf einer klassischen Firewall, die als Gateway zwei Netze verbindet und den Verkehr kontrolliert, auch zusätzliche Regeln für die Filterung des lokalen Verkehrs vor- sehen. Diese Regeln unterscheiden sich kaum von den bisher betrachteten Regeln,

181 open source library done innen von $ADMIN SSH-Zugriff in do Adminrechnern PC den for Erlaube # getrennt Leerzeichen 192.168.0.17" durch 192.168.0.8 Liste ADMIN="192.168.0.5 Adminrechner, # Variable die nutzen Regeln Diese ACCEPT -j ACCEPT OUTPUT-Kette ACCEPT ESTABLISHED,RELATED -j und -j --state NEW INPUT- ESTABLISHED,RELATED state --state der --state -m state in state OUTPUT -m Verbindungen -m -A 22 aufgebauten INPUT $IPTABLES --dport bereits -A tcp alle $IPTABLES -p Erlaube $INTDEV # -i innen INPUT von -A werden. SSH-Zugriff $IPTABLES erlaubt innen Erlaube von # soll SSH-Server den auf Zugriff Ein vorhan- 8.6: Listing des Ende das an Regeln ist folgenden möglich: Dies mit der Skripts möchten. bereits Hinzufügen denen zugreifen das innen die durch von Firewall, einfach diesen Ihrer sehr auf Abschnitt und auf (siehe installieren Sie SSH-Server ist dass einen ausgestattet Fall, Regelsatz einfachen kompletten dem einem mit wir Beginnen über berücksichti- Firewall Regeln die sollten. Ihrer und dass Aufsetzen können beim berücksichtigen, gen Sie Tatsache die verfügt, die Netzwerkkarten zusätzlich mehrere Sie sollten jedoch 182 asn enSednZgifwie ishäknmctnudzmBipe nur Beispiel Sie zum verwenden: können und Regeln möchten, folgenden möchten lassen zu- die zugreifen einschränken innen innen weiter von von Zugriff Administrationsrechner SSH-Verbindungen bestimmte den nur internen Sie einfach der Wenn sehr entspricht lassen. Sie Variablen können dieser So Wert Netzwerkkarte. Der haben. definiert Firewall-Skript ITBE AIPT- P i$NDV- c -pr 2- tt -tt E jACCEPT -j NEW --state state -m 22 --dport tcp -p $INTDEV -i $PC -s INPUT -A $IPTABLES xus For-Schleife Exkurs: rc o e ukindrFrShef ratn önnSeden Sie können aufrufen: Kommandozeile erhalten, der For-Schleife auf der Befehl folgenden Funktion Ein- der einer einen Sie Angabe von Damit die druck wird. dabei durchlaufen da- erlaubt anschließend (und Korn-Shell) die und und Werteliste, Bourne-Shell Bash- der Prozesssteuerung der For-Schleife auch der Die mit Möglichkeiten For-Schleife. eine Ihnen auch bietet Shell Jede senbbb ] o nen wide ir oeh i done $i; echo do vier; drei zwei eins in i for eins ~]$ [spenneb@bibo $INTDEV i i ofnlc eet nIhrem in bereits hoffentlich Sie die , 5.14 ielkl Firewall lokale Eine 8 ,nnac noch auch nun ), 8.4 Kombination mit Gateway-Regeln library

zwei drei vier open source

So können Sie sehr einfach einen Befehl wiederholt mit unterschied- lichen Werten aufrufen. In dem Iptables-Listing oben wird der Iptables-Befehl mehrfach mit unterschiedlichen Source-Adressen aufgerufen. So wird für jede Source-Adresse eine Regel hinzuge- fügt, die eine SSH-Verbindung erlaubt.

Tipp Anstelle einer For-Schleife können Sie auch IP-Sets verwenden. Dies ist eine Weiterentwicklung des ehemaligen IP-Pools. Damit kön- nen Sie mehrere IP-Adressen in einer Regel verwenden. Leider un- terstützen noch nicht alle Distributionen automatisch diese Funk- tion, und Sie müssen den Kernel und den Iptables-Befehl patchen. Weitere Informationen über diese Funktion finden Sie im Kapitel 25.

Möchten Sie entsprechend den SSH-Zugriff von außen erlauben, so ersetzen Sie in der Regel -i $INTDEV durch -i $EXTDEV. Häufig wünschen die Administratoren und damit vielleicht auch Sie, Verbindungen von der Firewall in das Internet aufbauen zu können. Zumindest soll es möglich sein, von der Firewall zu Testzwecken mit dem Ping-Befehl die Konnektivität testen zu können. Das können Sie ganz einfach erreichen, in dem Sie die folgende Zeile hinzufügen:

# Erlaube Ping in das Internet $IPTABLES -A OUTPUT -o $EXTDEV -p icmp --icmp-type echo-request -m state  --state NEW -j ACCEPT

Möchten Sie, dass die Firewall auch angepingt (echo-request) werden kann, um die Erreichbarkeit der Firewall sowohl von innen als auch von außen testen zu können, benötigen Sie noch die folgende Zeile: # Erlaube, dass die Firewall per Ping getestet werden kann $IPTABLES -A INPUT -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT

Alle diese Regeln benötigen natürlich für eine korrekte Funktion zusätzliche Re- geln in der INPUT- und OUTPUT-Kette, die ESTABLISHED- und RELATED-Pakete akzeptieren. Nun sollten Sie über das Rüstzeug verfügen, um ein Standalone-Linux-System mit einer Firewall zu schützen. Außerdem können Sie ein Firewall-Gateway so konfigu- rieren, dass Sie lokale Dienste auf der Firewall nutzen können und diese Firewall selbst auf weitere Dienste zugreifen darf.

183

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library des neudn a eett asenDSSre e e rg ahder nach Frage der bei IP- DNS-Server dieser ein unter Internet dass im eine bedeutet, Adresse werden IP-Adresse Das externe Dienste angebunden. auf als Alle Zugriff Adresse erhält 3.0.0.1. direkter Paketfilter IP-Adresse Ein Der Zugriff statische realisiert. vorgesehen. Der feste nicht Proxy-Server notwendig. internen ist den E-Mail-Server dem Internet den über Aus das und wird sein. Proxy- Webserver möglich den den E-Mail-Server auf auf den Zugriff Internet und ein dem ist Web- erhalten aus Netz den soll Systeme auf Dabei Diese Zugriff 192.168.255.0/24. werden. Bereich ein dem betrieben aus Proxy-Server IP-Adressen ein private und Beispielfirma DNS- der cachender DMZ der Pa- Kühlaufwand. als In und System Platz- ein Geld-, mindestens bedeutet Paketfiltern Dies zwei mehr. ketfilter mit Hardwareaufwand Variante geringen relativ die einen benötigt Bein bedeutet, drittes als Implementierung die rend und (Abbildung (Abbildung Paketfiltern Vor- Paketfilters eines zwei auch Bein Implementie- schen drittes die wurden als soll DMZ Dabei Folgenden einer Im rung implementieren. erörtert. Varianten zu verschiedenen der DMZ Nachteile eine angesprochen, ten Kapitel im DMZ-Architekturen Bereits 9.1 implementie- zu diese Architek- um Firewall-Skripten, unterschiedliche der zeigt ren. Aufbau DMZ, den einer beispielhaft sondern und Aufbau turen DMZ, Systeme! den alle beschreibt der auf Kapitel in Zugriff Dieses Angreifer nicht noch der Webserver immer hätte das LAN, der internen auf sich im Zugriff Befände direkt keinen noch LAN. er einen interne hat in geschützte so erfolgreich sollte, Angreifer einer einbrechen ein Aufbau Rechner Wenn Dieser dieser Vorteile. Webserver). viele (z.B. bietet sollen Zone benöti- werden demilitarisierten Internet erreicht Rech- das Internet bestimmte auf vom Zugriff das oder unbeschränkteren in gen einen Netzwerk, die eigenes werden, ein ausgelagert ist ner (DMZ) Zone demilitarisierte Eine 9 www.nohup.info ubuenrDMZ einer Aufbau 3 Frwl-rhtkue«hbnwrvrcidn Möglichkei- verschiedene wir haben »Firewall-Architekturen« , i PArse3001zurückliefert. 3.0.0.1 IP-Adresse die Nohup.info 3.3 xmlrshdrhepetwre.Wäh- werden. durchgespielt exemplarisch ) oljwisenWb,enEMi,ein E-Mail, ein Web-, ein jeweils soll 3.2 )undalsNetzzwi-

open source library open source library SYSCTL=/sbin/sysctl IPTABLES=/sbin/iptables DMZDEV="eth2" Variable diese lautet EXTDEV="eth0" User-Mode-Linux von Einsatz INTDEV="tap0" Firewall Bei # die Achtung: für # Regeln die INTDEV="eth1" lädt 2004 Skript Dez Dieses 17. # : # Spenneberg Datum Ralf 0.1 # : Version: # Autor # # #!/bin/sh Varia- der Variablen zu Zusätzlich Skript zuweisen. Ihrem Werte in ble entsprechenden und die zuordnen Sie denen Netzwerkkarten definieren, die Sie hier übernehmen. sollten die Skript können Zunächst andere Sie jedes In entwickeln. in machbar. Skript auch einfach neues aber recht ein Vorschläge dies die vorgestellten jedoch auch um wir ist dieses werden wollen, und Kapitel erweitern besitzen diesem DMZ Paketfilter eine einen für für Firewall-Skript Funktionen zu einsetzen. ein eher Paketfilter bereits als ist Sie System Kühlung Falls ein und bereits Platz sowieso auf ja Bezug Sie Paketfilter. in da Ihrem gering, Aufwand vernachlässigen, in ist technische Netzwerkkarte Hardwareaufwand weitere zusätzliche Der der eine Auch DMZ. nur hierfür einer benötigen Variante Sie einfachste denn die demilitarisier- ist einer Implementierung Zone zur ten Paketfilters DMZ dreibeinigen mit des Paketfilter Variante Dreibeiniger Die 9.2 186 Varia- und Systeme anpassen alle entsprechend starten. nur für neu anschließend haben, Skript diese Ihr geachtet Sie darauf müssen Sys- verwenden, Beginn eigenen zu zu blen einem Proxy-Server Sie auf einen Wenn auch E-Mail-Server betreiben. als den E-Mail- tem vielleicht Sys- einen Sie ein Web-, möchten nur einen definieren. Später zunächst sowohl beherbergt. Variablen das Sie DMZ, Systeme installieren der Vielleicht und in Wartung. tem Dienste die verschiedenen später die erleichtert Das für Sie sollten Nun itn .:En rieng iealmtDMZ-Anschluss mit Firewall dreibeinige Eine DMZ die 9.1: die Listing über zu, Netzwerkkarte der Namen wird. den angebunden zunächst Sie weisen riablen INTDEV und EXTDEV ednwrnc ieVariable eine noch wir werden DMZDEV ewne.Dee Va- Dieser verwenden. ubuenrDMZ einer Aufbau 9 9.2 Dreibeiniger Paketfilter mit DMZ library

MAIL=192.168.255.2 WEB=192.168.255.3

DNS=192.168.255.4 open source PROXY=192.168.255.5 EXTERN=3.0.0.1

Tipp Auch wenn in unserem Skript für den DNS-Server eine eigene IP- Adresse vorgesehen wurde, ist es natürlich nicht erforderlich, die- sen auf eigener dedizierter Hardware zu installieren. Wenn Sie den DNS-Server auf derselben Hardware wie den Proxy-Server instal- lieren wollen, verwenden Sie einfach für beide Variablen dieselbe IP-Adresse!

Nun sollten Sie, bevor Sie irgendwelche Regeln hinzufügen, einen sauberen Grund- zustand erzeugen. # Setze Default-Regeln $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP

# Lösche die Filter-Tabelle $IPTABLES -F

# Lösche die NAT-Tabelle $IPTABLES -t nat -F

Beginnen wir nun mit den NAT-Regeln. Insgesamt müssen wir die folgenden NAT- Regeln konfigurieren:

1. Der Proxy muss auf das Internet zugreifen können.

2. Der cachende DNS-Server muss auf das Internet zugreifen können.

3. Der -Server muss auf das Internet zugreifen können.

4. Das Internet muss auf den Webserver zugreifen können.

5. Das Internet muss auf den E-Mail-Server zugreifen können.

Diese Anforderungen können mit den folgenden vier Regeln umgesetzt werden:

# (1) Proxy-Zugriff $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -s $PROXY -j SNAT --to-source $EXTERN

187 open source library ITBE tnt- RRUIG- ETE ptp- ETR -pr 5- DNAT -j 25 --dport $EXTERN -d tcp -p $EXTDEV -i PREROUTING -A außen nat von -t Mailserver-Zugriff $IPTABLES (5) # nAhniki e otumrefle ol uszstlc uhdsProtokoll das auch zusätzlich muss (Forwarding) werden. soll, angegeben Weiterleitung erfolgt erfolgen TCP die Dies Portnummer aber Die der werden. Da NAT-PREROUTING-Kette. Abhängigkeit modifiziert. entsprechend weitergeleitet in der nicht Pakete DMZ in dabei werden, Ziel-IP-Adresse die wird aufgebaut Portnummer der in 443 Austausch Webserver und einen und 80 durch von E-Mail- 25, Verbindungen den Ports bei dass der den auf dafür, Adresse auf sorgen oder die fünf die und durch Proxy außen, vier außen des Regeln nach Die Absenderadresse Ab- ersetzt. Verbindungsaufbau der Firewall originale einem (NAT) bei die Translation Mailservers Address wird des Network Dabei eine durch. führen Drei senderadresse bis Eins Regeln Die 80,443 --dport multiport -m $EXTERN -d tcp -p $EXTERN $EXTDEV --to-source -i SNAT PREROUTING -j -A $MAIL außen nat -s $EXTERN von -t $EXTDEV --to-source Webserver-Zugriff $IPTABLES -o SNAT (4) POSTROUTING -j # -A $DNS außen nat -s nach -t $EXTDEV Mailserver-Zugriff $IPTABLES -o (3) POSTROUTING # -A nat -t DNS-Zugriff $IPTABLES (2) # 188 ACCEPT -j ESTABLISHED,RELATED --state state -m Verbindungen FORWARD aufgebauten -A alle $IPTABLES Akzeptiere und # Verbindungen aufgebauten ge- sämtliche den die akzeptiert: Fehlermeldungen Regel, auch deren eine nun zunächst müssen benötigen Wir Regeln Diese für sind erforderlich. erlauben. Firewall-Regeln Verkehr Firewall aus Weitere wünschten Zugriff der verantwortlich. beim Internet Funktion Adressumsetzung das die die in und für Internet lediglich dem jedoch sind NAT-Regeln Die -odsiain$MAIL --to-destination $WEB --to-destination DNAT -j Tipp ie nee otbtebnmctn owr sac möglich, auch es wäre so modifizieren: zu auf möchten, Portnummer DMZ betreiben die der in Port Webserver anderen den einem Gründen bestimmten aus Sie Wenn ITBE tnt- RRUIG- ETE ptp- $EXTERN -d tcp -p $EXTDEV -i PREROUTING -A nat -t $IPTABLES -pr 0- NT-t-etnto $WEB:8080 --to-destination DNAT -j 80 --dport ubuenrDMZ einer Aufbau 9    9.2 Dreibeiniger Paketfilter mit DMZ library

Tipp

Denken Sie daran: Die Zustandsüberwachung der Iptables-Firewall open source macht es möglich, dass Sie immer nur die Verbindungsaufbauten filtern und anschließend alle ermaßen aufgebauten Verbindungen über eine einzige Regel akzeptieren. Nur Verbindungen, die Sie vor- her explizit erlaubt haben (im Status NEW), werden von dieser Re- gel zugelassen. Der Aufbau der Regeln wird so wesentlich einfacher und übersichtlicher.

Nun benötigen wir eine Regel, um von innen auf den Proxy und den Mailserver zuzugreifen. Der Port eines Proxys ist nicht so festgelegt wie zum Beispiel der Port beim Zugriff auf einen Web- oder E-Mail-Server. Hier werden vollkommen unter- schiedliche Portnummern verwendet. Der Squid-Proxy-Server verwendet zum Bei- spiel die Portnummer 3128/tcp als Standardport. Es ist sinnvoll, auch hierfür eine Variable zu Beginn des Skripts zu definieren: PROXYPORT=3128.DannkönnenSiediese Variable in Ihren Regeln nutzen und müssen bei einer Änderung nur zu Beginn des Skripts Änderungen vornehmen.

# Erlaube den Zugriff auf den Proxy $IPTABLES -A FORWARD -i $INTDEV -o $DMZDEV -d $PROXY -p tcp --dport $PROXYPORT -m state  --state NEW -j ACCEPT

# Erlaube den Zugriff auf den E-Mail-Server $IPTABLES -A FORWARD -i $INTDEV -o $DMZDEV -d $MAIL -p tcp --dport 25 -m state  --state NEW -j ACCEPT

Tipp Wenn der E-Mail-Server in der DMZ auch Dienste zum Abholen der E-Mail bereitstellt, müssen Sie die letzte Regel so erweitern, dass auch diese Funktion unterstützt wird. Das Post Office Protocol (POP-3) verwendet den Port 110, und das Internet Message Access Protocol (IMAP) verwendet den Port 143. Sinnvoller ist es aber, diese Dienste auf einem eigenen E-Mail-Server in dem internen Netz anzubieten und den E-Mail-Server in der DMZ nur als Relay zu nut- zen. Dann können Sie natürlich auch den Zugriff auf den E-Mail- Server in der DMZ auf den internen E-Mail-Server beschränken, denn alle internen Anwender benutzen für ihren E-Mail-Zugriff nur den internen E-Mail-Server. MAILINTERN=192.168.0.100

# Erlaube den Zugriff auf den E-Mail-Server $IPTABLES -A FORWARD -i $INTDEV -o $DMZDEV -s $MAILINTERN -d $MAIL -p tcp  --dport 25 -m state --state NEW -j ACCEPT

189 open source library ITBE AFRAD- DZE o$XDV- MI ptp-dot2 msae-saeNEW --state state -m 25 --dport tcp -p $MAIL -s $EXTDEV Internet -o 21,80,443 das $DMZDEV --dport auf -i multiport Zugriff FORWARD -m E-Mail-Server -A tcp dem $IPTABLES -p Erlaube $PROXY # -s $EXTDEV Internet state -o das -m $DMZDEV auf 53 -i Zugriff --dport FORWARD Proxy udp -A dem -p $IPTABLES Erlaube $DNS # -s $EXTDEV -o $DMZDEV -i FORWARD -A $IPTABLES ITBE AFRAD- DZE o$XDV- DS- c -pr 3- state -m 53 --dport tcp -p $DNS Internet -s im $EXTDEV Nameserver -o auf $DMZDEV Zugriff -i einen FORWARD DNS-Server -A dem $IPTABLES Erlaube der Zugriff in # einen DNS-Server auch Internet. natürlich cachender dem Systeme in eigener DNS-Server diese einen kein benötigen auf soll, Wenn werden Internet. betrieben Proxy das DMZ der und auf DNS-Server Zugriff der E-Mail-Server, einen der natürlich benötigen Weiteren Des 190 HTTPS-Server und dürfen. HTTP- zugreifen Ports FTP-, entsprechende auf auf auch sowohl Proxy Proxy der muss den sollen, über zugreifen Benutzer die Wenn jACCEPT -j ACCEPT -j NEW --state state -m ACCEPT -j NEW --state ACCEPT -j NEW --state Achtung ttsh eenfrdrri yaic ughnet n damit und ist, ausgehandelte schwer dynamisch sehr derartig es de- für Da Datenverbindung, Regeln werden. eigene statische ausgehandelt eine dynamisch Datei Ports zusätzlich übertragende ren und zu wird, jede terminiert 21 für TCP-Port Abschnitt dem (siehe auf üblicherweise betrachtet genauer wird Abschnitt Daher 32.10 eigenen Protokoll. einem kompliziertes in sehr es ein ist FTP-Protokoll Das rab e rnpr o -alasdrDZi a nen Netz $MAIL interne -s das $MAILINTERN in -d DMZ $INTDEV der -o aus $DMZDEV E-Mail -i von FORWARD Transport -A den Netz $IPTABLES interne Erlaube das # in DMZ der aus Regel Transport erlaubt: weitere den eine noch die auch natürlich erforderlich, dann ist Rückweg diesen Für (siehe E- Postfix-Mail-Relay derartigen Anhang eines dem Anhang in Aufbau neh- ist Postfix Der E-Mails mit Eingehende Weg. Mail-Relays weiterleitet. entgegengesetzten der Internet den in das sendet men E-Mail-Server in muss, den sie werden an der E-Mail gesendet DMZ, diese Internet E-Mail-Server das interne in der E-Mail eine Sobald ptp-dot2 msae-saeNW- ACCEPT -j NEW --state state -m 25 --dport tcp -p .Dee rtkl ewne ieSeeugvridn,die Steuerungsverbindung, eine verwendet Protokoll Dieses ). A erläutert. ) ubuenrDMZ einer Aufbau 9      9.2 Dreibeiniger Paketfilter mit DMZ library

unbekannte Ports zu definieren, gibt es die Stateful-Inspection. Diese kann den Inhalt der Steuerungsverbindung mitlesen und die

dynamisch ausgehandelten Ports erkennen. So können dann auto- open source matisch die ausgehandelten Datenverbindungen erlaubt werden. Sie müssen in Ihrem Skript dann nur noch die Steuerungsverbindung erlauben. Damit das funktioniert, müssen Sie noch das Kernelmodul ip_conn track_ftp laden:

MODPROBE=/sbin/modprobe $MODPROBE ip_conntrack_ftp

Wenn Sie auf Ihrer Firewall auch NAT verwenden, ist zusätzlich auch noch das weitere Kernel-Modul ip_nat_ftp erforderlich:

$MODPROBE ip_nat_ftp

Diese Zeilen fügen Sie am besten zu Beginn Ihres Skripts ein. Alle beobachteten Datenverbindungen werden dann auch mit dem Zu- stand RELATED versehen. Da Sie derartige Pakete in der FORWARD-Kette bereits akzeptieren, werden diese Verbindungen erlaubt. Weitere In- formationen über das FTP-Protokoll und die Kernelmodule erhalten Sie in Abschnitt 32.10. Nun fehlt noch der Zugriff aus dem Internet auf den Webserver und den E-Mail- Server. Diese Zugriffe sind jetzt sehr einfach zu konfigurieren und erfolgen analog den bereits definierten Regeln. Der Zugriff erfolgt von außen auf die Systeme in der DMZ. Ein NAT wurde bereits konfiguriert. Es bleiben die folgenden Firewall- Regeln:

# Erlaube dem Internet den Zugriff auf den E-Mail-Server $IPTABLES -A FORWARD -i $EXTDEV -o $DMZDEV -d $MAIL -p tcp --dport 25 -m state  --state NEW -j ACCEPT

# Erlaube dem Internet den Zugriff auf den Webserver $IPTABLES -A FORWARD -i $EXTDEV -o $DMZDEV -d $WEB -p tcp -m multiport --dport 80,443  -m state --state NEW -j ACCEPT

Grundsätzlich sollte nun die komplette Funktionalität des Skripts bereits gewähr- leistet sein. Sinnvollerweise werden jedoch noch ein paar Protokollregeln und Aus- nahmen hinzugefügt. Als Erstes sollten Sie sicherstellen, dass Anfragen auf dem Port 113/tcdp (identd) abgelehnt und nicht verworfen werden. Ansonsten kann es zu Verzögerungen beim Aufbau von FTP- und SMTP-Verbindungen kommen.

$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT

191 open source library itn .:En rieng iealmtDMZ mit Firewall dreibeinige Eine gute 9.2: Listing eine komplette aber das abgedruckt. dann ist Referenz Ihnen Folgenden zur einmal sollten Im noch geben. Skript vier- Skript Anpassungen eine Dieses eigene auch DMZ. und Sie für Ideen haben zwei Ausgangsposition Vielleicht noch mit können. Sie Firewall erweitern haben Skript beinige Sicherlich das sein. Sie fertig wie schließlich Wünsche, Skript das sollte Informationen Damit zusätzliche sinnvolle und Einbruchs komplettieren oder gut Angriffs bieten. eines sehr Analyse " Intrusion-Detection-System der ein DMZ: bei können der Regeln aus Diese " "Unerlaubt REJECT DMZ: --log-prefix -j der LOG $DMZDEV aus -j -i "Unerlaubt REJECT $DMZDEV INPUT --log-prefix -j -i -A LOG $DMZDEV INPUT $IPTABLES -j -i -A $DMZDEV FORWARD $IPTABLES -i -A der FORWARD $IPTABLES in DMZ -A Sie der sind in $IPTABLES Systemen Damit Ihren haben. auf oder erlaubt der Regelwerk Regeln erkennen. Ihrem aus zu Ihren in Verbindungen Probleme in für früh explizit sehr Regel analysieren. nicht Lage, derartige zu Sie eine Tag die noch haben pro DMZ, aber Zeit Einträgen ist die zehntausend aufschlussreich nicht mehreren Sehr wahrscheinlich der- mit einer Sie Protokolle von da jedoch werden, abraten, Pakete ich Regel möchte die grundsätzlichen von Internetanbindung nur Verbindungen Ihrer artigen für nach sie auch Je werden Regel aufsetzen. wurden. entsprechende außen hängen, akzeptiert eine Regeln Kette Sie Ihren möchten der von Möglicherweise Kette Ende der Vorfeld das im an nicht die Regeln " betreffen, diese innen: Sie von Da "Unerlaubt REJECT " --log-prefix -j innen: LOG $INTDEV von -j -i "Unerlaubt REJECT $INTDEV INPUT --log-prefix -j -i -A LOG $INTDEV INPUT $IPTABLES -j -i -A $INTDEV FORWARD $IPTABLES -i -A FORWARD $IPTABLES in -A Datenschutzrichtlinien die $IPTABLES auf zu Rahmenbedingungen. jedoch gesetzlichen sondern die Sie was und verwerfen, darüber, Achten Unternehmen zu Überblick Ihrem treiben. den nicht gerade immer Benutzer sollen, Sie behalten Ihre An- werden So Sinn, abgelehnt abzulehnen. es und wenn die macht protokollieren müssen, möchten, innen, verwenden warten von Protokoll Timeout erlaubtes einen fragen nicht auf ein nicht Benutzer auch die Benutzer internen Ihre Damit 192 Firewall die für Regeln die lädt 2004 Skript INTDEV="eth1" Dez Dieses 17. # : # Spenneberg Datum Ralf 0.1 # : Version: # Autor # # #!/bin/sh ubuenrDMZ einer Aufbau 9 9.2 Dreibeiniger Paketfilter mit DMZ library

# Achtung: Bei Einsatz von User-Mode-Linux lautet diese Variable # INTDEV="tap0" open source EXTDEV="eth0"

DMZDEV="eth2"

IPTABLES=/sbin/iptables SYSCTL=/sbin/sysctl MODPROBE=/sbin/modprobe

MAIL=192.168.255.2 WEB=192.168.255.3 DNS=192.168.255.4 PROXY=192.168.255.5 PROXYPORT=3128 EXTERN=3.0.0.1

# Lade die Kernelmodule für die Stateful-Inspection des FTP-Protokolls $MODPROBE ip_conntrack_ftp $MODPROBE ip_nat_ftp

# Setze Default-Regeln $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP

# Lösche die Filter-Tabelle $IPTABLES -F

# Lösche die NAT-Tabelle $IPTABLES -t nat -F

## NAT-Regeln ## # (1) Proxy-Zugriff $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -s $PROXY -j SNAT --to-source $EXTERN # (2) DNS-Zugriff $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -s $DNS -j SNAT --to-source $EXTERN

# (3) Mailserver-Zugriff nach außen $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -s $MAIL -j SNAT --to-source $EXTERN

# (4) Webserver-Zugriff von außen $IPTABLES -t nat -A PREROUTING -i $EXTDEV -p tcp -d $EXTERN -m multiport --dport 80,443 -j DNAT --to-destination $WEB

193 open source library ITBE AFRAD- ETE o$MDV- MI ptp-dot2 msae-saeNEW --state state -m 25 --dport tcp -p $MAIL NEW -d E-Mail-Server --state $DMZDEV den state -o auf -m $EXTDEV Zugriff 25 -i den --dport FORWARD Internet tcp -A dem -p $IPTABLES Erlaube $MAIL # -s Internet $EXTDEV das 21,80,443 -o auf --dport $DMZDEV Zugriff multiport -i den -m FORWARD E-Mail-Server tcp -A dem -p $IPTABLES Erlaube $PROXY NEW # -s Internet --state $EXTDEV das state -o auf -m $DMZDEV Zugriff 53 -i NEW den --dport FORWARD --state Proxy udp -A state dem -p $IPTABLES -m Erlaube $DNS 53 # -s --dport $EXTDEV tcp -o -p $DMZDEV $DNS -i Internet -s FORWARD im $EXTDEV -A Nameserver 25 -o $IPTABLES auf --dport $DMZDEV Zugriff tcp -i einen -p FORWARD DNS-Server $MAIL -A Netz dem -s $IPTABLES interne Erlaube $MAILINTERN 25 das # -d --dport in $INTDEV tcp DMZ -o -p der $DMZDEV ### $MAIL aus -i -d E-Mail FORWARD $MAILINTERN von -A -s Transport $IPTABLES $DMZDEV den # -o Erlaube $INTDEV # E-Mail-Server -i den FORWARD auf -A state Zugriff $IPTABLES -m den # E-Mail-Servers: 25 Erlaube internen --dport # eines tcp MAILINTERN=192.168.0.100 Verwendung -p # Bei $MAIL ### -d $DMZDEV -o E-Mail-Server $INTDEV den $PROXYPORT -i auf --dport FORWARD Zugriff tcp -A den -p $IPTABLES Erlaube $PROXY # -d $DMZDEV -o Proxy $INTDEV den -i ACCEPT auf FORWARD -j Zugriff -A ESTABLISHED,RELATED den $IPTABLES --state Erlaube state # DNAT -m -j Verbindungen FORWARD 25 aufgebauten -A --dport alle $IPTABLES $EXTERN Akzeptiere -d # Firewall-Regeln tcp ## -p $EXTDEV -i PREROUTING -A außen nat von -t Mailserver-Zugriff $IPTABLES (5) # 194 jACCEPT -j ACCEPT -j ACCEPT -j NEW --state state -m ACCEPT -j ACCEPT -j ACCEPT -j NEW --state state -m ACCEPT -j NEW --state state -m ACCEPT -j NEW --state ACCEPT -j NEW --state state -m $MAIL --to-destination ubuenrDMZ einer Aufbau 9 9.3 Optimierung mit benutzerdefinierten Ketten library

# Erlaube dem Internet den Zugriff auf den Webserver $IPTABLES -A FORWARD -i $EXTDEV -o $DMZDEV -d $WEB -p tcp -m multiport --dport 80,443

-m state --state NEW -j ACCEPT open source

# Lehne Identd-Anfragen ab $IPTABLES -A INPUT -p tcp --dport 113 -j REJECT

# Protokolliere alle anderen Anfragen von innen $IPTABLES -A FORWARD -i $INTDEV -j LOG --log-prefix "Unerlaubt von innen: " $IPTABLES -A FORWARD -i $INTDEV -j REJECT $IPTABLES -A INPUT -i $INTDEV -j LOG --log-prefix "Unerlaubt von innen: " $IPTABLES -A INPUT -i $INTDEV -j REJECT

$IPTABLES -A FORWARD -i $DMZDEV -j LOG --log-prefix "Unerlaubt aus der DMZ: " $IPTABLES -A FORWARD -i $DMZDEV -j REJECT $IPTABLES -A INPUT -i $DMZDEV -j LOG --log-prefix "Unerlaubt aus der DMZ: " $IPTABLES -A INPUT -i $DMZDEV -j REJECT

In seiner jetzigen Form ist das Skript bereits durchaus lang und wahrscheinlich im ersten Moment auch für den einen oder anderen Administrator durchaus un- übersichtlich. Im nächsten Abschnitt werden Sie sehen, wie diese Skripten lesbarer und wartbarer gestaltet werden können. Wir werden das Skript in Bezug auf seine Lesbarkeit und die Geschwindigkeit der Verarbeitung optimieren.

9.3 Optimierung mit benutzerdefinierten Ketten

Im letzten Abschnitt haben wir bereits ein recht umfangreiches Skript für eine drei- beinige Firewall mit DMZ entwickelt. Dieses Skript war bereits fast 100 Zeilen lang. Da das Skript für fast jede veränderliche Information (wie IP-Adressen) Variablen nutzt, ist eine weitere Wartung recht einfach. Dennoch ist es durchaus schwierig, einen Überblick zu behalten und den genauen Paketfluss nachzuvollziehen. Ein- facher kann das geschehen, wenn Sie sich Ihre eigenen Ketten für jede Funktion erzeugen. Iptables bietet, wie früher schon Ipchains, die Möglichkeit, neue Ketten mit einem eigenen Namen zu definieren und diese dann mit Regeln zu füllen. Diese benutzerdefinierte Kette weist mehrere Vorteile auf: I Sie können durch eine sinnvolle Strukturierung der Regeln und anschließend durch eine entsprechende Auswahl der Ketten die Gesamtzahl der auszuwer- tenden Regeln pro Paket senken und damit die Abarbeitung der Regeln pro Paket stark beschleunigen. Stellen Sie sich vor, Ihre Firewall verfügte über 100 Regeln. Davon beträfen jeweils 50 Regeln TCP- und UDP-Pakete. Im besten Fall trifft die erste Regel bereits auf das aktuell betrachtete Paket zu, im schlechtesten Fall aber erst die Regel 100. Dabei müssten Sie bei einem TCP-Paket die UDP- Regeln gar nicht betrachten und umgekehrt. Also erzeugen Sie sich zwei neue

195 open source library kit a asclc leKte öctuddnUzsadweehrtlt(siehe wiederherstellt Urzustand den und löscht Ketten Abschnitt alle tatsächlich das Skript, nListing in 196 ezn u ie eoaRda-ytmkn a u esilrctkomfortabel ACCEPT recht Befehl Beispiel auf zum dem ge- Ketten das mit System kann der Fedora/RedHat-System Ihrem Default-Policies einem die auf die Auf Sie setzen. sämtliche und Wenn zunächst löschen wollen arbeiten. Sie Firewall-Regeln Ketten beschäftigen, ladenen sollten benutzerdefinierten wollen, Implementierung die nachstellen praktischen wie Beispiele einer schauen, mit zunächst aber wir uns wir Bevor I I ae uzwrednRgl ik lodatsh iskne i möglicher- pro Sie senken. der weiter können schlechtesten Aufteilung Gesamtzahl Dies Im weitere Die drastisch. eine ist). werden. durch also UDP-Paket weise abgearbeitet sinkt oder Regeln Regeln TCP- auszuwertenden 51 ein Paket nur es aber ob müssen ja, Fall prüft Regel erste (die i Kette die esatdsFrwl-kit a ih nFrage. in nicht kompletter kam ein Firewall-Skripts denn Ver- des gewesen, Neustart zur ohne komplizierter wäre Netze ungleich Vorgang weiteren Dieser Ketten benutzer- war die konnten. benutzerdefinierte der Dadurch weiterarbeiten auch ungestört ein. in und Firma Regeln der Regeln Räume neuen waltung weiteren die die alle nur fügte dass und Skript sichergestellt, Raumes das dieses löschte Firewall-Regelsätze Kette der Auswahl definierten vordefinierte nach der fünf Benutzer Nach den anschließend anbot. das definiert und Internet Skript, das einfaches fragte auf ein der Raumnummer Raumes ich in dieses schrieb Rechner Kette, Zusätzlich der benutzerdefinierte wurden. Zugriff eigene den eine für Regeln implemen- Schulungsraum die Daher jeden verfügten. für Kenntnisse wer- geringe ich durchgeführt nur tierte oder Personen keinerlei von über die jedoch Firewall-Regeln den, sollte den Administration an Un- Die Änderungen dem in häufig Interneterforderlich. die waren das Themen, wurden, Netze auf verschiedenen geschult die der ternehmen Zugriff größeres Aufgrund auch im regeln. Labornetz ein und und dem untereinander kontrollieren für und Schulungsräume Netz Firewall Vertrieb einzelnen dem eine den der neben Personalverwaltung, vorzuneh- gebeten, sollte die ich Firewall Firewall-Regeln für Diese wurde benutzerdefinierten den aufzusetzen. Jahren mit an IT-Schulungsunternehmen einigen Umgebungen Veränderungen Vor bestimmten möglich, men. in leichter auch Ketten es ist Schließlich erzeugen: Ketten Les- drei der Beispiel mein_intern Optimierung zum eine können auch Sie Ihnen barkeit. erlauben Ketten benutzerdefinierten Die mein_udp Ketten: enSewse öhe,wsdeDZvrasndr,s üsnSenrnoch nur Sie müssen so darf, schauen. Regeln. verlassen Kette der DMZ eine Gruppierung die in logische was eine möchten, Ihnen wissen Sie erlaubt Wenn Dies Kette. jeweilige die in ohi e rgnlnKtepüe,o ssc menTPPkthnet Dann handelt. TCP-Paket ein um Kette sich die es in ob Sie prüfen, springen Kette originalen der in noch 5.2 B.1 u idIrPkti etnFl o e ee wibrisakzeptiert bereits Zwei Regel der von Fall besten im Paket Ihr wird Nun . mein_udp mein_tcp oadenPktasdmetpehne ezkmt pignSie springen kommt, Netz entsprechenden dem aus Paket ein Sobald . ). u Seite auf evc palsstop Iptables service und n leUPRgl ndeKette die in UDP-Regeln alle und 98 mein_tcp ewne.I nagfidnSenc i ausführliches ein noch Sie finden Anhang Im verwenden. mein_tcp ncleedvrcibnSeal C-eenin TCP-Regeln alle Sie verschieben Anschließend . ndmadrnFl pignSei i Kette die in Sie springen Fall anderen dem In . rogn nose önnSeenSrp wie Skript ein Sie können Ansonsten erfolgen. mein_udp mein_extern u üsnSenur Sie müssen Nun . ubuenrDMZ einer Aufbau 9 , mein_dmz und 9.3 Optimierung mit benutzerdefinierten Ketten library

Hinweis

Dieses Skript zum Stopp der Firewall ist auch auf der CD in dem open source Ordner Beispielskripte enthalten.

Sie können eine neue benutzerdefinierte Kette mit dem Befehl iptables erzeugen. Hierzu verwenden Sie einfach:

[root@bibo ~]# iptables -N meinekette [root@bibo ~]# iptables -vnL Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 93 packets, 58921 bytes) pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 92 packets, 7147 bytes) pkts bytes target prot opt in out source destination

Chain meinekette (0 references) pkts bytes target prot opt in out source destination

Sie sehen am unteren Ende der Ausgabe des Befehls iptables -vnL Ihre neue Kette. Sofort fällt auf, dass diese Kette scheinbar keine Policy hat. Anstelle der Policy wird hier die Anzahl der Referenzen angegeben. Damit Sie erkennen, was eine Referenz ist, erzeugen wir nun eine Regel, die die Kette nutzt:

[root@bibo ~]# iptables -A INPUT -j meinekette [root@bibo ~]# iptables -vnL Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 654 packets, 243K bytes) pkts bytes target prot opt in out source destination 299 38464 meinekette all -- * * 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 649 packets, 60506 bytes) pkts bytes target prot opt in out source destination

Chain meinekette (1 references) pkts bytes target prot opt in out source destination

197 open source library idi e eeezälri e Kette der in Referenzzähler dem in wird uhezue.HefrvrednSeldgihdeOption die diese lediglich Sie Sie wie verwenden entfernen, Hierfür genauso erzeugen. Sie auch können Kette benutzerdefinierte Die entfernen. hi enkte( references) (0 meinekette Chain bytes) 135K packets, 1455 ACCEPT (policy OUTPUT Chain bytes) 612K packets, 1427 ACCEPT (policy INPUT Chain bytes) 0 packets, 0 ACCEPT (policy FORWARD Chain ~]# [root@bibo ~]# [root@bibo Referenz: die wir löschen Dann ~]# diese [root@bibo für Suchfunktion keine gibt Es löschen. Kette zuerst dieser mit Sie Verknüpfung Referenz.Siekönnensichnurdurchden müssen eine noch Diese dass hingewiesen, existiert. darauf Sie werden Hier links many Too iptables: ~]# [root@bibo Kette die auf die vorhanden, Regel eine nun ist INPUT Kette der In 198 Kette benutzerdefinierte eine Sie Befehl: dass folgenden den Möglichkeit, es die gibt Hierzu auf gesagt. können. Ketten Verweis umbenennen benutzerdefinierten der der Administration bleibt zur Es alles fast schon ist Damit meinekette -X meinekette iptables -F ~]# iptables [root@bibo empty ~]# not [root@bibo Directory benut- iptables: die kann Kette ~]# der Flush [root@bibo dem nach fehlschla- Erst wieder werden. ist. Versuch gelöscht leer der Kette nicht wird zerdefinierte noch löschen, Kette zu die Kette da die gen, versuchen, nun Sie Wenn oag i Kette die Solange es.Ddrhwr i Kette die wird Dadurch weist. u üe i e Kette der wir fügen Nun ksbtstre rtoti u oredestination destination destination source out destination source in opt prot out source target in bytes opt pkts prot out source target in bytes opt pkts prot out target in bytes opt pkts prot target bytes pkts RPal- .../ 0.0.0.0/0 0.0.0.0/0 * * -- all DROP 0 0 pals-vnL iptables INPUT -F iptables DROP -j meinekette -A iptables meinekette -X iptables pals- meinekette -X iptables meinekette meinekette ohignw eeezetwr,kne i is nicht diese Sie können wird, referenziert irgendwo noch meinekette uähten ee hinzu: Regel eine zunächst meinekette grep nenrwiee et eeezet Dies referenziert. Kette weiteren einer in Bfh nesüznlassen. unterstützen -Befehl angezeigt. -X . ubuenrDMZ einer Aufbau 9 meinekette ver- 9.3 Optimierung mit benutzerdefinierten Ketten library

[root@bibo ~]# iptables -E meinekette neuername

Eine Frage ist aber dennoch offen: Was passiert am Ende der benutzerdefinierten open source Kette, wenn es keine Standardrichtlinien (Policy) gibt? Antwort: Die benutzerdefi- nierte Kette arbeitet ähnlich einem Unterprogramm. Nach ihrer Abarbeitung springt sie in die aufrufende Kette zurück, die weiter abgearbeitet wird. Wenn Sie dieses Verhalten verhindern möchten, müssen Sie am Ende der benutzerdefinierten Kette eine eigene Regel vorsehen, die alle nicht von expliziten Regeln betrachteten Pakete betrifft. Das könnte zum Beispiel der folgende Iptables-Befehl erreichen: [root@bibo ~]# iptables -A meinekette -j DROP

Diese Regel würde alle weiteren Pakete in dieser Kette verwerfen. Ein Rücksprung in die aufrufende Kette würde nicht mehr erfolgen, da für alle Pakete in dieser Kette eine Entscheidung getroffen wurde. Ob Sie die restlichen Pakete verwerfen (DROP), ablehnen (REJECT) oder akzeptieren (ACCEPT) hängt sicherlich von der Logik Ihrer Firewall ab. Genauso kann es jedoch sein, dass Sie bei bestimmten Paketen einen sofortigen Rücksprung in die aufrufende Kette veranlassen möchten. Auch dies ist möglich. Hierfür gibt es das Ziel RETURN. Damit können Sie die benutzerdefinierte Kette sofort verlassen und in der aufrufenden Kette die weiteren Regeln betrachten. [root@bibo ~]# iptables -A meinekette -j RETURN

9.3.1 Anwendung der benutzerdefinierten Ketten Nun wollen wir die benutzerdefinierten Ketten nutzen, um das Skript der dreibei- nigen Firewall übersichtlicher und wartbarer zu gestalten. Wenn Sie das entspre- chende Kapitel nicht gelesen haben, möchte ich Ihnen nun ans Herz legen, es kurz querzulesen, so dass Sie den Sinn des folgenden Skripts und des Umbaus kennen. Zunächst sollten wir uns überlegen, welche Ketten wir benutzerdefiniert anlegen möchten. Es gibt grundsätzlich mehrere konzeptionelle Möglichkeiten:

1. Wir erzeugen für jedes Netz eine Kette. In dieser Kette wird definiert, welche Verbindungen das Netz aufbauen darf. Dies trennt die Regeln also entsprechend der Herkunft der Verbindungen auf. Die drei Ketten heißen dann: DMZ, LAN und INTERNET. 2. Wir erzeugen für jedes IP-Protokoll eine Kette. So gibt es drei Ketten: TCP, UDP und ICMP. Dies kann in bestimmten Umgebungen von Vorteil sein. Hier ist es das sicher nicht. 3. Wir erzeugen für jeden Informationsfluss eine Kette. Das bedeutet, dass wir eine Kette für den Zugriff auf unseren Webserver erzeugen, eine Kette für den E-Mail-Verkehr und eine Kette für den Proxy. Sobald wir Änderungen an der Art und Weise der E-Mail-Zustellung vornehmen wollen, müssen wir nur in der entsprechenden Kette die Änderungen vornehmen.

199 open source library nlsv e A-eenuvrnetüenme n ncleeddebenut- die anschließend erzeugt. und Ketten übernommen zerdefinierten unverändert NAT-Regeln der inklusive a Skript Das aedeKremdl ü i ttflIseto e FTP-Protokolls des Stateful-Inspection die für Kernelmodule ip_conntrack_ftp die $MODPROBE Lade # EXTERN=3.0.0.1 PROXYPORT=3128 PROXY=192.168.255.5 DNS=192.168.255.4 WEB=192.168.255.3 MAIL=192.168.255.2 MODPROBE=/sbin/modprobe SYSCTL=/sbin/sysctl IPTABLES=/sbin/iptables DMZDEV="eth2" Variable diese lautet EXTDEV="eth0" User-Mode-Linux von Einsatz INTDEV="tap0" Firewall Bei # die Achtung: für # Regeln die INTDEV="eth1" lädt 2004 Skript Dez Dieses 17. # : # Spenneberg Datum Ralf 0.1 # : Version: # Autor # # #!/bin/sh dem bei Eins, Fall den möchte Erläuterung verwenden, weitere Firewalls die zukünftigen für Ketten wähle Ihre drei Ich für überlassen. Sie Ihnen Konzepte ich drei der Welche 200 Achtung 9.2 (DMZ sitnctmgih ieKette eine möglich, nicht ist Es heKte ewne drjdrKteennBcsae voran- Buchstaben einen für Kette jeder Großbuchstaben oder Sie stellen. verwenden indem Ketten vermeiden, Namens- Ihre einfach diese können sehr Sie ist. konflikte belegt bereits Schlüsselwort dieses da annnugshibnwre.Dbiwre i rtnZeilen ersten die werden Dabei werden. umgeschrieben nun kann , LAN und INTERNET reg werden. erzeugt ) icmp uezue n ubenutzen, zu und erzeugen zu ubuenrDMZ einer Aufbau 9 9.3 Optimierung mit benutzerdefinierten Ketten library

$MODPROBE ip_nat_ftp

# Setze Default-Regeln open source $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP

# Lösche die Filter-Tabelle $IPTABLES -F

# Lösche die NAT-Tabelle $IPTABLES -t nat -F

## NAT-Regeln ## # (1) Proxy-Zugriff $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -s $PROXY -j SNAT --to-source $EXTERN # (2) DNS-Zugriff $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -s $DNS -j SNAT --to-source $EXTERN

# (3) Mailserver-Zugriff nach außen $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -s $MAIL -j SNAT --to-source $EXTERN

# (4) Webserver-Zugriff von außen $IPTABLES -t nat -A PREROUTING -i $EXTDEV -p tcp -d $EXTERN -m multiport --dport 80,443  -j DNAT --to-destination $WEB

# (5) Mailserver-Zugriff von außen $IPTABLES -t nat -A PREROUTING -i $EXTDEV -p tcp -d $EXTERN --dport 25 -j DNAT  --to-destination $MAIL

# Erzeuge benutzerdefinierte Ketten $IPTABLES -N DMZ $IPTABLES -N LAN $IPTABLES -N INTERNET

## Firewall-Regeln # Akzeptiere alle aufgebauten Verbindungen $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Nun können die Regeln auf die Ketten verteilt werden und die Ketten angesprun- gen werden.

################################################## # # Zugriff aus dem LAN #

201 open source library urf u e Internet dem aus ACCEPT # " Zugriff -j DMZ: # NEW der --state # aus state "Unerlaubt REJECT -m ######################################## DMZ --log-prefix -j 25 der LOG DMZ --dport aus -j -A tcp Zugriffe DMZ $IPTABLES -p anderen -A Internet $MAIL alle $IPTABLES das -s Protokolliere auf $EXTDEV # Zugriff -o den DMZ E-Mail-Server state -A dem -m $IPTABLES Erlaube 21,80,443 # --dport ACCEPT multiport -j -m ACCEPT NEW tcp -j --state -p NEW state Internet $PROXY --state -m das -s state 53 auf $EXTDEV -m --dport Zugriff -o 53 udp den DMZ --dport -p Proxy -A tcp $DNS dem Internet $IPTABLES -p -s Erlaube im $DNS $EXTDEV # Nameserver -s -o auf $EXTDEV DMZ Zugriff -o -A einen DMZ $IPTABLES DNS-Server -A dem $IPTABLES state Erlaube -m # 25 --dport tcp Netz -p ### interne $MAIL das -s in $MAILINTERN DMZ -d der $INTDEV aus -o E-Mail DMZ von -A Transport $IPTABLES den # Erlaube DMZ # der aus # Zugriff " # innen: # von "Unerlaubt REJECT ################################################### --log-prefix -j innen LOG LAN von -j -A state Anfragen LAN $IPTABLES -m anderen -A 25 alle $IPTABLES --dport Protokolliere tcp # -p $MAIL -d ACCEPT $MAILINTERN -j -s NEW $DMZDEV E-Mail-Server --state -o den state LAN auf -m -A Zugriff 25 $IPTABLES den --dport # E-Mail-Servers: Erlaube tcp internen # -p eines MAILINTERN=192.168.0.100 $MAIL Verwendung # -d Bei E-Mail-Server $DMZDEV ### den -o auf LAN Zugriff -A den $IPTABLES Erlaube # ITBE ALN- DZE d$RX ptp-dot$RXPR msae-saeNEW --state state -m $PROXYPORT --dport tcp -p $PROXY -d Proxy $DMZDEV den -o auf LAN Zugriff -A den $IPTABLES Erlaube # 202 -tt E jACCEPT -j NEW --state ACCEPT -j NEW --state ACCEPT -j NEW --state ACCEPT -j ubuenrDMZ einer Aufbau 9     9.3 Optimierung mit benutzerdefinierten Ketten library

# Erlaube dem Internet den Zugriff auf den E-Mail-Server $IPTABLES -A INTERNET -o $DMZDEV -d $MAIL -p tcp --dport 25 -m state --state NEW -j ACCEPT open source

# Erlaube dem Internet den Zugriff auf den Webserver $IPTABLES -A INTERNET -o $DMZDEV -d $WEB -p tcp -m multiport --dport 80,443 -m state  --state NEW -j ACCEPT

# Rufe die Ketten auf

# FORWARD $IPTABLES -A FORWARD -i $INTDEV -j LAN $IPTABLES -A FORWARD -i $DMZDEV -j DMZ $IPTABLES -A FORWARD -i $EXTDEV -j INTERNET

# INPUT $IPTABLES -A INPUT -p tcp --dport 113 -j REJECT $IPTABLES -A INPUT -i $INTDEV -j LAN $IPTABLES -A INPUT -i $DMZDEV -j DMZ

Wenn Sie sich nun Ihre FORWARD-Kette ansehen, werden Sie feststellen, dass diese sehr übersichtlich geworden ist. Es sind nur noch 4 Regeln vorhanden:

[root@bibo ~]# iptables -vnL FORWARD Chain FORWARD (policy DROP 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0  state RELATED,ESTABLISHED 0 0 LAN all -- eth1 * 0.0.0.0/0 0.0.0.0/0 0 0 DMZ all -- eth2 * 0.0.0.0/0 0.0.0.0/0 0 0 INTERNET all -- eth0 * 0.0.0.0/0 0.0.0.0/0

Sie können sehr leicht feststellen, welchen Weg ein neues Verbindungsaufbaupaket durch Ihr Regelwerk nimmt. Denken Sie daran, dass alle Pakete, die zu aufgebau- ten Verbindungen gehören, bereits von der ersten Regel in dieser Kette akzeptiert werden. Alle Verbindungsaufbauten werden entsprechend der Netzwerkkarte, über die diese Pakete eingehen, auf die verschiedenen Ketten verteilt. Erreicht das Paket über die Netzwerkkarte eth2 das System, so wird es an die Kette DMZ übergeben, die das Paket prüft, gegebenenfalls akzeptiert oder protokolliert und verwirft. Falls Sie nun die genauen Regeln betrachten möchten, die das Paket dann prüfen, so genügt es, die Kette DMZ anzuzeigen.

[root@bibo ~]# iptables -vnL DMZ Chain DMZ (2 references)

pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * eth0 192.168.255.4 0.0.0.0/0  tcp dpt:53 state NEW

203 open source library eeni e Kette der in Regeln adl ssc eilc mve eeni der in Regeln Nun vier Zeit. um kostet Regeln lediglich Dies 10 wäre. sich von worden es Firewall-Skript akzeptiert alten es handelt Internet bevor beim dem Optimierung müssen, hätte aus die werden möchte, Verbindung betrachtet für starten neue etwas eine Webserver nun das auch dem Ihnen Paket, zu aber Ein sollte wir getan. Lesbarkeit haben Geschwindigkeit puncto der Gleichzeitig in sein. Ketten geworden benutzerdefinierten klar der Vorteil Der oldeFrwl ü i nennSseei A eaevridr.Sekönnen 204 Sie verhindern. gerade LAN Dies im stehen. Systeme Internets internen des ein die Zugriff muss für (eingeschränkten) wer- Firewall DMZ im akzeptiert die der Systeme Risiko jedes soll in die als auch da Systemen immer aber muss, den Einbruch DMZ, den Bei anschließendem der erreichen. mit in Angriff LAN System möglicher internen jedes kann dem aus System, in das Firewall über System dreibeinigen dem Kontrolle in einer die Beispiel Konfi- von so (zum einen Angreifer er Software System der verwendeten dem Erlangt der findet. auf Schutz. in Linux-Kernel) Angreifer ordentlichen Bug ein recht einen dass oder einen Gefahr, gurationsfehler bereits die bietet immer DMZ besteht Jedoch mit Paketfiltern Firewall zwei mit dreibeinige DMZ Eine 9.4 udr eenvr i i iai-ecwniki i aeevrretnsoll. darstellen. verarbeiten Nadelöhr ein Pakete wohl die sehr Firewall Gigabit-Geschwindigkeit das die mit nicht kann mehreren die Hier ist mit der vor, Firewall häufig Bandbreiten eine Regeln aber die und hundert sich sondern minimal, Sie Stellen Pakettransport, nur Netzwerkverbindungen. beim beteiligten Vorteil Nadelöhr der das ist Firewall-System Regelzahl geringen derart EETal- .../ 0.0.0.0/0 0.0.0.0/0 * * -- all REJECT 0 0 O l -**000000.0.0.0/0 0.0.0.0/0 * 0.0.0.0/0 * -- 192.168.255.5 all eth0 LOG * 0 -- tcp 0 ACCEPT 0 0 CETup- t012182540.0.0.0/0 192.168.255.4 eth0 * -- udp ACCEPT 0 0 CETtp- t012182520.0.0.0/0 192.168.255.2 eth0 * -- tcp ACCEPT 0 0 Hinweis naldrPüugnelutjdc iegoeAshtugdes Abschätzung grobe eine jedoch Die Aufwands. erlaubt sind. möglich Prüfungen nicht der Berechnungen alle Anzahl objektive nicht son- dass leider Pakets, so dauern lang, des Prüfungen gleich Diese Eigenschaft mehrere. eine gleich nur meist son- dern Die nicht interessant. Regeln, prüfen Prüfungen der Regeln durchzuführenden Anzahl meisten der die Anzahl nicht die genommen dern streng ist Natürlich INTERNET ngsm ide lonrscsRgl.Bieiner Bei Regeln. sechs nur also es sind Insgesamt . O lg ee rfx‘nrab u e M:’ DMZ: der aus ‘Unerlaubt prefix 4 level 0 flags LOG FORWARD utpr prs2,043saeNEW state 21,80,443 dports multiport eetwt icmp-port-unreachable reject-with Kteuddn mzwei um dann und -Kette ubuenrDMZ einer Aufbau 9 c p:5saeNEW state dpt:25 tcp NEW state dpt:53 udp      9.4 DMZ mit zwei Paketfiltern library dazu eine zweistufige Firewall mit zwei Paketfiltern einsetzen. Fällt der erste Paket- filter in die Hände des Angreifers, so schützt der zweite Paketfilter noch das interne

LAN. open source Natürlich besteht die Gefahr, dass der Angreifer auch in den zweiten Paketfilter eindringt. Als Firewall-Administrator hofft man jedoch, dass dies so viel Zeit kos- tet, dass man Gegenmaßnahmen einleiten kann. Das kann zum Beispiel eine Un- terbrechung der Netzwerkverbindung sein. Häufig wird aus diesem Grund auch empfohlen, zwei unterschiedliche Produkte als Paketfilter einzusetzen1.Sokannein Angreifer nicht denselben Softwarefehler für den Einbruch in beiden Paketfiltern nutzen, sondern muss nach neuen Lücken suchen. Auch Konfigurationsfehler tre- ten selten auf beiden Systemen gleich auf. Dies erhöht also die Schwierigkeit für den Angreifer. Da dies jedoch ein Iptables-Buch ist, möchte ich mich hier darauf be- schränken, die Empfehlung zu erwähnen und es Ihnen zu überlassen, ob Sie dieser Empfehlung folgen und welches zusätzliche Produkt Sie auswählen. Die Implementierung der zweistufigen Firewall erfolgt wie in Abbildung 9.1. Wie bereits zu Beginn des Kapitels erwähnt wurde (siehe Abschnitt 9.1), befinden sich in der DMZ der Beispielfirma Nohup.info jeweils ein Web-, ein E-Mail-, ein cachender DNS- und ein Proxy-Server. Diese Systeme erhalten private IP-Adressen aus dem Bereich 192.168.255.0/24. Dabei soll aus dem Internet ein Zugriff auf den Web- und den E-Mail-Server möglich sein. Aus dem internen Netz ist ein Zugriff auf den Proxy- und den E-Mail-Server notwendig. Der Zugriff auf den Webser- ver wird über den Proxy-Server realisiert. Ein direkter Zugriff auf das Internet ist nicht vorgesehen. Der äußere Paketfilter erhält als externe IP-Adresse eine feste sta- tische IP-Adresse 3.0.0.1. Alle Dienste werden im Internet unter dieser IP-Adresse angebunden. Das bedeutet, dass ein DNS-Server bei der Frage nach der Adresse www.nohup.info die IP-Adresse 3.0.0.1 zurückliefert. Teilen wir nun die Implementierung auf. Zunächst besprechen wir die Regeln für den äußeren Paketfilter, anschließend für den inneren Paketfilter.

Tipp Wenn Sie den Hardwareaufwand für zwei Paketfilter scheuen und Ihr System über mindestens drei Netzwerkkarten verfügt, kön- nen Sie die beiden Paketfilter auch als virtuelle Systeme auf der Hardware laufen lassen. Hierfür können Sie VMware2,User-Mode- Linux3 oder Xen4 verwenden. Alle diese Systeme sind in der Lage, die Hardware zu virtualisieren und voneinander getrennte Linux- SystemeaufderselbenHardwarezuermöglichen.DieSicherheit ist sicherlich nicht so hoch wie bei zwei physikalisch getrennten Systemen, aber besser als bei einer dreibeinigen Firewall.

1 Das BSI (Bundesamt für Sicherheit in der Informationstechnik) spricht zum Beispiel diese Emp- fehlung aus.

205 open source library e andrSrpkp e kit ü i rieng iealuvrnetüber- unverändert Firewall dreibeinige die für Skripts werden. des nommen Skriptkopf der kann ten .. e ueePaketfilter äußere Der 9.4.1 DMZ. die schützt Firewall zweistufige Eine 9.1: Abbildung 206 vor- zwei Die Variablen. der Variablennamen Definition die üblichen erhalten der Netzwerkkarten handenen mit wieder DNS- beginnt Skript dem ermög- Das Internets Proxy, des dem Ressourcen die er auf den muss Zugriff und lichen. den Außerdem Webserver E-Mail-Server den erlauben. dem auf und DMZ Server Internets der des Zugriff in den E-Mail-Server muss Paketfilter äußere Der http://user-mode-linux.sf.net ce ie otudenmGssse uutrcedn sitmtdrS/390-Großrechner- der mit ist Es unterscheiden. vergleichbar: zu ESX-Server Gastsystem netos/xen/ VMware-Produkt einem dem und und Technik Host einem schen 4 3 2 X E E nLnxKre,drafenmbseednLnxSse i etrsSse otnkann: booten System weiteres ein Linux-System bestehenden einem auf der Linux-Kernel, Virtualisierung: in zur System kommerzielles in neluten opet itaiirn ie ytm.E s ih ermgih zwi- möglich, mehr nicht ist Es Systems. eines Virtualisierung komplette eine erlaubt en . . http://www.vmware.com http://www.cl.cam.ac.uk/Research/SRG/ $EXTDEV . und ubuenrDMZ einer Aufbau 9 $DMZDEV .Ansons- 9.4 DMZ mit zwei Paketfiltern library

#!/bin/sh #

# Autor : Ralf Spenneberg open source # Version: 0.1 # Datum : 17. Dez 2004 # # Dieses Skript lädt die Regeln für die Firewall

EXTDEV="eth0"

DMZDEV="eth1"

IPTABLES=/sbin/iptables SYSCTL=/sbin/sysctl MODPROBE=/sbin/modprobe

MAIL=192.168.255.2 WEB=192.168.255.3 DNS=192.168.255.4 PROXY=192.168.255.5 EXTERN=3.0.0.1

# Lade die Kernelmodule für die Stateful-Inspection des FTP-Protokolls $MODPROBE ip_conntrack_ftp $MODPROBE ip_nat_ftp

# Setze Default-Regeln $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP

# Lösche die Filter-Tabelle $IPTABLES -F

# Lösche die NAT-Tabelle $IPTABLES -t nat -F

Die äußere Firewall ist auch für ein NAT der Adressen zum Internet hin zuständig. Hier können die NAT-Regeln aus dem Skript für die dreibeinige Firewall unverän- dert übernommen werden:

## NAT-Regeln ## # (1) Proxy-Zugriff $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -s $PROXY -j SNAT --to-source $EXTERN

# (2) DNS-Zugriff

207 open source library ITBE AFRAD- DZE jLG-lgpei UelutasdrDZ " DMZ: der aus "Unerlaubt --log-prefix LOG -j REJECT $DMZDEV -j -i 113 FORWARD --dport 80,443 -A tcp --dport $IPTABLES -p multiport INPUT -m ab -A tcp Identd-Anfragen $IPTABLES -p Lehne $WEB # -d NEW Webserver $DMZDEV --state den -o state auf $EXTDEV -m Zugriff -i 25 den FORWARD --dport Internet -A tcp dem $IPTABLES -p Erlaube $MAIL # -d NEW E-Mail-Server $DMZDEV --state den -o state auf $EXTDEV -m Zugriff -i 25 den FORWARD --dport Internet -A tcp dem $IPTABLES -p Erlaube $MAIL # -s Internet $EXTDEV das -o 21,80,443 auf $DMZDEV --dport Zugriff -i multiport den FORWARD -m E-Mail-Server -A tcp dem $IPTABLES -p Erlaube $PROXY # -s Internet $EXTDEV das state -o auf -m $DMZDEV Zugriff 53 -i den --dport FORWARD Proxy udp -A dem -p $IPTABLES Erlaube $DNS # -s $EXTDEV -o $DMZDEV -i FORWARD -A $IPTABLES DNAT -j 25 --dport $EXTERN -d tcp -p $EXTDEV -i PREROUTING -A außen nat von -t Mailserver-Zugriff $IPTABLES (5) # ITBE AFRAD- DZE o$XDV- DS- c -pr 3- state -m 53 --dport tcp -p $DNS Internet -s im $EXTDEV Nameserver -o auf $DMZDEV Zugriff -i einen FORWARD DNS-Server -A dem $IPTABLES Erlaube übernom- unverändert # fast Zugriff können diese der Auch wird Filterregeln. werden. die men Webserver noch den nun fehlen und Es E-Mail- einem Quell-IP- den bei die Auch auf Internet werden. Internet das genattet. genattet dem auf Proxy-Servers Zugriff aus und einem Zugriff E-Mail- bei DNS-, dass des dafür, Adressen sorgen Regeln Diese 80,443 --dport multiport -m $EXTERN -d tcp -p $EXTERN $EXTDEV --to-source -i SNAT PREROUTING -j -A $MAIL außen nat -s $EXTERN von -t $EXTDEV --to-source Webserver-Zugriff $IPTABLES -o SNAT (4) POSTROUTING -j # -A $DNS außen nat -s nach -t $EXTDEV Mailserver-Zugriff $IPTABLES -o (3) POSTROUTING # -A nat -t $IPTABLES 208 msae-saeNW- ACCEPT -j NEW --state state -m ACCEPT -j ACCEPT -j ACCEPT -j NEW --state state -m ACCEPT -j NEW --state ACCEPT -j NEW --state $MAIL --to-destination $WEB --to-destination DNAT -j ubuenrDMZ einer Aufbau 9         9.4 DMZ mit zwei Paketfiltern library

$IPTABLES -A FORWARD -i $DMZDEV -j REJECT $IPTABLES -A INPUT -i $DMZDEV -j LOG --log-prefix "Unerlaubt aus der DMZ: "

$IPTABLES -A INPUT -i $DMZDEV -j REJECT open source

Dieses Skript genügt für die Konfiguration des äußeren Paketfilters. Ein direkter Zugriff von dem inneren Paketfilter wird nicht erlaubt. So ist der äußere Paketfilter auch vor Angriffen von innen geschützt. Wenn Sie einen zusätzlichen Administrati- onszugang wünschen, so können Sie zum Beispiel einen Zugang per SSH erlauben:

$IPTABLES -A INPUT -i $DMZDEV -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A OUTPUT -O $DMZDEV -m state --state ESTABLISHED -j ACCEPT

Natürlich könnten Sie auch diesen Zugang auf eine bestimmte IP-Adresse begren- zen. Dann ist es aber sinnvoll, für diese Adresse auch eine Variable, z.B. ADMIN,zu verwenden.

9.4.2 Der innere Paketfilter Die Aufgabe des inneren Paketfilters ist es, den Zugriff des internen LANs auf die Systeme in der DMZ zu regeln. Je nach der gewählten E-Mail-Struktur muss er auch eine Verbindung des DMZ-E-Mail-Servers in das LAN ermöglichen. Ich beschränke mich nun auf die Darstellung des kompletten Skripts und einige we- nige Erklärungen. Die einzelnen Regeln wurden in den vorangegangenen Kapiteln bereits ausreichend erläutert. Die Netzwerkkarten in diesem Skript heißen DMZDEV und INTDEV. Das folgende Skript implementiert den inneren Paketfilter:

#!/bin/sh # # Autor : Ralf Spenneberg # Version: 0.1 # Datum : 17. Dez 2004 # # Dieses Skript lädt die Regeln für den inneren Paketfilter

INTDEV="eth1"

DMZDEV="eth2"

IPTABLES=/sbin/iptables SYSCTL=/sbin/sysctl MODPROBE=/sbin/modprobe

MAIL=192.168.255.2 PROXY=192.168.255.5 PROXYPORT=3128

209 open source library ITBE AFRAD- DZE o$NDV- MIITR s$AL- c -pr 5- 25 DMZ --dport der tcp aus -p Zugriffe $MAIL Netz anderen -s interne alle $MAILINTERN das Protokolliere -d in # $INTDEV ACCEPT DMZ -o -j der $DMZDEV NEW aus -i --state ### E-Mail FORWARD state von -A m Transport $IPTABLES den # Erlaube DMZ # der " aus # innen: Zugriff von - # "Unerlaubt 25 REJECT # --log-prefix --dport -j LOG tcp $INTDEV ################################################### -j -p -i innen $INTDEV $MAIL FORWARD von -i -d -A Anfragen FORWARD $MAILINTERN $IPTABLES anderen -A -s alle $IPTABLES $DMZDEV ACCEPT - Protokolliere -o -j NEW # $INTDEV NEW --state E-Mail-Server -i --state state den FORWARD state -m auf -A m 25 Zugriff $IPTABLES --dport den # E-Mail-Servers: tcp Erlaube internen -p # eines MAILINTERN=192.168.0.100 $MAIL -- Verwendung # -d state Bei $DMZDEV -m ### -o $PROXYPORT E-Mail-Server $INTDEV --dport den -i tcp ACCEPT auf FORWARD -p j Zugriff -A $PROXY den $IPTABLES -d Erlaube $DMZDEV # -o ACCEPT Proxy $INTDEV -j den -i NEW auf FORWARD state Zugriff -A den $IPTABLES Erlaube LAN # dem aus # Zugriff ACCEPT # -j ESTABLISHED,RELATED # --state state ################################################## -m Verbindungen FORWARD aufgebauten -A alle $IPTABLES Akzeptiere # Firewall-Regeln ## Filter-Tabelle -F die $IPTABLES Lösche # DROP FORWARD DROP -P OUTPUT $IPTABLES DROP -P INPUT $IPTABLES -P Default-Regeln $IPTABLES Setze # 210 ubuenrDMZ einer Aufbau 9 9.4 DMZ mit zwei Paketfiltern library

$IPTABLES -A FORWARD -i $DMZDEV -j LOG --log-prefix "Unerlaubt aus der DMZ: " $IPTABLES -A FORWARD -i $DMZDEV -j REJECT open source Dieser Paketfilter führt kein NAT durch, da kein Zugriff auf das Internet erfolgt. Dafür muss dann natürlich sichergestellt sein, dass die beteiligten Systeme über entsprechende Einträge in ihren Routingtabellen verfügen. Bei den Systemen im LAN ist dies recht einfach. Bei ihnen wird als Default-Gateway der Paketfilter ein- getragen. Bei den Systemen in der DMZ ist es erforderlich, als Default-Gateway den äußeren Paketfilter einzutragen. Lediglich für die Verbindung zum internen LAN ist eine zusätzliche Route auf diesen Systemen erforderlich. Hier muss als Gateway der interne Paketfilter eingetragen werden. Ich hoffe, dass ich Ihnen mit diesen Skripten ein paar Beispiele geliefert habe, die Sie nun bei der Erstellung Ihrer eigenen Skripten unterstützen. Natürlich handelt es sich hier nur um grobe Gerüste, die häufig um spezielle Anpassungen erweitert werden müssen. Diese hängen aber immer sehr von der Umgebung ab und werden daher hier nicht näher besprochen. Wenn Sie hierzu Hilfe benötigen, so schauen Sie in den Kapiteln zur fortgeschrittenen Konfiguration der Firewall nach. Dort werden dann die einzelnen Protokolle betrachtet und Beispielregeln für deren Filterung gezeigt. Auch fortgeschrittene Fähigkeiten des Iptables-Befehls werden dort besprochen. Ich bin mir sicher, dass Sie dort auch Anhaltspunkte für Ihr Problem finden werden.

211

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library Werkzeuge IV Teil

open source library

E-Mail ee nee ytmnetee.Hebihnete ihutradrnum anderen unter sich verschie- es von handelt Meldungen Hierbei entgegen. die Proto- Systemen nimmt zentrale anderen der Protokolldienst denen ist Dieser Syslogd eine Linux. Klogd. unter Systemprotokollierung und kolldienst Syslogd die Diensten: für zwei aus verwenden Kombination Protokollservers Linux-Distributionen zentralen eines meisten Einrichtung Die 10.1 verfügen! Zeitsynchronisation Sie eine Achten über sind. Systeme vergleichbar Ihre Modifikationen dass ande- wenn bzw. darauf, werden, einem Meldungen daher gestellt auf der Zusammenhang Rootkits Zeiten kausalen die einen eines nicht und in Installation nicht Snort-Sensor die können einen und Rechner durch ren Dateien Angriffs von eines Modifikation Meldung die kor- Die bei miteinander können. nicht dass werden Rechner Gefahr, unterschiedlichen Rech- reliert die der überwachten besteht Meldungen die die Ansonsten dass Angriff verwenden. wichtig, einem Zeitbasis sehr gemeinsame es eine ist Protokolle ner der Auswertung die Für Protokollserver den auf in erst Meldungen er die müsste einbrechen. jedoch Hierzu die nicht löschen. zwar Protokollserver entfernen, Einbrecher zentralen Protokolldateien der dem lokalen kann den so das in Protokollserver, über einem Spuren sondern auf lokal, nur zentral nicht auch unver- Meldungen Netzwerk seine und Rechner der lokal jedoch Spiel. lediglich Protokolliert entsprechende leichtes ein Protokolle auch er diese der hat häufig so die Werden betrifft gespeichert, Spuren, Protokollen. schlüsselt Dies die den entfernen. versuchen, in zu in zunächst Einträge war, hat, er Lage hinterlassen wird der so Einbruch in einzudringen, Einbrecher für ein Rechner Grund, tatsächlich Ihren wichtigeren Wenn Sicherheitsaspekten Protokollierung. unter zentrale weiteren, eine einen noch häufig aber gibt werden eingesetzt. Es Daten Daher je- der ist. Sammlung auf fehlerträchtig die Protokolle und für der Protokollserver mühsam zentrale Überwachung sehr manuelle Rechner einzelnen eine meis- dem die dass stellen fest, müssen, werden Administratoren überwacht ten Linux-Rechner oder Unix- viele Sobald 10 ndnSsodwie.Dmtwre uhMlugndsLnxKresdurch Linux-Kernels des Meldungen auch werden üblicherweise protokolliert. sie Damit Syslogd leitet weiter. den und Syslogd entgegen Meldungen den die Samba. an Kernel oder vom Squid-Proxy nimmt einen Klogd Apache-Webserver, Der einen Beispiel zum wie Dienste , News , etaeProtokollserver Zentrale Login , Lpd t.DrSsodittpshres ih utni für zuständig nicht typischerweise ist Syslogd Der etc. Crond ,

open source library open source library aiiypirt location folgenden die Lage, ein- der Linux-Distributionen in aktuellen ist meisten wird, den gesetzt in der Standard-BSD-Syslogd, Der facility.priority Datei die ist Dies Konfigurationsdatei. eine lediglich /etc/syslog.conf Ein- über ihren verfügt BSD-Syslogd die Der Eigenschaften, einige rechtfertigen. über Systemen jedoch sicherheitsrelevanten aktuellen Sys- auf verfügen einer modulare satz Syslog-ng der Bestandteil Sowohl auch nicht werden. als weitere installiert Syslog-ng logd manuell zwei zum daher muss Gegensatz ich und im mo- Distribution werde Der ist können. Anschließend Syslogd werden beschreiben. eingesetzt dulare Konfiguration ersatzweise Klogd der die beschreiben, des Möglichkeiten Syslogd-Daemons wesentlichen und die Syslogd kurz des ich möchte Folgenden Im 216 Als olee id iruwr i ogneSna verwendet: Syntax folgende die wird Hierzu sind. kollieren I I I I I I I I I I I I I I I I I I I I I I notice info debug local0 uucp user syslog security news mark mail lpr kern daemon cron authpriv auth emerg alert crit err warning priority , error ldgihfritreVerwendung) interne für (lediglich , panic bis und ietshmit (identisch edndeflednWreunterstützt: Werte folgenden die werden (obsolet) local7 (obsolet) i nhl nomtoe aüe,wlh edne oz proto- zu wo Meldungen welche darüber, Informationen enthält Sie . warn (obsolet) auth olejdc ih ereneez werden) eingesetzt mehr nicht jedoch sollte , Facilities uunterscheiden: zu 0Znrl Protokollserver Zentrale 10 10.1 Einrichtung eines zentralen Protokollservers library

Bei einer Angabe wie zum Beispiel cron.info werden nun alle Meldungen von cron mit der Wertigkeit info und höher von dieser Regel protokolliert. Möchten Sie spezi-

fisch nur die Meldungen mit der Wertigkeit info protokollieren, so können Sie dies open source mit der Angabe cron.=info erreichen. Außerdem ist die Negation möglich: cron.!=info. Zusätzlich besteht die Möglichkeit, sowohl für die Facility als auch für die Priority den Stern (*) als Wildcard zu verwenden. Leider besteht beim Standard-BSD-Syslog nicht die Möglichkeit, in Abhängigkeit von einem Muster, zum Beispiel einem regulären Ausdruck, die Protokollierung zu konfigurieren. Nachdem Sie die zu protokollierenden Meldungen in der linken Spalte der Datei /etc/syslog.conf ausgewählt haben, müssen Sie den Ort der Protokollierung definie- ren. Hier stehen ebenfalls mehrere Möglichkeiten zur Verfügung: I Normale Datei, z.B. /var/log/messages I Named Pipe, z.B. |/var/log/my_fifo. Diese Named Pipe muss zuvor mit dem Be- fehl mkfifo erzeugt werden. Hiermit besteht die Möglichkeit, die Informationen ähnlich einer normalen Pipe an einen anderen Prozess weiterzuleiten. I Terminal bzw. Konsole, z.B. /dev/tty10 I Zentraler Protokollserver, z.B. @logserver.example.com I Benutzer, z.B. root. Diese Personen erhalten die Meldungen auf ihrem Terminal, falls sie angemeldet sind. Es wird keine E-Mail versandt! I Alle angemeldeten Benutzer *. Ein paar Beispiele verdeutlichen dies:

# Kritische Kernelmeldungen auf der 10. virtuellen Konsole kern.crit /dev/tty10 # Notfälle direkt an root kern.emerg root # Authentifizierungsvorgänge in einer geschützten Datei und zusätzlich # zentral authpriv.* /var/log/secure authpriv.* @remotesyslog # E-Mail getrennt mail.* /var/log/maillog # Alles andere in einer Datei *.info;mail.none;authpriv.none /var/log/messages

Der Syslog erhält üblicherweise die zu protokollierenden Meldungen über den Unix-Socket /dev/log. Dieser Socket wird vom Syslog beim Start erzeugt. Dies ge- nügt in den meisten Fällen, da sämtliche lokalen Anwendungen auf diesen Socket zugreifen können. Bei einer Anwendung, die sich in einer Chroot-Umgebung befin- det, besteht jedoch das Problem, dass ein derartiger Zugriff auf /dev/log nicht mög- lich ist. Der Syslogd muss dann bei seinem Start einen zusätzlichen Unix-Socket

217 open source library S-ylg ndnUPPr 1.DeKngrto isrPrnme erfolgt Portnummer Datei dieser Standard- der Konfiguration beim in Die erfolgt Syslogd 514. Netzwerk beim UDP-Port das den Meldungen über an Lage, Protokollierung BSD-Syslogd Internet-Socket der ein Die in zusätzlich werden. muss nicht Hierzu geöffnet Syslogd entgegenzunehmen. der Netzwerk jedoch das über ist Unix-Sockets werden. dieser definiert Mithilfe Sockets weitere 19 zu bis können Hiermit ai e ylg u isnPr fntudMlugnüe isnInternet- diesen Option über der Meldungen mit und ihn öffnet Sie Port müssen diesen annimmt, nun Socket vor Syslogd Schutz der kein Damit UDP bietet ei- Auch oder gehen. Firewall verloren Spoofing. konfigurierten Netzwerks Einzelne falsch des erreichen. einer Überlastung aufgrund Empfänger ner Beispiel den sicher- zum tatsächlich nicht können Syslog 514/udp Meldungen Pakete der kann sämtliche Daher dass UDP. mit stellen, nur Protokollierung die erfolgt Leider syslog Option der mit kann Dies erzeugen. Chroot-Umgebung der in 218 /etc/sysconfig/syslog ezekafenmznrlnLgevrz rtklirn edrwite we- er weist Ver- oder Leider Authentifizierung das protokollieren. noch Ausdrücken über zu regulären Meldungen Logserver mit seine Mustererkennung zentralen Lage, der der einem in auf bereits Netzwerk also ist Standard-BSD-Syslogd Der i Datei die e e rtklsre i edne ac i eäshe Absenderadressen gefälschten mit (auch Meldungen da- mit könnte das Protokollserver Angreifer durch authentifizie- den Ein lediglich her geschehen. zu kann (Iptables) senden, Dies Paketfilterregeln einzuschränken. Meldungen intelligenter IP-Adresse Setzen die ihrer die aufgrund Clients, oder ren die Syslogd im Möglichkeit, ednvmKoda e ylg etreett e i ugudsie Konfi- Start- seiner interessante aufgrund eine über sie jedoch Kernels der verfügt option: des weitergeleitet, Klogd Syslogd Meldungen Der den protokolliert. Die gurationsdatei an Konfigurationsdatei. Klogd eigene vom keine werden besitzt füllen. Klogd Meldungen Der unsinnigen mit Protokolle die so und bombardieren ogne Eintrag: folgenden n e ylg nutrcidihnPstoe.RdHtvredtdeDatei die Klogd verwendet des Hat Red Startoptionen Positionen. unterschiedlichen die an verwalten Syslogd des Distributionen und unterschiedlichen Geschwin- kommen. üblichen Die Meldungen der von einer Überschreiten Verlust mit dem zum Bei es Terminal der kann emuliert. serielles digkeit auf der Baud als 38.400 Klogd Geschwindigkeitsbeschränkungen wird von den vom Konsole Geschwindigkeit Die jedoch direkt unterworfen. ist werden Konsole Dies aufweisen, protokolliert. Wertigkeit Konsole diese mindestens die edn,dea isnSce eedtwr,a n rtklir i entspre- sie protokolliert und an wird, gesendet Konfigurationsdatei Socket eigenen seiner diesen chend an die Meldung, 1 D n if uhItbe ih mehr. nicht Iptables auch hilft ann cX -c /etc/rc.config is pinelutdeDfiiinenrPirt .Kernel-Meldungen, X. Priority einer Definition die erlaubt Option Diese . UEvredti bäggetvndrVrinentweder Version der von Abhängigkeit in verwendet SUSE . dren ae mVerzeichnis im Datei eine oder /etc/services is ae nhl iruüblicherweise hierzu enthält Datei Diese . /etc/syslog.conf -r tre.Dn im rjede er nimmt Dann starten. /etc/sysconfig sbsetlie ih die nicht leider besteht Es . 0Znrl Protokollserver Zentrale 10 asocket -a . erfolgen. 1 ) 10.2 Modular Syslog library schlüsselung auf. Daher handelt es sich hierbei nicht um einen idealen Protokoll- dienst für sicherheitsrelevante Umgebungen. open source Tipp Wenn Sie eine Protokollmeldung aus einem Skript erzeugen wol- len, können Sie einfach den Befehl logger verwenden. Dieser Befehl schreibt die Meldung über den Syslog-Socket /dev/log in die Proto- kolle.

10.2 Modular Syslog

Der modulare Syslog msyslog von der Firma Core Security Technologies (ehemals Core SDI, http://www.corest.com) ist ein Ersatz für den Standard-BSD-Syslog und den Klogd unter Linux, die von den meisten Linux-Distributionen eingesetzt werden. Der Msyslogd ist komplett rückwärtskompatibel zum Standard-BSD-Syslog und unterstützt zusätzlich folgende Funktionen: I Annahme von Meldungen – Kernel-Meldungen über das BSD-Kernel-Interface und das Linux-/proc/kmsg- Interface. – Systemmeldungen über das Unix-Socket-Interface /dev/log – Meldungen über eine TCP- oder eine UDP-Verbindung auf einem beliebi- gen Port – Meldungen aus einer beliebigen Datei oder Named Pipe Ausgabe von Meldungen I – kompatibel zum klassischen BSD-Syslogd – Mit einem kryptographischen Hash – Auf einem anderen Rechner mit TCP oder UDP – In Abhängigkeit von einem regulären Ausdruck – In einer MySQL- oder PostgreSQL-Datenbank I Wenn der modulare Syslog die Protokolle kryptographisch mit einem PEO-Hash sichert, können Sie mit dem Werkzeug peochk die Integrität der Protokolle testen. Mit dem PEO-Hash werden die Log-Meldungen kryptographisch miteinander verkettet, so dass Sie später die Modifikation oder Löschung von Protokollmel- dungen erkennen können. Genauere Informationen über das Protokoll finden Sie in http://www2.corest.com/files/files/11/PEO.pdf. Der Secure Syslogd ist eine Vorgängerversion des Modular Syslogd und wurde auch von Core Security Technologies erzeugt. Er wies auch alle diese Fähigkeiten auf.

219 open source library e eetih neshe e e ewnugdes Verwendung der bei Unterschied wesentliche noch Der Abschnitt nächsten im wird betrachtet. Das genauer hinweisen. Standard-BSD-Syslog zum bilität Ausgabe-Module: Module: uiyTcnlge eutreae edn( ( werden Sourceforge-Projektseite heruntergeladen Technologies curity aeinstall # make ge- # so ./configure doch, des Falls # Übersetzung sein. nötig Eine von Fällen Aufruf Paket. ein seltensten meistens den ein nügt in einsetzen. ebenfalls daher Linux-Distributionen existiert sollte SUSE Quelltextarchivs auf Debian-Distribution auch die jedoch Für RPM-Paket das Sie können Syslogd Msyslogd modulare des Installation Der 10.2.1 220 des Vorteil großer Ein Standard-BSD-Syslogd zum Kompatibel des Konfiguration der von Bei Konfiguration 10.2.2 aie u S-ylg s.Der ist. BSD-Syslogd zum patibel benötig- alle Start beim Der Sie benennen. müssen Eingabe-Module Aufbaus ten modularen seines Aufgrund Aufruf. P-aeesn ndeDsrbto o e a iu neas.Nc einer Nach angepasst. Linux Start-Skripts enthaltenen Hat Paket Red im von des Distribution Die Anpassung angeboten. die leichten RPM-Pakete an wer- auch Open sind Sourceforge-Projektseite als im Quelltextpaket der freie RPM-Pakete Zwecken das Auf um kommerziellen sowohl darf. also zu üblicherweise werden den auch sich eingesetzt als handelt Lizenz privaten der Es Rahmen zu vertrieben. sowohl BSD-Lizenz die der Source-Software, unter wird logd bsd Achtung , doors i P-aeeisalee den installieren RPM-Pakete Die asdsRMPktisaletwreuddrBefehl ausgegangen, der davon und aber wurde Buch installiert RPM-Paket diesem das in dass wird Weiteren Im der ist. dass den aus, davon geht logd den benannt: DieManpageswurdenjedochebenfallsindenRPM-Paketenum- , isrgef eohtoze u i Datei die auf trotzdem jedoch greift Dieser . classic linux msyslogd , msyslogd.8 msyslogd msyslogd , streams http://sourceforge.net/projects/msyslog/ mysql msyslogd als , , peo s i asce asdee ylg abwärtskom- Syslogd dieser dass Tatsache, die ist anetee o e oeaevnCr Se- Core von Homepage der von entweder kann tcp syslogd und msyslogd , msyslogd öheihSezncs u i oeKompati- hohe die auf zunächst Sie ich möchte , pgsql udp msyslogd msyslog.conf.5 i az igleet Dokumentation mitgelieferte ganze Die ! , und msyslogd regex ehl ihgnus,wee o einem von es wie so, genau sich verhält unix efg brdeflednEingabe- folgenden die über verfügt , tcp http://www.corest.com msyslogd e etrnbstte folgende er besitzt Weiteren Des . und ne ezee ae ufin- zu Namen letzterem unter a ultxaci installiert Quelltextarchiv Das . udp msyslogd ne e Namen dem unter . 0Znrl Protokollserver Zentrale 10 /etc/rc.d/init.d/msyslogd .Drmdlr Sys- modulare Der ). /etc/syslog.conf eth nseinem in besteht msyslogd drvnder von oder ) lautet. msys- zu. 10.2 Modular Syslog library

Syslogd erwartet wird. Sie können einfach den BSD-Syslogd durch diesen ersetzen und die vorhandene Konfigurationsdatei ohne Änderung nutzen.

Der Prozess liest automatisch seine Konfigurationsdatei /etc/syslog.conf ein, liest die open source Kernel-Meldungen von /proc/kmsg und öffnet den Socket /dev/log. Der msyslogd interpretiert die Konfigurationsdatei /etc/syslog.conf genauso wie der BSD- Syslogd. Leider existieren noch einige Fehler in der Implementation der Kom- patibilität. Die entsprechenden Voraussetzungen sind jedoch sehr selten gegeben. Lesen Sie die Manpage (msyslog.conf.5) für weitere Informationen. Die Kompatibilität mit den BSD-Syslogd-Funktionen wird vom %classic-Modul be- reitgestellt. Sobald Sie die Funktionalität des msyslgod ausreichend getestet haben, sollten Sie die Konfigurationsdatei an die neue Syntax anpassen, so dass Sie an- schließend auch die neuen Fähigkeiten (siehe den nächsten Abschnitt) nutzen kön- nen. Dazu ist an den entsprechenden Stellen ein Aufruf des %classic-Moduls erfor- derlich. Im nächsten Listing wird die klassische Konfiguration aus dem Listing 10.1 mit Modulen gezeigt.

# Kritische Kernelmeldungen auf der 10. virtuellen Konsole kern.crit %classic /dev/tty10 # Notfälle direkt an root kern.emerg %classic root # Authentifizierungsvorgänge in einer geschützten Datei und zusätzlich # zentral authpriv.* %classic /var/log/secure authpriv.* %classic @remotesyslog # E-Mail getrennt mail.* %classic /var/log/maillog # Alles andere in einer Datei *.info;mail.none;authpriv.none %classic /var/log/messages

Um auch den Aufruf des msyslogd an seine neuen Fähigkeiten anzupassen, sollten die Eingabe-Module linux (für das Kernel-Interface /proc/kmsg)undunix (für die Be- reitstellung des /dev/log-Sockets) geladen werden. Wird der BSD-Syslogd auf Ihrem System bisher so aufgerufen: syslogd -m 0 dann sollten Sie diesen Aufruf zusätzlich um die entsprechenden Module erweitern: msyslogd -m 0 -i linux -i unix

Bei der Verwendung des RPM-Pakets befindet sich automatisch auf Ihrem Sys- tem ein Startskript /etc/rc.d/init.d/msyslog, das die Startoptionen aus der Datei /etc/sysconfig/msyslog liest. Diese Datei enthält folgende Optionen:

CONFIG="" # example: "-f /etc/syslog.conf"

221 open source library uae ylgatvee,dmtsegnttwre önn irusn Anpas- sind Hierzu können. mo- werden des Konfigurationsdatei genutzt Funktionen der sie zusätzlichen sungen die damit so müssen aktivieren, austauschen, Sie Syslog Syslog Vorteile. dularen modularen keine noch den sich durch ergeben Standard-BSD-Syslog den Sie Wenn Fähigkeiten neuen der Nutzung on msyslog msyslog chkconfig --add # syslog chkconfig --del # chkconfig # es, genügt Daher eingetragen. Module klassischen beiden den die lediglich options standardmäßig bereits these sind on Hier details more for pages man im_*.8 unix" the "-i in example: Look 514" udp:514" # # accepted.host.com "-i unix" tcp example: IM_Unix="-i "-i # streams" example: IM_UDP="" linux" "-i # "-i example: IM_TCP="" example: # doors" # IM_STREAMS="" "-i linux" bsd" example: IM_LINUX="-i "-i # 20" example: IM_DOORS="" "-m # 20" example: IM_BSD="" "-d # example: MARK="" # DEBUG="" 222 ed c i erctn i e nerttüepüugdrPooolaee mit Protokolldateien der Integritätsüberprüfung Abschließen der werde. mit dem beschreiben Betrachtung die Konfigurationsdatei ich erläutern, der werde Aufruf Anpassung beim die Optionen ich unterschiedlichen die bevor ich werde Zunächst derlich. ire thnnnfled igb-ouezrVerfügung: zur Eingabe-Module folgende nun stehen Hierbei isefltbidnmitnLnxDsrbtoe eh ifc mit: einfach recht Linux-Distributionen meisten den bei erfolgt Dies emAfu des Aufruf Beim I I I I I I I ris) -u. interval. -m file. -f level. -d or [pfad]. doors bsd. module. -i ndePooolae,wn snct upooolee it ai önnSie können Damit Meldung gibt. eine läuft. protokollieren dann tatsächlich zu Protokollserver auch nichts Ihr es ob schreibt überprüfen, wenn Funktion Protokolldatei, nützliche die sehr in Diese ab). schaltet peochk nam o edne brdnUPPr (ähnlich UDP-Port den über Meldungen von Annahme enlMlugnensBSD-Systems eines Kernel-Meldungen -Befehl. ofiuaindti(Default: Konfigurationsdatei Debugging-Level uwh e Eingabe-Module der Auswahl nevl nMntnzwischen Minuten in Intervall igb-ou ü or ne rcs al(P-Mlugn(Sola- Call-(IPC-)Meldungen Process Inter Doors für Eingabe-Modul msyslogd syslog önnSedeflednOtoe angeben: Optionen folgenden die Sie können Des udatvee n den und deaktivieren zu -Dienst /etc/syslog.conf /etc/syslog.conf –MARK– n e trsdes Starts des und ) edne Dfut 0 0 20, (Default: Meldungen 0Znrl Protokollserver Zentrale 10 -r msyslog e S Syslogd) BSD bei msyslogd uaktivieren. zu erfor- 10.2 Modular Syslog library

I streams [pfad]. Eingabe-Modul für Streams Inter Process Call-(IPC-)Meldungen I tcp. Eingabe-Modul für Meldungen über TCP-Verbindungen udp. Eingabe-Modul für Meldungen über UDP-Verbindungen open source – -h host. Nimmt auf der Adresse Anfragen an – -p port. TCP-Port, der geöffnet wird – -a. Extrahiert den Rechnernamen (FQDN) – -q. Extrahiert den Rechnernamen (nicht FQDN) file. Liest aus einer Datei oder Pipe I – -f datei. Liest aus der angegebenen Datei – -p pipe. Liest aus der angegebenen Pipe – -n Name. Legt den Namen fest I unix [pfad]. Liest aus einem Unix-Socket (Default: /dev/log) I linux. Liest die Linux-Kernel-Meldungen – -c level. Setzt den Log-Level für die Konsole – -C level. Definiert den Log-Level eines laufenden msyslog neu und beendet sich – -k ksyms. Kernel-Symboltabelle (Default: /proc/ksyms) – -s. Verwendet das Syscall-Interface (Default: /proc/kmsg) – -x. Keine Übersetzung der Kernel-Symbole Um nun den msyslogd auf einem lokalen Rechner als Protokolldienst einzusetzen, genügt meist die Angabe von: msyslogd -i unix -i linux

Haben Sie eine Anwendung, zum Beispiel einen DNS-Server, in einem chroot- Verzeichnis installiert, so benötigt dieser Dienst einen Unix-Socket zur Protokol- lierung. Er ist nicht in der Lage, aus seinem chroot-Verzeichnis auf den Unix-Socket /dev/log zuzugreifen. Dann starten Sie den msyslogd mit: msyslogd -i unix -i ’unix /chroot_dns/dev/log’ -i linux

Der msyslogd wird dann beim Start den zusätzlichen Unix-Socket anlegen. Wenn Sie den msyslogd als netzwerkfähigen Logserver starten möchten, so nutzen Sie folgende Startzeile: msyslogd -i unix -i linux -i ’tcp -p 8000’

Hierbei müssen Sie jedoch beachten, dass die Übertragung mit UDP wie auch mit TCP unverschlüsselt und nicht authentifiziert erfolgt. Zur Sicherheit können Sie zusätzlich stunnel einsetzen.

223 open source library u optblttmtdmSadr-S-ylgvrütder verfügt Standard-BSD-Syslog dem Modul mit betrachten Kompatibilität Ausgabe-Module Zur besprechen. weiteren Signatur wichtigste die die die Schluss jedoch PEO-Protokoll zum dem zunächst und mit werden Protokolle Wir der Signatur Funktion. die sicherlich ist ten esüz ire i naedsRcnr ( Rechners des Angabe die hierbei terstützt /var/log/messages ab i rtklirn nenrDtibiAgb ie aenmn ( Dateinamens eines Angabe bei Datei einer in Protokollierung die laubt enif up- hlgevreapent- 514 -p logserver.example.net -h Modul -a Das %udp kern.info 8001’ über -p Informationen localhost Weitere -h ’tcp localhost:8001 -i -r linux 8000 -i -d unix stunnel -i msyslogd 224 ist Ausgabe-Modul interessantes sehr zu weiteres bieten SSL Ein möglich. Dennoch mit nicht kann. UDP TCP-Verbindungen bei führen Möglichkeit, ist die UDP-Pakete Log-Quellen Dies verschlüsseln. stunnel) vielen dass (z.B. bei berücksichtigen, Werkzeuge 16384 der Überlastung zu weitere Overhead, einer -s ist zusätzlichen einen zu TCP 30 TCP auch erzeugt und -m Allerdings UDP können. 8000 werden zwischen -p verloren Wahl Bytes logserver.example.net der 16384 -h Bei Puffer -a Sekunden, %tcp 30 Retry logserver, zu kern.info TCP-Verbindung # www.stunnel.org e e nasn e Konfigurationsdatei der Anpassung der Bei udnz enee n ie ufrfrdeAfam e ohnctgesandten nicht noch der Aufnahme Se- die in generieren. für Verbindungswiederholungen zu Puffer Meldungen für einen und Zeit definieren maximale zu eine kunden möglich, es ist Hiermit i e Option der mit rtklirn brdsNt u ie nee ylgSre rog i der mit erfolgt syslog-Server anderen einem auf von Netz Angabe das über Protokollierung brrgnwr.Beispiel: wird. übertragen e n heAfeln u neshelcePooolaee s ih möglich. nicht ist Protokolldateien unterschiedliche auf Aufteilung ihre und gen der Protokollmeldungen Angabe der Verwaltung die eine über lediglich erlaubt BSD-Syslog steuern. normale Ausdruck Der regulären einem von Abhängigkeit in Meldungen der Sortierung terBenutzererfolgtmit uäzihitder ist Zusätzlich i rtklirn uczfhe.I uamnagmtdrProtokollierung mit der Verschlüsselung die mit sich Zusammenhang bietet TCP Im über durchzuführen. Protokollierung die etmt euzraseäl edn(z.B. werden ausgewählt Benutzer bestimmte %classic %tcp [email protected] %classic issMdlvrütüe i dnice äikie.E er- Es Fähigkeiten. identischen die über verfügt Modul Dieses . .DePoooleugafdnTriassmlce angemelde- sämtlicher Terminals den auf Protokollierung Die ). . -a nesüz uäzihz isndewiee Optionen weiteren die diesen zu zusätzlich unterstützt msyslogd enetwre,o e ieeRcnraei e Meldung der in Rechnername eigene der ob werden, definiert facility casc*, %classic ndrLg,afenmbleie D-oe TCP-Port oder UDP- beliebigen einem auf Lage, der in n der und stunnel n bren omspret it können Liste kommaseparierte eine über und priority ne i u e Stunnel-Homepage der auf Sie finden . -h iefieeVratn e Meldun- der Verwaltung feinere Eine . /etc/syslog.conf )unddesPorts( stunnel cascxapfel,ybirne,zorange %classic %regex n(...DsModul Das (s.o.). an iri önnSedie Sie können Hiermit . 0Znrl Protokollserver Zentrale 10 ndenunFähigkei- neuen die an -p msyslogd .Zstlc kann Zusätzlich ). -m brdas über %udp und %classic .Eine ). http:// un- -s . 10.2 Modular Syslog library

Der msyslogd ermöglicht mit dem Modul %regex die Verwendung von regulären Aus- drücken als Filter. Diese können getrennt auf die Nachricht (-m), den Rechnernamen

(-h), das Datum (-d) und die Uhrzeit (-t) angewendet werden. Sie können auch den open source regulären Ausdruck mit -v invertieren (ähnlich grep). Möchten Sie, dass auf einem zentralen Protokollserver die Protokolle für die ver- schiedenen Protokollclients (client1 und client2) in unterschiedlichen Dateien abge- legt werden, so können Sie das durch folgende Einträge erreichen:

*.* %regex -h ’client1’ %classic /var/log/client1.messages *.* %regex -h ’client2’ %classic /var/log/client2.messages

Alle Meldungen, die im Host-Anteil nun den Namen client1 tragen, werden mit dem %classic-Modul in der Protokolldatei /var/log/client1.messages abgespeichert. Das Modul %regex erlaubt so eine sehr feinfühlige Verteilung der Meldungen auf unterschiedliche Protokolldateien und -server. Zwei weitere Module, die die Auswertung der Protokollmeldungen vereinfachen können, sind %pgsql und %mysql. Hiermit können Sie die Syslog-Meldungen direkt in einer Datenbank protokollieren. Dies erlaubt später eine einfache Suche und Kor- relation der Daten. Zusätzlich können Sie mit anderen Systemen recht einfach eine Auswertung der Daten (z.B. Apache/PHP-gestützt) vornehmen. Im Folgenden soll kurz die Konfiguration der Protokollierung in einer MySQL-Datenbank beschrieben werden. Um die Protokollierung des msyslogd in einer Datenbank zu ermöglichen, ist es zu- nächst erforderlich, den MySQL-Datenbankserver und -client zu installieren. Dies erfolgt am einfachsten mit den Werkzeugen der Distribution. Nach der Installa- tion und dem Start des MySQL-Datenbankservers müssen Sie das Kennwort des Datenbankadministrators root ändern. Dies erfolgt mit dem Befehl mysqladmin.Ein Beispielaufruf ist im Folgenden abgedruckt:

# mysqladmin -u root password "n3u3sk3nnw0rt"

Nun sollte die Datenbank für die Protokollierung durch msyslogd angelegt werden. Dies erfolgt mit den Befehlen:

# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 to server version: 3.23.49

Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer. mysql> CREATE DATABASE syslog; Query OK, 1 row affected (0.01 sec) mysql> use syslog;

225 open source library a neesnet ou emEnazdes Einsatz beim Modul interessanteste Das andsMdldeHs-loihe D,SA1(eal)oe RIPEMD160 oder (Default) SHA-1 MD5, Hierzu Hash-Algorithmen auffallen. die einsetzen. später daher Modul wird das Protokolle kann der Modifikation Eine miteinander. ohmteln i i aebn eß n i rsc ebne muss. verbinden sich er wie und heißt Datenbank die wie mitteilen, noch . msl- otpr umylg pknwr dsso \ syslog Module -d beiden Die kennwort -p msyslogd -u host:port -s %mysql *.* kann Nun sec) Bye (0.00 affected mysql> rows 0 sec) OK, (0.00 Query affected rows 0 mysql> OK, Query mysql> changed Database 226 %peo nesüznac i lihnOtoe.DeeOtoe ae ire i fol- die hierbei haben Optionen Diese Optionen. Bedeutung: gleichen gende die auch unterstützen I I I I I I I I ettgn.Drttähih netefltvröet isbsheng i Zu- die beschleunigt Dies MySQL!) verzögert. mit erfolgt sammenarbeit Insert tatsächliche Der Bestätigung. zuzufügen. leBnte ebrsein! lesbar Benutzer alle -F. -D. table. -t database. -d password. -p user. -u host:port. -s -P. -> -> -> -> -> -> -> -> issPOMdlvrettdeenennMlugni ie Protokolldatei einer in Meldungen einzelnen die verkettet PEO-Modul Dieses . RN NETO ylg*T ssodIETFE Y’kennwort’; BY IDENTIFIED quit; msyslogd TO syslog.* ON INSERT GRANT key primary auto_increment ); unsigned int seq text, message varchar(128), host time, time date, date char(10), priority char(10), facility Trage Trage ezgreEnüugn( Einfügungen Verzögerte RAETBEssoT ( syslogTB TABLE CREATE msyslogd yQ-euzr isrBnte usdsRcthbn itäehin- Einträge haben, Recht das muss Benutzer Dieser MySQL-Benutzer. aedrTblei e Datenbank der in Tabelle der Name facility priority aedrDatenbank der Name für nicht anschließend sollte Datei Diese Achtung: Klartextkennwort. yQ-evr e otitoptional. ist Port Der MySQL-Server. ndeeDtnakpooolee.Hez üsnSeimnur ihm Sie müssen Hierzu protokollieren. Datenbank diese in %mysql tssoT F-P -F syslogTB -t nenregnnSat ein Spalte eigenen einer in nenregnnSat ein Spalte eigenen einer in und %pgsql u MySQL Nur eöie dniceDtnakceaaund Datenbankschemata identische benötigen msyslogd ire rätdrCin ooteine sofort Client der erhält Hierbei : s eohscelc a Modul das sicherlich jedoch ist 0Znrl Protokollserver Zentrale 10 10.2 Modular Syslog library

Um diese Verkettung durchzuführen, verknüpft das Modul einen Schlüssel mit der ersten Meldung. Das Ergebnis wird wieder als Schlüssel für die nächste Meldung

abgelegt. Bei der Überprüfung der Protokolldatei wird dieser Vorgang wiederholt. open source Damit Sie die Überprüfung durchführen können, speichern Sie den initialen Schlüs- sel an einem sicheren Ort. Die Konfiguration des Moduls %peo bietet drei Optionen: I -k key. Schlüssel, der für die Verknüpfung der nächsten Meldung verwendet wird I -l. Line Corruption Mode. Dieser Modus erlaubt es, die Zeile zu erkennen, auf der die erste Modifikation erfolgte. Hierzu wird eine zweite Datei angelegt. Diese Datei trägt denselben Namen wie die Schlüsseldatei mit der zusätzlichen Endung .mac. I -m hash. Hash-Methode. Möglich sind md5, sha1 und rmd160. Default ist sha1. Eine Beispielkonfiguration des Moduls %peo könnte bei Ihnen so aussehen: *.* %peo -l -k /var/ssyslog/.var.log.messages.key %classic /var/log/messages

Damit diese Verkettung erfolgen kann, ist jedoch ein Initialisierungsvektor erforder- lich. Sie erzeugen den initialen Schlüssel mit dem Befehl peochk. Um den initialen Schlüssel zu generieren, geben Sie folgenden Befehl ein: # mkdir /var/ssyslog # peochk -g -f /var/ssyslog/.var.log.messages.key -i messages.key0

Der Befehl peochk generiert nun einen Schlüssel und legt diesen in Binärformat in der Datei /var/ssyslog/.var.log.messages.key ab. In ASCII-Format wird der Schlüssel in der Datei messages.key0 erzeugt. Diese ASCII-Datei sollten Sie kopieren oder ausdrucken und vom Rechner entfernen. Anschließend müssen Sie die Protokolldatei rotieren, denn das Modul %peo funktio- niert nur, wenn es mit einer leeren (aber vorhandenen) Protokolldatei beginnt. Die Integrität der Protokolldatei testen Sie ebenfalls mit dem peochk-Werkzeug. Hierzu müssen Sie zunächst die Datei messages.key0 zur Verfügung stellen. Dies kann zum Beispiel mit einer Diskette erfolgen. Auf dem Rechner sollte die Datei gelöscht werden und nicht ständig zur Verfügung stehen! # peochk -f /var/log/messages -i messages.key0 -k /var/ssyslog/.var.log.messages.key (0) /var/log/messages file is ok

Der Befehl peochk unterstützt noch einige weitere Optionen. Die Erläuterung dieser Optionen finden Sie in der Manpage. Hier erwähnen möchte ich nur die Option -q für quiet. Beim Aufruf mit dieser Option gibt der Befehl eine 0 aus, wenn die Datei nicht verändert wurde. Ansonsten gibt der Befehl eine 1 und die Nummer der Zeile (-l) aus, auf der die Korruption auftritt. Damit bietet sich diese Option für denAufrufinSkriptenan.

227 open source library gvredtenegns olomnadrsFra.Dfrgwne i aber Sie BSD-Syslog: gewinnen dem gegenüber Dafür Vorteile Format. mächtige anderes sehr vollkommen einige auch Syslog- eigenes, Der ein verabschieden. Sie Syslog-Konfiguration verwendet unter müssen der ng Format möchten, wird üblichen einsetzen und dem Syslog-ng von Source den ihr sich Sie Open für Wenn Balabit ist vertrieben. Firma Syslog-ng GPL-Lizenz ungarischen der Der der entwickelt. von Zorp wird Syslog-ng Firewall-Produkt Der BSD-Syslog. dem zu ( Syslog-ng Syslog-ng Der 10.3 228 der eines Sie können Verzeichnis starten, dem zu aus Init-Skript Init-Skripten ein mitgelieferten über komfortabel Syslog-ng den Um install make sudo $ make $ ./configure $ einfach das Sie erreichen: Sie Befehlen können Wenn folgenden möchten, Pakete. den kommerziellen übersetzen binäre mit Quellen die seinen Homepage Für aus Syslog-ng Syslog-ng. Syslog-ng den der dennoch Hat auf Red Sie auch finden unterstützt RHEL-Versionen 4 Core Fedora Ab i ntlaindsSso-gitrctenah ae ü atjd itiuinbe- Distribution jede fast für es da gibt. einfach, Pakete binäre recht fertige ist reits Syslog-ng des Installation Die I I I I I abr n lr Konfigurationsdatei klare und Saubere der Zuordnung einfachere eine Meldungen erlaubt Rechnernamen langer Unterstützung Die PostgreSQL-Datenbank oder MySQL- einer in TCP Protokollierung oder UDP per Meldungen der Transport Ausdrücken regulären inklusive Filterfunktionen Bessere Tipp o ylgn.Sebace ihswie utn l e Syslog-ng den als tun, auszuwählen. zu Konfiguration YaST weiter die in nichts auch brauchen und Sie Installation Syslog-ng. die von unter- YaST SUSE über einsetzen. des direkt Konfiguration SUSE-Distribution stützt und eine Installation Sie die wenn Sie Syslog-ng, für ist einfach Besonders http://www.balabit.com/products/syslog_ng/ ./contrib s iewieeAlternative weitere eine ist ) verwenden. 0Znrl Protokollserver Zentrale 10 10.3 Syslog-ng library

Achtung

Für die Übersetzung benötigen Sie zusätzlich das libol-Paket. Die- open source ses Paket erhalten Sie auf http://www.balabit.com/downloads/libol/0.3/. Übersetzen und installieren Sie dieses Paket zuerst! Außerdem gibt es teilweise Probleme mit der Flex-Version. Ab Version 2.5.4 schlägt die Kompilierung teilweise fehl. Die Syslog- ng-FAQ gibt hier weitere Hinweise (http://www.campin.net/syslog- ng/faq.html).

Tipp Bei der Konfiguration des Syslog-ng-Quelltext-Pakets können Sie einige optionale Funktionen aktivieren. Hierbei handelt es sich sowohl um Unterstützung für Sun Solaris-Betriebssysteme (--enable- sun-streams und --enable-sun-door) als auch um die Unterstützung für TCPwrapper (--enable-tcp-wrapper) und Source-Spoofing (--enable- spoof-source).

Nun müssen Sie noch den Syslog-ng konfigurieren. Der Syslog-ng verfolgt in seiner Konfigurationsdatei eine andere Philosophie als der BSD-Syslog und der modulare Syslog. Sie definieren zunächst die Quelle (Source) einer Meldung. Eine typische Quelle ist: source src { unix-stream("/dev/log"); };

Anschließend definieren Sie einen oder mehrere Filter und dann die möglichen Ziele: filter mail { facility("mail") and level ("info"); }; destination mail_file { file("/var/log/mail"); };

Wenn Sie Quellen, Filter und Ziele definiert haben, können Sie einen Protokollpfad (log path) definieren. Dieser Protokollpfad beschreibt, dass Meldungen aus einer bestimmten Quelle, auf die ein bestimmter Filter zutrifft, in einem bestimmten Ziel protokolliert werden sollen: log { source(src); filter(mail); destination(mail_file); };

Da das Syslog-ng-Handbuch sehr ausführlich ist, werde ich mich hier nur auf die Beschreibung einiger spezieller Punkte beschränken. Zunächst möchte ich Ihnen eine typische Syslog-ng-Konfigurationsdatei für ein Linux-System vorstellen und erklären:

229 open source library #use_time_recvd(no); disabled) keep_hostname(yes); (default # use_fqdn(yes); { options options # ###### 230 eal we,gop n emsin o o files #perm(0600); log 0600) for 0, #group(root); permissions 0, and are #owner(root); group, (defaults files owner, # destination default for # creation directory queue disable output or create_dirs(yes); the enable in # fitting activity lines disk of less number log_fifo_size(2048); with want the catching you # isn’t if disk or 0) your get laptop) is file #sync(0); if you a (default to this messages on # written increase log (say before to the # buffered want all lines closed might # of is you number file # the destination # idle an before 60) wait is time_reap(360); to re-established (default time is # the connection # died a before 60) wait is time_reopen(10); to (default time # the received # or (default) original log: to time which # hostname original the keep # disabled) hostnames is qualified (default fully # enable # logs in format enabled) hostname is chain_hostnames(no); chained (default the # disable # 0Znrl Protokollserver Zentrale 10 10.3 Syslog-ng library

# default owner, group, and permissions for created directories

# (defaults are 0, 0, 0700) open source #dir_owner(root); #dir_group(root); dir_perm(0700);

# enable or disable DNS usage # syslog-ng blocks on DNS queries, so enabling DNS may lead to # a Denial of Service attack # (default is yes) use_dns(no);

# maximum length of message in bytes # this is only limited by the program listening on the /dev/log Unix # socket, glibc can handle arbitrary length log messages, but -- for # example -- syslogd accepts only 1024 bytes # (default is 2048) #log_msg_size(2048); };

# sources

source s_local { # message generated by Syslog-NG internal(); # standard Linux log source (this is the default place for the syslog() # function to send logs to) unix-stream("/dev/log"); # messages from the kernel file("/proc/kmsg" log_prefix("kernel: ")); };

source s_external { # tcp socket tcp ( ip(0.0.0.0) port(5140) keep-alive(yes)); };

# destinations

# some standard log files destination df_auth { file("/var/log/auth.log"); }; destination df_syslog { file("/var/log/syslog"); };

231 open source library itrfeeg{lvleeg;}; level(emerg); emerg { priority f_emerg with filter messages # auth, the form }; coming not facilities priority news warn and or mail, { notice, daemon, f_messages info, cron, filter of authpriv, messages # all }; # level(info..emerg); { f_at_least_info filter }; facility(user); }; { facility(mail); f_user }; user, { filter facility(kern); news, f_mail }; { mail, filter facility(daemon); f_kern lpr, }; { filter kern, facility(cron); f_daemon daemon, { filter cron, facilities f_cron the uucp facilities filter from and authpriv }; messages # and authpriv); respectively: auth facility(auth, # the not from { except f_syslog facilities messages filter authpriv }; all and authpriv); # auth facility(auth, the { from f_auth messages filter all # filters # }; ###### file("/var/log/external"); external { from d_external in messages destination logged all everyone }; # to usertty("*"); messages { send du_all will destination this # consoles }; # file("/var/log/messages"); { df_messages destination }; file("/var/log/user.log"); }; { file("/var/log/mail.log"); df_user }; { destination file("/var/log/kern.log"); df_mail }; { destination file("/var/log/daemon.log"); df_kern }; { destination file("/var/log/cron.log"); df_daemon { destination df_cron destination 232 level(info,notice,warn) n o facility(auth,authpriv,cron,daemon,mail,news); not and 0Znrl Protokollserver Zentrale 10 10.3 Syslog-ng library

###### open source # logs # order matters if you use "flags(final);" to mark the end of processing in a # "log" statement log { source(s_local); filter(f_auth); destination(df_auth); }; log { source(s_local); filter(f_syslog); destination(df_syslog); }; log { source(s_local); filter(f_cron); destination(df_cron); }; log { source(s_local); filter(f_daemon); destination(df_daemon); }; log { source(s_local); filter(f_kern); destination(df_kern); };

log { source(s_local); filter(f_mail); filter(f_atleast_info); destination(df_mail); };

233 open source library ncleeddfiirnSedePooolule.He ud ieQel ü lokale für Quelle eine ( wurde Hier Meldungen Protokollquellen. die können. Sie werden definieren gehalten Anschließend auseinander leichter Rechner die dass so Hostnamen, e ylgn-evrzgefndr,vrednSefled el ndrDatei der in Zeile folgende auf Sie 192.168.0.0/24 Netzwerk verwenden lokale darf, das zugreifen nur Syslog-ng-Server Beispiel den zum Damit dürfen. zustellen e pinn neesn u ie ylgn-osre,drac o ue Mel- außen von Option auch die der ist entgegennimmt, Syslog-ng-Logserver, Optionen dungen einem unterstütz- Einige alle auf Sie Syslog-ng. Interessant finden Optionen. des Syslog-ng-Handbuch ten Optionen dem In der aufgeführt. Konfiguration beispielhaft sind der mit beginnen Sie }; { log }; { log }; { log }; { log 234 typischen von Menge kleine Protokollmeldun- die eine wo nur Ziele, wurden die Hier und sollen. Filter werden die gespeichert Sie gen definieren Quellen den Nach 192.168.0.0/255.255.255.0 EXCEPT ALL syslog-ng: /etc/hosts.deny /etc/hosts.allow n im irPoooledne o ue nggn enSednSyslog- den Sie 5140 Wenn Port entgegen. dem Option außen auf der von mit TCP-Socket Protokollmeldungen ng einen hier nun nimmt öffnet und Syslog-ng Der definiert. werden, gdnoiiae otae e ehes e i edn eedtht anstelle hat, gesendet Option Meldung Die die der eigenen. Rechners, seines des Hostnamen originalen den ng destination(d_external); source(s_external); destination(du_all); filter(f_emerg); source(s_local); destination(df_messages); filter(f_messages); source(s_local); destination(df_user); filter(f_user); source(s_local); s_local : und n ieQel ü edne,deüe C transportiert TCP über die Meldungen, für Quelle eine und ) --enable-tcp-wrapper /etc/hosts.deny use_fqdn etee,wlh ehe Protokollmeldungen Rechner welche festlegen, rtklir anac e vollqualifizierten den auch dann protokolliert brez ae,kne i ndnDateien den in Sie können haben, übersetzt keep_hostname ai rtklir e Syslog- der protokolliert Damit . 0Znrl Protokollserver Zentrale 10 10.3 Syslog-ng library

Filtern und Zielen definiert. Sämtliche über das Netzwerk empfangenen Nachrich- ten werden komplett in einer eigenen Datei abgelegt. Die lokalen Meldungen wer-

den wie üblich auf verschiedene Dateien aufgeteilt. open source Der Syslog-ng kann auch eine Protokollierung direkt in einer Datenbank vorneh- men. Hierzu unterstützt der Syslog-ng die MySQL- und die PostgreSQL-Datenbank. Damit Sie die Meldungen anschließend komfortabel betrachten können, existieren verschiedene in PHP geschriebene Oberflächen für die Verwaltung der Meldungen. Ich möchte Ihnen hier nur eine Oberfläche vorstellen: I php-syslog-ng: http://www.phpwizardry.com/php-syslog-ng.php. Dies ist die aktive Weiterentwicklung des originalen php-syslog-ng von dieser Seite: http://www. vermeer.org/projects/php-syslog-ng. Es bietet einen sehr mächtigen Zugriff auf die in der MySQL-Datenbank gespeicherten Daten (siehe Abbildung 10.1). Um diese Funktion zu nutzen, müssen Sie zunächst den Syslog-ng so konfigurieren, dass er seine Meldungen in die Datenbank schreibt. Hierzu benötigen Sie zunächst ein Ziel (Destination), das die Meldungen in die Datenbank schreibt:

# pipe messages to /var/log/mysql.pipe to be processed by mysql destination d_mysql { pipe("/var/log/mysql.pipe" template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg) VALUES ( ’$HOST’, ’$FACILITY’, ’$PRIORITY’, ’$LEVEL’, ’$TAG’, ’$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC’,’$PROGRAM’, ’$MSG’ );\n") template-escape(yes)); };

Tipp Bevor Sie diese Zeilen abtippen, möchte ich Sie darauf hinweisen, dass sich in dem Unterverzeichnis ./scripts in dem Paket phpsys- logng eine Beispielkonfiguration in der Datei ./scripts/syslog.conf be- findet.

Dieses Ziel schreibt nun die Meldungen in eine Datei /var/log/mysql.pipe. Dabei han- delt es sich jedoch nicht um eine normale Datei, sondern um eine Pipe. Diese müs- sen Sie manuell anlegen: $ sudo mkfifo /var/log/mysql.pipe

Eine derartige Named-Pipe ähnelt der Pipe (|) auf der Kommandozeile. Ein Prozess schreibt in die Pipe, während ein anderer Prozess die Daten in derselben Reihen- folge ausliest. Da die Daten bereits in der SQL-Sprache in die Pipe geschrieben

235 open source library 236 nach komfortabel betrachten. Sie sie können und php-syslog-ng suchen PHP-Frontend Meldungen dem Mit 10.1: Abbildung 0Znrl Protokollserver Zentrale 10 10.3 Syslog-ng library werden, benötigen Sie jetzt nur noch ein Programm, das die Daten aus der Pipe ausliest und in die Datenbank schreibt. Das Datenbank-Managementsystem (DBMS)

MySQL selbst kann dies nicht. Hierfür genügt aber das folgende einfache Skript sys- open source log2mysql.sh: #!/bin/bash if [ ! -e /var/log/mysql.pipe ] then mkfifo /var/log/mysql.pipe fi while [ -e /var/log/mysql.pipe ] do mysql -u syslogfeeder --password=PW_HERE syslog < /var/log/mysql.pipe >/dev/null done

Dieses Skript wird ebenfalls mit phpsyslogng als ./scripts/syslog2mysql.sh mitgelie- fert. Damit dieses Skript jedes Mal nach einem Neustart automatisch aufgerufen wird, kann es sehr einfach über den Cron-Daemon eingebunden werden. Wenn Sie den Vixie-Crond auf Ihrem Linux-System verwenden, so besitzt dieser seit über 10 Jahren die Möglichkeit, jedes Mal nach einem Reboot des Systems einen Befehl zu starten. Tragen Sie einfach folgende Zeile in der Daei /etc/crontab ein: @reboot root /usr/local/bin/syslog2mysql.sh >> /var/log/syslog2mysql 2>&1

Jetzt müssen Sie noch die Datenbank anlegen. Starten Sie Ihr MySQL-DBMS. Für die Erzeugung der Datenbank enthält die aktuelle Version des phpsyslogng-Pakets in dem Unterverzeichnis ./scripts eine Datei scripts/dbsetup.sql. Sie müssen diese Datei nur in Bezug auf die zu verwendenen Kennwörter anpassen und können dann das Skript aufrufen: $ mysql -u root -p < scripts/dbsetup.sql

Nun müssen Sie nur noch im Syslog-ng die Meldungen auswählen, die in der Da- tenbank protokolliert werden sollen. Hierzu fügen Sie einen Protokollpfad in der Konfigurationsdatei des Syslog-ng hinzu. Am einfachsten ist der folgende Proto- kollpfad ohne Filter: log { source(src); destination(d_mysql); };

Damit Sie später auch der Menge der Protokolleinträge in der Datenbank Herr werden, hat Claus Lund, der Entwickler von phpsyslogng ein Rotationsskript (./scripts/logrotate.php) geschrieben, das täglich die Log-Tabelle in der Datenbank umbenennt und eine neue Tabelle beginnt. Dieses Skript müssen Sie in Bezug auf den Installationsort von phpsyslogng anpassen: $APP_ROOT = ’/var/www/phpsyslogng’;

237 open source library bidn 02 e e rtnLgnmle i ihmtamnamnan. admin/admin mit sich Sie melden Login ersten dem Bei 10.2: Abbildung 238 der Eingrenzen das Ihnen erlaubt Meldungen. Suchmaske gewünschten mächtige Eine 10.3: Abbildung 0Znrl Protokollserver Zentrale 10 10.3 Syslog-ng library open source

Abbildung 10.4: Die Ergebnisse werden in Farbe dargestellt.

Abbildung 10.5: Für die tägliche Arbeit können Sie auch zusätzliche Benutzer anlegen.

239 open source library e ndmAah ie itaHs ü issVrecns ncleedmüssen Anschließend Datei Verzeichnis. die dieses erzeu- für und lediglich VirtualHost an Sie einen Verzeichnis Apache neues dem ein Ihres in auch DocumentRoot-Verzeichnis gen Sie damit, legen das Vielleicht Sie in kopieren. Beginnen phpsyslogng-Quelltextbaum Webservers einfach. den recht ist Sie phpsyslogng dass verwenden von und Konfiguration lesen restliche Skripten Die diese root enthalten, nur Datenbank dass die setzen, auf so darf! Zugriff Rechte den die für Sie Kennwort sollten das 2>&1 Skripten /var/log/syslog2mysql sämtliche Da >> /usr/local/bin/mysql-backup.sh root Sie Fügen aufrufen. @daily Cron-Daemon den Cron-Tabelle über Ihrer Zeilen ebenfalls folgende Sie dazu können Skripten Diese 600 mask with created /var/log/backup syslog directory --allowold have --password=g3h31m /var/log/backup you --user=syslogadmin sure /usr/bin/mysqlhotcopy make # #!/bin/bash Datenbank der Backup ein das Skript, folgendes durchführt: noch auch ich empfehle Zusätzlich 240 e e oi önnSesc mit sich Sie können Login- Login die dem sehen Bei und verbinden ge- Browser richtig (Abbildung einem phpsyslogng alles mit von Sie bereits Seite Haben sich anpassen. Sie richtig können wieder macht, Kennwörter sämtliche Sie dass 10.4 ndrDtnaksce (Abbildung suchen Datenbank der in n etr euzralgn(Abbildung anlegen Benutzer weitere und ) ./config/config.php 10.2 Admin/Admin 10.3 ). /etc/crontab nasn irsltnSedru achten, darauf Sie sollten Hier anpassen. ,deEgbis erctn(Abbildung betrachten Ergebnisse die ), nedn ncleedkne Sie können Anschließend anmelden. 10.5 ). hinzu: 0Znrl Protokollserver Zentrale 10 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library eso i smersh rporpi u cuzdrItgiä n Authen- und Integrität der werden. Schutz eingesetzt der zum tizität ab als Kryptographie kann asymmetrische Multicast Hierfür die sowohl Unicast, Informationen. 4 vor Version transportierten Schutz per der keinerlei Port können UDP-Protokoll Modifikation das oder Zeitinformationen diesen bietet Spoofing Leider Die werden. Protokoll Server. verteilt UDP-Port Broadcast als und den das auch Informationen wie verwendet der Client Transport Ungewöhnlicherweise zum 123. verwendet und NTP-Protokoll besitzt Funktionen Das weniger aber ist. ist, Simple-Network-Time-Protocol implementieren ähnlich zu das einfacher NTP-Protokoll auch dem existiert das NTP-Protokoll RFC (SNTP), dem einem in zu ( nicht ternativ Draft bisher ein ist lediglich 4 ietf-ntp-ntpv4-proto/draft-ietf-ntp-ntpv4-proto-00.txt existiert Version Es Die ist. worden. asym- kompatibel von IPv6. beschrieben Unterstützung (RFC1119) und die 2 ist Kryptographie und 4 Ver- (RFC1059) Version metrischer der Protokolls 1 des mit Versionen Neuerung das den Protocol wesentliche Protokolls, und Time Die des 1305) Network 4 das (RFC Version Zeit 3 die langer sion ist vor Aktuell bereits worden. ist geschaffen lösen, (NTP) zu Problem Mail- verwenden? dieses drei Zeitbasis oder Um unterschiedliche zwei eine über Systeme E-Mail alle einer wenn synchroner den Laufzeit ermitteln, nicht die Relays bei und Sie ist möchten Protokollen Wie Firewall von schwierig. zuerst Auswertung Zeit der was normale die raten, Datenbank, Auch Pro- Sie ist? den passiert der Wollen in zusammenpassen? Zeiten Webservers, nicht die Intrusion-Detection-Systems wenn angegriffenen auswerten, des Protokolle die tokollen Sie größter Netzwerk- wollen von Wie sämtlicher Zeit- (Incident) Ereignisses Bedeutung. Zeitsynchronisation sicherheitsrelevanten zentrale eines zentrale Falle an im die komponenten Gedanken ist NTP keinen Dabei synchronisation. verschwenden Zeitsynchronisationsprotokoll Das Systemadministratoren Viele 11.1 synchronisieren. Ihnen, damit zeigt Systeme Kapitel Ihre Dieses und vor- versorgt. aufsetzen Zeitserver Zeitserver Uhrzeit zentralen einen korrekten einem Sie der wie an mit Zeitbasis Weg Systeme einheitliche kein die eine führt der über erreichen, bei, Protokolle zu die dies dass Um kor- auch wichtig, verfügen. Intrusion-Detection-Systems vielleicht es Ihres ist und und möchten, möchten Webservers relieren Ihres auswerten Protokollen später mit Firewall-Protokolle noch Ihre Sie Wenn 11 etaeZeitsynchronisation Zentrale ,drdsPooolbsheb.Al- beschreibt. Protokoll das der ), http://tools.ietf.org/wg/ntp/draft-

open source library open source library evrz ycrnsee.DrKommandozeilenbefehl Der synchronisieren. zu server ndmQelae,flsSettähihdsPktmnelisalee möchten. installieren manuell Paket das das dass tatsächlich sicher, bitte Sie Sie stellen falls Ansonsten Installationsanleitung Quellpaket, eine finden dem Sie Quellen. in den aus Installation der Beschreibung uähtbtahe i i ofiuaindsNPSresasCin n anschlie- und Client als Server. NTP-Servers als des ßend Konfiguration die wir betrachten Zunächst i mhugtneneezeSfwr ü e ubuensZisresafder auf Zeitservers eines Aufbau der den ist für Linux Software von Basis eingesetzte häufigsten ntpd-Zeitserver am Der Die 11.2 Synchronisation zur Zeitserver mehrere oder Mitleiden- können in Systems Systeme einsetzen! Zeitsynchronisation Alle eines Ihre wird. Systeme System Ausfall gezogen verteilte diesem beim schaft auf global dass Uhrzeit mehrere falschen Gefahr, einer Sie die bei dass Inter- besteht darauf, im Ansonsten NTP-Server bitte weitere verwenden. Sie NTP-Servers achten Ihres verwenden, Synchronisation net die zur für Rechner Sie diesen Wenn die DCF-77- Systeme, mit Server Alle Stratum-2-Systeme. einen sind Stratum-1-Server. verwenden, selbst ein Stratum-1-Server Synchronisation Sie dies einem Wenn ist von Zeit. aufsetzen, Server seine Uhr ist ein ungenauer sich Stratum- desto weg einem befindet, weiter mit Stratum-3-Server wieder Je mit sich synchronisiert. Ein der direkt 1-Server Stratum-2-Server, ist verbunden. einem auf Stratum-1-Server mit Atomuhr) sich Ein Sie synchronisiert (z.B. eingeteilt. finden Server Zeitquelle Hochpräzisionszeitquelle etc. NTP-Servern als einer Na- 1,2,3- verfügbaren Stratum NTP-Server verfügt. in frei andere werden Linux-Unterstützung öffentlich mehrere über von oder http://www.pool.ntp.org/ Produkt Liste einen das Eine auch nutzen. dass Sie GmbH darauf, können DIGITALSYSTEME türlich nur und Sie Beispiel ANALOG- zum ten GUDE eine wie sein, über von DCF-77-Uhr das ( Mouseclock NTP-Server eine werden, kann einen Expert eingesetzt Zeitquelle auf die System Die verfügt. NTP-Clients jedes Zeit eines kann genaue NTP-Server Zugriff Als beim eingesetzt. wird NTP-Protokoll Das 242 Client Der Das 11.2.1 i Software die atnudwr o e nentSfwr osrimetikl n gepflegt und entwickelt Consortium Software Internet dem von ( wird und halten inentlugnkmaie.E nesüz ihrjdc ih T eso 4 Version der NTP Da nicht Konfigura- Authentifizierung. vielen jedoch keine in bisher auch und damit unterstützt und Funktionen Er seinen kompatibel. in tionseinstellungen einfacher wesentlich ist Zeitserver http://www.gude.info http://ntp.isc.org ntp Pktetätze ölckie,u i ytmasCin i ie Zeit- einem mit Client als System ein um Möglichkeiten, zwei enthält -Paket ntpd nalnatelnDsrbtoe nhle s,saeihmrhe die hier mir ich spare ist, enthalten Distributionen aktuellen allen in openntp .En etr ölcki ü e ubuensNPSresist NTP-Servers eines Aufbau den für Möglichkeit weitere Eine ). .Atrai önnSeac ieGSMu uzn Ach- nutzen. GPS-Maus eine auch Sie können Alternativ ). o e pnS-rjk ( OpenBSD-Projekt dem von und ntpd (früher http://ntp.isc.org/bin/view/Servers/WebHome xntpd .E s ndnmitnDsrbtoe ent- Distributionen meisten den in ist Er ). ntp PktIrrDsrbto ntlir ist. installiert Distribution Ihrer -Paket http://www.openntpd.org 1Znrl Zeitsynchronisation Zentrale 11 ntpdate ür ieeinmalige eine führt .DieServer .Dieser ). 11.2 Der ntpd-Zeitserver library

Synchronisierung durch. Der Server ntpd kann auch als Client eine ständige Syn- chronisierung des Clients mit einem NTP-Server ermöglichen. Sinnvoll ist daher

der Einsatz des ntpd als Client, um die ständige Synchronisierung zu gewährleis- open source ten. Der ntpdate-Befehl wird jedoch in zukünftigen Versionen der Software entfernt werden, da er bereits jetzt durch den Aufruf ntpd -q ersetzt werden kann.

Hinweis Wenn die Zeit des Clients um mehr als 1000 Sekunden von der Zeit des Servers abweicht, weigert sich der ntpd, die Zeit zu synchroni- sieren. Daher wird häufig der Befehl ntpdate vor dem Start des ntpd aufgerufen. Wenn Sie diesen Befehl durch ntpd -q ersetzen möchten, müssen Sie hier zusätzlich -g angeben. Diese Option schaltet die 1000-Sekunden-Prüfung ab.

Die Konfiguration des ntpd als Client ist sehr einfach. Erzeugen Sie lediglich die folgende Konfigurationsdatei /etc/ntp.conf:

# Erlaube per Default niemandem die Modifikation, die Abfrage oder # das Monitoring des Zeitservers restrict default ignore

# Erlaube alle Funktionen über das Loopback-Interface restrict 127.0.0.1

# Lokale Drift-Datei, muss schreibbar sein. driftfile /var/lib/ntp/drift

# Expert Mouseclock # Generiere Link: ln -s /dev/ttyS0 /dev/refclock-0 # server 127.127.8.0 mode 5

# Server im Internet server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org

# Lokale Uhr server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10

Ausgestattet mit dieser Konfigurationsdatei, können Sie Ihren NTP-Server bereits probehalber starten. Natürlich sollten Sie die eingetragenen Server im Internet prü- fen und bei Bedarf durch andere ersetzen. Um den NTP-Server probehalber zu starten, geben Sie auf der Kommandozeile zunächst den Befehl ntpd -q -g ein. Dies

243 open source library LCL0 2... 06 .00 .0001.98436 0.000000 0.00000 3 64 1.98438 0.001728 1.98444 10 0.000760 0.07040 3 1.98438 0.23141 0.003562 3 0.15869 64 3 127.0.0.1 64 3 ntpdc> 64 1 192.168.255.100 =frigg.interstro 192.168.255.100 3 =gatekeeper.no-s 192.168.255.100 =LOCAL(0) =216.154.195.60 ======überprüfen. i önndeFnto e tdnnmtdmBefehl dem mit nun Ntpd des Funktion die können lassen. läuft, Sie Hintergrund anzeigen im Prozesse richtig laufenden Ntpd die der sich ob Sie Sie, indem Prüfen beenden. sofort scheinbar sich oadSeein Sie Sobald t.DeMnaegb he etr uknt.DrBefehl Der Auskünfte. weitere Ihnen ändern gibt Rechte betrachten, Manpage Zustand Die aktuellen etc. den entfernen, und hinzufügen Server utnea.DeeseSat itInnAsuf brdnZsaddsPeers: des Zustand den über Auskunft Ihnen gibt Spalte erste Die an. Zustände LCL0 2... 06 700000000 0.66202 0.000000 0.00000 37 64 10 0.66310 0.003562 0.15869 37 127.0.0.1 64 3 192.168.255.100 =LOCAL(0) *216.154.195.60 ======-p ntpdc Befehl Der ntpdc> # Kommando das Sie geben Anschließend -6.640906s set time ntpd: # Sekunden einige kann Vorgang Dieser durch. dauern: Synchronisation einmalige eine führt 244 # eel e i arcenihbace.Sekne isnBfh uhdrk mit direkt auch Befehl diesen können Sie brauchen. wahrscheinlich Sie den Befehl, hoiainmtdmetpehne System. entsprechenden dem mit chronisation I I I I I I ntpdc -g -q ntpd td -p ntpdc * ~ ^ = - + des n eg en Synchronisationsfähigkeit. seine zeigt und Adresse i ismSre rog kul i Synchronisation. die aktuell erfolgt Server diesem Mit empfangen. : Adresse dieser von werden Broadcasts versandt. : Adresse die an werden Broadcasts abgefragt. : Clientmode die im wird Nachrichten. an Peer aktive Der symmetrisch : Nachrichten empfängt Rechner regelmäßig Der passiv. sendet Symmetrisch : Rechner Der aktiv. Symmetrisch : eoelcls olrahdlyofe disp offset delay reach poll st local remote eoelcls olrahdlyofe disp offset delay reach poll st local remote peers urfn isrBfh eg he i kule er e evr n ihre und Servers des Peers aktuellen die Ihnen zeigt Befehl Dieser aufrufen. ntpdc * rab i opet diitaindsNp-evr.Sekönnen Sie Ntpd-Servers. des Administration komplette die erlaubt ndrese pleekne önn rog ieatv Zeitsyn- aktive eine erfolgt können, erkennen Spalte ersten der in ntpd u e omnoel i.E sollte Es ein. Kommandozeile der auf 1Znrl Zeitsynchronisation Zentrale 11 ntpdc u e oae System lokalen dem auf peers s e häufigste der ist 11.3 Sicherheit library

=gatekeeper.no-s 192.168.255.100 1 64 37 0.23141 0.000760 0.66327 =frigg.interstro 192.168.255.100 3 64 37 0.07040 0.001728 0.66351 open source Sobald der NTP-Server als Client zu Ihrer Zufriedenheit läuft, können Sie ihn mit kill beenden und über die Startskripten Ihrer Distribution starten. Prüfen Sie bitte, ob der Server anschließend auch tatsächlich läuft. Viele Distributionen verwenden einen eigenen Benutzer für den Betrieb des NTP-Servers und starten ihn in einem Chroot (siehe »Sicherheit«, 11.3). Dabei kann es zu Rechteproblemen kommen. Prü- fen Sie die Protokolle Ihrer Distribution, um mögliche Fehlermeldungen zu finden.

11.2.2 Der Server Die bisher erstellte Konfigurationsdatei erlaubt den Betrieb eines NTP-Servers als Client. Dieser Client wird sich nun ständig mit den verfügbaren Zeitquellen syn- chronisieren. Häufig möchten Sie aber auch einen eigenen Zeitserver betreiben, so dass sich weitere Clients mit diesem Zeitserver synchronisieren können. Die bisherige Konfiguration erlaubt es keinem Client, Synchronisationsanfragen an diesen Server zu schicken, und der Server versendet auch keine Broadcast-Pakete. Die Verwendung des Broadcast- oder Multicast-Transports kann ich auch nur emp- fehlen, wenn Sie gleichzeitig eine Authentifizierung aktivieren (siehe Abschnitt 11.3). Die Gefahr eines gespooften NTP-Angriffs ist ansonsten zu hoch. Um einen Broadcast-Server zu konfigurieren, müssen Sie die Konfigurationsdatei nur um eine Zeile ergänzen: broadcast 192.168.0.255

Wenn ein Client diesen Broadcast-Server nutzen soll, tragen Sie auf dem Client die folgenden beiden Zeilen ein: broadcastclient broadcastdelay 0.008

Um Unicast-Clients zu unterstützen, fügen Sie eine zusätzliche Zeile mit dem re- strict-Parameter in der Konfigurationsdatei hinzu. Achten Sie darauf, dass Sie bei der Angabe den Clients nur die Abfrage der Synchronisationsinformationen erlau- ben. restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

Nun dürfen Clients in dem Netzwerk 192.168.0.0/24 diesen NTP-Server als Zeitser- ver zur Synchronisation nutzen.

11.3 Sicherheit

In einem Firewall-Buch muss beim Einsatz von NTP auch über die Sicherheit des Protokolls, der Server und des Clients gesprochen werden. Dabei müssen zwei Aspekte betrachtet werden:

245 open source library uwcsl.Hemtrdzee i ölceGfhe e ie nrf u den der auf Damit Angriff Chroot-Verzeichnis einem ein bei in Gefahren mögliche und enorm. Sie Dienst abzugeben reduzieren Hiermit root-Privilegien wechseln. die zu Start seinem nach i e Option der mit 4. 3. 2. menahtnitdeAtetfiirn i ymtice clsen ae soll werden. Daher besprochen Schlüsseln. zuerst symmetrischen hier mit Authentifizierung Authentifizierung diese die ist einfachsten erzeugen. Um Am Schlüssel Methoden. zunächst kryptographische der Sie müssen unterstützt NTP-Protokolls nutzen, Spoofing des zu wie 4 diese Protokoll Version das der auf in Angriffen NTP-Server direkten vor ab- Schutz root-Privilegien Zum die auch Prozess der wenn nur, gibt! Sicherheit die erhöht Funktion eöit ndsVrecnskpee.Hebihnete ihmnetn mdie um mindestens sich es handelt Hierbei kopieren. Datei Verzeichnis das in benötigt, 246 1. Schlüsseln: von Arten problematisch verschiedene vier Dritten gibt mit Es Austausch transpor- der vertraulich und sehr Schlüssel muss kann. ist der sein werden Verteilung da gespeichert die Nachteil, denn und ein Vorteil, tiert gleichzeitig ein auch sowohl aber ist einfach, Dies Schlüssel. Authentifizierungspartner identische beide über verfügen Authentifizierung symmetrischen Authentifizierung der Symmetrische Bei 11.3.1 ncleedsatnSednNPSre i e Option der mit NTP-Server den Sie starten Anschließend erforderlich. quellen ai e T-evri ie hotVrecnsabie,mse i a Ver- das der die Sie Dateien, müssen alle arbeitet, Sie müssen Chroot-Verzeichnis Hierzu einem vorbereiten. zeichnis in NTP-Server der Damit hat, ändern. gebunden entsprechend 123/udp Benutzerkontext Port den seinen an er NTP-Server wird der sich Sobald übergeben. Gruppe ohdeVerzeichnisse die noch mdeScehi e evr u ot13z röe,itder ist erhöhen, zu 123 Port auf Servers des Sicherheit die Um I I N S M A e.Dee rtkl ittkie cuzdrItgiä n uhniiä.Ein Authentizität. und Integrität der möglich. Informatio- leicht Schutz der ist keinen Transport Spoofing-Angriff bietet den Protokoll für Dieses UDP-Protokoll nen. das nutzt NTP-Protokoll NTP-Server Der Das werden! Verfügung. gestartet zur (< root-Rechten root Port Benutzer mit privilegierter dem daher ein nur muss daher ist steht Dies er 123/udp. und Port 1224), den verwendet NTP-Server Der ie 4BtWr i e öhtetgtnBtpoBt l Parität als Byte pro Bit (DES) höchstwertigsten Parität dem als mit Byte 64-Bit-Wert pro Einen Bit : niedrigstwertigsten dem mit 64-Bit-Wert Einen Zeichen : 31 maximal mit ASCII-Schlüssel Einen Zeichen : 8 maximal aus ASCII-Schlüssel Einen : ntp.conf ntpd n i rf-ae.I bäggetdrKngrto idauch sind Konfiguration der Abhängigkeit In Drift-Datei. die und ahdmSatdero-rvlge bit üsnSebi Start beim Sie müssen abgibt, root-Privilegien die Start dem nach untp:ntp -u /var/run ie nrvlgetnBnte n ieunprivilegierte eine und Benutzer unprivilegierten einen , /var/log n das und /dev VrecnsmtlklnZeit- lokalen mit -Verzeichnis 1Znrl Zeitsynchronisation Zentrale 11 T/var/chroot-dir -T ntpd ü en Funktion seine für ntpd ndrLage, der in .Diese 11.3 Sicherheit library

Die Schlüssel A und M sind am einfachsten zu handhaben. Diese Schlüssel müssen nuninderDatei/etc/ntp/keys abgespeichert werden:

1 A ABCDEFGH open source 2 M qwertzuiopasdfghjklyxcvbnmqwer

Jeder Schlüssel in dieser Datei erhält eine Nummer und einen Typ. Über die Num- mer des Schlüssels werden diese nun in der Konfigurationsdatei referenziert. Da- mit ein Client einen Schlüssel für die Verbindung zu einem Server nutzt, muss er zunächst dem Schlüssel vertrauen (trust) und wissen, welchen Schlüssel er für welchen Server verwenden soll: trustedkey 1 2 server 192.168.0.5 key 1 server 192.168.0.7 key 2

Der Server benötigt identische Schlüssel und muss ebenfalls den Schlüsseln ver- trauen. Wenn Sie die Zeit per Broadcast verteilen möchten, müssen Sie auf dem ServerdenSchlüsselinderbroadcast-Zeile definieren und ebenfalls auf dem Client und dem Server den Schlüsseln vertrauen: trustedkey 1 2 broadcast 192.168.0.255 key 1

Auf dem Client genügen dann die folgenden Zeilen: broadcastclient trustedkey 1 2 keys /etc/ntp/keys

11.3.2 Asymmetrische Authentifizierung Die asymmetrische Authentifizierung ist in vielen Umgebungen die bessere Lösung. Sie müssen nun nur die öffentlichen Schlüssel (Public Keys) sämtlicher Systeme untereinander austauschen. So ist es auch einfach möglich, zu dritten Instanzen sichere Verbindungen aufzubauen. Die asymmetrische Authentifizierung wird beim ntpd als Autokey bezeichnet. Bei der Konfiguration wird zwischen Broadcast- und Multicast-Autokey und Unicast- Autokey unterschieden. Während das Unicast-Autokey-Verfahren auf dem Client konfiguriert wird, wird das Broadcast- und Multicast-Autokey-Verfahren auf dem Server konfiguriert. Für das Broadcast-Autokey-Verfahren tragen Sie auf dem Server folgende Zeile ein: broadcast 192.168.0.255 autokey

247 open source library u e letiprirnudisalee.U e clse n a Zertifikat das und Schlüssel Sie: auch verwenden den erzeugen, nun Um zu Server installieren. Client der den und für erzeu- Schlüssel importieren Zertifikat entsprechenden Client ein dem die und auf Schlüssel Sie einen müssen auch Anschließend zunächst gen. Sie müssen Client dem Auf anmse i ohdeShüslezue n etie.Atkyunterstützt Autokey verteilen. MV. und und GQ erzeugen IFF, Schlüssel Identitätsschemata: die verschiedene drei noch Sie müssen Dann /etc/ntp (client|server)password keysdir pw crypto Zeilen: folgenden die noch Systeme beide benötigen Zusätzlich autokey ein: Zeile 192.168.0.5 folgende server Client dem auf Sie tragen Unicast-Autokey-Verfahren dem Bei 248 clientpassword -p -H ntp-keygen /etc/ntp cd werden. erzeugt neu anschließend müssen und gültig erzeugt. Jahr mit Zertifikat ein erfolgt ein Dies und für Key nur Server ein sind werden Diese Parameter der Erzeugung die Für I I I I t-egn- pserverpassword. -p N -V ntp-keygen /etc/ntp cd Clients. die für Schlüssel MV. serverpassword -p -G -T mit: erfolgt ntp-keygen Erzeugung /etc/ntp Die wird. cd genutzt Gruppe der in Systemen GQ. serverpassword -p -I -T ntp-keygen /etc/ntp Sie: verwenden cd erzeugen, zu IFF-Parameter die Um kann wer- Dabei transportiert exportieren. verschlüsselt Client Client-Passwort einem den. jeden mit für wieder Schlüssel Schlüssel der diesen müssen Sie erzeugt. IFF. t-egn- qsrepswr pclientpassword -p serverpassword -q Befehl: -e folgenden ntp-keygen den Sie verwenden Dazu exportieren. IFF. e e F-dniäsceawre ü ee evrseish Schlüssel spezifische Server jeden für werden IFF-Identitätsschema dem Bei e e F-rpeshüsl üsnSedeeafdnSrenzunächst Servern den auf diese Sie müssen IFF-Gruppenschlüsseln den Bei e e VShm regnSeennShüslfrdnSre n N-1 und Server den für Schlüssel einen Sie erzeugen MV-Schema dem Bei e e QIetttshm idenShüslezut e o allen von der erzeugt, Schlüssel ein wird GQ-Identitätsschema dem Bei d/t/t;npkye T- serverpassword -q -T ntp-keygen /etc/ntp; cd 1Znrl Zeitsynchronisation Zentrale 11 . 11.3 Sicherheit library

Diesen so mit dem Client-Password verschlüsselten Schlüssel können Sie nun per E-Mail verschicken oder per Diskette auf den Client transportieren. Spei-

chern Sie den Schlüssel auf dem Client in dem Verzeichnis /etc/ntp ab, und open source erzeugen Sie einen symbolischen Link: cd /etc/ntp ln -s ntpkey_IFFkey_server.3301264563 ntpkey_iff_server

I GQ. Kopieren Sie den GQ-Gruppen-Schlüssel sicher auf den Client, und erzeu- gen Sie ebenfalls eine Verknüpfung. d /etc/ntp ln -s ntpkey_GQpar_server.3301145293 ntpkey_gq_server

I MV. Kopieren Sie den auf dem Server erzeugten Client-MV-Schlüssel auf den Client, und erzeugen Sie ebenfalls die Verknüpfung. cd /etc/ntp ln -s ntpkey_MVkey1_server.3301144193 ntpkey_mv_server

Nach einem Neustart der ntpd-Daemons auf den Servern und Clients sollten Sie mit dem Kommando ntpq -p den Zustand der Synchronisation beobachten. Mit ntpq -c erhalten Sie Informationen über die Authentifizierung:

# ntpq -c nd assID status conf reach auth condition last_event cnt ======1 26132 f694 yes yes ok sys.peer reachable 9

249

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library i euzradrrDsrbtoe üsnFlgac o e Homepage der enthalten. von fest Fwlogwatch Debian-Distribution müssen der Distributionen in anderer nur im Benutzer Wissens wird und Die meines einfach ist recht zen- Fwlogwatch ist eine Dies richten ein. Sie möchten, Netzwerk oder durchführen das kopieren, Kapitel über manuell System Sicher- Protokollierung Protokolle anderen aus die trale einem Sie entweder Wenn Sie auf Firewall. müssen Installation der die auf üblicherweise heitsgründen Sie Fwlogwatch von installieren Installation Fwlogwatch 12.1.1 Erstellung die sich gestaltet sind, Linux-Guru Linux-Hausmitteln mit ein Alarmmeldungen wie speziellen Sie und wenn Zusammenfassungen ( von Auch vertrieben GPL-Lizenz auf. der Syntax unter Wesslowski Firewall-Protokolle. Boris fwlogwatch.inside-security.de/ für von speziell wird Echtzeit-Protokoll-Analysator Fwlogwatch ein ist Fwlogwatch Fwlogwatch 12.1 finde. schät- interessant Arbeit sehr meiner ich in die ich weitere, einige die ei- und Werkzeuge, habe, die die programmiert gelernt ist Ihnen oder zen Leider zeigt erfunden geben. Kapitel nicht zufrieden Dieses noch Bereich worden. Werkzeugen diesem besten Daher in den Proto- Firewall-Administrators. Wollmilchsau mit Die erlegende des nur passiert. Aufgaben sich was wichtigsten Sie wissen, sollten der auch eine Sie wollen ist betreiben, kollanalyse Firewall eine Sie Wenn 12 inkne i bdrVrin09wbair brenPPSrp ( PHP-Skript ein über webbasiert 0.9 Konfigura- Version Die der Web-Interface. ab Diese Sie ein können Überwachung erstellen. existiert die tion HTML-Format Fwlogwatch-Dienstes Für und werden. laufenden erstellt Text interaktiv eines durch- in oder Werkzeug automatisch Meldungen Namensauflösungen können diesem und Berichte mit direkt Berichte Grün- Sie und liegenden lesen, können führen nahe hinaus aus Protokolldateien Buch Darüber diesem beschränken. (gzip-)komprimierte in Iptables mich Li- auf werde Ich ipchains, XP den IDS. Windows Linux Snort PIX, analysieren: und Cisco IOS, Firewall zu Cisco Protokollformate ipfilter, Solaris/BSD/Irix/HP-UX verschiedenste nux/Iptables, Lage, der in ucfhe,dsi dem in das durchführen, grep 10 und beschrieben. Protokollanalyse awk ne mtne eh opiir.MtFlgac idSie sind Fwlogwatch Mit kompliziert. recht Umständen unter contrib/ .Frwl-rtklewie äfi iesh spezielle sehr eine häufig weisen Firewall-Protokolle ). Vrecnsmteifr wird. mitgeliefert -Verzeichnis fwlogwatch.php http:// )

open source library open source library uaindtiudenTmlt in Template ein und gurationsdatei n- ecr./ntdflgac /etc/rc.d/rc3.d/K10fwlogwatch /etc/rc.d/init.d/fwlogwatch /etc/rc.d/rc3.d/S90fwlogwatch -s /etc/rc.d/init.d/fwlogwatch ln -s # den ln für # Verknüpfungen einrichten: Bedarf die bei Hand und von überprüfen Runlevel Sie gewünschten sollten SUSE-Distributionen älteren Bei fwlogwatch --add chkconfig den # Sie rufen startet, Dienst als automatisch Fwlogwatch Damit Vorgehensweise Diese installieren. SUSE-Linux-OSS-Systemen. Paket und SUSE- erzeugte auf auch das funktioniert Sie können Anschließend fwlogwatch-.src.rpm --rebuild daher rpmbuild verwende # Ich Distribution entsprechende worden. die übersetzt für es 8.0 übersetze neu: Hat und vorgehaltene Red Source-RPM-Paket dort das unter Drucklegung immer der ist Zeitpunkt RPM-Paket zum binäre Das Quelltextarchive. auch als http://fwlogwatch.inside-security.de/ 252 Paketfilterein- sind "/home/xxx_firewall/messages.2" root. Datei von der eindeutig. 2002 in sind CEST Einträgen 139 10:01:08 18362 träge, 29 von Mai 18184 Mit Generiert zusam- Ereignisse aus: fwlogwatch-Zusammenfassung die folgendermaßen dem sieht in Zusammenfassung erzeugen, typische zu Eine Einträ- Bericht werden. tausend mengefasst einen mehreren Zusam- Sekunden mit wenigen Modus Firewall-Protokoll in Der einem gen aus Response). es, (Summary), (Realtime erlaubt Zusammenfassung Echtzeitantwort menfassung und Modi: (Report) verschiedene Meldung drei Fwlogwatch unterstützt von Konfiguration Fwlogwatch 12.1.2 mit zu- und Befehl Sie auspacken dem laden, müssen Mit Homepage möchten, übersetzen. der übersetzen von Quellen Paket den das aus nächst direkt Fwlogwatch Sie Wenn Achtung aSefrdeÜestugennCmie n il etr Werk- weitere viele und Compiler wie einen zeuge Übersetzung die für Sie Da nee ytmüeste n ncleedafdeFrwl ko- Firewall die installieren. auf dort anschließend und pieren und übersetzen System anderen make uomk install-config make sudo und ae.Dr ne i brswh RPM-Pakete sowohl aber Sie finden Dort laden. patch /etc . eöie,sltnSedsPktafeinem auf Paket das Sie sollten benötigen, ntlirnSeen Beispielkonfi- eine Sie installieren ae uomk install make sudo make; chkconfig 2Protokollanalyse 12 Bfh auf. -Befehl 12.1 Fwlogwatch library

Erster Paketfiltereintrag: Mai 12 13:21:27, letzter: Mai 17 13:44:10. Alle Einträge wurden vom diesem Rechner geloggt: "fwsteinfurt".

Alle Einträge haben das selbe Ziel: "-". open source Mai 17 13:56:24 03:04:25:40 - eth1 3001 udp Pakete (187968 Bytes) von 192.168.222.200 (-) bis 111.112.222.222 (-) Port 53 Mai 17 13:56:37 03:04:25:44 - eth1 2991 udp Pakete (187172 Bytes) von 192.168.222.200 (-) bis 192.33.4.12 (c.root-servers.net) Port 53 Mai 17 13:56:33 03:04:25:50 - eth1 2983 udp Pakete (186434 Bytes) von 192.168.222.200 (-) bis 192.112.36.4 (G.ROOT-SERVERS.NET) Port 53 Mai 17 13:56:37 03:04:25:44 - eth1 2976 udp Pakete (185906 Bytes) von 192.168.222.200 (-) bis 192.5.5.241 (f.root-servers.net) Port 53 Mai 17 13:56:29 03:04:25:49 - eth1 2353 udp Pakete (142615 Bytes) von 192.168.222.200 (-) bis 192.36.148.17 (i.root-servers.net) Port 53 Mai 17 11:14:21 03:20:24:24 AntiSpoofing: eth4 866 icmp Pakete (48496 Bytes) von xxx.yyy.200.249 (-) bis 192.168.201.5 (-) Port 0

Hinweis Die deutsche Variante der Zusammenfassung gibt leider als Über- setzung des englischen to das deutsche Wort bis anstatt sinnvoller- weise nach an. Sie können das verbessern, indem Sie in der Datei po/de.po im Fwlogwatch-Quelltext in Zeile 793 die folgende Ersetzung durch- führen: #: ../output.c:262 #, c-format msgid " to %s" msgstr " nach %s"

Mit dieser Zusammenfassung können Sie den Zustand der Firewall in den letzten Stunden überblicken. Sie erkennen leichter, welche Rechner die Richtlinien verlet- zen, als es die manuelle Analyse der Protokolldatei ermöglicht. Im interaktiven Meldungsmodus ist Fwlogwatch in der Lage, automatisch E-Mails zu generieren, die an ein CERT oder an die verantwortlichen Administratoren der »angreifenden« Rechner gesendet werden. Diese Funktion sollte zur Vermeidung von Spam daher mit Vorsicht eingesetzt werden!

------From: [email protected] To: [Insert address of abuse contact or CERT here] Subject: Ereignisbericht 20020514-192.168.222.200

Dear Madam or Sir,

253 open source library ihteaporaelgfl xepsa a ste r available. ------you are signature] provide they [Your to sincerely as glad Yours far you. be as Thank would excerpts scans. we file these information log stop more appropriate to need the steps you 20020514-192.168.222.200 with appropriate case 111.112.222.222 the In take Please 3001 Versuche: geloggten Verfolgungsnummer: 192.168.222.200 der Anzahl in host/s Ziel-IP-Adresse: organization’s IP-Adresse: a/several [your Angreifende from that scans attention heavy your to to subject domain: bring been your to have like networks] would we 254 Konfigurationsdateien: zwei fwlogwatch besitzt fwlogwatch.config anzubieten, wer- Funktionen eingesetzt diese Vorsicht Um mit Belästigungen den vor über Schutz erhalten Auch zum den! angezeigt. Sie Firewall sollte und Ihrer Funktion versenden, Stand Benachrich- diese aktuellen WinPopUp kann den oder Fwlogwatch immer E-Mail Protokolldatei. Fwlogwatch-Webserver per die überwachen z.B. Echtzeit Hier in tigungen Echtzeit-Modus. Fwlogwatch einen mit auch Sie Fwlogwatch unterstützt Schließlich lt ü i mitrkie ednsou uvredneEMi dar. E-Mail versendende zu Meldungsmodus interaktiven im die für plate Hinweis l ü a oaemdfiir wird: modifiziert Locale ver- Umgebungsvaria- das sich entsprechende für die lässt ble Aufruf angesprochene) dem oben vor wenn das wird. meiden, auch verwendet wird, (und Umgebung gefüllt Problem deutschen Eng- Dieses Informationen einer in in deutschen sinnvollerweise Fwlogwatch mit die wenn E-Mail dass gehaltene Problem, das lisch hier besteht Leider brez.Ntrihkne i i Umgebungsvariable die mehr Sie nicht können Zusammenfassungen Natürlich die übersetzt. auch dann werden Allerdings 1000 -i fwlogwatch LANG="en_US" u ü e eelgnLu anpassen. Lauf jeweiligen den für nur und fwlogwatch.template .DieDatei fwlogwatch.template 2Protokollanalyse 12 tltenTem- ein stellt LANG immer 12.1 Fwlogwatch library

Die beiden mitgelieferten Dateien sind sehr gut dokumentiert und relativ selbster- klärend. Im Folgenden möchte ich Ihnen nur kurz die wichtigsten Optionen der

verschiedenen Modi erklären. Die meisten Optionen können sowohl auf der Kom- open source mandozeile als auch in der Konfigurationsdatei definiert werden.

Allgemeine Optionen Zunächst stehen Ihnen einige Funktionen in allen Modi zur Verfügung. Sinnvoller- weise geben Sie die Parameter in der Konfigurationsdatei an. Mit den angegebenen Kommandozeilenoptionen können Sie aber auch die Funktion auf der Kommando- zeile nutzen. I include_file. Hiermit können Sie weitere Konfigurationsdateien einlesen. Damit lässt sich die Konfigurationsdatei aufsplitten. I verbose = , -v. Diese Option ist nur auf der Kommandozeile sinnvoll. Die Angabe von zwei -v verstärkt die Wirkung. I resolve_hosts = , -n. Hiermit schalten Sie die Namensauflösung an. Den- ken Sie daran, dass diese Namensauflösung Zeit kostet, Ihre Internetverbindung belastet und möglicherweise auch zu Einträgen in den Protokollen führt. I resolve_services = , -N. Lesen Sie lieber Portnummern oder -namen? I input = , -f. Hier geben Sie die zu verarbeitenden Protokolldateien an. Ab der Version 0.9.1 können Sie mehrere Dateien auf einzelnen Zeilen angeben. Ist die Datei mit gzip komprimiert worden (.gz), kann Fwlogwatch sie dekompri- mieren. Bei Verwendung des Echtzeitmodus müssen Sie die Datei mit ihrem absoluten Pfad angeben. Der Einfachheit halber geben Sie die Datei immer mit ihrem absoluten Pfad an. I parser = infcpewls, -P. Hier wählen Sie das Protokollformat. Fwlogwatch kann viele Formate lesen. Das Netfilter/Iptables-Format wählen Sie mit parser = n. I src_ip = on, -S; dst_ip = on , -D; protocol = on, -p; src_port = on, -s; dst_port = on, -d; tcp_opts = on, -y Fwlogwatch sortiert und aggregiert die Einträge in der Protokoll- datei. Sie können die Kriterien in der Konfigurationsdatei bestimmen. I exclude_src_host =, exclude_src_port =, exclude_dst_host =, exclude_dst_port =, in- clude_src_host =, include_src_port =, include_dst_host =, include_dst_port =, -E Hiermit können Sie bestimmte Rechner und Ports von der Analyse durch Fwlogwatch ausnehmen. Dies ist zum Beispiel sinnvoll, wenn Sie einen bestimmten Rechner für Nmap-Audit-Scans (15.2) verwenden. Sie können auch auf der Komman- dozeile die zu ignorierenden Rechner angeben. Die Kommandozeilenoption -E verwendet e für exclude und i für include. Die Buchstaben hpcb stehen für host, port, chain und branch. In den ersteren beiden Fällen wird mit den Buchstaben s oder d noch source oder destination angegeben. Beispiel: -Eehs127.0.0.1. Ab der Version 1.0 können Sie hier auch die CIDR-Notation verwenden (Bei- spiel: 192.168.1.0/25)

255 open source library mZsmefsugmdskne i ognewieeOtoe nutzen: Optionen weitere folgende Sie können Zusammenfassungsmodus Im Fwlogwatch-Zusammenfassung 256 etr pinnelue bdrVrin093deApsugdrAsaea die an Ausgabe der Anpassung die 0.9.3 Wünsche: Version eigenen der ab erlauben Optionen Weitere I I I I I I I I I I I I I I u i oscteneez edn asesh aga s n i Whois- die und ist langsam sehr sie da sollte werden, belastet. Option stark eingesetzt Diese Datenbanken Vorsicht ermitteln. mit zu Whois-Datenbank nur der in Source-IP-Adressen ednsle,kne i a i isnOtoe durchführen. Optionen diesen mit das Sie können sollen, werden . nXTL1.1). XHTML in 1.0 i oterctn:aftied( aufsteigend Sortierrichtung: die Bytes, uwrugkne i etme.DreseBcsaedfiir a Sortierkri- das definiert Buchstabe erste terium: Der bestimmen. Sie können Auswertung aiu azh> -M , = maximum -m , = at_least -l [mhdwy], = recent -o. , = output -w. yes, = html -z. yes, = -e. duration yes, = end_times -t; yes, = start_times -b. data_amount, = rowcolor2 =, rowcolor1 =, bgcolor =, textcolor = stylesheet = title -O. [cteznpbSsDd][ad], = sort_order -E , ... exclude_branch, exclude_chain, hi_okp=n,-W no, = whois_lookup önnSeasZeitraum als Sie können crntwerden. schränkt ctetou usde i xenrULsi,drmit der sein, URL externer ein dies muss Echtzeitmodus owthsmay mZsmefsugmdsoe flgac tts im status« »fwlogwatch Echtzeitmodus. oder Zusammenfassungsmodus im summary« logwatch e nrfsan. Angriffs des önnmheeSrirne neee edn i ndraggbnnRei- angegebenen der ist in Default die werden. genutzt werden, henfolge angegeben Sortierungen mehrere können inni e wowthAsetn goirn a omtdrKommando- der Format Das ignorieren. zeilenoption Fwlogwatch-Auswertung der in tionen S iri andrTtlfrdeAsaedfiir edn eal s »fw- ist Default werden. definiert Ausgabe die für Titel der kann Hiermit c Source, count, is pinelutdeAgb ie lentvnSyehes Im Stylesheets. alternativen eines Angabe die erlaubt Option Diese -E reg ieHM-ugb seeAbbildung (siehe HTML-Ausgabe eine Erzeugt iri ratnSebijdmAgifdeSmedrPakete. der Summe die Angriff jedem bei Sie erhalten Hiermit ud eet e e eze pinekät Beispiel: erklärt. Option letzten der bei bereits wurde t s ae ie Angriffs. eines Dauer Startzeit, Sourceport, wowthsheb i ugb nen Datei. eine in Ausgabe die schreibt Fwlogwatch is pinweist Option Diese esek itäe i u etnvorkommen. selten nur die Einträge, Versteckt iri andeAzh e itäei e eih be- Bericht dem in Einträge der Anzahl die kann Hiermit recent=w enSesc u ü i ezeWceinteressieren, Woche letzte die für nur sich Sie Wenn e Endzeit, D uhdeSrirn e rtklenrg nder in Protokolleinträge der Sortierung die Auch Ziel, verwenden. a sedn)oe baln ( abfallend oder ascending) , iri önnSegneKte drAk- oder Ketten ganze Sie können Hiermit . tacd d z iszitInndnSatuddsEnde das und Start den Ihnen zeigt Dies ilot e wieBcsaedefiniert Buchstabe zweite Der Zielport. Dauer, Fwlogwatch . endeFre uäzihangepasst zusätzlich Farben die Wenn n Zielname, n nomtoe brdie über Informationen an, http:// p 12.1 Protokoll, 2Protokollanalyse 12 d ,descending).Es beginnt. ,abderVersion -EecOUTPUT b Anzahl . 12.1 Fwlogwatch library open source

Abbildung 12.1: Fwlogwatch kann im Zusammmenfassungsmodus auch eine HTML-Seite erzeugen.

Wenn Sie anfangen, mit dem Zusammenfassungsmodus zu experimentieren, kön- nen Sie zu Beginn die folgende Konfigurationsdatei verwenden und dann an die eigenen Bedürfnisse anpassen: resolve_hosts = yes parser = n src_ip = on dst_ip = on data_amount = yes duration = yes protocol = on dst_port = on sort_order = tacd

Fwlogwatch-Meldung In bestimmten Umgebungen kann es sinnvoll sein, direkt bei der Analyse der Pro- tokolle gewisse Ereignisse zu melden. Im Meldungsmodus besteht die Möglichkeit,

257 open source library ü i ofiuaindsEMi-esnssee he i ogne Funktionen folgenden die Ihnen stehen Verfügung: E-Mail-Versands zur des Konfiguration die Für der bei zeitversetzt sondern Echtzeit, Fwlogwatch. ein mit in Protokolle an nicht der erfolgt kann Analyse ge- Meldung Rechners Meldung Die angreifenden Diese des werden. Administratoren versenden. sendet verantwortlichen zu die an Angriffsereignis oder jedes CERT für E-Mail eine 258 Skript, erste mitgelieferte Das zwei können. Sie anpassen konfigurieren zuvor Hierzu Sie reagieren. ver- die zu zu Skripten, aktiv Echtzeitbenachrichtigungen sogar Lage, der und in senden Fwlogwatch ist Echtzeitmodus Im Echtzeit /etc/fwlogwatch.incident = [email protected] template = [email protected] cc = [email protected] recipient = n sender = 3000 parser = interactive Meldungsmodus # ai i ietlsee önn aeihhe ieenah Beispielkonfiguration einfache eine hier ich habe Sie: können, für loslegen direkt Sie Damit I I I I I epae= -I. , = template -C. , = cc -T. , = recipient -F. , = sender -i. , = interactive i ewne,eintragen. verwenden, Sie is ae önnSefe ahIrnWnce anpassen. Wünschen Ihren nach frei Sie können Datei Diese -alArseoe i ukinkno(z.B. Funktionskonto ein oder E-Mail-Adresse i erPktnasdraggbnnAzh ednMlugnerzeugt. Meldungen werden Anzahl angegebenen der als Paketen mehr mit ETsi.Sne i it ih heAfodrn nenetre CERT. externes ein an Aufforderung ohne nicht bitte Sie Senden sein. CERT edt is ukinemgih sInn ifc eeEMi uarchivieren zu E-Mail versenden. jede zu einfach CERTs mehrere Ihnen, an es oder ermöglicht Funktion Diese sendet. Achtung anhrlssi.Sekne ihlcelc ahn rfnSie versenden. Prüfen E-Mail eine machen. sein. Sie lächerlich bevor vorsichtig Ereignisse, sich die können genau sehr Sie daher Angriff sein. Funktion scheinbare harmlos Der dieser kann werden. gefälscht mit können Sie E-Mail-Adressen sollten Natürlich abnCp.DeEMi idzstlc ndeeArsege- Adresse diese an zusätzlich wird E-Mail Die Copy. Carbon i -alArsedsAsnes irsltnSeIhre Sie sollten Hier Absenders. des E-Mail-Adresse Die epaefrdeEMi (Default: E-Mail die für Template -alArsedsEpägr.De anIrinternes Ihr kann Dies Empfängers. des E-Mail-Adresse isatvetdnMlugmds ü leAngriffe alle Für Meldungsmodus. den aktiviert Dies [email protected] /etc/fwlogwatch.template fwlw_notify 2Protokollanalyse 12 versendet , ,das ), ). 12.1 Fwlogwatch library

Echtzeit-Alarmierungen per E-Mail oder Windows-Nachrichtendienst. Das zweite Skript, fwlw_respond, kann Firewall-Regeln mit iptables hinzufügen, um weitere An-

griffe des Hosts zu verhindern. Den Einsatz des zweiten Skripts sollten Sie abwä- open source gen, da ansonsten ein Angreifer einen Denial-of-Service-Angriff auf Ihre Firewall durchführen kann. Hierzu würde es genügen, wenn der Angreifer die IP-Adressen der DNS-Root-Server oder einiger wichtiger Webserver fälschen würde. Fwlogwatch würde bei Verwendung des Skripts fwlw_respond diese IP-Adressen sperren und Ih- nen keine Kommunikation mit den Systemen, deren IP-Adressen im Angriff ge- fälscht wurden, erlauben. I realtime_response = yes, -R. Diese Option schaltet den Echtzeitmodus an. I ipchains_check = no. Diese Option überprüft die Korrektheit der ipchains-Regeln beim Start. Beim Einsatz von iptables ist diese Funktion obsolet. I pidfile = . Hiermit schreibt Fwlogwatch seine PID in die angegebene Datei. Damit ist es einfacher, einem laufenden Fwlogwatch-Prozess Signale zu senden. I run_as = . Diese Option weist Fwlogwatch an, seinen Benutzerkontext zu ändern. Dabei wird der fwlogwatch-Befehl zunächst als root gestartet. So kann der Pro- zess sowohl auf die Protokolldatei als auch auf den privilegierten Port für den Webserver zugreifen. Anschließend werden diese root-Privilegien abgegeben. I alert_threshold = , -a. Beim Überschreiten dieses Schwellenwertes löst Fw- logwatch Alarm aus (Default 5). I recent = , -l. Lebensdauer der Ereignisse. Nach Ablauf vergisst Fwlogwatch die Ereignisse (siehe Zusammenfassungsmodus). I notify = yes, -A. Führt das Notify-Skript aus. I respond = yes, -B. Führt das Respond-Skript aus. I notification_script = ; response_script = . Name des entsprechenden Skripts (fwlw_(notify|respond)). In den mitgelieferten Skripten (contrib/) befinden sich weitere Beispiele und Kommentare. I known_host = , -k. Die hier in CIDR-Notation (192.168.0.0/24) angegebe- nen Rechner oder Netzwerke lösen keine Warnmeldung aus. Im Echtzeitmodus kann ein Webserver in Fwlogwatch aktiviert werden. Damit über- wachen Sie den Echtzeitmodus. Hierfür stehen die folgenden Optionen zur Verfü- gung: I server_status = yes, -X. Damit aktivieren Sie den Webserver. I bind_to = . Hiermit kann die IP-Adresse angegeben werden, auf der anschließend der Webserver seine Dienste anbieten soll (Default: 127.0.0.1). I listen_port = . Diese Angabe definiert den TCP-Port, der verwendet wird. I listen_to = . Lediglich die angegebene IP-Adresse darf sich mit dem Webserver verbinden. I status_user = , status_password = . Fwlogwatch verlangt von dem Benutzer bei der Anmeldung eine Authentifizierung. Diese wird mit diesen

259 open source library i cenhtdrWbÜewcugi ctetou s nAbbildung in ist Echtzeitmodus im Web-Überwachung der Screenshot Ein 10 = gieOlzYkkk9sQ refresh = ralf status_password = 8888 status_user = 192.168.0.1 listen_port = yes bind_to = /usr/local/sbin/fwlw_notify server_status = yes notification_script = 5 notify = fwloguser alert_threshold = n run_as = yes parser = realtime_response 260 das komfor- enthält Sie So denen können. mit erzeugen auf, Berichte Web-Interface Funktionen ein weitere über einige tabel noch weist Fwlogwatch Web-Funktionen Weitere von Konfiguration eine auch Web-Interface das (Abbildung über erfolgen kann Fwlogwatch 1.0 Version der Ab sehen. rgam is önnSenc nasn u ie esre installieren Webserver einem auf Anpassung erzeugen. nach Berichte weitere Sie und können Diese Programm. der Verzeichnis ieBipekngrto i e ofiuaindsWbevr ü i Überwa- die für Webservers aussehen: des folgendermaßen kann Konfiguration chung der mit Beispielkonfiguration Eine I n ue kennwort> . = refresh die Unix-Systeme klassischen angegeben die verschlüsselt wie muss verwendet Kennwort Fwlogwatch angegebene werden. Das definiert. Angaben et i isrOto konfigurieren. Option dieser mit seite eshüsln.Sekne a enotsh ectmtdmBefehl dem mit leicht sehr Kennwort das können Sie Verschlüsselung. aee enthalten. Paketen Achtung u en ofiuaindtinu i üsnenSGS1a den an Fwlogwatch SIGUSR1 liest ein müssen schicken: Hier Sie Prozess aus. neu. Konfigurationsdatei nicht Ein seine jedoch schicken. nur Fwlog- Signal reicht damit ein Fwlogwatch SIGHUP müssen, Fwlog- liest, einfaches Sie Datei verliert neue Protokollen. die den rotiert, nun watch zu Protokolldatei Zugang die den watch Werkzeug und einsetzen anderes Daemon als ein Echtzeitmodus im Fwlogwatch Sie Wenn il-S1$ct/var/run/fwlogwatch-pid) $(cat -USR1 kill Fwlogwatch regn isrBfh s bihres ndnLnxApache- Linux den in üblicherweise ist Befehl Dieser erzeugen. clelc önnSeennatmtshnRfehdrWeb- der Refresh automatischen einen Sie können Schließlich Dsrbto wiCIPormeudenPHP- ein und CGI-Programme zwei -Distribution 12.3 ). 2Protokollanalyse 12 contrib/ htpasswd 12.1 crypt zu - - 12.1 Fwlogwatch library open source

Abbildung 12.2: Im Echtzeitmodus kann Fwlogwatch seinen Status über ein Web-Interface anzeigen.

Das fwlogsummary.cgi-Skript erzeugt insgesamt 8 verschiedene HTML-Berichte, die an- schließend mit einem Webbrowser betrachtet werden können. Hierzu ist es erfor- derlich, dass der Webserver das CGI-Skript und den Befehl fwlogwatch ausführen darf und Leserechte an der Protokolldatei hat. Es ist aber auch möglich, das Skript zu bestimmten Uhrzeiten automatisch über Cron aufzurufen. Die so erzeugten Berichte werden nach verschiedenen Aspekten sortiert und auf dem Webserver abgelegt. Sie erhalten so sehr einfach acht verschiedene Berichte der letzten Stunde, die die Einträge sortiert nach der Absender-Adresse, Zieladresse, Ports etc. aufführen. Die Erstellung all dieser Berichte dauert eine gewisse Zeit. Daher empfiehlt sich der Aufruf per Cron-Daemon. Das zweite CGI-Skript fwlogsummary_small.cgi erzeugt lediglich einen Bericht, der die letzte Stunde zusammenfasst. Hiermit können Sie bei einer Alarmierung sehr schnell einen Überblick über den Zustand der Firewall erhalten. Das PHP-Skript erlaubt schließlich online die Auswahl der Optionen für die An- zeige des Berichts. Dabei können fast alle Möglichkeiten von Fwlogwatch ausgereizt werden. Abbildung 12.4 zeigt die möglichen Optionen.

261 open source library bidn 23 a e-nefc rab uhen ofiuainvnFwlogwatch. von Konfiguration eine auch erlaubt Web-Interface Das 12.3: Abbildung 262 die für Optionen die komfortabel Sie Berichts. wählen des PHP-Skript Erzeugung dem Mit 12.4: Abbildung 2Protokollanalyse 12 12.2 IP Tables State (IPTState) library

12.2 IP Tables State (IPTState)

Der Befehl IPTState (http://www.phildev.net/iptstate/index.html) ist sehr hilfreich bei open source der täglichen Administration und Wartung einer Iptables-Firewall. Er ist mit dem Befehl top vergleichbar, der die Prozesse in einer sortierten Liste darstellt. Allerdings sollten Sie diesen Befehl nicht ununterbrochen auf Ihrer Firewall laufen lassen, da dies das System stark belastet. Um jedoch die aktuellen Verbindungen leicht lesbar anzuzeigen und zu sortieren, ist der Befehl sehr gut geeignet. Um den Befehl zu installieren, benötigen Sie auf Ihrer Firewall lediglich das -Paket. Dieses ist bei den meisten Distributionen enthalten und auch schon installiert. Sie können IPTState nicht auf einem anderen System als der Firewall installieren, da IPTState den aktuellen Zustand der Firewall direkt aus der Datei /proc/net/ip_conntrack liest. IPTState ist bereits bei vielen Distributionen enthalten. Bevor Sie das Paket manuell installieren, sollten Sie prüfen, ob Ihre Distribution das Paket bereits mitliefert. Laden Sie zur Installation das Paket von der Homepage herunter, und entpacken Sie es an geeigneter Stelle. Anschließend wechseln Sie in das Verzeichnis und rufen make; make install auf. Tritt hierbei ein Fehler auf, prüfen Sie bitte, ob das ncurses- devel-Paket Ihrer Distribution installiert ist.

$ cd /usr/local/src $ tar xjf iptstate-tar.bz2 $ cd iptstate- $ make $ sudo make install

Abbildung 12.5: Der Befehl iptstate zeigt die aktuellen Verbindungen der Firewall an.

263 open source library ekeggb e kule utn u n ene ih i önndeAus- die können Sie sich. beendet und aus mit Zustand leicht gabe aktuellen den gibt Werkzeug öhe u e kule utn e ieali ie ectlsae it an- Liste lesbaren leicht Option einer die in IPTState Firewall bietet der Hierfür Zustand sondern zeigen. aktuellen Anzeige, aktualisierende den neu nur immer sich möchten keine jedoch Sie benötigen Häufig öugnte,itdegecziieAgb von Angabe Namensauf- wahr- gleichzeitige die Sie Sie die da Wenn ist sind. abgeschnitten, kommen interessiert nutzen, links Domäne Domänen von lösung den eigenen werden an Ihrer meisten Server von am der aus scheinlich Clients Namen Clients der die meisten und Namen die werden, die da werden abgeschnitten, Dabei rechts durch. Namensauflösung eine Adresse ugnmtenrbsime bedr drZe-PArseazie asn Die lassen. anzeigen Ziel-IP-Adresse oder Absender- Option bestimmten einer mit dungen e.Mit nen. ienne obnee.MtdnOptionen den Mit kombinieren. miteinander u ole i eet mit bereits Sie sollten Nun 9.6.5.0:85 9.6.5.:3up0:00:04 TTL 264 0:00:39 State 0:00:52 119:54:01 119:54:01 ESTABLISHED Proto udp 0:00:04 ESTABLISHED SYN_SENT 0:00:05 119:54:02 TIME_WAIT tcp ESTABLISHED tcp 119:54:01 192.168.255.1:53 tcp 192.168.255.100:38752 ESTABLISHED 217.160.128.61:993 tcp 192.168.255.100:56978 tcp 217.160.128.61:993 Destination CLOSE 192.168.255.100:52667 119:54:02 193.201.52.189:80 CLOSE 192.168.255.100:59425 tcp 119:54:02 ESTABLISHED 217.160.128.61:993 192.168.255.100:56979 ESTABLISHED 213.30.31.52:80 tcp 192.168.255.100:50090 217.160.128.61:993 tcp 192.168.255.100:52668 tcp 209.132.177.100:443 192.168.255.100:35956 tcp 209.132.177.100:443 192.168.255.100:35957 SrcIP 217.160.128.61:993 by: 192.168.255.100:52662 Sort 217.160.128.61:993 -- 192.168.255.100:52661 Top State Source Tables -s IP iptstate # e e urfdsPormskne i brKmadzieotoe die Kommandozeilenoptionen über Option die Sie erlaubt können So definieren. Programms Filterfunktionen und des Sortierreihenfolge Aufruf dem Bei anzeigt. Firewall Ihre irn e ebnugnnc e ildes ( Zieladresse der nach Verbindungen der tierung oadSesc ndmitrkie ou ene,kne Sie können befinden, Modus interaktiven dem in sich Sie Sobald unterdrückt. Anzeige der in Namensauflösung zur DNS-Verbindungen e utn ( Zustand dem I I I I I I n mit und mit mit mit auslösen, Anzeige der mit Refresh sofortigen einen Leertaste der mit s n l r -f i oteugnc e ähtnSat durchführen Spalte nächsten der nach Sortierung abschalten, die und an- DNS-Verbindung der Anzeige die abschalten, und an- DNS-Auflösung die sortieren, rückwärts iptstate eg leLobc-ebnugnncta.DeOption Die an. nicht Loopback-Verbindungen alle zeigt q e eelbeenden. Befehl den -bs grep drnc he eesae ( Lebensdauer ihrer nach oder ) tre i eet e eel e he i ebnugnüber Verbindungen die Ihnen der Befehl, den bereits Sie starten und awk a iptstate man etreretnoe uhprEMi verschicken. E-Mail per auch oder weiterbearbeiten i aduhet e eel negnkön- anzeigen Befehls des Handbuchseite die -s isitdrSnl-u-ou.Das Single-Run-Modus. der ist Dies . -S und -bd -bt -L ,nc e rtkl ( Protokoll dem nach ), .Lie asnsc is nicht diese sich lassen Leider ). inol iri ednalle werden Hiermit sinnvoll. -D önnSenrdeVerbin- die nur Sie können 2Protokollanalyse 12 -l ür ü jede für führt -b -bp i Sor- die ,nach ), 12.3 Webfwlog Firewall Log Analyzer library

192.168.255.100:38759 192.168.255.1:53 udp 0:00:04 192.168.255.100:38760 192.168.255.1:53 udp 0:02:53

192.168.255.100:52666 217.160.128.61:993 tcp ESTABLISHED 119:54:01 open source 192.168.255.100:42223 213.30.31.52:80 tcp TIME_WAIT 0:01:52 192.168.255.125:1069 192.168.255.100:139 tcp ESTABLISHED 119:56:57

Die hohen Werte in der Spalte TTL sind auf die hohen Verweildauern von TCP-Verbindungen in der Zustandstabelle zurückzuführen. Aufgebaute TCP- Verbindungen verbleiben für 5 Tage in der Tabelle, während UDP-Verbindungen lediglich 180 Sekunden lang dort gespeichert werden.

12.3 Webfwlog Firewall Log Analyzer

Der Webfwlog Firewall Log Analyzer bietet Ihnen eine webbasierte Firewall- Protokollanalyse und Berichtserzeugung. Sie benötigen für den Einsatz einen Webserver mit mindestens PHP 4.1, eine MySQL- oder PostgreSQL-Datenbank und einen Webbrowser. Damit Webfwlog die Protokolle analysieren kann, benötigt er Lesezugriff auf die Protokolle der Firewall.

Tipp Webfwlog ist eines der wenigen Werkzeuge, die auch Protokolle aus einer Datenbank lesen können. Wenn Sie das ULOG-Target (siehe Abschnitt 24.1) einsetzen, können Sie damit die Protokollmeldungen in eine MySQL-Datenbank schreiben, die Sie mit diesem Werkzeug analysieren können!

Die aktuelle Version 0.91 von Webfwlog wurde am 23. April 2005 veröffentlicht und ist unter http://www.webfwlog.net/ sowohl als RPM als auch als Quelltext verfügbar. Sie können daher auf einer RPM-basierten Distribution die Installation sehr einfach vornehmen. Falls für Ihre Distribution kein binäres RPM verfügbar ist, empfehle ich, dies selbst zu bauen: rpmbuild --rebuild webfwlog-.src.rpm

Falls Sie keine RPM-basierte Distribution einsetzen oder der Bau des RPMs fehl- schlägt, können Sie Webfwlog auch leicht aus dem Quelltext übersetzen. Hierbei sollten Sie die folgenden Optionen beim Aufruf von ./configure angeben: I --sysconfdir=/etc. In diesem Verzeichnis wird die Konfigurationsdatei webfwlog.conf gesucht. I --with-html-doc-root=/var/www/html.DiesistdasDocumentRootdesApacheWebser- vers. I --enable-syslog. Hiermit aktivieren Sie den Syslog-Parser. Wenn Sie ULOG ver- wenden, benötigen Sie diesen nicht.

265 open source library ankne i i brezn starten: Übersetzung die Sie können Dann asratvetwr.DnohitdrAfu des Aufruf der ist Dennoch wird. aktiviert Parser e eafdeKonfigurationsdatei die Bedarf bei u üsnSenc i aebn ü eflgapse.Hefrgb si den in es gibt Hierfür anpassen. Webfwlog für Datenbank Verzeichnissen die noch Sie müssen Nun dass nicht, bitte sich Sie wundern verwenden, Syslog-Parser den beim nicht Sie Wenn install make sudo --with-mysql $ --with-html-doc-root=/var/www/webfwlog make --sysconfdir=/etc $ ./configure $ 266 ncleedmse i u ohdeKonfigurationsdatei die noch nur die Sie Sie müssen dem Anschließend mit MySQL-Skript, können. ein erzeugen erzeugt Datenbank notwendige und Informationen notwendigen den ndsvreeeeVrecns n ue Sie rufen und Verzeichnis, vorgesehene das in I ytmisaletsi.SebntgndeDtnaknesüzn uh wenn auch, Datenbankunterstützung verwenden. die dem Syslog-Parser benötigen den auf Sie Sie müssen sein. Datenbank die installiert für System Client-Bibliotheken Die Datenbank. chende --enable-mysql|--enable-pgsql make Kmad ihspsir.En brezn s u öi,wn der wenn nötig, nur ist Übersetzung Eine passiert. nichts -Kommando Hinweis Tipp aebn ie lie elrgmctuddeRct ü die anschließend leicht für sich Rechte korrigieren: lässt Befehl die Dies folgendem mit und gesetzt. der richtig gemacht Erzeugung nicht Fehler der Datenbank bei kleinen teilweise einen Installationsskript Datenbank das hat mir Bei Konfigurationsdatei Installations- eine das bereits überprüft ob installieren, skript, Version neue eine Sie Wenn install e s,udüesheb is ih.EnUgaeitas mit also ist Upgrade Ein nicht. diese überschreibt und ist, den ye’ep’o \’frhl.Tp \’t la h buffer. the clear to ’\c’ Type \g. 4.1.12 help. or version: for ; mysql> server ’\h’ with to or end 83 ’help;’ Commands is Type id monitor. connection MySQL MySQL the Your to Welcome # ./mysql/ ’kennwort’; mysql rn l nwbwo. owbwo@oahs dniidby identified webfwlog@localhost to webfwlog.* on all grant möglich. bzw. ./pgsql/ isatvetdeUtrttugfrdeentspre- die für Unterstützung die aktiviert Dies . /etc/ulogd.conf eel i eu-kit ehenSeeinfach Sie Wechseln Setup-Skript. ein jeweils ./setup anpassen. ./configure u.Dee kitfatnach fragt Skript Dieses auf. /etc/webfwlog.conf Srpserforderlich. -Skripts /etc/webfwlog.conf 2Protokollanalyse 12 vorhan- make und 12.4 Scanulog und ulog-acctd library

Query OK, 0 rows affected (0.03 sec)

mysql> Bye open source

Wenn Sie bei der Erzeugung des Datenbankskripts die Beispielskripten ausgewählt haben, können Sie direkt Webfwlog verwenden. Bei dem Zugriff auf Webfwlog bietet Ihnen die Weboberfläche direkt einige Beispielberichte an (Abbildung 12.6). Natürlich können Sie auch Ihre eigenen Berichte erzeugen. Hier stehen Ihnen sehr viele verschiedene Kriterien für die Erzeugung des Berichts zur Verfügung (Abbil- dung 12.7). 12.4 Scanulog und ulog-acctd

Der ulog-acctd-Daemon (http://alioth.debian.org/projects/pkg-ulog-acctd/) erzeugt Proto- kolldateien für Accounting-Zwecke. Hierzu nimmt er über das ULOG-Target IP- Pakete entgegen und schreibt das Protokoll, die Absender- und Zieladresse, die Ports, die Größe und die beteiligten Netzwerkkarten in diese Protokolldatei. Da- bei können Sie das Format der Ausgabe frei anpassen, so dass Sie theoretisch auch direkt in eine SQL-Datenbank protokollieren können. Der ulog-acctd-Daemon ist in diesem Fall eine Alternative zu dem Ulogd-Daemon von Harald Welte (siehe Ab- schnitt 24.1). Die Installation des Daemons ist sehr einfach. Sie erfolgt einfach mit make. Anschlie- ßend müssen Sie manuell die ausführbare Datei ulog-acctd in ein entsprechendes Verzeichnis kopieren. Zusätzliche Startskripten sind nicht vorhanden. Ich empfehle daher den Start über Ihr Firewall-Skript. ulog -c /etc/ulog-acctd.conf

Damit Sie nun auswertbare Protokolldateien erhalten, müssen Sie in Ihren Regeln die zu protokollierenden Pakete an das ULOG-Target senden: iptables -A FORWARD -j ULOG --ulog-nlgroup 1 --ulog-cprange 60 --ulog-qthreshold 50 --ulog-prefix "FORWARD"

Der ulog-acctd-Daemon verfügt über eine Konfigurationsdatei /etc/ulog-acctd.conf. Diese Datei enhält die folgenden Angaben:

# Die ulog-nlgroup: multicast groups=1 accounting file=/var/log/ulog-acctd/account.log dump file=/var/log/ulog-acctd/dump debug file=/var/log/ulog-acctd/debug.log debug = syscall, misc, statistics, error, asdf, error-packet accounting format="%h\t%t\t%p\t%s\t%S\t%d\t%D\t%P\t%b\t\"%i\"\t\"%o\"\t\"%f\"\n"

267 open source library bidn 26 eflgbstteng ogfrit Berichte. vorgefertigte einige besitzt Webfwlog 12.6: Abbildung 268 Berichts. des Erzeugung zur Freiheiten alle Ihnen bietet Webfwlog 12.7: Abbildung 2Protokollanalyse 12 12.4 Scanulog und ulog-acctd library empty interface="-" empty prefix="-" open source flush=30 fdelay=0

In der mitgelieferten Datei werden die einzelnen Parameter ausführlich erklärt, so dass ich mir das hier spare. Wichtig ist der Parameter multicast groups.DerWert muss mit dem Wert ulog-nlgroup in der Iptables-Regel übereinstimmen.

Tipp In dem ./contrib-Verzeichnis finden Sie noch ein Skript pg_load.php, das die ulog-acctd-Daten in eine PostgreSQL-Datenbank lädt, und ein weiteres Skript, das die Daten für MRTG (Multi-Router-Traffic- Grapher, http://www.mrtg.org) entsprechend aufbereitet.

Da die Protokolle von ulog-acctd an sich nicht besonders aussagekräftig sind, können Sie mit scanulog grafische Auswertungen der Protokolle erzeugen. Hierfür installie- ren Sie Scanulog von der Homepage http://www.aitrob.de/scanulog.html mit ./confi- gure; make und passen die Konfiguration von ulog-acctd und scanulog an. Das Ausgabeformat von ulog-acctd muss das folgende spezielle Format haben: accounting format="%h\t%t\t%p\t%s\t%S\t%d\t%D\t%P\t%b\t\"%i\"\t\"%o\"\t\"%f\"\n"

Dies ist das Default-Format. Die Konfiguration von Scanulog erfolgt in einer Datei mit beliebigem Namen. LogfilePath /var/log/ulog-acctd/account.log OutputPath /var/www/traffic/ Bzip2Path /usr/bin/bzip2 CreateBzip2 true LocalNet 192.168.0.0 LocalNetMask 24

Bei dem Aufruf von Scanulog sollten Sie den ulog-acctd-Server vorübergehend an- halten und erst im Anschluss weiterlaufen lassen: #!/bin/bash kill -TSTP $(cat /var/run/ulog-acctd.pid) /usr/local/scanulog/scanulog /usr/local/scanulog/config kill -CONT $(cat /var/run/ulog-acctd.pid)

269 open source library i if o uo önnSedeeDtndn i ie rwe analysieren Browser einem mit dann Daten diese Sie können (Abbildung Nulog von Hilfe Mit e.DeeDtnakwr o lg seeAbschnitt zugrei- (siehe Mysql-Datenbank Ulogd die von auf wird die Abschnitt PHP-Skripten, Datenbank von Diese Reihe sich fen. jeder eine handelt auf Es um nutzt. auch Nulog authentifizie- Ulogd-Daemon Nulog bei eine den Sie die NuFW, können einsetzen, die Allerdings Iptables-Firewall analysieren, geschrieben. für normalen Linux, wird Protokolle für Nulog die Firewall werden. webbasiert rende geschrieben Sie Ulogd können von ulog-php) die (ehemals Nulog Mit Verzeichnis dem in aufrufen. Dateien Abständen die regelmäßigen Webserver in einen Cronjob über einen Sie über können auch Anschließend Sie können Dies Darstellungen. grafische Daten den aus erzeugt Scanulog 12.8: Abbildung 270 ( Nulog Nulog 12.5 /var/www/traffic http://www.inl.fr/Nulog.html 24.4 12.9 i etngefüllt. Werten mit ) erctn(ih Abbildung (siehe betrachten ). s i rnedfrdsUlogd-Mysql-Plugin. das für Frontend ein ist ) 12.8 ). 24.3 drSetr(siehe Specter oder ) 2Protokollanalyse 12 12.6 EpyLog Log Analyzer library open source

Abbildung 12.9: Nulog bietet die Analyse über einen Webserver.

12.6 EpyLog Log Analyzer

Der EpyLog Log Analyzer (http://linux.duke.edu/projects/epylog/) ist ein recht neuer Syslog-Parser, der die Protokolldateien liest, verarbeitet und einen leicht lesba- ren HTML-Bericht erzeugt. Dieser Bericht wird dann per E-Mail versandt. EpyLog wurde für Umgebungen mit vielen Log-Servern geschrieben, die über den Syslog oder den Syslog-ng auf einen zentralen Logserver protokollieren (siehe Kapitel 10). Dort verarbeitet es dann die Protokolle. Es ähnelt in seiner Funktion damit dem Paket Logwatch (http://www.logwatch.org). Da EpyLog über ein spezielles Firewall-Prozessierungsmodul verfügt, möchte ich es in diesem Kapitel erwähnen. Die Installation von EpyLog ist sehr einfach. Für viele Distributionen existieren fer- tige Pakete. Bei Fedora Core ist es im Extras-Kanal enthalten. EpyLog ist in Python geschrieben und verlangt lediglich als Voraussetzung Python-2.2 oder neuer und die libxml2-python. EpyLog wird üblicherweise täglich aufgerufen und erzeugt einen Bericht der letz- ten 24 Stunden. Dabei können Sie das Erscheinungsbild des Berichts und den E-Mail-Versand in der Konfigurationsdatei /etc/epylog/epylog.conf anpassen. Meist

271 open source library pLgkn odeEhzi-rtklaayedrhdeEzuugvnBerichten von erfassen. Erzeugung Meldungen die andere auch durch die Echtzeit-Protokollanalyse unterstützen, die so gezeigt kann Demonstration EpyLog zur Firewall Berichts der eines Protokollmeldungen Auszug ein die er- (Abbildung kurz werden auch Aufruf nur der seinem soll Bericht, Hier Bei beinhaltet. einen ausreichend. EpyLog bereits dann Default-Einstellungen zeugt die jedoch sind Firewall-Meldungen die dem in HTML-Bericht, werden. einen zusammengefasst erzeugt EpyLog 12.10: Abbildung 272 12.10 ). 2Protokollanalyse 12 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library e iealPoutncepudnwre n a iiesh interessante sehr einige hat und worden Eigenschaften: nachempfunden Firewall-Produkt len iedrfrgshitntngashnOeflce ü i ofiuaineiner ( Konfiguration Builder die Firewall der für sicherlich org ist Oberflächen Iptables grafischen mit Linux-Firewall fortgeschrittensten Builder der Firewall Eine im 13.1 als Bilder mehr Kapitel diesem in zusammen. Buch sich Screenshots restlichen befinden der gesamten Darstellung können, die werden durch einfachsten beschrieben am Werkzeuge grafischen einfach die auf es Da es ich dass kenne Vielleicht sind, E-Mail. Meinung eine der nicht. mir Sie noch Sie Wenn zur schreiben hoffentlich. allgemein dazugehört, mir Fall der es nicht jeden Auswahl Werkzeug Sie subjektive favorisiertes verzeihen eine Ihr ist, um Wenn intelli- dabei handeln. nur besonders Oberflächen Probleme dabei stehenden gewisse sich Verfügung die kann oder vorstellen, Es haben lösen. Administrationsoberflächen gefallen gent einige gut Ihnen besonders ich mir die möchte Kapitel diesem In 13 idw Penezn ü i ezee ednBtibsseekne i die Sie können Betriebssysteme beiden letzteren und von die X Pakete MacOS Für binären FreeBSD, einsetzen. Linux, PIX-Firewall- XP unter Cisco zusätz- Builder Windows von Ein Firewall Generierung können PF. die Sie OpenBSD auch Konfigurationen. und erlaubt Solaris) Modul kommerzielles und liches OpenBSD (FreeBSD, für Firewall-Konfigurationen IP-Filter von Iptables, Erzeugung die aktuell unterstützt Builder Firewall I I I I I I I .Siegash rcenn seeAbbildung (siehe Erscheinung grafische Seine ). AbstraktionvonRechnernundNetzeninObjekten i aduhmtmh l 0 Seiten 100 als mehr mit Handbuch Ein Bridge-Firewall Firewall-Konfiguration einer neuen Unterstützung einer Erzeugung einfache die Firewall für die Template auf Übertra- SCP automatische mit und Firewall-Konfiguration Workstation der einer gung auf Konfiguration der Erzeugung XML-Format in Speicherung Objekten von Drag-and-Drop Echtes Administrationsoberflächen http://www.netcitadel.com/ eutrae.Deesn ü 0Tage 30 für sind Diese herunterladen. 13.1 s ie kommerziel- einem ist ) http://www.fwbuilder.

open source library open source library oadSeac isnDao ettg ae,bfidnSesc ndrHauptansicht der in sich Sie (Abbildung befinden haben, Applikation bestätigt der Dialog Konfigura- diesen Ihrer auch Sie Versionen Sobald alten zu wieder überwa- immer zu zurückkehren. später Versionskontrollsystem tion Sie Ihre einem können und mit Damit Versionen Konfiguration verschiedenen chen. die der anweisen, an Builder Änderungen Firewall Sie können Hier ou-ese erg,o i i ee rjk einnmctnoe i exis- ein hier oder Sie möchten Wählen beginnen Projekt (Abbildung möchten neues öffnen ein Projekt Sie tierendes ob gefragt, Popup-Fenster ue i ifc e Befehl Hierzu den starten. Builder einfach Firewall Sie Sie können haben, rufen installiert Pakete diese Sie Sobald fwbuilder-ipt 3. fwbuilder 2. libfwbuilder 1. installie- Pakete drei folgenden die Sie ren: müssen Installation funktionsfähige beschreiben. eine nicht Für hier Installation daher Die ich ist. werde apt-get-Werkzeug Stable-Distribution Quellarchiven der den dem aus Bestandteil mit es einfach da Builder werden, Fedora Bei nachinstalliert Firewall für Mandrake-Distributionen. kann RPM-Pakete und Debian-Distribution - Homepage Devillinux-, der der SUSE-, auf Hat-, Sie Red finden Core-, alle Installation Für einfache nutzbar. die Für Lizenz 500,00. ohne $ Tagen un- freigegeben. kostet Builder 30 GPL Firewall der PIX ersten ist ter Cisco den Zielplattformen und die in Betriebssysteme auch für unterstützten weiteren aber Builder-Modul ist Firewall kau- Modul das Lizenz eine Dieses für 49,95 Lizenz $ für Die Sie fen. müssen Anschließend nutzbar. Einschränkung ohne neues ein Sie ob wählen, Sie können Builder möchten. Firewall beginnen von Projekt Start Beim 13.1: Abbildung 274 mni ähtnDao n ankne i uc nälnvon Anwählen durch Sie können Dann an. Dialog nächsten im amen ähtnDao eagn(Abbildung gelangen Dialog nächsten raenwpoetfile project new Create 13.3 fwbuilder ). n ee i ü a rjk ie Datein- einen Projekt das für Sie geben und , 13.2 u.Ashißn ednSevneinem von Sie werden Anschließend auf. ). 13.1 ). 3Administrationsoberflächen 13 Weiter> zum 13.1 Firewall Builder library open source

Abbildung 13.2: Firewall Builder kann direkt Ihre Firewall-Konfiguration mit einem Versionskontrollsystem überwachen.

Abbildung 13.3: Bei dem Start ist die Oberfläche von Firewall Builder zunächst leer.

Sie beginnen die Konfiguration mit dem Erzeugen einer neuen Firewall. Hierzu klicken Sie entweder mit der rechten Maustaste auf den Firewall-Ordner in der linken Spalte, oder Sie klicken mit der linken Maustaste auf das New Object-Icon neben der Bibliotheksauswahl und wählen New Firewall.DannmüssenSieeinenNamenfür die Firewall vergeben und das Zielbetriebssystem auswählen. Die Verwendung von Templates erleichtert Ihnen die weitere Konfiguration der Firewall. Nun können Sie ein vorkonfiguriertes Template für die weitere Anpassung auswäh- len. Insgesamt gibt es sechs verschiedene Templates:

275 open source library bidn 34 iealBidrutrtttac reS,Slrs aO und X MacOS Solaris, FreeBSD, auch unterstützt Builder andere. Firewall 13.4: Abbildung 276 älnSedsTmlt,dsIrrKntlaina ähtnkmt ü dieses Für kommt. nächsten am Konstellation das Ihrer ich habe das Beispiel Template, das Sie Wählen I I I I I I a iednmsh des.DrZgifvninnnc ue s ih einge- nicht ist außen nach innen von Zugriff schränkt. Der Adresse. dynamische eine hat iky firewall 1 template fw host 3 template fw 2 template fw 1 template fw e server web vlan1 ( iealDC-udDSDesefrdsitreNt an. Netz interne das für DNS-Dienste und DHCP- Firewall S-urf s erlaubt. ist SSH-Zugriff angeschlossen. e ot8 n 443. und 80 Port den http://www.sveasoft.com s i ueeNetzwerkkarte. äußere die ist issTmlt cüz ie esre.E rab e urf auf Zugriff den erlaubt Es Webserver. einen schützt Template Dieses : is iealbsttde ezekatn nder An Netzwerkkarten. drei besitzt Firewall Diese : ieFrwl i wiNtwrkre.DeetreNetzwerkkarte externe Die Netzwerkkarten. zwei mit Firewall Eine : issTmlt nsrctdem entspricht Template Dieses : issTmlt s ü i iu-imaevnSveasoft von Linux- die für ist Template Dieses : issTmlt cüz ie izle ehe.Lediglich Rechner. einzelnen einen schützt Template Dieses : wtmlt 2 template fw obrie.DeNetzwerkkarte Die vorbereitet. ) eäl (Abbildung gewählt wtmlt 1 template fw 13.5 3Administrationsoberflächen 13 ). br0 uäzihbee die bietet Zusätzlich . s i nee und innere, die ist eth2 s i DMZ die ist 13.1 Firewall Builder library open source

Abbildung 13.5: Mit den Templates können Sie sich viel Arbeit sparen.

Nun werden Sie zwei Fenster sehen. Im Hauptfenster (Abbildung 13.6)findenSie bereits einige Regeln. In dem Fenster Firewall können Sie weitere Einstellungen vor- nehmen. Interessant in dem letzteren Fenster sind die Einstellungen der Iptables-Version und weitere Einstellungen zum Betriebssystem und zur Firewall. Nach Anwahl der Host OS Settings ... können Sie den Kernel über das /proc-Interface konfigurieren (Abbildung 13.7). Bei den Firewall Settings ... können Sie einstellen, wie die Firewall-Regeln aufgebaut werden sollen. Sie können Einfluss auf die Erzeugung der Regeln, die Installation des Skripts und die Protokollierung nehmen. Dazu können Sie zum Beispiel ent- scheiden, ob die Firewall auf einer Bridge installiert wird, wie die Pakete abgelehnt werden sollen und ob bei einem Neustart der Firewall alte Verbindungen weiter erlaubt sein sollen (Abbildung 13.8). Um nun zum Beispiel die Regel Nummer 5 zu ändern und den Zugriff nur auf einen bestimmten Dienst zu erlauben, wählen Sie zunächst eine andere Bibliothek aus. Klicken Sie oben links User an, und wählen Sie die Standard-Bibliothek aus. Dort wählen Sie den Ordner Services-TCP. Dort wählen Sie dann den Dienst http aus und ziehen ihn in der Regel 5 in die Spalte Service und lassen ihn los (Abbildung 13.9).

277 open source library 278 bereits Einstellungen viele sind Templates worden. des vorgenommen Auswahl Nach 13.6: Abbildung 3Administrationsoberflächen 13 13.1 Firewall Builder library open source

Abbildung 13.7: Firewall Builder bietet Ihnen auch die Konfiguration der Einstellungen im /proc-Verzeichnis.

Abbildung 13.8: Firewall Builder erlaubt den Zugriff auf jede Einstellung.

279 open source library älnSedsNt nenradrnZieas oirne n üe smit es fügen und es kopieren aus, Zeile anderen einer in Netz das Sie wählen oadSemtIrnRgl uree id önnSedeRgl ndeIptables- die in Regeln die Sie Sie können wählen Hierzu sind, lassen. zufrieden übersetzen Regeln Sprache Ihren mit Sie Regis- Sobald entsprechenden der auf Firewall der (Abbildung NAT-Regeln terkarte die auch Sie Kontrollieren enSedeRgl ih u e ilytmezuthbn önnSediese Sie können haben, Sie erzeugt wählen Hierzu Zielsystem installieren. dem dort auf auch Builder nicht Firewall Regeln mit die Sie Wenn l orei isrRglwee i (Abbildung ein wieder Regel dieser in Source als Action neue als Sie wählen Menü dem aus Service Sie wählen hinzuzufügen, Regel eine nun hinzufügen. Um Regel einer Dienst einen Drag-and-Drop per können Sie 13.9: Abbildung 280 Sie aktivieren Dazu wählen ändern. und einfach Maustaste rechten Sie der können mit Regeln Regel die der Reihenfolge die Auch ihnSennasdrSadr-ilohkdnUDP-Dienst den Standard-Bibliothek der aus nun Sie Ziehen e ee ee.Nc ie ehslc u das auf Rechtsklick einem Nach Regel. neuen der Tipp rpefle.S önnSedebie eenfrdnZgifauf Zugriff den für zusammenfassen. Regeln auch beiden DNS und die zusam- HTTP Sie Drag-and- können Gruppen mit So kann in erfolgen. Gruppen Drop Ports der Administration und Diese Netzwerkobjekte menfassen. auch können Sie 13.11 ). Accept mnnac a ezasSuc udefinieren, zu Source als Netz das auch nun Um . Rules Move 13.10 - Compile . ). 3Administrationsoberflächen 13 (Abbildung Deny Rules ndrSpalte der in domain Rules / Install / d ueBelow Rule Add ndeSpalte die in 13.12 .Indem ). Action Paste . 13.1 Firewall Builder library open source

Abbildung 13.10: Sie können auch sehr einfach eine Regel hinzufügen.

Abbildung 13.11: Auch die NAT-Regeln passen Sie mit dem Firewall Builder an. nächsten Dialog können Sie den Benutzer und das Kennwort für die Installation angeben. Firewall Builder wird nun mit Secure-Copy die Iptables-Regeln auf dem Zielsystem installieren (Abbildung 13.13). Firewall Builder bietet weitere sehr mächtige Funktionen, die ich hier nicht aufzäh- len möchte, da der User’s Guide sehr ausführlich auf über 110 Seiten die verschiede- nen Möglichkeiten darstellt. Ich hoffe, dass ich Ihnen einen einfachen und schnellen Einstieg ermöglicht habe. Firewall Builder ist ein sehr gutes Werkzeug für die Konfiguration einer durch- schnittlichen Firewall. Bei komplizierten Setups ziehe ich persönlich immer noch ein Skript vor, da das Regelwerk in Firewall Builder schnell unübersichtlich werden kann. In einem Skript haben Sie die Möglichkeit, selbst Variablen zu definieren und benutzerdefinierte Ketten zu generieren und so Ihre Regeln logisch zu gruppieren.

281 open source library bidn 31:Sekne i brezn ndeItbe-eenbeobachten. Iptables-Regeln die in Übersetzung die können Sie 13.12: Abbildung 282 Variablen von Fehlen das verge- Objekte Kommentare grafischen das aufwiegt. zusätzliche der als Sie sich Verwendung mehr kompliziertere da die eignet gut, und jede Dennoch können sehr für ben Kette. Regelsätze erzeugt mittlere benutzerdefinierte Builder für derartige Werkzeug Firewall eine Der Verwen- Regel die steuern. grafische können nicht Sie jedoch Ketten, benutzerdefinierte dung ebenfalls nutzt Builder Firewall Zielsystem dem auf Regeln die auch kann installieren. Builder Firewall 13.13: Abbildung 3Administrationsoberflächen 13 13.2 Firestarter library

13.2 Firestarter

Der Firestarter (http://www.fs-security.com) verfolgt eine etwas andere Philosophie open source als der Firewall Builder. Während der Firewall Builder Ihnen sämtliche Freihei- ten bei der Definition Ihrer Firewall lässt und lediglich die Iptables-Details vor Ihnen versteckt, versucht der Firestarter eine möglichst einfache Schnittstelle für die Installation und Konfiguration einer Firewall zu sein. Er ist mit einer Personal- Desktop-Firewall vergleichbar, wie sie auf einigen kommerziellen Betriebssystemen zur Verfügung steht. Der Firestarter besitzt eine einfache, aber sehr ansprechende grafische Oberfläche (siehe Abbildung 13.14), mit der Sie die Firewall an- oder abschalten, aktuelle Re- gelverstöße anzeigen und Rechner sperren oder freischalten können.

Abbildung 13.14: Der Firestarter ist eine Personal-Desktop-Firewall.

283 open source library eohafIrmSse i HPSre ntlir sein. (Abbildung installiert einen aktivieren DHCP-Server direkt ein zu hier System freischal- Netz Ihrem Möglichkeit, Internetverbindung auf interne die jedoch die ist das Netz Firestarter für ver- lokale von Netz DHCP-Server das Funktion lokalen für besondere einem hier Eine mit ten. Sie Netzwerkkarte Netzwerkkarte andere können eine die ist, über über bunden und und möchten. verfügt Internet teilen Netzwerkkarten dem Benutzern zwei mit anderen dy- über mit System einer Internet-Verbindung Ihr werden Unterstützung die Wenn Anschließend Sie die aktivieren. ob auch Netzwerkkarte gefragt, Sie Sie dieser können auf Dabei mit IP-Adresse die ist. namischen aus, Netzwerkkarte verbunden die Internet zunächst Sie dem wählen Bildschirmen nächsten den Auf ietnc e tr eß i iealAssetSehrlc ilomn Für unter- willkommen. und (Abbildung herzlich Sprache Deutsch Sie konfigurierte auch die dann Firewall-Assistent Firestarter stützt ein erkennt erfreulich, heißt Anwender mich Start viele ich dem dass nach so Direkt möchte. Handbuch, beschränken ausführliches Hinweise wenige sehr einige ein auf hier über verfügt Firestarter Auch 284 werden. eingesetzt Netzwerk ein für Firewall als auch kann Firestarter 13.16: Abbildung Sprache. deutsche die auch unterstützt Firestarter Der 13.15: Abbildung 13.15 ). 3Administrationsoberflächen 13 13.16 .Dfrmuss Dafür ). 13.2 Firestarter library

Auf dem letzten Bildschirm bleibt Ihnen nun nur noch der Start der Firewall. Ach- tung, falls Sie mit dem Firewall-Rechner gerade über das Netzwerk verbunden sind

und Firestarter über das Netzwerk gestartet haben, sollten Sie die Firewall noch open source nicht starten, sondern erst eine Richtlinie erzeugen, die diesen Zugriff erlaubt. Jetzt befinden Sie sich in dem Hauptfenster von Firestarter. Sie können nun die Firewall starten oder stoppen, die Einstellungen überprüfen, Ereignisse beobachten und Richtlinien hinzufügen (Abbildung 13.17).

Abbildung 13.17: Sie können auch Richtlinien hinzufügen.

285 open source library oadRgleltugnsatne,ekne i isafdrSausie Dort Statusseite. der (Abbildung auf karte gezählt dies Ereignisse Sie die erkennen werden stattfinden, Regelverletzungen Sobald eingehende über Überblick einen Sie Ereignisse. erhalten ausgehende Status-Seite und der Auf 13.18: Abbildung 286 e -evrvrüt önnSedsgash ekegac brdsNetzwerk das kei- über über auch Firewall Werkzeug Ihre grafische das Wenn Sie aufrufen! Überwachung. können Sie und verfügt, automa- benötigen Konfiguration X-Server Oberfläche Init-Skript nen die grafische ein für Die gestartet. nur über wurde ebenfalls dann erreichen, wird Neustart zu und einem dies bei eingebunden Um tisch läuft Systems. Systemdienst des haben, als Neustart installiert einem Debian-Paket Firestarter nach oder sogar RPM- Firewall als die Firestarter-Paket das Sie mehr Wenn nicht alle Ereignisse Sie diese möchten, ob grundsätzlich akzeptieren möchten. wählen, oder protokollieren oder möchten Sie ablehnen freischalten können Rechner Dienst Ereignisse diesen diesem der von eines Verbindungen auf weiteren Rechtsklick einen Durch Ereignisse ehen önnSedeRgleltugnttähihstudieren. tatsächlich Regelverletzungen die Sie können wechseln, 13.18 ).WennSiedannaufdieRegister- 3Administrationsoberflächen 13 13.3 Shorewall (Shoreline Firewall) library open source

Abbildung 13.19: Die Ereignisse im Detail zeigt Firestarter nach Auswahl der Registerkarte an.

Um Firestarter zu installieren, gibt es mehrere Möglichkeiten. Am einfachsten ins- tallieren Sie Firestarter als RPM- oder Debian-Paket. Auf der Firestarter-Homepage finden Sie Pakete für alle aktuellen Distributionen inklusive und Gentoo. Für kleine Installationen sind die Möglichkeiten, die Firestarter Ihnen bietet, häu- fig vollkommen ausreichend. Die Konfiguration komplizierter Regelsätze ist mit Firestarter nicht möglich, da Sie nicht selbst die Iptables-Regeln modifizieren oder anpassen können. 13.3 Shorewall (Shoreline Firewall)

Die Shoreline Firewall ist eine sehr komplexe Firewall, die Ihre Konfiguration aus Skripten liest und mit dem Iptables-Befehl in Firewall-Regeln umsetzt. Ihre An- wendung wird nicht durch eine grafische Oberfläche unterstützt. Es gibt jedoch für (http://www.webmin.com) ein leider veraltetes Shorewall-Modul. Dennoch verwenden viele Anwender gern Shorewall, da es sehr flexibel den Aufbau von komplizierten Firewalls auf der Distribution ihrer Wahl ermöglicht.

287 open source library e ekh o ie ndeadr oe sgb eh esheeePolicies, verschiedene sechs gibt Es Zone. andere die können: definieren in Sie einer die von Verkehr den typische iseDtiitdeDatei die ist Datei tigste erctnsltn s i Datei die ist sollten, betrachten hrwl eet ndnDsrbtoe integriert. Distributionen den in Homepage bereits der Shorewall auf Sie da einfach, sehr shorewall.net ist Shorewall von Installation Die weiter Projekt möchten. das verlassen ob nicht, Entwicklers Sie einzigen wissen eines wird. einstellen, gepflegt Arbeit über- Leistung seine Firewall die ge- Entwickler einer auf der bei Entwickler Sollte speziell sich einzigen natürlich Sie sich einem ob Sie von legen, sollten Wesentlichen Daher Eastep. im Tom Moment pflegt: im wird Shorewall 288 zone. policy Demilitarized Network noch selbst: Local immer Firewall es die gibt Internet für Default bad Zone Per weitere big Netzwerkkarten. eine drei The zusätzlich über verfügt Firewall COMMENTS Diese DMZ Local Internet dmz loc DISPLAY net #ZONE Verzeichnis dem in sich befindet Konfiguration Shorewall-Konzept gesamte Das Die 13.3.1 Dtisets aus: so sieht -Datei zones Exkurs aeefrsmlceatel itiuinnfidn eles ist Teilweise finden. Distributionen aktuelle sämtliche für Pakete DtihtdnflednInhalt: folgenden den hat -Datei Zitat: und Projekt Gründe dem dafür: Grund persönliche von der Rückzug waren Überlastung seinen Wesentlichen Eastep Im Tom gegeben. hat bekannt 2005 Mai 22. Am uflgn ensi nagOtbrgb ssgren Shorewall eine sogar es weiter- gibt Oktober Shorewall Beta. 3.0 Anfang entschieden, seit jedoch denn Tom zupflegen, sich night) hat at Anscheinend aid breathing Shorewall. a neighborhood. and use the Linux (I life. in toward disorders my embarrassment behavior sleep dislike an addictive developed I weight. become exhibiting have e) in have begun I pounds landscaping have d) 60 and I over lawn c) gained My have b) I Shorewall: a) developing began I Since zones ACCEPT ndrdeFrwl-oe enetwre.Eine werden. definiert Firewall-Zonen die der in , , policy DROP , irdfiirnSedeDfutPlce für Default-Policies die Sie definieren Hier . REJECT , QUEUE , CONTINUE fw 3Administrationsoberflächen 13 i wieDti i Sie die Datei, zweite Die . oder /etc/shorewall NONE ietypische Eine . http://www. .Diewich- 13.3 Shorewall (Shoreline Firewall) library

#SOURCE DEST POLICY LOG LIMIT:BURST # LEVEL

loc net ACCEPT open source net all DROP info

# THE FOLLOWING POLICY MUST BE LAST # all all REJECT info

Über den Log-Level definieren Sie, ob und wie die zutreffenden Pakete protokolliert werden sollen. Falls Sie den Ulog-Daemon einsetzen möchten, geben Sie hier ULOG an. In der letzten Spalte können Sie die maximale Rate der TCP-Verbindungen und den erlaubten Burst angeben (siehe Abschnitt 16.19). Die Ausnahmen dieser Default-Policies werden dann in der Datei rules definiert. Sie müssen hier nur Regeln definieren, die den Verbindungsaufbau erlauben oder ablehnen. Die Shorewall kümmert sich dann selbst um alle weiteren Pakete, die zu der aufgebauten Verbindung gehören (State: ESTABLISHED) oder mit ihr verwandt sind (State: RELATED). Um zum Beispiel aus dem internen Netz mit der Secure Shell auf die Firewall zuzugreifen und die Firewall per https Updates aus dem Internet (z.B. Red Hat Network) downloaden zu lassen, müssen Sie die folgende Regel in der Datei rules einfügen:

#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ # PORT PORT(S) DEST LIMIT GROUP ACCEPT loc fw tcp 22 ACCEPT fw net tcp 53 ACCEPT fw net udp 53 ACCEPT fw net tcp 443 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Tipp Wenn es Sie stört, dass Sie zwei Zeilen für den DNS-Verkehr in der Datei rules definieren müssen, können Sie auch das mächtige Action-Konzept von Shorewall nutzen. Die Actions können Sie selbst definieren, aber Shorewall verfügt auch bereits über eine Reihe von vorkonfigurierten Actions in /usr/share/shorewall/.Die Action AllowDNS wurde so definiert: # # Shorewall version 2.4 - AllowDNS Action # # /usr/share/shorewall/action.AllowDNS # # This action accepts DNS traffic. #

289 open source library e t0dtc dhcp,routefilter,norfc1918 detect detect die Shorewall detect verwendet Hierzu NAT. des OPTIONS Definition die Datei noch eth2 fehlt Schließlich eth1 BROADCAST eth0 INTERFACE dmz loc net #ZONE Dies zuordnen. Datei Netzwerkkarten der verschiedenen in den erfolgt Zonen die noch Sie müssen Nun hrwl :u :u :i :i :i :i 6:Aus 5:Ein 4:Ein 3:Ein 2:Ein 290 1:Aus 0:Aus --list shorewall chkconfig shorewall # IPSEC PORT(S) REMOVE NOT PROTO DO -- über LINE jede maskiert THIS Zeile ABOVE Diese eth1 ENTRIES YOUR ADD -- ADDRESS LINE #LAST eth0 SUBNET #INTERFACE isbiInnac e alit önnSemtdmBefehl Ob dem mit gestartet. Sie Init-Skript können ist, ein Shorewall Fall wird der über 1.3.9 auch Rechners Ihnen Version bei der des dies Seit Boot-Zeitpunkt starten. zum Shorewall noch automatisch nur Sie müssen Nun brdeNetzwerkkarte die über a unt nFr von Form in Subnetz das el ein: Zeile masq menahenMsurdn udfiirn rgnSehe i folgende die hier Sie tragen definieren, zu Masquerading ein einfach Um . OTPR()DS II GROUP LIMIT DEST PORT(S) GROUP PORT LIMIT eine 443 durch Zeile erste REMOVE USER/ die NOT 22 auch DO Sie tcp -- können DEST RATE Genauso ONE PORT(S) net THIS ORIGINAL BEFORE tcp ENTRIES YOUR net PORT SOURCE ADD fw -- fw LINE #LAST DEST ACCEPT loc fw 53 USER/ AllowDNS PROTO DEST 53 ACCEPT SOURCE # RATE tcp #ACTION Datei erzeugt: der Ergebnis udp in gleiche REMOVE das Einstellung NOT die folgende können, auch DO nutzen Sie ORIGINAL -- dass bedeutet, ONE Das - SOURCE THIS BEFORE - ENTRIES YOUR ADD DEST -- LINE - #LAST PROTO - ACCEPT ACCEPT DEST # SOURCE #TARGET ################################################################# rezn aac ü S ievrofiuireAto vorhanden Action vorkonfigurierte eine SSH ist. für auch da ersetzen, interfaces eth1 192.168.0.0/24 . neudnit lentvkne i für Sie können Alternativ ist. angebunden eth0 ughneVridn u e unt,das Subnetz, dem aus Verbindung ausgehende angeben. 3Administrationsoberflächen 13 chkconfig überprüfen. AllowSSH ########### eth1 -Zeile rules auch 13.3 Shorewall (Shoreline Firewall) library

Damit jedoch nicht eine fehlerhafte oder fehlende Konfiguration den Zugriff auf den Rechner verhindert, ist der tatsächliche Start noch deaktiviert. Bei den aktuellen Dis-

tributionen wird der Start über die Datei /etc/shorewall/shorewall.conf gesteuert. Diese open source Datei enthält zu Beginn die Variable STARTUP_ENABLED=No. Setzen Sie diese Variable auf Yes, und Sie können Shorewall starten. Hierfür verwenden Sie den Befehl shorewall. Dieser Befehl hat die folgenden Optionen: I help: Zeigt die Hilfe an. I start: Dies startet die Shorewall. I stop: Dies stoppt die Shorewall. Dabei werden das Forwarding und das Rou- ting deaktiviert. Wenn Sie diesen Befehl aus der Ferne durchführen, sollte Ihre IP-Adresse in der Datei routestopped enthalten sein, damit die Shorewall anschlie- ßend noch die Kommunikation mit Ihrer IP-Adresse erlaubt. I clear: Entfernt sämtliche Shorewall-Regeln und -Policies. Der Rechner ist an- schließend von außen erreichbar. I restart: Führt einen Neustart der Shorewall durch. I save: Speichert die aktuelle Konfiguration in einer Backup-Datei für eine spätere Wiederherstellung ab. I restore: Stellt die Konfiguration wieder her. I forget: Entfernt die Backup-Datei. I check: Prüft die Konfiguration. I try []: Führt einen Neustart der Shorewall mit dem angegebenen Konfigurationsverzeichnis durch. Allerdings wird, sobald ein Fehler auftritt, er- neut ein Neustart mit der Default-Konfiguration in /etc/shorewall durchgeführt. Wenn Sie einen Timeout angeben, dann wird der Neustart immer nach Ablauf desTimeoutsdurchgeführt.DamitkönnenSieauchausderFerneeineneue Konfiguration testen, ohne befürchten zu müssen, sich dauerhaft auszuschlie- ßen. Shorewall unterstützt die Verwendung von alternativen Konfigurationsverzeichnis- sen. Um diese mächtige Funktion zu nutzen, erzeugen Sie einfach ein neues Ver- zeichnis /etc/test und kopieren die Dateien, die Sie ändern möchten, in dieses Ver- zeichnis. Nach ihrer Modifikation können Sie zunächst die Konfiguration auf ihre syntaktische Korrektheit prüfen: shorewall check /etc/test. In dem Verzeichnis /etc/test fehlende Dateien werden automatisch aus dem Verzeichnis /etc/shorewall geladen. Nachdem Sie alle Fehler korrigiert haben, können Sie mit shorewall try /etc/test 30 die neue Konfiguration prüfen. Sollten Sie sich bei diesem Vorgang selbst ausge- schlossen haben, müssen Sie nur 30 Sekunden warten. Dann wird die Shorewall sich selbst wieder zurücksetzen! Ist alles zu Ihrer Zufriedenheit, so kopieren Sie die modifizierten Dateien in das Verzeichnis /etc/shorewall, und die Firewall wird nun nach einem Neustart die aktuelle Konfiguration verwenden.

291 open source library ugwre.Jd P,Nt-oe A-des ndee ae iddn auto- dann wird Datei dieser in MAC-Adresse Variablen der oder entsprechend Netz- matisch IP-, Jede ausgewertet. ndee ae önnSeBfheenrgn i ahdmAfu e Befehls des Aufruf dem nach die eintragen, Befehle Sie können Datei dieser In continue blacklist Datei der in können Sie blacklist vordefinierte für Beispiele mit Makro, können. Art in vereinfachen Sie eine finden Regelsätze sind Shorewall-Actions Actions komplizierte definieren. Sie Actions eigenen der Ihre Sie können Hier actions zählen. HTTP-Verkehrs zu die des SMTP-Verbindungen Zählregeln, Anteil der den sind Anzahl Beispiel die Dies zum oder um angeben. zählen, Accounting-Regeln Pakete Sie bestimmte lediglich können Datei dieser In einen so erhalten Sie accounting aber –, da Shorewall-Handbuch administrie- Möglichkeiten. das und die verstehen ist über Fülle dafür Überblick ganzen nicht – Ihrer sicherlich können in wird Dateien ren Information die verwendeten Diese Sie Shorewall damit vermitteln. von ausreichen, den Funktionen von ihren Eindruck und einen Dateien kurz Ihnen soll Kapitel Shorewall-Dateien Dieses Die 13.3.2 292 dieselbe ein- und Zonen ein unterschiedliche über in die sind, Rechner, verbunden die Shorewall sinnvoll, der es mit ist Netzwerkkarte Konstellationen einigen In angeben, hosts Rechner die Datei soll. dieser deaktivieren in ECN blo- Wenn Shorewall Sie nutzen. benutzt, die können ECN TCP-Headern die wollen, die für und nutzen Pakete, IP- ECN die Firewalls dennoch den kommerzielle Sie in und Bits ältere kann. reservierte viele verhindern ckieren bisher und jedoch eine erkennen ECN die frühzeitig Methode, Da nützliche Netzwerkverbindung sehr der eine ist Verstopfung (ECN) Notification Congestion Explicit Die ecn clear shorewall öce ätihrRgl ohwee etmt rnrgl ü i Grund- die für Grundregeln bestimmte aktivieren. wieder Systems des doch sicherheit Regeln sämtlicher Löschen Datei shorewall.conf i nee.Dn iddeeDtifrdeetpehneNetzwerkkarte entsprechende die für Datei diese wird Dann angeben. mit ugrfnwre oln ai önnSezmBipe ahdem nach Beispiel zum Sie können Damit sollen. werden aufgerufen abgewiesen. interfaces /usr/share/shorewall/ e e esheee ezekatndeOption die Netzwerkkarten verschiedenen den bei BLACKLIST_DISPOSITION . 3Administrationsoberflächen 13 und BLACKLIST_LOGLEVEL nder in 13.3 Shorewall (Shoreline Firewall) library zuteilen. Damit können Sie noch feiner die Regeln für die einzelnen Rechner konfi- gurieren und zum Beispiel eine Zone dmzdns und eine Zone dmzproxy definieren. Die

Zonen müssen Sie zunächst in der Datei zones angeben. Dann ordnen Sie nicht den open source Zonen in der Datei interfaces Netzwerkkarten zu, sondern geben in dieser Datei Subnetze und Rechner an. init, initdone, start, started, stop und stopped Hier können Sie Befehle definieren, die vor dem Start von shorewall start (init)oder nach der Initialisierung des Befehls und vor dem Hinzufügen der Regeln (initdone) ausgeführt werden sollen. Die Dateien start und started werden nach dem Start der Shorewall ausgeführt. Dabei wird die Datei started erst nach dem vollständigen Start der Shorewall aufge- rufen (siehe Dokumentation). Die Datei stop wird zu Beginn des Befehls shorewall stop ausgeführt, und die Datei stopped wird anschließend ausgeführt. Über diese Dateien können Sie die Shorewall mit eigenen Skripten beliebig erwei- tern. interfaces In dieser Datei ordnen Sie die Zonen verschiedenen Netzwerkkarten zu. ipsec In dieser Datei können Sie Regeln für IPsec-Verbindungen hinterlegen. Grundsätz- lich können Sie hier zum Beispiel Regeln für die Maximum Segment Size (MSS) set- zen. Wenn Sie zusätzliche Regeln setzen möchten, die den IPsec-Verkehr erlauben oder verbieten, müssen Ihr Kernel und Ihr Iptables-Befehl über den Policy-Match (siehe Kapitel 33)verfügen. maclist Mit dieser Datei können Sie Regeln definieren, die nur bestimmten MAC-Adressen die Kommunikation erlauben. Damit können Sie einen MAC-Filter erzeugen, wie er häufig auch für WLAN-Anwendungen verwendet wird. masq In dieser Datei definieren Sie das Masquerading und Source-NAT. Dabei haben Sie alle Freiheiten, die der Iptables-Befehl Ihnen auch gibt. modules Diese Datei lädt alle zum Start der Shorewall benötigten Module.

293 open source library issemgih sInn erenahjd PArseasenmNt ie IP- einer Netz einem aus zuzuordnen. IP-Adresse Netz jede anderen einem einfach aus sehr Adresse Ihnen, es ermöglicht Dieses esilSeainadce,bidnnSemheeVridne u Internet zum Verbindungen mehrere möchten. nutzen die Sie gleichzeitig zum denen diese verwendet und Sie bei besitzen Dazu können abdecken, Damit definieren. Szenarien Kernels. Beispiel Routing-Tabellen des Advanced-Routing-Funktionen zusätzliche die Shorewall Sie können Hier der providers in dann werden ver- Default-Policies den dieser zwischen Ausnahmen Verbindungen Datei Alle die für Zonen. Default-Policies schiedenen die definiert Datei Diese policy einfacher in Variablen die Da- anderen Sie in nutzen und und Bourne-Shell-Syntax. Stellen definieren anderen Dazu an Sie wiederverwenden. die teien definieren, Variablen Sie können Hier params Iptables- das Sie können Datei dieser Mit ist netmap Fällen dieser einigen in nicht In wird können. dass Port-Forwarding verwenden einfaches darauf, ProxyARP Datei,sonderninderDatei ein Sie Auch auch Achten vorzuziehen. Shorewall definieren. ProxyARP 1:1-NAT-Regeln der Sie bei können Sie Datei dieser Mit nat 294 Firewall gestoppten einer bei die möch- angeben, erlauben Regeln Kommunikation Datei akzeptieren. die Wenn dieser Verbindungen Bridge, möglich. dennoch in einer mehr Sie auf Kommunikation können Beispiel keine ten, ist zum stoppen, dennoch, Shorewall Sie die Sie Wenn Iptables-Befehl routestopped Ihr und ein- dass Kernel führen, Ihr dazu werden. das die dafür geroutet müssen definieren, anders Firewall-Regeln Verbindungen Sie zelne können Datei dieser In routes Kapitel auch (siehe definieren Proxy-ARP Sie können Datei dieser In proxyarp rules definiert. ROUTE Tre seeAbschnitt (siehe -Target rules definiert. NETMAP Tre seeAbschnitt (siehe -Target 18.4.3 unterstützen. ) 3Administrationsoberflächen 13 29 20.5 ). )nutzen. 13.3 Shorewall (Shoreline Firewall) library rules Diese Datei enthält den eigentlichen Kern des Shorewall-Regelwerkes. Hier definie- ren Sie Ihre Firewall-Regeln in der abstrakten Shorewall-Syntax. Dabei können Sie open source auch selbst definierte Actions aus der Datei action verwenden. shorewall.conf Diese Datei steuert zentral das Verhalten der Shorewall. Hier können Sie zum Bei- spiel konfigurieren, ob die Shorewall überhaupt startet! tcrules Häufig soll eine Firewall auch direkt die zur Verfügung stehende Bandbreite der Internetverbindung regulieren. Dazu unterstützt Shorewall die Quality-of-Service- Funktionen des Linux-Kernels. Hier können Sie Regeln definieren, die Pakete oder Verbindungen markieren und klassifizieren (siehe auch Abschnitt 21.2.1). tos Wenn Ihre Infrastruktur noch die Type-of-Service-Bits (TOS) in dem IP-Header un- terstützt und Sie diese nutzen möchten, um bestimmte Verbindungen zu priorisie- ren, können Sie in dieser Datei Regeln definieren, die die TOS-Bits entsprechend setzen (siehe auch Abschnitt 21.2.9). tunnels Eine Firewall ist häufig auch der Endpunkt von VPN-Tunneln. Diese Tunnel kön- nen Sie in dieser Datei definieren. Die Shorewall wird dann diese Tunnel erlauben. Natürlich müssen Sie zusätzlich zum Beispiel Racoon oder OpenVPN konfigurieren, damit die Tunnel auch aufgebaut werden. zones In dieser Datei definieren Sie die Zonen, die von der Firewall überwacht werden sollen. Für die Anzeige können Sie hier jeder Zone einen aussagekräftigen Namen zuweisen.

13.3.3 Weitere Shorewall-Eigenschaften Die Shorewall unterstützt im Weiteren folgende Funktionen, auf die ich im Rahmen dieses Buches nicht eingehen kann. Diese Funktionen werden aber in der mitgelie- ferten Dokumentation ausführlich beschrieben und mit Beispielen dokumentiert: I Tunnel – IPv6- in IPv4-Tunnel – PPTP-Tunnel – IPv4- in IPv4-Tunnel

295 open source library 296 enSeen ähieudflxbeOeflcesce,deae heMu zu Maus Backup ohne Kandidat. einfaches interessanter ein aber und ein die kann Shorewall werden die suchen, gewartet ist Oberfläche Ferne ermöglicht, der flexible aus einfach und ist, mächtige bedienen eine Sie Wenn I I I I lclsigvnIP-Adressen von Blacklisting Internetzugänge Mehrere Bridge-Modus im Firewall Bandbreitenbegrenzung – – Pe-unlmtdmLnxKre . n 2.6 und OpenVPN-Tunnel 2.4 Linux-Kernel dem mit IPsec-Tunnel 3Administrationsoberflächen 13 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library securitylevel ih mfhe.I e eoaCr -itiuinbfidnsc en weiteren keine (von sich Firewall einer befinden ich Wartung 4-Distribution kann und Core Firewall Pflege Fedora einer zur der Werkzeuge Konfiguration In die empfehlen. für nicht Werkzeuge dieser Anwendung Die heute ist Es komfortabel. system-config-securitylevel. noch Befehls schön des weder Interface ist textbasiertes lokkit ein Werkzeug Das 14.1: Abbildung meisten. am bisher Firewall-Funktion die mit vernachlässigt Zeit lange Hat Nachdem Red 4 Core Hersteller Fedora Der Firewall- spezielle einige 14.1 und Werkzeuge diese erläutern. ich Besonderheiten deren Firewalls. werde und von vorstellen Verwaltung Kapitel Distributionen die diesem für Werkzeuge In auch enthalten Distributionen Viele 14 ohkiebsneeItliezoe ofraiiä (Abbildung Komfortabilität oder Intelligenz besondere keine noch u efgn tn,gb si e kule itiuinnmit Distributionen aktuellen den in es gibt stand, Verfügung zur 1 B iätrnDsrbtoe eß issWerkzeug dieses heißt Distributionen älteren ei 1 i ifce rfice ekeg issWrzu ittae immer aber bietet Werkzeug Dieses Werkzeug. grafisches einfaches ein Distributionswerkzeuge lokkit u i ussbsetsWrzu (Abbildung Werkzeug Curses-basiertes ein nur redhat-config-securitylevel vi a beee) Aller- abgesehen). mal . 14.2 ). system-config- 14.1 )

open source library open source library c is ekeg bra nee tlei ismBc eadl,mct ich möchte behandele, Buch diesem verweisen. in Kapitel entsprechenden Stelle Da die anderer nutzen. auf an Core-Distribution Sie aber Fedora einer Werkzeuge auf diese einfach ich recht daher Sie können Diese e agit ed c ihhe u i eetihnPnt ecrne.Auf PDF-Dokument. beschränken. starken Seiten Punkte 110 Zei- wesentlichen einem in die 1000 SUSEfirewall2 auf der fast Dokumentation hier ner Kommentare mich ich der werde http://susefaq.sourceforge.net/articles/firewall/fw_manual.html inklusive ist, Konfigurationsdatei lang len gesamte die werden. geändert Da Dialog anspre- entsprechenden Konfigurationsdatei beim ich der YaST werde in von gra- Dabei Variablen die dem erläutern. entsprechenden chen, mit 10 die OSS Konfiguration jeweils Linux die auch SUSE hier aber Version werde der Ich YaST erfolgen. Werkzeug YaST fischen über auch als Zonen: direkt drei mit umset- Firewall Regeln (DMZ) eine in Entmilitarisiert unterstützt und SUSEfirewall2 lesen Die Konfigurationsdatei diese zen. die Bash-Skripten, von Reihe ig ene ihi e o riilgngpetnudvnRda geförder- RedHat Pakete: von folgenden die und Kanal gepflegten Extras Freiwilligen Core von Fedora dem ten in sich befinden dings SELinux. der von neben Konfiguration erlaubt die system-config-securitylevel auch Befehl Firewall grafische Der 14.2: Abbildung 298 im sich es handelt Dabei aus. SUSEfirewall2 die Konfigurationsdatei 8.0 eine Version um Wesentlichen der 10 seit OSS Linux liefert SUSE SUSE 14.2 I I hrwl seeAbschnitt (siehe Shorewall Abschnitt (siehe Builder Firewall i ofiuainkn oolüe i Konfigurationsdatei die über sowohl kann Konfiguration Die . 13.3 ). 13.1 )und /etc/sysconfig/SUSEfirewall2 ne i e esc ei- Versuch den Sie finden 4Distributionswerkzeuge 14 Innen n meine um und , Außen und 14.2 SUSE Linux OSS 10 library open source

Abbildung 14.3: Sie können mit diesem Dialog die Firewall stoppen oder neu starten.

Sie starten zunächst YaST und wählen dort das Menü Sicherheit aus. Dort finden Sie ein Modul Firewall. Nach dem Anklicken öffnet sich das YaST2-Firewall-Modul (Abbildung 14.3). Dort können Sie auswählen, ob die SUSEfirewall2 automatisch bei jedem Systemstart oder nur auf manuelle Aufforderung gestartet werden soll. Außerdem erkennen Sie, ob aktuell die Firewall aktiv ist oder nicht. Ein Neustart der Firewall kann übrigens auch auf der Kommandozeile erfolgen. Hierfür rufen Sie einfach rcSUSEfirewall2 restart auf. Bevor Sie die Firewall konfigurieren können, müssen Sie die Netzwerkkarten fest- legen. Hierfür wählen Sie im linken Baum den Punkt Schnittstellen aus (Abbildung 14.4). Hier legen Sie fest, welche Karte mit welcher Zone verbunden ist. Die SUSE- firewall2 unterscheidet drei Zonen: I Interne Zone. Diese darf ungehindert auf die externe Zone zugreifen. I Externe Zone. Diese Zone hat keinerlei Rechte, außer wenn ein Forwarding defi- niert ist (siehe weiter unten). I Entmilitarisierte Zone. Der Zugriff auf die externe Zone ist erlaubt. Ein Zugriff aus der externen Zone in die entmilitarisierte Zone ist nach Konfiguration auch erlaubt. Wenn Sie die Einstellungen in der Konfigurationsdatei nachvollziehen möchten oder manuell durchführen wollen, müssen Sie die folgenden Variablen editieren:

FW_DEV_EXT="any eth-id-00:0c:29:50:05:b0" FW_DEV_INT="eth-id-00:0c:29:50:05:a6" FW_DEV_DMZ="eth-id-00:0c:29:50:05:9c"

Lassen Sie sich nicht von den ungewöhnlichen Bezeichnungen der Netzwerkkarten irritieren. SUSE verwendet statt eth0 die Bezeichnung eth-id-.

299 open source library iealzgefn sitjdc inol i iealac o e nennZone internen der der vor Dienste freizuschalten. auch alle Dienste Sonderfall. Firewall auf bestimmte einen die nur zunächst um und sinnvoll, diese schützen sich jedoch Zu- darf zu ist es ein ist, Es handelt die Zone zugreifen. Zone auf (Trusted) Firewall Dienste, internen vertraute die der eine Sie dies Bei konfigurieren Da soll. und sein aus, den erlaubt Zone aus einen griff jede Sie auf nun Zugriff die Sie einen auf Wählen um Firewall, nicht der Firewall! sich der auf handelt hinter Dienste Dienst Es um zugreifen. hierbei Zonen sich verschiedenen handelt Es nieren. bidn 44 esnSejdrNtwrkrederctg oezu. Zone richtige die Netzwerkkarte jeder Sie Weisen 14.4: Abbildung 300 (Abbildung Dialog nächsten im Netz- eine Sie empfangen. für müssen oder dies Nun versenden Sie Pakete Wenn keine zuordnen. diese darf Zone versäumen, einer werkkarte Netzwerkkarte jede sollten Sie diese Sie müssen zuzugreifen, Firewall der Dienst einen freischalten. auf Um 14.5: Abbildung 14.5 i rabe int defi- Dienste erlaubten die ) 4Distributionswerkzeuge 14 14.2 SUSE Linux OSS 10 library

Auch diese Einstellungen können Sie in der Konfigurationsdatei wiederfinden oder direkt dort vornehmen. Dazu müssen Sie die folgenden Variablen editieren:

FW_PROTECT_FROM_INT="yes" open source FW_SERVICES_EXT_TCP="" FW_SERVICES_EXT_UDP="ipsec-nat-t isakmp" FW_SERVICES_EXT_IP="esp" FW_SERVICES_EXT_RPC="" FW_SERVICES_DMZ_TCP="" FW_SERVICES_DMZ_UDP="" FW_SERVICES_DMZ_IP="" FW_SERVICES_DMZ_RPC="" FW_SERVICES_INT_TCP="http ssh" FW_SERVICES_INT_UDP="bootps" FW_SERVICES_INT_IP="" FW_SERVICES_INT_RPC=""

Die hier aufgeführte Variable FW_SERVICES_EXT_UDP="ipsec-nat-t isakmp" wird an meh- reren Stellen von YaST verändert. Die hier eingefügten Werte "ipsec-nat-t isakmp" werden von dem IPsec-Dialog gesetzt, wenn die IPsec-Unterstützung aktiv ist. Der nächste Dialog beschreibt das Masquerading oder auch NAT. Zunächst aktivieren Sie hier grundsätzlich das Masquerading auf der externen Netzwerkkarte (Abbil- dung 14.6). Die folgenden Variablen in der Konfigurationsdatei reflektieren Ihre Einstellungen:

FW_ROUTE="yes" FW_MASQUERADE="yes" FW_MASQ_DEV="$FW_DEV_EXT" FW_MASQ_NETS="0/0"

Abbildung 14.6: YaST erlaubt Ihnen sehr einfach, das Masquerading einzuschalten.

301 open source library is iselne önnSeac aul ndnflednVralndurchfüh- Variablen folgenden den in manuell ren: auch Sie können DHCP-Clients Einstellungen Diese von Beispiel verwendet. zum NETBIOS-Protokoll werden dem Broadcast-Pakete oder Diese erlaubt. Firewall enSedeEntlugmnelvremnmctn ewne i i folgen- die Sie verwenden möchten, vornehmen Variablen: manuell den Einstellung die Sie Wenn eingeben. bindung usatn i e urf e Pe rabn(Abbildung Regeln erlauben können entsprechenden IPsec mit Sie per Firewall Zugriff IPsec-Verkehr. den Ihre von die IPsec-Option ausstatten, Filterung der Auswahl die durch auch einfach unterstützt SUSEfirewall2 Die i etretn o racs-PPktnwr ndmncse ilg(Abbil- Dialog nächsten dem in wird dung Broadcast-IP-Paketen von Weiterleitung Die FW_FORWARD_MASQ="0/0,10.0.0.5,tcp,80" lediglich Dialog diesem nach in Verbindungen dazu von Sie Weiterleitungen Wählen auch definieren. Sie innen können Dialog denselben werden. eingerichtet Über leicht kann IP-Forwarding oder Port- ein Auch 14.7: Abbildung 302 unten jederzeit Sie können benötigen, Hilfe Baum eine Dialog Dialoge dem der in links einem bei Sie Wenn FW_IGNORE_FW_BROADCAST_DMZ="no" FW_IGNORE_FW_BROADCAST_INT="no" FW_IGNORE_FW_BROADCAST_EXT="no" FW_ALLOW_FW_BROADCAST_DMZ="no" FW_ALLOW_FW_BROADCAST_INT="bootps" FW_ALLOW_FW_BROADCAST_EXT="no" ratnennnunDao (Abbildung Dialog neuen einen erhalten u amnih zurück. Baumansicht zur 14.8 ofiuir.He önnSeentle,wlh PBodatPkt die IP-Broadcast-Pakete welche einstellen, Sie können Hier konfiguriert. ) Hilfe nlce.Sekhe ncleeddrhAkiknvon Anklicken durch anschließend kehren Sie anklicken. 14.7 ,i e i i etruetneVer- weiterzuleitende die Sie dem in ), 14.9 4Distributionswerkzeuge 14 ). Hinzufügen ,undSie 14.2 SUSE Linux OSS 10 library open source

Abbildung 14.8: Normalerweise möchten Sie auf Ihrer Firewall sämtliche Broadcast-Pakete verwerfen. Ausnahme ist vielleicht ein DHCP-Server.

Abbildung 14.9: Die Aktivierung der IPsec-Unterstützung erfolgt nur durch das Setzen eines Hakens.

In der Konfigurationsdatei macht sich das durch die folgenden Variablen bemerk- bar:

FW_SERVICES_EXT_UDP="ipsec-nat-t isakmp" FW_SERVICES_EXT_IP="esp"

Als letzter Dialog wird von YaST der Protokollierungs-Level angeboten (Abbildung 14.10). Hier können Sie auswählen, welche Pakete eine Protokollierung erzeugen sollen. Um die Menge der Protokolle in einem erträglichen Rahmen zu halten, ist es sinnvoll, nur kritische Pakete zu protokollieren. Die SUSEfirewall2 unterscheidet akzeptierte und verworfene kritische Pakete. Kri- tische verworfene Pakete sind gespoofte Pakete, TCP-Verbindungsanfragen und bestimmte ICMP-Pakete. Kritische akzeptierte Pakete sind TCP-Verbindungsauf- bauten, RPC-Verbindungsanfragen und Zugriff auf hohe Ports. Die entsprechenden Variablen in der Konfigurationsdatei sind:

303 open source library i ole irnc imlal iselne u heKretetkontrollieren. Korrektheit ihre auf Einstellungen alle von einmal Anwählen (Abbildung noch Durch zusammen hier einmal sollten noch Sie Firewall-Konfiguration Ihre YaST fasst i brac u aTvrihe n i ae aul dtee.Insgesamt editieren. manuell Datei die und zur verzichten nicht YaST gar auf Ihnen können Kon- Natürlich es auch vorausgesetzt. bietet zur aber grundsätzlich setzt, Ihnen werden Sie diese YaST YaST sondern die als an, Optionen, Auswahl Funktionen, Viele mehr anbietet. wesentlich figuration bietet SUSEfirewall2 gestartet neu Die Einstellungen diesen mit Firewall die (Abbildung wird und geschrieben onsdatei etr iselne rab he aTnct enSennauf nun Sie Wenn nicht. YaST Ihnen erlaubt Einstellungen Weitere FW_LOG_ACCEPT_ALL="no" FW_LOG_ACCEPT_CRIT="no" FW_LOG_DROP_ALL="no" FW_LOG_DROP_CRIT="yes" mehr. nicht sonst Bäumen aus, lauter Protokollierung vor die Wald für den Pakete anschließend kritische Sie nur erkennen Sie Wählen 14.10: Abbildung 304 an. Übersicht der in einmal noch Firewall-Konfiguration die zeigt YaST 14.11: Abbildung 14.12 ). Übernehmen edndeeEntlugnjtti i Konfigurati- die in jetzt Einstellungen diese werden 4Distributionswerkzeuge 14 Weiter klicken, 14.11 ). 14.2 SUSE Linux OSS 10 library open source

Abbildung 14.12: Nun wird die Konfiguration aktiviert. Hoffentlich haben Sie sämtliche Fehler korrigiert. enthält die Datei bei SUSE Linux OSS 10.0 57 verschiedene Variablen, deren Namen relativ selbsterklärend sind und die durch zusätzliche Kommentare in der Datei erläutert werden. Hilfreich bei der manuellen Anpassung ist auch die erwähnte SUSEfirewall2-Dokumentation. Natürlich können Sie auch die SUSEfirewall2 abschalten. Eine Deinstallation ist nicht möglich. Aber setzen Sie einfach den Start-Modus auf manuell. Dann wird das System die Firewall nicht mehr starten, und Sie können eine alternative Oberfläche, z.B. Shorewall, verwenden. Zum Abschluss finden Sie hier alle Variablen der SUSEfirewall2 als Referenz:

FW_DEV_EXT="any eth-id-00:0c:29:50:05:b0" FW_DEV_INT="eth-id-00:0c:29:50:05:a6" FW_DEV_DMZ="eth-id-00:0c:29:50:05:9c" FW_ROUTE="yes" FW_MASQUERADE="yes" FW_MASQ_DEV="$FW_DEV_EXT" FW_MASQ_NETS="0/0" FW_PROTECT_FROM_INT="yes" FW_SERVICES_EXT_TCP="" FW_SERVICES_EXT_UDP="ipsec-nat-t isakmp" FW_SERVICES_EXT_IP="esp" FW_SERVICES_EXT_RPC="" FW_SERVICES_DMZ_TCP="" FW_SERVICES_DMZ_UDP="" FW_SERVICES_DMZ_IP="" FW_SERVICES_DMZ_RPC="" FW_SERVICES_INT_TCP="http ssh" FW_SERVICES_INT_UDP="bootps" FW_SERVICES_INT_IP=""

305 open source library FW_LOAD_MODULES="" FW_USE_IPTABLES_BATCH="" FW_ZONES="" FW_IPSEC_TRUST="no" FW_IPv6_REJECT_OUTGOING="" FW_IPv6="" FW_HTB_TUNE_DEV="" FW_REJECT="" FW_CUSTOMRULES="" FW_ALLOW_CLASS_ROUTING="" FW_IGNORE_FW_BROADCAST_DMZ="no" FW_IGNORE_FW_BROADCAST_INT="no" FW_IGNORE_FW_BROADCAST_EXT="no" FW_ALLOW_FW_BROADCAST_DMZ="no" FW_ALLOW_FW_BROADCAST_INT="bootps" FW_ALLOW_FW_BROADCAST_EXT="no" FW_ALLOW_FW_SOURCEQUENCH="" FW_ALLOW_PING_EXT="no" FW_ALLOW_PING_DMZ="no" FW_ALLOW_PING_FW="yes" FW_STOP_KEEP_ROUTING_STATE="no" FW_KERNEL_SECURITY="yes" FW_LOG="" FW_LOG_LIMIT="" FW_LOG_ACCEPT_ALL="no" FW_LOG_ACCEPT_CRIT="no" FW_LOG_DROP_ALL="no" FW_LOG_DROP_CRIT="yes" FW_REDIRECT="" FW_FORWARD_MASQ="0/0,10.0.0.5,tcp,80" FW_FORWARD="" FW_ALLOW_INCOMING_HIGHPORTS_UDP="" FW_ALLOW_INCOMING_HIGHPORTS_TCP="" FW_TRUSTED_NETS="" FW_SERVICES_ACCEPT_EXT="" FW_SERVICES_REJECT_EXT="0/0,tcp,113" FW_SERVICES_DROP_EXT="" FW_SERVICES_INT_RPC="" 306 an- von Werkzeuge dieser der Vielzahl eine von Distribution kein die Distribution gibt enthält diese jedoch Es auszeichnet, das dar. Firewall-Konfigurationswerkzeug, Ausnahme entwickeltes eine Distribution sicherlich stellt Debian-Distribution Debian Die 14.3 4Distributionswerkzeuge 14 14.4 IPCop library deren Autoren. So finden Sie Shorewall, Firewall Builder und Firestarter in der Dis- tribution. Teilweise befinden sich die Pakete in dem Testing- oder Unstable Branch. open source 14.4 IPCop

IPCop ist eine reine GPL-Firewall-Distribution (http://www.ipcop.org). Die aktuelle Version ist die Version 1.4.8. Sie können diese Distribution als 43-MByte-ISO-Image von der Homepage herunterladen, auf eine CD brennen und anschließend zur Installation nutzen. Für die Installation von IPCop benötigen Sie einen beliebi- gen Intel-Rechner mit mindestens einem Intel 386-Prozessor, 32 MByte RAM und 300 MByte Festplatte. In den meisten Fällen werden Sie sicherlich mehr zur Ver- fügung haben. Ein Diskettenlaufwerk und ein CD-ROM-Laufwerk sind nicht erfor- derlich, aber nützlich. Nach der Installation benötigen Sie auch keinen Monitor und keine Tastatur mehr.

14.4.1 Das IPCop-Konzept Die IPCop-Firewall dient, wie jede andere Firewall auch, als Wächter zwischen meh- reren Netzwerken. Um diese Funktion leicht verständlich zu visualisieren, benennt IPCop die verschiedenen Netzwerkkarten der Firewall mit unterschiedlichen Far- ben: I Rot: Die rote Netzwerkkarte verbindet die IPCop-Firewall mit dem Internet oder einem ähnlich unsicheren Netz. I Grün: An der grünen Netzwerkkarte wird das von der Firewall geschützte Netz angeschlossen. I Blau: Das blaue Netz ist für drahtlose Netze reserviert. Der Zugriff von dem blauen Netz auf das grüne Netz wird streng kontrolliert. Die Verwendung der blauen Netzwerkkarte ist optional. I Orange: Das orange Netz ist die DMZ. Der Zugriff aus diesem Netz in das blaue oder grüne Netz wird streng kontrolliert. Diese Farben sind bei der Konfiguration und der späteren Administration der IPCop-Firewall sehr wichtig. Die Farben vereinfachen aber auch die Konfiguration und die Kommunikation. Sie sollten sich bereits vor der Installation der IPCop-Firewall Gedanken über die in dem grünen Netz verwendeten IP-Adressen und speziell über die IP-Adresse der grünen Netzwerkkarte der IPCop-Firewall machen. Die IPCop-Firewall unterstützt noch folgende bemerkenswerte Eigenschaften: I Eingebauter Update-Mechanismus mit Protokoll der installierten Updates. Nur signierte Updates werden von IPCop entgegengenommen. I Grafische Status-Seiten mit Anzeige des Netzwerkdurchsatzes und der Prozes- sorauslastung

307 open source library i rn ezekat igbn enIrgüe ezekdeIP-Adressen zuweisen. entwe- 192.168.15.254 die wahrscheinlich oder 192.168.15.1 Netzwerk IPCop-Firewall IP-Adresse der grünes die der Sie Ihr werden Wenn verwendet, eingeben. 192.168.15.0/24 Netzwerkkarte grüne die irn Po neshie a rn,dsbae a rneuddsrt Netz- rote (Abbildung das konfigurieren und Netzwerkkarte die orange grüne Sie das die Wählen blaue, konfigu- Sie das zu müssen Netzwerk grüne, Hier das werk. das aufgefordert, unterscheidet Sie IPCop werden rieren. Bildschirm nächsten dem Auf Linux- vor Sie andere Installation bereits der Hat bei Sie Red Fragen stellen. oder die wenn Probleme Debian größeren werden einfach, keine haben, schon installiert Sie recht text-basiert wenn ist Linux Besonders, haben. IPCop installiert von Distributionen Installation Die IPCop-Installation 14.4.2 308 IPCop- alten einer Backup dem (Abbildung einspielen mit wieder installiert, Diskette hier eine Pakete Sie können Sie die Diese ob besitzen. werden Installation gefragt, Bildschirmen werden deut- weiteren die Sie auch einigen und unterstützt Nach IPCop auswählen. Sprache. Sprache sche die zunächst Sie können Nun o ih-iu-diitaoe ewle ednkn,itICpdrhu ein durchaus auch IPCop die suchen, ist Firewall kann, Kandidat. einer vielversprechender werden Verwaltung verwaltet die Nicht-Linux-Administratoren für Lösung von einfache eine Sie Wenn I I I I I I ufhlceProtokolle Ausführliche Interface und Preshared-Keys erlauben. diesem Zertifikaten mit zu mit IPsec-Verbindungen innen für haben nach VPN-Unterstützung außen Sie Komplette von Zu- einschränken. Zugriff den den Internet Möglichkeit, nicht das die leider auf lediglich Sie innen können von Jedoch griff Firewall. der Administration Grafische muss. Snort kennen mit TCP-Protokolls Detection des Intrusion Einzelheiten konfiguriert die einfach man dass sehr ohne kann werden, Bandbreitenkontrolle Die Bandbreitenkontrolle. NTP-Zeitserver und DHCP-Server Proxy, Netzwerkdienste: Zusätzliche Achtung i it ievruleIEFspat nVWr u.Devirtuelle Die aus. erkannt. VMWare nicht teilweise in wird IDE-Festplatte wählen SCSI-Festplatte virtuelle möchten, eine installieren bitte VMware in Sie testweise IPCop Sie Wenn hin. Boot darauf dem Sie weist nach CD-ROM Bildschirm der erste ver- von Der IPCop Festplatte! möglich. gesamte nicht die IPCop wendet bei ist Dual-Boot-Installation Eine uoaiceErkennung Automatische ncleedmse i i PArsefür IP-Adresse die Sie müssen Anschließend . 4Distributionswerkzeuge 14 14.13 14.14 ). ). 14.4 IPCop library open source

Abbildung 14.13: IPCop unterstützt auch die Wiederherstellung mit einer Backup-Diskette.

Abbildung 14.14: Achten Sie bei der Wahl der grünen Netzwerkkarte darauf, dass Sie die richtige auswählen.

Sobald Sie die IP-Adresse für die grüne Netzwerkkarte bestätigt haben, wird der Boot-Manager Grub installiert, und die Installation ist abgeschlossen. Entfernen Sie nunalleDiskettenundCD-ROMsausdenLaufwerken,undbestätigenSiemitOk. IPCop wird nun das Setup-Programm für die weitere Konfiguration aufrufen. Als Tastatur-Layout wählen Sie für eine deutsche Tastatur bitte de-latin1-nodeadkeys.Die Zeitzone für Deutschland ist Europe/Berlin. Als Rechnernamen können Sie die Vor- einstellung ipcop beibehalten oder auch einen eigenen Namen nach Ihren Wünschen wählen. Anschließend wählen Sie einen geeigneten Domänen-Namen. Wenn Sie sich mit einer ISDN-Karte einwählen, müssen Sie das Protokoll (DSS1), die ISDN- Karte und mögliche zusätzliche Modulparameter für den Treiber und Ihre lokale Telefonnummer eingeben. Anschließend aktivieren Sie das ISDN. Wenn Sie keine ISDN-Karte verwenden, können Sie einfach den Bildschirm mit ISDN Deaktivieren be- stätigen.

309 open source library önnSeac ohze N-evruddsGtwyangeben. haben, Gateway ausgewählt das IP-Adresse und DNS-Server statische zwei eine noch Netzwerkkarte auch Sie rote können die für Sie Wenn i uäzihüe ieDZ älnSie wählen DMZ, eine über zusätzlich Sie bidn 41:ICpwitdnFrwl-oe abnz.Whe i i ü Sie für die Sie Wählen zu. Farben aus. Firewall-Zonen Farbkombination den richtige weist IPCop 14.15: Abbildung Netz- Sie einer wählen mit verbunden, Internet Beispiel dem zum mit Netz- DSL IPCop-Firewall die über draht- Bildschirm Ihre werkkarte nächsten ein Ist dem oder auf ändern. DMZ Sie eine werkkonfiguration müssen zusätzlich möchten, verwenden oder Netz verwenden loses ISDN-Karte keine Sie Wenn 310 und DHCP PPPOE, PPTP, mit Internetanbindung IP-Adresse. die statischer unterstützt IPCop 14.16: Abbildung oe ezekat önnSezice ie ttshnudenrdynamischen der einer Bei und statischen IP-Adressen. (Abbildung einer statische wählen IP- zwischen IP-Adresse jeweils Die Sie erhält und IP-Adresse. können Netzwerkkarte Netzwerkkarte eine Netzwerkkarten roten blaue bereits die besitzt Farben und Netzwerkkarte verschiedenen orange grüne Die den zuweisen. Sie Adressen müssen Anschließend dung 14.15 ). 14.16 ). RE RNE+RED + ORANGE + GREEN 4Distributionswerkzeuge 14 n owie (Abbil- weiter so und RE RED + GREEN .Verfügen 14.4 IPCop library

Achtung

Die angegebenen DNS-Server und das Gateway haben Vorrang vor open source den Angaben, die Ihr Provider Ihnen bei z.B. PPPOE mitteilt. Stellen Sie sicher, dass Sie bei einer dynamischen IP-Adresse hier keine Daten eingeben!

Nun sind Sie fast fertig. Auf dem nächsten Bildschirm gibt Ihnen IPCop die Mög- lichkeit, einen DHCP-Server auf der IPCop-Firewall für Ihre Clients im grünen Netz zu betreiben. Wenn Sie diese Funktion wünschen, aktivieren Sie den DHCP-Server und geben einen sinnvollen DHCP-Bereich vor (Abbildung 14.17).

Abbildung 14.17: IPCop kann selbst als DHCP-Server für das grüne Netz arbeiten.

Abbildung 14.18: Bei der ersten Verbindung müssen Sie das Zertifikat akzeptieren.

311 open source library ahenmRbo önnSesc i e e-nefc verbinden. Web-Interface dem mit sich Sie IPCop- können den Reboot für einem und Nach root abgeschlossen. Benutzer ist Installation den die für und Kennwort eingeben, das Administrator noch nur Sie müssen Nun dem mit Konsole der auf ist möglich. Konfigurationswerkzeuge setup der Befehl Aufruf Ein 14.19: Abbildung 312 ipcop ipcop.spenneberg.net 192.168.15.254 Browser Ihrem in URLs Netzwerkkarte folgenden grünen beiden der der IP-Adresse eine die einfach ein: über Sie ist Geben IPCop erreichbar. von Web-Interface Das IPCop-Web-Interface 14.4.3 PArsednRechnernamen den IP-Adresse ctnSebidnUL u i neönihnPr-umr.Wn i nIh- in Sie Wenn Port-Nummern. umgeleitet. ungewöhnlichen URL die zweite auf die URLs auf rer wer- automatisch den Daher URL bei erlaubt. ersten Sie verschlüsselt der Achten noch Eingabe nur der Verbindung bei die Sie den ist 1.4.0 Version der Ab I I https://192.168.15.254:445/ http://192.168.15.254:81/ /etc/hosts Tipp DtidnflednEnrgvremn önnSeac ntleder anstelle auch Sie können vornehmen, Eintrag folgenden den -Datei Po-ytmlklamle n önndr a Kommando das dem dort auf können sich und müssen anmelden Sie erledigen. lokal das Web-Interface Sie IPCop-System können das dann über Kon- müssen, die ändern nicht Sie Schritte dass letzten feststellen, der Zeitpunkt figuration späteren einem zu Sie Wenn setup i ü i neugbenötigen. Änderung die für Sie bildung urfn issKmad rsnir he i eü(Ab- Menü ein Ihnen präsentiert Kommando Dieses aufrufen. 14.19 oder ,i e i i ekeg uwhe önn die können, auswählen Werkzeuge die Sie dem in ), ipcop verwenden: 4Distributionswerkzeuge 14 14.4 IPCop library

Bei der ersten Verbindung mit IPCop wird sich Ihr Browser über das Zertifikat des IPCop-Webservers beschweren. Die Meldung wird ähnlich aussehen wie in Abbil-

dung 14.18. Wenn Sie sicher sind, dass sich in diesem Moment kein Bösewicht in open source Ihre Verbindung eingeklinkt hat, sollten Sie das Zertifikat dauerhaft akzeptieren. Bei dem Internet Explorer müssen Sie View Certificate und dann Install Certificate anwählen. Bei dem Firefox genügt es, wie in der Abbildung 14.18 den Punkt Dieses Zertifikat immer akzeptieren auszuwählen. Falls Sie sich nicht sicher sind, dass das Zertifikat tatsächlich von Ihrer IPCop- Installation stammt, können Sie das überprüfen, wenn Sie sich auf Ihrem IPCop- System anmelden können. Geben Sie auf der Kommandozeile folgenden Befehl ein:

# openssl x509 -noout -fingerprint -in /etc/httpd/server.crt MD5 Fingerprint=7D:94:26:27:D1:A3:59:59:A4:64:33:43:D7:FD:7E:59

Vergleichen Sie diesen Fingerprint mit dem von dem Browser angezeigten Finger- print (bei Firefox wählen Sie Zertifikat untersuchen; Abbildung 14.20). Wenn Sie sich über die IP-Adresse mit Ihrer IPCop-Installation verbinden, wird Ihnen anschließend noch eine zweite Warnung (Abbildung 14.21) angezeigt. Die

Abbildung 14.20: Überprüfen Sie im Zweifelsfall die Fingerabdrücke des Zertifikats.

313 open source library u e Registerkarte si- unterschiebt. der Update korrekt Auf fehlerhaftes sicher, Nur ein Sie Ihnen signiert. sind Angreifer Damit GnuPG ein akzeptiert. mit nicht IPCop-Firewall dass Ihrer Trojanern von vor werden Schutz Updates gnierte zum sind Updates Die ednSeafeodr,sc l Benutzer als sich aufgefordert, Sie werden izgbn a paewr he anbshibn n i ne oteinen (Abbildung dort können finden hochladen Sie IPCop-Firewall die und auf beschrieben, dann ( Ihnen instal- Download-Link wird Updates Update diese Updates Das zunächst einzugeben. ob Sie Seite und die sollten sei auf ist, verbunden hierzu Sie Fall Sie Firewall begrüßt der Wechseln die ist, dies lieren. dass Wenn angeschlossen Meldung, sind. Internet der verfügbar gemacht. dem mit richtig an IPCop-Firewall Firewall alles bereits die die Konfiguration können IPCop-Firewall der und die bei verbunden Wenn Sie Web-Interface haben dem Hoffentlich mit administrieren. Sie sind Nun benutzt. ir uhafenmWnosSse in Windows-System einem auf auch tiert önnSeinree.U nZkntdeeWrugnctmh neeg ube- zu angezeigt mehr Datei nicht Ihre Warnung Sie diese Zukunft sollten in kommen, Um ignorieren. Sie können wird. aufgebaut ipcop.spenneberg.net 192.168.15.254 für mit Zertifikat jedoch das Verbindung da die sich, ist, beschwert ausgestellt Firefox 14.21: Abbildung 314 I I I rinSecepazuddeProzesse. die und Speicherplatz freien System-Diagramme Netzwerk-Status System-Status nentebnugkngretsind. konfiguriert Internetverbindung wpNtugIrrFirewall. Ihrer Swap-Nutzung irfidnSeIfrainnüe i afne int,den Dienste, laufenden die über Informationen Sie finden Hier . is et eg he n i heNtwrkre,Rue und Routen Netzwerkkarten, Ihre wie an, Ihnen zeigt Seite Diese . Info irfidnSegash aselne e P- pihr und Speicher- CPU-, der Darstellungen grafische Sie finden Hier . ,mtdmSezncs a paehrneldnuddann und herunterladen Update das zunächst Sie dem mit ), Status ne i i ogne Informationen: folgenden die Sie finden /etc/hosts Updates nsrcedapse.DeeDtiexis- Datei Diese anpassen. entsprechend system32/drivers/etc/ admin ndrRegisterkarte der in nuednudIrKennwort Ihr und anzumelden 14.22 4Distributionswerkzeuge 14 ). n idac dort auch wird und System Dazu . 14.4 IPCop library open source

Abbildung 14.22: IPCop hat einen eingebauten Update-Mechanismus. So sind Sie vor bekannten Sicherheitslücken geschützt.

I Netzwerk-Diagramme. Diese Seite zeigt die Auslastung der Netzwerkdiagramme gra- fisch an. I Verbindungen. Hier werden Ihnen die aktuellen Netzwerkverbindungen ange- zeigt. Im Grunde handelt es sich um eine Darstellung der Datei /proc/net/ ip_conntrack. Auf der Registerkarte Netzwerk können Sie besondere Einstellungen für spezielle Mo- dems und DSL-Geräte vornehmen. Einige dieser Geräte benötigen eine spezielle Firmware für ihre Funktion, die von IPCop in dem Gerät installiert werden muss. Hier konfigurieren Sie diese Funktionen. Die Registerkarte Dienste erlaubt Ihnen die Konfiguration eines Proxys, eines DHCP- Servers, eines dynamischen DNS-Clients, die Bearbeitung der lokalen Hosts-Datei, den Einsatz eines NTP-Zeitservers, die Konfiguration der Bandbreitenregelung und die Aktivierung des Snort-Intrusion-Detection-Systems. Dabei unterstützt IPCop so- gar bereits die neuen VRT-Regelsätze von Snort und erlaubt Ihnen die Eingabe des Lizenzschlüssels (Abbildung 14.23). Auf der Registerkarte Firewall können Sie lediglich Verbindungen von außen nach innen konfigurieren. Normalerweise sind diese Verbindungen nicht erlaubt. Sie können aber von außen Port-Weiterleitungen nach innen konfigurieren. Sie kön-

315 open source library bidn 42:ICputrtttbrisdeVRT-Snort-Regelsätze. die bereits unterstützt IPCop 14.23: Abbildung 316 immer sind Internet das in Die werden! Netz konfigurieren. eingeschränkt blauen nicht Netz) dem können grüne und und das erlaubt grünen in dem DMZ freige- aus der außen Verbindungen (aus von DMZ-Schlupflöcher IPCop-Administrationsoberfläche und zur ben Zugang externen den nen VPNs. der Verwaltung komplette die übernimmt IPCop 14.24: Abbildung 4Distributionswerkzeuge 14 14.5 Smoothwall library

Auf der Registerkarte VPN können Sie sehr einfach ein VPN konfigurieren. Hierzu können Sie zunächst eine Zertifikatsautorität erzeugen oder die Zertifikate einer

externen CA hochladen. Anschließend erzeugen Sie Verbindungen und können den open source Status der Verbindung beobachten (Abbildung 14.24). Bevor ich das Buch mit Screenshots zu sehr aufblähe, beende ich hier die Beschrei- bung von IPCop, da es auf der IPCop-Homepage auch eine sehr gute 60 Seiten starke Administrationsanleitung gibt. Ich denke, Sie haben die wesentlichen Mög- lichkeiten von IPCop kennen gelernt und finden sich auf dem Web-Interface von IPCop auch selbst recht schnell zurecht.

14.5 Smoothwall

Die Smoothwall (http://www.smoothwall.org) ist eine direkte Alternative zu IPCop. Die aktuelle Version, Smoothwall Express 3.0, wird wie IPCop unter der GPL- Lizenz als ISO-Image vertrieben und ist etwa 46 MByte groß. Die Dokumenta- tion bei Smoothwall ist genauso ausführlich wie bei IPCop. Es gibt ebenfalls einen Quickstart-Guide, einen Installations-Guide und einen Administrations-Guide. Alle Handbücher sind im PDF-Format verfügbar und können von der Homepage herun- tergeladen werden.

Abbildung 14.25: Das Web-Interface kann auch VPN-Verbindungen konfigurieren.

317 open source library mohaludICpgecemßnfrdnEnazasFirewall-Distribution als sind Einsatz Ansonsten den VPN. dem für in gleichermaßen unter- geeignet. Authentifizierung IPCop Smoothwall zur IPCop. und Die bei Zertifikate laden. Smoothwall wie keine Snort-Homepage ausgereift IPCop hier der so zu von stützt nicht Gegensatz Regelsätze auch im neue ist Smoothwall automatisch VPN-Funktionalität kann nicht und Jedoch Snort einen Abstand 3.0 NTP-Server. für IDS, Express als einen Oberfläche Snort Smoothwall und Dynamic-DNS-Client, der hinweisen. einen DHCP- Proxy, IPCop Beschreibung einen zu IPCop genauen Unterschiede wie unterstützt einige einer auf von nur möchte hier nehme Ich boldsWbItraeenwngadr etle s l e Po,bee es bietet IPCop, bei als ist (Abbildung Funktionen gestaltet gleichen anders die weniger wenig oder ein mehr Web-Interface das Obwohl Smoothwall-Web-Interface 14.5.2 wurde. entwickelt Smoothwall von zwei GPL-Version oder die der ein da Basis verwunderlich, mit der nicht auf ist Installation IPCop-Firewall Dies die IPCop-Installation. der Ge- erfolgt Dual-Boot- zu Ansonsten IPCop. Eine identisch Ausnahmen Festplatte. möglich. bei gesamte nicht wie die ist unproblematisch Smoothwall Installation beansprucht ähnlich IPCop ist wie Smoothwall nauso von Installation Smoothwall-Installation Die 14.5.1 318 14.25 4Distributionswerkzeuge 14 ). ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library i aeeshn i ptrvndnRgl ewre edn i ugb von Ausgabe Die werden. verworfen Regeln den Abbildung in von ist auch später Tcpdump Tcpdump die kann sehen, Dabei Pakete kann. die anzeigen Netzwerkpakete die der dozeilenbefehl, i isnmtIrnRgl.FrdeAayedsNtwrvrer innsich eignen Netzwerkverkehrs des Analyse vergleichen die Befehle und Für Netzwerkverkehr die Regeln. stehen. den Linux Ihren Verfügung Sie unter analysieren mit zur ist, Funktionen diesen Fall gewünschten Sie der die nicht Firewall-Skript ob das dies Nutzung Sie, Falls deren Prüfen Diensten, soll. den mit erlauben Sie beginnen einfachsten beheben. Am diesen müssen und Dann suchen Vorstellungen. Fehler Ihren dem richtig nicht nach Die Regeln Ergebnis Sie alle das Shell-Skripts. glauben, entspricht immer Sie des haben, auch Obwohl zu sich Aufruf ein. definiert Firewall-Skript schleichen der einem syntaktische Leider in melden. ist auf Fehler Konsole logische es der hierzu auf Sie Möglichkeit Syntaxfehler sollten wird beste Shell haben, Die gestellt testen. fertig Fehler Firewall-Skript Regeln Ihr der Sie Test Sobald 15.1 sind. sinnvoll hier und die Test ein, ein zum Funktionen auch auch ich auf gehe sich ausführlicher Daher eignen wenig Sicherheitsstrukturen. vorstelle, und in Kapitel Firewall-Systeme Fehler diesem fremder in Audit logischen ich einen die Sie Werkzeuge, ob Die Ihnen, wesentlich zeigt Ihrem haben. sind Test übersehen in Fehler der Regelwerk Fehler Logische Ihrem Nur Syntaktische Aufruf. erkennen. testen. beim zu auch direkt schwerer diese Sie sollte erkennen aufsetzt, Firewall-Skript Firewall eine Wer 15 Achtung i nedn o esskn mGgnazz e o Nmap nach von ziehen. Konsequenzen der sein. sich strafrechtliche zu sogar worden Gegensatz nach einholen im aufgefordert Einschätzung kann meiner dazu Erlaubnis Nessus Person von schriftliche Anwendung betroffenen die Die wird. der immer gescannt von gern vorher oder niemand sich dass sollten daran, Sie bitte jedoch Sie Denken n -werkzeuge und Testmethoden tcpdump 15.1 usehen. zu und ethereal cdm s i ifce Komman- einfacher ein ist Tcpdump .

open source library open source library bidn 51 cdm eg i ezekaeeafdrKnoean. Konsole der auf Netzwerkpakete die zeigt Tcpdump 15.1: Abbildung 320 war: Firewall- Firewall hypothetischen die unserem an von Anforderung das Die wurde. an, zeigen. geschrieben Skript Vorgehensweise Administrator folgende die das Beispiels sich eines Sie anhand Schauen Ihnen ich möchte Folgenden protokol- Im Pakete alle werden, dafür, verworfen Sie Pakete Sorgen werden. die liert ein. bevor Filter-Kette, Log-Regeln spe- jeder den zusätzliche in Firewall-Skript Sie Ihr dass fügen warum unterbindet, können, erkennen Dienst Tcp- nicht ziellen noch spartanischen immer zum so Sie Gegensatz Falls Abbildung im (siehe aufbereitet das ausführlicher Werkzeug, Daten die grafisches dump, ein ist Ethereal grafisch. Netzwerkpakete die browst Ethereal 15.2: Abbildung 5Tsmtoe n -werkzeuge und Testmethoden 15 15.2 ). 15.1 Test der Regeln library

I Erlaube keinen Zugriff von außen in das geschützte Netz. I Erlaube aus dem geschützten Netz den HTTP- und HTTPS-Zugriff auf beliebige

Webserver. open source Der Firewall-Administrator erzeugte aus dieser Anforderung das folgende Skript:

#!/bin/sh

# Firewall-Skript # Lehnt jeden Zugriff von außen ab # Erlaubt HTTP und HTTPS

# Netzwerkkarten INTDEV=eth0 EXTDEV=eth1

IPTABLES=/sbin/iptables

SERVICE="80,443"

$IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP

$IPTABLES -A FORWARD -p tcp -i $INDEV -o $EXTDEV -m multiport \ --dport $SERVICE -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Dieses Skript hat drei Schönheitsfehler, die wir nun suchen wollen. Zunächst startet der Administrator dieses Skript. Bei dem Start bekommt er direkt eine Fehlermel- dung angezeigt:

# sh fw_skript Warning: wierd character in interface ‘-o’ (No aliases, :, ! or *). Bad argument ‘eth1’ Try ‘iptables -h’ or ’iptables --help’ for more information.

Leider zeigt die Fehlermeldung nicht, wo in dem Skript der Fehler aufgetreten ist. Bei diesem kurzen Skript ist es sicherlich leicht für Sie, den Fehler zu finden. Bei einem Skript von 200 oder 300 Regeln ist es ungemein schwerer, die Zeile mit dem Fehler zu entdecken. Die Bash-Shell bietet hierfür die Option -x. Dann zeigt die Shell jede Zeile inklusive der ersetzten Variablen vor der Ausführung:

# sh -x fw_skript + INTDEV=eth0

321 open source library itennTpfhe.Sewre e ipelrscelc co eudnhaben. Namen gefunden dem schon mit sicherlich Tippfehler wurde den Variable werden Die Sie Tippfehler. einen gibt hi OWR ( FORWARD FORWARD -vnL Chain iptables # Seite die Fehlersu- auf Zur Versuch, nutzen. dem zu nach com gewünscht Administrator wie der Firewall zeigt die che möglich, nicht es ist Dennoch -F $IPTABLES Netzwerkkarte der Angabe die Option Zeile hervorgehobenen die fett der für in dass auf, fällt Nun ACCEPT -j ESTABLISHED,RELATED information. --state *). more state or for state -m ! --help’ -m FORWARD :, ’iptables 80,443 -A aliases, or --dport /sbin/iptables (No -h’ multiport + ‘-o’ ‘iptables -m interface ‘eth1’ Try eth1 in argument -o character Bad -i wierd tcp Warning: -p FORWARD DROP -A FORWARD /sbin/iptables DROP -P + OUTPUT /sbin/iptables DROP -P + INPUT /sbin/iptables -P + /sbin/iptables + SERVICE=80,443 + IPTABLES=/sbin/iptables + EXTDEV=eth1 + 322 decode bytes protocol 96 full size for capture -vv (Ethernet), or EN10MB -v link-type use vmnet2, suppressed, on output listening eth1 verbose -ni tcpdump: tcpdump Administrator # Der 0. Wert den Regeln Firewall der der auf nun Zähler startet alle haben Erstaunlicherweise ubeobachten: zu i ih enet Variable definierte nicht die ednneglsh.E ützstlc uBgn ieZieen i i Ketten die die ein, Zeile eine Beginn zu zusätzlich fügt löscht. Er zunächst gelöscht. nie werden Skripts des Aufrufen mehrmaligen bei fest,dassdieneuenRegelnimmerandieKettenangehängtwerden.DieKetten Administrator der stellt Allerdings fehlerfrei. ksbtstre rtoti u oredestination source out in opt prot target bytes pkts -tt E jACCEPT -j NEW --state CETal- .../ 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0 0.0.0.0/0 * 0.0.0.0/0 0.0.0.0/0 * eth0 -- * all eth1 -- tcp ACCEPT * 0 -- all ACCEPT 0 0 ACCEPT 0 0 0 uurie,deRgl an: Regeln die zuzugreifen, oiyDO akt,0bytes 0 packets, 0 DROP policy -i el.ShibrwredeVral ih ntaiir,oe es oder initialisiert, nicht Variable die wurde Scheinbar fehlt. tcpdump INDEV u e nennNtwrkre mdnVerkehr den um Netzwerkkarte, internen der auf ewne.Nc e orku äf a Skript das läuft Korrektur der Nach verwendet. INTDEV ) ntaiir,udi isrZiewurde Zeile dieser in und initialisiert, 5Tsmtoe n -werkzeuge und Testmethoden 15 utpr prs8,4 tt NEW state 80,443 dports multiport tt RELATED,ESTABLISHED state RELATED,ESTABLISHED state http://www.spenneberg. 15.1 Test der Regeln library

10:53:43.766500 IP 10.0.1.128.32769 > 128.176.0.12.domain: 35667+ A? www.spenneberg.com. (36)

10:53:48.270266 arp who-has 10.0.1.1 tell 10.0.1.128 open source 10:53:48.270286 arp reply 10.0.1.1 is-at 00:50:56:c0:00:02 10:53:48.270823 IP 10.0.1.128.32769 > 128.176.0.12.domain: 35667+ A? www.spenneberg.com. (36)

Eigentlich sollte diese Information dem Administrator für die Fehlersuche bereits ausreichen. Der Client versucht, einen Nameserver zu erreichen, um den Namen www.spenneberg.com aufzulösen, und erhält keine Antwort. Anscheinend erlaubt der Regelsatz keinen DNS-Verkehr. Der Administrator möchte es aber genau wissen und fügt manuell eine LOG-Regel an die Kette an:

# iptables -A FORWARD -j LOG --log-prefix "FORWARD: " # iptables -vnL FORWARD Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- vmnet2 eth0 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 state NEW 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0

LOG flags 0 level 4 prefix ‘FORWARD: ’

Nun versucht er erneut, auf die Webseite zuzugreifen, und beobachtet die Proto- kolle. Dort findet er folgende Einträge:

Jul 23 11:00:24 bibo kernel: FORWARD: IN=eth1 OUT=eth0 SRC=10.0.1.128 DST=128.176.0.12 LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=UDP SPT=32769 DPT=53 LEN=44 Jul 23 11:00:29 bibo kernel: FORWARD: IN=eth1 OUT=eth0 SRC=10.0.1.128 DST=128.176.0.12 LEN=64 TOS=0x00 PREC=0x00 TTL=63 ID=1 DF PROTO=UDP SPT=32769 DPT=53 LEN=44

Diese Meldungen zeigen ihm nun eindeutig, dass die DNS-Anfragen an den UDP- Port 53 nicht von der Firewall erlaubt werden. Nach der Kontrolle seines Skripts stellt er fest, dass er folgende Regel vergessen hat:

$IPTABLES -A FORWARD -p udp -i $INTDEV -o $EXTDEV --dport 53 \ -m state --state NEW -j ACCEPT

Er korrigiert sein Skript und startet es erneut. Ein weiterer Versuch scheitert im- mer noch. Er kontrolliert wieder den Netzwerkverkehr mit tcpdump auf der internen Netzwerkkarte der Firewall. Wieder sieht er nur die DNS-Anfragen, aber keine Ant- worten. Er aktiviert wieder manuell die Log-Regel und beobachtet die Protokolle. Hier tauchen nun keine Meldungen auf. Er zeigt die Regeln der FORWARD-Kette

323 open source library 521Nmap-Installation 15.2.1 können. dieser erlernen nach leicht Sie sehr dass selbst dokumentiert, sind Funktionen gut Dabei weitere so Versionsnummer ist. Einführung Nmap möglich welcher welchen von TCP-Verbindungen Funktionen von ist, mit verschiedenen Spoofen die stateful Dienst ein ob Firewall welcher und die wird hat, eingesetzt ob Betriebssystem Nmap feststellen, das erlaubt eines sein, können Patchlevel Händen zu Sie den beginnen Kapitel In Prüfungen. diesem ermitteln. mächtige nach Rechners Sie Fällen des der vielen Anwenders, in Laufzeit kundigen sogar die kann große und und scannt schnell Betriebssystem sehr Es das Rechner, kann. einzelne unterstützen auch Ana- Sicherheitsaudits wie der bei Netzwerke, bei und Sie Netzwerken das Open-Source-Werkzeug, von ein lyse ist Mapper«, »Network der Nmap Nmap, 15.2 einzelnen jeden prü- Anstatt er noch verwendet wird. Administrator testen, unterbunden zu der Zugriff manuell unerwünschte muss Dienst der Nun Das auch Internet. Zugriff. ob das gewünschten fen, auf Zugriff den der erlaubt auch funktioniert Skript Skripts des Neustart einem Nach net.ipv4.ip_forward=1 /proc/sys/net/ipv4/ip_forward -w > sysctl 1 echo Forwarding der ein in Da nicht aktiviert. Pakete (das nicht die ein Weiterleitung noch tauchen ist, Firewall Die Default-Policy erlaubt der Fehler. nicht der auf letzten ist den einschließlich Pakete schließlich Regeln der er Forwarding) der findet So keine hat. dass gezählt Paket sich, wundert und an 324 die so nur Sie da beschreiben, Nmap von Installation die erhalten. Version kurz aktuellste möchte Weiteren Dennoch erforderlich. zu- im zwingend eine nicht ich ist Quellen Daher den Bestandteil. aus fester Installation Linux-Distributionen sätzliche meisten den bei ist Nmap erläutere. retr enSrp men e ednflednZeilen: folgenden beiden der eine um Skript sein erweitert Tipp esoe rbeezice mpuddrWindows-Firewall. lesen. Windows- Nmap-Dokumentation der die einigen und Sie sollten bei Nmap Hier es zwischen gibt Probleme Allerdings Versionen Windows! Microsoft RPM-Pakete für ( auch Quellen finden Nmap-Homepage den Version nmap_download.html der stabilen aus einzuset- neuesten auf Installation Nmap der die Sie von unbedingt da Version nicht erforderlich, ist ist neueste Es Hierfür die zen. erweitert. immer regelmäßig sinnvoll, wird daher Funktionen, Fingerprint-Datenbank neue die erhält Nmap und aktualisiert. regelmäßig wird Nmap .Dr ne i uhNa nenrVersion einer in Nmap auch Sie finden Dort ). nmap a c mncse bcnt genauer Abschnitt nächsten im ich das , FORWARD 5Tsmtoe n -werkzeuge und Testmethoden 15 http://www.insecure.org/nmap/ Kteaf e Administrator Der auf. -Kette 15.2 Nmap library

Um Nmap aus den Quellen zu installieren, laden Sie zunächst die aktuelle Version von der Homepage http://www.insecure.org/nmap/nmap_download.html und entpacken

diese in einem geeigneten Verzeichnis. open source

# cd /tmp # wget http://download.insecure.org/nmap/dist/nmap-.tar.bz2 # cd /usr/local/src # tar xjf /tmp/nmap-.tar.bz2 # cd nmap-

Erfreulicherweise bringen die aktuellen Versionen von Nmap alle wesentlichen be- nötigten Bibliotheken wie libpcre, libpcap und libnet bereits mit. Eine zusätzliche Installation dieser Bibliotheken ist nicht erforderlich. Die Übersetzung erfolgt mit dem üblichen Dreisatz:

# ./configure # make # sudo make install

Wenn Sie Nmap in einem anderen Verzeichnis als /usr/local installieren möchten, können Sie das Verzeichnis beim ./configure --prefix

-Aufruf mit angeben. Bei der Installation werden zwei Befehle installiert: I nmap: Hiermit können Sie auf der Kommandozeile einen Scan starten (siehe Ab- bildung 15.3). I nmapfe: Dieses grafische Werkzeug erlaubt Ihnen die Konfiguration und den Start des Scans mit der Maus (siehe Abbildung 15.4). Dieses Werkzeug kann auch mit dem Befehl xnmap gestartet werden. Das grafische Nmap-Frontend nmapfe ist sehr gut geeignet, um einen ersten Einstieg in die Verwendung von Nmap zu erhalten. Auch wenn ich eigentlich kein großer Freund von grafischen Oberflächen bin und der Kommandozeilenbefehl mehr Funk- tionen aufweist, besitzt die grafische Oberfläche die nette Eigenschaft, immer das entsprechende Nmap-Kommando anzuzeigen, das ausgeführt wird. Außerdem hilft die farbige Ausgabe bei der optischen Aufnahme der Informationen.

15.2.2 Einfache Scans Nmap unterstützt eine Vielzahl von Netzwerk- und Rechnerscans. Am häufigsten wird Nmap eingesetzt, um festzustellen, welche Ports auf einem anderen Rechner geöffnet sind und ob diese Ports von einer Firewall geschützt werden. In diesem Abschnitt wollen wir uns mit dieser Form der Scans beschäftigen. Die fortgeschrit- tenen Scans werden Sie in dem nächsten Abschnitt kennen lernen. Nmap kann sowohl einen TCP-Port-Scan als auch einen UDP-Port-Scan durchfüh- ren. Selbst beim TCP-Port-Scan gibt es verschiedene Varianten, wie dieser Port-Scan durchgeführt werden kann. Am einfachsten ist der TCP-Connect-Scan.

325 open source library bidn 53 leFntoe o mpsee u u e omnoel zur Kommandozeile der auf nur stehen Nmap von Verfügung. Funktionen Alle 15.3: Abbildung 326 ( TCP-Connect-Scan dem Bei TCP-Connect-Scan nur bietet aber Einstieg, Funktionen. den der erleichtert Teil Oberfläche einen grafische Die 15.4: Abbildung C-adhk uclue.Dee cnleetInndssceseEgbi,da Ergebnis, sicherste kompletter das ein Ihnen wird liefert Dabei Scan Dieser aufzubauen. durchlaufen. TCP-Verbindung TCP-Handshake vollständige eine ners mp-sT nmap esctNa,z ee otdsZielrech- des Port jedem zu Nmap, versucht ) 5Tsmtoe n -werkzeuge und Testmethoden 15 15.2 Nmap library hier die Verbindung tatsächlich so aufgebaut wird, wie auch ein Client sie auf- bauen würde. Dies ist auch der einzige TCP-Scan, den Nmap ohne root-Privilegien

durchführen kann, da dieser Scan ohne Umgehung des TCP/IP-Stapels durchge- open source führt werden kann.

# nmap -sT www.spenneberg.com Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-09-23 15:04 CEST Interesting ports on mail.spenneberg.net (217.160.128.61): (The 1661 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 23/tcp filtered telnet 25/tcp open smtp 53/tcp open domain 80/tcp open http 443/tcp open https 993/tcp open imaps

Nmap finished: 1 IP address (1 host up) scanned in 23.218 seconds

Nmap erkennt mit diesem Scan offene, geschlossene und von einer Firewall gefil- terte Ports. Bei einem offenen Port kann Nmap die TCP-Verbindung aufbauen. Bei einem geschlossenen Port erhält Nmap beim Aufbau ein TCP-RST-Paket als Ant- wort, und bei einem von einer Firewall gefilterten Port erhält Nmap keine Antwort. Leider führt dieser Port-Scan zu Protokolleinträgen auf dem Zielsystem. Im Folgen- den ist das Protokoll des Postfix-Mailservers während des Scans zu sehen:

Sep 23 15:07:17 mail postfix/smtpd[9259]: connect from p508F484E.dip.t-dialin.net [80.143.72.78] Sep 23 15:07:17 mail postfix/smtpd[9259]: lost connection after CONNECT from p508F484E. dip.t-dialin.net[80.143.72.78] Sep 23 15:07:17 mail postfix/smtpd[9259]: disconnect from p508F484E.dip.t-dialin.net [80.143.72.78]

Um nun mit Nmap Ihre Firewall-Regeln zu prüfen, sollten Sie mit Nmap Ihre Fire- wall scannen und das Ergebnis mit Ihren Regeln vergleichen. Falls sich hinter der Firewall weitere nicht genattete Systeme befinden, sollten Sie auch versuchen, diese IP-Adressen zu scannen.

327 open source library mpdrk mAshusenTPRTPkt mdeVridn eet wieder bereits Verbindung die Abbildung um (siehe sendet TCP-RST-Paket, beenden Ser- erhält, ein zu Ports dem Anschluss offenen auf im eines Port Antwort direkt den Hälfte als häu- Nmap an zur TCP-ACK-Paket SYN-Paket wird ein nur ein Nmap TCP-Handshake Scan Nmap Wenn den ver. sendet Dieser Scan er SYN-Scan. diesem da Bei der bezeichnet, durchführt. Half-Open-Scan ist als Connect-Scan auch dem fig zu Alternative Eine TCP-SYN-Scan 328 zur es bevor ab, kommt. Verbindung Zielsystem die dem SYN-Scan auf beim Protokollierung bricht Nmap 15.5: Abbildung Tipp s,udbih e cna.DrhdeAgb von Angabe die Durch ab. Scan online nicht des dies Rechner bricht der Wenn und dass pingen. Nmap, ist, zu vermutet Rechner Nmap ist, da den erfolgreich es, versucht, nicht kommt Scans Dazu des ab. Beginn direkt vor Abarbeitung die bricht Nmap verschie- zwei mindestens auftreten: können Phänomene ist, dene Spiel im Firewall eine Sobald asNa ohabie,owh i en ugbnsehen. Ausgaben keine Sie obwohl arbeitet, noch Nmap dass nirrGshidgetbshäk edn aetdrSa meh- Option der Scan Verwendung der Die dauert Stunden. werden, rere beschränkt Geschwindigkeit zusätzlich ihrer in Meldungen ICMP- diese mit SYN-Scan Da einen Host-Prohibited-Fehlermeldungen. auf mit 3-Standard-Firewall Core nicht reagiert Fedora TCP-Scan So die ICMP-Fehlermeldungen. den mit sondern Firewalls TCP-RST-Paketen, einige beantworten Außerdem u iemgih nwr atn i önndeNmap-Wartezeit die Sekunden) Option können 10 der Sie Si- (Default mit warten! Zur Zeit Antwort mögliche gewisse darauf. eine eine nicht auf aber antwortet Nmap die und muss möglicherweise verschickt, cherheit verwirft Nmap Firewall die Eine Laufzei- Pakete, kommen. erhöhten zu Nmap es bei kann ten Zusätzlich Ping. den Sie überspringen nMlieudna.U ieSkneasTmotz verwenden, zu Timeout als Sekunde Sie: eine nutzen Um an. Millisekunden in Nmap mp-T-mxrttmot10 www.spenneberg.com 1000 --max_rtt_timeout -sT nmap 15.5 --max_rtt_timeout ). SYN/ACK (Portoffen) ACK/RST (Abbruch) SYN nasn i etgbnSedabei Sie geben Zeit Die anpassen. 5Tsmtoe n -werkzeuge und Testmethoden 15 -v e mpzitIhnen, zeigt Nmap bei Server -P0 . PeNull) (Pee 15.2 Nmap library

Einen geschlossenen Port erkennt Nmap an einer Fehlermeldung. Jedoch erkennt Nmap in diesem Modus, ob es sich um ein TCP-RST-Paket oder eine ICMP-Port-

Unreachable-Meldung handelt. Während Nmap im Connect-Scan diesen Unter- open source schied nicht erkennen kann, interpretiert es ein TCP-RST-Paket als geschlossenen Port, während es eine ICMP-Port-Unreachable-Meldung richtig als Ablehnung durch eine Firewall erkennt. Sobald Nmap eine ICMP-Port-Unreachable-Meldung oder keine Antwort erhält, zeigt es den Port als gefiltert an. Der folgende Scan ist auf derselben Maschine durchgeführt worden wie oben:

# nmap -sS www.spenneberg.com

Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-09-23 15:24 CEST Interesting ports on mail.spenneberg.net (217.160.128.61): (The 1657 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 23/tcp filtered telnet 25/tcp open smtp 53/tcp open domain 80/tcp open http 110/tcp filtered pop3 143/tcp filtered imap 443/tcp open https 993/tcp open imaps 3306/tcp filtered mysql

Nmap finished: 1 IP address (1 host up) scanned in 10.177 seconds

Sie können erkennen, dass Nmap nun die Ports 110, 143 und 3306 zusätzlich als gefiltert anzeigt. Bei dem Connect-Scan wurden diese Ports als geschlossen inter- pretiert. Wie Sie sehen, ist der SYN-Scan genauer als der Connect-Scan. Sie sollten daher Ihre Firewall und alle weiteren Systeme erneut mit dem SYN-Scan unter die Lupe nehmen. Falls Sie einen Port entdecken, der von der Firewall nicht geschützt wird, müssen Sie Ihr Firewall-Skript entsprechend anpassen.

Betriebssystem-Bestimmung Sie möchten wissen, welches Betriebssystem auf einem entfernten System installiert ist? Nun, fragen Sie Nmap. Nmap kann mit Hilfe des TCP/IP-Stack-Fingerprinting sehr gut entscheiden, welches Betriebssystem sich auf der fraglichen Maschine befindet. Heute ist dies häufig eine der wenigen sicheren Methoden, das Be- triebssystem zu ermitteln. Sicherlich sollten Sie zuvor prüfen, ob ein Banner- Grabbing Ihnen nicht einfacher und leichter diese Informationen zur Verfügung stellt:

329 open source library -O mpfnse:1I drs 1hs p cne n1.8 seconds 17.989 in scanned up) host (1 2004) address 07:19:50 IP 15 1 Dec finished: Wed Nmap 2.5.20 (since - days 2.4.0 282.906 Linux Uptime details: 2.4.X|2.5.X OS imaps purpose Linux general Running: ftp type: closed) SERVICE mysql Device state: filtered open in 3306/tcp are 993/tcp below STATE open shown CEST .... not 06:03 but 21/tcp 2005-09-24 scanned at (217.160.128.61): ports PORT ) mail.spenneberg.net 1657 http://www.insecure.org/nmap/ on (The ( ports 3.93 Interesting nmap Starting hilft Dann ist. sehen zu # selten noch nur Dienste, Ausgabe verschiedenen ausführliche der so Ausgabe eine die dass aber so heute ändern Administratoren Viele i686 an (Stentz) on login: 4 2.6.12-1.1398_FC4 release Kernel ’^]’. Core is Fedora (217.160.128.61). character www.spenneberg.com Escape to Connected 217.160.128.61... www.spenneberg.com Trying telnet # 330 in Informationen bestimmen. Standard. den Betriebssystem den das mit so verletzen Daten kann und und gewonnenen Paketen Datenbank die einer von Nmap Behandlung vergleicht der enthalten Anschließend in TCP/IP-Stacks Fehler Einige einfach interpretiert. Programmie- auch und unterschiedlichen verstanden von charakte- unterschiedlich Standards be- ganz rern diese TCP/IP-Protokolle zu werden die es Pakete Allerdings die kommt erzeugte Standards, schreiben. Hierbei existieren manuell reagiert. Zwar verschiedene Unterschieden. Zielsystem verschickt ristischen das es wie Nun, beobachtet, das? und Nmap macht Wie : mp- www.spenneberg.com -O nmap Hinweis et is nomtoe ndnPormirrvnNa weiter- Nmap von Programmierer han- den geben! sich es an Dann Betriebssystem Informationen welches finden. diese um delt, Betriebssystem wissen, Sie passendes falls Sie, kein Nmap können Datenbank kann Betriebssystemen, seiner neuen in bei kön- besonders bestimmen Teilweise, richtig Betriebssystem nen. das immer nicht muss Nmap 5Tsmtoe n -werkzeuge und Testmethoden 15 nmap 15.2 Nmap library

Der Operatingsystem-Scan (-O) kann nur von root verwendet werden, da zur Er- zeugung der Pakete besondere Privilegien erforderlich sind. Außerdem muss das

Zielsystem über mindestens einen offenen und einen geschlossenen Port verfügen. open source Nmap scannt zu Beginn alle Ports und wählt dann jeweils einen aus. Wenn Sie bereits einen offenen und einen geschlossenen Port kennen, können Sie diese auch beim Aufruf angeben und Nmap so einen kompletten Portscan ersparen:

# nmap -O -p25,26 www.spenneberg.com Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-09-24 06:24 CEST Interesting ports on mail.spenneberg.net (217.160.128.61): PORT STATE SERVICE 25/tcp open smtp 26/tcp closed unknown Device type: general purpose Running: Linux 2.4.X|2.5.X OS details: Linux 2.4.0 - 2.5.20 Uptime 282.920 days (since Wed Dec 15 07:19:50 2004)

Nmap finished: 1 IP address (1 host up) scanned in 2.716 seconds

Hinweis Sie können Nmap auch ein anderes Betriebssystem vorgaukeln. Für Linux existiert der IP-Personality Patch (http://ippersonality.sf.net). Dieser Patch für den Kernel 2.4 erlaubt es Ihnen, die Funktionen Ihres TCP/IP-Stacks so zu modifizieren, dass er einem anderen Stack (zum Beispiel AmigaOS oder HP Laserjet 4) entspricht.

Wenn Sie die Bestimmung des Betriebssystems betrachten, werden Sie feststel- len, dass Nmap sogar die Uptime des gescannten Rechners ermitteln kann. Dies kann für einen potenziellen Angreifer eine sehr interessante Information sein. Ein NT-System, das seit über einem Jahr nicht neu gebootet wurde, kann kaum in der Zeit gepatcht worden sein. Nach dem Einspielen eines Pat- ches oder Servicepacks, ja sogar nach dem Ändern einer IP-Adresse, ist ein Re- boot erforderlich. Nmap verwendet für diese Technik die TCP-Timestamps aus dem RFC1323. Diese Technik wurde von den Nmap-Entwicklern von der Webpage http://uptime.netcraft.com übernommen.

331 open source library ieFrwl e urf u i ot nedük.He if uhdeOption die auch hilft Hier wenn unterdrückt. kommen, Ports Nmap-Laufzeiten die langen auf sehr Zugriff zu den UDP-Scan Firewall beim eine es kann dem uTPbsetbiUPsh ectdeMgihet epot aeez senden. zu Pakete Gegensatz gespoofte Möglichkeit, Im die sind. leicht erreichbar sehr UDP-Port UDP einen UDP- bei über der besteht die ist TCP Dienste, Scan zu viele interessanteste kann gibt Der Dabei Es durchführen. Scans Scan. Nmap. weitere von viele TCP-Scans noch die Nmap lediglich verwenden Administratoren Viele UDP-Scan 332 Antwort keine oder UDP-Paket an ein zu- UDP-Paket aber ICMP-Port-Unreachable Nmap ein Sobald ein es geschlossen. Nmap Port sendet der Erhält ist Hierzu Zielrechners. ver- rück, scannt. müs- des UDP-Port verstehen, UDP-Ports Port zu einen fraglichen Nmap dies den auf wie Um kennzeichnen. wissen, Zugriff offen Sie den als sen Port Verwirrungen. DROP-Regel diesen zu einer Nmap wieder wird mit immer wehrt, Firewalls Firewall mit eine Zusammenhang Wenn im es kommt Hier www.spenneberg.com -sU nmap --max_rtt_timeout ( UDP-Scan der steht Leider mnnennUPSa uczfhe,vrednSednflednBefehl: folgenden den Sie verwenden durchzuführen, UDP-Scan einen nun Um Hinweis Tipp ie 7 yegoe ae nrf n i otol übernahm Kontrolle die und angriff mit Paket 1434/udp ( großen Port SQL-Slammer- Byte dem der 376 auf einem Microsoft-SQL-Engine war die Demonstration der möglicher- Wurm, eindrucksvolle durchführen. Angriff Sie sehr kompletten können den Eine bereits so Paket die sich einem UDP-Dienst, es mit und weise Handelt verwundbaren UDP-Paket, weitergereicht. einen Dienst gespooftes den bei um ein an ist direkt versenden Das werden Daten Sie zu entgegennimmt. Daten TCP-Paket anders. TCP-Handshake Dienst gespooftes UDP kompletten der einen ein bevor erst Leichtes, durchlaufen, Sie ein müssen Jedoch auch senden. es ist Natürlich abschalten: leicht sehr Timestamps die Linux möchten, unter unterbinden Sie Systeme können Ihrer Timestamp-Scan den Sie Wenn i s,tae i i Zeile ak- die Reboot Sie jedem /etc/sysctl.conf nach tragen Einstellung ist, diese dass tiv möchten, Sie Wenn net.ipv4.tcp_timestamps=0 -w sysctl http://www.cert.org/advisories/CA-2003-04.html . he itiuinein. Distribution Ihrer -sU u e euzrro u efgn.Außer- Verfügung. zur root Benutzer dem nur ) net.ipv4.tcp_timestamps=0 5Tsmtoe n -werkzeuge und Testmethoden 15 ). ndrDatei der in 15.2 Nmap library zurückerhält, muss Nmap den Port als offen deklarieren. Die Tatsache, dass Nmap keine Antwort erhält, kann auch in einer fehlerhaften Anfrage an einen laufenden

Dienst begründet sein. Wundern Sie sich also nicht, wenn Nmap offene UDP-Ports open source auf Ihrem System nennt.

15.2.3 Fortgeschrittene Anwendung (TCP/Ping)-Sweeps Bevor Sie mit der Überprüfung Ihrer Firewall-Regeln oder einer Analyse eines Netz- werks beginnen, sollten Sie ermitteln, welche Rechner überhaupt sichtbar sind. Viel- leicht haben Sie von Ihrem Provider ein Klasse-C-Netzwerk zugeordnet bekommen. Diese IP-Adressen nutzen Sie nun in Ihrer Firewall und Ihrer DMZ. Natürlich ken- nen Sie diese IP-Adressen, aber Sie möchten prüfen, welche Rechner von außen ermittelt werden können. Hierfür eignen sich die Sweep-Scans. Diese fegen (sweep) durch ein Netzwerk und probieren dabei jede IP-Adresse aus. Der einfachste Sweep-Scan ist der Ping-SweepSweep. Hier sendet Nmap an jede IP- Adresse eines Netzwerks ein Echo-Request-Paket und wartet auf die Echo-Reply- Antwort. Da einige Systeme Ping-Pakete blockieren, sendet Nmap zusätzlich auch ein TCP-ACK-Paket an den Port 80/tcp des Zielsystems. Wenn das Zielsystem er- reichbar ist, antwortet es mit einem TCP-RST. # nmap -sP 192.168.0.0/24

Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-09-24 07:08 CEST Host 192.168.0.1 appears to be up. MAC Address: 00:00:B4:B0:12:10 (Edimax Computer Company) Host 192.168.0.108 appears to be up. Host 192.168.0.254 appears to be up. MAC Address: 00:50:18:1B:BC:A0 (AMIT) Nmap finished: 256 IP addresses (3 hosts up) scanned in 6.364 seconds

Sobald sich jedoch eine Firewall zwischen Ihnen und dem Zielnetzwerk befindet, besteht die Gefahr, dass dieser Scan nicht funktioniert, da die Firewall Ping-Pakete unterbindet und ein TCP-ACK-Paket von einer zustandsorientierten (stateful) Fire- wall nur akzeptiert wird, wenn vorher eine TCP-Verbindung aufgebaut wurde. Für diese Zwecke können Sie mit der Option -P die für den »Ping« zu verwendenen Pakete angeben! I -P0: Kein Ping. Dies ist sinnvoll, wenn Sie wissen, dass ein Rechner online ist und Sie direkt einen Portscan starten möchten. I -PA25,80: Sendet TCP-ACK-Pakete an die Ports 25 und 80. Wenn das System er- reichbar ist, sendet es ein TCP-RST-Paket als Antwort. Eine zustandsorientierte Firewall erlaubt das TCP-ACK-Paket nicht. I -PS25,80: Diese Option sendet ein SYN-Paket an den angegebenen Port. Damit besteht häufig die Möglichkeit, durch eine zustandsorientierte Firewall hindurch

333 open source library eeasudcatnmctn s sa ifcse,deOption die einfachsten, am Sys- befindlichen es dahinter ist sich möchten, die auskundschaften Firewall teme zustandsorientierte eine durch Sie Wenn 334 DMZ der in die Firewall zustandsorientierte ermitteln. eine Rechner durch stehenden kann Nmap 15.6: Abbildung HTS.DmterihnSeac ytm uc ieFrwl,dednPr 80 Verbindung einer Port 443 bei den und nicht die (IMAP) Abbildung aber (siehe Firewall, 143 erlaubt, Mailserver eine Webserver (POP3), einem zum durch zu 110 Verbindung Systeme (HTTP), einer auch 80 bei Sie nur (SMTP), Sinnvoll machen. erreichen 25 Ports Damit (FTP), testenden (HTTPS). 21 zu (SSH), die über 22 Gedanken sind sich Sie sollten Allerdings I I I I I isruh werden. missbraucht coRqet n ie C-C-ae seeoben). (siehe TCP-ACK-Paket einem und Echo-Request- ignorie- Linux-Systeme werden. genutzt Anfrage. Ping diese eines ren Da- anstelle ICMP-Timestamp-Reply. Scan einem dieser mit kann Scan her diesen auf antworten Systeme nige einen auf für reagieren dann können Windows) ( SMURF Broadcast-Adressen kein la Diese à Unix, Denial-of-Service-Angriffe Antwort. allem einer gefunden mit (vor Zielnetzwerk Broadcast-Ping Systeme dem in Viele Broadcast-Adressen werden. auch können Damit durch. e intdeAfaenctvrth.DhrsltnSePrsvredn die verwenden, Ports Sie 222). sollten ICMP- und Daher 54 da ein (z.B. versteht. Antwort, Scan sind nicht keine geschlossen der häufig üblicherweise Anfrage man erwartet die erhält ist, Dienst Port der erreichbar offenen einem Rechner Bei der Port-Unreachable. und ist geschlossen -PB -PM -PP -PE 80, sind und Test 25 zum Ports Ports (HTTPS). -PU54,222 die gute 443 und Weitere häufig (SSH) erlauben. 22 öffnet zu (FTP), Firewall 21 HTTP-Verkehr und Die SMTP- erreichen. um zu Rechner einen is pinvredtdeDfutNa-igKmiainaseinem aus Default-Nmap-Ping-Kombination die verwendet Option Scan. Diese den für : ICMP-Netmask-Request einen verwendet Option Diese : Ei- Scan. den für ICMP-Timestamp-Request-Pakete verwendet Option Diese : Ping-Scan echten einen Nmap führt verwenden, Option diese Sie Wenn : iri önnSeUPPkt ü e ignte.Wn e Port der Wenn nutzen. Ping den für UDP-Pakete Sie können Hiermit : 15.6 ). http://www.cert.org/advisories/CA-1998-01.html 5Tsmtoe n -werkzeuge und Testmethoden 15 -PS uverwenden. zu ) 15.2 Nmap library

Protokoll-Scan Sehr interessant ist häufig auch der Protokoll-Scan (-sO). Er kann sehr viel über ein System aussagen. Hier führt Nmap einen Scan der möglichen IP-Protokolle open source (/etc/protocols) durch. Bei einem normalen System sieht man üblicherweise nur die Protokolle ICMP, TCP und UDP:

# nmap -sO www.spenneberg.com

Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-09-24 16:01 CEST Interesting protocols on mail.spenneberg.net (217.160.128.61): (The 253 protocols scanned but not shown below are in state: open|filtered) PROTOCOL STATE SERVICE 1 open icmp 6 open tcp 17 filtered udp

Nmap finished: 1 IP address (1 host up) scanned in 6.099 seconds

Sobald das System aber auch über IPv6-Funktionalität verfügt, taucht mindestens auch dieses Protokoll in der Liste auf:

# nmap -sO localhost

Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-09-24 16:04 CEST Interesting protocols on bibo.spenneberg.de (127.0.0.1): (The 250 protocols scanned but not shown below are in state: closed) PROTOCOL STATE SERVICE 1 open icmp 2 open|filtered igmp 6 open tcp 17 open udp 41 open|filtered ipv6

Sehr interessant ist ein Protokoll-Scan eines VPN-Gateways. Dann tauchen zusätz- lich in der Liste die Protokolle ESP und AH auf. Diese IPsec-Protokolle tauchen auch auf einem Linux-System erst auf, wenn die VPN-Funktionalität tatsächlich ge- nutzt wird. So können Sie also mögliche VPN-Zugangssysteme erkennen.

# nmap -sO schulung.spenneberg.net Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-09-24 16:08 CEST Interesting protocols on schulung.spenneberg.net (x.y.z.a): (The 248 protocols scanned but not shown below are in state: closed) PROTOCOL STATE SERVICE 1 open icmp 2 open|filtered igmp 6 open tcp

335 open source library lednsekne il D idse e ms n e ulSa.Nmap Null-Scan. den und Xmas- Diese können. den Stealth-Scan: kennen. als werden mindestes Scans Nmap durchgeführt drei IDS von bezeichnet Administrator viele Stealth-Scans einem erkennen die von Allerdings auch unbemerkt Sie sollen Intrusion-Detection-System sollten Scans Ihr dann oder Protokollierung Protokolle wollen, die der Sie testen Auswertung oder die soll Firewall, bleiben unentdeckt Ihrer möglichst Port-Scan der Wenn Stealth-Scans Weitere rich- IP-Protokolle entsprechenden udp die Firewall Ihre ob filtert. prüfen, tig auch ah Sie können open|filtered So esp open|filtered ipv6 open|filtered open 51 50 41 17 336 imap pop3 https open|filtered filtered 443/tcp http filtered SERVICE 143/tcp open|filtered domain 110/tcp open|filtered smtp 80/tcp open|filtered telnet closed) 53/tcp open|filtered state: ssh in 25/tcp open|filtered are ftp 23/tcp below STATE open|filtered shown CEST 22/tcp not 16:35 but 21/tcp 2005-09-24 scanned at (217.160.128.61): ports PORT ) mail.spenneberg.net 1657 http://www.insecure.org/nmap/ on (The ( ports 3.93 Interesting nmap Starting www.spenneberg.com -sF nmap # iealdsPktvrofnhbnkn,s ase ih u nwr a!Nmap kam! eine Antwort auch zur da nicht als ist, es Ports offen dass die tatsächlich so daher ist. kann, Port listet geschlossen haben ein verworfen Port ob Paket ein Port sagen, das ob sicher Firewall offenen erkennen, Antwort nicht einem also als Sie Scans TCP-RST-Paket können bei diesen Leider ein RFC793 mit muss laut können Port Sie Zielsystem geschlossener generieren. Ein das ignorieren. muss Paket Scans das diesen allen Bei I I I lg eez,snennrsh il.Dhrkmtac e ae leFlags Alle Name: alle der auch nicht kommt hier Daher sind viele. Meinung sehr brennenwiedieKerzenaneinemChristbaumzuWeihnachten(Xmas). weitläufigen nur zur sondern Gegensatz gesetzt, Flags Im sind. gesetzt Flag ist. -sN -sX -sF e ulSa edtenPkt ndmki C-lggsttist. gesetzt TCP-Flag kein dem in Paket, ein sendet Null-Scan Der -PSH- : und -URG TCP-FIN, das dem in Paket, ein sendet gesetzt TCP-FIN-Flag Xmas-Scan das Der nur : dem in Paket, ein sendet TCP-FIN-Scan Der : open|filtered auf: 5Tsmtoe n -werkzeuge und Testmethoden 15 15.2 Nmap library

993/tcp open|filtered imaps 3306/tcp filtered mysql open source Dass in dem obigen Fall doch einige Ports als definitiv gefiltert angezeigt wurden, hängt mit den Firewall-Regeln zusammen. Diese Ports werden von der Firewall mit einem ICMP-Port-Unreachable abgelehnt. Da das echte Zielsystem ein TCP-RST- Paket erzeugen würde, muss die ICMP-Nachricht von einer Firewall stammen. Der Port wird also gefiltert. Für mich zählt der TCP-ACK-Scan (-sA) auch zu den Stealth-Scans, denn ein IDS protokolliert üblicherweise den Scan nicht, und Sie können mit ihm feststellen, ob ein Port tatsächlich offen ist oder von einer Firewall gefiltert wurde:

# nmap -sA www.spenneberg.com

Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-09-24 16:38 CEST Interesting ports on mail.spenneberg.net (217.160.128.61): (The 1664 ports scanned but not shown below are in state: UNfiltered) PORT STATE SERVICE 23/tcp filtered telnet 110/tcp filtered pop3 143/tcp filtered imap 3306/tcp filtered mysql

Dieser Scan sendet ein TCP-ACK-Paket an den entsprechenden Port. Wird der ent- sprechende Port gefiltert, erwarten wir keine Antwort. Wird der entsprechende Port aber nicht gefiltert, erwarten wir in jedem Fall (Port offen oder geschlossen) immer ein TCP-RST-Paket als Antwort. Nmap zeigt nun, dass die Ports 23, 110, 143 und 3306 tatsächlich gefiltert werden. Das bedeutet in Kombination mit dem TCP-FIN- Scan, dass die Ports 21, 25, 53, 80, 443 und 993 offen sein müssen. Sie können also, ohne einen TCP-SYN-Scan einzusetzen, ermitteln, ob ein Port offen oder geschlos- sen ist oder durch eine Firewall gefiltert wird.

Hinweis Dies funktioniert nur richtig bei einer zustandslosen Firewall wie ipchains. Eine richtig konfigurierte zustandsorientierte Firewall wird die TCP-ACK- und TCP-FIN-Pakete immer filtern und nicht passie- ren lassen. Nur eine zustandslose Firewall muss diese Pakete für offene Ports passieren lassen, da sie nicht erkennen kann, ob die Pakete zu aufgebauten Verbindungen gehören.

Decoy-Scan Der Decoy-Scan ist sicherlich auch eher ein Scan für den Test eines Intrusion- Detection-Systems als für den Test einer Firewall. Aber er kann eingesetzt werden, um die Analyse der Firewall-Protokolle zu testen. Hierbei handelt es sich um eine

337 open source library rensazie.VrämnSedeAgb e oiinmit Position das nicht der Ihnen Angabe kann die natürlich und Sie Adresse Rückmeldung Versäumen Ihre keine müssen anzeigen. Nmap IP-Adresse Sie Ergebnis erhält Ihre zurückverfolgen. sonst welche nicht ermitteln, denn daher kaum angeben, Scan kann verschiedens- den Opfer von und Das gleichzeitig Scans ist, System wird. diese das gescannt System ob Orten als gescannte ten Anschein, Absen- das den die Wenn es dabei hat Scans. fälscht protokolliert, verschiedenen und durch den Scans in viele deradressen entsprechend dann führt Nmap ein. desn i mpasDcy(ann)vrednsl.A eibgrSel in Stelle beliebiger An soll. Sie verwenden fügen (Tarnung) Liste Decoy komma-separierten der als Nmap die Adressen, ahIfrainnfae,bvrSesi Bne«ehle.Na andiese kann Version-Detection-Scan Nmap den Scan erhalten. diesen »Banner« nennt ( Nmap sein übernehmen. die Sie zunächst Sie Sie für tatsächlich bevor erhalten Aufgabe Sie fragen, Mailserver müssen Informationen einem Webserver Dienst Bei nach einem den überreden. bei versucht, zu und automatisch, verbindet Banners Informationen Port seines Mailserver dem Ausgabe er mit Ihren erhält sich zur auf einfachsten er Am Firewall indem erhalten. Ihre Informationen, zu Informationen, die durch Informationen mehr mehr der versuchen, Angreifer, Sie wird sich zugreift, potenzielle benötigen ob der befindet, erkennen, kann auch zu Wahrscheinlich Sicherheitslücke und aber versendet. echte Um innen eine durchführen. nach DNS-Auflösung weiter dahinter eine E-Mail auch die System Möglicherweise das auch. Sys- das Relay, sie das es über ein Menge versendet es ganze wahrscheinlich Die ist eine E-Mail, sind. bereits empfängt geöffnet sagt Es System ist, aus. offen einem tem 25/tcp auf Port Ports der welche dass interessant, Tatsache, ganz es ist Sicherlich Banner-Grabbing Option der mit dem Sie außer definieren Scans, Dabei allen mit werden. kann eingesetzt Decoy-Scan RPC-Scan, Der Scans. normalen eines Ergänzung 0tpoe tpAah tp ..6(RdHat)) ((Red 338 2.0.46 httpd Apache 9.2.4 smtpd Bind 1.99) Postfix ISC (protocol http 3.6.1p2 OpenSSH domain 1.2.1 vsFTPd smtp open open ssh VERSION 80/tcp open ftp telnet closed) SERVICE 53/tcp filtered state: in 25/tcp open are 23/tcp below STATE open shown CEST 22/tcp not 17:12 but 21/tcp 2005-09-24 scanned at (217.160.128.61): ports PORT ) mail.spenneberg.net 1657 http://www.insecure.org/nmap/ on (The ( ports 3.93 Interesting nmap Starting www.spenneberg.com -sV nmap # oktLyr(S) onttNa uhOeSL al i nesüzn e der bei Unterstützung die falls Secure OpenSSL, die auch über wurde. Nmap Verbindung aktiviert nutzt Übersetzung eine so Dienst (SSL), der Layer sogar Verlangt und Socket Version ermitteln. dessen zu etc.), Details telnetd Solaris weitere (Apache, Applikation der Namen den uälgen oiini e IP-Adressliste. der in Position eine zufällig -sV .Na s äfi ndrLg,dsApiainpoool(t,sh entetc.), telnet ssh, (ftp, Applikationsprotokoll das Lage, der in häufig ist Nmap ). ME l lthle ü i ieeIP-Adresse eigene die für Platzhalter als 5Tsmtoe n -werkzeuge und Testmethoden 15 ME -D äl Nmap wählt , err IP- mehrere 15.2 Nmap library

110/tcp filtered pop3 143/tcp filtered imap

443/tcp open ssl/http Apache httpd 2.0.46 ((Red Hat)) open source 993/tcp open ssl/imap Dovecot imapd 3306/tcp filtered mysql Service Info: Host: mail.spenneberg.net; OS: Unix

Nmap finished: 1 IP address (1 host up) scanned in 40.872 seconds

Wenn Sie Ihre Systeme prüfen, sollten Sie bei einer Ausgabe wie der obigen überle- gen, ob Sie die Banner der Dienste nicht anpassen wollen, so dass die Ausgabe we- niger Informationen enthält. Mindestens die Angabe der Versionsnummern sollte bei den Diensten, bei denen es möglich ist, unterbunden werden. Ein Beispiel hier- füristderDovecot-imapd oder der Postfix-smtpd in dem obigen Beispiel.

Idle-Scan Der Idle-Scan wurde zuerst im Dezember 1998 von dem Hacker Antirez für sein Werkzeug hping2 (http://www.hping.org) entwickelt. Hierbei führen Sie einen Portscan mit gespoofter Absenderadresse durch. Eigentlich ist das nicht möglich, denn für einen Portscan benötigen Sie ja eine Rückmeldung von dem Zielsystem, um zu unterscheiden, ob der Port offen oder geschlossen ist. Bei diesem Scan fälschen Sie jedoch Ihre Absenderadresse, so dass diese Antwort an ein anderes System geschickt wird. Bei dem Decoy-Scan konnte das funktionieren, da auch noch ein Scan mit der eigenen Adresse zusätzlich zu den gefälschten Adressen erfolgte. Das ist hier nicht der Fall. Wie funktioniert das? Betrachten Sie die Abbildung 15.7. Dort sehen Sie ein Opfer (rechts), den Rechner des Angreifers (unten) und einen weiteren Rechner (links). Dieser weitere Rechner ist der Zombie oder Silent Host. In dem Scan verwendet der Angreifer dessen IP-Adresse als Absender-IP-Adresse. Der Angreifer sendet nun mehrere TCP-SYN-Pakete an einen Port (1). Ist der Port offen, so sendet das Opfer ein TCP-SYN-ACK-Paket an den Zombie (2a). Ist der Port geschlossen, so sendet das Opfer ein TCP-RST-Paket an den Zombie (2b). Wie reagiert nun der Zombie? Auf das TCP-RST-Paket (2b) erfolgt keine Reaktion (3b). Auf das TCP-SYN-ACK-Paket (2a) reagiert der Zombie aber mit einem TCP-RST- Paket, da er die Verbindung nicht kennt (3a). Also, halten wir fest: Ist der Port auf dem Opfer offen, versendet der Zombie ein Paket. Ist der Port geschlossen, ist das nicht der Fall. Der Angreifer muss nun also herausfinden, ob der Zombie ein Paket versendet. Daraus kann er schließen, ob der Port offen oder geschlossen ist. Hierzu nutzt der Angreifer das IP-Identifikationsfeld im IP-Header der Pakete. Die- ses Feld wird von fast allen Betriebssystemen gesetzt, aber nur ausgewertet, wenn Pakete fragmentiert werden. Dann erkennt der Empfänger der Fragmente zusam- mengehörige Fragmente an der identischen Nummer in diesem Feld. Es gibt keinen weiteren regulären Nutzen für dieses Feld. Die meisten TCP/IP-Stacks zählen da-

339 open source library a,itde i mpsh ifc.SegbnldgihmtdrOption der mit lediglich geben Sie einfach. sehr Nmap mit dies ist war, oheäleNme.Sbl i e 53 neomnsn,fne i wieder sie fangen sind, eins angekommen um eine an. 65535 erhält null bei versenden, bei sie sie das Sobald Paket, Nummer. Jedes hochgezählte hoch. einfach Nummer diese her dem in Rechner dritten einen Angreifer der nutzt Idlescan Scan. dem Bei 15.7: Abbildung 340 Werkzeug originalen dem mit Scan Identifikationsnummern der dieser zweier War Während Differenz hochgezählt. der zwei an der um sich muss immer ändert nichts. so nun so offen, wird Identfikationsnum- geschlossen, Port (4b) Die Port TCP-SYN-Scan der versenden. dem Ist Paket weiteres in aus. ein mer Opfer Sekunde sein pro auf einmal Zombie Sekunde pro wird einmal Paketen Abbildung Portscan den (4a, Se- TCP-SYN- hochgezählt pro in 1 einmal ein Identifikationsnummer um reagiert Die Sekunde immer Zombie TCP-RST-Paket. Der pro einem senden. einmal mit zu kunde Port Rechner geschlossenen diesem einem auf Angreifer, Paket der beginnt Nun aber sein, online Host). sollte Silent Das Es (Zombie, Leblosigkeit. erzeugen. tot seine Identifikationsnum- Netzwerkverkehr ist die weiteren System keinen so dieses sollte der für System Rechner, Bedingung weitere einen Eine Zombie hochzählt. als mer nun sucht Angreifer Der Silent Host Hinweis önndn me oha e lihnNme ran werden. erkannt Fragmente Nummer gleichen Feld. der diesem an noch in immer dann Nummern können zufällige erzeugt OpenBSD darf, benötigt. sobald werden nicht fragmentiert Feld null, mehr dieses Paket auf wird kein Feld nun Da dieses (PMTU-Discovery) ist. Discovery eingeschaltet setzen Unit Transmission 2.6 Maximum Path und die 2.4 Linux-Kernel Die (3b) Hacker ACK/RST (3a) SYN/ACK (2a) SYN/ACK ACK/RST (2b) 15.8 .Geczii ür rdngespooften den er führt Gleichzeitig ). SYN 5Tsmtoe n -werkzeuge und Testmethoden 15 hping ucasumständlich durchaus Opfer s

ACK/RST (3a) SYN/ACK (2a) (3b)

ACK/RST (2b) open source SYN Silent Host Opfer

IPID ++1 (4a) IPID ++2 (4b) SYN ACK/RST Hacker

Abbildung 15.8: Bei dem Idlescan hängt die Identifikationsnummer der Pakete des Zombies von dem Zustand des Ports auf dem Opfer ab. host[:probeport]> den Zombie-Rechner und optional einen Port an. Den Rest erledigt Nmap automatisch.

Achtung Denken Sie daran, mit der Option -P0 den Ping vor dem Scan abzu- schalten. Dieser Ping wird sonst mit Ihrer echten IP-Adresse durch- geführt!

Achtung Die Version 3.93 von Nmap hat einen Fehler in dem Idlescan, der zu einem Abbruch des Programms führt. Auf der Mailing- liste wurde ein Patch veröffentlicht, der das Problem behebt (http://seclists.org/lists/nmap-dev/2005/Jul-Sep/0197.html).

Modifikation des Client-Ports, Spoofing, Time-Tuning und Fragmentierung Häufig werden Sie einen Port-Scan einer Firewall durchführen, bei dem Sie anschlie- ßend das Gefühl haben, dass alles in Ordnung sei. Kein Port ist offen. Dennoch finden Sie anschließend Hinweise, dass ein Angreifer doch durch die Firewall ge- kommen ist, oder bei einem Penetrationstest findet eine andere Person doch Lücken in Ihrer Firewall. Wie kann das sein?

341 open source library Bei wiwieeOtoe nNa esce,dnSa o ölce Erkennungs- möglichen Option vor Die Scan den verstecken. versuchen, zu Nmap systemen in wer- Optionen (nachts). durchgeführt weitere erzeugt natürlich Zombie Zwei Netzwerkverkehr weiteren muss als keinen Scan Sie Zombie Der Geben der an. wenn verwenden! tes- den, Rechner hierfür Wenn Firewall »vertrauten« Idle-Scan eigenen zuzugreifen. den den Ihrer einfach Sie Rechner in können interne oder möchten, be- auf ten vermuten nur Vertrauensverhältnisse Firewall erlauben Informationen derartige Regelsätze die mehr Sie Viele durch Ihnen würden. kann Rechnern, erhalten Idle-Scan stimmten normalerweise beim Sie wie als Scans liefern, des Spoofing ein Auch Rechner jeden damit scannen! Sie Firewall könnten der Regelwerk hinter angegebenen oben dem Bei 53/tcp. und l bedrdnrctgnPr ewne!BiNa önnSednSource-Port den Sie können Nmap Option Bei der verwenden! mit Port richtigen den Absender als brhugüeshngrd ifceFrwlsudISdeFamneudbeach- und Fragmente die IDS Analyse, nicht. und ihrer sie Firewalls ten vor einfache zwar gerade diese übersehen defragmentieren häufig Firewalls aber Viele Fragmente. kleine in is eenelue aeevnaßni a nen Netz interne das in außen von Pakete erlauben Regeln Diese Hiermit Netz. interne und das Internet in im 20/tcp erlaubt. Port FTP-Verbindungen 53 aktive dem Port werden beiden von nächsten den Verbindungen Die erlauben werden. an ermöglicht Regeln UDP-Pakete DNS-Anfragen sollen erlauben Damit Rückweg. Regeln den ACCEPT beiden ersten -j ACCEPT Die 20 -j --destination-port 20 tcp --source-port -p tcp $INTNETZ -p -s ACCEPT $INTNETZ forward -j -d ACCEPT -A 53 forward -j ipchains --source-port -A 53 udp FTP ipchains --destination-port -p Aktives udp $INTNETZ # -p -d $INTNETZ forward -s -A forward ipchains -A ipchains DNS # noch so können Sie Sie Regeln wenn wird. Ihre iptables beschrieben sein, Sie Buch betroffen wenn diesem davon nicht, in Sie aber wie haben, betreffen aufgesetzt beschreibe, und hier entwickelt ich die Probleme, Die 342 ipchains Rgl ih a oncinTakn nutzen. Tracking Connection das nicht -Regeln RgleknfidnSehugdeflednRegeln: folgenden die häufig Sie finden -Regelwerken Achtung edrgb sbi ist von Einsatz beim es gibt Leider entv ü i N-een i eenfrdsatv T sind FTP aktive von Verwendung das Bei für fahrlässig. Regeln grob Die aber DNS-Regeln. die für ternative eth irae enre Sicherheitsproblem. keinerlei aber hier besteht i ttdse asvsFP e ihie nedn von Anwendung Nutzen richtiger Bei Sicherheitslücken. FTP. viele passives zu stattdessen öffnet Sie Dies verbieten. FTP tives --source_port nee.Snvl idhe i ot 3up 20/tcp 53/udp, Ports die hier sind Sinnvoll angeben. -f rgetetdePkt o e Versand dem vor Pakete die fragmentiert ipchains ipchains l iealeneznoe Ihre oder einsetzen Firewall als 5Tsmtoe n -werkzeuge und Testmethoden 15 en eetihbseeAl- bessere wesentlich keine ipchains $INTNETZ üsnSeak- Sie müssen i üsnnur müssen Sie . iptables 15.3 Nmap-Hilfswerkzeuge library

Achtung

Wenn Sie Linux als scannendes Betriebssystem einsetzen, müssen open source Sie darauf achten, dass auf Ihrem System keine iptables-Firewall mit Connection Tracking aktiv ist. Diese Firewall defragmentiert auch die ausgehenden Pakete! Sie können dann keine fragmentierten Pa- kete versenden.

Einen versteckten Port-Scan können Sie häufig auch durchführen, indem Sie das Timing des Port-Scans verändern. Hierzu bietet Nmap die Option -T , mit der Sie sehr einfach das Timing einstellen können. Viele IDS erkennen einen Port-Scan nur an einer bestimmten Häufigkeit und Geschwindigkeit. Natürlich können Sie bei Nmap auch die Zeiten einzeln einstellen. Die Manpage gibt Ihnen hier weitere Informationen.

Ausgabeformate Wenn Sie häufiger derartige Scans durchführen, werden Sie auch unterschiedliche Ausgabeformate testen wollen. Nmap kann zunächst die Ausgabe mit -oN (Normal), -oG (Grepable), -oX (XML), -oA (Alle: NGX) und -oS (Skript-Kiddie-Sprache) in einer Datei protokollieren. Sie können sogar einen abgebrochenen Scan, der mit -oN oder -oG protokolliert wurde, mit --resume wieder aufnehmen. Um die XML-Ausgabe später darstellen zu können, liefert Nmap auch ein XSL- Stylesheet mit (siehe Abbildung 15.9).

15.3 Nmap-Hilfswerkzeuge

Nmap ist ein sehr gutes Werkzeug, um Audits durchzuführen. Sie erkennen neue Systeme in Ihrem Netzwerk. Sobald ein neuer Port und damit ein neuer Dienst auftaucht, zeigt Ihnen Nmap diese Information an. Wenn Sie aber schon Nmap für 20 oder sogar 200 Rechner gestartet haben, werden Sie wissen, dass die Ausgabe von Nmap nicht gerade die manuelle Verarbeitung erleichtert. Speziell bei einem wiederholenden Einsatz von Nmap ist das maschinelle Verarbeiten und Vergleichen eine Arbeitsersparnis. Ich werde Ihnen im Weiteren einige Werkzeuge vorstellen, die mir dabei das Leben vereinfachen. Es gibt sicherlich noch weitere, vielleicht auch bessere Werkzeuge. Ich würde mich freuen, wenn Sie mir eine E-Mail schreiben würden, sollten Sie ein derartiges Werkzeug kennen.

15.3.1 Nmap-Audit Dieses Perl-Skript (http://heavyk.org/nmap-audit/) vereinfacht den Nmap-Lauf in ei- nem großen Netzwerk. Es startet mehrere Nmap-Prozesse gleichzeitig, scannt dabei

343 open source library al issMdlncti he itiuinetatnit önnSee o CPAN von es Sie können ist, enthalten Distribution Ihrer ( Perl-MIME-Lite-Modul. in das nicht und Modul Perl dieses Sie Falls benötigen installieren, zu Nmap-Audit konfigurierbare Um Betriebssystemen bestimmten bei ignoriert PortsundgibtdasErgebnisineinerübersichtlichenAusgabeaus. Netzwerk, ganzes ein Sie können Dieses formatieren. XML anzeigen. in Firefox Ergebnisse in Beispiel seine zum kann Nmap 15.9: Abbildung 344 Results Scanning [email protected] Vulnerability = Host email-from = [email protected] email-subject Bericht = für email-to E-Mail ## sollen werden 192.168.0.0/24 gescannt = die ips IP-Adressen, ## Manpage Die werden. gestartet nicht Konfigurationsdatei Ohne Nmap-Audit erzeugen. Konfigurationsdatei kann eine noch Sie müssen Nun install make sudo # make Makefile.PL # perl # ufhlce esil ods c irnren uz eso abbilde. Version kurze eine nur hier ich dass so Beispiel, ausführliches alee.Ashißn ae i mpAdtvndrHmpg,etaknes entpacken Homepage, Befehlen: der folgenden den von mit es Nmap-Audit installieren Sie und laden Anschließend tallieren. http://cpan.uwinnipeg.ca/cpan/authors/id/Y/YV/YVES/MIME-Lite-3.01.tar.gz 5Tsmtoe n -werkzeuge und Testmethoden 15 nmap-audit(1) nachins- ) nhl ein enthält 15.3 Nmap-Hilfswerkzeuge library

## Gleichzeitige Nmap-Prozesse max-threads = 20 open source ## Detailgrad detail = low

## Nmap-Scan nmap = nmap -sS -v -O -T Polite -p 1-1024 # TCP scan

## Sicherungsverzeichnis dir-name = /tmp/nmap group windows os = Windows ignore = open 135 loc-srv tcp ignore = open 135 loc-srv udp ignore = open 137 netbios-ssn udp # wins ignore = open 138 netbios-ssn udp # netbios datagrams ignore = open 139 netbios-ssn tcp # netbios datagrams ignore = open 445 microsoft-ds udp ignore = open 445 microsoft-ds tcp end group windows group linux os = 2.4.0 - 2.5.20 ignore = open 22 ssh tcp # SSH end group unix group all hostname = * ignore = filtered * * * ignore = closed * * * end group all

Diese Konfigurationsdatei teilt Nmap-Audit mit, welche IP-Adresse in dem Scan zu untersuchen sind. Anschließend sendet Nmap-Audit den Bericht an die angegebene Adresse. Sie geben auch den genauen Nmap-Befehl an, der von Nmap-Audit für jeden Rechner aufgerufen werden soll. Um die Ausgabe um die bekannten Ports zu reduzieren, können Sie für bestimmte Gruppen von Betriebssystemen die zu ignorierenden Ports angeben. Diese Ports tauchen dann in der Ausgabe nicht auf.

15.3.2 NDiff NDiff ist ein Werkzeug, um die Unterschiede in zwei zeitlich versetzten Scans zu ermitteln. Obwohl Ndiff (http://www.vinecorp.com/ndiff/download) bereits stark in die Jahre gekommen ist (die letzte Version ist von 2001), liefert es immer noch wertvolle

345 open source library ihlce ael a.DeIsalto o Df rog i e ie typischen einem bei wie erfolgt NDiff über- einer von in Installation Perl-Modul. Ergebnisse Die die dar. stellt den Tabelle und erlaubt sichtlichen Nmap Baselines, von von Aufruf Erzeugung vergleichenden zur täglichen Werkzeuge enthält Ndiff Informationen. angehängter mit E-Mail als Bericht seinen CSV-Datei. sendet Nmap-Audit 15.10: Abbildung 346 www.spenneberg.com /tmp/zweiterlauf.nmap www.spenneberg.com -m /tmp/ersterlauf.nmap nmap -m # nmap # zur anschließend Sie Hinweise die er- erste Nmap-Protokolle, vergleichen, nur vergleichen. maschinenlesbare zu hier zwei miteinander zunächst ich Nmap-Läufe Sie dass zwei zeugen so Um möchte. Beispiele, geben viele Anwendung sehr enthält Manpage Die NDiff_Quickstart install man make # sudo # make Makefile.PL # perl NDiff- # NDiff-.tar.gz cd xzf # tar # 5Tsmtoe n -werkzeuge und Testmethoden 15 15.3 Nmap-Hilfswerkzeuge library

# ndiff -b /tmp/ersterlauf.nmap -o /tmp/zweiterlauf.nmap ------

ndiff run So Sep 25 07:36:14 CEST 2005 open source command line: -b second -o first baseline: ersterlauf.nmap observed: zweiterlauf.nmap ------new hosts:

------missing hosts:

------changed hosts:

217.160.128.61 23/tcp filtered -> open telnet 110/tcp filtered -> open pop3

------

Wenn zwischen den beiden Läufen sich etwas geändert hat, dann wird Nmap das anzeigen.

15.3.3 Nmap-Parser Seit einiger Zeit bietet Nmap die Ausgabe der Berichte in XML an. Diese Sprache bietet sich besonders zur Weiterverarbeitung durch Programme an. Nmap-Parser (http://npx.sourceforge.net/) ist eine Perl-Bibliothek, mit der Sie das XML-Format in Ihren Programmen parsen können. Dieses Werkzeug wird im Gegensatz zu den bisher vorgestellten Werkzeugen noch aktiv weiterentwickelt. Nmap-Parser enthält auch zwei Perl-Beispielprogramme in dem Verzeichnis ./tools/, die diese Bibliothek nutzen: I scan.pl: Ein Perl-Skript, das einen Rechner scannt und die Ausgabe komprimier- ter als Nmap aufarbeitet. Scan Host ------[>] 192.168.7.52 [+] Status: (UP) [+] Hostname(s) : test.spenneberg.com [+] Operation System(s) :

347 open source library ih ieteneez edn i ouetto,deSemit Sie die Dokumentation, Die werden. eingesetzt direkt nicht 534nmaplr 15.3.4 348 Sie werden nutzen, häufiger XML-Ausgabe die Sie Wenn a ekegnal idasPerl-Modul als wird nmaplr ver- Berichte Werkzeug lesbare Aus- Das auf Ihre nicht Sie aber können müssen So lassen, Bericht. schreiben zichten. lesbaren XML in leicht immer einen gaben daraus erzeugt und Bericht net/nmaplr/ atn eosretInn i i issPr-ou iste önn mWe- Im können. einsetzen schreiben: Perl-Skript Perl-Modul kleines dieses ein Sie Sie müssen wie sentlichen Ihnen, demonstriert halten, u e oeaefidnSei e Rubrik der in Sie finden Homepage der Auf skripten. I o >"nmap-report.xml", => "nmap-report.txt" ); => report nmaplr->new( = log $nlr my nmaplr; use nmap2sqlite.pl hr i nenrSLt B aubactdee kiten ael i dem mit Tabelle eine Skript dieses braucht Dazu DB. Schema: SQLite folgenden einer in sie chert a kitkn erenahfradr aebne neas werden. angepasst Datenbanken andere für einfach sehr kann Skript Das se TEXT, NULL, NOT CURRENT_TIMESTAMP, KEY ’down’, ’none’, DEFAULT PRIMARY DEFAULT TEXT, TEXT, DEFAULT TIMESTAMP ’none’, (ip)) DEFAULT UNIQUE last_scanned TEXT, TEXT osgen TEXT TEXT, TEXT osfamily TEXT osname filtered_ports open_ports hostname status mac ip + D ot : Ports UDP [+] [version] (service) : Ports TCP [+] cäznlre.Dee lieWrzu im ie Nmap-XML- einen nimmt Werkzeug kleine Dieses lernen. schätzen ) issPorm im i M-ugb o mpudspei- und Nmap von XML-Ausgabe die nimmt Programm Dieses : 2shOeSH3.5p1 OpenSSH rpcbind 111 https smtp ssh 443 25 22 2.5.20 - 2.4.0 Kernel Linux Articles nmaplr.pm 5Tsmtoe n -werkzeuge und Testmethoden 15 etr iwieudBeispiel- und Hinweise weitere eifr.Ddrhkn es kann Dadurch geliefert. nmaplr.pm elo nmaplr.pm perldoc ( http://triple.aeoth. er- 15.3 Nmap-Hilfswerkzeuge library open source

Abbildung 15.11: Nmaplr wandelt einen XML-Bericht in einen lesbaren Text um.

$nlr->createReport();

$nlr->sendMail( server => "localhost", from => "[email protected]", to => "[email protected]" );

Nmaplr erzeugt dann die in der Abbildung 15.11 dargestellte E-Mail.

15.3.5 Fe3d Fe3d (http://projects.icapsid.net/fe3d/) ist ein grafisches Visualisierungswerkzeug, das ein Nmap-XML-Protokoll in einem dreidimensionalen Raum darstellt. Dies erlaubt in einigen Fällen eine bessere Visualisierung der Daten und ihrer Zusammenhänge.

349 open source library 15.12 ü i ntlainbntgnSedeLbD-ilohk( LibSDL-Bibliothek die Sie ( benötigen LibSDL_TTF-Bibliothek Installation die X, die MacOS installieren. unter selbst Für Paket Installation das die Win32- Sie für Für müssen stellt Verfügung. Linux Entwickler oder zur Der IRIX Pakete Linux. und binäre X fertige MacOS Systeme IRIX, Win32, unter läuft Fe3d und dreidimensional Nmap von XML-Protokolldateien visualisieren. die drehbar kann Fe3d 15.12: Abbildung 350 die verwendet. wie es gut, die so Plugins, nur die wie und immer und bedient, Nessus ist es ist hervor- bewerten die Allerdings denen zu Person, können. aus schützen diese verfasst, dagegen wie sich Berichte wurde, Sie ausführliche gefunden Sicherheitslücke sehr Dies welche Nessus durchzuführen. geht, da Netzwerks ein mehr, eines ist Nessus umso Audit beschäftigen. gilt einen Nessus es mit und um nur sprengen, Werkzeug, sich Buches die hervorragendes Bücher, dieses andere Rahmen bereits den auch würde gibt Nessus von Vorstellung plette ( Nessus Nessus 15.4 ncleedkne i mit Sie können Anschließend ite ( liothek uhdrn i nsrcednDvlVrinndrPkt uisalee.Dann installieren. Sie Befehlen zu den Denken Pakete mit installieren. der Fe3d manuell Sie Devel-Versionen umständlich können entsprechenden Pakete die die daran, Sie auch bevor das, Sie Prüfen xerces-c/ eg ie cenhtutrWnosXP. Windows unter Screenshot einen zeigt .Veedee aeesn ölcewiei he itiuinenthalten. Distribution Ihrer in möglicherweise sind Pakete dieser Viele ). http://www.nessus.org http://www.libpng.org s i pnSuc-unrblt-cne.En kom- Eine Open-Source-Vulnerability-Scanner. ein ist ) http://www.libsdl.org/projects/SDL_ttf )unddenXercesXML-Parser( ednmap.xml fe3d /ofgr;mk;sd aeinstall make sudo make; ./configure; i M-ae iulsee.Abbildung visualisieren. XML-Datei die 5Tsmtoe n -werkzeuge und Testmethoden 15 http://www.libsdl.org http://xml.apache.org/ ,deLibPNG-Bib- die ), installieren. ), 15.4 Nessus library

Hinweis: Nessus-Lizenz

Während Nessus selbst unter einer Open-Source-Lizenz steht, hat open source sich die Lizenz für die Plugins vor einiger Zeit geändert. Die Plug- ins, die von der Nessus-Entwicklerfirma Tenable Network Security veröffentlicht werden, sind unter zwei verschiedenen Lizenzen ver- fügbar. Die nicht-kommerzielle Lizenz erlaubt den Audit eigener Systeme und die Verwendung der Plugins zu diesem Zweck. Die kommerzielle Lizenz erlaubt darüber hinaus den Audit fremder Kundensysteme. Auf der Nessus-Homepage finden Sie weitere In- formationen über die Lizenz (http://www.nessus.org/plugins/). Während ich an diesem Buch gearbeitet habe, hat die Firma Tena- ble Network Security eine weitere Änderung der Lizenz bekannt gegeben. Nessus in der Version 3 wird nicht mehr unter der GPL- Lizenz, aber immer noch kostenfrei vertrieben werden! Allerdings haben sich eine ganze Reihe von Projekten die Weiterführung von Nessus unter GPL auf die Fahne geschrieben. Deren Erfolg muss abgewartet werden.

Nessus verfügt über sehr viele interessante Eigenschaften, die es für den Einsatz als Auditwerkzeug sehr wertvoll machen. Ich werde die wichtigsten im Folgenden aufzählen. I Intelligenter Scan: Nessus erkennt Netzwerkdienste auch auf unüblichen Ports. I Modulare Architektur: Der Client kann auf einem beliebigen Windows- oder Linux-System genutzt werden. Lediglich ein Linux-System für den Server ist erforderlich. I Plugin-Architektur: Jede Sicherheitslücke wird durch ein externes Plugin reali- siert. Neue Tests können so einfach über den Import neuer Plugins hinzugefügt werden. Dies können Sie sehr einfach über den Befehl nessus-update-plugins au- tomatisieren. Die Plugins werden in NASL (Nessus Attack Scripting Language) geschrieben. Jedes offizielle Plugin referenziert CVE, CERT, Bugtraq etc. I Berichte: Nessus erzeugt sehr ausführliche Berichte. Die Berichte können in HTML, XML oder sogar LaTeX exportiert werden. I SSL-Unterstützung: Nessus kann auch über die Secure Socket Layer geschützte Dienste testen. Hierzu kann Nessus auch ein Clientzertifikat zugewiesen wer- den. I Scanstufen: Nessus kann in unterschiedlichen Angriffsstärken gestartet werden. Während es per Default keinen Schaden auf dem Zielsystem anrichtet, können Sie Nessus auch so konfigurieren, dass es zu einem Einbruch oder Denial-of- Service auf dem Zielsystem kommen kann. I Zusätzliche Software: Nessus kann weitere externe Software nutzen. So er- kennt Nessus die Installation von Nmap, Nikto und Hydra und kann diese

351 open source library itiuinhemtShithle öne ae i ttdse essvnder Aufruf dem von mit eine Nessus einfach dass ganz stattdessen dann als Sie erfolgt Distribution voran, Installer: Laden kompletten Ihrer schnell könnte. als Nessus zu halten Homepage das schreitet Schritt nicht Nessus hiermit Sie an Distribution sollten Entwicklung möchten, Die testen verwenden. Nessus Sie Wenn 352 der Bei vertrauen. geschützt. Zertifikat SSL dem mit Sie wird müssen Nessus-Server Verbindung zum ersten Verbindung Die 15.13: Abbildung r n ein i e brezn n ntlain ncleedezue Sie erzeugen Anschließend Installation. und Installations- Übersetzung dem der nach Nachdem mit Sie Installer hin. beginnt der Software-Pakete und fragt fehlende ort haben, auf nachinstalliert Sie Pakete weist diese und Sie Umgebung die prüft ler I ne i u e Homepage. Systeme der unterstützten Patchlevels Im der auf des Liste Sie durch. Analyse aktuelle finden lokal die Die um Überprüfungen Betriebssysteme. spezielle Überprüfungen die einige den dort für bei führt sich es und Shell handelt an Secure Moment Systemen die über den Nessus auf sich meldet Sicherheitsprüfungen (SSH) Hierfür lokale durchführen. auch Systemen 2.1 den Version der auf ab kann Nessus Checks: Lokale ist. ( Dienste Hydra kennwortgeschützte ( während für Force-Angriffswerkzeug Nikto Webserver, für nutzen. Scanner Scan ein den für Werkzeuge Tipp ee n oizetmNsu.SefidnwieeInformationen vorberei- weitere ( mit BSI-Homepage finden der Sie auf ein Nessus. modifiziertem Secur- enthält OSS und Diese (BSI tetem BOSS herunterladen. Nessus-Live-CD BSI Suite) die ity BSI kön- vom möchten, sich lernen kennen Sie einfach nen nur zunächst Nessus Sie Wenn http://www.nessus.org/download/ http://www.bsi.de/produkte/boss/ hnessus-installer-.sh sh http://www.cirt.net/code/nikto.shtml http://thc.org/thc-hydra/ 5Tsmtoe n -werkzeuge und Testmethoden 15 i Installation Die . ). .DerInstal- )einBrute- )ist 15.4 Nessus library open source

Abbildung 15.14: Nessus deaktiviert die gefährlichen Plugins per Default. für den Nessus-Server mit dem Befehl nessus-mkcert ein Zertifikat. Die Kommunika- tion mit dem Nessus-Server nessusd wird mit SSL geschützt. Sie können für einen ersten Test die Default-Werte für die Zertifikatserzeugung übernehmen. Nun legen Sie mit nessus-adduser einen Benutzer an. Bei der Erzeugung des ersten Benutzers können Sie die Default-Werte übernehmen. Wählen Sie als Login einen beliebigen Namen (am einfachsten Ihren Linux-Login). Bei der Authentification wählen Sie pass. Wenn Sie nach den Regeln für den Benutzer gefragt werden, geben Sie direkt Strg - D ein. Damit beschränken Sie den Benutzer nicht. Als Kennwort geben Sie ein beliebiges Kennwort an. Jetzt können Sie den Nessus-Server nessusd -D starten. Der erste Start dauert ein wenig länger, da zunächst die Plugin-Datenbank initialisiert wird. Anschließend sollten Sie mit nessus-update-plugins prüfen, ob bereits neue Plug- ins veröffentlicht worden sind. Den Nessus-Client starten Sie mit nessus.Beidem Start des Clients müssen Sie sich mit Ihrem Benutzernamen und dem gewählten Kennwort anmelden. Bei der ersten Anmeldung fragt der Client Sie, ob er dem Zer- tifikat des Nessus-Servers vertrauen soll (Abbildung 15.13). Wenn Sie sicher sind, dass kein Mann-in-der-Mitte-Angriff auf die Verbindung möglich ist, oder nachdem Sie das Zertifikat kontrolliert haben, wählen Sie OK und können den Server benutzen. Per Default sind die gefährlichen Plugins direkt nach der Anmeldung deaktiviert (Abbildung 15.14). Natürlich können Sie die Plugins einzeln an- und abschalten. Die grafische Ober- fläche erleichtert die Wahl der Plugins mit Hilfe von Filtern, die Sie verwenden können, um nur die Plugins eines bestimmten Autors oder mit einem bestimmten Begriff in der Beschreibung oder im Namen anzuzeigen. Haben Sie die Plugins für den Scan ausgewählt, können Sie auf der Registerkarte Credentials Login-Informationen für die lokalen Checks angeben. Nessus wird diese Informationen nutzen, um sich per SSH auf dem Zielsystem anzumelden. Die Re- gisterkarte Scan Options bietet die Möglichkeit, den vorhergehenden Portscan zu op- timieren und anstelle des eingebauten Scanners Nmap zu verwenden. Auf der Registerkarte Target geben Sie das zu scannende Ziel ein. Hier können Sie sowohl IP-Adressen als auch Netze mit Netzmaske als auch DNS-Namen eingeben. Die Registerkarte Preferences gibt Ihnen schließlich Konfigurationsmöglichkeiten für jeden Aspekt von Nessus inklusive der IDS-Evasion, Web-Traversal-Angriffen,

353 open source library bidn 51:Sekne i lgn e eafwee kiirn Gefährliche aktivieren. wieder Ausrufezeichen. Bedarf mit Warnhinweis bei einen Plugins tragen die Plugins können Sie 15.15: Abbildung 354 konfigurieren. auch teilweise es können und Informationen Hintergründe weitere seine Sie und erhalten Plugin Plugins das eines über Anklicken Durch 15.16: Abbildung 5Tsmtoe n -werkzeuge und Testmethoden 15 15.4 Nessus library open source

Abbildung 15.17: Während des Scans zeigt Nessus den Fortschritt an.

Abbildung 15.18: Nessus erzeugt einen ausführlichen Bericht mit den gefundenen Problemen.

Web-Mirroring etc. Für den ersten Scan sollten Sie diese Parameter nicht modifizie- ren. Sehr interessant ist auch die Registerkarte KB. Hier verbirgt sich die Möglichkeit, das Ergebnis eines Scans in einer Datenbank (Knowledge Base) zu speichern. Spätere Scans können dann in Abhängigkeit von der Datenbank durchgeführt werden! Haben Sie alles konfiguriert, starten Sie den Scan (Abbildung 15.17). Dieser Scan dauert nun je nach der Netzgeschwindigkeit, der ausgewählten Plugins und mögli- cher Firewalls wenige Minuten oder sogar Stunden. Sobald Nessus mit dem Scan fertig ist, zeigt es in einem grafischen Browser den Bericht an. In der Abbildung 15.18 wurde nicht viel Erwähnenswertes gefunden. Dennoch sollten Sie in der Abbildung erkennen, dass Nessus die gefundenen Pro- bleme beschreibt, Lösungen vorschlägt, Risikoabschätzungen abgibt und Referenzen

355 open source library Nsu ewr uiig u e ygesVra mfhe.E ud von wurde Es empfehlen. Verlag geschrieben. Deraison Syngress Buch Renaud dem englische Nessus-Entwickler das aus dem Ihnen Auditing« ich Einblick Network der möchte ersten auf »Nessus Zusätzlich einen Sie finden Nessus Artikel. wünschen, in einige Nessus über Einführung Nessus-Homepage Informationen kurzen weitere dieser Sie Wenn mit erhalten. haben Sie hoffe, sollten Ich Daher wählen! sichern. Formaten Format anderen dieses in auch ihn auch immer Sie und Sie können laden abspeichern, Nessus NBE-Format in dem wieder in später Bericht den Sie Wenn abspeichern. uzht i önndnBrctnnasNE M,HM i rfie n L und Grafiken mit HTML XML, NBE, als nun Bericht den können Sie aufzählt. 356 5Tsmtoe n -werkzeuge und Testmethoden 15 A T E X ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library otecrteeKonfiguration Fortgeschrittene V Teil

open source library

sion> ento e rtklnmneflti e Datei der in erfolgt Protokollnamen der Definition u efgn.DefledneneatnTsskne i me verwenden. immer Sie können Tests eingebauten folgenden Die Verfügung. zur iri rfnSedeZe-PArse mWiee etndeBshäkne wie Beschränkungen die gelten Quell-IP-Adresse. Weiteren der Im bei Ziel-IP-Adresse. die Sie –destination prüfen -d, Hiermit 16.1.3 die Sie können ein Netzwerks IP-Adresse, des eine Angabe ( der kann ausschreiben Bei Dies sein. Netzmaske Pakets. DNS-Name des ein oder Quell-IP-Adresse Netzwerk die prüft Test –source -s, Dieser 16.1.2 tcp ! --protocol den Sie können Hier IP-Protokoll. ( verwendete Paket Protokolls dem des in Namen das prüft –protocol Test -p, Dieser 16.1.1 Option der mit Erweite- immer die und Während werden Erweiterungen. realisiert Kernelmodule und über Tests rungen eingebaute über Tests verfügt Eingebaute Iptables 16.1 aufgeführt. alphabetisch Tests verschiedenen die werden Folgenden zur Im und Patch-O-Matic Kapitel 2.6.14 im über Linux-Kernel werden die werden, dem Paketprüfungen, gestellt in weiteren Verfügung die Alle sind. auf, enthalten Paketprüfungen Iptables alle führt Kapitel Dieses 16 i uglseI-des uzn yaiceDSNmn ee PArsesich IP-Adresse DNS-Namens unterstützt. deren des nicht dem DNS-Namen, anstelle werden Dynamische und ändert, in nutzen. auflösen DNS-Namen IP-Adresse hinzufügen, den aufgelöste Regel die die Iptables Sie wird dem verwenden, in Moment, DNS-Namen einen Sie Wenn etngee öhe,kne i a urfzihndmPooolvoranstellen: Protokoll dem Ausrufezeichen das Sie können möchten, negieren Test njdrRglatvetwre üsn thndeeneatnTssimmer Tests eingebauten die stehen müssen, werden aktiviert Regel jeder in . i Iptables-Standardtests Die tcp 255.255.255.0 , udp t. drdePooolumrvredn Die verwenden. Protokollnummer die oder etc.) , drdeCD-Ntto ( CIDR--Notation die oder ) 18 besprochen. /etc/protocols .WennSieden /24 verwenden. ) m

open source library open source library euzn i ewnugi den in Verwendung Die benutzen. edn nose etndegece ishäkne i oben. wie Einschränkungen gleichen die gelten Ansonsten wenden. e.Dbikne i i ot,deTPFasuddeTPOtoe prüfen. TCP-Optionen die und TCP-Flags die Ports, die Sie können Dabei men. erafdeIfrainndsTasotPoool a,kne i iri diese hiermit zulassen. Sie Bedarf können bei oder hat, und zweite Transport-Protokolls herausfiltern Zugriff das des Fragmente keinen um Informationen Fragment zweiten die Paket dem auf fragmentierten ab mehr Iptables einem Da bei handelt. sich Fragment weiteres es ein ob Sie, prüfen –fragment Hiermit -f, 16.1.6 den in ver- nur Rechner den Sie Paket dürfen ein Test Netzwerkkarte Diesen welche lässt. über prüfen, Sie –out-interface können -o, Hiermit 16.1.5 Rechner Ihren den Paket in nur das Sie Netzwerkkarte können Test welche Diesen über hat. prüfen, erreicht Sie können –in-interface -i, Hiermit 16.1.4 360 Option der sourceportMit 16.2.1 Option der mit dies Sie und handelt TCP-Paket ein um tcp Paket -p beim sich es TCP-TestsWenn 16.2 ih xsirn enSemheeNtwrkre nenrRgltse möch- testen Regel einer noch in hinzufügen, das Regel Netzwerkkarten die Sie mehrere Sie können Sie dem ten, in Wenn Moment, existieren. dem nicht in muss Netzwerkkarte Die Test. irkne i ie otoe ie oteec ( Portbereich einen oder Port einen Sie können Hier esheeePrskne i ih nee.HefrbntgnSeden Sie benötigen Hierfür angeben. nicht Sie können Ports verschiedene ezekatnzu. Netzwerkkarten ndrRglpüe,kne i etr rfne e C-edr vorneh- TCP-Headers des Prüfungen weitere Sie können prüfen, Regel der in Achtung oaic ki,sbl i oncinTakn uzn Sobald nutzen. Tracking au- 2.6 Connection und Kernelmodul Sie 2.4. das Linux-Kernel sobald dem aktiv, anschalten auf wer- speziell tomatisch Funktion dies defragmentiert sollten diese Linux-Kerneln ist Filterung lassen, alten müssen, auf der filtern Sie vor schlecht Während den. Pakete nur alle Pakete grundsätzlich fragmentierte sich Da defragmentiert! --sourceport + l idadnte.Ein nutzen. Wildcard als oe auch (oder ip_conntrack OUTPUT- --sport FORWARD oder eae ud,wre lePakete alle werden wurde, geladen önnSednQelotprüfen. Quellport den Sie können ) POSTROUTING -, PREROUTING- OUTPUT- eth+ lt;port>: rftdn u leEthernet- alle auf dann trifft 6DeIptables-Standardtests Die 16 und Kte s ih erlaubt. nicht ist -Ketten , INPUT- POSTROUTING nee.Mehrere angeben. ) und FORWARD- Kte ver- -Ketten multiport Ketten - 16.3 UDP-Tests library

16.2.2 destinationport Mit der Option --destinationport (oder auch --dport) können Sie den Zielport prüfen. Hier können Sie einen Port oder einen Portbereich (lt;port>:) angeben. Mehrere open source verschiedene Ports können Sie nicht angeben. Hierfür benötigen Sie den multiport- Test.

16.2.3 tcp-flags Mit dieser Option können Sie jedes TCP-Flag prüfen. Ingesamt gibt es sechs ver- schiedene: SYN, ACK, FIN, RST, URG und PSH. Dieser Test unterstützt auch noch NONE und ALL. Um die Flags zu testen, müssen Sie zunächst eine Maske mit den Flags definie- ren, die Sie prüfen möchten, und geben dann, durch ein Leerzeichen getrennt, die Flags an, die gesetzt sein müssen. Wenn Sie zum Beispiel prüfen möchtem, ob das SYN-Flag gesetzt ist, aber das RST- und ACK-Flag nicht gesetzt sind, verwenden Sie: --tcp-flags SYN,ACK,RST SYN. Dieser Test betrachtet alle drei Flags (SYN, ACK und RST). Aber nur SYN darf gesetzt sein. Der Zustand der anderen Flags ist unerheblich.

Tipp Das Netzwerk-Scan-Werkzeug hping2 (http://www.hping.org)ver- wendet per Default TCP-Pakete, in denen kein einziges Flag gesetzt ist. Wenn Sie diese Pakete erkennen möchten, können Sie den folgenden Test nutzen:

$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j LOG \ --log-prefix "Hping2 Scan:"

16.2.4 syn Dieser Test (--syn) ist eine Kurzform für --tcp-flags SYN,ACK,RST SYN und prüft, ob ein Paket das erste SYN-Paket in einer Verbindung ist. Wenn Sie diesen Test negieren möchten, setzen Sie ein Ausrufezeichen vor ihn.

16.2.5 tcp-options Das TCP-Protokoll unterstützt verschiedene Optionen, die das Verhalten des TCP- Protokolls beeinflussen. Eine dieser Optionen ist zum Beispiel die Maximum Seg- ment Size (MSS, siehe Abschnitt 16.31). Mit diesem Test können Sie prüfen, ob eine bestimmte Option gesetzt ist.

16.3 UDP-Tests

Das UDP-Protokoll verfügt nicht über so viele Informationen wie das TCP- Protokoll. Daher können Sie hier nur die Ports testen.

361 open source library irkne i ie otoe ie oteec ( Portbereich einen oder Port einen Sie können Hier palsBfh an: Iptables-Befehl destination-unreachable (pong) echo-reply Types: any ICMP Valid options: v1.3.0 ICMP ... $ den ICMP-Pakete für Iptables unterstützt was um handelt, können, sich Test prüfen es Sie ICMP-Nachricht auch Nach- Damit eine verschiedenen unterschieden. für die Code werden und ICMP Typ Bei durch richten Ports. keine besitzt ICMP-Protokoll ICMP-TestsDas 16.4 Option der Mit destinationport 16.3.2 Option der sourceportMit 16.3.1 362 Test. Test. irkne i ie otoe ie oteec ( Portbereich einen oder Port einen Sie können Hier esheeePrskne i ih nee.HefrbntgnSeden Sie benötigen Hierfür angeben. nicht Sie können Ports verschiedene den Sie benötigen Hierfür angeben. nicht Sie können Ports verschiedene -cptp ! yeaemthim type icmp match typename [!] --icmp-type pals- cp-h icmp -p iptables communication-prohibited TOS-host-unreachable TOS-network-unreachable host-prohibited network-prohibited host-unknown network-unknown source-route-failed fragmentation-needed port-unreachable protocol-unreachable host-unreachable network-unreachable --icmp-type i esheee CPTpn i i etnkne,zitder zeigt können, testen Sie die ICMP-Typen, verschiedenen Die . --destinationport --sourceport oe auch (oder o uei yeo type/code) or type numeric (or oe auch (oder --sport --dport önnSednQelotprüfen. Quellport den Sie können ) önnSednZepr prüfen. Zielport den Sie können ) lt;port>: lt;port>: 6DeIptables-Standardtests Die 16 nee.Mehrere angeben. ) Mehrere angeben. ) multiport multiport - - 16.5 addrtype library

host-precedence-violation precedence-cutoff

source-quench open source redirect network-redirect host-redirect TOS-network-redirect TOS-host-redirect echo-request (ping) router-advertisement router-solicitation time-exceeded (ttl-exceeded) ttl-zero-during-transit ttl-zero-during-reassembly parameter-problem ip-header-bad required-option-missing timestamp-request timestamp-reply address-mask-request address-mask-reply

Die Filterung des ICMP-Protokolls wird ausführlich im Kapitel 34 besprochen.

16.5 addrtype

Der Routing-Code des Linux-Kernels kategorisiert jede IP-Adresse im Netzwerk- stack. Dieser Test kann diese Kategorien testen und entsprechend Pakete verwerfen oder protokollieren. Die folgenden Kategorien werden von Linux unterstützt: UN- SPEC, UNICAST, LOCAL, BROADCAST, ANYCAST, MULTICAST, BLACKHOLE, UNREACHABLE, PROHIBIT, THROW, NAT und XRESOLVE. Leider existiert kaum Dokumentation, in der die Kategorien erläutert werden. Sie können sowohl die Quell-IP-Adresse als auch die Ziel-IP-Adresse testen: -m addrtype --src-type -m addrtype --dst-type

Ich kenne keine sinnvolle Verwendung für diesen Test.

16.6 ah

Mit diesem Test können Sie die Security-Parameter-Indices (SPI) des IPsec-AH- Protokolls testen. Da der Security-Parameter-Index üblicherweise dynamisch von dem IKE-Daemon ausgehandelt wird, ist eine statische Prüfung nicht besonders

363 open source library isrTs efg brde uäzih Optionen: zusätzliche drei über verfügt durchschnittliche Test Dieser die Sie einer in können Bytes Außerdem be- oder testen. analysieren. Pakete Paketgröße negativ übertragenen Richtungen nicht die einer Verkehr beiden Verbin- Test mit restlichen oder diesem einer Downloads den mit in können sie langlebige Bytes Sie dass Sie einflussen. oder so können Pakete versehen, So viele Priorität wurden. geringeren wie übertragen prüfen, bereits Sie dung können Test diesem connbytesMit 16.8 "Kommentar" --comment comment -m Auflis- späteren einer bei prüfen dass Pakets so Damit mit des dokumentieren, Regeln hinzufügen. selbst der Regel Eigenschaft tung Regeln einer keine die zu nun hiermit Kommentar Sie Sie einen können Sie da können Test, Vielmehr wirklicher können. kein ist comment Dies 16.7 [:] [!] --ahspi ah -m mit (z.B. IPsec-AH-Verbindungen definierte setkey manuell verwenden Sie außer sinnvoll, 364 bytes --connbytes-mode both --connbytes-dir 100000: --connbytes connbytes -m a afmxml26Zihnln sein. lang Zeichen 256 maximal darf tar I I I ihugnan. Richtungen ih gesetzt. nicht ee äl onye i brrgnnPkt drBts drConnbytes oder Bytes, oder Pakete Paketgröße. übertragenen durchschnittliche die die ermittelt Connbytes zählt weder -onye-oe[packets|bytes|avgpkt] --connbytes-mode [original|reply|both] --connbytes-dir :[] --connbytes [!] zwischen ). Tipp from adeZhe 4BtZhe id s i brafdrZhe sehr Verbindun- Zähler langlebige der sehr Überlauf überwachen. hiermit ein gen können ist Sie sind, 64-Bit-Zähler unwahrscheinlich. Zähler die Da und pals-vnL iptables to ene.Wn Sie Wenn befinden. iri rfnSe bdeüetaee ae sich Daten übertragenen die ob Sie, prüfen Hiermit : i omnaeagzitwre.DrKommen- Der werden. angezeigt Kommentare die iri ee i i uüberwachenden zu die Sie geben Hiermit : iri älnSednMdsas Ent- aus. Modus den Sie wählen Hiermit : to ih nee,itdeoeeGrenze obere die ist angeben, nicht 6DeIptables-Standardtests Die 16 16.9 connmark library

16.9 connmark

Verbindungen, die Sie in der NAT-Tabelle mit dem Target CONNMARK markiert haben, open source können Sie hiermit testen. Dazu können Sie entweder exakt die Markierung ange- ben oder auch zusätzlich noch eine Maske definieren. Diese Maske wird vor dem Test mit der Markierung der Verbindung Und-verknüpft.

-m connmark --mark [/] 16.10 conntrack

Dieses Modul gibt Ihnen erweiterten Zugriff auf die internen Werte der Connection Tracking-Tabelle. Hiermit können Sie diese Werte in Regeln ausnutzen. Sie kön- nen auf diese Weise prüfen, welchen Zustand (INVALID RELATED, NEW, SNAT, DNAT, UNTRACKED), welche originale und welche genattete Adresse die dazuge- hörige Verbindung in der Zustandstabelle aufweist. Da mir keine sinnvolle Anwendung bekannt ist, verweise ich den interessierten Leser auf die iptables(8)-Manpage.

16.11 dccp

Das Datagram Congestion Control Protocol (DCCP) ist ein nachrichtenorientiertes Transport-Protokoll. Es implementiert wie TCP einen Datenfluss, aber bietet keine Übertragungssicherheit. DCCP befindet sich aktuell in der Entwicklung und wird meines Wissens noch nicht produktiv eingesetzt. Mit diesem Test können Sie das DCCP-Protokoll testen. Der Test unterstützt die folgenden Optionen: I --source-port: Prüft den Quellport. I --destination-port: Prüft den Zielport. I --dccp-types: DCCP unterstützt die folgenden Pakettypen: REQUEST, RESPONSE, DATA, ACK, DATAACK, CLOSEREQ, CLOSE, RESET, SYNC, SYNCACK und INVALID. I --dccp-option: Hiermit können Sie prüfen, ob eine numerische DCCP-Option ge- setzt ist.

16.12 dscp

Das 6 Bit lange DiffServ-Code-Point-(DSCP-)Feld befindet sich in dem TOS-Feld des IP-Headers. DSCP hat TOS in den aktuellen IP-Protokoll-Standards abgelöst. Sie können entweder den Wert numerisch oder durch Angabe der DSCP-Klasse testen:

-m dscp --dscp -m dscp --dscp-class

365 open source library S-rtklstse.D uhdeednmshaseadl edn s i An- die ist werden, ausgehandelt dynamisch sinnvoll. nicht diese wendung auch Da testen. ESP-Protokolls ih enn ee i rtdr ah n ernSeashißn ire zurück. hierher anschließend Sie kehren und Der nach, dort erst Sie lesen kennen, nicht isrsh neesneTs hetdem ähnelt Test interessante sehr Dieser hashlimit 16.15 [:] [!] --espspi esp -m dem ähnlich Sie können Hiermit esp 16.14 einzel- die Sie können Optionen folgenden den Notification-(ECN-) Mit testen: Congestion sind. Bits Explicit gesetzt nen die Paket ob dem prüfen, in Sie Bits können Test diesem Mit ecn 16.13 366 e etutrtttdeflednOptionen: nicht folgenden und die Port unterstützt Test jeden Der Regel. und/oder gesamte IP-Adresse die jede für für Zähler einen Zähler nur eigene besitzt und Test Ziel/Quell-IP-Adresse Der der von Abhängigkeit -Ports. in des Grenzwerten von Definition nean,d i i C-isetennkne,on ohrirVorhandensein ihr vorher ohne können, entfernen prüfen. ECN-Bits zu die Sie TCP-Header da und unbekannt, IP- im auf Bits Sie verwendeten die finden und ECN über Informationen Weitere I I I I I I I I I -ahii-oedestip|srcip|dstport|srcport --hashlimit-mode --hashlimit-burst --hashlimit --ip-ect ecn -m --ecn-tcp-ece ecn -m --ecn-tcp-cwr ecn -m -ahii-tbemx --hashlimit-htable-max --hashlimit-htable-size Regel. diese für --hashlimit-name hashlimit Ts rölctInni eest u lgmie ii-etdie Limit-Test allgemeinen zum Gegensatz im Ihnen ermöglicht -Test http://www.icir.org/floyd/ecn.html :siehe s a C-coBtgesetzt? ECN-Echo-Bit das Ist : gesetzt? Congestion-Window-Received-Bit das Ist : isezutennEnrgin Eintrag einen erzeugt Dies : s i C-aaal-rnpr-i gesetzt? ECN-Capabable-Transport-Bit ein Ist : :siehe limit aiaeAzh e itäei e Hash-Tabelle. der in Einträge der Anzahl Maximale : rß e ahTblei Buckets. in Hash-Tabelle der Größe : . limit ah Ts i euiyPrmtrIdcsdsIPsec- des Security-Parameter-Indices die -Test . limit Hashlimit-Modus. : iesnvleAwnugitmir ist Anwendung sinnvolle Eine . Ts.Wn i den Sie Wenn -Test. 6DeIptables-Standardtests Die 16 /proc/net/ipt_hashlimit/ limit Ts noch -Test 16.16 helper library

I --hashlimit-htable-gcinterval : Garbage Collector Interval (ms). I --hashlimit-htable-expire : Lebensdauer (ms) der Einträge in der Hash-Tabelle. open source Mit diesem Test lassen sich zum Beispiel die SSH-Brute-Force-Angriffe des letzten Jahres hervorragend abwehren:

$IPTABLES -A INPUT -m tcp -p tcp --dport 22 \ -m hashlimit --hashlimit 1/min --hashlimit-mode srcip --hashlimit-name ssh -m state --state NEW -j ACCEPT

Diese Regel akzeptiert nur eine SSH-Verbindungsanfrage pro Minute und pro Quell-IP-Adresse. Allerdings kann natürlich ein Angreifer auch einen DoS ausfüh- ren, falls er die IP-Adresse erraten kann, von der aus Sie sich mit dem System verbinden möchten. Er spooft dann einfach Ihre IP-Adresse und führt häufige Verbindungsaufbauten durch!

Achtung Die Manpage des Iptables-Kommandos hat hier in einigen Versio- nen einen Fehler und behauptet, dieser Test könnte nur die Ziel- IP-Adresse mit einer Beschränkung belegen. Testen Sie Ihren Kernel mit:

$ iptables -m hashlimit -h hashlimit v1.3.0 options: --hashlimit max average match rate [Packets per second unless followed by /sec /minute /hour /day postfixes] --hashlimit-mode mode is a comma-separated list of dstip,srcip,dstport,srcport --hashlimit-name name for /proc/net/ipt_hashlimit/ [--hashlimit-burst ] number to match in a burst, default 5 [--hashlimit-htable-size ] number of hashtable buckets [--hashlimit-htable-max ] number of hashtable entries [--hashlimit-htable-gcinterval] interval between garbage collection runs [--hashlimit-htable-expire] after which time are idle entries expired?

16.16 helper

Dieser Test prüft, ob ein Paket durch ein bestimmtes Conntrack-Helfermodul er- kannt wurde. Hierzu geben Sie lediglich den Namen des Helfermoduls an. Um alle FTP-Pakete (Control- und Data-Connection) zu erkennen, können Sie folgenden Ausdruck verwenden: -m helper --helper ftp. Wenn Sie von den Default-Ports abge- wichen sind, können Sie den Port mit angeben: -m helper --helper ftp-2121.Andere Helfermodule arbeiten genauso.

367 open source library irfrjd PArseudjdnPr ieeZhe ewle.Dee etverfügt Test Dieser verwalten. Zähler kann eigene Optionen: Hashlimit Port zwei zählt. jeden unabhängig über Ereignisse und der IP-Adresse die Regel Zähler, jede die -Ports für einzigen für und hier einen Limit IP-Adressen nur das verwendeten bis Regel den zu, die von lange besitzt so Dabei trifft wurde. verwendet, erreicht Test diesen die Regel, Eine 192.168.0.150 ai s szmBipe ölc,ugwhlc rß igPkt uerkennen, zu Ping-Pakete hinweisen: große Kommunikationskanal ungewöhnlich versteckten einen möglich, auf Beispiel die zum es ist Damit [:] --length length -m Wert spezifischen einen können angeben: Sie Bereich Pakets. eines einen Länge oder die einfach prüft Test Dieser length 16.18 möch- definieren verwenden: Clients Ausdruck dynamischen folgenden die Sie für können dynamische Regeln 192.168.0.100-150 ten, Sie von und Bereich verteilt im Beispiel IP-Adressen zum DHCP-Server Ihr Wenn - --dst-range - [!] --src-range Quell- iprange die [!] -m können iprange Sie -m verwenden. Test be- diesen mit Netzwerkgrenzen Sie prüfen: Netzwerk auf können Ziel-IP-Adresse be- ein und nicht Dann eines nicht Bereich endet. innerhalb Fällen der und sich vielen ginnt da IP-Adresse in werden, eine kann verwendet ob Jedoch Subnetzmaske prüfen, befindet. man Bereichs möchte stimmten ACCEPT Fällen -j vielen In ftp iprange --helper helper -m RELATED 16.17 --state state -m FORWARD -A akzeptiert: sich $IPTABLES nicht es Regel folgenden wenn der akzeptieren, von oder werden ICMP-Fehlermeldungen nur handelt. IRC-Datenverbindungen FTP-Verbindung RELATED-Pakete einer Beispiel Pakete um zum gleichzeitig Sie können Damit 368 mo- in ist Test Dieser den Iptables-Kommandos. durch des Linux-Kerneln Limit-Test dernen klassische der ist Dies limit --length 16.19 length -m echo-request --icmp-type icmp -p FORWARD -A $IPTABLES I 0:50- O -o-rfx"nsa igSz:" Size: Ping "Unusual --log-prefix LOG -j 100:1500 /minute --limit , /hour . isitdemxml aert.Sekne i ihi in Einheit die können Sie Paketrate. maximale die ist Dies : oder /day nee.Dfutist Default angeben. hashlimit Ts mWsnlce beötworden. abgelöst Wesentlichen im -Test 3/hour mirne-scrne192.168.0.100- --src-range iprange -m . 6DeIptables-Standardtests Die 16 /second , 16.20 mac library

I --limit-burst : Hiermit können Sie einen initialen Schwellenwert definieren, der erst erreicht werden muss, bevor das Limit greift. Der Default-Wert ist 5.

Dieser Test eignet sich speziell für die Beschränkung der Protokollierung einzelner open source Pakete.

$IPTABLES -A FORWARD -p icmp --icmp-type echo-request \ -m limit --limit 1/minute -j LOG --log-prefix "Ping-Paket: "

16.20 mac

Mit diesem Test können Sie die Quell-MAC-Adresse testen. So können Sie sich vor ARP-Spoofing schützen, da Sie nur Pakete annehmen, die von einer bestimmten Quell-IP- und -MAC-Adresse stammen.

-m mac --mac-source

Tipp Wenn Sie diese Überprüfung für viele Systeme durchführen möch- ten, sollten Sie sich den ipset-Befehl mit der macipmap genauer ansehen (siehe Kapitel 25).

16.21 mark

Sie können in der Mangle-Tabelle Pakete mit dem MARK-Target markieren. Diese Firewall-Markierung können Sie mit diesem Test prüfen. Hierzu können Sie die Markierung genau angeben oder zusätzlich auch noch eine Maske definieren, die vor der Überprüfung mit der Markierung der Pakete Und-verknüpft wird.

-m mark --mark [/]

Achtung Die Paket-Markierung ist nur auf dem lokalen System gültig. Sobald das Paket das System verlässt, ist die Markierung verloren.

369 open source library ece rzs ( Prozess welcher i ismTs önnSeal oae racs-aeeenahafIrrFirewall Ihrer auf einfach Broadcast-Pakete lokalen alle verwerfen. Sie können Test diesem Mit ewne.Iseatdre i 5Prsagbn i otBrihzhtaszwei als zählt Port-Bereich Ein angeben. Ports 15 Ports. Sie dürfen Insgesamt verwenden. ITBE AOTU monr-cdonrhtd- REJECT -j httpd --cmd-owner owner -m OUTPUT -A $IPTABLES können Test diesem Linux- Mit der ( kann. da Benutzer ermitteln werden, Pakete welcher angewendet lokaler prüfen, OUTPUT-Kette Erzeuger Sie der den in nur nur Kernel kann Test Dieser owner 16.23 \ multiport -m tcp -p FORWARD zusammenfassen: -A einer in $IPTABLES Regeln mehrere Sie können Test diesem Mit Port- eines anzu- oder Regel Ports ( einer eines Kernel in Angabe Aktuelle Zielports die nur oder Bereichs. Iptables Quell- erlaubt mehrere Normalerweise Ihnen, geben. es erlaubt Option Diese multiport 16.22 370 DROP -j broadcast --pkt-type pkttype -m INPUT -A $IPTABLES sich es ob prüfen, damit können Sie 2. Schicht der ein Pakettyp um den prüft Test Dieser pkttype 16.25 genaue und Kapitel erläutert Die (siehe Kapitel werden testen. entsprechenden ver- wiederholt zu dem nicht Bridge Regel in hier einer daher soll einer in wird in Tests die und dieses um Verwendung erkennen verwendet, zu 2.6 Netzwerkkarten Linux-Kernel wendeten beim wird Option Diese physdev 16.24 ai önnSeae e esre verbie Webserver dem aber Sie können Damit Mehrprozessorsystemen. auf nicht aktuell Funktionen drei omno( Kommando I I I -etnto-ot 12,58,4 jACCEPT -j 21,22,25,80,443 --destination-ports -ot ! [,[,:]] [!] --ports [,[,:]] [!] --destination-ports [,[,:]] [!] --source-ports unicast- -m-we --cmd-owner , broadcast -i-we --pid-owner -oderein ≥ i ae reg a.Lie ukinee i letzten die funktionieren Leider hat. erzeugt Paket ein ) ..1 önnbidee pinac Port-Bereiche auch Option dieser bei können 2.6.11) -i-we --uid-owner ,wlh izn ( Sitzung welche ), multicast Pkthandelt. -Paket e,sls ebnugnaufzubauen: Verbindungen selbst ten, ,wlh rpe( Gruppe welche ), 30 ). -i-we --sid-owner 6DeIptables-Standardtests Die 16 -i-we --gid-owner drwelches oder ) ), 16.26 realm library

16.26 realm

Dynamische Routing-Protokolle wie das Border-Gateway-Protokoll (BGP) verwen- open source den Routing Realms für die Konfiguration. Dieser Test kann prüfen, ob das Paket zu einem bestimmten Realm gehört. Wenn Sie auf Ihrem System kein BGP einsetzen, benötigen Sie diesen Test nicht.

-m realm --realm [!] []

16.27 recent

Dieser Test erlaubt es Ihnen, dynamisch eine Liste der gerade aktiven Quell-IP- Adressen zu erzeugen und in Ihren Regeln zu testen. Der Test hat die folgenden Optionen: I --name : Sie können verschiedene Listen für unterschiedliche Zwecke anle- gen. Wenn Sie den Namen nicht angeben, wird die DEFAULT-Liste verwendet. I [!] --set: Dies fügt die IP-Adresse zur Liste hinzu. Falls die IP-Adresse bereits in der Liste enthalten ist, wird der Eintrag aktualisiert. Dieser Test ist immer wahr, außer Sie geben das Ausrufezeichen an. I [!] --rcheck: Dies prüft, ob die aktuelle IP-Adresse in der Liste enthalten ist. I [!] --update:Identischmit--rcheck, jedoch wird zusätzlich der Eintrag aktualisiert. I [!] --remove: Hiermit entfernen Sie eine IP-Adresse aus der Liste. Falls die IP- Adresse nicht in der Liste vorhanden ist, trifft die Regel nicht zu. I [!] --seconds : Diese Option können Sie gemeinsam mit --rcheck oder --update verwenden. Diese Optionen treffen dann nur zu, wenn die IP-Adresse innerhalb der angegebenen Zeitdauer gesehen wurde. I [!] --hitcount : Diese Option kann gemeinsam mit --rcheck und --update verwendet werden und prüft, ob die IP-Adresse bereits so häufig gesehen wurde. Mit --seconds können Sie zusätzlich den Zeitraum einschränken. I --rttl: Hiermit prüfen Sie, ob der TTL-Wert des aktuellen Pakets identisch mit dem Paket ist, das mit --set hinzugefügt wurde. Das Modul legt in /proc/net/ipt_recent/ Dateien an, die auch direkt gelesen und geschrieben werden können. Um eine IP-Adresse hinzuzufügen, können Sie diese in die Datei schreiben: echo > /proc/net/ipt_recent/

Genauso können Sie auch eine IP-Adresse entfernen: echo - > /proc/net/ipt_recent/

Um die gesamte Liste zu löschen, schreiben Sie das Wort clear in die entsprechende Datei.

371 open source library mdeeOtoe uste,mse i a ou ae,bvrSei Ihren in Sie bevor laden, Modul das Sie müssen verwenden: setzen, Test den zu Regeln Optionen diese Um engbndeDfutWrean: Default-Werte die geben mern eze 0Skne ebnugafae ratnwre,udvrif alle der verwirft wenn und einsetzen, Regeln wurden, diese erhalten können Verbindungsanfragen Sie Anfragen. 4 weiteren Sekunden 60 letzten i rt ee ütjd eeQelI-des,deen S-ebnugöffnet, SSH-Verbindung eine die Quell-IP-Adresse, DROP neue \ -j Liste jede NEW der 4 fügt --state Regel --hitcount erste state 60 Die -m --seconds 22 --update --dport SSH tcp \ --name -p NEW recent INPUT --state -m -I state iptables -m 22 --dport tcp -p INPUT -I iptables des anstelle Sie könnten IP- abzuwehren, spezifische hashlimit Brute-Force-SSH-Angriffe Regeln anzuwenden. Beispiel Ihren IP-Adressen zum in diese Um auf sich Regeln um zusätzliche und einsetzen, merken nun zu Sie Adressen können Modul Dieses ip_list_tot=200 ipt_recent modprobe # Modul Das 372 haben Hierzu testen. Protokolls des Eigenschaften Optionen: folgenden die die Sie Sie können Test diesem Mit genutzt. Telephonie-Software und ein MPI-Parallel-Programmen von dass aktuell wird bedeutet, SCTP kann. Multihoming werden erreicht Multihoming. IP-Adressen mehrere verschiedenen und SCTP unter Verbindung unterstützt Kommunikationsendpunkt TCP einer beschädigte zu oder in Gegensatz das verlorene Im Streams Protokoll, und sendet. ein erneut garantiert ist automatisch Datenübertragung 2960) Pakete die RFC TCP (SCTP, wie Protocol ähnlich Transmission Control Stream Das sctp 16.28 he enlnctzrVrüugsteht. Verfügung zur nicht Kernel Ihrem I I I I I I mrcn -aeSH--set SSH --name recent -m debug ip_list_perms ip_list_hash_size ip_pkt_list_tot ip_list_tot -orepr ! [:] [!] --source-port der ip_list_tot eu-nomtoe (0). Debug-Informationen : Tssac i ogne ednRgl verwenden: Regeln beiden folgenden die auch -Tests SSH ipt_recent iz.Dezet ee rf,o o ie PArseinrabder innerhalb IP-Adresse einer von ob prüft, Regel zweite Die hinzu. naldrI-desnpoLse(100). Liste pro IP-Adressen der Anzahl : ehedrDtinin Dateien der Rechte : naldrPkt r PArse(20). IP-Adresse pro Pakete der Anzahl : ). rß e ahTble(,Brcnn nAhniki von Abhängigkeit in Berechnung (0, Hash-Tabelle der Größe : nesüz emLdnac oheng pinn i Klam- Die Optionen. einige noch auch Laden beim unterstützt /proc/net/ipt_recent/* 6DeIptables-Standardtests Die 16 (0644). hashlimit Ts auf -Test 16.29 state library

I --destination-port [!] [:] I --chunk-types [!] all|any|only [:] open source 16.29 state

Dieser Test ermittelt den Zustand der Verbindung, zu der dieses Paket gehört. Die folgenden Zustände sind möglich: I NEW: Das Paket gehört zu einer neuen Verbindung. I ESTABLISHED: Das Paket gehört zu einer aufgebauten Verbindung. I RELATED: Das Paket bezieht sich auf eine aufgebaute Verbindung (z.B. ICMP- Fehlernachricht). I INVALID: Der Zustand des Pakets kann nicht ermittelt werden (z.B. ICMP- Fehlernachricht, die sich nicht auf eine bekannte Verbindung bezieht). Wenn Ihr Kernel über die Raw-Tabelle verfügt, existiert zusätzlich noch der Zu- stand UNTRACKED. Der Zustand dieser Verbindung wird von dem Kernel nicht über- wacht. Weitere Informationen finden Sie in Abschnitt 5.5 und in Kapitel 19.

16.30 string

Ab dem Kernel 2.6.14 ist der string-Test im Linux-Kernel fest verfügbar. Leider ist der entsprechende Code weder im aktuellen iptables-Kommando (1.3.3) noch im Patch-O-Matic verfügbar. Ich gehe jedoch davon aus, dass zukünftige Versionen diesen Code enthalten wer- den. Ich vermute, dass die folgende Syntax verwendet werden wird: I --from : Suche ab diesem Offset im Paket. I --to : Suche bis zu diesem Offset im Paket. I --algo : Der Kernel 2.6.14 unterstützt im Moment drei verschiedene Algorithmen: Boyer-Moore (BM), Knuth-Morris-Pratt (KMP) und Finite-State- Machine (FSM). I --string : Suche diese Zeichenkette.

16.31 tcpmss

Hiermit können Sie prüfen, ob in dem Paket eine Maximum Segment Size (MSS) gesetzt wurde. Dieser Test ist nur bei TCP-Paketen erlaubt. Sie können exakt einen Wert oder einen Bereich prüfen.

-m tcpmss [!] --mss [:]

373 open source library edn sgb brbseeMtoe (z.B. Methoden ver- von bessere TTL Netz aber initiale lokalen gibt andere im Es Vergleichs- eine Windows-Systeme wenden. einem Windows-Systeme Beispiel kleiner da zum oder unterscheiden, größer Sie Linux-Systemen Wert können der Hiermit ob ist. prüfen, wert oder testen Wert nauen 18.3.8 ! -o au ac yeo evc il rmoeo the of dem one Mit from ttl field Service of 16.33 Type Match value options: --tos v1.3.0 [!] match TOS $ testen: Werte folgenden die können Sie --tos tos -m Anwendung. sinnvolle wirklich Meines keine Pakets. eines es Type-of-Service-Wertes gibt des Erachtens Prüfung die ermöglicht Test Dieser tos 16.32 das MSS Sie der können mit Hierzu Problemen ändern. zu bei MSS empfehle, die Ich Paketen allen hilfreich. in besonders grundsätzlich nicht ist Test Dieser 374 kleiner # größer # gleich --ttl-lt # ttl --ttl-gt -m ttl --ttl-eq -m ttl -m iste seeAbschnitt (siehe einsetzen pals- o -h tos -m iptables ). ttl Ts önnSednTLWr ie aespüe.Sekne e ge- den können Sie prüfen. Pakets eines TTL-Wert den Sie können -Test 17.21 olwn uei rdsrpievalues: descriptive or numeric following ). omlSrie0(0x00) 0 (0x02) Normal-Service 2 (0x04) Minimize-Cost 4 (0x08) Maximize-Reliability 8 (0x10) Maximize-Throughput 16 Minimize-Delay osf nPthOMtc ih Abschnitt siehe Patch-O-Matic, in 6DeIptables-Standardtests Die 16 MSS -Target ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library PArsemtenrCutrMCArsebatottwre.DeeMAC- mit Diese beginnen werden. Multicast-MAC-Adressen beantwortet Multicast-MAC-Adresse. eine Cluster-MAC-Adresse ist einer Adresse mit IP-Adresse 01:00:5e:xx:xx:xx Das die pro- Sie meisten müssen Die Möglicherweise kann. aktivieren. Funktion. versenden Funktion Ports diese unterstützt mehrere unterstützen an Switches Multicast-Linklayer-Adressen Adressen fessionellen der diese an Switch, Pakete einen und Sie benötigen Beispiel Hierzu die- zum werden. kann Mit genutzt sondern E-Mail-Server ohne 2.6-Kernel. Firewall-Cluster, oder Hochverfügbarkeit Web- Linux kein und als ist Lastverteilung aktuellen Dies mit der Cluster aufbauen. einen Loadbalancer Ziel Sie experimentelles können Ziel neues sem ein ist CLUSTERIP Dies 17.3 besprochen dort daher wird und erlaubt Mangle-Tabelle der Abschnitt in (siehe nur ist Ziel CLASSIFY Dieses er- 17.2 Kette die durchläuft Paket das bedeutet, Das Paket. folgreich. ein akzeptiert ACCEPT Ziel Dieses 17.1 Verfügung Linux-Kernel zur dem Patch-O-Matic Kapitel (siehe über in besprochen die die Kapitel im Ziele, auf, werden weiteren Targets) werden, Alle gestellt (Aktionen, sind. Ziele enthalten alle 2.6.14 führt Kapitel Dieses 17 des eedt e wthwr i aeea lePrssne,afdnndie denen auf senden, Ports alle an Pakete die wird Switch Der gesendet. Adresse il u nbsime aelnudKte rab id udnsebrisin das bereits auf sie nur dann wurden wird sind, Hier erläutert. erlaubt verwiesen. Kapiteln Ketten Kapitel entsprechenden und den in Tabellen Fällen einzelne bestimmten vielen Da in aufgeführt. alphabetisch nur Ziele Ziele verschiedenen die werden Folgenden Im CLUSTERIP Tre og andfr asAPAfae u i Cluster- die auf ARP-Anfragen dass dafür, dann sorgt -Target leStandardziele Alle ncleedwre i nrgna e lse ndeeMAC- diese an Cluster den an Anfragen die werden Anschließend . 21.2.1 ). 18 ).

open source library open source library u le oe.Itbe ümr ihdn ebtu i R-nwre.Sie ARP-Antworten. die um vornehmen. selbst Optionen MAC-Adresse dann der Die Konfiguration sich hinausgehende darüber kümmert keine Iptables müssen Nodes. allen auf ibzee.DeOption Die einbeziehen. oe mCutruddeNme e oae oe.BiBdr önnSemit Sie können Bedarf Bei Nodes. lokalen des Nummer die und Cluster im Nodes oaddeRgl kiir udn ne i in Sie und finden wurden, Cluster-IP-Adresse aktiviert Regeln identische die Sobald die Nodes der erforderlich. Konfiguration nicht beiden ist hinausgehende Netzwerkkarten darüber auf Eine Sie verwenden. Cluster-MAC-Adresse dass ist, Wichtig --hash-init und Regel ersten der in Sie müssen Cluster-IP-Adresse Option neuen die immer einer Definition der Bei \ --new CLUSTERIP -j 192.168.0.200 -d INPUT -A 2 iptables Node # \ --new CLUSTERIP -j 192.168.0.200 -d INPUT -A 1 iptables das Node für Regel # eine besitzt. lediglich selbst viele Node er wie jedem Nummer auf welche wissen, müssen und Node Sie gibt Cluster jeder dem muss der in insgesamt Hierzu welche Markierung es und müssen. Nodes eine akzeptieren ignorieren sie intern sie Verbindungen verwenden welche Verbindungen erkennen, Nodes zu um Die Verbindungen, ist. registriert MAC-Adresse 376 zu aufge- 1 Bereits Node Verbindungen. für neue Verbindungen verloren. für die gehen nur auch Verbindungen jedoch baute Information, funktioniert die Dies 2 übernehmen. Node der erhält Damit /proc/net/ipt_CLUSTERIP/192.168.0.200 > "+1" echo Heartbeat, (z.B. überwacht Gesund- Cluster die dem die in Software, Hoch- Nodes eine eine der zusätzlich auch Sie heit zusätzlich benötigen Um erreichen, implementiert. zu bereits verfügbarkeit Lastverteilung die sollte. ist enthalten Damit Nodes des Nummer die die Datei, eine eelasürn e ufl e oe usafNd e ogneBefehl folgende der einen 2 Node nur auf Node muss anderen 1 jeweils Nodes dem des werden: auf Ausfall gestartet Nodes Bei eines ausführen. Ausfall Befehl beim muss Diese elnsehnsu u.ZrVrüugsteht Verfügung Zur aus. teilungsmechanismus ebnI-des adnbidmebnNd.Aßre ites gibt Außerdem der- Node. von demselben Verbindungen bei werden. landen verteilt IP-Adresse Quell-IP-Adresse selben der von Abhängigkeit in -oa-oe -oa-oe2 --local-node 01:00:5e:11:11:11 2 --clustermac --total-nodes sourceip --hashmode 1 --local-node 01:00:5e:11:11:11 2 --clustermac --total-nodes sourceip --hashmode sourceip-sourceport-destport uhnc ieZh ü i ntaiirn e ahTbleangeben. Hash-Tabelle der Initialisierung die für Zahl eine noch auch --total-nodes --new ewne.MtdrOption der Mit verwenden. --clustermac und i uäzihnc i ot ndeVreln mit Verteilung die in Ports die noch zusätzlich die , --local-node enetdeietsh Multicast-MAC-Adresse identische die definiert enee clelc i nalder Anzahl die schließlich definieren sourceip /proc/net/ipt_CLUSTERIP/192.168.0.200 --hashmode e e i Verbindungen die dem bei , CLUSTERIP http://www.linux-ha.org älnSednVer- den Sie wählen 7Al Standardziele Alle 17 Tre aufrufen: -Target sourceip-sourceport ). 17.4 CONNMARK library

Achtung

CLUSTERIP ist ein sehr junges und noch experimentelles Target. Da- open source her müssen Sie darauf achten, dass Sie möglichst aktuelle Kernel und den aktuellen Iptables-Code einsetzen. In den letzten Monaten sind hier noch einige Korrekturen und Änderungen vorgenommen worden.

17.4 CONNMARK

Dieses Ziel ist nur in der NAT- und in der Mangle-Tabelle erlaubt und wird daher am entsprechenden Ort besprochen (siehe Abschnitt 20.12 und Abschnitt 21.2.2).

17.5 DNAT

Dieses Ziel ist nur in der PREROUTING-undOUTPUT-Kette der NAT-Tabelle erlaubt und wird daher am entsprechenden Ort besprochen (siehe Abschnitt 20.8).

17.6 DROP

Dieses Ziel verwirft ein Paket. Das Paket wird aus der Kette entfernt. Es erfolgt keine Protokollierung oder Benachrichtigung des Absenders.

17.7 DSCP

Dieses Ziel ist nur in der Mangle-Tabelle erlaubt und wird daher im zugehörigen Kapitel besprochen (siehe Abschnitt 21.2.3).

17.8 ECN

Dieses Ziel ist nur in der Mangle-Tabelle erlaubt und wird daher im zugehörigen Kapitel besprochen (siehe Abschnitt 21.2.4).

17.9 LOG

Hiermit können Sie eine Regel erzeugen, die eine Protokollierung über den Syslog auslöst. Dieses Target unterscheidet sich von den meisten anderen Targets dadurch, dass es nicht das Schicksal des Pakets entscheidet. Daher werden die Pakete, auf die das LOG-Target angewendet wird, von den weiteren Regeln in der Kette analysiert. Für eine aussagekräftige Protokollierung unterstützt dieses Target die folgenden Optionen:

377 open source library metpehne aie epohn(ih Abschnitt (siehe besprochen Kapitel entsprechenden im 71 MARK 17.10 378 entsprechenden im daher wird und erlaubt Abschnitt NAT-Tabelle (siehe der besprochen in Kapitel nur ist Ziel Dieses NETMAP 17.12 der in nur ist Ziel Dieses MASQUERADE 17.11 entsprechenden im daher wird Abschnitt und (siehe erlaubt besprochen Mangle-Tabelle der Kapitel in nur ist Ziel Dieses I I I I I I i rtklirn i e ylgn dränihnSyslog-Daemonen. ähnlichen oder Syslog-ng dem mit Protokollierung die edn oagsel edn iselihetsäe i uh mit Suche die später erleichtert Dies werden. vorangestellt Meldung ae reg hat. erzeugt Paket --log-uid --log-ip-options --log-tcp-options --log-tcp-sequence "Zeichenkette" --log-prefix notice --log-level , warning Tipp ispoooletbilklezutnPktndnBnte,drdas der Benutzer, den Paketen erzeugten lokal bei protokolliert Dies : ople et usae,ezue i ihenahen benutzer- eine einfach identi- sich die des Sie Kette Aufwand erzeugen definierte auf zusätzlichen sparen, den Paket zu hier Tests das Um doppelten es. testet verwirft und Regel und Paket Weise das zweite sche testet Die Regel erste es. benöti- Die protokolliert Regeln. möchten, identische verwerfen zwei und Sie protokollieren gen Paket ein Sie Wenn enSennenPktpooolee n ewre öhe,ver- Target möchten, das verwerfen und Sie protokollieren wenden Paket ein nun Sie Wenn " "Log-and-Drop: DROP --log-prefix -j LOG LOGDROP -j -A LOGDROP $IPTABLES -A LOGDROP $IPTABLES -N $IPTABLES , error ispoooletvredt IP-Optionen. verwendete protokolliert Dies : ispoooletvredt TCP-Optionen. verwendete protokolliert Dies : ispoooletdeTCP-Sequenznummern. die protokolliert Dies : iri enee i i roiä e edn ( Meldung der Priorität die Sie definieren Hiermit : , crit POSTROUTING , iri önnSebsz 9Zihnagbn i der die angeben, Zeichen 29 zu bis Sie können Hiermit : alert LOGDROP , emerg KtedrNTTbleelutudwr daher wird und erlaubt NAT-Tabelle der -Kette 20.5 21.2.7 : jLOGDROP -j ). ). ). . 20.4 ). 7Al Standardziele Alle 17 debug grep , oder info , 17.13 NFQUEUE library

17.13 NFQUEUE

Ab dem Kernel 2.6.14 können Sie anstelle des QUEUE-Targets auch das NFQUEUE-Target open source verwenden. Hiermit können Sie Pakete an unterschiedliche Userspace-Programme übergeben, da Sie bei diesem Target die Queue über eine 16-Bit-Zahl auswählen können.

17.14 NOTRACK

Dieses Ziel ist nur in der Raw-Tabelle erlaubt und wird daher im entsprechenden Kapitel besprochen (siehe Kapitel 22).

17.15 QUEUE

Hiermit können Sie ein Paket an ein Userspace-Programm senden. Dieses kann das Paket analysieren, verwerfen oder für die weitere Bearbeitung zurückge- ben. Ein Programm, das diese Funktion nutzen kann, ist Snort-Inline (http://snort- inline.sourceforge.net).

17.16 REDIRECT

Dieses Ziel ist nur in der PREROUTING-Kette der NAT-Tabelle erlaubt und wird daher im entsprechenden Kapitel besprochen (siehe Abschnitt 20.9).

17.17 REJECT

Das REJECT-Target verwirft das Paket wie das DROP-Target. Es sendet jedoch eine Feh- lermeldung an den Absender des Pakets. Dieses Target ist nur gültig in den INPUT-, FORWARD- und OUTPUT-Ketten. Sie können die zu verwendene Fehlermeldung mit der Option --reject-with angeben. Sie können die folgenden Fehlermeldungen benutzen:

I icmp-net-unreachable I icmp-host-unreachable I icmp-port-unreachable (Default) I icmp-proto-unreachable I icmp-net-prohibited I icmp-host-prohibited I icmp-admin-prohibited (Der Kernel muss dies unterstützen.) I tcp-reset (Die Ablehnung muss sich auf eine TCP-Verbindung beziehen.)

$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset

379 open source library mzghrgnKptlbsrce seeAbschnitt (siehe besprochen Kapitel zugehörigen im o DLLiugn iri önnSedeMxmmSgetSz ü TCP- für Size Segment Anwender Maximum alle die für ändern. oder Sie Iptables setzen von können Verbindungen Funktionen Hiermit wichtigsten ADSL-Leitungen. der von eine ist Target Dieses TCPMSS 17.21 der in nur ist Ziel Dieses SNAT zugehörigen im daher 17.20 wird und erlaubt NAT-Tabelle der Abschnitt in (siehe besprochen nur Kapitel ist Ziel Dieses SAME 17.19 einem bei wird so Kette, Han- eingebaute werden. eine abgearbeitet Paket um Regeln dem sich restlichen mit die es kehrt wo delt und zurück, Kette Kette benutzerdefinierte aufrufenden aktuelle zur die beendet Ziel Dieses RETURN 17.18 380 derKettefürdasPaketausgewertet. xus a s i S n oü ruh c i e DSL? bei sie ich brauche wofür und MSS die ist Was Exkurs: rß o 0 ye o e esre n isezutkeinerlei erzeugt der Dies in an. Bild Webserver ein dem fordert von und Bytes auf 800 zugrei- Verbindung von Webserver die Größe den baut auf Client nun Der möchte fen. Netzwerk dem in Client Ein Firewall eine durch der Webserver, wird. ein verbunden geschützt sich PPPoE befindet Protokoll Internet dem Im mit DSL ist. über Internet dem mit Abbildung das nun Sie ja Betrachten Transport besitzt, verwenden. den Ethernet für Bytes direkt wir 1500 nicht da und von unerheblich, PPPoE Datentransport MTU Dass den Bytes. eine für 1492 Ethernet ist PPPoE liegende von darunter MTU transportierten das Bytes die die beträgt 8 für Bytes Also selbst PPP-over-Ethernet-Protokoll 1492 Informationen. bleiben PPP-Protokoll das Es das PPP-Header. ist nun seinen benötigt für Ethernet Sie so Bei Wenn verwenden, die können. (PPPoE) Pakete, Bytes. werden der 1500 Größe transportiert maximale dies Medium Trans- die Maximum das ist eine Dies über (MTU). besitzt Unit Medium mission hierfür Jedes oder wird eingesetzt. Medium PPPoE- Ethernet physikalisches dem Als mit realisiert. PPTP-Protokoll üblicherweise werden DSL-Verbindungen POSTROUTING KtedrNTTbleelutudwr daher wird und erlaubt NAT-Tabelle der -Kette 20.7 ). 17.1 otshnSeenNetzwerk, ein Sie sehen Dort . 20.6 ). RETURN 7Al Standardziele Alle 17 i Default-Policy die 17.21 TCPMSS library

Probleme, da das resultierende Paket nur wenig größer wird als 800 Bytes und von PPPoE mit einer MTU von 1492 Bytes ohne Probleme

transportiert werden kann. open source Sobald wir jedoch von dem Webserver ein Bild oder eine andere Da- tei von mehr als 1500 Bytes anfordern, kann ein Problem auftreten. Der Webserver baut die IP-Pakete entsprechend der MTU seiner ei- genen Netzwerkkarte. Setzen wir voraus, dass der Webserver über Ethernet angebunden ist, beträgt diese 1500 Bytes. Der Webserver baut daher wenigstens ein Paket von 1500 Bytes. Ist die Datei sehr groß, können es auch mehrere Pakete sein. Dies sendet er durch seine Firewall an den DSL-Router auf der Seite des Providers. Die- ser muss nun das Paket in PPPoE einpacken und über DSL versen- den. Das Paket ist aber mit 1500 Bytes 8 Bytes zu groß. Die MTU von PPPoE beträgt ja nur 1492. Alle modernen Betriebssysteme nutzen die Path MTU Discovery, bei der sie in allen Paketen das DF-Bit im IP-Header setzen. Die- ses Don’t-Fragment-Bit verbietet einem Router die Fragmentierung eines zu großen Pakets. Er muss das Paket verwerfen und eine Fehlermeldung (ICMP Destination Unreachable Fragmentation Nee- ded) zurücksenden. Die Fehlermeldung enthält auch die maximal erlaubte Größe des Pakets. Dann kann der Absender das Paket er- neut mit der richtigen Größe versenden. Stellen Sie sich vor, die Firewall, die den Webserver schützt, lässt dieses Paket nicht durch. Die Fehlermeldung erreicht den Webser- ver nicht. Das originale Paket hat den Client aber auch nicht er- reicht. Da der Webserver keine Bestätigung über den Empfang des Pakets erhält, wird er es nach einiger Zeit unverändert neu versen- den. Das Paket wird wieder verworfen und die Firewall verwirft die Fehlermeldung. Die Verbindung hängt! Mit einem Trick können Sie das verhindern. Das TCP-Protokoll bie- tet Ihnen die Möglichkeit, bei der Verbindungsaufnahme Ihre Ma- ximum Segment Size zu veröffentlichen. Die MSS ist in etwa die MTU für TCP. Wenn Sie eine MSS von 1400 an den Kommunika- tionspartner senden, wird dieser nie mehr als 1400 Bytes in einem TCP-Paket versenden. Das resultierende IP-Paket erhält zusätzlich nur noch den TCP-Header und den IP-Header. Beide betragen im Normalfall jeweils 20 Bytes. Das IP-Paket wird dann nicht größer als 1440 Bytes. Damit vergeuden Sie jedoch ein paar Bytes. Wir müssen ja nur si- cherstellen, dass 1492 Bytes nicht überschritten werden. Also subtra- hieren Sie zweimal 20 Bytes für den IP- und den TCP-Header und erhalten 1452 Bytes. Wenn Sie dafür sorgen, dass die MSS immer auf 1452 Bytes in allen TCP-Verbindungen gesetzt wird, haben Sie das Problem behoben.

381 open source library Option T n ez i nsrced MSS. entsprechende die setzt und MTU pals- OWR ptp-tpfasSNRTSN\ SYN SYN,RST --tcp-flags tcp -p FORWARD -A iptables verwenden und MSS optimale die Möglichkeiten selbst zwei errechnen haben Sie Sie Option werden. Entweder die gesetzt Setzen. SYN-Paketen das in für nur kann MSS Die P können DSL von Einsatz dem Bei 17.1: Abbildung 382 Kapitel im wird Ziel Dieses ULOG 17.24 entsprechenden im daher wird Abschnitt und (siehe erlaubt besprochen Mangle-Tabelle der Kapitel in nur ist Ziel Dieses TTL 17.23 entsprechenden im daher wird Abschnitt und (siehe erlaubt besprochen Mangle-Tabelle der Kapitel in nur ist Ziel Dieses TOS 17.22 jTPS --clamp-mss-to-mtu TCPMSS -j --clamp-mss-to-mtu Hinweis -e-s , --set-mss Da das DF-Bit gesetzt ist, darf MTU 1492 Bytes MTU das Paket nicht fragmentiert unlelb,degrneeWrevrag ae.Dr ud zu- wurde eingesetzt. Dort Protokoll weiteres haben. ein verlangt PPPoE- noch Werte schon möglicherweise sätzlich geringere auch Sie die habe müssen erlebt, Ich Tunnel etc.) experimentieren. Werten PPTP anderen (IPsec, mit Tunnel andere Für DSL mitPPPOE Paket ist zugroß! werden! utair e enlslssädg4 ye o e Path- der von Bytes 40 selbstständig Kernel der subtrahiert drSeüelse i ehee e enl i der Mit Kernel. dem Rechnerei die überlassen Sie oder 24 otecrteePoooleug besprochen. Protokollierung, Fortgeschrittene , Client fordert das Bild an. 21.2.10 21.2.9 Router sendetFehlermeldung ICMP ). Webserver sendet das Bild in mindestens ). einem1500 großenPaket Byte olm i e T auftreten. MTU der mit robleme - MTU 1500 Bytes MTU Firewall des Web-Servers 7Al Standardziele Alle 17 Fehlermeldung nicht! Firewall erlaubt die Web-Server ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library npht ne i älc kulsetauf aktualisiert Patch-O- Die herunter. täglich des ng/snapshot/ Snapshot Sie Snapshots derartigen einen finden tägliche laden aus Snapshots noch Sie Quelltext oder nur den veröffentlicht. aus, checken Subversion-Server Sie Abständen Sie dem erhalten Entweder regelmäßigen Download. 2005 zum in Januar Matic-Subversion-Servers eigenstän- Netfilter-Team 30. als es dem dem wurde Seit von Dann Iptables-Befehls. Paket des diges Teil Patch-O-Matic war Früher Patch-O-Matic, ich bekomme Wie 18.2 der seit heißt Paket das Dieses Patch-Paket, wird. ein vertrieben Paket um eigenen sich patch-o-matic-ng einem es in 1.2.7 handelt Iptables-Version Patch-O-Matic-Paket Patch-O-Matic? dem ist Was Bei 18.1 morgen und können lösen elegant sind. enthalten sehr Standard-Kernel Probleme im einige auch Funktionen vielleicht teilweise gestellten Verfügung sie zur Dennoch da zusätzlich fehlerhaft. Patch-O-Matic ansehen, viele in und die unsinnig sich Sie einige sind sollten interessant, Funktionen sind Einige einige Funktionen. nützlich, verfügbaren sehr alle den nicht enthalten von auf Kernel Die die stellten Entwicklung. und Kernel konstanter verteilten in Distributoren sich befindet Netfilter/Iptables-Code Der 18 ihnPolmnitdee ac u ac--ai etdrVrin269i dem in 2.6.9 Version der seit Patch-O-Matic anfäng- vielen aus Nach enthalten. Patch Patch. Linux-Kernel dieser derartigen ist einen für Problemen Beispiel lichen ein TCP-Window-Tracking-Patch ist Der späte- Kadlecsik einem Linux-Kernels. Jozsef zu des von werden aufgenommen Teil und Standard-Kernel tatsächlich Patch-O-Matic Zeitpunkt in gut den aber ren in nicht reifen nicht Patches oder der noch stabil Viele sie aber wurden. ausreichend dass sind nicht so Funktionen von getestet, dokumentiert, Diese genug ausreichend auch werden. nicht teilweise integriert noch Kerneln die entweder ihren Funktionen, in des interessante Distributoren und sehr den viele Linux-Kernels enthält des Patch-O-Matic Teil nicht noch sind. die Iptables-Befehls Entwicklern, unabhängigen und n i ed c san? es ich wende wie und . Patch-O-Matic drkurz oder p-o-m issPktetätPthsvmNetfilter-Team vom Patches enthält Paket Dieses . http://www.kernel.org http://ftp.netfilter.org/pub/patch-o-matic- u efgn ge- Verfügung zur

open source library open source library osc e enl n e palsQeletbfidt ee i emAufruf beim Sie Geben an: befindet. Variablen folgenden Iptables-Quelltext den der mit Ort und den Kernel- einfach der sich wo il ace nbie otaePktndrhürn e iu-enler- Möglichkeiten: mehrere Linux-Kernel es gibt Den muss Hierfür anwenden. durchführen. Patch-O-Matic Iptables-Befehls. Software-Paketen http://www.Iptables.org auf des beiden Sie auch in halten als Quelltext- Patches den Linux-Kernels sowohl viele Sie benötigen eines können, zu Baum anwenden Patch-O-Matic nun aktualisiert. Um Quelltext-Baum Ihr wird sind, erfolgt Änderungen Falls 4354. Revision ein: einfach Befehl Sie folgenden Sie $ wechseln geben sind, und verfügbar Verzeichnis Updates entsprechende ob das möchten, in prüfen später Sie Wenn 4354. Revision patch-o-matic-ng/pom2patch/pom2patch Ausgecheckt, A ... können möchten, $ auschecken nutzen: Subversion-Server Befehle dem folgenden aus die Sie Quelltext den Sie Wenn 384 Befehl der Damit I I I I v update svn https://svn.netfilter.org/netfilter/trunk/patch-o-matic-ng co svn e u izgfg,wn i uhafdeAfam ndnKre warten. Kernel den in wer- Aufnahme Funktionen die Neue auf auch an. sie Iptables-Befehl wenn den hinzugefügt, und nur Kernel den den auf Bugfixes ten he u i nedn optbe ace.Ashißn ukinetnoch funktioniert Anschließend Patches. alles. kompatibler Anwendung die nur Ihnen ace n enIrAt ncleedennKlefesrbkmt s das ist bekommt, Kolbenfresser einen anschließend Schuld. Auto Ihre Ihr Wenn an. Patches /um obsolete ./runme extra ./runme base ./runme pending ./runme au ole i a u wollen? tun das Sie sollten Warum Hinweis il ace idzenne noptbl isrBfh erlaubt Befehl Dieser inkompatibel. zueinander sind Patches Viele : e i ea a,ennPth n ih einen nicht und Patch, bevorzu- einen möchten, Iptables-Paket das, hinzufügen genau oder Sie Patch Kernel- gen bestimmten ein einen Sie Vorgehensweise und Wenn bauen diese mögen. werden besonders Lesern nicht den unter Distributoren Die ednkönnen. wenden ite e Befehl den es gibt e nsrcednPth e i i dem mit Sie den Patch, entsprechenden den irmse i isn a i u.Dee eelbee he alle Ihnen bietet Befehl Dieser tun. Sie was wissen, Sie müssen Hier : http://www.kernel.org issKmad edtal u kule etuk bekann- Zeitpunkt aktuellen zum alle wendet Kommando Dieses : iri önnSeat n brüsg ace anwenden. Patches überflüssige und alte Sie können Hiermit : runme enSedeeaseak ae,kne i Patch-O-Matic Sie können haben, ausgepackt diese Sie Wenn . i ace uhawne an ole i h mitteilen, ihm Sie sollten kann, anwenden auch Patches die pom2patch n e palsQeletehle i auf Sie erhalten Iptables-Quelltext den und , isrBfh reg u Patch-O-Matic aus erzeugt Befehl Dieser . patch runme Kmad an- -Kommando Bfh.Hierfür -Befehl. 8Patch-O-Matic 18 18.2 Wie bekomme ich Patch-O-Matic, und wie wende ich es an? library

$ KERNEL_DIR=/usr/local/src/linux-2.6.13 \ > IPTABLES_DIR=/usr/local/src/iptables-1.3.3 \

> ./runme pending open source Loading patchlet definitions...... done

Welcome to Patch-o-matic ($Revision: 4088 $)!

Kernel: 2.6.13, /usr/local/src/linux-2.6.13/ Iptables: 1.3.3, /usr/local/src/iptables-1.3.3/ Each patch is a new feature: many have minimal impact, some do not. Almost every one has bugs, so don’t apply what you don’t need! ------Already applied:

Testing comment... not applied The comment patch: Author: Brad Fisher Status: Part of 2.6.x mainline

This option adds CONFIG_IP_NF_MATCH_COMMENT, which supplies a comment match module. This match allows you to add comments (up to 256 characters) to any rule.

Supported options: --comment COMMENT

Example: -A INPUT -s 192.168.0.0/16 -m comment --comment "A privatized IP block"

------Do you want to apply this patch [N/y/t/f/a/r/b/w/q/?] y

Excellent! Source trees are ready for compilation.

Recompile the kernel image (if there are non-modular netfilter modules). Recompile the netfilter kernel modules. Recompile the iptables binaries.

Am Ende jedes Patches können Sie entscheiden, ob dieser Patch zur Anwendung kommen soll oder nicht. Sie haben folgende Möglichkeiten zur Auswahl: I n: No. Dies ist auch der Default, daher können Sie auch Return drücken. I y: Yes. Es wird zunächst geprüft, ob der Patch anwendbar ist, und dann wird er ausgeführt. Wenn beim Test ein Fehler auftritt, wird der Patch nicht angewen- det.

385 open source library i lePthsdrheretthbn(bnwre u i izgr,wre Sie installieren. werden zu einziger), und ein übersetzen nur zu Iptables es und war Wenn Kernel (oben möchten. Ihren anwenden nun haben Patch aufgefordert, durchgearbeitet den Sie Patches ob alle gefragt, Patch Sie für Patch nun werden Sie isrPthfg i Mangle-Target ein fügt Patch IPV4OPTSSTRIPDieser 18.3.1 kom- Sprache zur ausführlicher wenig ein aber wor- gegeben. sollen übernommen Veränderungen men. Kernel Patches schon den behandeln. wichtigen sicherlich in Die 2005 einige hier den. und Oktober es hinzugekommen vom hat einige sind lesen, Patch-O-Matic Vielleicht Buch in dieses Base-Patches Sie die Wenn hier werde Base-PatchesIch 18.3 386 Verbindungen Test der destination Der Anzahl können. die beschränken 0.0.0.0/0 Sie Client-Netzwerk oder dem Optionen: zwei Client mit über pro verfügt hinzu, Server Test einem einen zu fügt Patch Dieser connlimit 18.3.2 0.0.0.0/0 source opt -- prot all IPV4OPTSSTRIP ACCEPT) (policy target PREROUTING Chain # # otn.DsTre efg brkiewiee pinnudkn ae sehr daher kann und Optionen weiteren Source- keine Beispiel werden: über zum eingesetzt sind verfügt einfach IP-Optionen Target Typische Das kann. Routing. entfernen Paket einem von I I I I I I I I I pals- age- RRUIG- IPV4OPTSSTRIP -nL -j mangle PREROUTING -t -A iptables mangle -t iptables e an. gen ? q w b r a f t -onii-bv --connlimit-above entfernen. wenden. iri eg ac--ai ieHlean. Hilfe eine Patch-O-Matic zeigt Hiermit : verlassen. Patch-O-Matic Quit. : vorwärts. Patch Einen zu Walk. : Patches um zurück. Patch gestartet, Einen Back. neu : wird Patch-O-Matic mode. reverse anzu- Patches in um Restart gestartet, : neu wird Patch-O-Matic mode. apply auftreten. in Fehler dabei Restart obwohl : angewendet, wird ist. Patch anwendbar Der Patch Force. der : ob geprüft, wird Es Test. : iri ee i i aiaeAzh e Verbindun- der Anzahl maximale die Sie geben Hiermit . IPV4OPTSSTRIP iz,dssmlceIP-Optionen sämtliche das hinzu, 8Patch-O-Matic 18 18.3 Base-Patches library

I --connlimit-mask . Hiermit beschränken Sie die Anzahl der Verbindungen nicht pro Client, sondern pro Netzwerk. open source # Maximal 25 HTTP-Verbindungen pro Client iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 25 -j REJECT

# Maximal 100 HTTP-Verbindungen pro /24 Netzwerk iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 \ --connlimit-mask 24 -j REJECT

18.3.3 expire Dieser Patch gibt Ihnen die Möglichkeit, Ihren Regeln eine Lebensdauer zu ge- ben. Sobald die angegebene Zeit abgelaufen ist, wird die Regel aus dem Regelwerk entfernt. Dies ist zum Beispiel interessant, um für einen kurzen Zeitraum einen bestimmten Zugang freizuschalten. Sie müssen nicht selbst daran denken, die Re- gel zu entfernen oder einen Cron-Job zu erzeugen. Der Kernel kümmert sich selbst darum. iptables -A INPUT -p tcp --dport 22 -m expire --expiration +5 -j ACCEPT

18.3.4 NETMAP Wenn Sie komplette Netzwerke natten möchten, ist dieser Patch möglicherweise etwas für Sie. Dieser Patch fügt ein NAT-Target hinzu, mit dem Sie sehr einfach 1:1 NAT für komplette Netzwerke implementieren können. Anstatt für jeden Rech- ner eine eigene Regel zu erzeugen, nutzen Sie nun eine Regel für das ganze Netz. Das NETMAP-Target kann sowohl als SNAT-Target in der POSTROUTING-Kette als auch als DNAT-Target in der PREROUTING-Kette angewendet werden. In dem fol- genden Beispiel wird jeder IP-Adresse aus dem 1.2.3.0/24-Netz die entsprechende IP-Adresse aus dem 5.6.7.0/24-Netz zugewiesen. Das heißt, 1.2.3.10 wird 5.6.7.10, und 1.2.3.128 wird 5.6.7.128. iptables -t nat -A PREROUTING -d 1.2.3.0/24 -j NETMAP --to 5.6.7.0/24

18.3.5 fuzzy Dieser Patch implementiert einen Test, der die übertragenen Pakete/Sekunde mit einem Fuzzy Logic Controller prüft. Dabei ist der Test dem Limit-Test ähnlich, jedoch etwas ungenauer und somit toleranter gegenüber plötzlichen Abweichungen nach oben und unten. Er kann somit besser zur Bekämpfung von Denial-of-Service- Angriffen eingesetzt werden. Der Patch bietet die folgenden Optionen:

I --lower-limit I --upper-limit

387 open source library u1 esheeevniadruahnieZhe iste.Dee etverfügt bis Test Sie Dieser können Optionen: Dabei einsetzen. zusätzliche testen. Zähler einige zu unabhängige über Paket voneinander n-te verschiedene das 16 jeweils zu Ihnen, es erlaubt Patch Dieser nth DROP -j DROP --lsrr 18.3.7 -j ipv4options --ssrr -m ipv4options PREROUTING -m -A PREROUTING mangle -A -t mangle iptables -t iptables IPv4- folgenden die IP-Optionen Einzelnen ob im können, können prüfen Sie Sie sind. dem testen: gesetzt mit Optionen hinzu, IPv4-Header Test dem einen in fügt Patch Dieser ipv4options 18.3.6 388 passives möglich: Linux unter Patch auch diesem mit es können ist Sie Firewall-Regeln. nun den und in vorgemacht, Betriebssystem-Fingerprinting es hat OpenBSD osf \ 1 --counter 18.3.8 nth -m \ eth0 1 -o --counter POSTROUTING nth -A -m nat eth0 -t -o iptables POSTROUTING -A nat -t iptables ai önnSezmBipe oreRuigPkt verwerfen: Source-Routing-Pakete Beispiel zum Sie können Damit I I I I I I I I I I I eal s 0. ist Default ahe,o i e drbi1afne uzhe.Sekne u zwei nun können Sie zählen. zu anfangen 1 bei oder mit 0 einmal definieren, bei Regeln Sie ob nachdem, is rpe zutreffen. Gruppen diese i u Beispiel zum Sie -akt. --packet . --start . --counter . --every --any-opt --ra --ts --rr --no-srr --lsrr --ssrr -vr -akt1- NT-t-ore10.0.0.6 --to-source SNAT -j 1 10.0.0.5 --packet --to-source 2 SNAT --every -j 0 --packet 2 --every .RouterAlert. Stamp. Time . Route. Record . os oreRouting. Source Loose . Routing. Source Strict . enSuc Routing. Source Kein . idsesen eibg Option. beliebige eine Mindestens . ee -ePktwr o isrRglausgewertet. Regel dieser von wird Paket n-te Jedes e älrkn i ie alkenrNiiilsetwerden. initialisiert N kleiner Zahl einer mit kann Zähler Der iri önnSeagbn a i ee ae aset Wenn passiert. Paket jedem mit was angeben, Sie können Hiermit ae önnSeennbsime älr(-5 wählen. (0-15) Zähler bestimmten einen Sie können Dabei -vr 2 --every ewne,gb sze rpe o aee,je Paketen, von Gruppen zwei es gibt verwenden, -akt0 --packet n imlmit einmal und -akt1 --packet 8Patch-O-Matic 18 i eel auf jeweils die , 18.3 Base-Patches library

Regeln aufsetzen, die nur für bestimmte Betriebssysteme gelten. Einigen Linux- Fanatikern mag die folgende Regel gefallen: iptables -A FORWARD -p tcp -m osf --genre Windows -j REJECT open source Dieser TCP-Patch kennt die Optionen:

I --genre I --log <0|1>. Wenn Sie diese Option angeben, protokolliert die Regel das Betriebs- system, wenn es nicht mit dem in der Regel angegebenen übereinstimmt. Ist der Wert 1, so wird nur das erste nicht übereinstimmende Betriebssystem protokol- liert: ipt_osf: Windows [2000:SP3:Windows XP Pro SP1, 2000 SP3]: 11.22.33.55:4024 -> 11.22.33.44:139

I --smart. OSF verwendet den TTL-Wert nur, wenn das lokale Netzwerk der Aus- gangsort des Pakets ist. I --. Hiermit kann die Protokollierung über Nlogd erfolgen. Die notwendigen Fingerprints können Sie von http://www.openbsd.org/cgi-bin/cvsweb/ src/etc/pf.os herunterladen. Diese Fingerprints müssen dann über das Proc-Datei- system in den Kernel geladen werden (/proc/sys/net/ipv4/osf).

18.3.9 psd Dieser Patch implementiert einen Portscan-Detektor in dem Linux-Kernel. Der Algorithmus wurde von Solar Designer’s Portscan-Detektor scanlogd (http://www. openwall.com) übernommen. Ich selbst halte die Anwendung für recht kritisch, denn eine Reaktion auf einen falschen Portscan kann von einem Angreifer für einen Denial-of-Service genutzt werden. Die Erkennung durch die aktuellen Portscan- Detektoren zum Beispiel in Snort ist auch wesentlich genauer. Dennoch möchte ich kurz die Optionen aufführen und erklären. I --psd-weight-threshold . Ab diesem Schwellenwert wird ein Portscan ge- meldet. I --psd-delay-threshold . Pakete, deren Abstand geringer ist als die hier angegebene Zeitspanne in Hundertstel-Sekunden, werden als Portscan-Sequenz erkannt. Dabei müssen die Pakete von der identischen Quell-IP-Adresse stam- men und unterschiedliche Zielports aufweisen. I --psd-lo-ports-weight . Wenn die erkannten Portscan-Pakete an einen nied- rigen Port (<=1024) gerichtet sind, werden die Pakete mit diesem Gewicht ad- diert. I --psd-hi-ports-weight . Pakete an einen hohen Port werden mit diesem Ge- wicht addiert. Sobald die Summe der erkannten und gewichteten Pakete den Schwellenwert über- schreitet, wird ein Portscan erkannt.

389 open source library zent> i ecriugdsPkt nenrsh ähie pah.DeSna idim wird Syntax Die Sprache. mächtigen sehr angegeben: folgt einer wie in Kernel-Quelltext Pakets des Beschreibung die e ieti e eenhnelgn uäzihelutdrTs ogneOptionen: folgende Test der Uhrzei- erlaubt die Zusätzlich Sie hinterlegen. können Regeln lassen, aktiv den zu Zeiten in austauschen bestimmten direkt Cron zu ten per nur Regelsätze die die definieren, Anstatt Regeln sind. Sie können Patch diesem Mit time 18.3.13 obsoleten des Nachfolger der ist Dies set 18.3.12 Option der mit können Sie zu. Pakete auf zufällig trifft Patch Dieser random 18.3.11 eine Sie definieren Dazu Option vergeben. der Netzwerkquoten mit Sie Quote können Patch diesem Mit quota 18.3.10 390 können Test Hiermit prüfen. den Sie. IP-Paket Modul für einem das in Test stellt Stelle nicht der Hierzu beliebigen bisher dies einer aber ist an wollten, war, Bit testen beliebiges enthalten Paket ein Netfilter Sie einem in in dafür etwas Test mal der schon immer Sie Wenn u32 18.3.14 verwendet. Uhrzeit lokale die wird Zeitbasis Als isrPthits neesn n ihi,ds ri ie iee Kapitel eigenen einem in er dass werden. wichtig, hinzugefügt und Gruppen interessant (Kapitel diesen so wird besprochen können ist zu IP-Adressen Patch Die dynamisch testen. Dieser zu Iptables-Regeln Regel von einer in auch diese und definieren zu Adressen ( finden ugzstlc den zusätzlich dung eodr eint mFhe uc elrat ezekadaez simulieren. zu Netzwerkhardware fehlerhafte durch Fehler um geeignet, besonders ole uh nggndrDkmnain u M-ytmneneza sein. Versionen einsetzbar Aktuelle SMP-Systemen akzeptiert. auf mehr Dokumentation, der Pakete entgegen weiteren auch, keine sollten werden Quote der lauf I I I I I -aetpYYYY[:MM[:DD[:hh[:mm[:ss]]]]] --datestop YYYY[:MM[:DD[:hh[:mm[:ss]]]]] --datestart Mon,Tue,Wed,Thu,Fri,Sat,Sun --days HH:MM --timestop HH:MM --timestart i arcenihetdsZtefn aiee Dfut 0) isrPthist Patch Dieser 50%). (Default: variieren Zutreffens des Wahrscheinlichkeit die http://ipset.netfilter.org ipset -ut --quota 25 Bfh,dnSeeeflsafdrNetfilter-Homepage der auf ebenfalls Sie den -Befehl, ). .Dee ac rab sInn rpe o IP- von Gruppen Ihnen, es erlaubt Patch Dieser ). --u32 ee ae ernetdeQoe ahAb- Nach Quote. die verringert Paket Jedes . pool u efgn.DeeOto rab Ihnen erlaubt Option Diese Verfügung. zur Pths i eöie ü i Anwen- die für benötigen Sie -Patches. 8Patch-O-Matic 18 -vrg

--u32 tests tests := location = value | tests && location = value

value := range | value , range open source range := number | number : number location := number | location operator number operator := & | << | >> | @

Hinweis Es gibt ein paar Beschränkungen bei der Anwendug dieses Moduls: I Sie dürfen nur maximal 10 = (Gleichheitszeichen) und damit 9 && als Argument verwenden. I Pro Wert (value) dürfen Sie nur maximal 10 Bereiche (range)ver- wenden. I Pro Ort (location) dürfen Sie ebenfalls nur maximal 10 Nummern (number) angeben.

Es werden immer 4 Bytes von dem angegebenen Ort gelesen. Zunächst ein einfa- ches Beispiel. Im IP-Header befindet sich das Längenfeld in den Bytes 2 und 3 des Headers. Um nun die ersten 4 Bytes des Pakets zu lesen, verwenden Sie als Orts- angabe 0. Da Sie sich jedoch nur für die Bytes 2 und 3 interessieren, wird dieses Ergebnis mit 0x0000FFFF Und-verknüpft. Damit fallen die beiden Bytes 0 und 1 weg: 0&0xFFFF. Wenn Sie prüfen möchten, ob die Länge des Pakets kleiner als 512 Bytes ist, so können Sie dann den folgenden Test verwenden: 0&0xFFFF=0x0:0x200.Die Angabe 0x0:0x200 prüft, ob der Wert innerhalb dieses Bereichs (0x200=512) liegt. Ein weiteres kompliziertes Beispiel prüft, ob das Byte 0-3 in den TCP-Daten den Wert 25 oder 50 hat. Der komplette Test lautet: 6&0xFF=6 && 0>>22&0x3C@12>>26&0x3C@0=25, 50. Schauen wir uns ihn der Reihe nach an. Zunächst ermitteln wir, ob es sich überhaupt um ein TCP-Paket handelt. Dies erkennen wir im IP-Header an dem Next-Protocol-Feld. Dieses Feld ist das Byte 9 im Header. Wir lesen ab dem Byte 6 die Länge von 4 Bytes und Und-verknüpfen dies mit 0xFF. Ist der Wert 6, handelt es sich um ein TCP-Paket, und wir machen weiter in dem Test.

Hinweis Nun müssen wir eigentlich prüfen, ob es sich um ein IP-Fragment handelt. Da aber Iptables meist unter Einsatz der Connection Tracking-Funktion verwendet wird, sind die Pakete in den Tabellen Mangle, NAT und Filter bereits defragmentiert. Fragmente treffen wir hier nicht mehr an. Sie könnten aber diesen Test einfügen: 4&0x3FFF=0. Er liest ab dem Byte 4 die Länge von 4 Bytes und extra- hiert die letzten 6 Bits von Byte 6 und das komplette Byte 7. Hier werden das MF-Bit und der Fragment-Offset gespeichert. Sind diese 0, so handelt es sich um ein komplettes Paket. Möchten Sie das

391 open source library 00110=01 0 a mTs enetdeeZh l ee fstfrden für Offset neuen als Zahl diese analog definiert bleibt: funktioniert Test es im Dieser und @ unbekannt. Test. durch Das ist nächsten 20. (0000111100) yy Nach = 0x3c Bits 0x14 01000101. mit = befin- der binär: Und-Verknüpfung 0000010100 Wert 0x45, Dann eine Der Zahl Sie Bytes. 01000101yy. die führen 20 Bits: Byte Nun 10 von ersten bleiben Standardlänge im Verschiebung IPv4-Paket seine der einem hätte bei IP-Header sich Stellen der det durch. (0000111100) vor, 0x3c sich mit Und-Verknüpfung Sie eine er führt Hierfür fernen. ih nAhniki o ismTs ieVridn umrirn msean- sie um markieren, zu Verbindung eine behandeln. mög- Test zu Beispiel diesem anders zum schließend durch- von es Tests wäre Abhängigkeit möglichen anzuwenden, in denkbar Verbindungen nur lich, ganze alle auf Test dies diesem Um mit führen. Sie können sehen, Sie Wie äg idi e eze isdsese ye epihr.Dz is e Test der liest Dazu gespeichert. Bytes Die ersten müssen. des multiplizieren Bits 4 4 an- mit letzten 4-Byte-Worten noch 0>>22&0x3c@ den in Zahl in im diese IP-Header wird entsprechend Sie Länge im Länge dass die und Länge bedeutet, nun ermitteln die Das Sie TCP-Headers wird gegeben. müssen des Leider finden, Länge weiterspringen. zu die Paket TCP-Daten und den IP-Headers in des Bytes gesuchten die Um 392 wenig ein aber sollen kommen. Veränderun- Patches Base-Patches Sprache wichtigen schon die zu Die ausführlicher in sicherlich worden. einige übernommen hier und Kernel es hinzugekommen den oder einige hat 2005 sind lesen, Oktober Vielleicht Buch vom gegeben. Patch-O-Matic gen dieses in Sie Extra-Patches Wenn zusätzlichen behandeln. die hier werde Extra-PatchesIch 18.4 ye n rf,o ee natetee 5oe 0it( ist 50 wieder oder Offset 25 diesem entweder ab Inhalt Test deren der ob liest prüft, können Jetzt und Dies verwenden. Bytes durchführen. 4 Offset 0x3c neuen mit als Und-Verknüpfung niedrigwertigen nun wieder eine beiden verschieben sind Sie Sie die Bits und indem Sie höchstwertigen null, setzen Bytes 4 auf TCP-Header Nun Die 4 Bits übrig. worden. im von Bits multipliziert 6 12 Länge 4 bleiben mit die Bytes Dadurch automatisch 12 rechts. des nach Byte Hälfte Bits ab 26 linken um also der lesen in Sie 4-Byte-Worten angegeben. in wieder wird elee.D i m2Bt eie cibn iddee yeae automatisch übrig aber Byte Byte erste dieses das wird nur schieben, wäre weniger Bits so 2 2 erfolgt, mit um Bits wir 24 Da um geblieben. Verschiebung die Wäre Bits. 2 4mlilzet ez usdrTs u ohderslce eeze isent- Bits gesetzten restlichen die noch nur Test der muss Jetzt multipliziert. =4 i ye - n eshetdeeu 2Bt ahrct.E lie 10 bleiben Es rechts. nach Bits 22 um diese verschiebt und 0-3 Bytes die i ifc u i eze isdsBt analysieren: 6 Byte des Bits müssen 5 Paket, letzten komplettes die ein nur wie einfach Sie prüfen genauso Fragment erste mese rgetitdsM co eez,ae e fstnoch Offset der aber gesetzt, schon MF das null. ist Fragment ersten Im 12>>26&0x3C@ i äg e TCP-Headers des Länge Die . 0=25,50 ). 8Patch-O-Matic 18 4&0x1FFF=0 . 18.4 Extra-Patches library

Achtung

Viele der Patches im Extra-Bereich sind nicht mit den aktuellsten open source Kernel lauffähig. Sie müssen im Grunde jeden einzelnen testen.

18.4.1 ACCOUNT Dieser Patch fügt ein sehr schnelles Accounting-System dem Kernel hinzu. Hierfür benötigen Sie zusätzlich doch die libipt_ACCOUNT-Bibliothek, mit der Sie die Informa- tionen anschließend auslesen können. In dem Paket ist auch das ipaccount-Werkzeug enthalten, mit dem Sie die Zahlen auf der Kommandozeile auswerten können. Der Patch fügt ein ACCOUNT-Target dem Kernel hinzu. Dieses Target kennt zwei Op- tionen: I --addr : Für dieses Netzwerk wird die Zählung durchgeführt. I --tname : Hier werden die Zahlen gespeichert. Weitere Informationen über den Patch und die zugehörigen Pakete erhalten Sie auf http://www.intra2net.com/opensource/ipt_acount.

18.4.2 IPMARK Die Firewall-Markierung ist eine häufige Methode, um Pakete verschiedenen Quality-of-Service-Queues zuzuordnen. Bei einem Service-Provider ist es häufig erforderlich, jedem Client eine eigene Queue zuzuordnen, in der dessen Verkehr reglementiert wird. Handelt es sich um viele Clients, ist das sehr aufwendig, da Sie für jede IP-Adresse eine eigene Regel definieren müssen. Dieses Target erleichtert die Definition ungemein, da es die Markierung direkt aus der IP-Adresse erzeugen kann. Statt 50 Regeln für 50 Clients genügt dann häufig eine einzige Regel. Das IPMARK-Target unterstützt in der Mangle-Tabelle noch die folgenden Optionen: I --addr src|dst. Diese Option definiert, ob die Quell- oder die Ziel-IP-Adresse für die Erzeugung der Markierung genutzt wird. I --and-mask . Vor Erzeugung der Markierung kann die IP-Adresse mit dieser Maske Und-verknüpft werden. I --or-mask . Zusätzlich kann die IP-Adresse mit dieser Maske Oder-verknüpft werden. Es wird immer zuerst die Und- und dann die Oder-Verknüpfung durch- geführt. Wenn Sie zum Beispiel ein Client-Netzwerk mit den IP-Adressen 192.168.0.0/24 verwenden und für jeden Client eine eigene Markierung zwischen 0 und 255 setzen möchten, können Sie die folgende Zeile verwenden:

393 open source library isrPthutrtttdeflednOptionen: die folgenden Mangle-Tabelle die unterstützt der Patch in Dieser direkt Patch ändern. diesem Pakets mit auswählen, eines Route können Routing-Tabelle andere Sie Konfigura- eine macht. umständliche Firewall-Markierung der überflüssig Patch, eine einen über um die sich es tionen, handelt Patch diesem bei Auch ROUTE 18.4.3 394 1.2.3.4 Target neues --gw ein ROUTE erzeugt Patch -j Dieser TARPIT 25 --dport tcp 18.4.4 -p POSTROUTING anderes -A ein mangle über verwenden: -t SMTP-Verkehr Befehl iptables folgenden ausgehenden den Sie gesamten können routen, den zu Gateway Beispiel zum Um isudac ie ebnugba benn e letms u e Timeout den auf muss Client wird Der warten. wird Verbindung ablehnen. Client Tarpit der Verbindungabbau kann. Der einen fortfahren einzustellen. auch er und Datenübertragung ob dies fragen, die Abständen an, übermit- regelmäßigen null Client in von anschließend den TCP-Window ein weist An- Verbindung Das die akzeptiert durchführt. telt. für Target TCP-Handshake Tarpit von Dieses kompletten wird verwirren. einen schließend zu es Ausbreitung ihrer Port-Scanner indem in einen Würmer TCP-Verbindungen, um oder sinnvoll, verlangsamen Beispiel zum zu ist Dies kann. werden setzt I I I I I pals- age- RRUIG- t1- PAK--addr=src IPMARK -j eth1 -i PREROUTING -A mangle -t iptables ih erbtahe.Hemtwr issVratnugdetudwerden und umgedreht Verhalten dieses ausgewertet. wird Regeln Hiermit weitere betrachtet. mehr nicht --tee --continue --gw --iif -oif a rgnl ae idae e eenuvrnetunterworfen. unverändert Regeln den aber wird Paket originale Das alan. wall --and-mask=0xff ndee alwr ieKpedsPkt nsrceddrRglgeroutet. Regel der entsprechend Pakets des Kopie eine wird Fall diesem In . Achtung omlres edndewiee eennc dem nach Regeln weiteren die werden Normalerweise . a ae elstdsSse brdeeNetzwerkkarte. diese über System das verlässt Paket Das . a ae om cena brdeeNtwrkrea e Fire- der an Netzwerkkarte diese über scheinbar kommt Paket Das . i riOptionen drei Die i ndrebnRglauftauchen! Regel derselben in tig a ae idüe isnRue weitergeleitet. Router diesen über wird Paket Das . --tee , TARPIT --continue a hlc i ara apteinge- Tarpit LaBreas wie ähnlich das , und --iif önnnctgleichzei- nicht können 8Patch-O-Matic 18 ROUTE -Target 18.4 Extra-Patches library

Tipp

TARPIT Wenn Sie verwenden, sollten Sie alle Verbindungen, die Sie open source später mit TARPIT verzögern möchten, bereits in der raw-Table aus dem Connection Tracking entfernen. Ansonsten speichert der Ker- nel unnützerweise in seiner Zustandstabelle die Verbindung ab und überwacht sie. Die Manpage gibt hier ein gutes Beispiel.

18.4.5 TRACE Für die Fehlersuche in Ihren Regelsätzen ist das TRACE-Target eine interessante Funk- tion. Hiermit können Sie in der Raw-Tabelle ein Paket für den Trace auswählen. Anschließend protokolliert das System bei jeder auf dieses Paket zutreffenden Regel die Tabelle, die Kette und die Regelnummer. Die raw-Tabelle muss zur Verfügung stehen, um dieses Target zu verwenden.

18.4.6 XOR Mit diesem Patch wird ein neues Target XOR für die Mangle-Tabelle eingeführt, mit dem Sie eine einfache XOR-»Verschlüsselung« durchführen können. Hierzu akzeptiert dieses Target zwei Optionen:

I --key I --block-size

18.4.7 account Dieser Patch ähnelt dem ACCOUNT-Patch. Während Letzterer ein Target hinzufügt, im- plementiert dieser Patch einen Pakettest. Die Erweiterung account erlaubt die folgen- den zusätzlichen Optionen: I --aname . Name des Zählers. I --aaddr . Adresse, für die das Accounting durchgeführt werden soll. I --ashort. Das Accounting implementiert getrennte Zähler für jedes Protokoll (TCP, UDP, ICMP und Other). Mit diesem Schalter werden alle Protokolle gemeinsam in einem Zähler geführt. Die Zähler können anschließend über das Sysctl-Interface unter /proc/net/ipt_account/ ausgelesen und auch mit Startwerten gesetzt werden. Weitere Informationen über den Patch erhalten Sie auf http://www.barbara.eu.org/ ~quaker/ipt_account/.

395 open source library iesnvleAwnugitzmBipe i elsizeugvnVerbindun- von übertragen. Reklassifizierung Daten die viele Beispiel besonders die zum gen, ist Anwendung sinnvolle Eine etr nomtoe brdeAwnugehle i auf Sie erhalten Anwendung ACCEPT die org/peejix/geoip/howto/geoip-HOWTO.html -j über DE,US Informationen --source-country Weitere geoip -m FORWARD wird: transportiert -A Paket Sie ein iptables können wohin und Informationen woher Diese testen, werden. zu um verwendet nutzen, IP-Adressen auf wo welche Informationen, Welt enthält Hierfür Datenbank der prüfen. Diese Ortes GeoIP-Datenbank. des die Abhängigkeit Sie in benötigen IP-Adressen Sie können Patch diesem Mit geoip 18.4.10 Datei der in auch Patches dieses zu- Ober- Bereichs Anwendung eine dieses nach und innerhalb Raten Unter- Verbindungen die /proc/net/ip_conntrack alle eine die- können auf Sie Sie anhand Datenrate wird treffen. definieren die Test Verbindungen der dieser Dazu erlaubt, und hinzu, identifizieren. Ihnen grenze, Test zu es einen Datenrate Kernel und ser Ihrem überwacht zu Verbindungen Sie der fügen ACCEPT Patch -j diesem Mit 80 connrate --dport web_ok --condition 18.4.9 condition -m tcp -p INPUT -A iptables /proc/net/ipt_condition/web_ok > 1 Verzeich- echo dem in Variablen selbst Sie können 2.4.x-Kernel nis den für Patch diesem Mit condition 18.4.8 396 oder denen diesen bei Netmeeting auch Protokolle, komplizierten Firewall Microsoft sehr Ihrer die (z.B. Sie auf können wahrscheinlich Hiermit verwenden verwenden. Sie Patch H.323-Protokolle wollen dann die Gnomemeeting), Sie Wenn h323-conntrack-nat 18.4.12 Rücksprung Rücksprung! kein kein Ende am erfolgt wird Sie diesen abarbeiten, benut- Auf können durchgeführt! Kette der durchführen. benutzerdefinierte Patch Goto Ende eine diesem Sie ein das Wenn nun Mit an Kette Jumps explizit anfügen. aufrufende eines Sie Catch-All-Regel die statt müssen eine in möchten, die Kette Rücksprung nicht ist zerdefinierten das ein Ketten Sie Abarbeitung benutzerdefinierten Wenn deren von erfolgt. nach Anwendung dass der bei Tatsache, Problem häufiges Ein goto 18.4.11 /proc/net/ipt_condition nachvollziehen. regnuddeei eenauswerten: Regeln in diese und erzeugen . http://people.netfilter. 8Patch-O-Matic 18 18.4 Extra-Patches library viele dynamische Ports ausgehandelt werden, recht einfach filtern und natten. Allerdings unterstützt dieser Patch kein H.245-Tunneling und kein H.225-RAS. Für

eine minimale Netmeeting-Funktion genügt üblicherweise nach dem Laden der open source neuen Module die Berücksichtigung des Ports 1720/tcp.

18.4.13 ip_queue_vwmark Mit diesem Patch können Sie die Firewall-Markierung eines Pakets in Userspace modifizieren. Hierzu wird das Paket über das QUEUE-Interface an einen Prozess im Userspace gegeben, der das Paket prüfen und markieren kann. Diese Funktionalität wird von der NuFW (http://www.nufw.org) genutzt, die spezielle Paketfilterregeln für einzelne Benutzer an- und abschalten kann.

18.4.14 ipp2p Hiermit können Sie Peer-to-Peer-Verkehr testen. Die Funktion ist in Abschnitt 32.7 erläutert.

18.4.15 policy und IPsec-Patches Es gibt eine Reihe von Patches in Patch-O-Matic, die den IPsec-Verkehr betreffen. Diese werden in dem entsprechenden Kapitel (siehe Kapitel 33) besprochen.

18.4.16 mms-conntrack-nat Dieser Patch fügt Helfermodule hinzu, die das crosoft-Streaming-Media-Protokoll analysieren und neu ausgehandelte Verbindungen der Verbindungstabelle als Ex- pectation mit dem Zustand RELATED hinzufügen. Nach dem Laden der entsprechenden Module ist es ausreichend, den Port 1755 sowohl für TCP als auch für UDP zu öffnen.

18.4.17 mport Für alte Kernel < 2.6.11 fügt dieser Patch die Möglichkeit hinzu, bei der Benutzung von -m multiport nicht nur einzelne Ports, sondern auch Port-Bereiche zu verwenden: iptables -A FORWARD -p tcp -m mport --ports 21:23,80 -j ACCEPT

Ab dem Kernel 2.6.11 ist diese Funktion in multiport enthalten.

18.4.18 owner-socketlookup Mit diesem Patch können Sie den owner-Match auch in der INPUT-Kette verwenden. Sie können prüfen, welcher Benutzer das Paket entgegennehmen wird.

397 open source library e i ncleednrdnZgifafdnPr 75/d erlauben. 27950/udp Port den müs- auf Zugriff Funktion den die nur zwei automatisch Für anschließend fügt dann Sie Quake3-Verbindungen. erlaubt sen Patch ausgehandelten und der dieser hinzu Akzeptanz NAT) Auch und die PPTP-Patch. Conntrack (für dem Helfermodule ähnlich neue funktioniert Patch ACCEPT Dieser -j quake3-conntrack-nat NEW --state 18.4.20 state ACCEPT -m -j 1723 RELATED,ESTABLISHED --dport --state tcp state -p -m iptables zulassen: iptables PPTP Regeln folgenden den mit Sie können Dann ip_nat_pptp ip_nat_proto_gre ip_conntrack_pptp für Sie ip_conntrack_proto_gre die verfügbar, Module müssen: zusätzlichen laden Zuordnung folgenden Funktion die die die dadurch sind und Anwendung verfügt Nach ist. Ports problematisch Clients über natten. verschiedenen nicht zu GRE-Protokoll GRE GRE-Tunnel das mehrerer da auch schwierig, Sie Helfermodul ist können Zustand ein Dies Außerdem dem über mit GRE-Tunnel. GRE-Tunnel selbstständig automatisch richtigen dann einen GRE-Tunnel den erkennt Server den Netfilter Sie und akzeptieren. können RELATED Client Patch aus- diesem handeln FTP-Protokoll Port Mit Verbindung dem aus. den diese immer ähnlich Über verwendet verwendet 1723/tcp. Steuerungsverbindung filtern PPTP-Protokoll Die zu Verbindungen. Das sicher gehandelte natten. Point-to-Point-Protokoll-Verkehr möglich, zu es und ist Patch diesem Mit pptp-conntrack-nat 18.4.19 398 jedoch es Shell. benötigen Secure Anwendungen der Shell Backup). Einige und Remote NetWorker Telnet verschlüsselt. Legato Die ähnlich nicht (z.B. System hinzu. RSH anderen ist RSH-Protokoll einem Allerdings das auf Arbeit für die Helfermodule erlaubt fügt Patch Dieser rsh Server Ihre 18.4.22 und einsetzen NIS oder NFS Sinn möchten. dennoch Netz schützen kann Firewall lokalen Sie einer Patch Ihrem sollten mit Der in Allerdings einsetzen. Sie Unix- Internet können. wenn Sie das machen, denen filtern über mit RPC sicher hinzu, kein TCP) Tests grundsätzlich und auch als (UDP Helfermodule RPC-Verbindungen sowohl fügt Patch Dieser rpc 18.4.21 8Patch-O-Matic 18 18.4 Extra-Patches library

18.4.23 sip Dieser Patch fügt Helfermodule für das SIP-Protokoll hinzu (siehe Abschnitt 32.22). open source

18.4.24 talk-conntrack-nat Dieser Patch fügt Helfermodule für das Talk- (517/udp) und NTalk/Ntalk2- Protokoll hinzu. Damit können Talk-Verbindungen in beiden Richtungen auch durch Firewalls und NAT aufgebaut werden.

18.4.25 tproxy Dieser Patch implementiert eine sehr interessante Funktion: einen transparenten Proxy. Ein echter transparenter Proxy ist ein Proxy, der sowohl für den Client als auch den Server unsichtbar ist. Viele Implementierungen bezeichnen bereits eine Fi- rewall als transparenten Proxy, wenn sie lediglich für den Client unsichtbar ist. Dies genügt jedoch manchmal nicht, da die Adresse des echten Clients für den Server verloren geht. Stellen Sie sich eine Firewall vor, die einen Webserver mittels eines transparenten Proxys schützen möchte. Da der Proxy nur für den Client und nicht für den Webserver unsichtbar ist, werden Sie bei der Auswertung der Protokolle des Webservers nur Zugriffe Ihres Proxys erkennen. Bei einem echt transparenten Proxy, wie Sie ihn mit diesem Patch implementieren können, ist das nicht der Fall. Die Verbindung des Proxys mit dem Server wird mit der originalen IP-Adresse des Clients wieder aufgebaut. Die Informationen für die NAT-Zuordnungen werden in einer eigenen Tabelle tproxy abgespeichert. Sie wählen die Verbindungen, die der transparente Proxy übernehmen soll, mit dem TPROXY-Target aus.

18.4.26 unclean Der unclean-Test prüft viele verschiedene Eigenschaften eines IP-Pakets und ent- scheidet, ob dieses Paket den Regeln und Standards entspricht oder irgendwelche Regeln missachtet. Da in der Vergangenheit beim 2.4-Kernel größere Probleme auf- traten, bei denen korrekte Pakete verworfen wurden, ist dieser Test nun nicht mehr Bestandteil des Standard-Kernels, sondern Teil von Patch-O-Matic. Wenn Sie den Patch angewendet haben, können Sie fehlerhafte Pakete ganz einfach verwerfen: iptables -t FORWARD -m unclean -j DROP

Im Einzelnen führt dieses Modul die folgenden Tests durch: I ICMP-spezifisch: – Ist der Header komplett? – Enthält das ICMP-Fehler-Paket das Paket, das den Fehler auslöste? – Verwendet das ICMP-Paket einen ungültigen ICMP-Code? – Ist das ICMP-Paket zu groß? – Bezieht sich die Parameter-Problem-Fehlermeldung tatsächlich auf den IP- Header des auslösenden Fehlerpakets?

399 open source library ledeeTssmnel(u esilmtdem mit Beispiel (zum manuell Tests diese Alle 400 erafedgudvrruh uhete ilPoesret irist Hier Prozessorzeit. viel extrem auch verbraucht und aufwendig sehr etihenahri e nedn.SesltndePkt,devndee Test diesem von die Pakete, verwerfen. die auch vielleicht sollten protokollieren, Sie mindestens Anwendung. werden, erkannt der in einfacher sentlich I I I lgmiePrüfungen: Allgemeine TCP-spezifisch: UDP-spezifisch: – – – – – – – – – – – – – – – edndeTPOtoe ndrrctgnRiefleudLneangege- Länge und Reihenfolge richtigen ben? der in TCP-Optionen FIN/ACK/ die Werden ACK/URG/PSH, FIN/ACK/URG/PSH. und ACK/URG, RST/ACK/PSK, FIN/ACK/URG PSH, ACK/PSH, RST/ACK, RST, ACK, SYN/ACK, erlaubten FIN/ACK, SYN, Die sind: verwendet? TCP-Flag-Kombinationen DieserKombinationen erlaubte ungenutzt? sie. nur berücksichtigt tatsächlich und Werden TCP-Header ECN-Bits die im bereits kennt Bits Test reservierten die Sind erlaubt. nicht TCP- ist sein. eingebetteten 0 vorhanden Port ICMP-Fehlermeldung Ports einer die in müssen handelt, einen Header um TCP-Headers? sich des es Mindestgröße die Wenn als kleiner Paket das Ist s a rt rgetmnetn 2 ye ag(AX25)? gesetzt? lang Next-Protocol-Feld Bytes das 128 Ist mindestens ist Fragment erste oder das genutzt, Ist null? Kombination Fragments eines ungültiger Länge in die Fragment-Flags (Ping die kByte Werden 64 als länger Viel- Fragmente Death)? aus zusammengesetzten of der sie Länge bestehen die und Ist auf, Byte? Länge 8 richtige von fachen die Fragmente die Weisen IP-Pakets? des Länge die Stimmt erlaubt. nicht ist 0 Zielport Pakets? des Länge die Stimmt mehr! nicht Fehlermeldungen diese verwenden Router einem gesendet? von Router Time-Exceeded-Fehlermeldung oder Source-Quench- die Wurde u32 Ts)z mlmnirn ist implementieren, zu -Test) 8Patch-O-Matic 18 unclean we- ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library rcig u ece ihugdsesePktkmt issPktehl e vir- den erhält Connection Paket das Dieses kommt. erkennt Paket Zustand Hierzu erste tuellen das überwachen. Richtung welcher Protokolle aus UDP-, anderen Tracking, TCP-, alle kann Tracking und Connection ICMP- Das Netzwerkver- der Iptables-Firewall. Überwachung die die durch für bindungen verantwortlich Überblick ist – Tracking Tracking Connection Connection Das 19.1 die um nur daher gehen. Tracking es diese Connection soll des Kapiteln Hier Da Konfiguration entsprechenden betrachtet. fortgeschrittene den Aspekte Kapitel. in verschiedene Net- wurden eigenes ausführlich Filtern, wird, bereits Iptables/Netfilter- (zustandsorientiertes ein benötigt Funktionen Translation) der auch Address andere work viele Funktion Funktion für wesentliche dieser aber Funktionalität eine gebührt Deshalb ist Firewall. Tracking Connection Das 19 a oncinTakn neshie ngsm esheeeZustände: verschiedene 5 insgesamt unterscheidet Tracking Richtungen Connection Das bestimmten in nur Verbindungen erlauben. um zu werden, genutzt kann Funktion u e nee ihugkme.Nrdn ratndszet ae n die und Paket Zustand zweite virtuellen das muss den erhalten Paket Zustandstabelle dann zweite der Nur Das in kommen. eingetragen. Verbindung Richtung Zustandstabelle anderen der der in aus auch Verbindung die e aeeehle nbäggvnirrRctn e Zustand den Richtung ihrer von unabhängig erhalten Pakete ren I I I i ü i ee ae elntwre.DeeEgncatnsn o dem von sind Eigenschaften Diese besprochen. werden. unten weiter verlangt werden Paket und abhängig neues Protokoll hat, ein Eigenschaften andere für bestimmte die Paket das und existiert Verbindungstabelle efrou izgfg udn u oennKrenwre i letzten die werden Kerneln modernen Auf Tracking- Connection wurden. einem hinzugefügt von Helfermodul die Verbindungen, oder sein Fehlermeldungen o e oncinTakn eee ud drdee ae a rt Ant- erste das Paket bereits dieses Antwortpaket oder wurde ein ist. gesehen wortpaket mindestens Tracking Connection und dem existiert von Verbindungstabelle der in RELATED ESTABLISHED NEW ieVridn eih,dednZustand auf den sich die verwendet, Ports bezieht, andere Verbindung und eine IP-Adresse andere eine Protokoll, anderes i ae s e,wn i aueöieVridn ohncti der in nicht noch Verbindung dazugehörige die wenn neu, ist Paket Ein : i ae s i ie ebnugvrad,wn s bole ein es obwohl es, wenn verwandt, Verbindung einer mit ist Paket Ein : :E i nP a k e th a td e nZ u s t a n d oncinTracking Connection NEW endsPktvndnFrwl-eenazpir id wird wird, akzeptiert Firewall-Regeln den von Paket das Wenn . ESTABLISHED ESTABLISHED endeVridn bereits Verbindung die wenn , a.De önnICMP- können Dies hat. ESTABLISHED ESTABLISHED leweite- Alle . .Diese

open source library open source library edtnI-desnudPrsdsPkt i enrdri e Verbindungs- Paket der das in muss der Zustand Zusätzlich keiner dem übereinstimmen. mit mit Verbindungen Pakets ver- des eingetragenen die Ports tabelle dass und daran, Verbindung IP-Adressen neue wendeten eine erkennt TCP-Window-Tracking alte Das chen. etr ae ez i eesae e itasi e ael idraf5Tage 5 auf wieder TCP- Tabelle ein der Tracking in Jedes Connection Eintrags werden. das des erkannt Sobald Verbindungstabelle, Lebensdauer Tracking zurück. der die Connection in setzt dem Tage Paket von 5 weitere Pakete zu weiteren bis keine für wenn verbleibt Verbindung aufgebaute Die Firewalls«. zustandsorientierten bei verfügbarkeit e.WredeVridn i einem mit Verbindung die Wurde gen. ne ihdeVridn ncleeddrk ndmZustand dem in direkt anschließend Verbindung die sich findet e n is neshelc u-udabun neshie a Connection das unterscheidet Behandlung. der abbauen, in Protokolle und diese auch auf- Linux-Kernel unterschiedlich im unterstüt- Tracking Verbindung diese der und Arten unterschiedliche zen Protokolle verschiedenen die Da pih i leVrin i i enl268enclelc euz ud.Deneue Abschnitt be- Die (siehe wurde. Abschnitt TCP-Window-Tracking genutzt Dieser einschließlich Abschnitt 2.6.8 Varianten. im Kernel zwei wird bis die Variante es Version, gibt alte die Tracking spricht TCP-Connection Tracking dem TCP-Connection Das Bei 19.1.1 402 ai i ebnugashißn ndnZustand den in anschließend Verbindung die Damit gesetzt. TCP-Flag kein hat Paket uhmtutrcidihnTmot.DeevrcidnnZicezsäd wer- Zwischenzustände Abschnitt Zwischenzustände verschiedenen im einzelnen Diese den die Timeouts. versieht unterschiedlichen und mit detaillierter auch Tracking viel Connection ver- Zustände das diese verwaltet die Um können, intern zu entfernt. trennen Zustandstabelle sauber der Zustände aus schiedenen auch Verbindung die wird erkennt, u ein auf idne ahenmRbo e iealoe ahenmFioe neinem in Failover einem nach Abschnitt oder im Sie Firewall finden hierzu der Ver- Informationen von Weitere Reboot Wiederaufnahme Firewall-Cluster. einem die erlaubt nach Dies bindungen ist. erforderlich Antwort-Paket ein dass I I UNTRACKED INVALID Verbindungstabelle eigenen verwaltet. einer in Verbindungen rcigac e Zustand den auch Tracking esilIM-elredne en i ihafen ndrVerbindungsta- der in eine zum beziehen. auf Verbindung können vorhandene Dies sich nicht ungültig. die belle es Ver- sein, ist neue ICMP-Fehlermeldungen erfüllt, eine Beispiel für Protokoll Anforderungen verwendeten die beim nicht bindung dennoch aber passt, Verbindungen o e oncinTakn brah iduddhrac ih nder in nicht auch daher und wird überwacht auftaucht. Tracking Verbindungstabelle Connection dem von SYN al i ae ukie e ndrVridnsael aufgeführten Verbindungstabelle der in der keiner zu Paket ein Falls : Pktimrein immer -Paket enIrKre brdie über Kernel Ihr Wenn : 19.4.14 NEW nwdrein entweder TPZsäd« besprochen. »TCP-Zustände«, , SYN/ACK UNTRACKED PktasdreteegsttnRctn fol- Richtung entgegengesetzten der aus -Paket SYN ,ein -, a eett asdeeVridn nicht Verbindung diese dass bedeutet, Das . ACK raw Pkti Zustand im -Paket Tblevrüt en a Connection das kennt verfügt, -Tabelle ACK drenNl-ae en i Null- Ein sein. Null-Paket ein oder - RST ESTABLISHED Pktoe i TCP- ein oder -Paket /proc/net/ip_conntrack_expect 9Cneto Tracking Connection 19 NEW esttwr,muss wird, versetzt eonn obe- so begonnen, ESTABLISHED 19.3 26.3 )bespro- FIN ,»Hoch- ohne , -Paket 19.1 Connection Tracking – Überblick library

19.1.2 Das UDP-Connection Tracking Das Protokoll UDP unterscheidet sich von dem Protokoll TCP dadurch, dass dieses Protokoll keine Verbindungen kennt. Daher gibt es auch keine Signalisierung eines open source Verbindungsaufbaus oder -abbaus in dem UDP-Protokoll. Die Überwachung der Verbindung kann nur durch reine Beobachtung der Pakete und Verwendung von Timeouts erfolgen. Das Connection Tracking erkennt eine neue Verbindung daran, dass das Paket IP- Adressen und Portnummern verwendet, die zu keiner in der Tabelle gespeicherten UDP-Verbindungen passen. Ist das der Fall, erhält das Paket den Zustand NEW und die Verbindung wird, wenn die Regeln es erlauben, als neue Verbindung in die Tabelle eingetragen. Da es durchaus Applikationen gibt, die über UDP lediglich Informationen versen- den und nie eine Antwort erhalten, muss das Connection Tracking die Verbin- dung selbstständig nach einiger Zeit wieder entfernen. Eine Verbindung, für die das Connection Tracking keine Antwort-Pakete aus der entgegengesetzten Richtung ge- sehen hat, wird automatisch nach 30 Sekunden aus der Tabelle entfernt. Kommt das Antwort-Paket erst nach 31 Sekunden, so kommt es zu spät und wird nicht mehr als ESTABLISHED erkannt. Erhält das Connection Tracking innerhalb der 30 Sekunden ein Antwort-Paket, so wird die Lebensdauer für die Verbindung in der Tabelle auf 180 Sekunden her- aufgesetzt. Solange nun alle 180 Sekunden ein weiteres Paket mit identischen IP- Adressen und Portnummern ausgetauscht wird, verbleibt die Verbindung in der Tabelle. Ist das nicht der Fall, wird die Verbindung nach 180 Sekunden aus der Zustandstabelle entfernt. 19.1.3 Das ICMP-Connection Tracking Auch beim ICMP-Protokoll gibt es ähnlich wie beim UDP-Protokoll keine ech- ten Verbindungen. Jedoch ist zum Beispiel der Ping mit den Nachrichten Echo- Request und Echo-Reply einer Verbindung ähnlich. Das Connection Tracking be- handelt daher alle ICMP-Request- und -Reply-Pakete auch entsprechend. Sobald das Connection Tracking ein Request-Paket erkennt, trägt es dieses mit seinen IP- Adressen, seiner Identifikations- und Sequenznummer in der Verbindungstabelle ein. Das Request-Paket erhält den Zustand NEW zugewiesen. Die Identifikations- nummer erlaubt es, die Request-Pakete verschiedener Ping-Befehle auseinander zu halten. Die Sequenznummer ermöglicht es, die Reply-Pakete den entsprechenden Request-Paketen zuzuordnen. Das Connection Tracking richtet in der Verbindungs- tabelle für jedes eindeutige Request-Paket eine Verbindung ein. Sobald nun das Connection Tracking ein Reply-Paket erkennt, prüft es die IP-Adressen, die Identifi- kationsnummer und die Sequenznummer und vergleicht diese mit den Verbindun- gen in der Tabelle. Stimmen diese mit einer Verbindung überein, so erhält das Paket den Zustand ESTABLISHED und die Verbindung wird aus der Tabelle entfernt, denn pro Echo-Request-Paket ist nur ein Reply-Paket erlaubt. Stimmen die Daten nicht mit ei- ner bekannten Verbindung überein, so erhält das Reply-Paket den Zustand INVALID.

403 open source library u e ael nfrtwr.JdswieePktsttdeLbndurwee auf wieder Lebensdauer die Verbindung setzt die Paket oder zurück. weitere Sekunden Jedes muss 600 Sekunden wird. werden entfernt 600 erkannt Tabelle von Verbindung der aus innerhalb dieser 600 entweder Paket von Lebensdauer dass weiteres die ein bedeutet, Paket Das ersten zugewiesen. dem ab Zustand Sekunden dem bekommt mit Verbindung iden- verwenden, Die die Protokoll versehen. Pakete, dasselbe weiteren eine und alle sich IP-Adressen werden Sobald befindet, tische befindet, verwendet. Tabelle Verbindung Protokoll der keine gleiche in noch das Verbindung Connection derartige Tabelle und das der IP-Adressen erkennt gleichen in Paket die sich neues die dass Tatsache, Ein der Rege- behandelt. wenigen an besonderen gleich einigen Tracking keine alle mit PPTP-Patches) werden der Tracking Sie Anwendung Connection lungen. bei das GRE kennt Protokolle (z.B. weiteren Protokolle Ausnahmen alle weiteren für Tracking alle Connection Das Für 19.1.4 Tabelle der aus wird Zustand bezieht, den Fehlermeldung Paket die Ta- das sich der erhält die entfernt. so auf in Verbindung, passen, Verbindung die Informationen eine und werden diese Existiert Header die Diese ausgewertet. enthal- auf Ports. IP-Daten Tracking belle, die der Connection hier Bit sich dem 64 befinden von UDP-Paketen ersten oder die TCP- und Bei IP-Header ICMP- ten. kompletten ICMP-Fehlermeldung die den Eine (z.B. sich ICMP-Pakets. immer die haben des muss auf Inhalt tun und dem Verbindung, zu an die TCP- nichts bezieht, erkennt Fehlermeldung Verbindung Tracking in eigentlichen Connection Fehler Das der Router). um mit IP-Adressen die von verwendet, werden, können dafür versendet Fehlermeldungen auch Diese anzuzeigen. aber UDP-Verbindungen wird Tabelle. ICMP-Protokoll der aus Das Verbindung werden, von die erkannt Tracking Lebensdauer Sekunden Connection 30 das eine dieser entfernt innerhalb Verbindungen sonst muss Reply-Paket diese Das kein Sekunden. erhalten wenn 30 verbleiben, wird, Tabelle der gesendet in lange Reply-Paket unendlich nicht Verbindungen die Damit 404 16384 / RAM = CONNTRACK_MAX ip_conntrack-Kernelmodul Das Das 19.2 ters ugtbleuddsHssasdrAbispihrrß.AfdrItl32-Bit- Intel der berechnet: Verbin- Auf folgt der wie Arbeitsspeichergröße. Verbindungstabelle Größe der der die Größe aus die Kernel wird Hashs Architektur der des berechnet und Linux-System dungstabelle normalen werden. fest- geändert einem Verbindungstabelle nicht Auf der Hashs Erzeugung des der Größe ist bei die kann wird können, Anschließend und ändern gelegt. fix Größe Tabelle Hashes die der des Sie Größe Während Verwendung die kann. der suchen während Tabelle der Verbindungstabelle in der schnell Kernel der damit gelegt, Verb Die beschäftigen. Verbindungstabelle hashsize ip_conntrack mdee aaee uvrthn üsnwruszncs i der mit zunächst uns wir müssen verstehen, zu Parameter diesen Um . Kremdlutrtttbi ae i ento e Parame- des Definition die Laden beim unterstützt -Kernelmodul nugtblewr l ahTblean- Hash-Tabelle als wird indungstabelle 9Cneto Tracking Connection 19 ESTABLISHED RELATED 19.2 Das ip_conntrack-Kernelmodul library

Auf einem 512-MByte-Rechner hat die Verbindungstabelle also eine Größe von ma- ximal 32.768 Verbindungen. Diese Größe sinkt unabhängig von der Speichergröße

nie unter 128, und auch auf Systemen mit mehr als 1 GByte Speicher beträgt dieser open source Wert maximal immer 65.536. Ist dieser Wert erreicht, werden weitere Verbindungen nicht mehr von der Firewall akzeptiert. Sie können diesen Wert aber manuell in der Variablen ip_conntrack_max setzen: echo 128000 > /proc/sys/net/ipv4/ip_conntrack_max

Bei einigen Kernel müssen Sie alternativ auf diese Datei zugreifen: echo 128000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max

Den aktuellen Wert können Sie hier auch auslesen. Die Größe des Hashs (hashsize) wird ebenfalls von dem Kernel berechnet und be- trägt auf der Intel 32-Bit-Architektur HASHSIZE=CONNTRACK_MAX / 8. Diese Berechnung wird nur einmal beim Laden des Moduls durchgeführt, da anschlie- ßend die Hashsize nicht mehr geändert werden kann. Wenn Sie anschließend aber den Wert CONNTRACK_MAX erhöhen, ist die Größe des Hashs nicht mehr opti- mal, und die Suche nach einer Verbindung in der Tabelle durch den Kernel dauert unnötig lange. Um dies zu verhindern, sollten Sie vor dem Laden des Kernelmoduls bereits ent- scheiden, wie viele Verbindungen Ihre Verbindungstabelle später unterstützen soll. Berechnen Sie nun den passenden Wert für die Hashsize, indem Sie die maximale Anzahl der Verbindungen durch 8 teilen. Bei einem Kernel älter als 2.4.21 sollten Sie auf Grund des verwendeten Hash-Algorithmus möglichst eine Primzahl benut- zen. Bei jüngeren Kerneln sollte es sich bei der Zahl um eine Potenz von 2 handeln. Wählen Sie die geeignete Zahl aus, und laden Sie das Modul ip_conntrack manuell, bevor Ihre Regeln es benötigen: modprobe ip_conntrack hashsize=16384

Auslesen können Sie den Hashsize-Wert entweder aus den Kernelmeldungen beim Laden des Moduls oder, wenn Ihr Kernel es unterstützt, über die Variable /proc/sys/net/ipv4/netfilter/ip_conntrack_buckets.

Tipp Falls Sie das Modul ip_conntrack fest in den Kernel einkompiliert ha- ben, können Sie auch die Option ip_conntrack.hashsize=16384 als Boot- Option dem Kernel übergeben.

405 open source library ieSqezumrvredn i ih ndeatelnTPWnospasst, TCP-Windows aktuellen als die die Tracking Connection in Pakete, dem nicht Alle von werden die Pakete. verwenden, der an- Sequenznummer Sequenznummern Kommunikationspartnern eine die den und von TCP-Windows die gegebenen analysiert TCP-Window-Tracking Das Proto- verschiedenen die vor für und Timeout-Werte diesen verbessert das die stark an über erweitert, Jahren kolle des Prozent Funktion nächsten 100 die den entsprechend zu in um TCP-Protokolls wurde allem nicht Patch den des sich Der Clients halten. 2000 Verhalten Standard viele August exakte und der im das nachbildete in TCP-Standards bereits kritisch er recht Kadlecsik da Patch Jozsef Anwendung, dieser würde. schrieb dem war überwachen Ursprünglich ermöglichen, nicht Paketfilter TCP-Window-Tracking-Patch. zu TCP-Sequenznummern die kommerzieller dies TCP-Protokolls sie Um des Hersteller da speziell sei, und Zustandsüberwachung ausreichend nicht die Anwender dass vor, warfen Linux-Paketfilter Zeit TCP-Window-TrackingLange 19.3 406 Un- /proc/sys/net/ipv6 neues ein Version aktuellen seiner in terverzeichnis fügt TCP-Window-Tracking-Patch /proc-VariablenDer 19.4 e ac l etrBsadeli e enlüenme.Frätr Versionen ältere Für Verfügung. übernommen. zur Netfilter-Homepage Kernel der den auf noch in Patch Bestandteil der fester steht als Patch der inTakn a rtkl P6nc ih nesüz,gb si e Verzeichnis dem in es gibt unterstützt, nicht noch IPv6 Protokoll das Tracking tion Tipp Achtung i ukinwiedsPthsbsetafdmAtklvon IP-Filter« Artikel in Filtering dem Packet auf TCP Stateful basiert »Real ( Rooij Patches van des Guido Funktionsweise Die nicht TCP-Null-Pakete akzeptiert! Pakete werden neue als TCP-Window-Tracking mehr dem Mit enSesc ü e itrrn neesee,itde iesehr eine dies ist Überlegungen. interessieren, angestellten der Hintergrund Quelle den Solaris. ausführliche für und BSD sich für Sie IP-Filter Wenn dem in Funktionalität diese beschreibt netfilter http://www.iae.nl/users/guido/papers/tcp_filtering.ps.gz /proc enetpehne Verzeichnis. entsprechendes kein Vrecnsentle ukne.MtdmKre .. wurde 2.6.9 Kernel dem Mit können. zu einstellen -Verzeichnis e Verzeichnis dem /proc/sys/net/ipv4/ INVALID gekennzeichnet. iz.D a Connec- das Da hinzu. 9Cneto Tracking Connection 19 .DrArtikel Der ). 19.4 /proc-Variablen library

Achtung

Denken Sie daran, dass nach einem Neustart des Systems diese open source Werte wieder auf Ihre Default-Werte zurückgesetzt werden. Es ist sinnvoll, zu Beginn Ihres Firewall-Skripts die Werte manuell zu set- zen, die Sie verwenden möchten.

Dieses Verzeichnis enthält die folgenden neuen Variablen:

19.4.1 ip_conntrack_buckets In dieser Variablen können Sie die Hashsize der Verbindungstabelle auslesen (siehe Abschnitt 19.2).

19.4.2 ip_conntrack_count Diese Variable zeigt die Anzahl der aktuell in der Verbindungstabelle vorgehaltenen Verbindungen an.

19.4.3 ip_conntrack_generic_timeout Diese Variable definiert das Timeout der Verbindungen, die nicht das TCP-, UDP- oder ICMP-Protokoll verwenden. Default: 600 Sekunden.

19.4.4 ip_conntrack_icmp_timeout Diese Variable definiert das Timeout von ICMP-Verbindungen wie Echo-Request/ Echo-Reply. Default: 30 Sekunden.

19.4.5 ip_conntrack_log_invalid Mit diesem Parameter können Sie die Protokollierung ungültiger Pakete für ein be- stimmtes Protokoll anschalten. Hierzu müssen Sie die Nummer des Protokolls in diese Variable schreiben (TCP=6, siehe /etc/protocols). Um diese Funktion abzustel- len, nutzen Sie das Protokoll 255. Default: 0.

407 open source library iragbn i il aeei ed ihugngflse enmse,bevor müssen, sein 3. geflossen Sie Default: Richtungen können wünschen, beide darf. Verhalten werden in aktiv das Pakete TCP-Window-Tracking Sie das viele Sie Wenn Setzen wie abschalten. 0. angeben, Variable auf dieser hier einfach mit Sie Variable können diese Das dazu Paket. neues ein als Paket edn i ihnctgn ndnTPSadr atn ande notwendig dies kann halten, 0. TCP-Standard Default: den an ganz nicht sein. sich die wenden, eal:6 Sekunden. 60 Default: Sekunden. 10 Default: der fängt wurde, erreicht Wert dieser ohne TCP-Paketen Sobald wiederholten Empfängers. von ip_conntrack_timeout_max_retrans Anzahl des maximale die Bestätigung definiert Wert Dieser ip_conntrack_tcp_max_retrans 19.4.9 ein auch Linux-Kernel der akzeptiert wurde, erwähnt mehrfach bereits Wie ip_conntrack_tcp_loose 19.4.8 TCP- der und Sequenznummern außer der Pakete Überwachung alle die für Sie Windows schalten Hiermit ip_conntrack_tcp_be_liberal Abschnitt den 19.4.7 und anpassen Hashsize online die Wert auch diesen dann können das Sie Sie über sollten überwachen. Verbindungen Jedoch nicht Mehr Tracking Verbindungstabelle. ändern. Connection Ihrer das Größe die kann definiert Variable Diese ip_conntrack_max 19.4.6 408 CLOSE_WAIT Zustand dem in Abschnitt Verbindung (siehe eine verbleibt lange wie definiert, Variable Diese ip_conntrack_tcp_timeout_close_wait 19.4.11 ver- CLOSE Zustand dem in Verbindung eine Abschnitt lange (siehe bleibt wie definiert, Variable Diese ip_conntrack_tcp_timeout_close 19.4.10 eal:3. Default: ip_conntrack Kremdl(ih Abschnitt (siehe -Kernelmodul 19.4.14 19.4.14 nz zählen. zu an ). ). RST Pktna.Wn i ezekeäever- Netzwerkgeräte Sie Wenn ab. -Paketen 19.2 lesen. ) 9Cneto Tracking Connection 19 ACK - 19.4 /proc-Variablen library

19.4.12 ip_conntrack_tcp_timeout_established Diese Variable definiert, wie lange eine Verbindung in dem Zustand ESTABLISHED verbleibt (siehe Abschnitt 19.4.14). open source Default: 432000 Sekunden; das entspricht 5 Tagen.

19.4.13 ip_conntrack_tcp_timeout_fin_wait Diese Variable definiert, wie lange eine Verbindung in dem Zustand FIN_WAIT verbleibt (siehe Abschnitt 19.4.14). Default: 120 Sekunden. ip_conntrack_tcp_timeout_last_ack Diese Variable definiert, wie lange eine Verbindung in dem Zustand LAST_ACK verbleibt (siehe Abschnitt 19.4.14). Default: 30 Sekunden. ip_conntrack_tcp_timeout_max_retrans Der Timeout für die Verbindung in der Verbindungstabelle, wenn nur Paketwie- derholungen ohne Bestätigung des Empfängers beobachtet wurden. Default: 300 Sekunden. ip_conntrack_tcp_timeout_syn_recv Diese Variable definiert, wie lange eine Verbindung in dem Zustand SYN_RECV verbleibt (siehe Abschnitt 19.4.14). Default: 60 Sekunden. ip_conntrack_tcp_timeout_syn_sent Diese Variable definiert, wie lange eine Verbindung in dem Zustand SYN_SENT verbleibt (siehe Abschnitt 19.4.14). Default: 120 Sekunden. ip_conntrack_tcp_timeout_time_wait Diese Variable definiert, wie lange eine Verbindung in dem Zustand TIME_WAIT verbleibt (siehe Abschnitt 19.4.14). Default: 120 Sekunden.

409 open source library uc e bafdsTmot.Kmte ohrzmAlu ie anderen eines Ablauf zum vorher entfernt! es Tabelle der Kommt aus erfolgen Timeouts. Verbindung CLOSE die des nach wird Paket Timeouts, LAST_ACK entsprechende Ablauf von das den Übergänge durch durch letzten wird die Zustände Lediglich verschiedenen ausgelöst. der Übergang Der Verbindung die wechselt TIME_WAIT Zustands des Ablauf dem Nach CLOSE: 8. Verbindung die wechselt LAST_ACK Zustands des Ablauf Nach TIME_WAIT: 7. .ETBIHD a rtePktdsTPHnsae,dserste das TCP-Handshakes, des Paket dritte Das ESTABLISHED: 3. .COEWI:Dszweite Das CLOSE_WAIT: 5. .LS_C:Dsletzte Das LAST_ACK: 6. .SNRC:Das SYN-RECV: 2. .SNSN:Enerstes Ein SYN-SENT: 1. Zu- folgenden die TCP-Verbindungen für stände: unterscheidet Tracking Connection Das TCP-Zustände 19.4.14 Pakete Sekunden. 180 bereits Default: die für wurden. UDP-Verbindung, erkannt einer Richtungen beiden Timeout in den Sie definieren Hiermit ip_conntrack_udp_timeout_stream Pa- Sekunden. nicht 30 noch Default: die wurden. erkannt für Richtungen UDP-Verbindung, beiden einer in Timeout kete den Sie definieren Hiermit ip_conntrack_udp_timeout 410 .FNWI:Dserste Das FIN_WAIT: 4. ndnZsadCOE mscezseln ase ih u oflk mit Konflikt zum nicht es dass sicherzustellen, kann. um kommen Verbindungen CLOSE, neuen Zustand den in eine in Übertragung akzeptieren. zu der noch während wurden, die gebracht Pakete, Reihenfolge um falsche TIME_WAIT, Zustand den in erkannt. Handshakes. baut. ud erkannt. wurde SYN/ACK FIN SYN Pktwreeknt isitdszet ae e TCP- des Paket zweite das ist Dies erkannt. wurde -Paket ACK PKTwreeknt i ebnugwreabge- wurde Verbindung Die erkannt. wurde -PAKET Pktwreerkannt. wurde -Paket PktasAtotafdszweite das auf Antwort als -Paket FIN Pktwreerkannt. wurde -Paket 9Cneto Tracking Connection 19 FIN Pktwurde -Paket ACK -Paket, ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library drs rnlto.DeeAfaewrebrisi Abschnitt in bereits möchtesiehieraberkurzwiederholen. wurde Aufgabe Diese Translation. Address dung hi OTOTN plc CET13 akt,924bytes) 94214 packets, 1934 ACCEPT (policy POSTROUTING Chain bytes) 94415 packets, 1937 ACCEPT (policy OUTPUT Chain müssen modifizieren, # angeben: zu spezifisch Ketten Tabelle enthaltenen die Iptables-Befehl die beim oder immer Sie anzuzeigen Tabelle die Um Ketten. drei hat NAT-Tabelle Die 20.1: Abbildung Ketten: drei über Ketten verfügt ihre NAT-Tabelle und NAT-Tabelle Die Die mit Ketten drei 20.1 sich der in NAT-Tabelle, eigene eine befinden: über Hier- Aufgaben durchführen. unterschiedlichen Kernel Translation der Address Network verfügt eine für auch Sie können Iptables Mit 20 ksbtstre rtoti u oredestination destination source out source in opt out prot target in bytes opt pkts prot target bytes pkts pals-n tnat -t -vnL iptables 20.1 PREROUTING Default Policy .Jd isrde etnhten eodr ugb e e Network der bei Aufgabe besondere eine hat Ketten drei dieser Jede ). i NAT-Tabelle Die Default Policy ROUTING INPUT PREROUTING Default Policy FORWARD Prozess Lokaler PREROUTING , OUTPUT , OUTPUT und Default Policy Default Policy OUTPUT OUTPUT POSTROUTING und 5.7 POSTROUTING POSTROUTING epohn Ich besprochen. Default Policy . (Abbil-

open source library open source library ROUTING oreNTasac ü i etnto-A igsttwerden. ZusätzlichkanninderNAT-Tabelleauchdas eingesetzt Destination-NAT ein für auch als Source-NAT Zieladresse! betrachtet »echten« der Filtertabelle mit Die Paket Zieladresse das ausgetauscht. scheinbare wieder Zieladresse also die tatsächliche nun wird neue NAT eine diesem durch Bei Filterketten. entsprechenden die e e oreNTädr i iealdeAsnearse adsi der in das Da Absenderadresse. die Firewall die ändert Source-NAT dem Bei Abbildung der chend PREROUTING OUTPUT eines Trans- Adressierung Address die Network der System Arten (NAT): das verschiedene lation zwei ändert grundsätzlich gibt Translation Es Address Pakets. Network der Bei bytes) 3364 packets, 27 ACCEPT (policy PREROUTING Chain 412 ein Für DNAT ab. verwenden: NAT Ziele des Art folgenden SNAT der die von Sie hängen können Ziele Source-NAT verfügbaren NAT-Tabelle der in Die e e etnto-A netdeFrwl i ildes.De aseti der in passiert Dies Zieladresse. die Firewall die ändert Destination-NAT Absenderadresse. dem »echten« Bei der mit Paket originale das also trachten etnto-A s u nder in nur ist Destination-NAT EinSource-NATistnurinder I I ksbtstre rtoti u oredestination source out in opt prot target bytes pkts etnto-A:He iddeZearsegeändert. Zieladresse die wird Hier Destination-NAT: geändert. Absenderadresse die wird Hier Source-NAT: e e etnto-A thndeflednZeezrVerfügung: zur Ziele folgenden die stehen , Destination-NAT dem Bei . NETMAP KtedsPktvrdrArsädrn nlsee.Ir itreenbe- Filterregeln Ihre analysieren. Adressänderung der vor Paket das -Kette Kteeflt s ihretlt asdeFlergl nder in Filterregeln die dass sichergestellt, ist erfolgt, -Kette -oderder , Achtung REDIRECT ael ih er i ael s ae uhensh schlechter sehr Paketen. ein von Zählung auch die daher oder Filterung ist die die Tabelle Verbindung für Die Ort der mehr. Pakete nicht auf- weiteren Tabelle Tabelle die die durchlaufen in Verbindung genommen, durchzuführende Verbin- die die und die erkannt, ermittelt Wurde Tracking Adressumsetzung Connection analysiert. dem von Regeln von wird ihren dung Verbindung einer und Paket ei- NAT-Ketten NAT-Ketten erste Paket den den das bei Lediglich Ta- jedes das Fall. anderen Tabellen ist der analysieren, nicht anderen der und der sehen Ketten Verbindung Ketten die ner die als Während anders bellen. arbeiten NAT-Ketten Die , OUTPUT SAME 20.1 und KtedrNTTbleuddmtvrdrAayedurch Analyse der vor damit und NAT-Tabelle der -Kette idac ootdrSn klar. Sinn der sofort auch wird TPROXY PREROUTING .DieZiele POSTROUTING -undder KtedrNTTbleelut Ein erlaubt. NAT-Tabelle der -Kette NETMAP CONNMARK und Tre igsttwerden. eingesetzt -Target OUTPUT SAME MASQUERADE Kteelut Entspre- erlaubt. -Kette önnswh ü ein für sowohl können 0DeNAT-Tabelle Die 20 , FORWARD NETMAP -undder , SAME BALANCE POST- und , 20.2 Source-NAT library

Tipp

Linux ist beim NAT in beiden Richtungen sehr intelligent. Sie müs- open source sen mit Ihren Regeln immer nur das NAT in der Richtung des Verbindungsaufbaus definieren. Die Rückrichtung wird dann au- tomatisch vom Kernel richtig gemacht. Bei einem SNAT müssen Sie also nur eine Regel definieren, die die Absenderadresse austauscht. Dass bei den Antwortpaketen der Verbindung dann die Zieladresse ausgetauscht werden muss, damit das Paket den Client erreicht, weiß das System dann automatisch. Bei dem DNAT ist es genauso. Sie müssen lediglich eine Regel definieren, mit der das Ziel ausge- tauscht wird. Bei den Antwortpaketen wird dann automatisch der Absender wiederhergestellt.

20.2 Source-NAT

Das Source-NAT ändert die Absenderadresse eines Pakets. Das bedeutet, dass das Paket anschließend eine andere Absenderadresse besitzt. Dies ist häufig bei der An- bindung von Netzwerken an das Internet erforderlich. Lokale Netzwerke werden üblicherweise unter Zuhilfenahme von so genannten privaten IP-Adressen aufge- baut. Diese Adressen werden in dem RFC 1918 definiert. Es handelt sich um die folgenden Adressbereiche: I 10.0.0.0 – 10.255.255.255 I 172.16.0.0 – 172.31.255.255 I 192.168.0.0 – 192.168.255.255 Sobald Sie Ihre eigenen Netze mit diesen IP-Adressen aufbauen, erzeugen Sie bei ei- ner Anbindung an das Internet keinen IP-Adresskonflikt, da diese nicht im Internet genutzt werden. Für kleine Netze ist der Bereich 192.168.0.0/24 üblich. Wenn Sie Ihr Netzwerk mit diesen privaten IP-Adressen aufbauen, müssen Sie je- doch am Übergang in das Internet die IP-Adressen umsetzen (Network Address Translation). Tun Sie das nicht, erhalten Sie auf Ihre Anfragen keine Antwort, denn der Client sendet das Paket mit seiner privaten Absenderadresse über seinen Router in das Internet, wo es zum Beispiel einen Webserver erreicht. Der Webserver beant- wortet das Paket und schickt sein Antwortpaket an die private Adresse des Clients. Da diese Adressen jedoch im Internet verboten sind, verfügen die Internet-Router auch nicht über die notwendigen Routen. Das Paket wird mit der Fehlermeldung »Ziel nicht erreichbar« (Destination unreachable) verworfen.

413 open source library oePrswre uc neehh ot ugtuct a önnSedurch Sie können genattet. Das modifizieren. Bereich ausgetauscht. teilweise diesem Ports Ports natten. in hohe der zu wieder Angaben andere 512 Ports spezifische < durch auf Ports werden andere werden Ports auf 1023 Hohe 512 Zu- und < Port 512 unterschiedlich. Ports der zwischen Kernel, jedoch Portbereiche Ports der Ist versucht die beizubehalten. so Quellport Iptables belegt, den bereits immer behandelt Kernel, Ports der versucht der nächst Wahl der zuordnen Bei wieder Clients sondern richtigen IP-Adresse, den die Antwortpakete können. nur die zu nicht um Bei Quellport, Firewall beizu- Verbindungstabelle. den die Source-Port auch ihrer verändert den in Verbindung Information Verbindung zweiten ver- diese ersten der Source-Ports speichert der Firewall identische bei Die Clients Firewall aus behalten. Source-Port. zwei Kombination die die Wenn den eindeutige versucht für zu. über eine wenden, auch -Port Verbindung erfolgt Firewall und genatteten Dies die jeder Source-IP-Adresse sich muss. weist Quellport SNAT Firewall merken der einem Die auch Rückweg bei sondern den da Quell-IP-Adresse, notwendig, Antwortpakete die ist nur Dies nicht geändert. wird Address Translation). NAPT (Network Port dem NAT and Bei Address ein (Network um NAPT mehr Clients ein mehreren nicht um von sondern eigentlich Source-NAT Translation), sich das es für handelt IP-Adresse offizielle verwenden, eine und nur landen Sie Router Sobald beim erreichen. nicht Client einzutragen, Webservers den Adresse des nie andere damit Antwortpakete irgendeine selbst. die hier Routers würden möglich, wieder des jedoch auch Internet-Adresse Router es offizielle beim wäre die auch Grundsätzlich hier Antworten man die im verwendet Ort Router Damit deren ankommen, der austauschen. IP-Adresse, kann ist, offizielle Dabei eine bekannt gegen entwickelt. Internet IP-Adresse Source-NAT private das dessen Clients nun des wurde Zweck diesen Für 414 Hinweis Tipp el e ulpr l ifrnirnsrtru ü i Antworten. Verbindungen die zwei für von Differenzierungskriterium als NAT und Quellport dem Pro- der IPsec-Protokolle Bei fehlt Diese Ports. sind. warum keine behandeln besitzen zu Grund, tokolle SNAT der mit schwer auch so GRE-Protokolle übrigens ist Dies wird. heute angesehen aber Sicherheitslücke unterbinden als kann es Router verfügt, da Viele Route Source-Routing, er- weitersenden. eine das Ziel Paket über sein das nicht Paket so Router das er der die wenn über Selbst Router, Dabei reicht. das Routing. die Source Absender über ein der Pakete erlaubt definiert derartige IP-Protokoll Das dennoch routen. Sie Internet können Umständen Unter 0DeNAT-Tabelle Die 20 20.3 Destination-NAT library

20.3 Destination-NAT

Das Destination-NAT ist seltener anzutreffen, aber mindestens genauso interessant open source wie das Source-NAT. Während ein Source-NAT heute allgemein üblich und allen Administratoren bekannt ist, sind das Destination-NAT und die damit verbundenen Möglichkeiten häufig unbekannt. Das Destination-NAT wird häufig auch als Port- Forwarding bezeichnet. Bei einem Destination-NAT wird die Zieladresse eines Pakets modifiziert. Damit können Sie ein Paket, das eigentlich an die Firewall gerichtet war, auf einen anderen Rechner weiterleiten. So können Sie zum Beispiel sämtliche Anfragen auf dem TCP- Port 80 Ihrer Firewall nach innen auf einen Webserver weiterleiten. Der Client im Internet merkt nicht, dass er in Wirklichkeit nicht mit der Firewall, sondern mit dem privaten Webserver spricht. So können Sie Dienste, die Sie nicht direkt auf der Firewall anbieten wollen, dennoch von außen erreichbar anbieten! Sie können ein Destination-NAT in der PREROUTING-undinderOUTPUT-Kette durchfüh- ren. In der PREROUTING-Kette betrifft das DNAT sämtliche Pakete, die den Rechner von außen erreichen und entweder an ihn lokal gerichtet sind oder weitergeleitet wer- den müssen. In der OUTPUT-Kette betrifft das DNAT nur die lokal erzeugten Pakete.

20.4 MASQUERADE

Häufig möchten Sie ein SNAT durchführen, aber kennen beim Schreiben des Firewall-Skripts noch nicht die IP-Adresse, die Sie später verwenden möchten, da diese sich vielleicht auch dynamisch ändert. Das ist zum Beispiel bei den meis- ten Internet Service Providern (ISPs) der Fall, die Ihnen die Einwahl per ISDN oder ADSL erlauben. Die IP-Adresse, die der ISP Ihnen zuweist, ändert sich von Einwahl zu Einwahl. Viele Provider führen auch nach einer bestimmten Zeit eine Zwangstrennung durch, um Sie so zu einer neuen Einwahl und einer neuen IP- Adresse zu zwingen. Da Sie jedoch beim Target SNAT die IP-Adresse fest definieren müssen, ist dieses Target für diese Zwecke nicht geeignet. Hier können Sie das Target MASQUERADE verwenden. Dieses Target verwendet für das SNAT immer die gerade auf der entsprechenden Schnittstelle aktive Adresse. Dazu prüft das MAS- QUERADE-Target, über welche Netzwerkkarte das Paket den Rechner verlässt, und verwendet deren Adresse für das NAT.

Hinweis Wenn Sie die Netzwerkkarte herunterfahren, werden automatisch alle Verbindungen verworfen, die über diese Netzwerkkarte mas- kiert wurden. Das ist sinnvoll, da bei einer neuen Einwahl eine neue IP-Adresse zu verwenden ist. Daher sollten Sie, wenn Sie eine sta- tische IP-Adresse verwenden, immer SNAT dem MASQUERADE vorziehen, auch wenn die Regel ein wenig umständlicher in der Definition ist.

415 open source library e nfrtnNt u h ezefle.HefrbntgnSedn ein dann Sie benötigen aus Hierfür Zugriff eine erfolgen. ein Netz durch auch Ihr aber Absenderadresse natür- auf kann benötigt Genauso Netz die Netz 172.17.0.0/24-Netz. entfernten Netz entfernte das dem in Das Ihrem Route ersetzt. eine aus 172.17.0.0/24 lich Bereich Zugriff 172.17.0.0/24 dem jedem --to aus Adresse bei NETMAP wird -j 172.16.0.0/16 Nun -d POSTROUTING -A nat -t iptables und statisch dies Sie Netzwerk Wenn IP- dem anderes möchten. eine mit ein austauschen genau durch nachvollziehbar Netz auf Netz anderen Zugriff Ihrem einem den in aus IP-Adresse für jede Adresse Sie Netz- Internet) dass ganzen das auch von vor, Beispiel NAT sich (zum das Sie Ihnen Stellen erleichtert 1:1. Patch-O-Matic werken dem aus Target NETMAP Dieses 20.5 wurden. aufgebraucht Das Ports die sobald werden, maskiert Verbindung weitere Das 416 lösen. Adresskonflikte kann NETMAP 20.2: Abbildung der in Destination-NAT als s i e ogne el erenahmöglich: Dies einfach austauschen. sehr andere Zeile durch folgenden IP-Adressen ein der Ihre (Abbildung mit bereits daher werden ist Sie allerdings verwendet müssen Netz Zugriff IP-Adressen den dieselben entfernte Für dem das in kennt Netz, Nun weiteres Adress- werden. unterschiedliche IP-Adressen da verwendet die Problem, bereiche verwendet kein hier Netz verwen- besteht entfernte Netz Grundsätzlich Ihr Das 172.16.0.0/16. möchten. 192.168.0.0/24. zusammenlegen IP-Adressen Netze zwei die Sie det dass vor, sich Sie Stellen vereinfachen. i i PArse ewne öhe.De önnSemtdem mit Sie können Dies möchten. verwenden IP-Adressen Sie wie otal(ih bn budvredtnrPrsi e oggbnnBereich vorgegebenen dem in Ports üblichen nur seiner verwendet von und Kernel ( der ab weicht oben) Dann (siehe können. Portwahl vorgeben NAPT das für Ports izee,afdssc e oteec eih (z.B. bezieht Portbereich der sich das auf zifizieren, -oprsport[-port] --to-ports MASQUERADE MASQUERADE Tre annri der in nur kann -Target Tre a ieenieOto,mtdrSedez verwendenden zu die Sie der mit Option, einzige eine hat -Target 172.16.0.0/16 Neues Netz Neues .Dn üsnSei e ee brac a rtkl spe- Protokoll das auch aber Regel der in Sie müssen Dann ). Für den Zugriff werden die IP-Adressen die ZugriffFür den werden SNAT PREROUTING 172.17.0.0/16 genutzt 172.17.0.0/16 Tre öe öhe,bntgnSes il Regeln, viele so Sie benötigen möchten, lösen -Target NETMAP -Kette. POSTROUTING Ktevredtwerden. verwendet -Kette 192.168.0.0/24 ptcp -p 172.16.0.0/16 .Ntrihkn keine kann Natürlich ). 0DeNAT-Tabelle Die 20 NETMAP -Target NETMAP 20.2 ). 20.6 SNAT library

Sie definieren dies genauso einfach: iptables -t nat -A PREROUTING -d 172.17.0.0/24 -j NETMAP --to 192.168.0.0/24 open source

Dieses Target wird auch in dem Patch-O-Matic-Kapitel besprochen (siehe Abschnitt 18.3.4).

20.6 SNAT

Dieses Target ist das klassische Source-NAT-Target. Hiermit können Sie die Absen- der-IP-Adresse durch eine andere ersetzen. Als Ersatz können Sie auch einen Bereich von IP-Adressen angeben. Wenn Sie mehrere IP-Adressen zur Auswahl angeben, führt das SNAT-Target ein simples Round-Robin durch. Um die IP-Adressen anzugeben, verwenden Sie die Option --to-source .Siekön- nen auch einen Bereich angeben: --to-source . Um Tipp-Arbeit zu sparen, kön- nenSiedieOptionauchmit--to abkürzen.

Tipp Bis Kernel-Version 2.6.10 des Iptables-Befehls können Sie auch die Option mehrfach verwenden, um nicht zusammenhängende IP-Adressen für das SNAT zu definieren.

Optional können Sie auch noch einen Port-Bereich angeben und damit den Kernel anweisen, beim Source-NAT nur Ports aus diesem Bereich zu verwenden.

Tipp Die Verwendung von mehreren IP-Adressen zum Source-NAT ist in Umgebungen mit besonders vielen gleichzeitigen Verbindungen sinnvoll. Da der Kernel den Port als Unterscheidungskriterium zwi- schen den verschiedenen genatteten Verbindungen verwendet und maximal nur 65.536 Ports zur Verfügung stehen, können maximal pro IP-Adresse gleichzeitig nur diese Anzahl an Verbindungen ge- nattet werden. Bei zwei IP-Adressen verdoppelt sich die Anzahl der möglichen Verbindungen bereits.

20.7 SAME

Dieses Target ähnelt dem SNAT-unddemDNAT-Target. Wenn Sie jedoch bei diesen Targets einen Bereich von IP-Adressen für das NAT angeben, führen die Targets ein Round-Robin durch. Das bedeutet, dass neue Verbindungen nacheinander jeweils

417 open source library e ü a A ewne id anmse i breeflsdsProtokoll das ebenfalls aber Sie müssen Dann definieren, Port-Bereich wird. oder verwendet Port NAT angeben: einen der das auch Destination-NAT aber für beim können wird der Sie angeben, modifiziert. Port-Bereich nie oder Port Port keinen Sie Wenn angeben. mehrfach auch Option ebnSre urit ü e urf u ie nee evrdr e Kernel der den- darf auf Server auch anderen Option Client einen Die auf der wählen. Zugriff wenn IP-Adresse den andere IP-Adresse, Für eine dieselbe zugreift. dann Server nur selben Kernel der wählt eas i bei wie genauso leZgif u leSre me isleIP-Adresse. dieselbe für immer Source-NAT Server beim alle erhält auf Client Zugriffe Der alle bleibt. unberücksichtigt Ziel-IP-Adresse die idhugfrenPr-owrigi i nee ezek(u esileine der Beispiel in Funktion (zum gültig Diese Netzwerk nur ändern. anderes ist Pakets ein Target in des Dieses Ziel-IP- Port-Forwarding verwendet. Zielport die DMZ) ein den Sie für auch können häufig und wird Hiermit Pakets Destination-NAT-Target. eines klassische Adresse das ist Dies DNAT 20.8 1.1.1.1-1.1.1.5 Target --nodst --to das 1.1.1.1-1.1.1.5 SAME Wird --to -j SAME PREROUTING -j -A POSTROUTING nat -A -t nat iptables -t iptables dem mit Sie können Dies einige wird. für genattet jedoch IP-Adresse eines ist dieselbe Verbindung aufgebraucht auf jede Verfahren dass Clients IP-Adressen Dieses verlangen, alle Anwendungen wird. Diese begonnen sobald kritisch. Anwendungen vorne dass, von und wieder erhalten wurden, IP-Adresse andere eine 418 in nur auch es ist Daher durch. Destination-NAT spezielles der ein führt Target Dieses REDIRECT 20.9 auch führt definieren, 172.16.0.5:3128 IP-Adressen --to von DNAT Bereich -j einen 8080 Sie Wenn --dport tcp -p PREROUTING -A iptables on-oi durch. Round-Robin i eeZe-PArsegbnSemtdrOption der mit Sie geben Ziel-IP-Adresse neue Die NAT-Tabelle. der Kette nder in pinac ifc als einfach auch Option i etnto-oe i oreNTmce öhe.DeVredn s sehr ist Verwendung Die möchten. machen Beispiele: Zwei Source-NAT einfach. ein oder Destination- ein PREROUTING PREROUTING -und l uhi der in auch als - SNAT SAME OUTPUT uhennBrihagbn( angeben Bereich einen auch nder in Kteelut slie i aeea ielkl IP-Adresse lokale eine an Pakete die leitet Es erlaubt. -Kette --to SAME büzn i enlVrin261 önnSedie Sie können 2.6.10 Kernel-Version Bis abkürzen. POSTROUTING Tre rece.Sekne issTre sowohl Target dieses können Sie erreichen. -Target POSTROUTING KtefrdsSuc-A igstt so eingesetzt, Source-NAT das für -Kette Kteawne,j ahe,o Sie ob nachdem, je anwenden, -Kette --nodst -odsiainip --to-destination og e e aldfr dass dafür, Wahl der bei sorgt -odsiainip-ip --to-destination PREROUTING -undinder 0DeNAT-Tabelle Die 20 DNAT n i können Sie an. wie )unddie SNAT OUTPUT ein - 20.10 TPROXY library um. Dabei verwendet das Target die lokale IP-Adresse der Netzwerkkarte, über die das Paket die Firewall erreicht hat. Lokal erzeugte Pakete werden an 127.0.0.1 umge-

leitet. Diese Funktion kann für einen semi-transparenten Proxy verwendet werden. open source Der Client versucht, auf einen Server im Internet zuzugreifen. Die Firewall fängt die Verbindung ab und leitet sie an einen lokalen Proxy weiter, der an Stelle des Clients die Verbindung aufbaut. Der Client bemerkt die Umleitung nicht. Es handelt sich jedoch nur um einen semi-transparenten Proxy, da der Proxy die Verbindung zum Server nicht mit der IP-Adresse des Clients, sondern mit seiner eigenen IP-Adresse aufbaut. Um alle HTTP-Anfragen an einen transparenten Squid-Proxy weiterzulei- ten, können Sie die folgende Iptables-Befehlszeile verwenden: iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT --to-ports 3128

Wenn Sie beim REDIRECT-Target keinen Port angeben, wird der Port nicht modifiziert. Sie können Squid als semi-transparenten Proxy einsetzen. Hierfür müssen Sie bei Squid die folgenden Parameter in der Konfigurationsdatei setzen: http_port 3128 httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on

20.10 TPROXY

Dieses Target (siehe auch Abschnitt 18.4.25) erlaubt den Aufbau echt transparenter Proxys. Dabei kann der Proxy die Verbindung zum echten Server mit der Absender- IP-Adresse des echten Clients aufbauen. Dieses Target aus dem Patch-O-Matic be- nötigt daher auch noch zusätzliche Tabellen, in denen es seine Informationen spei- chert, und angepasste Proxys wie bei der ZORP-Firewall, die von der Firma Balabit entwickelt wird (http://www.balabit.com). Diese Firma hat auch die Entwicklung des TPROXY-Targets vorangetrieben.

20.11 NAT-Helfermodule

Viele Protokolle sind so kompliziert, dass ein bloßer Austausch der Absender- oder Ziel-IP-Adresse für die Funktion des Protokolls nicht ausreicht. Zum einen kann es sich dabei um Protokolle wie FTP handeln, die weitere Verbindungen dynamisch öffnen und schließen. Weitere Protokolle, die dieses tun, sind: Point-to-Point Tun- neling Protocol (PPTP), Internet Relay Chat (IRC), Advanced Maryland Automatic Network Disc Archiver (Amanda), Trivial FTP (TFTP), DirectX8, CuSeeMe, H.323, Microsoft Streaming Media Services (MMS) etc. Weitere Probleme können auftreten, wenn die IP-Adresse zwar im IP-Header vom NAT getauscht wird, aber zusätzlich noch in dem Paket auftaucht. Auch hier gibt es

419 open source library innüe i ölce pinnehle i menahtnmtdem mit einfachsten am Sie erhalten Abschnitt Optionen siehe möglichen Verhal- FTP, das die Sie Beispiel über denen (zum tionen kön- mit können Modulen angeben, einigen modifizieren Optionen Bei weitere ten Lade-Zeitpunkt Module. zum benötigten Sie weiteren nen die auch automatisch lädt a ae isrMdl s erenahudefltsnvlewiez Beginn zu sinnvollerweise erfolgt und einfach sehr ist Firewall-Skripts: Module Ihres dieser Laden Das i ismZe önnSeVridne akee.Dee ilutrttti der in unterstützt Optionen: Ziel folgenden Dieses beiden markieren. die Verbindungen NAT-Tabelle Sie können Ziel diesem Mit CONNMARK-Target 20.12 der erkennt besitzen, Abhängigkeiten Module die Wenn ip_nat_ftp modprobe dem mit dann Sie erwartete können als Diese eintragen. und Zustand Tabelle erkennen die in Verbindungen (Expectation) beziehungs- neue Verbindung auch austauschen ausgehandelte sondern IP-Adressen Ker- betrachten, vorhandene dynamisch Pakete zusätzliche dort weise der und Sie IP-Header analysieren müssen die Inhalt nur den werden, nicht gehandhabt die laden, richtig nelmodule Protokolle Simple das diese ist Damit Vertreter klassischer Ein (SNMP). ist. Protocol Fall Management der Network das denen bei Protokolle, einige 420 Befehl. I I ak nee,wre u is ismodifiziert. Bits diese nur werden angeben, Maske Abschnitt -aemr -ms ] [--mask --save-mark [/] --set-mark i dem mit RELATED CONNMARK 21.2.7 erlauben. u i ebnug is önnSei e Mangle-Tabelle der in Sie können Diese Verbindung. die auf ) Ze wiederherstellen. -Ziel iri brrgnSeen aemrirn (siehe Paketmarkierung eine Sie übertragen Hiermit : iri eznSedeMrirn.Wn i eine Sie Wenn Markierung. die Sie setzen Hiermit : modprobe 32.10 Bfh is und diese -Befehl 0DeNAT-Tabelle Die 20 .DeInforma- Die ). modinfo - ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library brbrisa nee tlevorgestellt. Stelle anderer an bereits aber is agt öheihnni ismKptlvrtle.Ntrihkne Sie können Natürlich vorstellen. Kapitel diesem in nun auch ich möchte kann. werden Targets genutzt Diese Optionen unterschiedlichen mit Mangle-Tabelle der in auch ethaben. legt i üsnmtdmKommando dem \ mit müssen 22 Sie --dport tcp -p POSTROUTING -A mangle -t $IPTABLES ge- Option Hierzu zusätzlichen zuweisen. direkt der Klasse Sie mit bestimmten können Sie einer ben Ziel Paket diesem ein Mit Firewall-Markierung (CBQ). ohne Queueing Class-based unterstützt CLASSIFYLinux 21.2.1 Hier- sind. erlaubt Mangle-Tabelle um: der TTL sich in es nur die handelt (Targets), bei Aktionen Mangle-Tabelle einige der gibt Aktionen Es 21.2 die Sie dass Paket das bedeutet, Filter-Regeln Das die und durchlaufen. NAT-Regeln verarbeiten. Filter die bevor und können, entsprechenden NAT in modifizieren ihren Pakete Tabellen OUTPUT vor den immer und in werden PREROUTING Ketten Brüdern FORWARD Diese INPUT, Ketten ein- Ketten hinzu. Bis beiden die POSTROUTING auf. noch und die auch Ketten kamen fünf nur Anschließend oder Mangle-Tabelle. es der zwei gab Mangle-Tabelle die 2.4.17 weist schließlich Mangle-Tabelle Kernel der Ihrem Ketten nach Die Je 21.1 das oder vornehmen markieren Pakete Paket-Modifikationen ändern, abschalten. spezielle Type-of-Service-Bits ECN-Bit die Sie hier wo können Ort, Sie können. der ist Mangle-Tabelle Die 21 jCASF -e-ls 1:10 --set-class CLASSIFY -j und ACCEPT XOR ae s a Target das ist Dabei . , DROP i Mangle-Tabelle Die , REJECT CLASSIFY t.i e ageTblente.DeeTreshb ich habe Targets Diese nutzen. Mangle-Tabelle der in etc. , CONNMARK CONNMARK tc aülc uhen nsrced lseange- Klasse entsprechende eine auch natürlich --set-class , i odral ae ooli e A-als NAT- der in sowohl es da Sonderfall, ein DSCP , ECN i ao:io-lsean: Major:Minor-Klasse die , IPMARK , IPV4OPTSSTRIP , MARK , ROUTE , TOS ,

open source library open source library ndrMnl-ael verwenden. Mangle-Tabelle der in i omnkto i iie ilnnctfntoir.Dn önnSefür Sie können Dann funktioniert. lassen: nicht dass entfernen ECN-Bits fest, Zielen die wahrscheinlich Ziele einigen Sie diese mit stellen möchten, Kommunikation verwenden zur die ECN bis dennoch TCP-Header Sie Nmap Wenn und wie IP- Werkzeugen die von im Pakete, lediglich und Bits wurden. Firewalls waren verwendet verwendeten reserviert moderne 3168 hier einige RFC des noch die Definition auch da und verwenden, alte ECN Wahrscheinlichkeit viele die auftritt. verwerfen nicht ist Leider gar So erst und Verstopfung reagieren. die erkennen dass Sendeleistung Auftreten groß, der sehr deren Reduktion vor eine ECN Verbindung durch beide der be- wenn 3168 Kommunikationspartner, Verstopfungen RFC zwei dem unterstützen, in können die Hiermit Methode, wurde. neue eine schrieben ist Notification Congestion Explicit Die ECN 21.2.4 Verfügung: zur Optionen zwei Ihnen Werte Paketen stehen Diese von Hierfür Priorität beschrieben. die um 2474 verwendet, RFC eines Switches festzulegen. und in ToS-Header Routern wird im von häufig Diffserv-Class-Point-Bits DSCP-Feld werden die Dieses Sie setzen. können IP-Pakets --restore-mark Target 80 diesem CONNMARK --set-mark Mit DSCP -j CONNMARK 80 -j --mark 80 connmark 21.2.3 --dport -m tcp FORWARD -p -A PREROUTING mangle -A -t nat iptables -t iptables dasselbe nicht ist Dies dem markieren. mit Pakets Verbindung eines eine Markierung die Sie wie können Target diesem Mit CONNMARK 21.2.2 422 den in Mangle-Tabelle auf. der Abschnitt in in Da werden. bereits darf angewendet es Target POSTROUTING-Ketten und entsprechend Dieses FORWARD- Pakete markieren. PREROUTING-, automatisch zu es, erlaubt IP-Adresse Patch-O-Matic --ecn-tcp-remove ihrer dem ECN aus Target -j Dieses IPMARK $ECN_BLACKHOLE -d tcp 21.2.5 -p PREROUTING -A mangle -t iptables i enc i akeugafdsPktüetae öhe,kne i a mit das Sie können möchten, übertragen Paket Option das der auf Markierung die dennoch Sie I I -e-spcas --set-dscp-class --set-dscp füllen. --restore-mark iri önnSedsDC-edmtenmnmrshnWert numerischen einem mit DSCP-Feld das Sie können Hiermit . 18.4.2 des iri önnSeen ifevKas auswählen. DiffServ-Klasse eine Sie können Hiermit . CONNMARK epohnwre ewieiha isrSel dar- Stelle dieser an ich verweise wurde, besprochen Treserihn is pindre i nur Sie dürfen Option Diese erreichen. -Targets MARK Tre seeAbschnitt (siehe -Target 1DeMangle-Tabelle Die 21 21.2.7 .Wenn ). 21.2 Aktionen der Mangle-Tabelle library

21.2.6 IPV4OPTSSTRIP Mit diesem Target aus dem Patch-O-Matic können Sie sämtliche IP-Optionen eines Pakets entfernen. Es erlaubt Ihnen nicht, zwischen den verschiedenen IP-Optionen open source zu unterscheiden. Daher ist die Anwendung sehr einfach: iptables -t mangle -A PREROUTING -j IPV4OPTSSTRIP

21.2.7 MARK Hiermit können Sie eine Netfilter-Markierung des Pakets vornehmen. Diese Firewall-Markierung können Sie später mit dem Test -m mark --mark wieder prü- fen oder auch in Zusammenhang mit dem iproute2-Paket nutzen. Um zum Beispiel für bestimmte Pakete eine andere Routing-Tabelle zu nutzen, können Sie die folgenden Befehle nutzen: iptables -t mangle -A PREROUTING -p tcp --dport 25 -j MARK --set-mark 25 ip route add table 25 default via 192.168.0.5 ip rule add fwmark 25 table 25

Hiermit markieren Sie alle TCP-Pakete an den Port 25 mit der entsprechenden Mar- kierung. Anschließend erzeugen Sie eine zusätzliche Routing-Tabelle mit der Num- mer 25, in der Sie ein weiteres Default-Gateway eintragen. Damit diese Routing- Tabelle auch genutzt wird, definieren Sie eine Regel, die alle Pakete mit der Markie- rung 25 über diese Tabelle routet.

21.2.8 ROUTE Mit dem ROUTE-Target aus dem Patch-O-Matic können Sie die beim MARK-Target be- schriebene Problemstellung leichter lösen, da Sie ohne zusätzliche Routing-Tabelle und Regel direkt in der Firewall-Regel ein neues Gateway für die Pakete angeben können. Die Verwendung dieses Targets wird in Abschnitt 18.4.3 genauer beschrie- ben.

21.2.9 TOS Hiermit können Sie die Type-of-Service-Bits im IP-Header modifizieren. Einige Be- triebssysteme, wie Linux, werten diese Bits aus. Hierfür verwenden Sie -j TOS --set- tos . Die zur Verfügung stehendenden Werte zeigt Ihnen der Befehl iptables -j TOS -h an:

TOS target v1.3.0 options: --set-tos value Set Type of Service field to one of the following numeric or descriptive values: Minimize-Delay 16 (0x10) Maximize-Throughput 8 (0x08) Maximize-Reliability 4 (0x04)

423 open source library esenrXRVrnpugdrhürn adee agtbrisi Abschnitt in bereits Target dieses Da mit- Pakets durchführen. des 18.4.6 XOR-Verknüpfung »Verschlüsselung« eine einer kann Patch-O-Matic tels dem aus Target Dieses XOR 21.2.11 den auf nicht selbst Firewall das Pakets, Ihre jedes Wenn TTL-Wert erhöhen. den eins Firewall um traceroute Ihrer passiert, auf Firewall Sie falscher die können Bei Target ab. diesem Targets Mit dieses Verwendung modifizieren. Endlosschleifen! hiermit der zu Sie IP-Pakets von erzeugen eines Anwendung stark TTL-Wert rät den Netfilter-Team Ihnen, Das es ermöglicht Target Dieses TTL 21.2.10 424 aldee nwr ürnwre idvnItbe uc i röugwieder Optionen: Erhöhung drei hat die Target durch Aus- Das Iptables zum von die wird Firewall, würde, gemacht. die rückgängig führen Antwort durch Antwort eine TTL-Wertes TTL-Wert dieser des jeden fall für Reduktion da Die unsichtbar, zurückkommt. Traceroute für scheinbar Firewall I I I -t-n --ttl-inc --ttl-dec --ttl-set ethinzu. Wert ecree ud,gh c irnctnhrdru ein. darauf näher nicht hier ich gehe wurde, beschrieben Bfh eget brdeTm-xeddMtelne uclst s die ist durchlässt, Time-Exceeded-Mitteilungen die aber reagiert, -Befehl iri ihnSednWr o e kule T-etab. TTL-Wert aktuellen dem von Wert den Sie fest. ziehen Wert Hiermit neuen . einen fest Sie setzen Hiermit . iri dirnSedeaggbn alzmatelnTTL- aktuellen zum Zahl angegebene die Sie addieren Hiermit . omlSrie0(0x00) 0 (0x02) Normal-Service 2 Minimize-Cost 1DeMangle-Tabelle Die 21 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library agt,denri e a-ael ewne edndürfen: werden verwendet Raw-Tabelle der in nur die Targets, UIG n i oa rege OTU)Pkt.Nbndnbie Spezial- (PRER- beiden ankommenden den Neben die Pakete. auf (OUTPUT) Zugriff erzeugten ersten Targets lokal die den und Ihnen OUTING) bietet Raw-Tabelle Die oiis i i i e Befehl dem mit Sie die Policies, agtwreae eet mPthOMtcKptlbsrce seeAbschnitt (siehe besprochen Dieses Pakets Kapitel verfolgen. Patch-O-Matic eines genau Ketten im Weg und bereits den 18.4.5 Tabellen aber genau alle wurde Testzwecken durch Target und zu Regelwerk Sie Ihr können durch Damit gegeben. Matic i ölcki e aevrogn s i dem mit ist Paketverfolgung der Möglichkeit NOTRACK ACCEPT Die -j -j 50 50 -p -p PREROUTING FORWARD -A -A raw iptables -t iptables und Ketten: zwei besitzt Raw-Tabelle Raw-Tabelle Die Die 22.1 mit die erstmalig hierbei ist ist Dies Idee Pakete. bestimmte wichtigste möglich. für Raw-Tabelle Die der Tracking können. Connection zu Tracking des Connection behandeln Umgehung vom bereits sie bevor werden, Pakete, erfasst um eingeführt, wurde Raw-Tabelle Die 22 i e rcenndrRwTbleeitetnnac i ee utn,drmit der Zustand, neuer ein auch nun existiert dem Raw-Tabelle der Erscheinen dem Mit hn ih inolit(u esilIscEP,kne i oausklammern. so Zustandsüberwa- Sie eine können IPsec-ESP), denen Beispiel bei (zum und ist Proto- möchten sinnvoll weitere nicht annehmen Auch chung unbedingt landen. Sie Zustandsüberwachung die der kolle, in ebenfalls nicht Clusters unhe.DeeFnto idzmBipe o e ct_sync-Cluster-Modul dem von Beispiel dieser von zum ist, Abschnitt der wird überflüssig (siehe von Funktion oder Ausnahmen Diese sinnlos Sie Verbindungsüberwachung ausnehmen. dass Pakete, eine gedacht, bestimmte denen dazu Sie bei können Linie Damit erster können. in definieren Verbindungsüberwachung Tabelle die ist Jedoch ACCEPT state ). NOTRACK Ts erf ednkann: werden geprüft -Test ewne.Aßre efgndeKte aülc uhüe Default- über auch natürlich Ketten die verfügen Außerdem verwenden. i Raw-Tabelle Die und 26.6 TRACE euz,dmtdeSnhoiainmlugndsFirewall- des Synchronisationsmeldungen die damit genutzt, ) önnSentrihac i igbue Targets eingebauten die auch natürlich Sie können pals- a PPEOTN DROP PREROUTING -P raw -t iptables PREROUTING UNTRACKED . und OUTPUT TRACE .Außerdemexistierenzwei Tre u e Patch-O- dem aus -Target eznkönnen. setzen NOTRACK und TRACE . DROP

open source library

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library lndsBtibsses irughrnac e ezektpluddrPaket- der und Netzwerkstapel Varia- der wesentliche auch auf gehören filter. Zugriff Hierzu schreibenden Betriebssystems. des und blen lesenden Ihnen gibt Dateisystem bidn 31 a po-aesse nhl oolIfrainnüe Prozesse Betriebssystem. über laufende Informationen das sowohl auch enthält als /proc-Dateisystem Das 23.1: Abbildung /proc in Einführung Das 23.1 ken- Flexibilität modifizieren und die dem anpassen Sie mit Paketfilter sich Wenn den Sie oder flexibel. Verhalten müssen Stack sehr den möchten, Das und ist Paketfilter. möchten Paketfilters lernen und des nen TCP/IP-Stack und mächtigen Stacks sehr dieses einen besitzt Linux 23 ecnseasac aee o (Abbildung vor Dateien auch als zeichnisse enSesc e natdes Inhalt den sich Sie diese Wenn über Zugriff (nur) schreibenden können auch werden. Betriebssystems häufig ausgelesen des Struktur und Informationen lesenden Wesentliche den anbietet. für Betriebssystems des blen /proc Dtiytmitenvrule aesse,i e e enlveeVaria- viele Kernel der dem in Dateisystem, virtuelles ein ist -Dateisystem a /proc-Dateisystem Das /proc Vrecnse nee,fidnSeswh Ver- sowohl Sie finden ansehen, -Verzeichnisses /proc Dtiytmbshfie.Dee virtuelle Dieses beschäftigen. -Dateisystem 23.1 ).

open source library open source library eudnnPoesr ndrDatei der In Prozessor. gefundenen eles önnSedeWrei e vrule)Dtinac eädr.S de- So verändern. auch Dateien (virtuellen) den Datei in die Werte finiert die Sie können Teilweise wurde. aufgerufen Kernel laufende ärn e iglut nenSenndnIhl e Datei: der Inhalt den nun Zweifelsfall. Sie im ändern diese läuft, Sie Ping deaktivieren der und Während ist prüfen aktiv funktioniert, Firewall nicht eine es ob Falls bitte, können. Sie pingen Rechner eigenen Ihren erfolgreich oroot=/dev/VolGroup00/LogVol00 ro $ i Datei Die name #blocks minor major $ zum enthält So Parameter. dieser Konfiguration Eintrag die der Betriebssystem auch Beispiel laufende teilweise das erlauben über Informationen Ein- In- und weiteren enthalten enthält Die Verzeichnisse Prozess-ID. Verzeichnisnamen und entsprechenden als der träge mit Zahl Prozesse Prozess laufenden einer den die mit über formationen über Verzeichnis Informationen Jedes stellt Verfügung. Verzeichnisse zur der Teil großer Ein 428 $ ( Ping-Befehl den Fenster eigenen einem in nun Sie Starten 0 $ i o e eresytmekntnPartitionen: erkannten Betriebssystem dem von die i önndssls erenahpüe n aholihn egnSezunächst Sie Zeigen nachvollziehen. an: und Datei prüfen der einfach Wert bedeu- sehr den 1 selbst ignoriert. von das Pakete Wert können diese Ein Sie Kernel enthalten. ist. der 1 aktiv dass nicht oder Fall, Funktion 0 diesem diese Wert in dass den tet bedeutet, kann 0 Datei von Diese Wert ignoriert. Ein diese oder reagiert Pakete 5 0750dm-4 20971520 dm-3 20971520 dm-2 4 dm-1 20971520 2031616 3 dm-0 2 75956224 253 1 253 0 253 253 253 a /proc/cmdline cat 217101 hdc1 78150712 hdc 78150744 1 0 22 22 /proc/partitions cat co"">/proc/sys/net/ipv4/icmp_echo_ignore_all > "1" echo /proc/sys/net/ipv4/icmp_echo_ignore_all cat 031hda1 hda2 104391 78043770 hda 2 78150744 1 0 3 3 3 /proc/cmdline /proc/sys/net/ipv4/icmp_echo_ignore_all /proc/cpuinfo nhl nomtoe brdeKmadzie i e der der mit Kommandozeile, die über Informationen enthält nomtoe brdnvndmBetriebssystem dem von den über Informationen /proc/partitions bdrKre u ICMP-Echo- auf Kernel der ob , ne i nomtoe über Informationen Sie finden ig127.0.0.1 ping 3Ds/proc-Dateisystem Das 23 .Sesollten Sie ). 23.2 /proc/net/ library

Nun sollte der Ping sofort aufhören. Sobald Sie die 0 wieder in die Datei schreiben, läuft der Ping weiter. Anstelle des echo-Kommandos können Sie auch den Befehl

sysctl verwenden. Dieser Befehl erwartet den Namen der Variablen etwas anders: open source

$ /sbin/sysctl net.ipv4.icmp_echo_ignore_all net.ipv4.icmp_echo_ignore_all = 1

Entfernen Sie /proc/sys/ von dem Pfad der Datei, und ersetzen Sie alle weiteren / (Schrägstrich) durch einen Punkt. Allerdings kann der Befehl auch die Schrägstri- che statt Punkte verwenden:

$ /sbin/sysctl net/ipv4/icmp_echo_ignore_all net.ipv4.icmp_echo_ignore_all = 0

Wenn Sie den Befehl nur mit dem Namen der Variablen verwenden, zeigt der Befehl nur den aktuellen Wert an. Wenn Sie den Wert ändern möchten, verwenden Sie zusätzlich die Option -w und geben den neuen Wert an:

$ /sbin/sysctl -w net/ipv4/icmp_echo_ignore_all=1 net.ipv4.icmp_echo_ignore_all = 1

Alle so durchgeführten Änderungen sind nach einem Neustart verloren und müs- sen neu gesetzt werden. Viele Distributionen verwenden hierzu inzwischen die Da- tei /etc/sysctl.conf. Sie können die Änderungen, die von der Distribution automa- tisch beim Systemstart durchgeführt werden sollen, in dieser Datei angeben:

# Kernel sysctl configuration file for Red Hat Linux # # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for more details.

# Controls IP packet forwarding net.ipv4.ip_forward = 0

# Controls source route verification net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing net.ipv4.conf.default.accept_source_route = 0

Im Folgenden werde ich die einzelnen Variablen vorstellen, die für die Konfigura- tion des Paketfilters und TCP/IP-Stacks interessant sind.

23.2 /proc/net/

Alle Einträge in diesem Verzeichnis sind lediglich lesbar. Ein Schreibzugriff ist nicht vorgesehen. Die Dateien dienen lediglich informativen Zwecken.

429 open source library eln.Sbl ieRglennnunMthoe i ee agtbntg,das dessen und benötigt, geladen, auf. Target Modul Dateien das neues diesen wird in ein (Ta- wird, taucht oder gestellt Tables Name Verfügung Match und zur neuen Modul (Ziele) einen ein Targets durch Regel (Tests), eine Matches Sobald geladenen bellen). aktuell der Namen die ednac i ae-udBt-älrfrdeVridn angezeigt. Verbindung die für Byte-Zähler und Paket- die auch werden be inolit i nsrcee aaee uvrnen ade durchaus dies da überlegen, verändern, haben genau Systems zu des sehr Parameter Leistungsfähigkeit die sich kann. entsprechenen auf jedoch negative) die wie Sie (positive ist, Auswirkungen sollten sinnvoll schreibend Fällen auch es als vielen ob lesend In sowohl Sie können. die zugreifen auf Variablen, enthält Verzeichnis Dieses /proc/sys/net/ipv4 23.3 ( Dateien drei Diese ip_tables_* 23.2.3 Expectations und angezeigt. werden Datei erkannt dieser Conntrack-Helper-Modul einem in als von Expectations die die Verbindungen, werden sind 2.6.9 Kernel Ab ip_conntrack_expect 23.2.2 ( Konfiguration entsprechender und dport=993 2.6.10 sport=56468 Kernelversion dst=217.160.128.61 Ab src=192.168.0.108 ESTABLISHED 431842 6 tcp in werden das Verbindungen sobald bekannten aufgenommen, Alle Tabelle Tracking-Tabelle. dieser Connection die ist Dies ip_conntrack 23.2.1 430 grund- Ping ein auf wird System Ihr und 1, eine reagieren. ignorieren mehr Datei (Ping) nicht diese sätzlich ICMP-Echo-Pakete in alle Sie Kernel Schreiben der soll. ob entscheidet, Variable Diese icmp_echo_ignore_all ab. Optio- Kernelversion verwendeten weniger der oder von mehr dies Sie hängt so Falls besitzen, ICMP-Protokoll. nen das betreffen Variablen Diese icmp_* 23.3.1 akt=1bts56 ASRD ak0use=1 dport=56468 mark=0 sport=993 [ASSURED] dst=192.168.0.108 bytes=5864 src=217.160.128.61 packets=51 bytes=5788 packets=79 RELATED Vridne rab werden. erlaubt -Verbindungen ip_tables_matches , ip_tables_targets ip_conntrack Mdlgldnwurde. geladen -Modul und ip_tables_names 3Ds/proc-Dateisystem Das 23 CONFIG_IP_NF_CT_ACCT=y enthalten ) ) 23.3 /proc/sys/net/ipv4 library icmp_echo_ignore_broadcasts Wenn Sie diese Variable auf den Wert 1 setzen, ignoriert der Kernel alle Echo- Request-Pakete (Ping) an die Broadcast-Adresse. Üblicherweise beantworten alle open source Linux-/Unix-Betriebssysteme einen Echo-Request an ihre Broadcast-Adresse. So können Sie sehr leicht in einem Netzwerk alle verfügbaren Unix-Systeme ermit- teln. Da aber viele Router in der Vergangenheit (und auch heute noch) derartige Broadcast-Ping-Anfragen nicht verworfen haben, konnte damit eine Verstärkung des Verkehrs erzeugt werden. Sie senden ein Ping an die Broadcast-Adresse eines Netzwerks mit 10 Unix-Rechnern und erhalten 10 Antworten zurück. Wenn Sie die Absenderadresse fälschen (IP-Spoofing), können Sie so einen anderen Rechner mit Ping-Antworten überschwemmen. Dieser Angriff trägt den Namen Smurf-Angriff. Die Netzwerke werden als Smurf Amplifier Networks bezeichnet. Auch heute gibt es noch derartige Netzwerke, deren Router die Broadcast-Pakete nicht verwerfen (http://www.powertech.no/smurf/). Um zu verhindern, dass Ihr System für diesen Angriff genutzt wird, sollten Sie die Beantwortung von Broadcast-Ping-Anfragen abschalten: sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 icmp_errors_use_inbound_ifaddr Normalerweise versendet ein Linux-System eine Fehlermeldung mit der Absender- adresse der Netzwerkkarte, über die die Fehlermeldung das System verlässt. Dies ist nicht zwingend die Netzwerkkarte, auf der die Fehlermeldung aufgetreten ist. Wird diese Option (ab 2.6.12) gesetzt, so wird die Fehlermeldung mit der Absen- deradresse der Netzwerkkarte gesendet, auf der der Fehler auftrat. Da dies die Fehlersuche stark vereinfacht, sollte diese Variable aktiviert werden. icmp_ignore_bogus_error_messages Einige Router verletzen den RFC 1122 (Requirements for Internet Hosts – Com- munication Layers) und versenden Fehlermeldungen als Antwort auf Broadcast- Mitteilungen. Normalerweise protokolliert der Kernel diese Tatsache. Wenn Sie diese Variable aktivieren, protokolliert der Kernel dies nicht mehr und kann so Ihre Protokolldateien nicht mit unnötigen Meldungen füllen. Ich empfehle die Akti- vierung dieser Option. icmp_ratelimit Um Denial-of-Service-Angriffe mit ICMP-Nachrichten zu verhindern und allgemein den Netzwerkverkehr zu reduzieren, bieten diese und die nächste Variable Ihnen die Möglichkeit, die Versendung von ICMP-Meldungen zu beschränken. In die- ser Variable definieren Sie, wie viel Jiffies der Kernel zwischen zwei bestimmten ICMP-Meldungen an einen bestimmten Rechner warten soll. Ein Jiffie entspricht auf der i386-Plattform 1/100 Sekunde. Der Default-Wert dieser Variable ist 100. Das bedeutet, dass maximal einmal pro Sekunde eine bestimmte IMCP-Nachricht an denselben Rechner versendet wird. Ein Wert von 0 schaltet dieses Verhalten ab.

431 open source library utcs-rpe ewne.DrKre efg brze aibe,dedas die Variablen, zwei über beeinflussen. von verfügt Protokolls dieses Verwaltung Kernel Verhalten die Der für verwendet. wird Multicast-Gruppen (IGMP) Internet-Group-Management-Protokoll Das igmp_* 23.3.2 Reply Mask Request Address Mask I Address Reply H Info Request G Info Reply F Timestamp Request E * Timestamp Problem D * Parameter Exceeded C Time Request B Echo 8 * Redirect Quench 5 * Source Unreachable 4 Destination definiert 3 Nicht definiert 2 Nicht Reply 1 Echo 0 IHGFEDCBA9876543210 (6168) 0000001100000011000 betrifft. Default: Rate-Limiting das Bits: Bitmaske: einer ICMP-Nachrichten Variable diese welche sich bedient definiert, Hierzu Variable Diese icmp_ratemask 432 werden gesetzt Multicast-Source-Filter viele wenigen dürfen. wie von definiert, noch Variable nur werden Nachrichten Diese diese Systemen. eingeschränkt Linux-Kernel Multicast-Nachrichten der akzeptiert der Dann Absender de- können. Das die zu Multicast-Gruppen denen (MSF). auf mit Multicast-Source-Filter Filter finieren, Applikation, der einer Anzahl es maximale erlaubt IGMPv3-Protokoll die definiert Datei Diese igmp_max_msf nicht Wert diesen Sie müssen das denen Üblicherweise modifizieren. bei kann. Multicast-Gruppen, werden an Mitglied Anzahl Linux-System maximale die definiert Variable Diese igmp_max_memberships 3Ds/proc-Dateisystem Das 23 23.3 /proc/sys/net/ipv4 library

23.3.3 inet_peer_* Ein Inet-Peer ist ein anderer Rechner im Internet, mit dem unser System im Mo- ment kommuniziert. Für jeden derartigen Peer speichert unser System langlebige open source Informationen in einer eigenen Struktur. Aktuell handelt es sich hierbei nur um die IP-Identifikationsnummer (ID) des nächsten Pakets. Diese Nummer wird benötigt, um bei der Defragmentierung der Pakete die richtigen Fragmente eines Pakets zu erkennen. Diese weisen alle dieselbe IP-ID auf. Diese Variablen definieren, wie diese Strukturen verwaltet werden.

Achtung Da ein Linux-System per Default Path-MTU-Discovery verwendet und so eine Fragmentierung des Pakets ausschließen kann, benöti- gen die versandten Pakete keine IP-ID. Daher werden in diesem Fall der entsprechende Code und diese Variablen nicht verwendet.

Da diese Variablen in den meisten Umgebungen nicht genutzt werden, werden sie hier nicht weiter erläutert. Sie finden eine aktuelle Dokumentation in dem Quell- code Ihres Kernels unter Documentation/networking/ip-sysctl.txt.

23.3.4 ip_* Diese Variablen beeinflussen das IP-Protokoll. ip_autoconfig Der Kernel kann selbst die Protokolle DHCP oder BOOTP verwenden, um eine Autokonfiguration der Netzwerkkarten vorzunehmen. Dazu muss der Kernel ent- sprechend konfiguriert sein (IP_PNP=y). ip_conntrack_max Diese Variable definiert die maximal unterstützten Verbindungen in der Connec- tion Tracking-Tabelle. Der Default-Wert hängt von dem zur Verfügung stehenden Arbeitsspeicher ab. Auf einer Firewall ist es sinnvoll, diesen Wert zu erhöhen. Dann sollten Sie aber auch die Hashsize erhöhen (siehe Abschnitt 19.2). ip_default_ttl Hiermit setzen Sie den Time-to-Live-Wert (TTL) der von dem Linux-System ver- sandten Pakete. Alle normalen Pakete erhalten diesen TTL-Wert. Nach der entspre- chenden Anzahl von Hops wird das Paket dann verworfen. Jeder Router, der von einem Paket auf dem Weg zum Ziel passiert wird, ist ein Hop. Hiermit wird ver- hindert, dass eine Routerfehlkonfiguration zu Paketen führt, die ewig transportiert

433 open source library nee.Wn i is aibevrnenmctn üsnSeac gleichzeitig auch schreiben: Sie Variable müssen diese möchten, de- in verändern Client-Ports Zahlen erlaubten Variable beide lokal diese der Sie Bereich Wenn den die finieren. Zahlen, zwei enthält Datei Diese ip_local_port_range Linux- der leitet weiter. enthält, Netzwerkkarten 0 zwei Wert zwischen den Pakete Variable keine Kernel diese Weiter- Wenn die ein. Linux-Systems (Forwarding) des Netzwerkkarten leitung sämtliche für schaltet Variable Diese Wert Ein Verhalten. ip_forward das Sie Protokollierung. aktivieren zur Mal schreiben, jedes Variable zusätzlich die führt in 1 größer 1 eine Sie Wenn Variable Pakets. unverändert ersten Diese Paket dieses Absender-IP-Adresse. Maskierung erste falsche erneute die das eine es erzwingt IP- nun hätte neue Wenn würde, eine Netzwerkkarte. werden System und versendet das externen Einwahl, erhält der die Dabei auf triggert auf. Netzwerk- Dies Adresse Internetverbindung externen Netzwerkkarte. die der Firewall die baut IP-Adresse an System Die Paket aktuellen das aufzubauen. das der Verbindung übergibt mit die und zugrei- es karte um Internet maskiert Paket, das Paket, auf erstes das möchte dem filtert sein mit Firewall versendet nicht der Er Moment hinter im fen. Client sei Firewall-System Ein dies Ihr Um verbunden. vor, antriggert. Internet sich Internet das Sie in stellen bei Einwahl verstehen, Problemen die zu zu die es kommen, kann Verbindung aktivieren, ersten Ansonsten Variable der ermöglichen. diese zu Sie Verbindungen fehlerfreie sollten Netzwerkkarte um verwenden, externen der Masquerading auf gleichzeitigem IP-Adressen dynamische bei Firewall Ihrer in Sie Wenn ip_dynaddr versendet. Wert 255 diesem von von TTL unabhängig einem mit Linux immer von werden ICMP-Fehlermeldungen werden. 434 mit Server zum aufbaut. Verbindung Ab- Clients die echten als der des Adresse benötigt, IP-Adresse dieser Proxy der wird transparenten mit Funktion echten und Diese einen entgegennehmen. sind, für Pakete ver- definiert und IP-Adressen nicht versenden auch Pakete System Applikation senderadresse dem eine bin- auf kann IP-Adressen ist, die definierte gesetzt wenden, lokal Variable auf diese nur Wenn sich den. Applikation eine kann Üblicherweise Ports keine hier Sie 61000. ip_nonlocal_bind und Wählen 32768 ist. hier sind kann, Port Üblich werden vorzubeugen. höchste verwendet Problemen der der um 1024, Port, Nummer kleiner kleinste zweite der die ist während Nummer angegebene erste Die ip_local_port_range > 7000" "4096 echo 3Ds/proc-Dateisystem Das 23 23.3 /proc/sys/net/ipv4 library ip_no_pmtu_disc Der Linux-Kernel verwendet per Default die Path Maximum Transmission Unit Discovery (PMTU-Discovery). Damit verhindert der Linux-Kernel, dass eine Frag- open source mentierung der Pakete unterwegs auftritt und bei gleichzeitigem Fragmentverlust unnötig viele Pakete wiederholt gesendet werden müssen. In einigen Umgebungen führt dieses Verhalten jedoch zu Problemen. Dann können Sie diese Funktion mit dieser Variablen abschalten (1).

23.3.5 ipfrag_* Diese Parameter definieren, wie das Linux-System eine Defragmentierung durch- führen soll. ipfrag_*_thresh Diese beiden Variablen definieren den Speicherbereich, der für die Speicherung der Fragmente bei der Defragmentierung genutzt wird. Der genutzte Speicher schwankt zwischen dem ipfrag_low_thresh-undipfrag_high_thresh-Wert. ipfrag_time Dieser Wert definiert, wie lange Fragmente für eine Defragmentierung aufbewahrt werden. Ist innerhalb dieser Zeit keine Defragmentierung möglich, sendet der Rech- ner eine ICMP-Time-Exceeded-Fehlermeldung und verwirft das unvollständige Pa- ket. ipfrag_secret_interval Ältere Kernel besitzen eine Sicherheitslücke in der Fragmentierung, die einen Denial-of-Service der Defragmentierung ermöglichen (CAN-2003-0364). Um dieses zu verhindern, wurde ein Secret eingeführt, so dass der Angreifer die benötigten Pakete nicht mehr vorhersagen kann. Dieses muss zur Sicherheit in regelmäßi- gen Abständen neu berechnet werden. Das Intervall in Sekunden wird in dieser Variable definiert. ipfrag_max_dist Diese neue Variable des Linux-Kernels 2.6.14 definiert die maximale Unordnung, mit der Fragmente den Kernel erreichen dürfen.

23.3.6 tcp_* Hier sind sehr viele Variablen vorhanden, die das Verhalten des TCP-Protokolls beeinflussen.

435 open source library etvn- lode ire e Speichers. des Viertel drei also -2 von Wert inpfe ugtit is aibedfiir issVräti.ItdrWr der Wert 1/(2 der Applika- TCP-Window Ist den das Verhältnis. und für dieses TCP-Window wird definiert das positiv, Variable Variable für Diese wird aufgeteilt. Speicher tionspuffer Dieser Sockets. eines cher eal-etvn2wr loenVetldsSecesfrdsTPWno reser- TCP-Window das für 1-1/(2 Speichers wird Wert des negativen Viertel einem ein Bei also viert. wird 2 von Default-Wert pinnbntg brrctve isnüe a rtkl ebt i ne Hin- finden Sie der zur selbst. Erläuterung Variablen Protokoll Die das einige über können. hier Wissen unter einstellen viel stellt tergrundinformationen Verhalten recht und aber sein (2004) benötigt Sie Optionen jung denen sehr mit noch Verfügung, ist BIC-Protokoll ebenfalls Das nicht muss Empfänger Bandbreite. Der der beherrschen. Absenders. BIC-Protokoll Großteil des das Modifikation einen zu TCP- reine Entfernungen eine Entfernungen großen des ist große BIC bei über Probleme verschenkt Datenmengen die TCP großer beheben. Übertragung versucht der Congestion-(BIC-)Control bei Protokolls Increase Binary Die tcp_bic* ei- window/ Applikationspuffer Formel: den folgende nutzt für Kernel Speicher Der wird. viel (2 reserviert wie maximal Sockets definiert, nes Variable diese Auch tcp_app_win Variable Die Pro- punktuell tcp_adv_win_scale nur sondern optimieren. sein. handelt, hilfreich zu Dauerzustand Funktion Dienst diese einen den kann um auftreten, versuchen, nicht bleme immer sich Bevor Sie es kann. sollten Wenn entgegennehmen setzen, genug Variable dazugehörige schnell diese der nicht Sie wenn Verbindungen Verbindungen, neuen neuer die Reset Dienst einen erzwingt Variable Diese tcp_abort_on_overflow 436 um Verfügung: Aktuell zur verwenden, vermeiden. folgenden Methoden zu die und stehen verschiedene erkennen kann zu Netzwerkverbindungen neuer der Verstopfungen und 2.6.13 Linux-Kernel Der tcp_congestion_control entsprechen. I I I tcp ihpe SlyFloyd) (Sally highspeed bic TCP) (klassisches reno app win .DrWr usimrmnetn e aiu emn ie(MSS) Size Segment Maximum der mindestens immer muss Wert Der ). tcp_rmem enetdnfrdnEpagvnPktnrsrire Spei- reservierten Paketen von Empfang den für den definiert http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/ − tcp adv tcp win adv scale win 3Ds/proc-Dateisystem Das 23 ewne e einem bei – verwendet ) scale euz.Bidem Bei genutzt. ) . 23.3 /proc/sys/net/ipv4 library

I htcp (Hamilton TCP) I hybla (Speziell für Satellitenverbindungen) I scalable open source I vegas I westwood (speziell für verlustreiche Netzwerke) Sie können ganz einfach die Methode wählen:

sysctl -w net.ipv4.tcp_congestion_control=htcp

Sie finden weitere Informationen über die Methoden auf http://www-iepm.slac.stan ford.edu/bw/tcp-eval/. tcp_dsack Diese Variable bestimmt, ob doppelte selektive Acknowledgments (sack) versendet werden sollen. Damit kann einem Absender mitgeteilt werden, dass ein Paket dop- pelt empfangen worden ist. D-SACK ist eine Erweiterung des SACK-Standards und wird in dem RFC 2883 genauer beschrieben. SACK und D-SACK beschleunigt die Übertragung größerer Datenmengen enorm, da ein Empfänger genau die empfan- genen Pakete bestätigen kann und nicht immer nur das Paket mit der kleinsten Sequenznummer (siehe auch tcp_sack). tcp_ecn Die Explicit Congestion Notification (ECN) ist eine neue Methode, bei der zwei Kommunikationspartner Informationen über Netzwerk-Verstopfungen austauschen. Beide Kommunikationspartner müssen ECN unterstützen. Leider verwerfen immer noch viele Firewalls Pakete mit ECN-Informationen als bösartige Pakete, da sie oder ihre Administratoren diesen neuen Standard noch nicht kennen. Dann können Sie mit dieser Variable ECN abschalten. Ansonsten können Sie für bestimmte IP-Adressen auch in der Mangle-Tabelle das ECN-Target verwenden (siehe Abschnitt 21.2.4). ECN wird in den beiden RFCs RFC 3168 – The Addition of Explicit Congestion No- tification (ECN) to IP und RFC 2884 – Performance Evaluation of Explicit Congestion Notification (ECN) in IP Networks besprochen. tcp_fack Forward Acknowledgment ist eine spezielle Methode, die bei selektiven Acknowl- edgments wesentlich radikaler nichtbestätigte Pakete zur Wiederversendung aus- wählt. Dabei geht diese Methode davon aus, dass, sobald ein selektives Acknowl- edgment empfangen wurde, alle Pakete mit kleineren Sequenznummern verloren gegangen sind und neu gesendet werden müssen. Da dies nur dann korrekt ist, wenn eine Umsortierung der Paketreihenfolge nicht erfolgt ist, wird für Verbin- dungen, bei denen eine Umsortierung erkannt wurde, das Verfahren abgeschaltet. Forward Acknowledgments sind nur aktiv, wenn auch selektive Acknowledgments

437 open source library eevetwre.DrDfutWr o 0Skne anafdee Systemen diesen auf defekte kann viele Sekunden werden. Speicher reduziert 60 kByte wenn Sekunden von 1,5 30 Socket führen, auf Default-Wert offenen Der jeden Webservern werden. für da auf reserviert aufbauen, Speicherproblemen Verbindungen die zu Clients kann korrekt. nicht Dies Verbindung der den Seite entsprechend ihre nicht beenden hier und reagieren TCP-Standards Systeme Einige muss. warten kationspartners is aibe enee,wedeeKeaiePkt esne werden. versendet Keepalive-Pakete diese wie regelmäßigen definieren, Variablen um in Diese und wird, halten verwendet zu erkennen. nicht geöffnet zu Verbindungsabbruch Verbindung Socket einen die der um wenn TCP-Keepalive-Pakete, selbst Abständen dann, sendet nel e omnktosate i ebnugmteinem mit Verbindung die Kommunikationspartner der ieApiainkn ie oktmtdrOption der mit Socket einen kann Applikation Eine an. dem tcp_keepalive_* Kernel von im nur Methode die diese Recovery, schaltet RTO Option Forward Diese Beispiel die wird. zum beschreibt implementiert Medien, Absender 4138 unzuverlässigen RFC bei Das Übertragungsraten allem auf. TCP-Paketen vor langsamen WLAN treten verlorenen zu Timeouts von können Diese RTO) führen. Sendung timouts, wiederholten retransmission der (spurious bei Timeouts Plötzliche tcp_frto einem mit Verbindung eine System lokale das Wenn tcp_fin_timeout Matthew Entwicklers des Homepage eingeschaltet der Option auf Mathis: die Sie finden sollte Informationen erhöht, Weitere Performance sein. die dies Da werden. unterstützt 438 Se- 75 (Default: wurde Keepalive- beantwortet weiteres nicht ein Paket Kernel letzte der das kunden). Interval wenn welchem aussendet, in Paket definiert, Variable Diese 9). (Default: ansieht tcp_keepalive_intv ausgesendet unterbrochen als Keepalive-Pakete Verbindung die unbeantwortete Kernel viele der bevor wie werden, definiert, Variable Diese tcp_keepalive_probes oder Sekunden 7200 eine beträgt für Default-Wert Paket Stunden. ein 2 Der Linux-Kernel aussendet. der Verbindung Abständen welchen ungenutzte in definiert, Variable Diese tcp_keepalive_time aibedfiir,welneIrSse u i Antwort- ein auf System Ihr lange wie definiert, Variable http://www.psc.edu/~mathis/ . FIN SO_KEEPALIVE Pktbedt usauch muss beendet, -Paket FIN FIN 3Ds/proc-Dateisystem Das 23 Pktbedn Diese beenden. -Paket PktdsKommuni- des -Paket fnn e Ker- Der öffnen. 23.3 /proc/sys/net/ipv4 library

Der Kernel sendet also alle 2 Stunden ein Paket. Wird dieses nicht beantwortet, sendet er anschließend alle 75 Sekunden 9-mal ein weiteres Paket. Werden auch

diese nicht beantwortet, ist die Verbindung tot. open source tcp_low_latency Diese Option definiert, welches Ziel der Kernel bei den TCP-Verbindungen verfol- gen soll: I Hoher Durchsatz (High Throughput, Default) oder I Niedrige Verzögerung (Low Latency). Ein High-Performance-Rechencluster hätte diese Variable typischerweise gesetzt. tcp_max_orphans Diese Variable definiert, wie viele verwaiste (orphan) TCP-Sockets der Kernel tole- riert, die nicht mehr mit einem User-File-Handle verbunden sind. Sobald die Anzahl überschritten wird, setzt der Kernel alle (!) verwaisten Sockets zurück. Damit sol- len einfache Denial-of-Service-Situationen behandelt werden, denn jeder verwaiste Socket benötigt 64 kByte Arbeitsspeicher, der nicht in den Swap ausgelagert werden kann. Sobald diese Situation eintritt, protokolliert der Kernel Folgendes: TCP: too many of orphaned sockets. Dann sollten Sie die Variablen tcp_fin_timeout und tcp_orphans_retries modifizieren oder diesen Wert hochsetzen. tcp_max_syn_backlog Der Kernel hält alle halb offenen Verbindungen in einer Tabelle (SYN-Backlog) fest. Dies sind Verbindungen, bei denen der Client nach seinem SYN noch nicht das ACK- Paket gesendet hat, um die Verbindung zu bestätigen. Diese Tabelle (ist per Default 128 Einträge für Systeme mit weniger als 128 MByte und 1024 Einträge für alle anderen Systeme groß. Auf sehr beschäftigten Systemen (z.B. Webservern) sollten Sie diesen Wert erhöhen. Siehe auch: tcp_syncookies tcp_max_tw_buckets Nachdem eine Applikation eine Verbindung beendet hat, wird der Socket in den Zustand Time-Wait versetzt. Diese Variable definiert, wie viele Time-Wait-Sockets insgesamt von dem Kernel unterstützt werden. Der Default-Wert von 180000 sollte nie reduziert, sondern im Fehlerfall nur erhöht werden. tcp_mem Diese Variable enthält drei Werte und definiert, wie der TCP-Stack seinen Speicher verwaltet. Die drei Werte sind:

439 open source library e iu-enl24ud26htensnesiie uouig auspeichert Dazu Autotuning. senderseitiges ein hat TCP-Slow-Start-Threshold-( 2.6 den und er 2.4 Linux-Kernel Der tcp_no_metrics_save auch müssen ist, den sein. in aktiv aktiv nicht Funktion liegt diese Fehler kommt, Routern. Damit Der und TCP Firewalls setzen. von den zu in Totalausfall 0 sondern auf scheinbaren selbst, Variable zum Servern diese Server verursacht versuchen, Falls einige Sie Sie Probleme. auf können Firewalls an. au- und Zugriff Pakete Routern TCP-Windows beim einigen der des es mit RTT) Größe TCP-Windows große (Round-Trip-Time, die Dy- sehr als Laufzeit passt durch auch die Sie wird bezeichnet. an Funktion (DRS) tomatisch Diese eingeführt. Sizing 2.6.7 Right Kernel namic im wurde Option Diese tcp_moderate_rcvbuf 440 Trip (Round Laufzeit beobachteten der von Timeout 793). abgeleitet. (RFC RTT) der bestimmt Time, Minuten. Verbindung wird die 16 Wesentlichen für zu dynamisch Im Retransmission-Timeout wird Variable bis dem Timeout diese von Dieses sinnvoll, entspricht ab. hängt es (RTO) Zeitspanne das ist tatsächliche Webserver) Die 7, (z.B. reduzieren. gelöscht Defaultwert Server zu beschäftigten lokal den sehr Verbindung Verbindung einem hat Auf die eine Variable versucht, bevor Diese System beenden, wird. lokale zu das Kommunikationspartner häufig beim wie definiert, Variable Diese tcp_orphan_retries etmtnHs.Dee ehle idmtdee aibefrdnKre 2.6 Kernel Autotuning den das für da funktioniert. sinnvoll, korrekt Variable nicht Hochgeschwindigkeitsnetze dieser häufig für hier mit ist wird Das Verhalten abgeschaltet. Dieses Host. bestimmten oiktoe isrVral önngoe uhpstv uwrugnafdie auf Auswirkungen positive auch Linux- haben. große, Performance verschiedenen können Speicherseite. Variable den große ist dieser kByte bei Modifikationen Leider 4 einheitlich eine gemessen. meist ganz Speicherseiten verwendet nicht i386-Plattform in Die Speicherseite sondern Plattformen. der Bytes, in Größe nicht die wird Speicher Der I I I nomtoe mSece ukmrmee.Dseflts ag,bsdrSpei- der bis lange, so erfolgt unter Das wieder komprimieren. cherverbrauch zu Speicher im Informationen high pressure low nee Schwellenwert. Unterer : erSece afTPneverbrauchen. nie TCP darf Speicher Mehr : e brcrie issWre esctTP pihrz prnund sparen zu Speicher TCP, versucht Wertes dieses Überschreiten Bei : low sinkt. ssthresh )eti e otn-ah ü einen für Routing-Cache dem in -)Wert tcp_adv_win_scal 3Ds/proc-Dateisystem Das 23 und tcp_window_scaling 23.3 /proc/sys/net/ipv4 library tcp_reordering Diese Variable definiert, wann ein Paket als verloren gilt. Der Default-Wert von 3 sollte nicht verkleinert werden. Siehe auch die RTO-Erklärung bei tcp_orphan_retries. open source tcp_retrans_collapse Einige Systeme, speziell Drucker, besitzen einen Fehler in ihrem TCP/IP-Stack, der eine Kommunikation unmöglich macht. Diese Variable schaltet einen Workaround ein, so dass ein Linux-System dennoch mit diesen Geräten sprechen kann. Es sind keine negativen Nebenwirkungen bekannt. tcp_retries1 Diese Variable definiert, wie häufig der TCP-Stack ein Paket erneut senden soll, bevor er einen Fehler melden soll (Default: 3). Siehe auch die RTO-Erklärung bei tcp_orphan_retries. tcp_retries2 Diese Variable definiert, wie häufig der TCP-Stack ein Paket versenden soll, bevor die laufende Verbindung beendet wird (Default: 15). Siehe auch die RTO-Erklärung bei tcp_orphan_retries. tcp_rfc1337 Das RFC 1337, TIME-WAIT Assassination Hazards in TCP, beschreibt Probleme, die auftreten, wenn alte duplizierte Pakete neue Verbindungen beeinflussen. Dies kann geschehen, da TIME_WAIT-Sockets für neue Verbindungen wiederverwendet wer- den können. Das RFC beschreibt drei verschiedene Lösungen zu diesem Problem. Der Kernel ignoriert alle RST-Pakete an Sockets im TIME_WAIT-Zustand, wenn diese Variable gesetzt ist. tcp_rmem Diese Variable bestimmt die Größe des TCP-Receive-Buffers. Die Variable enthält drei verschiedene Werte: I min: Garantierte Mindestgröße des Receive-Buffers für jeden Socket (Default: 4 oder 8 kByte). I default: Default-Größe des Receive-Buffers (Default: 87380). Dieser Wert über- schreibt den Wert /proc/sys/net/core/rmem_default für das TCP-Protokoll. I max: Dies ist die maximale Größe des Receive-Buffers für TCP. Dieser Wert wird von /proc/sys/net/core/rmem_max überschrieben, falls der IPv4-Wert größer ist.

441 open source library trne ürn ae s i ukinprDfutnctaktiv. nicht Default per der Funktion die jedoch ist daher sich führen, verhält störungen 1122, aktivieren, RFC Standardverhalten Variable Layers, in das diese ist wie Sie Dies Linux-Kernel wird. Wenn verwendet Linux-Kernels. 4.2 des BSD Betriebssystem dem von sgb wivrcidn aine,weenTPI-tc i e Urgent-Pointer dem mit TCP/IP-Stack ein dem wie und Varianten, verschiedene zwei gibt Es tcp_stdurg wer- eingeschaltet immer S-ACKs Option Da diese den. sollte Durchsatz. haben, den Auswirkungen Paketverlusten negativen keine mit Netzwerkmedien TCP bei for insbesondere Option (SACK) 2018, Acknowledgement RFC Options, tive dem Acknowledgement entsprechend Selective Acknowledgments TCP selektive aktiviert Variable Diese tcp_sack 442 können wehren. Damit SYN-Flood überläuft. einen SYN-Backlog gegen der sich sobald Sie anfan- versenden, wird zu Linux-Kernel Der SYN-Cookies Linux-Kernel. gen, im SYN-Cookies Sie aktivieren Hiermit tcp_syncookies soll, versuchen Kernel ein häufig wie definiert, Variable Diese tcp_synack_retries nwr u ie ebnugafa usne.DrDfutWr s .D ein Sekunden. Da 180 5. Timeout gesamte ist der Default-Wert beträgt dauert, Der Sekunden senden. 30-40 zu etwa Versuch Verbindungsaufbau einen auf Antwort ecree.Dee ehle s ih optbludkn uFunktions- zu kann und kompatibel nicht ist Verhalten Dieses beschrieben. URG Tipp TPFa mee an F73bsheb a ehle,dsauch das Verhalten, das beschreibt RFC793 kann. umgehen -TCP-Flag enSedeeWreädr öhe,sltnSesc den sich Sie auf sollten vergrößern: zu Linux malwerte möchten, für ändern tuning/linux.html Werte diese TCP-Tuning-Guide Sie Wenn i,dfut n a ubro ye ouse to 16777216 bytes 65536 of 16777216 4096 number 87380 = limits max 4096 net.ipv4.tcp_wmem buffer and = TCP default, net.ipv4.tcp_rmem autotuning min, Linux # increase 16777216 # size = buffer 16777216 net.core.wmem_max max = TCP net.core.rmem_max increase # nee.Dr idvreclgn i Maxi- die vorgeschlagen, wird Dort ansehen. eurmnsfrItre ot Communication – Hosts Internet for Requirements n e F 2883, RFC dem und eetv cnweget erhöhen Acknowledgments Selektive . http://www-didc.lbl.gov/TCP- 3Ds/proc-Dateisystem Das 23 nEtnint Selec- to Extension An SYN/ACK Pkt als -Pakete 23.3 /proc/sys/net/ipv4 library

Achtung

Diese Funktion ist lediglich ein Fallback für den Fall eines Angriffs. open source Sie kann zu großen Problemen führen. Achten Sie darauf, dass Ihr Linux-System die SYN-Cookies nicht im Normalbetrieb versendet! WennIhrServersobeschäftigtist,dassderSYN-Backlogimnorma- len Betrieb überläuft, sollten Sie den SYN-Backlog vergrößern (siehe tcp_max_syn_backlog).

Die TCP-SYN-Cookies ermöglichen es dem Linux-System, bei einem SYN-Flood ein späteres ACK-Paket eines echten Clients zu erkennen und trotzdem die Verbindung aufzubauen. Die SYN-Cookies wurden u.a. von DanBernstein entwickelt und hier beschrieben: http://cr.yp.to/syncookies.html. tcp_syn_retries Diese Variable definiert, wie häufig der Linux-Kernel versuchen soll, selbst eine Verbindung aufzubauen. Der Default-Wert beträgt 5. Da ein Versuch etwa 30-40 Sekunden dauert, beträgt der gesamte Timeout 180 Sekunden. tcp_timestamps RFC 1323, TCP Extension for High Performance, beschreibt die Verwendung von Timestamps, um die Round Trip Time (RTT) zu ermitteln. Grundsätzlich verbes- sert diese Option die Funktion des TCP-Protokolls.

Hinweis Nmap verwendet die TCP-Timestamps, um die Uptime eines Sys- tems zu ermitteln. Wenn Sie das verhindern möchten, müssen Sie diese Option abschalten.

tcp_tso_win_divisor Die TCP-Segmentation-Offload-(TSO-)Funktion erlaubt es, die Aufteilung großer Pakete in kleine Pakete an die Netzwerkkarte abzugeben. Der e1000-Treiber unter- sützt dies seit dem Kernel 2.5.33. Der TCP-Stack übergibt 64 kByte große Pakete an die Karte, die sie in 1500 Byte große Pakete entsprechend der MTU aufteilt. Dies reduziert die Prozessorlast enorm.

443 open source library IEWI-oktnte darf. nutzen TIME_WAIT-Socket edndr.DeVariable Die darf. wenden i ole is pinnnrnte,wn i ih brgngScesfrIhre für Sockets genug über nicht Sie wenn nutzen, verfügen. nur Applikation Optionen diese sollten Sie Varia- Die TIME_WAIT-Sockets. der Behandlung ble die beeinflussen Parameter Diese tcp_tw_* ein Netzwerkkartenpuffers des (Prozent) darf. Anteil einnehmen welchen TSO-Paket definiert, Variable Diese 444 TCP-BIC. bereits jedoch Linux-Kernel moderne verwenden TCP-Vegas von ( Anstelle Vegas-Homepage der auf Informationen edu/protocols/ weitere finden als Sie Paketverlust geringeren einen des (Default-TCP). damit TCP-Reno Modifikationen erzeugt durch (TCP-Reno). TCP-Vegas Sendegeschwindigkeit es auszuwerten Congestion-Fensters. die Paketverlust ermittelt dann den Hierzu modifiziert anstatt ermitteln. versucht, TCP-Vegas Pakete, zu die der Bandbreite TCP-Protokolls, Verzögerungen der die des Schätzung Veränderung durch senderseitige Verstopfungen eine ist TCP-Vegas tcp_vegas_* tcp_tw_reuse Achtung Achtung ). e.SelnSeafjdnFl ihr asgeczii uhdeVa- die auch gleichzeitig dass sicher, Fall füh- jeden Problemen riable auf großen Sie zu Stellen kann ren. Optionen dieser Verwendung Die Netzwerk- die für TSO-Funktion Imple- der die abschalten: in Sie karte Fehler sollten einen haben Hier älter mentierung. und 2.6.11 Linux-Kernel Die tto Keh s off tso eth0 -K ethtool etmt ben plkto ie IEWI-oktwiederver- TIME_WAIT-Socket einen Applikation eine ob bestimmt, tcp_rfc1337 tcp_tw_recycle kiir wurde. aktiviert enet ben neeApiaineinen Applikation andere eine ob definiert, 3Ds/proc-Dateisystem Das 23 http://www.cs.arizona. 23.4 /proc/sys/net/ipv4/conf library tcp_westwood TCP-Westwood ist eine weitere Methode, mit der Verstopfungen der Netzwerkver- bindung vorgebeugt werden kann. Auch hier handelt es sich um eine nur sendersei- open source tige Modifikation des Reno-TCP-Stacks. Auch diese Methode schätzt die Bandbreite der Verbindung, um das Congestion Window und die Slow Start Threshold (ss- thresh) zu setzen. Weitere Informationen über diese Methode finden Sie auf http://193.204.59.123/c3lab/ westwood.php und http://www.cs.ucla.edu/NRL/hpi/tcpw/. tcp_window_scaling Diese Variable schaltet das TCP-Window-Scaling an. Damit können Absender und Empfänger größere TCP-Windows als 64 kByte verwenden. Dies verbessert die Per- formance bei Netzwerkmedien mit hoher Bandbreite und hoher Latenz und redu- ziert die Verluste durch nicht ausreichende Nutzung der Bandbreite. tcp_wmem Diese Variable verwaltet ähnlich tcp_rmem den Sende-Puffer des TCP-Stacks. Es han- delt sich genauso um drei Werte: min, default und max.Siefindenbeitcp_rmem eine Beschreibung der Werte. Eine Anpassung des max-Wertes nach oben kann erstaun- liche Leistungssteigerungen bringen.

23.4 /proc/sys/net/ipv4/conf

Dieses Verzeichnis enthält für jede verfügbare Netzwerkkarte ein Unterverzeichnis. Zusätzlich existieren die Verzeichnisse all/ und default/. Änderungen der Varia- blen in dem Verzeichnis all/ haben Auswirkungen auf alle Netzwerkkarten. Das Verzeichnis default/ definiert, welche Werte den Variablen neuer Netzwerkkarten zugewiesen werden. Die Werte bereits aktivierter Netzwerkkarten werden nicht verändert.

$ ls -l /proc/sys/net/ipv4/conf insgesamt 0 dr-xr-xr-x 2 root root 0 2. Nov 13:36 all dr-xr-xr-x 2 root root 0 2. Nov 13:36 default dr-xr-xr-x 2 root root 0 2. Nov 13:36 eth0 dr-xr-xr-x 2 root root 0 2. Nov 13:36 lo dr-xr-xr-x 2 root root 0 2. Nov 13:36 vmnet1 dr-xr-xr-x 2 root root 0 2. Nov 13:36 vmnet2 dr-xr-xr-x 2 root root 0 2. Nov 13:36 vmnet3 dr-xr-xr-x 2 root root 0 2. Nov 13:36 vmnet8

445 open source library is aibedfiir,wlh oreI-des nAPRqet verwendet ARP-Requests in Source-IP-Adresse welche wird. definiert, Variable Diese arp_announce Routen Default. der gewählte 23.4.3 auch Source- selbst ist Dies IP-Option über (0). sein Pakete der abgeschaltet Angreifer Option mit diese ein IP-Pakete sollte kann, damit System versenden Da das akzeptiert. ob Routing definiert, Parameter Dieser accept_source_route 23.4.2 der auf mindestens es sollte daher ICMP-Redirects Router-Spoofing, Default werden. ein ausgeschaltet per auch Firewall akzeptiert aber Rechner Linux erlaubt auswertet. und Dies hinzuweisen. Router (1). ICMP-Redirect-Nachrichten Route andere bessere um System eine versendet, Routern auf das von werden ob Nachrichten Diese definiert, Variable Diese accept_redirects 23.4.1 446 reagiert. ARP-Anfragen auf Linux-System das wie definiert, Variable Diese arp_ignore 23.4.5 Sie betreiben, setzen. Wenn 1 Subnetz antwortet. auf demselben Parameter ARP-Anfragen in diesen Sie auf Load-Balancing sollten das Kernel für der Netzwerkkarten wie mehrere definiert, Variable Diese arp_filter 23.4.4 I I I I 2 1 0 0 e ewne ednwürde. werden verwendet tem befinden. ARP-Anfrage ih u e erfee ezekat enetit(Default). ist definiert Netzwerkkarte betroffenen der auf nicht ewne i PArse i uhfrdeKmuiainmtdmZielsys- dem mit Kommunikation die für auch die der IP-Adresse, Ziel die das Verwendet wie : Subnetz demselben in nicht sich die IP-Adressen, Vermeidet : (Default). IP-Adresse beliebige eine Verwendet : enwrejd R-nrg ü eelkl PArse ebtwn diese wenn selbst IP-Adresse, lokale jede für ARP-Anfrage jede Beantworte : Tipp enSegleichzeitig Sie Wenn otrSofig geringer. Router-Spoofings secure_redirects ncatn s i eardes Gefahr die ist anschalten, 3Ds/proc-Dateisystem Das 23 23.4 /proc/sys/net/ipv4/conf library

I 1: Beantworte nur ARP-Anfragen für IP-Adressen, die auf der ankommenden Netzwerkkarte definiert sind.

I 2: Beantworte nur ARP-Anfragen für IP-Adressen, die auf der ankommenden open source Netzwerkkarte definiert sind und die sich im selben Subnetz mit der Source- Adresse der ARP-Anfrage befinden. I 8: Beantworte keine ARP-Anfragen.

23.4.6 bootp_relay Diese Option muss gesetzt werden, wenn Sie auf dem Linux-System einen Bootp- Relay-Daemon betreiben möchten. Die Netzwerkkarte akzeptiert dann auch Pakete mit der Source-Adresse 0.b.c.d.

23.4.7 disable_policy Dies deaktiviert IPsec-Policies für diese Netzwerkkarte.

23.4.8 disable_xfrm Dies deaktiviert IPsec-Verschlüsselung für diese Netzwerkkarte.

23.4.9 force_igmp_version Hiermit können Sie die IGMP-Version für diese Netzwerkkarte erzwingen:

/sbin/sysctl -w net.ipv4.conf.eth0.force_igmp_version=3

23.4.10 forwarding Hiermit aktivieren Sie das Forwarding nur für diese Netzwerkkarte. Wenn Sie diese Variable nutzen möchten, sollten Sie nicht die Variable ip_forward verwenden.

23.4.11 log_martians Diese Variable protokolliert Pakete mit unmöglichen IP-Adressen. Dies sind Pakete, die von rp_filter erkannt wurden oder Source-Routing-IP-Optionen verwenden.

23.4.12 mc_forwarding Wenn Sie einen Multicast-Routing-Daemon betreiben möchten, müssen Sie diese Variable einschalten.

23.4.13 medium_id Diese Variable unterscheidet Geräte anhand des Netzwerkmediums, mit dem sie verbunden sind. Diese Variable wird für ProxyARP verwendet. ProxyARP wird

447 open source library ist. wird. is aibeatvee,wre u eiet o eane Default-Gateways Variable die bekannten dass von zusätzlich, erfordert Redirects Sie Funktion nur Diese Wenn akzeptiert. werden ICMP-Redirects. aktivieren, sämtliche Variable Linux-System diese ein akzeptiert Normalerweise secure_redirects 23.4.17 auch kann bietet, werden. Funktion erreicht diese Firewall-Regeln den sinn- mit Schutz, es leicht Der ist abzuschalten. Dann Funktion einsetzen. Netz- diese IPsec diese voll, oder Probleme, Advanced-Routing über häufig Policy-Routing, auch auch Schutz Sie Funktion gewissen Pakets wenn diese einen des verursacht so Jedoch bietet Absender IP-Spoofing-Angriffen. Variable den vor Diese würde. an werden Antwort versendet eine werkkarte Dieser an. ob Netzwerkkarte prüft, diese für Filter Reverse-Path-Filter einen schaltet Variable Diese rp_filter 23.4.16 Netzwerkkarte. diese für ProxyARP aktiviert Variable Diese proxy_arp 23.4.15 die Option anschließend Die und gelöscht. Alias definieren der Netzwerkkarte auch automatisch promote_secondaries einer wird auf löschen, IP-Adresse Alias primäre einen Sie Wenn das promote_secondaries Gerät dieses 23.4.14 dass bedeutet, 0 ist. verbunden Wert Medium Der bedeu- dem -1 mit ist. von das unbekannt Wert ist, weitergeleitet Medium Ein einzige sind. Geräten das verbunden zwei dass Medium zwischen demselben tet, die mit aktiviert, nicht Pakete die für werden, nur Kernel dem von 448 ICMP-Redirect- Host. Kernel als der sie akzeptiert mehreren versendet und dann von Router Nur als Netzwerkmedium Nachrichten wird. angeschlossene genutzt das gleichzeitig ob Netzen definiert, Variable Diese shared_media 23.4.19 kennt. das Route bessere falls eine auszusenden, und ICMP-Redirects ist an, Router ein Linux-System System das weist Variable Diese send_redirects 23.4.18 og aü,ds e la uoaic u rmrnIP-Adresse primären zur automatisch Alias der dass dafür, sorgt 3Ds/proc-Dateisystem Das 23 shared_media gesetzt 23.5 /proc/sys/net/ipv4/neigh library

23.4.20 tag Hier können Sie eine beliebige Nummer speichern. Diese Nummer wird nur von Ihnen verwendet. Der Kernel ignoriert diese Variable. open source

23.5 /proc/sys/net/ipv4/neigh

Diese Parameter betreffen das ARP-Protokoll. Jeden Parameter hier aufzuführen, würde das Format sprengen, daher möchte ich Sie auf die arp(7)-Manpage verwei- sen, in der die Parameter erläutert werden.

23.6 /proc/sys/net/ipv4/netfilter

Ab der Version 2.6.9 verfügt der Linux-Kernel über das Verzeichnis, in dem sich verschiedene Variablen befinden, die das Connection Tracking betreffen. Diese Variablen werden in dem entsprechenden Kapitel besprochen (siehe Kapitel 19). Zusätzlich kann sich in diesem Verzeichnis auch ein weiteres Unterverzeichnis ct_sync befinden. Die Variablen in diesem Verzeichnis werden ebenfalls in dem Kapitel zu ct_sync besprochen (siehe Abschnitt 26.6).

23.7 /proc/sys/net/ipv4/route

Diese Variablen verwalten den Routing-Cache und die Versendung von Fehler- Nachrichten.

23.8 /proc/sys/net/ipv6

Dieses Verzeichnis enthält die Variablen für das IPv6-Protokoll. Da diese Variablen zum größten Teil identisch mit den IPv4-Variablen sind, sollen sie hier nicht erneut aufgeführt werden.

449

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library e i aaee n aeeetee n önndePoooleugi einer in Protokollierung Kapitel die (siehe können vornehmen und Datenbank entgegen einer oder Pakete Datei und Parameter die men ebne neshie an önnSedePoooleugmtdnfolgenden den mit Protokollierung Da- die bestimmen: genauer Sie oder Optionen können Protokolldateien kann, verschiedenen unterscheiden den tenbanken zwischen Protokolldienst der Damit menahtnvrednSie verwenden einfachsten Am önn widvnmct c he vorstellen: Ihnen schreiben ich Protokolle möchte die davon und Zwei zusammenarbeiten können. Target diesem mit die warepakete, plkto etruetn is plkto usden muss Userspace- beliebige Applikation eine an Diese Protokollierung weiterzuleiten. zur Pakete Applikation Ihnen, es erlaubt ULOG-Target Ziel Das Dieses 24.1 des Grenzen möchten, die weiterverarbeiten an anspruchsvoll schnell Firewall möglicherweise Ihrer Sie Protokolle werden die Sie Wenn 24 i uwrugkn i iie e mKapitel im erfolgen. der Werkzeuge einigen mit kann Auswertung Die ole i ihdas sich Sie sollten I I I I ecekte(aia 2Zihn enee,dejdrMlugvorangestellt Meldung jeder die definieren, wird. Zeichen) 32 (maximal Zeichenkette definieren. srpc i uwnie brrfne ebne s,kne i irde- hier Sie können ist, verbunden Überprüfungen aufwändigen mit Userspace e,weveeBtsdsPkt ndsUesaePorm bree und kopiert übergeben 0 Userspace-Programm Default-Wert das Der Paket. sollen. an ganze ange- das werden Pakets Sie protokolliert des können möglicherweise Hiermit Bytes damit können. viele zu wie untersuchen ben, Pakets des Teile zumindest -lgqhehl --ulog-qthreshold --ulog-cprange »Zeichenkette« --ulog-prefix --ulog-nlgroup i önni dem in können Sie Protokollierung Fortgeschrittene ULOG ulogd Tre i ei eae nee.E itmheeSoft- mehrere gibt Es ansehen. genauer wenig ein -Target : ULOG ü i ptr nls s sntlc,dsPktoder Paket das nützlich, es ist Analyse spätere die Für : hlc dem Ähnlich : ü eeGup u esilen neeDatenbank andere eine Beispiel zum Gruppe jede für adeÜegb e aesvndmKre nden in Kernel dem von Pakets des Übergabe die Da : nesüz 2vrcidn eln-rpe (1-32). Netlink-Gruppen verschiedene 32 unterstützt ulogd oder specter LOG Tre önnSeac ireine hier auch Sie können -Target ü i rtklirn.Deeneh- Diese Protokollierung. die für 12 ulogd rtklaaye vorgestellten Protokollanalyse, , 24 und ). netlink LOG specter Tressoe.Dann stoßen. -Targets Sce betrachten. -Socket .

open source library open source library enl261 i dem mit 2.6.14 Kernel eso ewne,dri oet(k.20)nrafdmSubversion-Server Sie: dem verwenden übersetzen, auf zu nur und 2005) auszuchecken (Okt. Moment ist im verfügbar der verwenden, 2 Version ndrVrin1frdeVredn i dem mit Verwendung die für 1 Version der in des Laden ipt_ULOG-Kernelmodul Beim Das \ 24.2 ULOG -j 200: --length length -m icmp -p FORWARD -A iptables 452 $ $ $ $ $ $ $ Moment im Auf existiert Versionen. und geschrieben zwei Welte in Harald von wurde Ulogd-Daemon Ulogd-Daemon Der Der 24.3 enlVrinen mdeeOtoe unte,mse i o e rtnRegel, ersten der vor ältere Sie müssen eine nutzen, wahrscheinlich das Op- zu Sie die aufgeführten Optionen setzen diese hier Um werden, Diese alle ein. unterstützt nicht können. Kernel-Version Modul Wenn beeinflussen Ihrem vorstellen. von Geschwindigkeit hier tionen die Ihnen ich und möchte Verhalten Optionen das die finieren, I I I -lgngop2-uo-rfx"rßsIM:"\ " ICMP: "Großes 10 --ulog-prefix --ulog-qthreshold 2 --ulog-nlgroup make ./configure aclocal ulogd2/ cd http://svn.gnumonks.org/branches/ulog/ulogd2 co svn nennNtle-edne ewne ednsl.De idzmBeispiel (Ja). 1 zum ist sind Default Der Dies Pakete. soll. ungültige über werden Meldungen verwendet Netfilter-Meldungen internen nflog:int flushtimeout:int nlbufsiz= definieren. einzeln Regel jede für ge- Rückwärtskom- Sie und der können (1-50) Gründen Wert sammeln aus Diesen 1. ist Übergabe patibilität Default-Wert der Der vor soll. Kernel übergeben der meinsam Pakete viele wie finieren, e afmxmlen rß o 2 Bt ae.GöeePfe erhöhen Puffer Größere haben. leicht. KByte Protokollierung 128 die 4096. möglicherweise von Default: aber Größe verzögern Geschwindigkeit, eine die maximal darf fer ihi s 0m u 8-ytmn e eal s 0(0 ms). (100 die 10 kann ist Default Damit Der Zeit- ist. -Systemen. Die auf voll werden. ms nicht beschränkt 10 Puffer Puffer ist großen einheit der einen wenn durch auch Verzögerung mögliche muss, werden geleert fer ULOG Tre ewne,dsMdlmnelmit manuell Modul das verwendet, -Target is pindfiir,o issMdlac ü i itrn von Filterung die für auch Modul dieses ob definiert, Option Diese : http://svn.gnumonks.org/branches/ulog/ulogd2/ ipt_ULOG iri ee i i rß e eln-ufr n e Puf- Der an. Netlink-Puffers des Größe die Sie geben Hiermit : isrWr enet nwlhnItralnsäetn e Puf- der spätestens Intervallen welchen in definiert, Wert Dieser : NFLOG Kremdl önnSeeng uäzih aaee de- Parameter zusätzliche einige Sie können -Kernelmoduls http://gnumonks.org/projects Tre iste,kne i e lg-amni der in Ulogd-Daemon den Sie können einsetzen, -Target ULOG 4Frgshitn Protokollierung Fortgeschrittene 24 ne i e Ulogd-Daemon den Sie finden Tre.Wn i eet den bereits Sie Wenn -Target. modprobe mdnUlogd-2-Daemon den Um . laden. 24.3 Der Ulogd-Daemon library

Der Ulogd verwendet Plugins, um die verschiedenen Funktionen zur Verfügung zu stellen. Diese Plugins werden in einer Konfigurationsdatei beschrieben, in der Sie

festlegen, welche Meldungen wie protokolliert werden sollen. Eine Beispieldatei ist open source im Folgenden abgedruckt:

# Example configuration for ulogd # $Id: ulogd.conf.in 714 2005-02-19 21:33:43Z laforge $ #

[global] ###################################################################### # GLOBAL OPTIONS ######################################################################

# netlink multicast group (the same as the iptables --ulog-nlgroup param) nlgroup=1

# logfile for status messages logfile="/var/log/ulogd/ulogd.log"

# loglevel: debug(1), info(3), notice(5), error(7) or fatal(8) loglevel=5

# socket receive buffer size (should be at least the size of the # in-kernel buffer (ipt_ULOG.o ’nlbufsiz’ parameter) rmem=131071

# libipulog/ulogd receive buffer size, should be > rmem bufsize=150000

###################################################################### # PLUGIN OPTIONS ######################################################################

# We have to configure and load all the plugins we want to use # general rules: # 1. load the plugins _first_ from the global section # 2. options for each plugin in seperate section below

# # ulogd_BASE.so - interpreter plugin for basic IPv4 header fields # you will always need this plugin="/usr/lib/ulogd/ulogd_BASE.so"

453 open source library sync=1 file="/var/log/ulogd/ulogd.pcap" [PCAP] buffer=200 db="/path/to/sqlite/db" table="ulog" [SQLITE3] host="localhost" db="ulogd" user="ulog" pass="g3h31m" schema="public" table="ulog" [PGSQL] host="localhost" db="ulogd" user="ulog" pass="g3h31m" table="ulog" [MYSQL] file="/var/log/ulogd/ulogd.pktlog" [OPRINT] sync=1 file="/var/log/ulogd/ulogd.syslogemu" [LOGEMU] #plugin="/usr/lib/ulogd/ulogd_PCAP.so" #plugin="/usr/lib/ulogd/ulogd_SQLITE3.so" #plugin="/usr/lib/ulogd/ulogd_PGSQL.so" #plugin="/usr/lib/ulogd/ulogd_MYSQL.so" #plugin="/usr/lib/ulogd/ulogd_OPRINT.so" plugins. plugin="/usr/lib/ulogd/ulogd_LOGEMU.so" output # 454 die Sie den zwischen denen können wählen: Sie mit Output-Plugins können. folgenden Output-Plugins, protokollieren Formaten verschiedene verschiedenen in und mehrere Pakete lesen und IPv4-Pakete das kann, Input-Plugin, analysieren ein aktuell unterstützt Ulogd-Daemon Der 4Frgshitn Protokollierung Fortgeschrittene 24 24.3 Der Ulogd-Daemon library

I MySQL I PostgreSQL I SQLite3 open source I Pcap-Datei I LOGEMU (ähnlich Syslog-Protokollierung) I OPRINT (einfache Protokollierung in einer Datei für Debugging) I SYSLOG (protokolliert via Syslogd) Die folgenden Input-Plugins können Sie nutzen: I BASE (Grundfunktion, sollten Sie immer laden) I LOCAL (protokolliert nur den Rechnernamen und den Zeitpunkt der Protokol- lierung) I PWSNIFF (experimentelles Plugin für die Protokollierung der POP-3- und FTP- Kennwörter) Sie müssen mindestens ein Input- und ein Output-Plugin wählen. Außerdem müs- sen Sie in der Konfigurationsdatei die folgenden Parameter setzen: I nlgroup=: Hiermit wählen Sie die Gruppe, an die sich dieser Ulogd-Prozess binden soll. Jeder Ulogd-Prozess kann sich nur an eine Gruppe binden. Diese Zahl muss mit der Angabe in der Option --ulog-nlgroup des ULOG-Targets überein- stimmen. Wenn Sie verschiedene Gruppen in Ihren Regeln verwenden, benöti- gen Sie für jede Gruppe einen eigenen Ulogd-Prozess. I logfile=: Dies ist die Protokolldatei des Ulogd-Daemons. Hier protokol- liert der Daemon Fehler und Warnungen. Durch Angabe von syslog oder stdout protokolliert der Ulogd diese Informationen über den Syslogd oder auf der Stan- dardausgabe. I loglevel=: Hiermit stellen Sie den Detailgrad der Ulogd-eigenen Protokol- lierung in dem logfile ein. Die Level sind in der Beispielkonfigurationsdatei an- gegeben. I plugin=: Mit diesem Parameter laden Sie die Plugins, die Sie verwen- den möchten. Sie können diesen Parameter mehrfach verwenden. Die einzelnen Plugins benötigen teilweise zusätzliche Konfigurationsparameter (z.B. MySQL). I rmem=: Mit diesem Parameter stellen Sie die Größe des Ulogd-Netlink- Socket-Empfangspuffers ein. Dieser muss mindestens der Größe des Netlink- Puffers des ipt_ULOG-Moduls entsprechen. Wenn Sie mit der Option nlbuf- siz= diesen gesetzt haben, müssen Sie auch diesen Wert anpassen. I bufsize=: Dies ist der eigentliche Ulogd-Empfangspuffer. Dieser muss min- destens die Größe des rmmem-Puffers haben. Einzelne Plugins verfügen über zusätzliche Konfigurationsparameter. Bevor diese in eigenen Abschnitten besprochen werden, möchte ich kurz die Optionen erläutern, die Sie beim Start des Ulogd verwenden können:

455 open source library iue--with-mysql figure e ednsl Dfut0 snho) antuhnnu edne ndem in Meldungen neue tauchen auf. Dann sofort Geschwindigkeit asynchron). der 0, Lasten zu (Default Protokoll soll werden ben sync=0|1 file= [LOGEMU] Syslog- der Format das dabei emuliert dem und ähnlich Datei Protokollierung eine in protokolliert Modul Dieses [LOGEMU] 24.3.2 dumpfile= die eingesetzt für [OPRINT] Dateinamen Debugzwecke den für Parameter nur einzigen als das benötigt Ausgabe: Ausgabemodul, Modul Das einfaches kann. sehr werden ein ist Dies [OPRINT] 24.3.1 456 ( werden übersetzt MySQL-Unterstützung mit nut- Ulogd Plugin dieses der Sie muss Damit können, MySQL-Datenbank. eine zen in Sie protokollieren Hiermit [MYSQL] 24.3.3 e brdnSso ieti i ae.Semse e aenmnagbnund angeben Dateinamen den müssen Sie Parameter Datei. dem die in mit direkt können Syslog den über weg hnet ndrDtnakalgnmctn önnSeac i ael u der aus Tabelle die auch Sie Zei- als können proto- IP-Adresse möchten, nicht die ablegen auch Sie Datenbank Daten Wenn der durch die schlanker. in Plugin Datenbank Sie chenkette Ihre dieses können wird dass sind, Dadurch sorgen, interessiert kolliert. dafür nicht Spalte Informationen der bestimmten Entfernen an Sie Wenn nomtoe.AsBipe ü iedrrieTbleuddez verwendenden zu die stehenden und Datei Tabelle Verfügung die derartige zur auf Sie eine den können für Spalten-Typen mit der Beispiel Namen Spalten Als verfügbaren deren die Informationen. liest vergleicht Plugin und Dieses ab. MySQL-Tabelle MySQL-Tabelle Ihrer von hängt I I I I i eal-ae ist Default-Datei Die e al enSei he eendas dann Regeln immer Ihren ist in Das Sie möchten. betreiben wenn System Fall, Ihrem der auf Ulogd des Instanzen c -ofg --config -c, --help -h, --version -V, --daemon -d, rpe ewne,u i ugb nutrcidih rtklez schrei- zu Protokolle unterschiedliche in Ausgabe ben. die um verwenden, Gruppen neg e Hilfe. der Anzeige : amnMds iri ehetdrPoesi e Hintergrund. den in Prozess der wechselt Hiermit Daemon-Modus. : neg e Version. der Anzeige : .Wlh nomtoe o ismPui rtklir werden, protokolliert Plugin diesem von Informationen Welche ). iri älnSeen lentv ofiuaindtiaus. Konfigurationsdatei alternative eine Sie wählen Hiermit : /etc/ulog.conf sync LOG Tre.DePoooleugefltae heUm- ohne aber erfolgt Protokollierung Die -Target. enee,o a rtkl ycrn()geschrie- (1) synchron Protokoll das ob definieren, is pinitwctg enSemehrere Sie wenn wichtig, ist Option Diese . doc/mysql.table ULOG Tre i esheee Netlink- verschiedenen mit -Target 4Frgshitn Protokollierung Fortgeschrittene 24 zurückgreifen. ./con- 24.3 Der Ulogd-Daemon library

Datei doc/mysql.table.ipaddr-as-string verwenden. Dann müssen Sie aber auch Ulogd mit der Option --with-mysql-log-ip-as-string beim ./configure-Aufruf übersetzen.

Das Modul benötigt die folgenden zusätzlichen Angaben: open source I table=: Der Name der SQL-Tabelle. I ldb=: Der Name der SQL-Datenbank. I host=: Der Rechner, auf dem der MySQL-Server läuft. Damit kön- nen Sie die Datenbank auf einem anderen Rechner unterbringen. Denken Sie nur daran, dass Ihre Firewall den Zugriff auf diesen Rechner erlauben muss. I port=: Der Port der MySQL-Datenbank. I user=: Der Benutzer, der für die Anmeldung an der Datenbank ver- wendet wird. Verwenden Sie aus Sicherheitsgründen bitte nicht das root-Konto. I pass=: Das Kennwort für die Anmeldung an der Datenbank.

24.3.4 [PGSQL] Dieses Output-Plugin arbeitet ähnlich wie das MySQL-Plugin. Damit das Plugin zur Verfügung steht, müssen Sie Ulogd mit der Option --with-pgsql bei der Übersetzung konfiguriert haben. Es verfügt über die gleichen Parameter, und Sie finden in der Ulogd-Distribution auch eine Beispiel-Tabelle doc/pgsql.table. Je nach PostgreSQL- Version müssen Sie jedoch einen zusätzlichen Parameter angeben: schema=. PostgreSQL ab Version 7.3 unterstützt diese Schemas. Damit können Sie datenbank- übergreifende Views erzeugen. (Für Hintergrundinformationen über Schemas lesen Sie bitte auf http://sql-info.de/postgresql/schemas.html nach.) Wenn Sie PostgreSQL 7.3 oder eine neuere Version einsetzen, müssen Sie zusätzlich ein Schema angeben. PostgreSQL stellt für diese Zwecke das Default-Schema public zur Verfügung.

[PGSQL] table="ulog" schema="public" pass="g3h31m" user="ulog" db="ulogd" host="localhost"

24.3.5 [PCAP] Dieses Output-Plugin protokolliert das Paket im Libpcap-Format. Damit können Sie später die Protokolldatei in Ethereal oder Tcpdump öffnen und analysieren. Dies kann eine spätere forensische Analyse des Angriffs stark erleichtern. Dazu sollte dann aber von dem ULOG-Target auch das gesamte Paket protokolliert werden. Das Plugin benötigt mindestens die Angabe der Pcap-Datei. Zusätzlich können Sie mit dem Parameter sync angeben, ob die Datei synchron (1) oder asynchron (0, Default) geschrieben werden soll.

457 open source library ü i regn e aebn ne i ndem in Sie finden Datenbank der Erzeugung die Für inac ieDatei eine auch tion udnwsnlce neshee u lg zählen: Ulogd zum Unterschieden genauso wesentlichen wird den Er Zu erweitert. vertrieben. Funktionen GPL-Lizenz einige der um unter aber Ulogd wurde wie Ulogd, dem auf siert level=LOG_INFO facility=LOG_KERN [SYSLOG] Protokoll- das die normalerweise die sind Meldungen, Damit den Syslog-Dienst. zu identisch den meldungen über protokolliert Syslog-Plugin Das [SYSLOG] 24.3.7 buffer=200 db="/path/to/sqlite/db" table="ulog" [SQLITE3] der mit Ulogd Sie müssen Datenbank- verwenden, komplettes zu Option ein konfi- SQLite als Server Um schneller oder (DBMS). SQLite Client Managementsystem ist Konfiguration keinen Umgebungen müssen vielen zusätzliche und In Dienst gurieren. ohne keinen benötigen SQL-Datenbank Sie darstellt. einbettbare Programme andere ( SQLite [SQLITE3] 24.3.6 sync=1 file="/var/log/ulogd/ulogd.pcap" [PCAP] 458 ( Specter-Daemon Specter-Daemon Der Der 24.4 iddrPa e aebn,drNm e ael n i rß e SQLite des Größe die und Tabelle der Name der Datenbank, der Puffers. Pfad der sind i üsnhe eilc i roiä e edn Lvl roiy n i proto- die und Priority) (Level, Meldung angeben. der (Facility) Priorität Quelle die kollierende lediglich hier müssen Sie I I I ieGupeugdrMlugnitac nAhniki o e Netfilter- der von Abhängigkeit in auch ist möglich. Markierung Meldungen der für Gruppierung nicht Eine müssen starten. Prozess Sie eigenen möglich. einen ist Netlink-Gruppe jede Netlink-Gruppen mehrerer Gruppierung Die Skript Das Konfigurationsdatei. der Format Anderes Konfigurationsdatei --with-sqlite http://www.sqlite.org/ e e brezn ofiuir haben. konfiguriert Übersetzung der bei sqlite3.table http://joker.linuxstuff.pl/specter/ ulog.conf s ieken -ilohk i iekmlte in komplette, eine die C-Bibliothek, kleine eine ist ) ndeDatei die in i izgnPrmtr i i nee müssen, angeben Sie die Parameter, einzigen Die . specter.conf 4Frgshitn Protokollierung Fortgeschrittene 24 o ihlKitosiba- Kwiatkowski Michal von ) doc/ um. ulogd2specter.pl VrecnsdrDistribu- der -Verzeichnis LOG Tre erzeugt. -Target adl die wandelt 24.4 Der Specter-Daemon library

I Ein weiteres Output-Plugin EXEC kann externe Befehle aufrufen. I Die Output-Plugins MYSQL und PGSQL unterstützen SSL für die Datenbankverbin-

dung. open source I Die Output-Plugins SYSLOG und LOGEMU unterstützen die Protokollierung der IP- und TCP-Optionen, der TCP-Sequenznummern und des MAC-Headers. Specter befindet sich wie Ulogd in aktiver Entwicklung. Die aktuelle Version 1.4 wurde Juli 2005 veröffentlicht. Da es ansonsten in der Anwendung dem Ulogd gleicht und die Dokumentation sehr ausführlich ist, zeige ich hier nur eine Bespiel- konfiguration mit einer kurzen Beschreibung:

plugins { BASE /lib/specter/specter_BASE.so MYSQL /lib/specter/specter_MYSQL.so }

13 { :BASE :MYSQL db mydb host localhost user username pass password table ext_attacks }

15 { :BASE :MYSQL db mydb host localhost user username pass password table int_attacks }

In dem Block plugins definieren Sie die zu ladenden Plugins. Diese werden dann weiter unten konfiguriert. Die weiteren Blöcke beginnen mit der Netlink-Gruppe. Anschließend definieren Sie die zu verwendenden Plugins und geben zusätzliche Parameter an. Wenn Sie nicht die Netlink-Gruppe, sondern die Firewall-Markierung für die Auf- teilung der Meldungen verwenden möchten, müssen Sie zuvor noch einen Block global definieren: global { grouping nfmark

459 open source library pehnnnnctmh e eln-rpe odr isrFirewall-Markierung. ent- dieser ent- sondern Block diese Netlink-Gruppe, jedem der kann vor mehr und Nummern nicht an nun Die 1 sprechen aufteilen. Netlink-Gruppe Firewall-Markierung der der Meldungen sprechend die Specter nimmt Nun 460 } lru 1 nlgroup 4Frgshitn Protokollierung Fortgeschrittene 24 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library isrRcnren ieeRgl udfiirn önnSefledsKonstrukt folgendes Sie können definieren, jeden zu für Regeln Anstatt verwenden: eigene sollen. können eine Administrations- zugreifen Rechner als Firewall die Sie dieser die besitzen, Stellen auf Systeme Secure-Shell fünf deutlich. Netzwerk per Beispiels Ihrem rechner in eines Sie anhand dass einfachsten vor, sich am wird entfernen. Verwendung zu Die oder hinzuzufügen Mitglieder und definieren zu Iptables-Kommando (Test) pe Aamn192.168.0.211 admin 192.168.0.91 -A admin ipset 192.168.0.57 -A admin ipset 192.168.0.31 -A admin ipset 192.168.0.0/24 192.168.0.5 -A --network admin ipset ipmap -A admin ipset -N ipset dem mit Iptables-Befehl den und Kernel Ihren iptables und Sie ipset Wenn 25.1 Kommando Das 25 e Befehl im Der hinzufü- werden Gruppen Gruppe verschiedenen besprochen. einer Die hinzuge- genauer ab. Gruppe zu Abschnitt Gruppenart einer nächsten Ziel der zu von Ziels ein hängt des Mit werden, oder oder testen. fügt Absenders Absender zu des Gruppe Informationen einen einer Welche Sie in gen. Pakets können des Target Ziels des dem oder Absenders des gliedschaft eoioydsPthOMtcgpth ae,see he ü i Verwendung die für Ihnen stehen haben, gepatcht des Patch-O-Matic des Repository adeeFnto ähieMgihetnbee n nenmegnnBfh im- Befehl Kapitel. eigenen eigenes einem ein ihr in ich und widme bietet wurde, Möglichkeiten plementiert mächtige Funktion diese Da verknüpft untereinander auch können Ih- in Gruppen Test dynamisch Die werden. einen Gruppen können. diese für verändern Sie Regeln dass Regeln Ihren interessant, ren in besonders ist und anderen Dabei füllen oder nutzen. zu Port-Nummern zu Werten IP-Adressen, mit von anzulegen, Gruppen Ihnen, Informationen es erlaubt Ipset ab. e le Befehl alten den iptables mst-stsrc|dest --set set -m BfhsennusTarget neues ein -Befehls ipset Ipset ipset ippool itInndeMgihet is rpe nbäggvndem von unabhängig Gruppen diese Möglichkeit, die Ihnen gibt n i aueöie ace u e ac--ai lösen Patch-O-Matic dem aus Patches dazugehörigen die und n e nsrcednosltnPthasPatch-O-Matic aus Patch obsoleten entsprechenden den und u efgn.DrTs rab sInn i Mit- die Ihnen, es erlaubt Test Der Verfügung. zur jST--add-set|--del-set SET -j set PthasdmBase- dem aus -Patch n i ee Match neuer ein und

open source library open source library üfZie üfvrcidn PArse e rpehnu Die hinzu. Gruppe der nächsten IP-Adressen die Netz- verschiedene fügen das wird. Anschließend fünf für gestellt können. IP-Adressen Zeilen Verfügung die werden fünf zur anschließend verwaltet Ipset der 192.168.0.0/24 in Befehl erzeugt, werk dem Gruppe von eine die wird Hier Gruppe, einfachste die ist is nomtoe olnzncs l ifhuggngn i ähtnAb- vor. nächsten Befehle der Die Syntax genaue genügen. die Einführung und Gruppen als die stellen zunächst schnitte sollen Informationen Diese durchgeführt. Prüfung zusätzliche keine wird vorhanden, is ugb önnSemtHlevnSt öe.Hez regnSezunächst Sie erzeugen Hierzu lösen. Sets von Auch zugreifen. Hilfe Gruppe: die 443 zweite mit und eine dass 22 Sie Ports können beiden auch, Aufgabe die bestimm- auf diese Sie ein nur Lediglich darf dürfen. möchten (192.168.0.211) zugreifen Rechner Firewall ter Vielleicht der Verknüp- Ports die untereinander. alle auf auch Admin-Rechner Gruppen erlaubt Funktion einzelner zusätzliche fung interessante sehr besondere, Eine pals- NU ptp- e -e di src, admin --set set -m tcp -p INPUT -A ändern: iptables Iptables-Regel die noch nur Sie müssen adminports Jetzt -b 192.168.0.211 192.168.0.211: admin IP-Adresse die -B für Eintrag ipset den an Gruppe diese Sie binden Nun 1023 443 --to adminports 1 22 -A --from adminports ipset portmap -A adminports ipset -N ipset Typ vom Gruppe neue eine zunächst src wird admin Zeile --set ersten der set In -m 22 --dport tcp -p INPUT -A iptables 462 Gruppen: Informationen. folgenden gespeicherten die Gruppe unterstützt der Ipset verwalten. in Gruppen die von bestimmt Arten Gruppe verschiedene der Art viele Die Sie können Ipset-Befehl dem Ipset-Typen Mit Die 25.2 Gruppe der in Pakets des Absender der ob nun, prüft Regel Diese s.Flsen idn ndeI-des rog s,pütdeRglzstlc,o die ob ( zusätzlich, Ziel Regel die dem prüft mit ist, erfolgt Informationen IP-Adresse die gebundenen an Bindung eine Falls ist. rf clelc,o e urf rab s.Hez brrf is el,o der ob Zeile, diese überprüft Hierzu ist. erlaubt ( Pakets Zugriff des der Absender ob schließlich, prüft I I msae-saeNW- ACCEPT -j NEW --state state -m msae-saeNW- ACCEPT -j NEW --state state -m portmap ipmap pihr PArse drNtwreietshrGröße. identischer Netzwerke oder IP-Adressen Speichert : pihr Portnummern. Speichert : src ndrGruppe der in ) admin dst dst brisimn s en Bindung keine Ist übereinstimmen. ) ist.  ipmap admin reg.Dies erzeugt. iptables vorhanden 5Ipset 25 -Zeile 25.2 Die Ipset-Typen library

I macipmap: Speichert MAC/IP-Adresspaare. I iphash: Speichert IP-Adressen oder Netzwerke identischer Größe. I nethash: Speichert Netzwerke unterschiedlicher Größe. open source I ipporthash: Speichert IP/Port-Paare. I iptree: Speichert IP-Adressen mit einer begrenzten Lebensdauer. Diese verschiedenen Gruppen werden im Folgenden genauer besprochen und mit Beispielen vorgestellt.

25.2.1 ipmap Die ipmap-Gruppe ist eine Bitmap, bei der jede IP-Adresse durch ein einzelnes Bit repräsentiert wird. Sie eignet sich daher sehr gut zur Speicherung nahe beieinander liegender IP-Adressen. Die maximale Größe der Bitmap beträgt 65.536 Adressen und entspricht damit einem Klasse-B-Netzwerk. Eine Bitmap dieser Größe belegt nur 8 kByte Arbeitsspeicher, da pro Adresse ein Bit benötigt wird. Die ipmap-Gruppe ist daher sehr speicherschonend und gleichzeitig sehr schnell, da direkt auf die Information, ob eine Adresse in der Gruppe vorhanden ist, zugegriffen werden kann. Bei der Erzeugung einer neuen ipmap-Gruppe müssen Sie entweder das zu ver- waltendene Netzwerk angeben (--network ) oder die Start- und die Ziel- IP-Adresse definieren (--from --to ). Wenn Sie nicht IP-Adressen, sondern Netzwerke testen möchten, können Sie das auch mit dieser Gruppe bewerkstelligen. Dafür müssen die Netzwerke lediglich eine identische Größe aufweisen. Diese Größe geben Sie gleichzeitig mit der Option --netmask an. Um zum Beispiel eine Gruppe zu erzeugen, in der Sie alle IP- Adressen als Klasse-A-Netzwerke verwalten können, können Sie die folgende Zeile verwenden: ipset -N badnetworks ipmap --network 0/0 --netmask 8

Die entstehende Bitmap ist 256 Netze groß. Sie können nun einzelne Netze hinzufü- gen oder entfernen. Dies erleichtert zum Beispiel eine Prüfung auf die noch nicht zu- gewiesenen und damit nicht erlaubten Netze sehr. Die IANAAssigned Number Au- thority pflegt eine Liste sämtlicher IP-Adressen (http://www.iana.org/assignments/ipv4-address-space). Sie könnten alle hier als Reserved aufgeführten Netze dieser Liste hinzufügen und in der raw-Table bereits alle diese Pakete verwerfen. Hiermit schützen Sie sich vor Spoofing-Angriffen, bei denen der Angreifer diese IP-Adressen nutzt.

25.2.2 portmap Diese Gruppe ist in ihrem internen Aufbau mit der ipmap identisch. Es handelt sich ebenfalls um eine Bitmap mit einer maximalen Größe von 65.536 Ports. Daher kön- nen Sie sämtliche möglichen Ports in einer Bitmap speichern. Genau wie die ipmap- Gruppe ist auch diese Gruppe sehr schnell und benötigt nur wenig Speicherplatz.

463 open source library e rpebtätwebider die- bei Größe wie maximale Die beträgt MAC-Adresse. Gruppe der ser und IP-Adresse einer aus Kombination e.HefrgbnSeetee i tr-udEdI-des mit End-IP-Adresse kByte beschrän- und 512 zu Start- also sinnvoll die Sie Gruppe entweder benötigen der Sie Adressen Größe geben 65.536 die Hierfür sinnvoll, Bei ken. es Byte. pro ist 8 Speicheraufwand Daher auf Arbeitsspeicher. der Bit sich 1 erhöht von muss, IP-Adresse werden gespeichert MAC-Adresse die eküfne e rpe neenne uznkne n oenen IP- einzelne so für anderen und alle können wie nutzen der Gruppe aus untereinander diese Adressen Sie Gruppen da der interessant, Verknüpfungen besonders ist Gruppe Diese -o --to Gruppe die wie nur nicht speichert Gruppe Diese macipmap 25.2.3 in letzten den und ersten mit den Port können verwaltenden Sie zu die Gruppe einschränken. durch der weiter Speicherverbrauch den Größe auch der Sie Angabe können Anwendung tatsächliche die Für 464 n drSedfiirndsNtwr mit Netzwerk das definieren Sie oder an, Achtung Tipp ae iddeMCArseac me l oreArsevon Source-Adresse als immer auch dem MAC-Adresse auswertbar. die Absenderadresse wird als sinnvoll Daher nur ist MAC-Adresse Die der An- in aufbauen. Sie den Netzwerk verwerfen und Ihrem IP-Adressen schließend allen in mit MAC-Adressen Datenbank dazugehörigen eine hiermit können Sie il ü isnZekbsttdeeGup uhnc i Option die noch auch Gruppe diese Sie besitzt Spe- Zweck unterdrücken Netzwerk. diesen Ihrem So in für wird. ARP-Spoofing ziell aufgeführt und IP- Tabelle jedes der wirkungsvoll in nicht sender --matchunset ilMCArseitnctmöglich. nicht ist Ziel-MAC-Adresse s ngoe eznoe nmtDC ewlee eznjedoch Netzen verwalteten DHCP umsetzbar. mit schlecht in nur oder leider Netzen Dies großen haben. IP/MAC- definiert in deren Gruppe ist der Firewall, in Ihre zuvor durch Sie verwer- Pakete Adresskombinationen Pakete noch diese nur Sie kommen gespei- gespeichert Wenn fen, Gruppe bewertet. Gruppe der Treffer der in als in Bereichs könnte, werden des nicht aufgrund die aber IP-Adresse, wurde, chert jede wird Damit nen. ipmap set Mthuddem und -Match Gup u etmt ot ecrne können. beschränken Ports bestimmte auf -Gruppe i i e e regn e rpeagbnkön- angeben Gruppe der Erzeugung der bei Sie die , ipmap Gup 556Arse.D eohzusätzlich jedoch Da Adressen. 65.536 -Gruppe -rm --from SET Tre euz.DeVredn als Verwendung Die genutzt. -Target raw -ewr --network Tbleal aee ee Ab- deren Pakete, alle -Tabelle und ipmap -o --to PArse,snendie sondern IP-Adressen, angeben. . -rm --from 5Ipset 25 und 25.2 Die Ipset-Typen library

Um nun eine IP-Adresse der Gruppe hinzuzufügen, verwenden Sie die folgende Syntax: ipset -N valid_ip_macs macipmap --network 192.168.0.0/24 --matchunset open source ipset -A valid_ip_macs 192.168.0.100%00:50:56:C0:00:03

25.2.4 iphash Es gibt insgesamt drei verschiedene Möglichkeiten, IP-Adressen in einer Gruppe zu speichern: ipmap, iphash und iptree.Währendipmap nahe beieinander liegende IP- Adressen speicherschonend und schnell verwalten kann, ist iphash optimiert, um beliebige, zufällige IP-Adressen aus dem gesamten Adressraum in einer Gruppe zusammenzufassen. Das ist mit der ipmap-Gruppe nicht möglich. Die ipmap-Gruppe kann maximal einen Bereich von 65.536 benachbarten IP-Adressen verwalten. Die iphash-Gruppe besitzt einige Optionen, mit denen Sie bei der Erzeugung der Gruppe ihr Verhalten beeinflussen können. Mit der Option --hashsize setzen Sie die initiale Größe des Hashs (1024). Wenn Sie einen neuen Eintrag hinzufügen, definieren Sie mit --probes , wie viele Versuche für die Einfügung der neuen IP-Adresse durchgeführt werden sollen, bevor der Hash vergrößert wird (8). Mit --resize geben Sie an, wie der Hash vergrößert werden soll (50%). Wenn Sie keine Vergrößerung wünschen, definieren Sie hier 0. Die Anzahl der Versuche (--probes) hat direkte Auswirkungen auf die Geschwindig- keit und die Größe des Hashs. Während kleine Werte (1-3) einen schnellen, aber großen Hash erzeugen, optimieren große Werte (6-10) die Größe des Hashs, erzeu- gen dabei aber einen langsameren Hash. Die Geschwindigkeit hängt linear von der Versuchsanzahl ab. Ähnlich wie bei der ipmap-Gruppe können Sie in dem iphash auch Netzwerke iden- tischer Größe speichern. Dazu definieren Sie bei der Erzeugung des Hashs deren Größe mit --netmask .

25.2.5 nethash Sie können Netzwerke in mehreren Gruppen verwalten. Sowohl die Gruppen ipmap als auch iphash bieten Ihnen die Möglichkeit, auch Netzwerke identischer Größe zu verwalten. Wenn Sie aber Netze unterschiedlicher Größe in einer gemeinsamen Gruppe verwalten möchten, müssen Sie den Typ nethash verwenden. Dieser Typ verfügt über die identischen Optionen wie der iphash: --hashsize , --probes und --resize . Diese Optionen haben auch die gleiche Be- deutung wie beim iphash. Wenn Sie Netze der Gruppe hinzufügen, müssen Sie diese als IP/CIDR-Mask angeben. Die Geschwindigkeit des Hashs ist linear abhängig von der Anzahl der Versuche und der Anzahl der verschiedenen Netzwerkmasken, die von den gespeicherten Netzen genutzt werden.

465 open source library e,etennuddeGupnac esöe.Hefrvredtder verwendet Hierfür zerstören. auch Gruppen die und entfernen gen, hr.DnI-deseec üsnSebidrEzuugdrGup angeben. Gruppe der Erzeugung spei- wieder der Gruppe Sie bei dieser verwenden Sie in Hierfür müssen Portnummern IP-Adressbereich beliebige Den IP-Adressen chern. 65.536 für Sie können hlceOtoe wie Optionen ähnliche nee aaee idi he ewnugudFnto i e Parametern den mit Funktion und Verwendung ihrer in des sind Parameter anderen isrTpelutdeGnreugenrwiee rte rpe ndrSeIP- Sie der in Gruppe, zu dritten Gegensatz weiteren Im einer können. Generierung speichern Adressen die erlaubt Typ Dieser iptree 25.2.7 Der ipporthash 25.2.6 466 Kommando ipset dem Kommando Das Mit 25.3 uäzihz e PArseac ie oti e Syntax der in Port einen auch IP-Adresse der zu zusätzlich i PArse ieLbnduragbn( angeben Lebensdauer eine IP-Adressen die drSegbnfrjd PArsebi izfgnen pzficeLebensdauer spezifische an, eine Gruppe Hinzufügen der beim Erzeugung IP-Adresse der ( jede an bei für Option geben geben genannten Sie Entweder der gespeichert. oder Gruppe mit der Lebensdauer in die Zeit diese Sie für nur wird IP-Adresse fügte I I esdnNmnuddnTpdrGup nee.BiengnTpnmüssen Typen einigen Bei angeben. definieren. Gruppe Optionen der weitere Typ zusätzlich den Sie und Namen den tens eöctwr,wre leRfrne Bnugn o isrGup u an- auf Gruppe dieser von (Bindungen) Referenzen alle werden wird, gelöscht N -N pe Nbdewrsimp-ntok00-ntak8 --netmask [] 0/0 -X --network ipmap badnetworks -N ipset IP% iphash ipporthash identisch. Tipp iri öce i ieoe leGupn eo i rpejedoch Gruppe die Bevor Gruppen. alle oder eine Sie löschen Hiermit : des u rpehnu i rpeeten ahAlu der Ablauf nach entfernt Gruppe selbstständig. IP-Adresse Die die hinzu. Lebensdauer IP- Gruppe entsprechende hier- die das zur einfach Sie Adresse Web-Interface fügt können Web-Interface ein Das möchten, durch erreichen. freischalten mit Zeit erst bestimmte Zugänge eine bestimmte für Sie hinzufügt. Gruppe wenn IP- der Auch Zeit die bezahlte und die nur entgegennimmt für Sie Clients Bezahlung des Programmieren die Adresse geben. das zu bestimm- Netz Web-Interface, eines für ein ein Bezahlung auf Clients nach Zugriff um Betrags, Beispiel ten nutzen, zum Zeit, hervorragend bestimmte Sie eine können Funktion Diese s iebsneeVrat des Variante besondere eine ist iri regnSeen eeGup.Semse ae mindes- dabei müssen Sie Gruppe. neue eine Sie erzeugen Hiermit : ). ipset iptables önnSedeGupnezue,Enrg hinzufü- Einträge erzeugen, Gruppen die Sie können : -rm --from und -ieu --timeout ipmap -o --to ipmap Tp.DeeGup speichert Gruppe Diese -Typs. und oder iphash -ewr --network IP%Port .Jd e hinzuge- neu Jede ). önnSeae für aber Sie können b Insgesamt ab. ipset 5Ipset 25 -Befehl .Die 25.3 Das Kommando ipset library

dere Gruppen gelöscht. Falls diese Gruppe selbst von einer anderen Gruppe referenziert wird, kann der Löschvorgang nicht durchgeführt werden.

I -F []: Hiermit löschen Sie alle Einträge in einer oder allen Gruppen. open source I -E : Hiermit benennen Sie eine Gruppe um. I -W : Dies tauscht zwei Gruppen im Kernel aus. Damit können Sie sehr einfach eine Gruppe offline vorbereiten und für die Verwendung atomar aus- tauschen. Es entsteht kein Zeitfenster, in dem während des Aufbaus der Gruppe diese nicht vollständig definiert ist. I -L []: Diese Option zeigt den Inhalt einer oder aller Gruppen an. Mit der Option -n erzeugen Sie eine numerische Ausgabe. Die Option -s sortiert die Einträge. I -S: Diese Option sichert die Einträge einer oder aller Gruppen auf der Standard- ausgabe. Zum Speichern können Sie die Ausgabe in eine Datei umleiten und später mit der Option -R wieder einlesen. I -R: Hiermit stellen Sie die gespeicherten Informationen wieder her. Diese Option liest Ihre Befehle über die Standardeingabe. Wenn Sie die Datei nicht mit der Option -S erzeugen möchten, sondern dies ma- nuell oder über ein anderes Skript erreichen, achten Sie bitte darauf, dass die Reihenfolge der Befehle wichtig ist. Als letzter Befehl ist auch jedes Mal der COM- MIT anzugeben! Dieser Befehl beendet die Liste der Einträge. Zur Verdeutlichung speichern Sie einfach mit der Option -S die Einträge in einer Datei und nehmen diese als Beispiel. I -A : Diese Option fügt einen Eintrag einer Gruppe hinzu. I -D : Diese Option löscht einen Eintrag von einer Gruppe. I -T : Hiermit können Sie testen, ob ein Eintrag in einer Gruppe enthalten ist. I -B --binding : Hiermit können Sie einen Eintrag in einer Gruppe zusätzlich an eine andere Gruppe binden. Damit dieser Eintrag später zutrifft, muss auch die gebundene Gruppe zutreffen. I -U : Hiermit lösen Sie die Bindung eines Eintrags. I -H: Dies zeigt Ihnen die Hilfe an.

467 open source library 468 Tipp ag,deashißn ugfltwr,bee ssc n i Gruppe die auszutauschen. an, anschließend sich und es erzeugen ver- bietet zu Gruppe wird, leeren aufgefüllt neuen anschließend einer die langt, Erzeugung durch- eine Gruppen die der müssen, Änderung führen administrative eine Sie wenn Immer 5Ipset 25 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library ed ntnzrVrüugsee,wr i ukinüe ed ntnrealisiert. Knoten beide Solange über realisieren. Funktion die Knoten wird aktiven stehen, Verfügung zwei zur mit Knoten beide auch Cluster Hochverfügbarkeit Fortgeschrittene Hot- Hot-Standby-Cluster. die (Slave, einen übernimmt können auch Masters man passiv des nennt Knoten Funktion Dies zweite die Standby). der Fehlerfall aktiv während im nur Verfügung, Knoten Hot-Standby zur beiden als Funktion der die einer stellt und ist (Master) Hochverfügbarkeits-Cluster können. ersetzen einfachen gegenseitig einem sich Bei die implementiert, meist zwei- Knoten Lösungen ein zwei derartige durch aus werden Funktion Cluster Daher die als leis- Systems wird. nur primären aufrechterhalten das des Backup-System Sie Ausfalls tes des können Falle müssen, im garantieren wenn Verfügbarkeit ten, derartige eine Sie Falls bereitet Reboot Kopfschmerzen. ausfallen oder schon Jahr Betriebssystems Umständen im des unter Minuten) Sys- (52 Upgrade da eine 0,01% das Stromausfall, gar aber dass einfacher oder wird bedeutet, Ein Minuten) 46 darf. Meist Das Stunden, gefordert. geschaffen. (8 99,99% 0,1% Ersatz nur sogar Tagen tem haben oder 2 Jahr vielleicht 99,9% bis pro Sie von 1 können Ausfall Verfügbarkeit Dies einem von Minuten. Bei innerhalb Bei 36 gewährleisten. sicherlich darf. und System Sie ausfallen Stunden einfachen Jahr 15 einem im Tage, mit 1% 3 noch Ver- nur das 99%ige sie sind eine dass Tagen Firewall das, 365 Ihre bedeutet Wenn soll, gemessen. aufweisen Prozent fügbarkeit Ausfall in wird ein Verfügbarkeit dass Die das, der bedeutet ihren Ausfall ist, nicht erreichen hochverfügbar Ein E-Mails derFunktionsehrseltenist. Firewall hierzu. wichtige eine und Firewall Wenn gelangen, Kunden Website Empfänger. Potenzielle die die Kosten. auf hohe auch nicht verursacht können Sys- zählt Internetverbindung geschäftskritische der Unternehmen oder an Firewall vielen Anforderung Problem? übliche In das ist heute teme. wo eine und Hochverfügbarkeit, ist ist Was Hochverfügbarkeit ganz nicht noch und 26.1 neue ganz die auch ich das betrachte über Wege, Zustandssynchronisation verschiedene Dabei fertige Ihnen erreichen. soll. zeigt sein zu Kapitel Dieses hochverfügbar Ziel Firewall-Systems muss. des Firewall sein Ausfalls erste eines gewährleistet trotz Ihre weiter Internetverbindung ir- wo die Sie dass geraten, werden bedeutet, Punkt Das haben, implementiert den und an geplant gendwann Firewalls verschiedene Sie Wenn 26 ohefgaeFirewalls Hochverfügbare ct_sync .

open source library open source library wshndnKoe ycrnsetwerden. Hot-Standby Zustandsinformationen synchronisiert der die Knoten auch Masters den pas- müssten des zwischen Firewall kann, Ausfall übernehmen die beim komplett Die Damit Paket Funktion ändert. wird. die ein verworfen Paketen ob oder betrachteten allein, darf bereits sieren nicht den Zustands- entscheiden von eine Firewall-Regeln auch Abhängigkeit denn statischen sondern in aus, auf, sich Regeln die statischen Probleme Diese tabelle, ihre tauchen Firewalls. nur zustandsorientierte nicht Dennoch werten sind wird. entstehen. Firewalls Iptables/Netfilter verändern nicht wie Systemen Firewalls daher zwei moderne auf kann unwahr- gleichzeitig sehr Konflikt Regeln es Ein die ist dieser werden, Regelwerks dass vorgenommen des synchronisiert scheinlich, Modifikationen Administrator Cluster die geschulten einem Da stati- einen wird. in einen verändert durch Knoten über selten alle nur doch und über verfügt kann einfach Firewall werden sehr Eine Firewalls? der bei Regelsatz, Problem schen das nun ist erforder- Wo Mechanismen gewährleisten. intelligente in zu sehr Feld Datenkonsistenz die identische sind um das Hier lich, auf kann. Schreibzugriff erfolgen ein Datenbank theo- gleichzeitig einer beim Knoten Active-Active-Clusters, beiden eines auf Realisierung retisch die wird komplizierter Noch zum realisiert. Webservern Storage) (SAN) (Shared Storage-Area-Network und Dateisystem einem Datenbanken genutztes in gemeinsam Beispiel Bei ein einem durch verloren. häufig bei Hot-Standby dies Masters Informationen wird den des die auf sind Ausfall sofort Ansonsten anschließenden auch werden. Einträge Änderungen vorhandene (synchronisiert) diese oder übertragen müssen werden Beispiel so vorgenommen zum werden, Datenbank weil geändert Daten der modifiziert, diese dynamisch in Werden Systems Einträge des werden. neue Verwendung synchronisiert der einmalig Da- über bei einfach statische jedoch Hot-Standby-Knoten um diese dem sich können es auf so Handelt auch ten, verfügen. als Datenbanken Webserver- Master oder oder Webseiten dem Datenbank- identische iden- auf Ein der sowohl Funktion. Nutzung muss der gemeinsame Bereitstellung Cluster die die ist für Cluster Daten einem tischen bei Problem Active-Active-Cluster wesentliche Das als ungenutzt, werden Zeit Cluster meiste Diese die eingesetzt. nicht bezeichnet. Funktion. sinnvoll Backup-Hardware komplette die wird die ist sondern Knoten Konstellation zweite der dieser übernimmt In ausfällt, Knoten ein Sobald o e ugflee ytmafdsEstsse ealse.Wn u bei- 470 auf Wenn veranlassen. Ersatzsystem IP-Adressen das der auf Übernahme die System Ausfall ausgefallenen Ausfallsicher- einem die dem bei Clusterlösungen und von verfügbaren herstellen der Systeme aufzubauen. einer der Firewall mit heit hochverfügbare nur eine dann einfach, müssen ge- recht Sie Voraussetzungen es kein diese und ist Sie müssen können, Sobald definieren währleisten dürfen. Pakete verwenden ausgehende Masquerading für oder Regeln auch NAT sowohl Sie als dass Pakete bedeutet, eingehende Das die für überwacht. Firewall nicht die Verbindungen wenn der werden, Zustände gewährleistet kann Hochverfügbarkeit einfache Hochverfügbarkeit Eine Einfache 26.2 6Hcvrübr Firewalls Hochverfügbare 26 26.3 Hochverfügbarkeit bei zustandsorientierten Firewalls library den Systemen identische Regelsätze zum Einsatz kommen, ist die Funktionalität sofort wiederhergestellt. Da keine Zustandsinformationen gespeichert werden, müs-

sen diese auch nicht zwischen den Firewalls synchronisiert werden. Sämtliche Ver- open source bindungen laufen ohne Unterbrechung weiter. Nun ist dieses Buch aber kein Buch über ipchains (eine zustandslose Firewall), son- dern betrachtet mit Netfilter/Iptables eine zustandsorientierte Firewall. Sicherlich kann man auch mit Iptables zustandslose Firewalls konfigurieren, allerdings ist das unter sicherheitstechnischen Gesichtspunkten nicht sinnvoll. Daher werde ich die- sen Punkt hier nicht weiter ausführen und direkt zur Hochverfügbarkeit bei einer zustandsorientierten Firewall übergehen.

26.3 Hochverfügbarkeit bei zustandsorientierten Firewalls

Natürlich können Sie auch bei einer zustandsorientierten Firewall denselben Ansatz wählen, wie ich ihn gerade bei der zustandslosen Firewall beschrieben habe. Sie wählen eine Cluster-Software Ihrer Wahl (zum Beispiel Heartbeat oder KeepAlived) und konfigurieren diese so, dass sie bei Ausfall des Master-Nodes automatisch ein Fail-Over zum Hot-Standby durchführt. Bei diesem Fail-Over werden automatisch von der Cluster-Software auch die IP-Adressen übertragen. Verfügt nun der Hot- Standby-Node über ein identisches Regelwerk, ist eine gewisse Funktionalität sofort wiederhergestellt. Sie können sofort wieder neue Verbindungen über die Firewall aufbauen. Leider sind alle zum Zeitpunkt des Fail-Overs aufgebauten Verbindun- gen nun tot. Die Information, welche Verbindungen von der ausgefallenen Firewall zugelassen wurden, befand sich in deren Zustandstabelle. Deren Inhalt ist verloren und steht der neuen Firewall nicht zur Verfügung. Daher kennt diese nicht die vor dem Fail-Over existenten Verbindungen und wird diese nicht erlauben. Wenn Sie den Verlust der aufgebauten Verbindungen beim Fail-Over akzeptieren können, ist die Realisierung dieser Hochverfügbarkeitslösung die einfachste und eine sehr unproblematische Variante.

Tipp: Automatische Erkennung aufgebauter Verbindungen nach dem Fail-Over Sie können mit dieser Lösung, wenn Sie kein NAT einsetzen, sogar in vielen Fällen echte Hochverfügbarkeit garantieren. Dafür müssen Sie jedoch Ihre Regeln unter Umständen anpassen. Die Wiedererkennung aufgebauter Verbindungen nach einem Fail- Over ist insbesondere für Langzeit-TCP-Verbindungen wichtig. Das bedeutet, dass der Hot-Standby nach einem Fail-Over be- sonders diese Verbindungen erkennen und wieder in seine Zu- standstabelle aufnehmen muss. Der Connection-Tracking-Code von Netfilter ist hierzu in der Lage. Bei dem Protokoll TCP werden die folgenden zwei Pakete als neue Pakete (State: NEW) akzeptiert:

471 open source library 472 ITBE AFRAD- tt SALSE,EAE jACCEPT -j ESTABLISHED,RELATED state -m FORWARD -A $IPTABLES ACCEPT -j ESTABLISHED,RELATED state -m FORWARD -A $IPTABLES eafam ie le ebnugnc ie alOe oder Fail-Over einem nach Wie- Verbindung Eine akzeptiert, handelt. alten Verbindungsaufbau TCP-SYN-Paket einer ein als um deraufnahme Paket tatsächlich sich ein es dann wenn nur wird Nun 22 --dport tcp -p $EXTDEV -o $INTDEV -i FORWARD -A $IPTABLES $EXTDEV=eth1 $INTDEV=eth0 die Zustand dem trägt mit und Zustandstabelle der Verbindungsaufbau Established in die als wieder akzeptiert sofort Paket so Verbindung Server, dieses dieses den der auch Firewall an Sendet Firewall kennt. TCP-ACK-Paket die nicht ein Verbindung wird jedoch die Client sie sendet, da zulassen, Client nicht weiteres Paket den ein Server über an der Hot-Standby Die nun TCP-ACK-Paket Wenn Zustandstabelle. der unbekannt. die daher verfügt über ist nicht Verbindung TCP-ACK-Bit. so aber Fail-Over, das Regelsatz, identischen zum lediglich den nun tragen Verbindung austauscht, es der Server Kommt dem Beendigung mit wei- zur nun SSH- er Alle Client Firewall bis eintragen. der wird eine Zustandstabelle die die aufbaut, Pakete, Ihrer Client und teren in Internet Verbindung interner durchlaufen, dem die TCP-Handshake wird ein in kompletten Server nun den einem Fail-Over zu dem Verbindung vor state Wenn -m 22 --dport tcp -p $EXTDEV -o $INTDEV -i FORWARD -A $IPTABLES $EXTDEV=eth1 $INTDEV=eth0 is ukinlttitnctggbn enSei e eenzu- Regeln den in Sie Option wenn die gegeben, sätzlich nicht ist passieren. Funktionalität Hot-Standby Diese den auch dann dürfen Servers, des und e alOe ohrvradn ebnugnekne n au- ei- erlauben: und nach wieder erkennen Firewall tomatisch Verbindungen Ihre vorhandene kann vorher Fail-Over verwenden, nem Regeln folgende Sie Wenn I I --syn ACCEPT -j NEW --state e ebnugaseash.Dee ae brür ieun- Zustand eine den ei- überführt in sofort Aufbau Paket Verbindung Dieses dem bekannte ausgetauscht. nach Verbindung werden ner Pakete Diese TCP-ACK-Pakete. Ver- eine normalerweise auf. bauen bindung Pakete Diese TCP-SYN-Pakete. msae-saeNW- ACCEPT -j NEW --state state -m i.Al etrnPkt isrVridn,dsClients des Verbindung, dieser Pakete weiteren Alle ein. --syn angeben: 6Hcvrübr Firewalls Hochverfügbare 26 ESTABLISHED  .  26.4 Praktische Implementierung mit KeepAlived library

auch einem Neustart der Firewall ist nicht mehr möglich. Die Ver- bindungen »hängen« und müssen komplett neu aufgebaut werden.

Auch wenn Sie den Parameter /proc/sys/net/ipv4/netfilter/ip_conn open source track_tcp_loose=0 setzen, funktioniert dies nicht mehr (siehe Abschnitt 19.4.8). Außerdem funktioniert die Wiederaufnahme von alten Verbindun- gen nicht richtig, wenn die Firewall zusätzlich noch ein Masquera- ding oder ein N:1-NAT durchführt.

26.4 Praktische Implementierung mit KeepAlived

Um nun eine derartige hochverfügbare Firewall aus zwei Knoten zu imple- mentieren, benötigen Sie eine Software, mit der Sie die Verfügbarkeit prüfen und einen Fail-Over durchführen können. Ein Kandidat für diese Aufgabe ist KeepAlived. Diese Software von dem Linux-Virtual-Server-Projekt (LVS) ist ein Userspace-Daemon, der die Gesundheit der Cluster-Knoten überwacht und einen Fail-Over durchführen kann. Sie können die KeepAlived-Software von der Home- page http://www.keepalived.org herunterladen. Die KeepAlived-Software ist aber auch Bestandteil von vielen Distributionen. Prüfen Sie zunächst, ob Ihre Distribution ein Paket zur Verfügung stellt. Nach der Installation müssen Sie KeepAlived konfigurieren. KeepAlived soll eine hochverfügbare Firewall realisieren. Wenn wir für einen Moment die Firewall-Regeln vernachlässigen, handelt es sich bei der Funktion, die wir hochverfügbar anbieten möchten, um die Routing-Funktionalität der Firewall. Dass die Firewall nebenbei auch noch filtert, ist ja nur ein zusätzliches Bonbon. Speziell für diesen Zweck imple- mentiert KeepAlived das Virtual Router Redundancy Protocol (VRRP, RFC2338).

Tipp Das VRRP-Protokoll ist möglicherweise durch Patente geschützt. Sowohl Cisco (http://www.ietf.org/ietf/IPR//VRRP-CISCO)alsauch IBM (http://www.ietf.org/ietf/IPR/NAT-VRRP-IBM) behaupten, dass das VRRP-Protokoll ihre Patente verletzen würde. Deshalb hat das OpenBSD-Projekt mit dem Common Address Redundant Proto- col (CARP) ein patentfreies und sicheres Protokoll geschaffen. Mit UCARP, einem Userspace-Daemon (http://www.ucarp.org), kann die- ses Protokoll auf Linux und BSD benutzt werden. Ich verwende hier den KeepAlived mit VRRP, da dies auch die bevorzugte Variante desNetfilter-Teamsist.

So können Sie zwei oder mehr redundante Router zusammenfassen, so dass sie sich als ein virtueller Router dem lokalen Netz präsentieren. Hierzu beobachtet KeepAlived mit dem VRRP-Protokoll die redundanten Router und deren Gesund- heit und wählt einen Master-Router, der zusätzlich zu seiner realen IP-Adresse die

473 open source library alived.conf rpisac E1{ IP-Adresse VE_1 virtuelle vrrp_instance Externe ! } { IP-Adresse VI_1 virtuelle vrrp_instance Interne ! } { VG1 vrrp_sync_group Datei der in erfolgt KeepAlived-Daemons des Konfiguration Die Master. den an wieder Router-IP-Adresse ver- virtuelle wieder die später Slave Master als der der übergibt werden Ist übernehmen so Router-IP-Adresse. und fügbar, Router virtuelle Masters die weiteren des Ausfall Gesundheit Alle dessen die bei erhält. kontrollieren Diese Routers bezeichnet. virtuellen Slave des Adresse virtuelle 474 uhniain{ authentication 100 priority 2 virtual_router_id eth0 lvs_sync_daemon_interface eth1 interface MASTER state } { virtual_ipaddress } { authentication 100 priority 1 virtual_router_id eth0 interface MASTER state } { group uhtp AH auth_type eth0 dev 192.168.1.255 brd 192.168.1.1/24 password auth_pass AH auth_type eth1 eth0 ieBipedtifrennMse önefledrae aussehen: folgendermaßen könnte Master einen für Beispieldatei Eine . Tipp a RPPooolitvndrItre niern akForce Task Rou- kommerziellen unterstützt. Engineering vielen ebenfalls von tern Internet wird und der worden spezifiziert von (IETF) ist VRRP-Protokoll Das 6Hcvrübr Firewalls Hochverfügbare 26 /etc/keepalived/keep 26.4 Praktische Implementierung mit KeepAlived library

auth_pass password }

virtual_ipaddress { open source 192.168.2.1/24 brd 192.168.1.255 dev eth1 } }

Die entsprechende Datei für den Slave hat folgenden Inhalt: vrrp_sync_group VG1 { group { eth0 eth1 } } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 1 priority 50 authentication { auth_type AH auth_pass password } virtual_ipaddress { 192.168.1.1/24 brd 192.168.1.255 dev eth0 } } vrrp_instance VE_1 { state BACKUP interface eth1 lvs_sync_daemon_interface eth0 virtual_router_id 2 priority 50 authentication { auth_type AH auth_pass password } virtual_ipaddress { 192.168.2.1/24 brd 192.168.1.255 dev eth1 } }

Wichtig ist, dass sowohl der Slave als auch der Master die identische vir- tual_router_id für die jeweilige Instanz besitzen. Jede Instanz ist für eine virtuelle IP-Adresse des Routers verantwortlich. Damit diese IP-Adressen beim Ausfall

475 open source library äln aseüe ie ashnQelotvrüe n i aeeverwerfen. Pakete Verbindung die der und zu verfügen Timeout. nicht Quellport zum bis falschen aber hängt einen Pakete einen Verbindung sicherlich über Die die oder entweder sie ist, wird NAT-Ports da frei Webserver des noch zählen, 1027 Wahl Der wie Port der dieser wählen. befindet bei da Zustand anderen er verändern, nicht wird demselben gar Fail-Over, in Port dem nicht den vor aber Verbindung Master dieser die alte Firewall-Clusters sich der des Da Knoten aufnehmen. zweite 3.0.0.1:1275 der wieder von wird nun Fail-Over Verbindung dem die Nach wird Webserver den Für 1275. aufgebaut. Port der es ist i nshie,i ece utn e eplvdDeo u ismSystem diesem auf KeepAlived-Daemon der soll: Zustand starten welchem in entscheiden, Sie otas isritntrihsakahni o e nee eaeatvnund aktiven (Abbildung gerade Beispiel anderen unserem In den Verbindungen. von aktiven abhängig freien Vergangenheit stark geeigneten sondern der natürlich nächsten IP-Adresse, in ist den die sie Dieser nur Verbin- wählt aus. nicht genattete Hierfür Port NAT andere modifizieren. beim eine Quellport Firewall durch den 1027. die bereits auch Quellport wird Firewall den Dann der verwendet belegt. auf Client1 dung jedoch Der zu ist auf. Verbindung Port eine Internet Firewall Dieser dem aus- Ihre durch in UDP-Port baut oder Webserver Client1 TCP- ein einem den vor, auch sich sondern Sie Stellen IP-Adresse, tauscht. die nur nicht häufig rewall wshndnvrcidnnSae 5,4,4 t..MtdmParameter leicht dem Priorität Mit die etc.). Sie 48 49, variieren (50, Slaves Slaves mehreren verschiedenen Bei den zwischen ist. Master der Systeme beiden ue ürn asen iealbienmMsurdn drN:1-SNAT oder vor Masquerading sich einem Sie bei müssen Firewall Firewall- verstehen, eine zu hochverfügbarer dass das Ihr führen, Um Augen wird funktionieren. richtig nutzen, mehr Masquerading nicht Cluster oder SNAT Masquerading/NAT Sie und Sobald Hochverfügbarkeit 26.5 einer in sie werden werden, übertragen gemeinsam beide vrrp_sync_group auch IP-Adresse einer 476 i aafahe,ds i Hwhe,d i ASAtetfiirn a Kenn- Parameter das PASS-Authentifizierung sollten Der die Authentifizierung austauscht. da der Klartext wählen, AH Bei im Sie Routers. wort dass virtuellen achten, darauf des Sie IP-Adresse externe die ieI-des ugtuctwre.De s e äfiseFl e NT aqeaigbe- Masquerading wird. SNAT. zugewiesen dynamisch des IP-Adresse Fall diese häufigste dass Umstand, der den ist dann Dies Linux unter werden. zeichnet ausgetauscht IP-Adresse eine e let l tnadGtwydevruleI-des e otr zuweisen: nutzen! Firewall Routers hochverfügbare des inter- neue IP-Adresse allen Ihre Sie nur virtuelle können nun als die Dann müssen 192.168.1.1/24. Standard-Gateway sich Sie als übernehmen. System Master Funktion Clients der erste die nen Sobald Slave das übernehmen. der wird IP-Adresse wird Netz virtuelle ausfällt, starten, getrenntes die KeepAlived-Daemon und eigenes konfigurieren den ein Master nun auf sogar Sie oder Informatio- Wenn diese halten sinnvoll, zu es Netz ist internen Firewall auszuweichen. einer dem Auf in KeepAlived-Daemons soll. nen den erfolgen zwischen Instanz diese Kommunikation für die die über Netzwerkkarte, 1 E nN1SA s i oreNT e e il esheeeAsne-PArse gegen Absender-IP-Adressen verschiedene viele dem bei Source-NAT, ein ist N:1-SNAT in MASTER uamneas.DevreeePirttetcedt ece der welches entscheidet, Priorität vergebene Die zusammengefasst. oder BACKUP .Die virtual_ipaddress lvs_sync_daemon_interface s imldeitreudeinmal und interne die einmal ist 6Hcvrübr Firewalls Hochverfügbare 26 enetdie definiert state 1 können i Fi- die 26.1 ) 26.6 Zustandssynchronisation mit ct_sync library

Verbindungen: Von: Client1:1027 Von: Firewall:1275 Firewall:1275 > Web-Server:80 open source An: Web-Server:80 An: Web-Server:80 Master Client 1 Internet

Nach dem Failover: Web-Server Von: Firewall:1027 An: Web-Server:80

Hot-Standby

Abbildung 26.1: NAPT (Network Address and Port Translation) macht bei einem einfachen Firewall-Cluster einen Strich durch die Rechnung.

Sobald Sie NAT einsetzen, ist es daher zwingend erforderlich, dass die Zustands- tabelle von dem Master auf alle Slaves in dem Cluster synchronisiert wird, da die hier gespeicherten Informationen (NAT) für die Modifikation der Pakete beim NAT der Verbindung zwingend erforderlich sind. Diese Zustandssynchronisation kann mit ct_sync durchgeführt werden.

26.6 Zustandssynchronisation mit ct_sync

Viele kommerzielle Firewalls verfügen seit einigen Jahren über eine Synchronisa- tion der Zustandstabelle in einem Firewall-Cluster. Selbst OpenBSD hat mit eine seit Jahren stabile Implementierung dieser Funktion. In dem Linux-Kernel ist bis heute keine derartige Lösung integriert. Bisher existiert nur Beta-Code, der sich jedoch mit einigen wenigen Einschränkungen bereits sehr gut einsetzen lässt. Dieser Code ist für den Linux-Kernel 2.4.26 und den Linux-Kernel 2.6.10 verfügbar. Er implementiert mit ct_sync ein Connection Tracking-Synchronisationsframework, das den Aufbau eines Hot-Standby-Clusters ermöglicht. Da die Entwicklung hier noch stark im Fluss ist, empfehle ich Ihnen bei Interesse die Netfilter- Failover-Mailingliste zu abonnieren. Das Volumen dieser Mailingliste ist aktuell sehr gering und stellt daher keine Belastung dar. Sie finden die Mailingliste auf http://lists.netfilter.org/mailman/listinfo/netfilter-failover.

477 open source library 661Installation 26.6.1 478 Dateien betroffenen die Ihnen werden sein, erfolgt Codes angezeigt. Update des beim Update ein Sollte 4351. Revision $ Befehl den Ab- dort $ regelmäßigen und in wechseln Sie Verzeichnisse sollten bleiben, angelegten aufrufen: zu die Laufenden in dem ständen auf Updates über Um http://svn.netfilter.org/netfilter/trunk/netfilter-ha co http://svn.netfilter.org/netfilter/branches/netfilter-ha/linux-2.6 svn co $ svn dem $ aus Befehlen folgenden den dem mit in Code auschecken: Moment den Netfilter-Subversion-Server den können im und Sie findet statt. 2.6.10 Entwicklung 2.6.10 Linux-Kernel aktuelle Linux-Kernel den Die für verfügbar. Versionen 2.4.26 verschiedenen Linux-Kernel zwei in ist Code Der v update svn linux-2.6 cd Tipp Achtung h i ogne eelasdmNetfilter-Subversion-Server dem Sie können aus möchten, Befehl experimentieren folgendem auschecken: Code mit dem ihn mit Sie Wenn werden. un- eingesetzt lediglich NAT kann auf und Verzicht fehlerbehaftet ter sehr ei- noch Aufbau aber Zeitpunkt aktuellen 2005) den zum (Oktober ist schon Code Dieser auch Active-Active-Clusters. nes ermöglichen Entwicklungen Neueste dem So von NAT-Helfermodulen. die oder FTP-Datenverbindungen, Conntrack- nicht von können noch erlaubt Verwendung 2005) die (Oktober Entwicklungsstand aktuelle Der v ohttp://svn.netfilter.org/netfilter/branches/netfilter-ha/linux- co svn $ a.SesltndeNtle-alvrMiigit ebctn um beobachten, erfahren. Netfilter-Failover-Mailingliste zu Änderungen die diesbezügliche sollten Sie bar. enSeafdeeHlemdl ü i ukinlttIhrer Funktionalität die für Helfermodule ist sind, diese angewiesen auf Firewall Sie Wenn iir edn mGgnel i nedn iie ouehat Module einiger mit Kombination Anwendung in die schon synchro- auch Gegenteil, nicht Im noch werden. werden, nisiert zugelassen und erkannt Helfermodul 2.6-actact ct_sync ct_sync kul ü i ih einsetz- nicht Sie für aktuell u enlPncgeführt. Kernel-Panic zur 6Hcvrübr Firewalls Hochverfügbare 26 ip_conntrack_ftp v update svn  - 26.6 Zustandssynchronisation mit ct_sync library

Nun müssen Sie Hand an Ihren Kernel legen, um ct_sync zu übersetzen. Zunächst benötigen Sie einen Vanilla-Kernel von http://www.kernel.org. Entweder wählen Sie

die Version 2.4.26 oder 2.6.10. Wenn Sie dieses Buch lesen, werden möglicherweise open source auch schon weitere Kernel unterstützt. Entpacken Sie den Kernel, und wechseln Sie in das entstandene Verzeichnis. Dann kopieren Sie aus dem ct_sync-Quelltext das Verzeichnis ./patches in den Kernel-Quelltextbaum. Außerdem kopieren Sie einige Dateien aus dem Verzeichnis ./ct_sync in den Kernel-Quelltextbaum:

$ tar xjf linux-2.6.10.tar.bz2 $ cd linux-2.6.10 $ cp -r ../svn/linux-2.6/patches . $ cp ../svn/linux-2.6/ct_sync/*.h include/linux/netfilter_ipv4/ $ cp ../svn/linux-2.6/ct_sync/*.c net/ipv4/netfilter/

Nun müssen Sie die kopierten Patches anwenden. Hierfür benötigen Sie den Befehl . Falls dieser Befehl nicht Bestandteil Ihrer Linux-Distribution ist, können Sie ihn von http://savannah.nongnu.org/projects/quilt herunterladen und installieren. Um die Patches anzuzeigen und anschließend anzuwenden, verwenden Sie die folgen- den Befehle:

$ quilt unapplied $ quilt push -a

Nun können Sie den Kernel wie gewohnt konfigurieren und übersetzen. Wenn Sie bereits einen Kernel mit derselben Version verwenden, editieren Sie bitte die Da- tei Makefile im Wurzelverzeichnis des Kernel-Quelltextbaums und tragen dort eine EXTRAVERSION ein, um spätere Konflikte der Kernel untereinander zu vermeiden:

EXTRAVERSION = -ha

Für die Konfiguration und Übersetzung verwenden Sie die folgenden Befehle:

$ make xconfig $ make dep $ make bzImage $ make modules $ make modules_install $ make install

Bei der Konfiguration sollten Sie dann die Synchronisation der Zustandstabelle aus- wählen (Abbildung 26.3). Wenn Sie den Active-Active-Cluster konfigurieren, achten Sie bitte auf Abbildung 26.2. Diese Einstellungen finden Sie am Ende unter Device Drivers/Networking Support/Networking Options/Network Paket Filtering (replaces ip- chains)/Netfilter Configuration. Damit Sie die Optionen für den Active-Active-Cluster angezeigt bekommen, müssen Sie NAT deaktivieren! Nach dem Reboot des neuen Kernels steht Ihnen die Zustandssynchronisation zur Verfügung.

479 open source library ednkann. werden lvs u e lv edndePkt nggneomn o e Zustands- alle der an von Multicast-Protokoll entgegengenommen, einem Pakete (Option die mit ignoriert werden Paket überwachung Slave dieses dem überträgt Auf und Slaves. Paket einem in bidn 63 e e o-tnb-lse önnSedez synchronisierenden zu die auswählen. Sie Markierungen können durch Hot-Standby-Cluster Verbindungen dem Bei 26.3: Abbildung sein. deaktiviert NAT muss Active-Active-Cluster den Für 26.2: Abbildung 480 wird Queue Diese Connection wird. gespeichert einen Event-Queue dem löst einer von Aktualisierung in ak- Pakets der Diese des Der aus, Zustandstabelle. Zustandsinformationen Tracking-Event ab. die die Schritten ermittelt aktualisiert mehreren Paket, und jedes in analysiert läuft Master Zustandstabelle tive der Synchronisation ct_sync Die von Funktion 26.6.2 e uu n i aiaeGöedrQee eo i berettwre muss, werden abgearbeitet sie Der bevor werden. Queue, konfiguriert der Größe kann maximale die und Queue ser ee.Dretair i edne n kulsetdeZsadtble Auch Zustandstabelle. die aktualisiert und Meldungen die im extrahiert Der geben. ct_sync ct_sync RcieTra xsteten uu,drnmxml rß eingestellt Größe maximale deren Queue, eine exisitiert -Receive-Thread Sne-hedagabie.Dsmxml le e vnsi die- in Events der Alter maximale Das abgearbeitet. -Sender-Thread ct_sync notrack=1 Sne-hedvrak i u4Nachrichten 4 zu bis verpackt -Sender-Thread )undanden ct_sync 6Hcvrübr Firewalls Hochverfügbare 26 RcieTra über- -Receive-Thread 26.6 Zustandssynchronisation mit ct_sync library

Für die Übertragung der Pakete wird ein UDP-basiertes Multicast-Protokoll ver- wendet, das das Netfilter-Team speziell für diesen Zweck entwickelt hat. Dieses

Protokoll bietet keinerlei Authentifizierung oder Verschlüsselung und ist auf ein open source sicheres Medium, zum Beispiel ein dediziertes Netzwerk (Cross-Over Kabel), an- gewiesen. Als Schutz vor Paketverlust versieht der Master jedes Paket mit einer Sequenznummer, so dass der Slave die Vollständigkeit kontrollieren und ein verlo- renes Paket neu anfordern kann. Das Protokoll unterstützt außerdem die initiale Synchronisation eines Slaves mit einem Master. Dies ist erforderlich, da nach einem Neustart eines Slaves, zum Bei- spiel aus Wartungsgründen, der Slave zwar Synchronisationsmeldungen erhält, es sich dabei aber nur um Änderungen der Zustandstabelle handelt. Der Slave besitzt aber nach dem Neustart eine leere Zustandstabelle. Um diese zu füllen, müssen sämtliche Informationen des Masters übertragen werden. Diese Komplettsynchro- nisation wird auch durchgeführt, wenn zu viele Pakete zwischen dem Master und dem Slave verloren gegangen sind oder der Master ein verlorenes Paket nicht mehr in seinem Backlog findet. Die Anzahl der verlorenen Pakete, ab der eine Neusyn- chronisation auftritt, ist ebenfalls konfigurierbar. Bei dem Laden des ct_sync-Kernel-Moduls können Sie vier Parameter angeben: I syncdev=ethX: Die Angabe der Netzwerkkarte für die Synchronisation ist erforder- lich. Es sollte sich dabei um eine Netzwerkkarte handeln, die über ein dedizier- tes Netzwerk mit den anderen Knoten in dem Cluster verbunden ist, denn das Protokoll bietet keinen Schutz vor Angriffen. Ein serielles Kabel genügt nicht. Eine Resynchronisation erfordert hohe Bandbreiten von mindestens 1,5 MBit/s. In vielen Fällen genügt hier ein Cross-Over-Kabel. Es kann keine zweite Netz- werkkarte genutzt werden, um für Ausfallsicherheit zu sorgen. I l2drop=0|1: Hiermit geben Sie an, ob der Slave einen Layer-2-Drop durch- führen soll. Damit ist es möglich, sämtliche Knoten bereits mit identischer IP-Adresskonfiguration auszustatten. In einem normalen Setup führt dies zu Adresskonflikten. Der Layer-2-Drop verwirft jedoch bereits auf der Schicht 2 sämtliche Pakete auf allen Netzwerkkarten außer dem syncdev. So können Sie schon die IP-Adressen aktivieren, Dienste starten und alle Knoten identisch konfigurieren. Der jeweilige Master deaktiviert den Layer-2-Drop und bietet seine Dienste an. I notrack=0|1: Mit dieser Option ignoriert der lokale Connection-Tracking-Code sämtliche Pakete, die über die syncdev-Schnittstelle transportiert werden. Die Syn- chronisationspakete lösen dadurch nicht selbst auch noch Änderungen der Zu- standstabelle aus. I cmarkbit=0-31: Diese Option steht zur Verfügung, wenn Sie bei der Übersetzung des Kernel die Unterstützung für das CONNMARK-Target in Kombination mit der Synchronisation aktiviert haben. Dann können Sie durch Markierung der Ver- bindungen die Verbindungen auswählen, die synchronisiert werden sollen. Das ist nützlich, da häufig die Synchronisation von zum Beispiel DNS-Verkehr und ICMP-PING-Verkehr unsinnig ist. Diese »Verbindungen« bestehen nur aus ei-

481 open source library u lv.Eine Slave. zum Verzeichnis oizee n odsVratnvon Verhalten das so und modifizieren ou itie,i ece utn ihdsSse ene.Hefrkne Sie können Hierfür befindet. System dem das Sie dem sich müssen in Zustand haben, geladen welchem Optionen in geeigneten mitteilen, den Modul mit Modul das Sie Sobald 482 0 idefki a ou ekiir.DrhdsShebnvon Schreiben das Durch deaktiviert. Modul das effektiv wird e.Nc e ae e ousbfidtsc ndee ae eine Datei dieser in sich befindet Moduls des Laden dem Nach den. I I I I 2 lv n eine und Slave A opet esnhoiaindurchgeführt. Neusynchronisation komplette recovery_threshold recv_burst send_burst maxage führen Timeout einem zu Verbindungen diesen bei sowieso Fail-Over kann. die Client den auf, der durch tritt kann Verzögerung Häufig Fail-Over eine senden. einem erneut Bei auch Request-Paket Response-Paket. das einem und Request- nem edne xrhee n i utnsael aktualisieren. Zustandstabelle die und extrahieren Meldungen werden. verarbeitet sie muss rüetae werden. übertragen er hug uhde a ihggnbrdm242-enlPthgädr.Dr eett eine bedeutete Dort geändert. 2.4.26-Kernel-Patch dem gegenüber sich hat dies auch chtung, /proc oadenEeti e edrEetQeedee le rect muss erreicht, Alter dieses Sender-Event-Queue der in Event ein Sobald : Tipp Achtung /proc/sys/net/ipv4/netfilter/ct_sync oaddrSaedeeAzh nPktnehle a,ms rdie er muss hat, erhalten Paketen an Anzahl diese Slave der Sobald : enthält, Meldungen an Anzahl diese Sender-Event-Queue die Sobald : VrecnsdeDatei die -Verzeichnis atAsae e efitrTasvnSme 05wr diese wird 2005 Sommer von Netfilter-Teams des Aussagen Laut mächtige das über ver- nicht Der und noch Optionen 2.6.10-Kernel-Patches. fügt andere des teilweise Funktionen verwendet die 2.4.26-Kernel-Patch hier beschreibe Ich /proc e uhlsn eet kulsetwre.Asntnmct ich verweisen. README-Datei möchte beiliegende Ansonsten Code dem worden. die aktualisiert auf bereits Sie die- lesen, Sie wenn Buch 2.4.26-Code, ses der ist Möglicherweise wird. beschrieben 1 Master! 2 ah e ntnzmMaster zum Knoten den macht Shittlei e ähtnZi neädr bleiben. unverändert Zeit nächsten der in -Schnittstelle emVrutvnPktnwr bdee cwlewr eine Schwellenwert diesem ab wird Paketen von Verlust Beim : /proc/sys/net/ipv4/netfilter/ct_sync/state ct_sync ohwieeDtin ee natSie Inhalt deren Dateien, weitere noch nasnkönnen: anpassen 2 /proc uäzihbfidnsc ndem in sich befinden Zusätzlich . Itrae a mWeiteren im das -Interface, 6Hcvrübr Firewalls Hochverfügbare 26 1 iddrKnoten der wird 0 .Dadurch verwen- 26.6 Zustandssynchronisation mit ct_sync library

Achtung

Wenn Sie das ct_sync-Modul auf dem Linux-Kernel 2.6.10 oder neuer open source verwenden, müssen Sie das seit 2.6.9 in dem Kernel befindliche TCP-Window-Tracking durch Netfilter auf dem Slave abschalten. Dies kollidiert aktuell mit der Synchronisation. Das können Sie sehr einfach erreichen, indem Sie im /proc-Verzeichnis die folgende Datei schreiben: echo 1 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_be_liberal

26.6.3 Aufbau des ct_sync-Clusters Um nun einen ct_sync-Cluster aufzubauen, können Sie zwei unterschiedliche Wege einschlagen. Entweder Sie beginnen mit dem im Abschnitt 26.4 beschriebenen Cluster und erweitern diesen um die ct_sync-Funktionalität, oder Sie beginnen mit zwei identisch konfigurierten Maschinen, bei denen Sie zum Test zunächst manuell ct_sync bedienen, und erweitern diese anschließend um eine Heartbeat-Software wie KeepAlived oder Linux-HA-Heartbeat (http://www.linux-ha.org). Ich werde hier den zweiten Weg einschlagen. Beim Einsatz des Layer-2-Drops ist bei einem Fail-Over der Take-Over der IP- Adresse nicht mehr zwingend erforderlich. Daher können Sie auch andere Lösun- gen als KeepAlived einsetzen! Die eingesetzte Software muss lediglich in der Lage sein, die Gesundheit des Masters zu überwachen und bei einem Ausfall auf dem Slave ein Skript aufzurufen. Dieses Skript aktiviert den Slave zum Master. Dabei versendet der neue Master über das Synchronisationsprotokoll Nachrichten, die den alten Master automatisch zum Slave degradieren. Dieses Skript darf sehr einfach sein:

Listing 26.1: Das Skript script_master.sh befördert einen Slave.

#!/bin/sh /usr/bin/logger -p kernel.crit "Slave zum Master aktiviert." /bin/echo 2 > /proc/sys/net/ipv4/netfilter/ct_sync/state

Bauen Sie zunächst Ihren Firewall-Cluster wie in Abbildung 26.4 auf. Achten Sie darauf, dass Ihre Cluster-Knoten über eine dedizierte Netzwerkkarte miteinander verbunden sind. Aktivieren Sie nun die Netzwerkkarte zur Synchronisation und weisen Sie ihr eindeutige Adressen zum Beispiel in dem Netzwerk 10.0.0.0/24 zu. Sie sollten nun die anderen Knoten in dem Synchronisationsnetzwerk pingen kön- nen. Laden Sie nun auf allen Knoten das ct_sync-Modul, bevor Sie die weiteren Netzwerkkarten aktivieren: # modprobe ct_sync syncdev=eth2 l2drop=1 notrack=1 cmarkbit=30 Nun deklarieren Sie einen Knoten zum Master und die restlichen Knoten jeweils zum Slave. Geben Sie auf dem Master hierzu folgenden Befehl ein:

483 open source library bidn 64 e iealCutrbsetasze ntn i ihgegenseitig sich die Knoten, zwei aus besteht ersetzen. Firewall-Cluster Der 26.4: Abbildung 484 IPTABLES=/usr/sbin/iptables SYNCDEV=eth2 Regeln EXTDEV=eth1 folgenden die INTDEV=eth0 mögen erzeugen Test Firewall-Regeln ersten die einen Für Sie verteilen. müssen genügen: Knoten Nun allen identisch. auf Knoten und allen auf karten K o /proc/sys/net/ipv4/netfilter/ct_sync/state n > fi 1 g u echo ein: r Befehl # i folgenden den e Sie r geben e Slave dem nSAuf i /proc/sys/net/ipv4/netfilter/ct_sync/state en u > nd 2 i echo eI P# - A d r e s s e na u fd e ni n t e r n e nu n de x t e r n e nN e t z w e r k - eth0 eth1 t2eth2 eth2 10.0.0.0/24 LAN eth0 eth1 6Hcvrübr Firewalls Hochverfügbare 26 26.6 Zustandssynchronisation mit ct_sync library

SYSCTL=/usr/sbin/sysctl

$IPTABLES -P INPUT DROP open source $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP

$IPTABLES -F $IPTABLES -F -t nat $IPTABLES -F -t mangle

$IPTABLES -A INPUT -i $SYNCDEV -j ACCEPT $IPTABLES -A OUTPUT -o $SYNCDEV -j ACCEPT $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $INTDEV -m state --state NEW -j ACCEPT

$IPTABLES -t mangle -A PREROUTING -p udp --dport 53 -j ACCEPT $IPTABLES -t mangle -A PREROUTING -p icmp -j ACCEPT

$IPTABLES -t mangle -A PREROUTING -m state --state NEW -j CONNMARK --mark 0x40000000

$IPTABLES -t nat -A POSTROUTING -o $EXTDEV -j MASQUERADE

Die letzte Regel markiert sämtliche Verbindungen mit der Zahl 0x4000000. Bei die- ser Zahl ist als Connmark-Bit das Bit 30 gesetzt. Wenn Sie nun Verbindungen über den Master aufbauen, sollten Sie die Verbin- dungen auf dem Master in der Verbindungstabelle beobachten können. Diese Ver- bindungen sollten auch auf dem Slave in der Verbindungstabelle auftauchen. Für Troubleshooting-Zwecke können Sie den Netzwerkverkehr zwischen den Knoten mit Ethereal überwachen. Hierfür ist in dem ct_sync-Quelltext auch ein Ethereal- Plugin vorhanden, das Sie in den Ethereal-Quelltext patchen können. Dieses Plugin kann das Protokoll analysieren und verständlich anzeigen (Abbildung 26.5).

Tipp Benutzen Sie Verbindungen, die über eine lange Zeit offen bleiben. Telnet- und SSH-Verbindungen haben sich hier für den Test be- währt. Eine HTTP-Verbindung wird nach dem Datentransport meist direkt wieder von dem Server geschlossen.

485 open source library e id i önndsbshengn ne i u e ee atrden Master neuen dem auf Sie indem beschleunigen, das wer- diese beantwortet können Befehl werden Master Sie neuen Clients dem wird. der von den ARP-Caches der »fal- aussenden, des die ARP-Request aber Mas- Ablauf neuen IP-Adresse, neuen einen nach richtige des Erst die MAC-Adresse zwar MAC-Adresse. der besitzt sche« Master mit neue hängt Der Dies zusammen. »hängen«. ters Netzwerkverbindungen Zeit aufgebauten gewisse Ihnen eine von für vorher die aktivieren, werden Layer2Drop das Wahrscheinlich den aufrufen, werden. sollte sichtbar Skript Master sollte das alte Slave Slave Der der Funk- dem befördert. und der Master auf von zum manuell sich Slave Sie und den können haben betrachtet haben, Zeit überzeugt einige tion Synchronisation die Sie Wenn können. anzeigen zeug u etrnFheaayebfidtsc ndem in sich befindet Fehleranalyse weiteren Zur ct_sync-Multisync-Protokoll das Patch einem mit parsen. kann Ethereal 26.5: Abbildung 486 ahsdrbncbre ehe aktualisiert. Rechner benachbarten der Caches cts_dump rig- egn IP-Adresse>

Tipp

Wenn Sie den KeepAlived-Daemon einsetzen, versendet er selbst- open source ständig den gratious ARP.

Wenn der Fail-Over zu Ihrer Zufriedenheit manuell funktioniert, können Sie eine Software installieren, mit der Sie die Gesundheit des Firewall-Clusters überwachen und bei einem erforderlichen Fail-Over das Skript für die Beförderung des Slaves zum Master aufrufen. Wenn Sie das mit KeepAlived erledigen möchten, achten Sie darauf, dass beim Einsatz des Layer-2-Drops der KeepAlived seine Nachrichten über das Synchronisationsnetzwerk versenden muss. In dem oben gewählten Sze- nario ist dies die Netzwerkkarte eth2. Um dies zu erreichen, müssen Sie in beiden Instanzen die folgende Zeile einfügen: lvs_sync_daemon_interface eth2

Damit der KeepAlived-Daemon auch den Slave zum Master befördert, tragen Sie das Skript ebenfalls in der Konfiguration ein. Die komplette Konfiguration sieht dann für den initialen Master so aus: vrrp_sync_group VG1 { group { eth0 eth1 } notify_master /etc/keepalived/script_master.sh notify_backup /etc/keepalived/script_slave.sh } ! Interne virtuelle IP-Adresse vrrp_instance VI_1 { state MASTER interface eth0 lvs_sync_daemon_interface eth2 virtual_router_id 1 priority 100 authentication { auth_type AH auth_pass password } virtual_ipaddress { 192.168.1.1/24 brd 192.168.1.255 dev eth0 }

487 open source library n usac i nee ntnerihnkönnen. erreichen Knoten anderen die Die auch IP-Adresse werden! muss eine natürlich und aktiviert virtuelle mit benötigt und Synchronisationsnetzwerk nun eine konfiguriert das müssen wieder für IP-Adresse Netzwerkkarten Netzwerkkarte nun ohne Die oder KeepAlived wird. IP-Adressen verwendet von anderen Firewall Einsatz die beim für dass IP-Adresse darauf, Sie Achten degradiert." Slave zum "Master kernel.crit -p /usr/bin/logger #!/bin/sh die über Master aktiven einen erlaubt, nicht es Skript Das } { IP-Adresse VE_1 virtuelle vrrp_instance Externe ! } 488 itn 62 a kitsrp_lv.hpoooletdeDegradierung. die protokolliert script_slave.sh Skript Das durchzuführen: 26.2: Vorgangs Listing des Protokollierung eine um eingesetzt, es wird Hier } { virtual_ipaddress } { authentication 100 priority 2 virtual_router_id eth2 lvs_sync_daemon_interface eth1 interface MASTER state 9.6../4bd1218125dveth1 dev 192.168.1.255 brd 192.168.2.1/24 password auth_pass AH auth_type Hinweis script_slave.sh th he mit können, der Ihnen verzichten von werden, die steht unterstützt abwickeln. NAT-Helfermodule, nicht und Verkehr noch Conntrack- Synchronisation Mbit/s die 100 auf Sie mehrere Wenn kenne die die Außerdem befinden. Firewall-Cluster, implementiert, Einsatz täglichen ich Firewall-Cluster im noch dieser jetzt auch einige sich bereits habe Ich gung. s ü i ukinnctzign rodrih da erforderlich, zwingend nicht Funktion die für ist ct_sync i ähie iealCutrzrVerfü- zur Firewall-Cluster mächtiger ein /proc Shittlez degradieren. zu -Schnittstelle 6Hcvrübr Firewalls Hochverfügbare 26 ct_sync ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library .AIfren U:E xsir en ihilceShittle brdeen grafi- eine die über Schnittstelle, einheitliche keine existiert Es GUI: eine für API 3. dynami- umständlich nur unterstützt Struktur aktuelle Die Regeln: Dynamische 2. .Code-Replikation: 1. link önn isitdreseShitafdmWgzu Weg werden dem genutzt auf IPv6 Schritt wie erste Protokollen der anderen ist von Dies auch können. nun die geschaffen, turen i ael e rattnVridne Epcain)azie n uhhier auch und anzeigen löschen. (Expectations) oder auch hinzufügen Verbindungen Sie Verbindungen erwarteten können neue Genauso der Einträgen löschen. einzelnen Tabelle Einträge nach und die anzeigen, hinzufügen Einträge Verbindungstabelle neue der suchen, Inhalt den Sie können der von wird und dem standardisiert zwischen wurde Kommunikation Kernelspace gesamte Die dem getan. und viel Userspace sehr damit Haube der unter etildsNtle-em.MtPtalssl ieenetihrOeflcefralle für werden. Oberfläche geschaffen einheitlicher Layer-3-Protokoll eine vom soll unabhängig Pkttables Firewall-Regeln Mit Netfilter-Teams. des zeitziel mdeePolm ulsn ud die wurde lösen, zu Probleme diese Um i eetih eeugfrdnEdnedrbi ist der Einsatz beim Endanwender den für Neuerung wesentliche conntrack-Befehl Der Die 27.1 nfnetlink_log eingeführt: Kernel dem in Architektur neue eine wurde 2.6.14 Kernel dem Mit 27 cih bromn iswrentg adeatelnLsne riProbleme drei Lösungen aktuellen die da nötig, aufwiesen: wurde Dies übernommen. Schicht rhtku s e Befehl der ist Architektur ceOeflcedeFntoe ulsnudRgl eznkann. setzen Regeln und auslesen Funktionen die Oberfläche sche werden benötigt Intrusion-Prevention-System würden. einem von sie wie Regelsätze, sche sind Connection Code-Teile das Einzelne Beispiel zum ist. wie wartbar verkuppelt, IPv4-Protokoll schwer Tracking. dem nur mit eng so sehr der Codes, identischen boldrAwne ao uähtnctve ibkme id a sich hat wird, mitbekommen viel nicht zunächst davon Anwender der Obwohl . , nfnetlink_conntrack feln n enl2.6.14 Kernel und Nfnetlink iptables conntrack , ip6tables und e u u efgn th.Mtdee Befehl diesem Mit steht. Verfügung zur nun der , nfnetlink_queue , arptables nfnetlink und udnIv-nbägg Struk- IPv4-unabhängige wurden pkttables Srku ecafn n mit und geschaffen, -Struktur ebtables ktbe s i Lang- ein ist Pkttables . nhle rß Teile große enthalten nfnetlink nfnetlink nfnet- - -

open source library open source library e Befehl Der 490 e eelkn answh i oml ebnugtbleasac die auch als Verbindungstabelle normale die ausführen: Befehle folgenden sowohl die können dann Sie betrachten. kann Expectations-Tabelle Befehl Der installieren. a ae u upce n brezn ctnSedru,ds i mindes- Sie dass darauf, die Sie vorher Achten und verwenden übersetzen. 2.6.14 und Linux-Kernel einen auspacken tens nur Paket das ( e.HefrhbnSedeflednMöglichkeiten: spezifizie- folgenden zu die Verbindung Sie die haben um Hierfür Optionen, ren. zusätzliche benötigen Befehle der Viele I I I I I I I I I I I I http://www.Iptables.org/projects/conntrack/downloads.html mando i rab he i uwh e rtkls( Protokolls des Auswahl die Ihnen erlaubt Sie an. ahdrAnzeige. der nach s -rgsc --orig-src -s, --group-mask -g, ALL|NEW|RELATED|DESTROY|REFRESH|STATUS|PROTOINFO|HELPER|HELPINFO|NATINFO --event-mask -e, --zero -z, --flush -F, --event -E, --insert -I, --delete -D, --get -G, --dump -L, r -el-r --reply-src -r, --orig-dst -d, oolagzitwre oln i ogne vnskne i verwenden: Sie können Events folgenden Die sollen. werden angezeigt tokoll i NTI-des n s i ebnugnctgnte,itseietshmit identisch sie ist genattet, nicht Verbindung der die Ist an. DNAT-IP-Adresse die ugan. dung orig-dst Achtung -E uh ahenmEnrgi e Tabelle. der in Eintrag einem nach Sucht : nKmiainmtdmKommando dem mit Kombination In : neg e Tabelle. der Anzeige : conntrack iri önnSedeEegis iseln i ndmEchtzeitpro- dem in die einstellen, Ereignisse die Sie können Hiermit . öctdegsmeTabelle. gesamte die Löscht : an. Echtzeit-Protokoll ein Zeigt : ütennEnrgi i ael ein. Tabelle die in Eintrag einen Fügt Tabelle. : der aus Eintrag einen Löscht : e Befehl Der s u esildsLshnvnEnrgnnctmöglich. dem nicht Einträgen von von Aktuell Löschen Befehls möchten. das die Beispiel testen des immer zum Befehl ist diesen Sie und Sie Verwenden Bibliotheken wenn Entwicklung. Subversion-Server, der der Versionen in neuesten stark noch 2005) -Adresse. i isrOto ee i ul-PArsedrVerbindung der Quell-IP-Adresse Sie geben Option dieser Mit : i isrOto ee i i ilI-des e Verbin- der Ziel-IP-Adresse die Sie geben Option dieser Mit : i isrOto ee i e ie eattnVerbindung genatteten einer bei Sie geben Option dieser Mit : anvndrItbe-oeaehrnegldnwerden heruntergeladen Iptables-Homepage der von kann is pinitnrgli nKmiainmtdmKom- dem mit Kombination in gültig nur ist Option Diese . uhdeeOto s u ütgmtdmKommando dem mit gültig nur ist Option diese Auch . conntrack istnochsehrjungundimMoment(Oktober ALL|TCP|UDP|ICMP -L öctdeeOto i Zähler die Option diese löscht .Ashißn üsnSie müssen Anschließend ). 7NntikudKre 2.6.14 Kernel und Nfnetlink 27 libnfnetlink ). . -Bibliotheken -E . 27.1 Der conntrack-Befehl library

I -q, --reply-dst : Mit dieser Option geben Sie bei einer genatteten Verbindung die SNAT-IP-Adresse an. Ist die Verbindung nicht genattet, ist sie mit der orig-

src Adresse identisch. open source I -p, --proto : Hiermit wählen Sie das Protokoll (TCP, UDP ...). I -t, --timeout : Hiermit geben Sie den Timeout der Verbindung an. I -u, --status : Hiermit wählen Sie den Status der Verbindung ([EXPECTED| ASSURED|SEEN_REPLY|CONFIRMED|SNAT|DNAT|SEQ_ADJUST|UNSET]). I -i, --id : Jede Verbindung hat eine Conntrack-ID, über die Sie auf die Ver- bindung zugreifen können. Die aktuelle Version zeigt jedoch die ID leider nicht an. I --tuple-src : Hiermit geben Sie bei einer Expectation das Quell-Tuple an. I --tuple-dst : Hiermit geben Sie bei einer Expectation das Ziel-Tuple an. I --mask-src : Hiermit können Sie bei einer Expectation die Quell-Maske ange- ben. I --mask-dst : Hiermit können Sie bei einer Expectation die Ziel-Maske angeben.

491

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library yaiceRgläz önnsh cnl meez edn izleRegeln Einzelne werden. umgesetzt Bearbeitung. der schnell in sehr Verzögerungen können zu nicht Regelsätze konstant. nf-HiPAC nahezu Dynamische nf-HiPAC bei von führt die Regel-Update bleibt Iptables Ein abnimmt, von Regeln Geschwindigkeit der die Zahl fällt der Während Unterschied mit auf. Dieser linear Regelsätzen besser. Umge- großen Regelsatzes allen bei des fast Größe besonders in der nf-HiPAC von von Geschwindigkeit unabhängig die bungen ist Iptables zu Gegensatz Im Konfi- Die Werkzeug Verfügung. dem zur mit Iptables erfolgt wie Paketfilters Funktionen des gleichen guration die Auslastung. Verarbeitungs- stellt großer hohe mit nf-HiPAC neuen Netzen so und einen erreicht Algorithmus Regelsätzen und großen HiPAC Dieser enorm bei mit auch verwendet. Paket geschwindigkeiten je der Paketen Speicherzugriffe von Linux, die Klassifizierung für reduziert die Paketfilter für kompletter Algorithmus ein nf-HiPAC? ist ist Was nf-HiPAC 28.1 NAT Nur Iptables-Funktionen. alle mit unterstützt. fast Iptables nicht aktuell als (noch) HiPAC-Paketklassifizierungs- arbeitet unterstützt wird dem schneller nf-HiPAC noch mit immer Regeln. der Regeln 100 1000 Patch, als einen verwenden mehr um bei Firewall Paketverarbeitung algorithmus sich ( der Ihrer nf-HiPAC es sich Geschwindigkeit handelt in Sie Dabei die Kette sollten Dann dass einer sinkt. feststellen, in stark Sie Regeln werden tausend müssen, mehrere Sie Sobald 28 optblzmItbe-eelit auc önnveeSrpe uc einen durch Skripten werden. umgestellt viele nf-HiPAC auf können Befehls Dadurch des Austausch ist. einfachen Iptables-Befehl zum kompatibel Achtung fHPCitenrie aefitr A drMnln werden Mangling oder NAT Paketfilter. reiner unterstützt. nicht ein ist nf-HiPAC nf-HiPAC http://www.hipac.org nf-hipac a nwie Teilen weiten in das , eae ansehen. genauer )

open source library open source library eec e ee neesn s,vres c ü etr nomtoe u die auf Informationen Moment weitere kleinen im für ganz sich ich einen das verweise für handelt, ist, nur Werkzeug interessant Homepage sicherlich Leser ein und der um befindet Bereich noch Weiterentwickung nf-HiPAC starker bei in sich es Verzö- zu Da Iptables bei wie es dass kommt. ohne gerungen werden, ausgetauscht oder entfernt können 494 Hinweis http://www.hipac.org ieltt eekn ohz fHPC sgb mNetfilter- im aufzuneh- überflüssig. gibt Iptables-Projekt Patchen ein Es das ist Dann in nf-HiPAC: men. nf-HiPAC zu Überlegungen, noch Team Bemerkung letzte Eine . 8nf-HiPAC 28 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library rnprneFirewalls Transparente VI Teil

open source library bidn 91 e e iwh rätdrCin ieI-des u e internen dem aus IP-Adresse eine Client der erhält Einwahl Netzwerk. der Bei 29.1: Abbildung dem aus IP-Adresse eine um IP-Adresse der bei IP-Adresse, vie- hier PPP- In wie eine das mitgeteilt. sich er verwendet es WINS-Server erhält handelt einen und Fällen PPP-Protokoll und ein len DNS-Server das Netzwerk einen Über ein Default-Gateway, Anmeldung. in ein Modem die per für der sich In Protokoll Netzwerk. wählt ein Client in Der Rechners eines Einwahl die man (als Abbildung ist braucht Stelle Anwendung wann häufige an aber Eine ARP-Anfrage einfach, eine sehr auf Eigentlich wofür? und Rechners. Rechner das anderen ein eines antwortet Proxy) ProxyARP ProxyARP? dem funktioniert Wie Bei 29.1 ist Filterung möglich. Eine Iptables ARP- mit ProxyARP. und normal Router ganz ermöglichen dann der zu unterstützt Systemen Um durchzuführen, Netzwerk. den demselben Auflösungen zwischen aus Kommunikation Systeme ein sich eine in befinden dennoch Router Routers wird. des trans- konfiguriert ein neu Seiten wird die Netzwerk beiden Hierbei das für Auf dass Netzwerk. Varianten ohne einem eingebracht, einfachsten Netzwerk in der vorhandenes Paketen eine von ist Filterung ProxyARP parente von Verwendung Die 29 29.1 ProxyARP ee i i yice Beispiel. typisches ein Sie sehen

open source library open source library ih asbieNtwrkre dniceI-desnehle.Sekne aber können ausstatten: Sie IP-Adressen unterschiedlichen erhalten. mit IP-Adressen Netzwerkkarten mög- identische die durchaus es auch damit, Netzwerkkarten ist Sie beide Hierbei Beginnen konfigurieren. dass einfach. zu lich, sehr Router Ihrem ist in Linux Netzwerkkarten unter die ProxyARP des Konfiguration Die der Steuerung zur Dateien andere lnux-14mg.pdf ganz So IBM von gehandhabt. ( Z-Series ProxyARP-Funktion unterschiedlich der auf Hardware unterschiedlich Linux nach ProxyARP-Funktionalität verwendet je die auch wurde und ProxyARP-Funktionalität 2.4 Kerneln Kernel ( älteren aktuellen gehandhabt die den auf In sich beschränkt 2.6. ProxyARP des Konfiguration Die ProxyARP-Konfiguration und 29.2 ProxyARP des Konfiguration die Iptables Pakete. zunächst der mit Filterung ich Pakete die gerouteten erkläre anschließend die Folgenden ein- auch Im Router anschließend eine filtern. Gateway) können ohne und Netzwerk Router einem Netzmaske Diese in fügen. (IP-Adressen, Stellen Konfiguration beliebigen der an Sie Änderung können zustande. kommt Ziel- Methode Verbindung der dieser Die Betrachtung Mit sendet. nach Client Client. der den RAS-Server, an den den weiter ProxyARP für Paket an das Paket RAS-Server ARP-Anfrage IP-Adresse das die dem sendet A RAS-Server auf Rechner der Der wird beantwortet Hierbei Dann Problem. Fehler- angeschaltet. dieses eine gibt behebt und ProxyARP ARP-Anfrage seine beantworten. auf nie Antwort ARP-Anfrage aus. keine kann diese meldung ARP-Anfrage erhält kann Schicht Die A Client weiter! der der Rechner nicht und auf Der 2 erreichen, Schicht arbeiten Client der dem RAS-Server den Pakete in nie diese der nur leiten wie und werden 3 Router ARP- ARP-Anfragen (Layer) eine weitergeleitet. aus. Da er Netz 192.168.0.250 befindet. sendet und Netz IP-Adresse lokalen befinden, Netzmaske eigenen 192.168.0.0/24 die ein seine seinem Netzwerk für entsteht in über dem Anfrage Client möchte, in prüft der schicken sich Netz sich Rechner Client internen ob beide den Clients, dem des an in IP-Adresse Paket A die an ein Rechner nur Netz Paket Der das internen Problem. Rechner er dem der da inter- jedoch aus Problem, dem Wenn A kein in kann. zunächst Rechner schicken dies einen Remote-Access-Service-(RAS-)Server ist an den möchte, Paket ein schicken Client Netz der nen nun Wenn Netzwerk. internen 498 der auf und befindet Rechner ein nur ProxyARP-Routers des Wenn Seite eintragen. einen Routen entsprechenden der die auf Routing-Tabelle sich der in Sie müssen Nun up eth1 eth1 up set dev eth0 link eth0 192.168.0.2 set ip dev add link # 192.168.0.2 ip ip add addr # ip ip addr # ip # ). http://www.tldp.org/HOWTO/Proxy-ARP-Subnet/ http://www-1.ibm.com/servers/eserver/zseries/library/techpapers/pdf/ .Tiwiewr die wird Teilweise ). 9ProxyARP 29 29.2 ProxyARP-Konfiguration library open source

eth0 eth1

ProxyARP 192.168.0.3 Router

192.168.0.1

Abbildung 29.2: Ein einfaches Beispiel, in dem sich links und rechts von einem ProxyARP-Router zwei Rechner 192.168.0.1 und 192.168.0.3 befinden. anderen Seite der Rest des Netzwerks (siehe Abbildung 29.2), dann können Sie die Routen folgendermaßen setzen:

# ip route add 192.168.0.3/32 dev eth1 # ip route add 192.168.0.0/24 dev eth0

Nun müssen Sie lediglich für jede Netzwerkkarte, die ProxyARP unterstützen soll, dies zunächst anschalten. Dies erfolgt in dem /proc-Verzeichnis. Dort existiert für jede Netzwerkkarte ein Eintrag /proc/sys/net/ipv4/conf/ethX/proxy_arp.TragenSiehier eine Eins ein, um die Funktion anzuschalten:

# echo "1" > /proc/sys/net/ipv4/conf/eth0/proxy_arp # echo "1" > /proc/sys/net/ipv4/conf/eth1/proxy_arp

Tipp Wenn Sie eine Option für alle Netzwerkkarten aktivieren möchten, genügt es auch, die Option in /proc/sys/net/ipv4/conf/all anzuschal- ten.

Anschließend müssen Sie noch die IP-Weiterleitung aktivieren und eine Kommuni- kation sollte nun zwischen 192.168.0.1 und 192.168.0.3 möglich sein. # echo "1" > /proc/sys/net/ipv4/ip_forward

499 open source library ITBE AFRAD- tt -tt SALSE,EAE jACCEPT -j ESTABLISHED,RELATED --state state $MYSQL_SRV -m -d FORWARD $MYSQLDEV -A -o $IPTABLES $LANDEV -i FORWARD -A angeschlossen $IPTABLES DROP LAN angeschlossen FORWARD restliche MySQL-Server -P das der $IPTABLES ist ist Schnittstelle Hier dieser # An MYSQLDEV=eth1 # LANDEV=eth0 Netz DIENSTE="mysql,ssh" lokalen dem MYSQL_SRV=192.168.0.3 verwen- vor Regeln folgenden Firewall die Sie einer könnten den: mit dann möchten, Abbildung zusätzlich schützen aus 192.168.0.0/24 Sie 192.168.0.3 auf den Rechner dass beim Datenbankserver, achten, sich sind. darauf vorhanden es Sie Netzwerk Handelt demselben dass aus angeben, aufpassen, IP-Adressen Firewall IP-Adressen nur der müssen Regeln Seiten Sie Ihren beiden Ketten NAT). in die und Sie Mangle Router, Fil- wenn und (Tabellen normalen Mangle POSTROUTING einem (Tabellen und FORWARD auf ter) NAT), Pa- wie sich und die Mangle es durchlaufen, normal (Tabellen Da ganz Pakete PREROUTING Sie einfach. Die können sehr filtern. handelt, ProxyARP Router kete von einen Einsatz um beim ProxyARP-System ist beim Iptables mit Iptables Filterung mit Die Filterung 29.3 der TTL-Wert Schicht erkennbar. den der Pakete der auf Router, Modifikation aber andere weitere ist keine jeder Ansonsten (IP) wie heruntersetzen. 3 eins wird, ist um Er transparent Pakete nicht. Ganz nachträglich weitergeleiteten einzuführen. Router Netzwerk Router einem dieser einen in jedoch Konfiguration um der Möglichkeit, Änderung einfache ohne sehr eine ist ProxyARP 500 Anwendung die und Sie diesen benötigen erläutert betreiben, Abschnitt zu Iptables. nächste IP-Adressen von Der ohne Bridge-Modus. Firewall Ände- die den ohne tatsächlich Netz jedoch einem in Um filtern. Verkehr Default-Gateways den und Netzmasken auch Adressen, Mitteln der einfachen rungen mit Sie können So Fazit 29.4 ptp- utpr -pr DESE- tt -tt E jACCEPT -j NEW --state state -m $DIENSTE --dport multiport -m tcp -p 29.2 mennMySQL- einen um 9ProxyARP 29 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library bidn 01 ieBig en ebttni i A-desnder MAC-Adressen die selbstständig lernt Geräte. Bridge angeschlossenen Eine 30.1: Abbildung und Abbildung angeschlossen Absender-MAC-Adresse (siehe Bridge die ab der Paket Tabelle einer jedem an in bei die diese Bridge speichert Rechner, die der betrachtet ähnlich Bridge MAC-Adressen Dazu die sind. die lernt Bridge Switch die der ein Netzwerkkarten, Aktivierung Nach die wie sollen. Sie werden definieren Bridge Zunächst der Bridge? Teil Bridge? eine die nun funktioniert funktioniert Wie Wie 30.1 weitergeleiteten Bridge der von die Iptables der- mit filtern. kann auch Pakete Linux und können. betreiben die Bridges verbinden Bridges, es artige miteinander gibt zusätzliche Ethernet-Netze So über Mediums. und des häufig Switch, Änderung Token-Ring- verfügt ein die Bridge Beispiel wie zum Die übernimmt wie wurde. Funktionen Möglichkeiten, implementiert ähnliche Hardware die in Software, der eine ist Bridge Eine 30 c0:ff:73:54:c6:d5 c0:ff:73:21:2d:7f c0:ff:73:21:3e:81 palsafenrBridge einer auf Iptables 0f:32:d7 c0:ff:73:21:57:32 c0:ff:73:21:2d:7f eth0 eth0 c0:ff:73:21:72:81 eth1 eth1 30.1 ). c0:ff:73:21:72:81 c0:ff:73:c9:cd:a5 c0:ff:73:21:57:32

open source library open source library Bridge: commands: ~]# [root@bibo Bridge- enthalten. den Distributionen meisten zusätzlich üblicherweise den heißt Sie in Paket sind Das benötigen Diese einen Kernel installieren. lediglich Bridge-Utilities älteren Sie die die benötigen Für bauen, von 2.6. zu Patch oder Bridge 2.4 eine Linux-System Kernel Linux einem mit Bridge mit einer Um Bau Leistung 30.2 muss. die Netz- senden erneut Bridge dem Pakete die die in Kollision erhöht einer Kollisionen Damit bei vermeidet weiter. das Pakete. Ethernet-Netzwerks, Netzwerkkarte und gesendete des dieser gleichzeitig Broadcasts auf durch Bridge entsprechende Paket werk der die das der unterdrückt leitet an und Netzwerkkarte, So eine die ist, Fall bereits Tabelle jeden angeschlossen Ziel-MAC-Adresse ihrer auf Rechner die mit dass Bridge sie so kopiert die ermittelt Netze, aber kennt, kennt, Sobald angeschlossenen nicht ist. alle noch möglich in Pakets Kommunikation Paket eines dieses Ziel-MAC-Adresse Bridge die die Bridge die Solange 502 noop qdisc 1500 mtu br0: 4: Befehl ~]# den Sie [root@bibo verwenden erzeugen, zu Bridge eine nun Um Gerät e eetih eeldrBig-tlte ist Bridge-Utilities der Befehl wesentliche auch Der genügen Sie Meist Distributionen. werden. Kernel. der neuesten heruntergeladen Versionen die älteren URL für die nur angegebenen Versionen oben aktuellen der die benötigen von ebenfalls kann und ikehr0:00:00:0bdff:ff:ff:ff:ff:ff brd 00:00:00:00:00:00 link/ether br0 hwso ito bridges of list a show info addrs stp mac bridge on/off of show stp list turn a show delay age forward message bridge time max set hello set set bridge delete priority bridge port bridge add cost set from time path bridge interface ageing set stp to delete set priority interface showstp bridge add

Nun können Sie der Bridge Netzwerkkarten hinzufügen. Hierzu verwenden Sie den Befehl brctl addif. Dabei ist es wichtig, dass diese Netzwerkkarten keine IP-Adressen

tragen. Dann können Sie mit dem ip-Befehl die Netzwerkkarten aktivieren. open source [root@bibo ~]# brctl addif br0 eth0 [root@bibo ~]# brctl addif br0 eth1 [root@bibo ~]# ip link set eth0 up [root@bibo ~]# ip link set eth1 up [root@bibo ~]# ip link set br0 up [root@bibo ~]# ip link show 1: lo: mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:20:e0:6c:72:1e brd ff:ff:ff:ff:ff:ff 3: eth1: mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:10:a4:c3:26:cb brd ff:ff:ff:ff:ff:ff 4: br0: mtu 1500 qdisc noqueue link/ether 00:10:a4:c3:26:cb brd ff:ff:ff:ff:ff:ff

Wenn bei Ihnen der ip link show-Befehl nicht das PROMISC-Flag bei den Netzwerkkarten anzeigt, arbeiten Sie wahrscheinlich auf einem Linux-Kernel 2.6. Hier wird dieses Flag nicht mehr angezeigt. Mit dem Befehl brctl können Sie sich die Einzelheiten der Bridge anzeigen lassen:

[root@bibo ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.0010a4c326cb yes eth0 eth1

Wenn Sie die Bridge für Firewall-Zwecke einsetzen möchten, sollten Sie das Spanning-Tree-Protokoll (STP) abschalten. Dies ermöglicht den Aufbau von redun- danten Bridges. Da das Protokoll aber keine Sicherheit bietet, sollte es im Zusam- menhang mit Firewalls nicht genutzt werden: brctl stp br0 off.DannkönnenSie auch die Forward-Delay Zeit auf null setzen. Bei dem Einsatz des Spanning-Tree- Protokolls werden hiermit Schleifen zum Startzeitpunkt der Bridge ausgeschlossen: brctl fd br0 0. Nun sollte bereits eine Kommunikation über die Bridge möglich sein. Dazu kön- nen Sie bereits durch die Bridge pingen. Anschließend können Sie sich die MAC- Adressen, die von der Bridge bereits gelernt wurden, anzeigen lassen:

[root@bibo ~# brctl showmacs br0 port no mac addr is local? ageing timer 1 00:20:e0:6c:72:1e yes 0.00 2 00:20:e0:6c:72:10 yes 0.00

503 open source library esilzitdeAnwendung: die zeigt Beispiel ekat e rdedsPktdeBig rect irü ewne i beim Sie Netz- Optionen verwenden welche Hierfür die über erreicht. gewohnt prüfen, Bridge zu wie die sinnvoll 2.4 Paket häufig das Linux-Kernel es Bridge ist wohl der Regeln sehr werkkarte der Verbindung Definition die der obwohl Bei A, Rechner an darf. Fehler werden aufgebaut einen Bridge die sendet FORWARD der in normal ganz das Sie können möchten, filtern Pakete die nun Sie Wenn nach- durchlaufen Pakete Die filtern. Bridge der FORWARD auf Mangle- üblich die iptables wie einander mit Sie Bridge der können auf Nun Filtern 30.3 504 ( physdev Optionen -d weiteren eth1 Die --physdev-out eth0 --physdev-in ACCEPT physdev -j -m 192.168.0.1 FORWARD -A $IPTABLES --out-interface pinnz uzn üsnSedeErweiterung die Sie müssen nutzen, zu Optionen et u.Alrig ole i aafahe,ds i rde ärn i die sie während mit werden Bridge, Sie weitergeleitet die dass nicht bedeutet, die dass Das weiterleitet, achten, müssen. Pakete darauf noch auch Sie lernt, sollten MAC-Adressen Allerdings tun. Kette aiseatdeFrwl-ölckie u e rdeewietwre seedas (siehe wurden erweitert Kapitel Bridge der nächste auf Firewall-Möglichkeiten die insgesamt da swielie,d i i ilMCArsenc ih en.E uclutdie durchläuft muss Es und kennt. Paket nicht das noch ebenfalls Ziel-MAC-Adresse sieht die sie Bridge da demselben Die in weiterleiten, auf. B es Rechner Verbindung zum A eine Rechner der Netzwerk baut Hier führt. Verbindungen gültiger Abbildung 02:07:12 e 0.00 0.00 yes yes 00:20:e0:73:71:21 00:20:e0:73:71:20 2 1 Kteudwr been.D i benn uc eine durch Ablehnung die Da abgelehnt. wird und -Kette Mangle- die -, Ewieugwre u etnbntg n rlrnsc o selbst. von sich erklären und benötigt selten nur werden -Erweiterung Achtung 30.2 e e iu-enl26wre irü eeOtoe geschaffen, Optionen neue hierfür wurden 2.6 Linux-Kernel dem Bei . c aebimrafengnKrenfsselnmse,ds die sein. zu dass Artefakt müssen, ein scheint feststellen Dies Kerneln durchlau- fen. dreimal einigen teilweise Mangle-PREROUTING-Kette auf die mir Pakete bei habe Ich 31 s i znrogzit ndmen EETRglzmAbbruch zum REJECT-Regel eine dem in gezeigt, Szenario ein ist .DeeOtoe heißen Optionen Diese ). POSTROUTING PREROUTING --physdev-is-in -unddieNAT- ,deNAT- die -, REJECT , --physdev-is-out Rgl ervrihi ensltn nder In sollten. sein vorsichtig sehr -Regeln PREROUTING --physdev-in POSTROUTING -i physdev bzw. ,deMangle- die -, und -Kette. und --in-interface 0Itbe u ie Bridge einer auf Iptables 30 nIrnRgl ae.Ein laden. Regeln Ihren in --physdev-is-bridged --physdev-out REJECT FORWARD  Rglerfolgt, -Regel und ,deFilter- die -, .Umdiese -o FORWARD )der bzw. - 30.4 Filtern auf der Bridge mit arptables library

eth0 eth1 c0:ff:73:21:2d:7f c0:ff:73:21:57:32

c0:ff:73:21:72:81 open source c0:ff:73:21:2d:7f c0:ff:73:21:72:81

Von: c0:ff:73:21:2d:7f c0:ff:73:21:57:32 An: c0:ff:73:54:c6:d5 eth0 eth1

Die MAC-Adresse c0:ff:73:54:c6:d5 befindet c0:ff:73:54:c6:d5 sich nicht in der Tabelle. Daher REJECT! c0:ff:73:21:3e:81

c0:ff:73:c9:cd:a5

Abbildung 30.2: Ein REJECT kann auf einer Bridge Probleme erzeugen.

Wenn Sie mit einer Bridge ein Netzwerk in zwei Kollisionsdomänen aufgeteilt ha- ben und nun auf der Bridge filtern möchten, ist häufig die ipset-Erweiterung des Linux-Kernels hilfreich. Dies ist eine Weiterentwicklung des Befehls ippool.Damit ist es sehr leicht möglich, mehrere nicht zusammenhängende IP-Adressen in ei- ner Regel zusammenzufassen. Dies reduziert den Regelaufwand und erlaubt das Erzeugen übersichtlicher Regelwerke. Sie finden die Informationen über diese Er- weiterungeninKapitel25.

30.4 Filtern auf der Bridge mit arptables

Der Befehl arptables ist in den meisten modernen Distributionen enthalten. Er er- laubt die Filterung der Address-Resolution-Protocol-Pakete (ARP), die das IPv4- Protokoll benötigt, um ausgehend von einer IP-Adresse die MAC-Adresse eines Rechners zu ermitteln. Eine Filterung der ARP-Pakete auf einem Router oder einem einzelnen Rechner ist ungewöhnlich, da dies nur dazu führt, dass ein Rechner scheinbar unsichtbar in dem IPv4-Netzwerk wird. Wesentlich interessanter ist die Anwendung auf einer Bridge, die im Gegensatz zu einem Router ARP-Pakete weiterleitet. Hier kann durch eine sinnvolle Filterung der ARP-Pakete erreicht werden, dass die von der Firewall-Bridge geschützten Systeme auch auf der Ebene des ARP-Protokolls nur für bestimmte Clients erreichbar sind. Der arptables-Befehl kann auf einem Linux-Kernel 2.4 zwei Ketten (INPUT und OUTPUT) und auf einem Linux-Kernel 2.6 drei Ketten (zusätzlich FORWARD) in der Filter-Tabelle verwalten. Die FORWARD-Kette ist auf einem Linux-Kernel 2.4 nur nach Anwendung

505 open source library WARD Die oite ölc,ds u etmt let ieAPAfaefren bestimmte eine für ARP-Anfrage eine Mit Clients dürfen. bestimmte senden nur IP-Adresse dass möglich, es ist So betrachtet. isrAshithtInngzit i i erenahmit einfach sehr Sie wie gezeigt, Ihnen hat Abschnitt FazitDieser 30.5 ACCEPT DROP -j -j 192.168.0.25 192.168.0.25 -d -d 192.168.0.7 FORWARD -s -A FORWARD $ARPTABLES -A $ARPTABLES ARPTABLES=/usr/sbin/arptables ARP-Pakete. die lediglich verwalten Ketten Die Diese verfügbar. Bridge-nf-Patches des 506 erreichen: n i nsrcednFntoe üsni he enlatvetwre sein. Funktion. worden die aktiviert erklärt Kernel Kapitel Ihrem nächste in Das müssen Funktionen entsprechenden die und rdez ednuddr ufitr.Hez eöie i e Befehl den Sie die benötigen Hierzu über filtern. NETBEUI-Pakete) zu Beispiel IP- dort (zum alle und Pakete Beispiel senden (zum andere zu Pakete und Bridge einige Funktion routen speziellere Möglichkeit, zu noch die Pakete) eine transparente besteht IP-Ebene vielleicht Es der Sie auf implementieren. möchten einfach sehr Jedoch Sie aufbauen. können Paketfilter So können. filtern Pakete die Fle-et u ie rdeal o e rdedrheettnARP-Pakete durchgeleiteten Bridge der von alle Bridge einer auf -Filter-Kette INPUT OUTPUT Fle-et ercttal R-aee i ndnRcnrgrcttsind. gerichtet Rechner den an die ARP-Pakete, alle betrachtet -Filter-Kette Fle-et ercttal oa rege R-aee ärn die während ARP-Pakete, erzeugten lokal alle betrachtet -Filter-Kette arptables önnSedsmtdmflednBefehl folgenden dem mit das Sie können 0Itbe u ie Bridge einer auf Iptables 30 iptables u ie Bridge einer auf ebtables FOR- , ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library ac -p1 patch i ndsQeletezihi he enl n ue e Befehl den rufen und wechseln Kernels anzuwenden, Ihres Patch Quelltextverzeichnis den das Um in Patches. Sie Sie Unter notwendigen müssen die patchen. enthält, 2.4 noch Code Linux-Kernel notwendigen 2.4 den Linux-Kernel bereits den 2.6 Linux-Kernels Linux-Kernel des der Konfiguration Während 2.4 Kernel 31.1.1 den Pakets. noch des Installation auch Distri- die Ihre möglicherweise kurz dass Sie Weiteren Fall, im und den ich enthält schildere Für einsetzen, Paket erforderlich. um das nicht wahrscheinlich sich ist nicht es Update bution (zum handelt ein Distribution enthält, und Ihre Ebtables Version, Falls bereits diese 2003. 4) November Core 1. Fedora vom Beispiel ist Ebtables-Version Ebtables-Installation letzte Die 31.1 Der 31 irbntgnSedeOption müssen Auch die configuration Hier wurden. Sie vorbereiten. ausgewählt Optionen Patch benötigen entsprechenden einem die hier dass mit achten, nicht darauf nur Sie Sie müssen 2.6 Linux-Kernel Den aus. ebenfalls Optionen erscheinenden Option anschließend die die Option Option und dieser die unter Sie erscheint Dann wählen an. Iptables-Optionen üblichen den zu enl is ace idi e .e enl eet nhle n e den bei beschrieben. und Befehls des enthalten Installation die bereits Linux- zunächst Kerneln Befehl 2.4er wird den Daher 2.6er jedoch die mit. liefern nicht den Distributionen für selbst Viele in aktiviert. Patches auch sind Distributionen zusätzliche meisten Patches erfordert Diese Befehls Kernel. des Anwendung Bridge- Die Brou- mit als Routers werden geroutet Systeme kombinierten Paket Derartige bezeichnet. eines möglich. ter Nicht-IP-Pakete ein Aufbau Nicht-IP-Pakete auch für ob Der ist Sie entscheiden, soll. Funktionalität können werden Sie Befehl gebridget können oder diesem Außerdem Mit filtern. Linux-Bridge. eingeschränkt einer auf ten ebtables u.Ashißn üsnSeIrnKre ohkngree.Zusätzlich konfigurieren. noch Kernel Ihren Sie müssen Anschließend auf. Bfh s i uäzihrBfh u itrn o Netzwerkpake- von Filterung zur Befehl zusätzlicher ein ist -Befehl älnSedegwnctnEbtables-Funktionalitäten. gewünschten die Sie wählen Ebtables 0.dEhre Bridging, Ethernet 802.1d http://ebtables.sf.net rde ebtables Bridge: n unter und 0.dEhre Bridging Ethernet 802.1d ne i ü den für Sie finden älnSediese Sie Wählen . rde Netfilter Bridge: ctpthg | patch.gz zcat

open source library open source library clelc nhl die enthält schließlich neeFae zmBipe EBU-rms brdeBig etrett Dabei weiterleitet. das Bridge der System, die in es über Sie ein während NETBEUI-Frames) können IP-Pakete), Beispiel ist Beispiel (zum (zum Ebtables-Codes Frames routet Pakete andere des einige und Maintainers verbindet Netze des zwei Definition nach Brouter i der Mit Die Tabellen. 3 insgesamt über Ebtables-Tabellen verfügt Die Ebtables 31.2 Befehl Userspace-Werkzeugs den des Installation Um 31.1.2 508 2.0.6.tar.gz et.Die Kette. ih mfheset asc irsi oebr20 amÄdrne ergeben ist Änderungen einzusetzen, kaum 2003 Code November aktuellsten seit hier haben. den sich um da empfehlenswert, CVS-Verzeichnisses, nicht des Nutzung Die angeben. Zielverzeichnisse e Variablen den i uclue u i rmsPkt i izle etn mde nachzu- dies Um durchzuspielen. Ketten? Szenarien einzelnen einige sinnvoll, die es Frames/Pakete ist die vollziehen, nun durchlaufen die Wie diese für versuchen, verwenden. Folgenden »Paket« zu im korrekt Begriff werde Begriffe üb- Ich der beiden ist. 2 werden während reserviert Schicht OSI-Modells 3) bezeichnet, der (Schicht des (Frame) Netzwerkschicht auf Rou- Data-Link-Schicht Rahmen beziehungsweise Das der als OSI-Modells TCP-Modells. Schicht auf licherweise des des der Pakete 3 1 auf TCP-Modells. Schicht Schicht Bridging des der die das auf ist erfolgt erfolgt Dies ting OSI-Modells. wurde, des ausgeführt (Data-Link) oben 2 weiter bereits Wie möchten. bridgen a ae i e Befehl dem mit Paket das i Ketten. die BROUTING filter Achtung o e oeaeudpce sas ncleedüeste Sie übersetzen Anschließend aus. es packen und Homepage der von i balsTble ae enre eu udnIptables- den zu Die eigenständige vollkommen Ketten. um Bezug und sich Tabellen handelt keinerlei Es Ketten. und haben Tabellen Ebtables-Tabellen Die durchlaufen. al iesädgudwre ahiadr(zuerst nacheinander werden und eigenständig falls KERNEL_INCLUDES Kteder -Kette TbleetätdeKetten die enthält -Tabelle ebtables BROUTING PREROUTING Kteetcedn bSedeFae/aeerue oder routen Frames/Pakete die Sie ob entscheiden, -Kette uisalee,ldnSezncs a Paket das zunächst Sie laden installieren, zu make broute , LIBDIR e e anschließenden dem Bei . -, Tblekne i ie rue ubun Ein aufbauen. Brouter einen Sie können -Tabelle OUTPUT , MANDIR -und filter , BINDIR FORWARD POSTROUTING n die und , ETCDIR broute , INPUT Kte.Abbildung -Ketten. nat , Tbleetätdie enthält -Tabelle ETHERTYPEPATH aeinstall make und - OUTPUT OUTPUT Kte ideben- sind -Ketten nat .Die önnSemit Sie können und ,dann 1Ebtables 31 nat DESTDIR 31.1 ebtables- BROUTING -Tabelle filter zeigt die ) - 31.2 Die Ebtables-Tabellen library

broute-Tabelle NAT-Tabelle open source

Mangle-Tabelle

NAT-Tabelle

Filter-Tabelle

Ebtables-Kette

Iptables-Kette

Filter-Tabelle

NAT-Tabelle Mangle-Tabelle

Filter-Tabelle

Filter-Tabelle

NAT-Tabelle

Mangle-Tabelle

NAT-Tabelle

Abbildung 31.1: Ebtables verfügt über drei eigene Tabellen.

509 open source library OUTPUT erf.Ashißn ide brdeEbtables- die über es wird Anschließend geprüft. ott ek e enl asdsPktüe i erdtsItraednRechner den Interface gebridgtes ein die über durchläuft Paket Paket das Das dass verlässt. Kernel, der merkt routet, transportiert. n iddn ahdrBign-nshiugüe i Ebtables- det. die über Bridging-Entscheidung der nach dann wird und usdrRhe erdtwre,s ide uc i bals n Iptables- und Ebtables- die durch er wird so werden, gebridgt geschickt. Rahmen der Netzwerkschicht Muss die getroffen. an Routen-Entscheidung die weiter dann wird anschließend Dort und weitergereicht Kette Iptables- die und Ebtables- die nacheinander efc gesendet. terface 123EnlklezutsPktvräs a System das verlässt Paket erzeugtes lokal Ein 31.2.3 das durchläuft soll, verlassen die System das normal Bridge-Interface ganz ein Paket über Paket das Falls Nicht-Bridge-Interface ein über erreicht Rahmen Der 31.2.2 FORWARD Abbil- der in wird erreicht, System das System Bridge-Interface das ein Bridge-Interface dung ein über über Paket erreicht das Rahmen Der Wenn 31.2.1 510 Rahmen. diese für NET- Bridge eine Proto- Beispiel dies diese kann zum IP-Router würde, normaler können weiterleiten ein routing- nicht Während Dies nicht kolle sein. einsetzen. einige DEC-LAT noch oder Netzwerk Appletalk Sie Ihrem BEUI, wenn in sein, interessant Protokolle dann fähige auf Beispiel Router zum einem kann mit Dies Bridge Abbildung eine (siehe kombinieren sein, zu sinnvoll Netzwerkkarten es denselben kann Umgebungen broute-Tabelle manchen Die In 31.3 Dies Paket. ein Prozess Iptables- lokaler den ein erzeugt von Hierbei zunächst Fall. wird mögliche dritte der ist Dies oaeSse s.ItLttrsdrFl,s iddrRhe ndeEbtables- die an Rahmen der das wird Ziel so sein Fall, ob der oder muss Letzteres werden Ist dem gebridgt ist. Paket in System das lokale ob Rahmen Prüfung, der die erfolgt Bleibt die ßend Bridging. Rah- an der das er oder ist geroutet wird Default Paket so das soll. Bridging-Code, ob werden entscheiden, Regel gebridgt einer men mit Sie können Hier Kte ndeEbtables- die an -Ketten 31.2 Kte n i entsprechenden die und -Ketten a ae ndie an Paket das brdeBridge die über System das mangle BROUTING -und POSTROUTING OUTPUT mangle Kteweitergegeben. -Kette nat PREROUTING Kte der -Ketten PEOTN-etn iddsPktge- Paket das Wird -PREROUTING-Ketten. -und POSTROUTING n i Iptables- die und - PREROUTING filter Kte etreee.He werden Hier weitergegeben. -Ketten Kte ndsetpehneIn- entsprechende das an -Ketten OUTPUT FRADKte o Iptables von -FORWARD-Ketten mangle Kte uclue.Anschlie- durchlaufen. -Ketten Kte i mlttnFall letzten im wie -Ketten -, POSTROUTING nat 31.3 -und ). nat filter Kte gesen- -Ketten -und- 1Ebtables 31 -Tabellen filter- INPUT - 31.3 Die broute-Tabelle library open source

broute-Tabelle NAT-Tabelle

Mangle-Tabelle

NAT-Tabelle

Filter-Tabelle

Filter-Tabelle

Mangle-Tabelle

Filter-Tabelle

NAT-Tabelle

Mangle-Tabelle

NAT-Tabelle

Abbildung 31.2: Die Ebtables- und Iptables-Ketten werden nacheinander durchlaufen.

511 open source library aee i nder in die Pakete, i iren ee izfgn i a nsrced ae ewrt( verwirft Paket entsprechende das die hinzufügen, müssen Regel Hierfür eine soll. werden hier geroutet Sie doch würde, werden gebridgt normalerweise ETBE tbot ABOTN pAP- DROP -j DROP ARP -j -p IPv4 BROUTING -p -A BROUTING broute -A -t broute $EBTABLES -t up $EBTABLES br0 up set eth1 link up set $IP eth1 eth0 link dev set $IP eth0 172.16.2.1/24 link dev add $IP 172.16.1.1/24 addr add $IP addr $IP eth1 br0 eth0 addif br0 $BRCTL addif br0 $BRCTL addbr $BRCTL -F broute -F -t nat $EBTABLES -F -t filter $EBTABLES -t $EBTABLES IP=/sbin/ip BRCTL=/usr/sbin/brctl EBTABLES=/sbin/ebtables bridgt. der Rahmen In andere er während Pakete, einige routet Brouter Ein 31.3: Abbildung 512 u esilI-aeez otn R-nrgnz ewre n leweiteren verwenden: Skript alle folgendes und Sie verwerfen können weiterzuleiten, zu Bridge ARP-Anfragen die routen, über Um Rahmen zu weitergegeben. Netzwerk-Schicht IP-Pakete die Beispiel und zum Routing-Prozess den an werden und BROUTING Kteder -Kette BROUTING broute Ktevrofnwre,vrasndeData-Link-Schicht die verlassen werden, verworfen -Kette Tblekne i nshie,o i amn der Rahmen, ein ob entscheiden, Sie können -Tabelle router Br (gebridgt) 1Ebtables 31 DROP .Alle ). 31.4 Die ebtables-Syntax library

31.4 Die ebtables-Syntax

Der ebtables-Befehl verhält sich sehr ähnlich dem iptables-Befehl. Jedoch gibt es open source einige wesentliche Unterschiede, die hier kurz zusammengefasst werden sollen. Außerdem gibt es beim ebtables-Befehl einige zusätzliche Matches und Targets, die ich im Weiteren erläutern werde. Zunächst weist der Befehl ebtables die identischen Kommandos wie der Befehl Ip- tables auf. Es gibt im Einzelnen: I -A, --append. Anhängen einer Regel. I -D, --delete. Löschen einer Regel. I -P, --policy. Ändern der Kettenrichtlinie. I -F, --flush. Löschen einer Tabelle oder Kette. I -Z, --zero. Löschen der Zähler einer Tabelle oder Kette. I -L, --list. Anzeige der Regeln. Hier gibt es einen Unterschied. Zunächst zeigt dieser Befehl die Regeln in einem anderen Format an: # ebtables -t broute -L Bridge table: broute

Bridge chain: BROUTING, entries: 2, policy: ACCEPT -p IPv4 -j DROP -p ARP -j DROP Um zusätzlich auch Zeilennummern angezeigt zu bekommen, müssen Sie auch die Option --Ln angeben. Die Rahmen- und Byte-Zähler erhalten Sie mit --Lc: # ebtables -t broute -L --Ln --Lc Bridge table: broute

Bridge chain: BROUTING, entries: 2, policy: ACCEPT 1. -p IPv4 -j DROP , pcnt = 1016 -- bcnt = 320521 2. -p ARP -j DROP , pcnt = 3 -- bcnt = 138

Wenn Sie die Regeln so anzeigen möchten, dass Sie diese direkt in ein Skript übernehmen können, müssen Sie die Option --Lx beim Befehl spezifizieren: # ebtables -t broute -L --Lx ebtables -t broute -A BROUTING -p IPv4 -j DROP ebtables -t broute -A BROUTING -p ARP -j DROP

Schließlich zeigt die Option -Lmac2 die MAC-Adressen an. I -N, --new-chain. Erzeugt eine benutzerdefinierte Kette. I -X, --delete-chain. Löscht eine benutzerdefinierte Kette. I -E, --rename-chain. Benennt eine benutzerdefinierte Kette um.

513 open source library i i ughne nefcsi e Ketten den in Interfaces ausgehenden die Sie ETBE -tmcfl itrtbe- itr--atomic-commit filter -t filter_table Tabelle --atomic-file die $EBTABLES Lade # Befehle weitere ... # enSencti ee el i ae nee öhe,kne i uhdie auch Sie können möchten, angeben Datei die Zeile jeder in Umgebungsvariable nicht Sie Wenn -j IPV4 -p 00:11:22:33:44:55 -s FORWARD --atomic-init -A filter filter_table -t --atomic-file filter_table $EBTABLES --atomic-file $EBTABLES 514 P4 R n eBU.En it le ölce rtklefidnSei der in Sie finden Protokolle Denken möglichen UDP. aller oder Liste sind TCP Protokolle Eine wie Mögliche NetBEUI. Datei betrachten. Protokoll und Ethernet-Frame ein ARP einen um hier IPv4, Sie nicht dass sich daran, es Sie handelt Hierbei fen. t0 n e oice nefc zB r)utrcidn i ighne Inter- eingehenden Ketten Die (z.B. den unterschieden. in Interface br0) die Sie physikalischen (z.B. können Paket dem Interface faces das zwischen logischen die dem jedoch und über wird eth0) Hier prüfen, hat. Netzwerkkarten erreicht die Bridge auch Ebtables kann Natürlich adl ssc men äg.Dn ewne i irbitte ist, hier 0x600 Sie als verwenden kleiner Dann Feld Länge. verwenden diesem eine in (802.2) um Wert sich Protokolle der es Einige handelt Sobald Längenangabe. werden. als angegeben Feld 0x0800) dieses = (IPv4 dezimal können: aufbauen Regeln die aufbauen. Sie Regeln wie die beispielhaft, inkrementell besteht, zeigt dann Gefahr Listing und Diese folgende löschen passiert. Das Tabelle Bridge stel- die Ihre So in zunächst ungefiltert aktivieren. Sie Regeln Paket Schritt wenn kein alle einzigen dass einem zunächst sicher, in Ebtables-Befehl Sie atomar len dann dem und mit aufbauen Verwendung Datei einer die für können Sie önn i pinnheißen: Optionen Die können. uähtkne i a rtkl e amn i e Option der mit Rahmens des Protokoll das Sie können Tests Watcher-Extensions). Zunächst eingebaute erläutert. und über kurz Ebtables Folgenden (Match-Extensions im verfügt Erweiterungen werden prüfen, Diese über zu Regeln und den (Matches) in Rahmen die Um I I I I ACCEPT ael ndraggbnnDatei. angegebenen der in Tabelle ae ee.Aßre anjdrBfh uhafen ae needtwer- angewendet Datei eine auf auch Befehl (siehe jeder den kann Außerdem lesen. Datei --atomic-commit --atomic-save. --atomic-init. --init-table. isitenaoae ogn.DeRgl ednal lihetggldn Die geladen! gleichzeitig alle Kommando werden dem Regeln mit Die kann Vorgang. Datei atomarer ein ist Dies ii Plc)afdnDfutzurück. Default den auf (Policy) linie /etc/ethertypes --atomic-file ntaiir i ael.De öctal eenudsttdeRicht- die setzt und Regeln alle löscht Dies Tabelle. die Initialisiert issKmad pihr e kule utn ie Ebtables- einer Zustand aktuellen den speichert Kommando Dieses a Kommando Das issKmad ätdeRgl u e neeee Datei. angegebenen der aus Regeln die lädt Kommando Dieses a rtkl answh i enmNmnasac hexa- auch als Namen seinem mit sowohl kann Protokoll Das . EBTABLES_ATOMIC_FILE .Mtdee eeliiilsee i i Datei. die Sie initialisieren Befehl diesem Mit ). INPUT ebtables , --atomic-save FORWARD verwenden. andeRgl ie ael u einer aus Tabelle einer Regeln die kann , PREROUTING OUTPUT oder , --atomic-init FORWARD und BROUTING und LENGTH p --protocol -p, reg werden. erzeugt POSTROUTING etn während testen, . 1Ebtables 31  testen prü- 31.4 Die ebtables-Syntax library

I -i, --in-if, --in-interface I --logical-in I -o, --out-if, --out-interface open source I --logical-out Um die MAC-Adressen des Rahmens zu prüfen, gibt es die Optionen -s, --src, --source beziehungsweise -d, --dst, --destination. Die Adresse wird als hexadezimale Adresse mit Doppelpunkten geschrieben: 00:50:56:C0:00:03. Beide Optionen erlau- ben auch die Angabe einer Netzmaske. Alternativ können Sie als Absenderadresse auch Unicast, Broadcast, Multicast oder BGA (Bridge Group Address) angeben. Um diese Typen als Zieladresse zu prüfen, existiert die Option --pkt-type (siehe unten). Der Ebtables-Befehl verfügt über eine Reihe von Erweiterungen, die für die Prüfung von Rahmen genutzt werden können. Diese Erweiterungen müssen nicht wie bei iptables mit der Option -m geladen werden. Sie werden jedoch in eigenen Kernel- Modulen implementiert. Für die Prüfung von 802.2- oder 802.3-Rahmen stehen die Optionen --802_3-sap und --802_3-type zur Verfügung. Für das ARP- und das RARP-Protokoll können Sie die folgenden Optionen verwen- den. Diese Optionen sind nur gültig, wenn Sie auch als Protokoll (-p)ARPoder RARP spezifiziert haben. I --arp-opcode. Diese Option gibt den ARP-Operation-Code an. Insgesamt existieren neun verschiedene Opcodes: – Request (1) – Reply (2) – Request_Reverse (3) – Reply_Reverse (4) – DRARP_Request (5) – DRARP_Reply (6) – DRARP_Error (7) – InARP_Request (8) – ARP_NAK (9) Diese Opcodes können als Zeichenkette oder numerisch angegeben werden. I --arp-htype. Der Hardware-Typ. Eigentlich immer Ethernet (1). I --arp-ptype. Der Protokoll-Typ. Eigentlich immer IPv4 (0x0800). I - - arp-ip-src, - - arp-ip-dst. Die IP-Absender- beziehungsweise IP-Zieladresse des ARP-Pakets. I - - arp-mac-src, - - arp-mac-dst. Die MAC-Absender- beziehungsweise MAC-Ziel- adresse des ARP-Pakets.

515 open source library --ip-proto oaden ee u ie amnztif,kn balsvrcidn Aktionen Aktionen verschiedene bekannten Ebtables Iptables kann von zutrifft, den Rahmen zu einen Zusätzlich ausführen. auf Regel eine Sobald pinnnte,u uietrdsI-ae upüe.DeeOtoe erreichen des Optionen Mächtigkeit Diese die prüfen. nicht zu weitem IP-Paket bei das rudimentär um nutzen, Optionen i Option Die eiae umrdrTp-fSriegpütwre.DeOption Die werden. geprüft Type-of-Service der Nummer dezimalen mPkt upooolee,eitetdeOption die existiert protokollieren, zu Pakete werden. weitere besprochen Sie Um nicht finden hier Manpage sollen der Vielzahl VLAN-Testoptionen Auf eine die würden. es Auch verwirren Informationen. nur gibt hier (STP) die Spanning-Tree-Protokoll-Rahmen Optionen, von von Prüfung die Für Typ der ist so gerichtet, Rechner asee ol irü ite e ee ilnc iezstlceOto,dewei- die Option, zusätzliche Paket eine dem noch mit Ziel wird. jedem anschließend erläutert bei unten was es ter angeben, die- gibt noch allen Hierfür zusätzlich soll. Bei passieren kleingeschrieben! Sie Konvention müssen der Zielen entgegen sen werden Ziele diese tung, CONTINUE noch auch Ebtables besitzt Sie nutzen möchten, ändern IP- Option ohne Defaultwerte der und diese anstelle Präfix Sie das Level, Wenn den ARP-Informationen. für und Defaultwerten den mit Paket das protokolliert --ip-dport --ip-destination-port, Mit prüfen. Ziel-IP-Adresse und Absender- ( Protokoll als Sie Wenn 516 ihu i C-oe D-ae,kne i mit Sie können UDP-Paket, oder TCP- ein um sich l retrne stehen Erweiterungen abgearbeitet. werden Als Kette der Regeln weiteren die sondern verlassen, nicht Kette balsi eest uItbe ieOto n enZe Tre) i Option Die (Target). Ziel kein und Option eine Iptables zu Gegensatz im Ebtables balsutrtttgnuoweItbe i akeugvnPktn i der Mit Paketen. von Markierung die Iptables wie Option genauso unterstützt Ebtables okne i i e Optionen den mit Sie können So h ye sind Typen che I ildre i u nder in nur Sie dürfen Ziel jarpreply. -j ezn s isdnohdrFl.Semse annrafasn asnctein nicht dass aufpassen, nur dann müssen wird! Sie ausgesendet Fall. ARP-Reply weiterer der dennoch dies ist setzen, --arpreply-mac edtwre ol i e Option der Mit soll. werden wendet RP ishtdnNcti,ds e oaeAPCcenctmtdnAbsen- den auf mit Target nicht das ARP-Cache Sie lokale Wenn der wird. dass aktualisiert Nachteil, derinformationen ist den Default-Einstellung hat Die Dies soll. DROP. behandeln Rahmen originalen den anschließend Option der Mit handelt. ARP-Anfragen um sich es ob selbstständig, erkennt gel --mark l il(agt ie ee neee,s idbiZtefndee ee die Regel dieser Zutreffen bei wird so angegeben, Regel einer (Target) Ziel als rab i rfn e PPoool zB C drUP.Hnetes Handelt UDP). oder TCP (z.B. IP-Protokolls des Prüfung die erlaubt --pkt-type önnSedeeMrirn testen. Markierung diese Sie können Das broadcast önnSedeMCArseagbn i ndrAtotver- Antwort der in die angeben, MAC-Adresse die Sie können --log arpreply itInndeMgihet e aetpz etn Mögli- testen. zu Pakettyp den Möglichkeit, die Ihnen gibt -p i Optionen die , P4i e ee pzfiirn üfnSedefolgenden die Sie dürfen spezifizieren, Regel der in IPv4 ) multicast arpreply Ze rab s R-nrgnz enwre.Dieses beantworten. zu ARP-Anfragen es, erlaubt -Ziel CONTINUE i ot testen. Ports die PREROUTING -psuc,--ip-src --ip-source, host , , dnat n retrne Tre xesos.Wurde Extensions). (Target Erweiterungen und host leadrnUiatPkt sind Unicast-Pakete anderen Alle . iptables --log-prefix , und mark Kteder -Kette --arpreply-target , -Kommandos. --ip-tos otherhost redirect , --log-level --log nat und andrhAgb e hexa- der Angabe durch kann s a ae ndnlokalen den an Paket das Ist . -psuc-ot --ip-sport --ip-source-port, und Tblevredn i Re- Die verwenden. -Tabelle i rtklirn s bei ist Protokollierung Die . -pdsiain --ip-dst --ip-destination, ee i n i Ebtables wie an, Sie geben snat , --log-ip u efgn.Ach- Verfügung. zur ACCEPT ACCEPT und , DROP --ip-protocol, oder otherhost 1Ebtables 31 --log-arp und CONTINUE RETURN --log und . die . 31.5 Start einer Bridge auf Fedora Core library

I -j dnat. Dieses Ziel darf in der BROUTING-Kette und in den PREROUTING-undOUTPUT- Ketten der nat-Tabelle genutzt werden. Die Ziel-MAC-Adresse geben Sie mit

--to-destination, --to-dst an. Anschließend wird das Paket akzeptiert. Wenn Sie open source dies ändern möchten, können Sie mit --dnat-target ein anderes Ziel angeben. I -j mark. Ebtables unterstützt wie Iptables eine Markierung der Rahmen/Pakete. Die Markierung geben Sie mit --set-mark als hexadezimale unsignierte Zahl an. Anschließend wird das Paket akzeptiert. Wenn Sie weitere Modifikationen des Pakets in der gleichen Kette vornehmen wollen, können Sie das mit --mark-target CONTINUE erreichen. I -j redirect. Dieses Ziel ist analog dem REDIRECT-Ziel von Iptables und erlaubt es, Pakete in der BROUTING-undPREROUTING-Kette, die eigentlich an eine andere MAC-Adresse gerichtet sind und gebridgt werden müssten, auf die lokale MAC- Adresse umzuleiten. Dabei wird als neue Ziel-MAC-Adresse die Adresse der Netzwerkkarte genutzt, über die der Rahmen das System erreicht hat. Anschlie- ßend wird das Paket akzeptiert. Das Verhalten können Sie mit --redirect-target ändern. Mit dieser Option können Sie auf einer Bridge Verbindungen über einen trans- parenten Proxy lenken! I -j snat. Hiermit können Sie in der POSTROUTING-Kette die Absender-MAC-Adresse ändern. Die neue MAC-Adresse geben Sie mit --to-source, --to-src an. Mit --snat- target können Sie ein anderes Ziel als ACCEPT (Default) angeben.

31.5 Start einer Bridge auf Fedora Core

Die Linux-Distribution Fedora Core enthält bereits in ihren Startskripten die Mög- lichkeit, eine Bridge zu initialisieren. Hierzu erzeugen Sie die folgenden Dateien in dem Verzeichnis /etc/sysconfig/network-scripts:

I ifcfg-br0 DEVICE=br0 ONBOOT=yes BOOTPROTO=static IPADDR=10.1.2.3 NETMASK=255.255.255.0 TYPE=Bridge STP=off DELAY=0 GCINT=30

ifcfg-eth0 I DEVICE=eth0 ONBOOT=yes BOOTPROTO=static BRIDGE=br0

517 open source library 518 T-rtkl n eihnses abschalten. beziehungsweise an- STP-Protokoll eoaCr idnnbi otndeetpehneBig ntaiirnuddie und initialisieren Parameter Bridge dem entsprechende Mit die hinzufügen. Booten Netzwerkkarten beim physikalischen nun wird Core Fedora I I ü eewieeNtwrkredrBig ite ieetpehneDatei. entsprechende eine es gibt Bridge der Netzwerkkarte weitere jede Für BRIDGE=br0 BOOTPROTO=static ONBOOT=yes DEVICE=eth1 ifcfg-eth1 STP önnSedas Sie können 1Ebtables 31 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library rtkleudApplikationen und Protokolle VII Teil

open source library

rnstlc ite wivrcidn ölckie e etiugdrIP- der Verteilung der können: werden Möglichkeiten eingesetzt kombiniert verschiedene auch aber zwei die Adressen, es gibt nicht Grundsätzlich IP-Adresse eine der verteilt. er Netzwerkkomponenten Server, da zwei IP-Adressen, einen an DHCP-Server eindeutiger gleichzeitig hierzu der Zurordnung löst benötigt der Dabei Problem Es verteilt. das Netzwerk. und verwaltet einem IP-Konfigura- Konfigurationsparameter automatische in diese die Komponenten erlaubt der Protocol tion Configuration Host Dynamic DHCP Das 32.1 möchten. dass nutzen so diese erläutert, Sie Vorteile ob ihre können, und Er- entscheiden Standard- behandelt selbst oder einer extra Sie Patches in diese besondere werden Sie hinaus gibt, darüber die Dabei weiterungen es Firewall. aufgezeigt, Wenn Ihrer Möglichkeiten vorfinden. Konfiguration Iptables die Linux-Distribution sichere durch immer die Filterung für zunächst ihrer Tipps werden wertvolle bei Ihnen IP-Protokolle gibt einzelne und bespricht Kapitel Dieses 32 bole wivrcidn aine e urnn it s a rtkl bei Protokoll das ist gibt, Zuordnung identisch. der Varianten Varianten beiden verschiedene zwei es Obwohl I I edkn e evrdeArsea ie etrnCin egbn mdie Verlängerung Um eine um vergeben. sich Client Client weiteren der muss einen bemühen. dürfen, an zu Adresse benutzen Anschlie- Der die länger nutzen. zu. Adresse Server (Lease) IP-Adresse Zeitraum der eine genannten kann ihm Zeit den bei ßend bestimmte für Client Adresse eine diese ein für darf sich Client Client Sobald diesem darf. er von verteilen weist Bereich dynamisch meldet, bestimmten er einen die Server zu, dem IP-Adressen weisen Sie IP-Adresse. entsprechende Zuordnung: MAC-Adresse die Dynamische der er mit erhält Client meldet, ein DHCP-Server jeder beim Sobald DHCP-Servers sich zu. des IP-Adresse Konfiguration feste der eine in MAC-Adresse ordnen Sie Zuordnung: Manuelle Protokolle einzelner Behandlung

open source library open source library PArse ägnsakvndmZsaddsCinsa seeAbbildung (siehe ab Clients gewählten des Die Zustand verwendet. dem (bootpc) von 68 stark Port den hängen den auf Client IP-Adressen sich der bindet während Server (bootps), Der 67 UDP-Protokoll. Port dem auf basiert DHCP-Protokoll DHCP-Protokoll Das Das 32.1.1 DHCP-Protokoll Das 32.1: Abbildung 522 Regeln: die folgende DHCP-Server Sie nimmt den benötigen Paketfilter Dann Es an weiter. den Unicast-Paket übernimmt. Netz per über anderen Aufgabe einem sie Kommunikation in diese arbeiten leitet die und Paketfilter genau für entgegen über das Sie Broadcast-Anfrage nicht einsetzen, dass auch sein, DHCP-Relay damit normalen es ein und einer kann Router ba- Jedoch über auf Broadcast-Kommunikation kann. einer nicht DHCP-Protokoll auf daher das Protokoll und das Sie siert da dass möchten, filtern unwahrscheinlich, Firewall eher ist Es Iptables-Regeln 32.1.2 Client der sendet (Lease) Nutzungsdauer der (Renewal) Verlängerung einer Bei verwenden. IP-Adresse 6. die Client der darf Jetzt be- 5. DHCP-Acknowledge einem mit Server dem von DHCP-Request. wird einen DHCP-Request sendet Dieser und aus Angebote 4. der eines wählt Client Der in 3. DHCP-Offer-Nachricht, einer mit antworten DHCP-Server verfügbaren Alle 2. in DHCP-Server sämtliche an DHCP-Discover-Nachricht eine sendet Client Der 1. Paketen: folgenden aus besteht DHCP-Verbindung Eine n rg en ohglieI-des uhasQelI-des ein. Quell-IP-Adresse als auch IP-Adresse DHCP-Servers gültige des noch Adresse seine die trägt an und direkt Unicast-Paket als DHCP-Request einen stätigt. anbieten. IP-Adresse eine sie der 0.0.0.0:68 IP-Absenderadresse 255.255.255.255:67. die Zieladresse hat die UDP-Paket und Dieses Netzwerk. lokalen dem DHCP-Client 68/udp DHCP-Acknowledge DHCP-Request DHCP-Discover DHCP-Offer 2Bhnln izle Protokolle einzelner Behandlung 32 67/udp DHCP-Server 32.1 ). 32.2 DNS library

Listing 32.1: Regeln für die Kommunikation eines DHCP-Relays mit einem DHCP-Server

DHCP_SERVER=192.168.0.2 open source

DHCP_RELAY=192.168.1.2 $IPTABLES -A FORWARD -s $DHCP_RELAY -d $DHCP_SERVER -p udp --sport bootpc --dport bootps  -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Wenn Sie einen DHCP-Server mit einer lokalen Firewall schützen möchten, benöti- gen Sie die folgenden Regeln:

$IPTABLES -A INPUT -p udp --sport bootpc --dport bootps -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Es gibt jedoch auch einen Fall, bei dem es Sinn machen kann, das DHCP-Protokoll tatsächlich über eine Firewall zu erlauben. Dies ist der Fall, wenn Sie eine trans- parente Firewall im Bridge-Mode aufbauen. Dann arbeitet die Firewall nicht als Router, sondern wie eine Bridge und sollte DHCP-Pakete erlauben.

DHCP_SERVER=192.168.0.2

CLIENTS=192.168.0.0/24 $IPTABLES -A FORWARD -s $CLIENTS -d $DHCP_SERVER -p udp --sport bootpc --dport bootps 

-m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -s 0.0.0.0 -d 255.255.255.255 -p udp --sport bootpc --dport bootps  -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

32.2 DNS

Das (DNS) ist einer der wichtigsten Dienste im Internet. Es handelt sich dabei um eine große hochverfügbare und verteilte Datenbank, die den Namensraum im Internet verwaltet. Seine wesentliche Aufgabe ist die Auflösung von Namen in IP-Adressen und umgekehrt. Zusätzlich ist es aber auch für das Mail-Routing verantwortlich und wird immer mehr für den Schlüsselaustausch von PKI-Systemen genutzt.

32.2.1 Das DNS-Protokoll Das DNS-Protokoll unterscheidet sich von den meisten anderen Protokollen da- durch, dass es sowohl UDP als auch TCP als Transportprotokoll nutzen kann. Die Auswahl des Transportprotokolls erfolgt dabei jedoch nicht beliebig. Der Client stellt zunächst die Anfrage mit dem UDP-Protokoll. Dabei verwendet der Server

523 open source library s e eafmgih(SG NSC,wr bri älce ist meistens Einsatz täglichen im aber wird DNSSEC), Signatur (TSIG, und verwendet. möglich nicht Authentifizierung Bedarf Eine bei Klartextprotokoll. ist ein ist DNS-Protokoll Das grundsätzlich durchgeführt. werden Nameservern TCP-Protokoll Zonentransfers dem primären Diese mit den durchgeführt. mit Zonentransfers Nameserver werden sekundären der Synchronisation Zur gestellt. TCP-Protokoll dem mit wird Anfrage DNS-Header neue benötigt, im Diese Bytes TC-Flag stellen. das 512 Anfrage und die > abgeschnitten bedeutet Paket be- Bytes Flag ein 512 Server Dieses bei Der gesetzt. Antwort Paket 1023. die das > jedoch wird UDP-Port dann Wenn beliebigen Anfrage. einen Client die der antwortet und 53/udp Port den 524 Nameserver diese auf speziell DNS-Anfragen erlaubten werden, die begrenzen. eingesetzt zu sein, Namensauflösung sinnvoll die es für DNS-Server kann bestimmte nur häufig Da Iptables-Regeln 32.2.2 Achtung Achtung criugdee rgamsfidnSehier: Sie security/artikel/print/43716/ finden Programmes dieses schreibung brDStnenkne.DsbkntsePorm ü einen für ( Programm nstx bekannteste sicher Das ist können. DNS-Tunnel tunneln DNS Protokolle beliebige über die Anwendungen, existieren Jahren einigen Übertragung Seit zur DNS-Protokoll beschrän- wird. das Nameserver genutzt dass Informationen spezielle Gefahr, anderer auf die Nutzung besteht die ken, Sie wenn Selbst Kommando dem mit Win2k3 PIX bei Cisco kann (z.B. Funktionalität wenn verwerfen Diese führen, Bytes 6.3). Problemen 512 < zu > kann DNS-UDP-Pakete Dies Micro- Firewalls Server. ist nutzt, 2003 Funktion Windows diese soft bereits jetzt das Bytes Betriebssystem, 512 Ein als Pakete größere dürfen. auch werden gesendet so und angibt Empfangspuffers (EDNS0) RFC DNS dem dass for Mit geschaffen, fällt. Voraussetzungen Einschränkung die letzte zumindest diese hat 2671 RFC Das ncd/ofg/nbedsrbs0 /enableednsprobes /config dnscmd dnscmd becattwerden: abgeschaltet truncated s smgih asdrCin i rß seines Größe die Client der dass möglich, es ist agshitn.DrCin usdn erneut dann muss Client Der (abgeschnitten). . http://nstx.dereference.de/nstx/ 2Bhnln izle Protokolle einzelner Behandlung 32 xeso Mechanisms Extension http://www.heise.de/ .En Be- Eine ). 32.2 DNS library

Ein weiteres mächtigeres Programm wurde von Dan Kaminsky auf der Blackhat 2005 in Amsterdam vorgestellt. Sein Fragile-Router-

Protocol ist in der Lage, 65 Kbit/s Daten über das DNS-Protokoll zu open source streamen. Da DNS-Server Anfragen, die sie nicht beantworten können, weiter- leiten, ist die Einschränkung der Nutzung auf bestimmte Nameser- ver nicht ausreichend. Im Folgenden stelle ich die Regeln für drei Szenarien vor.

1. Ein LAN greift auf einen DNS-Server zu. Dann benötigen Sie die folgenden Regeln:

LANDEV=eth0 EXTDEV=eth1 DNSSERVER="3.0.0.1 5.0.0.1" for DNSSRV in $DNSSERVER

do $IPTABLES -A FORWARD -i $LANDEV -o $EXTDEV -p udp --dport 53 -d $DNSSRV -m state 

--state NEW -j ACCEPT $IPTABLES -A FORWARD -i $LANDEV -o $EXTDEV -p tcp --dport 53 -d $DNSSRV -m state  --state NEW -j ACCEPT done $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

2. Ein DNS-Server greift auf weitere DNS-Server zu. Hier können Sie den Client der DNS-Verbindung zusätzlich einschränken. Dies erhöht die Sicherheit vor einem eventuellen DNS-Tunnel.

LANDEV=eth0 EXTDEV=eth1 MYDNS=192.168.255.2 DNSSERVER="3.0.0.1 5.0.0.1" for DNSSRV in $DNSSERVER

do $IPTABLES -A FORWARD -i $LANDEV -o $EXTDEV -p udp --dport 53 -s $MYDNS -d $DNSSRV 

-m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -i $LANDEV -o $EXTDEV -p tcp --dport 53 -s $MYDNS -d $DNSSRV  -m state --state NEW -j ACCEPT done $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

3. Sie möchten einen DNS-Server mit einer lokalen Firewall schützen. Dieser muss sowohl auf weitere DNS-Server für die rekursive Auflösung zugreifen als auch den Zugriff der lokalen Clients erlauben.

# Der DNS-Server muss auf andere DNS-Server zugreifen

525 open source library mdnebnBnte adl,wre oke rudn sgb clientseitige Aufrufen gibt allen Es bei eine erfunden. sich Damit Cookies es Client. wurden den dass neuen Für handelt, einen kann, ab. Benutzer um erkennen Verbindung denselben Verbindung die Server um jeder baut dem die bei und fordert auf Daten sich und Webapplikation auf die es Verbindung überträgt handelt eigene Server Server eine Der wünscht, an. er Client Daten der die baut Information, Normalerweise HTTP. jede Protokoll. mit für zustandsloses immer ein Clients ist des HTTP-Protokoll Zugriff Das der einen erfolgt Proxy (z.B. erlaubt, jeder Protokolle FTP) auch mehrere und Proxy hat HTTPS der HTTP, Jedoch dem Wenn verwendet. wählbar. mit 3128/tcp). Kommunikation (Squid: frei HTTP-Protokoll die Standardport häufig das für typischen ist Port ebenfalls TCP-Port einzigen einen Dieser wird nur Server. Client Proxy der einen nutzt SSL. hier von auf Auch Einsatz Zugriff den Port dem diesem Bei auf verwendet verlangt HTTPS-Protokoll und Das (443/tcp) Port verfügen. zusätzlich eigenen Schlüssel muss einen privaten Rechner passenden authentifizierende zu den Der über Schlüssel Ver- X.509-Zertifikaten. öffentliche gesamten von SSL-Protokoll der Form das in Verschlüsselung benötigt Ser- Authentifizierung anschließenden des die einer Authentifizierung Für mit eine bindung. Clients erlaubt zu- des Dies nur (SSL). und verwendet Layer vers Es Socket identisch. Secure TCP-Port HTTP-Protokoll die beliebiger dem sätzlich mit ein ist wird HTTPS-Protokoll Clientseitig Das 80. TCP-Port verwendet. den 1024 auf Protokoll Servers > üblicherweise diesem verwendet des und von im Seite Webserver wird auf Protokoll der Zugriff Internetverkehrs verwendete dem dient gesamten häufigsten Es des am transportiert. 70-80% das Etwa Abstand mit Internet. ist HTTP-Protokoll HTTP/HTTPS/ProxyDas 32.3 526 ITBE AOTU s$LET ptp-dot5 msae-saeNW- ACCEPT ACCEPT -j ACCEPT -j NEW ACCEPT ESTABLISHED,RELATED -j --state -j --state NEW state ESTABLISHED,RELATED state --state -m --state -m state 53 state OUTPUT -m --dport -m -A 53 tcp INPUT $IPTABLES --dport -p -A udp $CLIENTS $IPTABLES -p -s zugreifen $CLIENTS OUTPUT ihn -s -A auf INPUT $IPTABLES müssen -A Clients $IPTABLES Die # done o NSVi $DNSSERVER in do DNSSRV for CLIENTS=192.168.0.0/24 5.0.0.1" DNSSERVER="3.0.0.1 ITBE AOTU ptp-dot5 d$NSV- tt -tt E mowner -m NEW --state state -m $DNSSRV ACCEPT -d -j 53 named --dport --cmd-owner tcp named ACCEPT -p --uid-owner -j OUTPUT named -A --cmd-owner $IPTABLES named --uid-owner ITBE AOTU pup-dot5 d$NSV- tt -tt E mowner -m NEW --state state -m $DNSSRV -d 53 --dport udp -p OUTPUT -A $IPTABLES 2Bhnln izle Protokolle einzelner Behandlung 32   32.3 HTTP/HTTPS/Proxy library open source

Abbildung 32.2: Ethereal kann die BASIC-HTTP-Authentifizierung anzeigen.

Cookies, die von dem Server an den Browser übertragen werden und beim nächsten Besuch von dem Browser wieder an den Server geschickt werden. Im Gegensatz dazu werden serverseitige Cookies meist in der URL als Zeichenkette kodiert. Der Server stattet alle Verknüpfungen auf der Webseite mit derselben Zeichenkette aus und kann so den Weg des Benutzers durch die Seiten verfolgen. Das HTTP-Protokoll erlaubt auch eine Authentifizierung des Benutzers mit Benut- zernamen und Kennwort. Dabei existieren insgesamt drei Möglichkeiten der Über- tragung dieser Informationen: I BASIC: Hier werden der Benutzername und das Kennwort, durch einen Doppel- punkt getrennt, in Base64-Kodierung übertragen. Es handelt sich also um eine Übertragung in Klartext. Mit der Anwendung Ethereal können Sie sich diese Zeichenkette ansehen (Abbildung 32.2) Die Zeichenkette lässt sich dann auf jedem Linux-System leicht dekodieren: [spenneb@bibo screenshots]$ echo "dXNlcjpnZWhlaW0=" | openssl base64 -d user:geheim

I DIGEST: Hier wird lediglich der Benutzername übertragen. Anstelle des Kenn- worts wird das Ergebnis einer mathematischen Berechnung übertragen. Dazu übermittelt der Server eine Zufallszahl an den Client, der aus dieser Zahl und dem Kennwort eine Antwort errechnet und diese zurückschickt. Der Server führt dieselbe Berechnung durch und vergleicht das Ergebnis.

527 open source library ITBE AFRAD- tt -tt SALSE,EAE jACCEPT -j ESTABLISHED,RELATED --state state -m FORWARD -A $IPTABLES ITBE AFRAD- ADV- XDV- c mmliot-dot8,4 mstate -m 80,443 --dport multiport -m tcp -p EXTDEV -o LANDEV -i FORWARD -A $IPTABLES EXTDEV=eth1 LANDEV=eth0 beliebige Internet im auf Webserver auf LAN Zugriff 32.2: ein Listing dass so darf. zugreifen demonstriert, HTTPS- Internet im keine Beispielregeln zwei Webserver Regeln. Sie den lediglich werden zu Wenn es 443 Zunächst Port verwendet. da den 443/tcp) Sie einfach, entfernen HTTPS: wollen, sehr erlauben und sind Verbindungen 80/tcp Protokoll (HTTP: dieses Ports für Iptables-Regeln Die Iptables-Regeln 32.3.1 528 ACCEPT -j NEW ACCEPT --state -j state ACCEPT ESTABLISHED,RELATED -m -j --state 80,443 ESTABLISHED,RELATED state --dport --state -m multiport state OUTPUT -m -m -A tcp INPUT $IPTABLES -p -A INPUT $IPTABLES -A $IPTABLES Webserver. den schützt sichern. Firewall lokale Firewall Eine lokalen 32.3: einer Listing mit verwenden: Webserver Regeln folgende einen Sie können auch Dann Sie können Natürlich asdrCoi elu id ae idhugdee okemtenrmaxima- einer Gefahr, mit Cookie die versehen. dieser nur Minuten häufig besteht wenigen wird von Es Daher Lebensdauer wird. wird. len übertragen geklaut mehr Cookie der Kennwort Authentifizierung dass kein die da für werden, anschließend gen der wird, gespeichert Zufallszahl, genutztwird.DieweiterenVerbindungenkönnendannwiederinKlartextübertra- Cookie eine Phase Webapplikation einem Diese die in erzeugt verlangen. die Anschließend Authentifizierung geschützt. SSL eine mit schützen die wird zu häu- genutzt, werden (SSL) Verbin- Webapplikationen Hierzu Layer sinnvoll, die umzustellen. fig Socket es dass Authentifizierungsverfahren Secure ist alternative erkennen, mit auf Daher zu oder Verbindungen werden! ist gesamten aufgebaut Lage die Benutzer der entweder demselben in über- von nicht ist erneut immer Server Verbindungsaufbau HTTP-Protokoll dungen der jedem das da bei werden, durch Informationen tragen diese direkt dass Authentifizierung beachten, der zu Verwendung der Bei I -tt E jACCEPT -j NEW --state TM irefltdeAmlugaao ie nedn nenmMi- einem an verschlüsselt Anmeldung hier einer werden analog übertragen. Anmeldeinformationen Die Anmeldung Windows-Server. die crosoft erfolgt Hier NTLM: 2Bhnln izle Protokolle einzelner Behandlung 32  32.4 ELSTER library

32.4 ELSTER

Die elektronische Steuererklärung (ELSTER) überträgt die Steuerdaten über das In- open source ternet an die Finanzämter in Deutschland. Hierbei werden die Daten verschlüsselt übertragen. Über ELSTER können die folgenden Informationen übermittelt werden: I Einkommensteuererklärung I Umsatzsteuer-Voranmeldung I Antrag auf Dauerfristverlängerung I Antrag auf Sondervorzahlung I Umsatzsteuererklärung I Gewerbersteuererklärung I Lohnsteuererklärung I und Lohnsteuerbescheinigungen Leider gibt es inzwischen verschiedene Möglichkeiten der Übertragung, die von un- terschiedlichen Systemen unterschiedlich genutzt werden. Elster selbst ist eine Soft- ware, die nicht einzeln erhältlich ist, sondern in andere Programme, zum Beispiel Buchhaltungs- oder Lohn- und Gehaltssoftware eingebaut wird. Des Weiteren gibt es mit der Software ElsterFormular eine kostenlose Software, die zum Ausfüllen der Formulare und deren Übertragung genutzt werden kann. Ab Mitte September 2005 wird mit ElsterOnline ein zusätzlicher Weg eröffnet, der nur noch einen Browser benötigt. Die Übertragung erfolgt dann über HTTPS. Ab 2006 wird dies wahrschein- lich das ElsterFormular ablösen. ElsterFT ist schließlich eine Software für Behörden, um verfahrensabhängige Formulare herunterzuladen, Sende- und Abholaufträge zu erstellen und Monitor- und Protokollfunktionen zu übernehmen. Eine Übertragung von Steuererklärungen oder deren Daten ist nicht möglich. Das ElsterFormular benötigt für die Übertragung der Daten Zugriff auf den TCP- Port 8000. Alternativ ist auch die Übertragung über einen HTTP-Proxy möglich. Dann muss dieser aber den Zugriff auf den TCP-Port 8000 ermöglichen. ElsterFT benötigt Zugriff auf den TCP-Port 80. Ein Zugriff über einen Proxy ist möglich. Elster selbst benötigt je nach Version Zugriff auf den TCP-Port 8000 oder 80.

32.4.1 Iptables-Regeln Im Wesentlichen benötigt Elster Zugriff auf die Server der Finanzverwaltung. Hier muss der Zugriff auf den TCP-Port 80 und 8000 möglich sein. Die aktuelle Liste der Elster-Server (Stand Oktober 2005): 62.157.211.58, 62.157.211.59, 62.157.211.60, 193.109.238.26, 193.109.238.27 und 213.182.157.55. Folgende Regeln erlauben den Zu-

griff: ELSTER_SERVER="62.157.211.58 62.157.211.59 62.157.211.60 193.109.238.26 193.109.238.27  213.182.157.55"

529 open source library e C-ot2 ebnugnetee.DrCin äl ie eibgnPort beliebigen einen wählt Client auf Der nimmt Telnet-Server 1023. entgegen. über > Der Verbindungen Telnet (SSH). 23 wie Shell TCP-Port Secure Alternativen, wird dem die sichere Daher und moderne zu. Telnet gibt kerberosiertes Kennwort SSL, Es das übertragen. und trotzdem Benutzernamen wird als den auf Anmeldung auch eine trifft Dies text. ölc,kse brzstlceLizenzgebühren. zusätzliche aber kostet möglich, ITBE AFRAD- tt -tt SALSE,EAE jACCEPT -j ESTABLISHED,RELATED --state state -m FORWARD -A $IPTABLES done a entPooolsmleten emnlUgbn brenNetzwerk ein über Terminal-Umgebung eine simuliert ( Telnet-Protokoll TelnetDas Regelwerk 32.5 das ist Damit Iptables-Regel. Regeln. sechs einzige mit als eine multiport übersichtlicher nur wesentlich -m benutzen tcp Regeln Diese -p dst elster --set set -m $EXTDEV -o $INTDEV -i FORWARD 213.182.157.55 -A elster $IPTABLES 193.109.238.27 -A elster $IPSET 193.109.238.26 -A elster $IPSET 62.157.211.60 -A elster $IPSET 62.157.211.59 -A elster $IPSET 62.157.211.58 -A elster $IPSET iphash -A elster $IPSET -N $IPSET IPSET=/sbin/ipset Befehl den Iptables-Befehl Ihr und Kernel Ihr Wenn $ELSTER_SERVER in do SRV for ITBE AFRAD- ITE o$XDV- c -pr 3- tt -tt E jACCEPT -j NEW --state 530 state -m 23 ACCEPT --dport -j tcp ESTABLISHED,RELATED -p --state $EXTDEV state -o -m $INTDEV FORWARD -i -A FORWARD $IPTABLES -A $IPTABLES dennoch Switches Einsatz per Router, der wie Drucker Netzwerkkomponenten wird oder noch Netzwerken aufweist, werden modernen Häufig Sicherheitslücken in gefordert. wesentliche häufig Telnet es von Einsatz da den plädiere, gegen grundsätzlich ich Obwohl Iptables-Regeln 32.5.1 a uhenahrkonfigurieren: einfacher auch das T -pr 080 msae-saeNW- ACCEPT -j NEW --state state -m 80,8000 --dport ITBE AFRAD- ITE o$XDV- SV- c mmliot-dot80,8000 --dport multiport -m tcp -p $SRV -d $EXTDEV -o $INTDEV -i FORWARD -A $IPTABLES erminal msae-saeNW- ACCEPT -j NEW --state state -m E mu L to over ation telnet root ofiuir.En ursugafSHittiwiezwar teilweise ist SSH auf Aufrüstung Eine konfiguriert. bihres uhaglht ctn,dsKennwort das Achtung, abgelehnt. auch üblicherweise NET ok.E brrg ätih ae nKlar- in Daten sämtliche überträgt Es work). 2Bhnln izle Protokolle einzelner Behandlung 32 ipset nesüzn önnSie können unterstützen,   32.6 SSH library

Wenn Sie einen Telnet-Server mit einer lokalen Firewall schützen möchten, verwen- den Sie die folgenden Regeln:

$IPTABLES -A INPUT -p tcp --dport 23 -m state --state NEW -j ACCEPT open source $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

32.6 SSH

Die Secure Shell (SSH) stellt eine sichere Alternative zu den folgenden Portokollen und Anwendungen dar: telnet, rlogin, rcp, ftp etc. Dabei überprüft die Secure Shell im ersten Schritt die Identität des Servers, zu dem die Verbindung aufgebaut wird, bevor das Kennwort über einen verschlüsselten Tunnel übertragen wird. Achtung: Das Kennwort erreicht den Serverprozess in Klartext. Lediglich die Übertragung ist verschlüsselt. Ein bösartiger Server könnte das Kennwort in Klartext abspeichern. Um auch hiervor Schutz zu bieten, bietet die SSH auch die Authentifizierung des Clients mit öffentlichen Schlüsseln an. Sämtliche anschließend übertragenen Daten werden dann von der SSH verschlüsselt, und jedes einzelne Paket wird auf seine Integrität und Authentizität geprüft. Die meisten Implementierungen der Secure Shell bieten inzwischen nicht nur den ssh-Befehl, sondern auch die Befehle scp und sftp. Mit diesen Befehlen können Da- teien kopiert oder ftp-ähnlich transportiert werden. Unabhängig von dem gewähl- ten Namen werden die Daten rein über die SSH-Verbindung transportiert. Ein zu- sätzlicher FTP-Server ist nicht erforderlich. Der SSH-Server bindet sich auf den TCP-Port 22 und nimmt dort Verbindungen entgegen.

32.6.1 Iptables-Regeln Die Regeln für die Filterung von SSH sind sehr einfach und mit den Regeln für einen HTTP-Server vergleichbar.

Listing 32.4: Zugriff auf SSH-Server im Internet

LANDEV=eth0 EXTDEV=eth1

$IPTABLES -A FORWARD -i LANDEV -o EXTDEV -p tcp --dport 22 -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Natürlich können Sie auch einen SSH-Server mit einer lokalen Firewall sichern. Dann können Sie folgende Regeln verwenden:

531 open source library ITBE AFRAD- ITE o$XDV- EOKYCIN pup- multiport Client -m den udp auf -p Zugriff $EDONKEY_CLIENT # -s $EXTDEV -o $INTDEV -i FORWARD -A $IPTABLES iaindsCinsmtdmSre.BiEokyhnete ihu i folgenden die um sich es handelt Kommu- die Edonkey für Bei 1023) Server. (> Ports: dem Ports mit hohe Clients P2P-Netze des anderen nikation alle fast wie nutzt Edonkey Sie ermöglichen wie und Sie verhindern, Verkehr? können und diesen Wie die mit darstellen. erkennen für Varianten P2P-Verkehr dass beide einfach Folgen daher besteht, möglichst werden negative Wir Gefahr die können. die haben erfolgen, Firma da Copyright-Verletzungen Firma verhindern, einer Protokollen in Anwendung diesen Administrator ein- jede Der um können. möglichst zu nutzen, möchte zugreifen häufig Firewall- Dateien Dienste bestimmte eines diese auf Ansätze fach möchte zwei Heimanwender grundsätzlich Der es Administrators. gibt Peer2Peer-Netzwerken den Edonkey P2P: Bei ACCEPT ACCEPT 32.7 -j -j NEW ACCEPT ESTABLISHED,RELATED --state -j --state state ESTABLISHED,RELATED state -m --state -m 22 state OUTPUT --dport -m -A tcp INPUT $IPTABLES -p -A INPUT $IPTABLES -A SSH-Server.$IPTABLES den schützt Firewall lokale Eine 32.5: Listing 532 multiport -m tcp -p $EDONKEY_CLIENT -s $EXTDEV -o $INTDEV -i FORWARD -A Server $IPTABLES den auf EDONKEY_CLIENT=192.168.0.5 Client-Zugriff aufzubauen, werden: erlaubt # Edonkey-Netzwerk Ports zum entsprechenden Verbindung den zu eine Verbindung Client eine sollte einem mit nun Um Iptables-Regeln 32.7.1 I I I I -pr 6547 msae-sae-E jACCEPT -j -NEW --state state ACCEPT -m -j 4665,4672 -NEW --dport --state state -m 4661,4662 --dport 62up isrPr idfrdrkeCin-letVridne genutzt. Client-Client-Verbindungen direkte einstellbar. für ist auf Port wird finden, dieser Auch zu Port Servern Dieser auf 4672/udp: Quellen ist. um angemeldet nicht benötigt, man wird denen Port Dieser 4665/udp: darüber, auch entscheidet ( Client hohe dem eine auf Erreich- Client Die Server der Client. den ob dem durch auf Ports Port diesem dieses mit barkeit sich verbindet meldet Server und Der Server 4662/tcp: dem auf Port an. diesem dort mit sich sich verbindet Client Der 4661/tcp: isrPr anafdmCin enetwre.DeI s ausschlaggebend ist ID Servern. Die fremden werden. auf geändert Download-Rate eigene Client die dem für auf kann Port Dieser ≥ 6727 dren idieI ( ID niedrige eine oder 16777217) 2Bhnln izle Protokolle einzelner Behandlung 32 ≤ 6726 erhält. 16777216)   32.7 P2P: Edonkey

library $IPTABLES -t nat -A PREROUTING -i $EXTDEV -p tcp --dport 4662 -j DNAT 

--to-destination $EDONKEY_CLIENT 

$IPTABLES -t nat -A PREROUTING -i $EXTDEV -p udp --dport 4672 -j DNAT open source

--to-destination $EDONKEY_CLIENT $IPTABLES -A FORWARD -i $EXTDEV -o $INTDEV -d $EDONKEY_CLIENT -p tcp --dport 4662 

-m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -i $EXTDEV -o $INTDEV -d $EDONKEY_CLIENT -p udp --dport 4672  -m state --state NEW -j ACCEPT

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Falls Sie den Edonkey-Client mit einer lokalen Firewall direkt schützen möchten, benötigen Sie folgende Regeln:

$IPTABLES -A OUTPUT -p tcp -m multiport --dport 4661,4662 -m state --state -NEW -j ACCEPT $IPTABLES -A OUTPUT -p udp -m multiport --dport 4665,4672 -m state --state -NEW -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 4662 -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -p udp --dport 4672 -m state --state NEW -j ACCEPT

$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Häufiger jedoch möchten Sie den Edonkey-Verkehr unterbinden. Am einfachsten ist das, wenn Ihre Firewall grundsätzlich alles verbietet und nur bestimmte Protokolle erlaubt. Edonkey ist dann einfach nicht dabei. Vielleicht müssen Sie aber die Firewall für eine Universität implementieren. Hier wird häufig bewusst ein anderer Ansatz gewählt. Um die freie Forschung nicht zu behindern, wird alles erlaubt und werden nur bestimmte Protokolle unterbunden. Um Edonkey zu verhindern, können Sie den Zugriff auf die Ports unterbinden:

$IPTABLES -A FORWARD -p tcp -m multiport --dport 4661,4662 -j REJECT $IPTABLES -A FORWARD -p udp -m multiport --dport 4665,4672 -j REJECT

Es gibt jedoch auch noch zwei weitere mögliche Lösungen: L7-Filter (http://l7-filter.sourceforge.net/) und das Iptables-Modul Iptables-p2p (http://community.sidestep. pt/~filipe/Iptables-p2p/). Leider wird das Letztere seit September 2004 nicht mehr aktiv weiterentwickelt. Die aktuellste Version befindet sich im CVS. Diese Module versuchen, den Netzwerkverkehr durch eine Inhaltsanalyse zu erkennen. Während das Iptables-p2p-Modul nur Peer2Peer-Verkehr erkennen kann (FastTrack, eDon- key, Gnutella, BitTorrent und OpenFT), erkennt L7-Filter bereits eine Vielzahl von Protokollen und wird aktiv weitergepflegt. Der Vorteil dieser Module ist, dass sie das P2P-Protokoll unabhängig von dem verwendeten Port erkennen. So kann der P2P-Verkehr auch bei Modifikation der

533 open source library ohi e ese ezeknnctmgihsi.KZAkn oa breinen über sogar kann KaZaA je- sein. möglich wird arbeiten! nicht aktuellen Ports Proxy Netzwerken den meisten dieses bei den sogar Unterdrückung ist in Dies Eine die- doch verwenden. auf Default-Einstellung. 80 dem Zugriff Port die auf den den KaZaA-Clients Firewall Port auch die KaZaA dieser wesentlich Verhindert kann muss sein. Port, KaZaA Funktionalität jedoch erreichbar sen bei volle außen kann von eine dies Port auch Für ist Dieser Client werden. 1214/tcp. verbieten, gewählt Standardport frei zu den auch Verkehr benutzt Edon- den es bei KaZaA war, gibt es schwieriger. hier Während leicht verbieten. Auch relativ oder P2P-Filesharing-Protokoll. key erlauben ein Zielsetzungen: Edonkey zwei wie grundsätzlich ebenfalls ist KaZaA Kazaa P2P: 32.8 die und eintragen: patchen Skript Iptables- entsprechend Ihrem Kernel dem in Ihren mit Befehle Sie folgenden Edonkey-Verbindungen müssen Um verhindern, werden. zu p2p-Modul erkannt sicher noch Ports 534 KAZAA_CLIENT=192.168.0.5 Sie KAZAA_PORT=1214 können erhalten, zu verwenden: Standardport Regeln dem folgenden mit die KaZaA-Funktionalität volle die Um Iptables-Regeln 32.8.1 ITBE AFRAD- 2 -2-rtcleoky- REJECT -j edonkey --p2p-protocol p2p -m FORWARD -A $IPTABLES Hinweis Tipp lee itiuinn i i palsVrin129verwenden, 1.2.9 Iptables-Version die werden. auf eingesetzt zu die nur Core-4-Distribution wahrscheinlich Distributionen, kann Fedora Modul älteren einer Dieses fehl. auf schlug Modul übersetzen, das Versuch, Der beschränkt einnimmt, Ver- P2P-Verkehr priorisieren. den der zu die um werden. anschließend Bandbreite, werden, die und kann genutzt markieren So zu gut erkennen, sehr zu auch kehr kann Modul Dieses 2Bhnln izle Protokolle einzelner Behandlung 32 32.9 P2P: BitTorrent

library $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -s $KAZAA_CLIENT -p tcp --dport $KAZAA_PORT 

-m state --state NEW -j ACCEPT 

$IPTABLES -t nat -A PREROUTING -i $EXTDEV -p tcp --dport $KAZAA_PORT -j DNAT open source

--to-destination $KAZAA_CLIENT $IPTABLES -A FORWARD -i $EXTDEV -o $INTDEV -d $KAZAA_CLIENT -p tcp --dport $KAZAA_PORT  -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Wenn Sie den KaZaA-Verkehr unterbinden möchten, benötigen Sie eine intelligente Protokollerkennung. Hier können Sie dieselben Systeme einsetzen wie bei Edonkey. Zusätzlich gibt es für KaZaA, das das Fasttrack-Protokoll verwendet, noch die FT- wall von Chris Lowth (http://www.lowth.com/p2pwall/ftwall/). Außerdem können Sie versuchen, mit dem Iptables-string-Modul spezielle KaZaA-Pakete zu erkennen und die Verbindungen abzubrechen:

$IPTABLES -A FORWARD -p tcp -m string --string "X-Kazaa-Username:" -j REJECT $IPTABLES -A FORWARD -p tcp -m string --string "X-Kazaa-Network:" -j REJECT $IPTABLES -A FORWARD -p tcp -m string --string "X-Kazaa-IP:" -j REJECT $IPTABLES -A FORWARD -p tcp -m string --string "X-Kazaa-SupernodeIP:" -j REJECT

Mit dem iptables-p2p-Modul könnten Sie die folgende Regel verwenden:

$IPTABLES -A FORWARD -m p2p --p2p-protocol fasttrack -j REJECT

Außerdem gibt es noch das ipp2p-Modul aus Patch-O-Matic. Dieses Modul erlaubt ebenfalls den Test des Verkehrs: iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP

Dieses Modul aus Patch-O-Matic ist in der Lage die folgenden Protokolle (teilweise) zu erkennen: eDonkey/eMule, KaZaA, Gnutella, Direct Connect, BitTorrent, Apple- Juice, SoulSeek, WinMX und Ares/AresLite.

32.9 P2P: BitTorrent

BitTorrent beschreibt sich selbst als ein Werkzeug zur freien Meinungsäußerung. Es handelt sich auch um ein Filesharing-System, das aber nicht mit dem Ziel ge- schaffen wurde, urheberrechtlich geschützte Dateien zu tauschen. BitTorrent wurde geschaffen, um Firmen und Personen, die interessante Dateien anzubieten haben, eine optimale Download-Plattform zu bieten. Wenn eine Firma eine neue Demo- datei eines Spiels anbieten möchte, wird die Download-Rate rapide in die Höhe schnellen. Die Anwender müssen sich mit langsameren Downloads zufrieden ge- ben, und die Firma muss die hohen Kosten für die Übertragung tragen. BitTorrent löst das Problem, indem die Anwender, die die Datei gerade herunterladen, wieder

535 open source library nenmegnnKptlbsrce.DsEseekn erenaheneez wer- eingesetzt einfach sehr kann Erstere Das den: besprochen. Kapitel eigenen einem in ITBE AFRAD- tt -tt SALSE,EAE jACCEPT -j ESTABLISHED,RELATED --state 6969 state --dport -m tcp FORWARD -p -A $BITT_CLIENT 6881:6889 $IPTABLES -d --dport $INTDEV tcp -o -p $EXTDEV $BITT_CLIENT -i DNAT -d FORWARD -j $INTDEV -A 6969 -o $IPTABLES --dport $EXTDEV tdp -i -p DNAT FORWARD $EXTDEV -j -A -i 6881:6889 $IPTABLES PREROUTING --dport -A tcp nat -p -t $EXTDEV $IPTABLES -i PREROUTING 6881:6889 -A Client --dport nat den tcp -t auf -p $IPTABLES Zugriff $EDONKEY_CLIENT # -s $EXTDEV -o $INTDEV -i FORWARD -A $IPTABLES ITBE AFRAD- ITE o$XDV- BT_LET- c -pr 6969 --dport tcp -p $BITT_CLIENT -s $EXTDEV -o $INTDEV -i FORWARD -A Server $IPTABLES erlauben den Client auf BITT_CLIENT=192.168.0.5 einen Client-Zugriff für # verwenden: Firewall Regeln Ihre folgenden die durch Sie können BitTorrent-Verkehr möchten, den Sie Wenn Iptables-Regeln Sie 32.9.1 kennen Modell Dieses sein. erreichbar außen P2P-Protokollen. die von anderen Um von auch schon Ports 6881-6889. der diesen muss und auf erreichen, zu 6969 Client Download-Geschwindigkeiten TCP-Ports hohe und die Funktionalität volle verwendet stellen. zu BitTorrent-Protokoll Datenmengen Verfügung große Das zur um preiswert genutzt, und Hat) schnell von Red CD-ISO-Abbilder) wird auch Beispiel Plattform (zum Beispiel Diese (zum BitTorrent. Firmen von mehr Erfolges immer des Geheimnis das gemeinsame ist verteilte wird Download Dieser Dadurch vervielfacht. stehen. Download-Geschwindigkeit Verfügung maximale zur die Download-Plattform als Anwendern anderen 536 REJECT -j bittorrent --p2p-protocol p2p -m FORWARD -A $IPTABLES kann Dies Protokollerkennungswerkzeugs. Firewall ist intelligenten Bit- Ihrer iptables-p2p Sinnvoller eines nur werden. in Einsatz eingestellt aber der 6881-6889 beliebig hier erlauben, Ports auch Portbereich alles die dieser grundsätzlich Sie kann Jedoch Sie können schließen. Sollten so dass aufzunehmen. möchten, befinden, unterbinden mit Lage Torrent nicht der BitTorrent in nur sich und grundsätzlich Sie erlauben sinnvollsten, am zu es Protokolle ist möchten, bestimmte verhindern Zugriff den Sie Wenn msae-saeNW- ACCEPT -j NEW --state state ACCEPT -m -j NEW --state state -m $BITT_CLIENT --to-destination $BITT_CLIENT --to-destination ACCEPT -j -NEW --state state ACCEPT -m -j -NEW --state state -m seeAbschnitt (siehe 32.7 enoe a 7Fle-ou.DsLttr wird Letztere Das L7-Filter-Modul. das oder sein ) 2Bhnln izle Protokolle einzelner Behandlung 32       32.10 FTP library

32.10 FTP

Das ist eines der ältesten Applikationsprotokolle, die heute open source noch im Einsatz sind. Es wurde 1973 entwickelt und als RFC veröffentlicht. Nur zum Vergleich: Ethernet wurde 1974 und UUCP 1978 entwickelt. Das Internetpro- tokoll IP hat erst 1980 das Network Control Protocol (NCP) abgelöst. Dennoch ist FTP eines der kompliziertesten Protokolle. Es verlangt zu Beginn eine Authentifizierung und überträgt sämtliche Informationen im Klartext. Auch der Be- nutzername und das Kennwort werden ungeschützt übertragen.

Achtung Es existieren kerberosierte Versionen, die einen Single-Sign-On er- möglichen und auch anschließend sämtliche Daten bei der Übertra- gung schützen. Außerdem bietet die SSH häufig einen SFTP-Zugang an. Dies ist ein geschützter FTP-ähnlicher Zugang zum Dateitrans- fer.

32.10.1 Das FTP-Protokoll Das FTP-Protokoll ist deswegen so kompliziert, weil die Anmeldeinformationen und die Befehle von dem FTP-Client zum Server über die Steuerungsverbindung übertragen werden, während alle Daten, die der Server an den Client übermittelt, über eigene separate Datenverbindungen transportiert werden. Die Steuerungsverbindung (Control Connection) wird von dem Client zum Server auf dem Port 21/tcp aufgebaut. Der Client verwendet für den Aufbau einen beliebi- gen Port > 1023. Diese Verbindungen werden genutzt, um alle Anmeldeinformatio- nen zu übertragen und die Befehle des Clients an den Server zu übertragen. Dateien werden über eigene Datenverbindungen übertragen. Dies trifft auch schon auf die Inhaltsangabe eines Verzeichnisses beim Befehl ls bzw. dir zu. Ebenso ist dies un- abhängig von der Richtung des Transfers. Sowohl der PUT-alsauchderGET-Befehl triggert eine Datenverbindung. Für den Aufbau dieser Datenverbindungen gibt es grundsätzlich zwei Möglichkei- ten. Bei dem aktiven FTP baut der Server diese Datenverbindungen auf. Dazu über- mittelt der Client dem Server in einem PORT-Kommando die IP-Adresse und den Port, auf dem er die Verbindung des Servers entgegennimmt. Der Server baut dann von dem Port 20/tcp (ftp-data) die Verbindung zu dem Port auf, den er von dem Client erhalten hat (Abbildung 32.3). Für jede zu transportierende Datei wird eine neue Datenverbindung geöffnet. Die Verbindung wird nach dem Transport nicht für zukünftige Dateien offen gehalten. Bei dem passiven FTP sendet der Client ein PASV-Kommando über die Steuerungs- verbindung an den Server. Der Server antwortet mit einer IP-Adresse und einer

537 open source library i ednmtflednPolmnkonfrontiert: Problemen folgenden sicherlich mit werden ist Sie Dies schützen. Firewall Ihrer mit wir Standardfall. FTP-Client Stellen der den Probleme. möchten mehrere Sie nun zum sich vor, 1023 stellen uns Firewall > einer TCP-Port Administrator den beliebigen Für einem (Abbildung auf von FTP-Servers Verbindung des die Port angegebenen nun baut Client Der verwen- Hier 1023! erwartet. > Datenverbindung TCP-Port der einen Server Aufbau der den det er der auf auf. Portnummer, Datenverbindung die FTP aktivem bei baut Server Der 32.3: Abbildung 538 auf. Datenverbindung die FTP aktivem bei baut Server Der 32.4: Abbildung I I e ebnugaseadl n thnnctz einbrisfs!En Be- Eine fest! möglich. bereits nicht Beginn ist während Regeln zu statischen dynamisch nicht in stehen werden rücksichtigung und -adressen ausgehandelt und Verbindung Zielports der verwendeten der auf. Verbindungen Einige von Vielzahl eine baut FTP-Protokoll Das Achtung 192.168.0.5 192.168.0.5 e T-evrkn l nwr u ein auf Antwort als kann FTP-Server Der eeI-des uükifr,ase ü i Steuerungsverbindung die für er verwendet! als zurückliefern, IP-Adresse dere 1297/tcp 1291/tcp 1297/tcp 1291/tcp PORT 192,168,0,5,5,17 PORT Steuerungsverbindung Steuerungsverbindung Datenverbindung an Datenverbindung 192.168.0.5:1297 Datenverbindung PASV 2Bhnln izle Protokolle einzelner Behandlung 32 32.4 1315/tcp 21/tcp 20/tcp 21/tcp ). PASV Kmad iean- eine -Kommando FTP-Server FTP-Server 32.10 FTP library

I Bei dem aktiven FTP müssen Sie Verbindungen von dem Server zu Ihrem ge- schützten FTP-Client durch die Firewall erlauben. Dabei kennen Sie den Zielport

der Verbindung nicht. Es handelt sich um einen beliebigen Port > 1023. open source I Bei dem passiven FTP ist es nicht ganz so schlimm. Dennoch müssen Sie belie- bige Verbindungen von Ihrem Client zum Server unter Verwendung beliebiger Ports > 1023 erlauben. Achtung, auch KaZaA, eDonkey etc. verwenden diese Ports. I Da Ihr Firewall-Skript nicht in der Lage ist, einen Zusammenhang zwischen den Steuerungsverbindungen und den Datenverbindungen zu erstellen, müssen Sie in Ihrem Skript sogar die Datenverbindungen erlauben, wenn gar keine Steue- rungsverbindung existiert. Schlimmer noch, Sie müssen die Datenverbindungen von und zu beliebigen Servern und Clients erlauben! Um diese Probleme zu beseitigen, wurde die Stateful Inspection entwickelt.

32.10.2 Die Stateful Inspection des FTP-Protokolls Die Stateful Inspection des FTP-Protokolls wurde ursprünglich in kommerzi- ellen Firewalls entwickelt. Sie wird inzwischen auch von Linux unterstützt. Hierbei passiert nun Folgendes: Sobald der Linux-Kernel erkennt, dass eine FTP-Steuerungsverbindung durch die Firewall erlaubt wurde, betrachtet er je- des Paket dieser Verbindung. Dabei achtet er speziell auf das PORT-unddas PASV-Kommando. Sobald der Kernel eines dieser Kommandos erkennt, trägt er die resultierende Verbindung selbstständig und automatisch in der Zustandstabelle (Connection Tracking Table) ein. Die Stateful Inspection erfordert auch den Ein- satz des Connnection Tracking. Diese Verbindung und alle zu ihr gehörenden Pakete erhalten nun den Zustand RELATED, da sie mit einer anderen Verbindung (der Steuerungsverbindung) verwandt sind1. Um nun die Stateful Inspection für das FTP-Protokoll in Ihrer Linux-Firewall anzuschalten, genügt es, das entspre- chende Kernelmodul ip_conntrack_ftp zu laden. Dieses Modul erkennt automatisch die FTP-Steuerungsverbindung und beobachtet die transportierten FTP-Befehle. Es unterstützt sowohl aktives als auch passives FTP. Die Erkennung erfolgt über den TCP-Zielport 21. Wenn Sie auf FTP-Server zugreifen wollen, die einen anderen Port für die Steuerungsverbindung verwenden beziehungsweise die aktive Datenver- bindung von einer anderen IP-Adresse aufbauen, müssen Sie dieses Modul beim Laden mit dem Befehl modprobe auch noch konfigurieren. Der Befehl modinfo zeigt Ihnen die Möglichkeiten des Moduls ip_conntrack_ftp:

[root@bibo ~]# modinfo ip_conntrack_ftp filename: /lib/modules/2.6.12-1.1390_FC4/kernel/net/ipv4/netfilter/ip_conntrack_ftp.ko license: GPL author: description: ftp connection tracking helper

1 Diese verwandten Verbindungen werden auch Expectation genannt, da es sich um erwartete Verbindungen handelt.

539 open source library enlou,dsdekret desmezn aatet uhdee Modul, dieses Auch garantiert. Adressumsetzung weiteres ein korrekte es die die gibt müssen Hierzu das gleichzeitig dann werden. Kernelmodul, die durchführt, genattet korrekt Firewall, (NAT) noch Translation einer auch Address hinter Datenverbindungen Network FTP-Server eine der noch oder auch Client anzuschalten. es der IP-Adresse ist sich bestimmte Leider Befindet eine auszuprobieren. für Verbin- Parameter nur keine Parameter den absolut diesen sich, möglich, FTP-Server es nicht bestimmten lohnt einem können, aufbauen zu er- als nicht dung aber verwenden jedoch Sie IP-Adresse Parameter Wenn dieser andere ist forderlich. eine Normalerweise Datenverbindung Steuerungsverbindung. die die für für die betreiben, zu ahne ot neee.Es bKre ..1fltdeeAfreugwgund dem weg aus Anforderung Ports diese die fällt liest 2.6.11 Modul Kernel das ab Erst angegeben. Ports wachenden ip_nat_ftp an- Option Ports Die 8 maximal nicht können Sie können Sie Ansonsten kommunizieren. anzugeben. geben. FTP-Servern 21 regulären Port mit den auch mehr nicht, bitte Sie Vergessen ports=21,2121 folgen- ip_conntrack_ftp mit Modul $MODPROBE das Sie MODPROBE=/sbin/modprobe sollten so laden: möchten, Skript anbietet, zugreifen Ihrem Dienste FTP-Server in seine Befehl einen 2121 dem auf Port angegeben Beispiel dem mit auf zum Moduls der Sie des Laden Wenn beim können. die werden Parameter, die sind hervorgehoben gcc-4.0 Fett 4KSTACKS ip_conntrack REGPARM 7A102256C83E32975182EEF 686 2.6.12-1.1390_FC4 int loose:int of srcversion: ports:array depends: vermagic: parmtype: parmtype: 540 NAT bei Nur # Inspection Stateful die Aktiviert FTP- einer # Aufbau ip_nat_ftp den $MODPROBE Clients ip_conntrack_ftp die $MODPROBE Firewall, eine Zunächst für einfach. erlaubt. sehr Regeln Verbindung nun die Regeln die wir sind betrachten Inspection Stateful der Anwendung Bei Iptables-Regeln 32.10.3 beim wie genauso Modul diesem bei müssen Sie ports=21,2121 ip_nat_ftp $MODPROBE ih uoaic o e enlgeladen. Kernel dem von automatisch nicht üsnSesls ae,wn i i ukinlttwnce.E wird Es wünschen. Funktionalität die Sie wenn laden, selbst Sie müssen , loose=1 rab s i T-evr ukmuzee drFTP-Server oder kommunzieren zu FTP-Servern mit es, erlaubt ip_conntrack_ftp ip_conntrack_ftp Mdlaus. -Modul 2Bhnln izle Protokolle einzelner Behandlung 32 Mdldez über- zu die -Modul 32.10 FTP library

$IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p tcp --dport 21 -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT open source Einige Leser werden sich wahrscheinlich verwundert die Augen reiben. Nach den komplizierten Ausführungen über das FTP-Protokoll, sollen die Regeln nun so ein- fach sein? Nun, das ganze Geheimnis liegt in dem Modul ip_conntrack_ftp.Durch das Laden des Moduls aktivieren Sie die Stateful Inspection für das FTP-Protokoll. Alle Datenverbindungen werden erkannt und mit dem Zustand RELATED in der Ver- bindungstabelle eingetragen. Die zweite Regel akzeptiert alle Verbindungen mit diesem Zustand. Sie müssen sich als Firewall-Administrator nicht mehr mit akti- vem oder passivem FTP herumschlagen. Darum kümmert sich nun Ihre Firewall. Dabei ist diese Behandlung auch besonders sicher, da nun nur dann eine Daten- verbindung erlaubt wird, wenn diese zuvor durch eine Steuerungsverbindung an- gefordert wurde. Obwohl für FTP-Datenverbindungen nun die Ports > 1023 geöff- net sind, können Anwendungen wie KaZaA oder eDonkey diese nicht nutzen. Sie müssten zunächst eine FTP-Steuerungsverbindung etablieren.

Achtung Sie sollten zusätzlich auch folgende Regel auf Ihrer Firewall eintra- gen:

$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT

Viele FTP-Server (besonders auf dem Betriebssystem Unix) bauen bei einer FTP-Verbindung eine identd-Verbindung zum Client auf. Wenn Sie diese Verbindung auf Ihrer Firewall nur verwerfen (DROP), kommt es zu einer Verzögerung bei Ihrem Verbindungs- aufbau. Lehnen Sie die Verbindung hingegen ab, erkennt der Server, dass kein Aufbau möglich ist, und fährt mit Ihrer Anmeldung fort. Weitere Dienste, die dieses Verhalten zeigen, sind SMTP-Server und IRC-Server.

Das Laden des ip_nat_ftp-Moduls ist nur erforderlich, wenn Sie auf Ihrer Firewall auch gleichzeitig ein NAT durchführen. Wenn Sie einen FTP-Server mit einer lokalen Firewall schützen möchten, können Sie auch das recht einfach mit der Stateful Inspection erreichen. Hierzu verwenden SiefolgendeRegeln:

$MODPROBE ip_conntrack_ftp # Aktiviert die Stateful Inspection

$IPTABLES -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

541 open source library ITBE AFRAD- ETE o$NDV- AET- MNGR- d -pr 162 ACCEPT --dport -j udp ESTABLISHED,RELATED -p --state $MANAGER state -d -m $AGENT $IPTABLES -s $INTDEV -o $EXTDEV -i FORWARD -A SNMP-Traps $IPTABLES Erlaube # itiuinnenthalten. Distributionen ITBE AFRAD- ITE o$XDV- MNGR- AET- d -pr 161 --dport udp -p $AGENT -d $MANAGER -s $EXTDEV -o $INTDEV -i FORWARD -A SNMP-Zugriff $IPTABLES Erlaube # AGENT=192.168.0.6 Network-Management-System Regeln: folgenden Ihr MANAGER=192.168.0.5 die Wenn genügen einfach. ist, geschützt sehr Firewall sind eine durch SNMP für Regeln Die Iptables-Regeln 32.11.1 Option der Mit Pakets aus. des IP-Header SNMP-Payload dem der laden: in in NAT-Helfermodul IP-Adresse Adresse ein der Sie Paket die Austausch müssen dem wünschen, nur einen in auch jedoch auch Sie SNMP-Systems tauscht Wenn des NAT Firewall IP-Adresse der die wird. da auf transportiert Probleme, Translation jedoch Address es Network gibt der werden Verwendung werden, gleichzeitiger gesendet Bei gesendet. 161 162 bezeichnet UDP-Port UDP-Port Dies den den an an melden. UDP-Protokoll. SNMP-Traps Abfragen Manager das kann normalen SNMP beim Jedoch verwendet die Fällen auf. Transportprotokoll Während wichtigen Als (Agent) SNMP-Trap. in Server als sich zum man Verbindung Agent werden, die der übertragen (Manager) auch Meistens Klartext Client werden. im eingesetzt der und Netzwerken Daten ungeschützten baut Leistungsdaten in sensible nicht von Protokoll Da das Auslesen Geräts. zum sollte das des wie Proto- erlaubt Netzwerkkomponenten Konfiguration einfaches Protokoll von die sehr Dieses Verwaltung ein Routern. und ist Überwachung Beispiel (SNMP) die Protocol für Management koll Network Simple Das SNMP 32.11 542 zusätz- Sie sollten einsetzen, DNAT Management-Station oder Ihrer SNAT Modul zu das Sie Destination-NAT lich Sobald ein SNMP-Traps müssen. daran, die Sie einrichten denken für verwenden, Source-NAT Sie gleichzeitig dass Firewall Ihrer auf Sie Wenn ouserhalten. Moduls jACCEPT -j ACCEPT -j NEW --state state -m ip_nat_snmp_basic $MODPROBE debug=1 ip_nat_snmp_basic önnSezstlcePooolitäebidrAbi des Arbeit der bei Protokolleinträge zusätzliche Sie können ae.Dee ou s e le kule Linux- aktuellen allen bei ist Modul Dieses laden. 2Bhnln izle Protokolle einzelner Behandlung 32   32.12 Amanda library

32.12 Amanda

Der Advanced Maryland Automatic Network Disc Archiver (Amanda) ist ein open source Backup-System, mit dem automatisch verteilte Unix-Clients über ein Netzwerk auf einem zentralen Backup-Server gesichert werden können (http://www.amanda.org). Dieses System wird in vielen Umgebungen eingesetzt, da es unter der GPL ver- öffentlicht worden ist. Amanda zeichnet sich dadurch aus, dass der Server sich bei Bedarf mit dem Client verbindet und ihn auffordert, jetzt seine Daten für die Sicherung bereitzustellen. So kommt es auf dem Server nicht zur Überlastung, und der Server kann auch die genutzte Netzwerkbandbreite regulieren.

32.12.1 Das Amanda-Protokoll Amanda verwendet ein recht kompliziertes Protokoll für das Backup. Der Server verbindet sich über das UDP-Protokoll auf Port 10080 auf dem Client mit dem Amandad. Der Client forkt einen Amandad-Prozess, der sich anschließend mit ei- nem vom Server bestimmten UDP-Port auf dem Server verbindet. Anschließend verbindet sich der Server wieder mit zwei oder drei TCP-Ports auf dem Client. Auch diese Ports werden zwischen dem Amanda-Client und dem Backup-Server ausgehandelt. Die Dynamik der Ports ist für jeden Firewall-Administrator ein Gräuel. Sie können nicht in Ihrer Firewall feste Regeln für die Verbindung definieren. Das Amanda- Handbuch beschreibt in Kapitel 21, wie Sie die Ports auf einen bestimmten Bereich einschränken können (http://www.amanda.org/docs/portusage.html). Dies ist aber auch keine richtige Lösung.

32.12.2 Iptables-Regeln Eine richtige Filterung des Amanda-Netzwerkverkehrs ist nur unter Anwendung der Stateful Inspection möglich. Diese wurde bereits im Kapitel zu FTP (siehe Ab- schnitt 32.10) als auch in Kapitel 19 besprochen. Auch für Amanda gibt es zwei Kernel-Module, die die einfache Filterung des Protokolls erlauben: $MODPROBE ip_conntrack_amanda $MODPROBE ip_nat_amanda

Das Modul ip_conntrack_amanda verfügt über die Option master_timeout. Hiermit können Sie den Timeout für die Zustandsüberwachung der Master-Verbindung auf Port 10080 einstellen. Der übliche Timeout für die Master-Verbindungen beträgt 300 Se- kunden und ist häufig zu kurz. Dies ist aber bereits mehr, als üblicherweise von Iptables für UDP-Verbindungen genutzt wird (180 Sekunden). Sie können hier aber auch eine Stunde angeben: $MODPROBE ip_conntrack_amanda master_timeout=3600

543 open source library ITBE AFRAD- tt -tt SALSE,EAE jACCEPT -j ESTABLISHED,RELATED --state state -m FORWARD -A $IPTABLES i iealen ael,i e legntee ebnugnenergnwerden eingetragen Verbindungen genatteten alle pflegt der Hierzu Antwort- in zurückzusenden. Tabelle, die Client eine anschließend richtigen Firewall den um die an hat, auch aufgebaut Verbindung der mer- Verbindung Source-NAT Pakete die einem bei Client sich welcher muss Firewall ken, Hotel Die im kritisch? Source-NAT WLAN-Hotspot ist Szenario. jedem Warum diesem In zu regelmäßig häufig. es sehr funktionieren. kommt bemerkt, Flughafen richtig Server und nebenbei mehr einen ist, nicht auf Fall PPTP-Protokoll Verbindungen Dieser dem beide mit werden Clients möchten, mehr durchführt, zugreifen Clients oder befindlichen zwei dahinter gleich- Fire- gleichzeitig die eine für bei und Sie Source-NAT nur Sobald ein die (NAT). Konstruktion einsetzen, Translation PPTP- gesamte wall Address des Network die Anwendung der wird Anwendung die Schwierig zeitiger für einfach. Firewall sehr einer Protokolls Konfiguration die erlaubt ist und Grundsätzlich DNS- Dabei Route, nutzt. Netzmaske, 47) IP-Adresse, von (IP-Protokoll WINS-Servern. Zuweisung und GRE-Protokoll die 1723 VPN-Verbin- PPTP-Protokoll das TCP-Port das und dem der Einwahl- auf Datenkanal, Steuerungskanal von einen einen Aufbau verwendet den Es für genutzt. dungen häufig wird PPTP-Protokoll Das PPTP ACCEPT 32.13 -j NEW ACCEPT --state -j state ACCEPT ESTABLISHED,RELATED -m -j --state 10080 ESTABLISHED,RELATED state --dport --state -m udp state OUTPUT -p -m -A $AM_CLIENTS INPUT $IPTABLES -d -A OUTPUT $IPTABLES -A $IPTABLES AM_CLIENTS=192.168.1.0/24 ip_nat_amanda master_timeout=3600 $MODPROBE ip_conntrack_amanda können $MODPROBE möchten, betreiben Amanda-Server verwenden: dem Regelsatz auf folgenden Firewall Sie lokale eine Sie state Wenn -m 10080 --dport udp -p $AM_CLIENTS -d $AM_SERVER -s FORWARD -A $IPTABLES AM_CLIENTS=192.168.1.0/24 AM_SERVER=192.168.0.5 einfach: sehr dann sich gestalten Regeln weiteren Die 544 iealasKieimdsI-rtkl,deZearseuddnZepr e Pakets. des die Zielport den verwendet nachzuse- und Hierbei um Zieladresse ist. die Tabelle, weiterzusenden IP-Protokoll, das die intern Kriterium Paket in als das Firewall Firewall Client die welchen schaut an hen, zurückkommt, Paket ein Sobald 2 -tt E jACCEPT -j NEW --state B iLnxitde uhdeConnection-Tracking-Tabelle. die auch dies ist Linux ei 2Bhnln izle Protokolle einzelner Behandlung 32  2 . 32.13 PPTP library

Leider besitzt das GRE-Protokoll keine Ports. Daher bleiben als Unterscheidungs- merkmale nur das IP-Protokoll (immer GRE) und die Zieladresse (immer die der Fi-

rewall). Sobald also zwei GRE-Verbindungen gleichzeitig genattet werden müssen, open source kann die Firewall die Pakete nicht mehr auseinander halten und weist sie immer der zuletzt aktiven Verbindung zu. Dieses Problem lässt sich mit der Stateful Inspection lösen.

32.13.1 Iptables-Regeln Die Iptables-Regeln sind recht einfach. Möchten Sie mit Ihrer Firewall einen Client beim Zugriff auf einen PPTP-Server im Internet schützen, so können Sie folgende Regeln verwenden:

PPTP_SRV=5.0.0.1

GRE=47 $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p tcp --dport 1723 -d $PPTP_SRV -m state 

--state NEW -j ACCEPT $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p $GRE -m state -d $PPTP_SRV --state NEW  -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Falls Sie nur die zweite GRE-Verbindung erlauben wollen, wenn diese durch die erste Verbindung angefordert wurde, können Sie die Stateful Inspection nutzen. Leider sind die erforderlichen Kernelmodule nicht bei allen Distributionen enthal- ten. Dann müssen Sie Ihren Kernel bis einschließlich 2.6.13 selbst patchen und über- setzen (siehe Kapitel 18).

Achtung Dieses Modul hat momentan noch einige Einschränkungen: Es funk- tioniert nicht mit den Linux-Kerneln zwischen 2.6.10 und 2.6.13. Ab 2.6.14 ist es im Kernel enthalten! Außerdem ist auch eine Neukom- pilierung des Kommandos iptables erforderlich.

Sie benötigen die folgenden Module:

$MODPROBE ip_conntrack_proto_gre $MODPROBE ip_conntrack_pptp

Dann genügen die folgende Firewall-Regeln: $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p tcp --dport 1723 -d $PPTP_SRV -m state  --state NEW -j ACCEPT

545 open source library ou,dseeflsncti le itiuinnetatnit i e obigen dem Mit ist. enthalten NAT-Helper- Verfügung. zur Distributionen ein aber allen hilft Module diese in zugreifen Hier stehen nicht gleichzeitig Patch fehlschlagen. ebenfalls PPTP-Protokoll wieder das dem Verbindung Modul, mit die Clients wird mehrere möchten, aber nun Sobald 21 SMTP von 32.14 der PPTP-Verkehr, wird. der weitergereicht PPTP-Server dass den dafür, an erreicht, sorgen Firewall die DNAT-Regeln außen beiden ersten ACCEPT ACCEPT Die -j -j NEW NEW ACCEPT --state --state -j state state ESTABLISHED,RELATED -m -m --state 1723 $GRE state --dport -p $PPTP_SRV -m $PPTP_SRV tcp $PPTP_SRV --to-destination FORWARD --to-destination -p -d DNAT -A DNAT $PPTP_SRV FORWARD -j $IPTABLES -j -d -A 1723 $GRE FORWARD $IPTABLES --dport -p -A tcp PREROUTING $IPTABLES -p -A PREROUTING nat -A -t nat $IPTABLES -t $IPTABLES betreiben DMZ GRE=47 Ihrer in PPTP-Server PPTP_SRV=192.168.0.5 Regeln: einen folgenden Sie die Sie dass benötigen sein, Dann möchten. auch es kann Natürlich ip_nat_pptp $MODPROBE ip_nat_proto_gre $MODPROBE entsprechende die wird wurde, Zustand ACCEPT im erkannt GRE-Verbindung -j PPTP-Steuerungsverbindung ESTABLISHED,RELATED die --state Sobald state -m FORWARD -A $IPTABLES 546 Postfix ESMTP ’^]’. mail.spenneberg.net is 220 (217.160.128.61). character mail.spenneberg.net Escape to 25 Connected mail.spenneberg.net 217.160.128.61... telnet Trying können ~]# Befehle Sie [root@bibo die um abgedruckt. Wissen Beispielsitzung wenig ein testen. eine und selbst Telnet-Client ist leicht einem Folgenden mit SMTP-Protokoll Buch- Im vier das sind. die Befehle, lang verwendet und staben Klartextprotokoll ein ist SMTP-Protokoll Das SMTP-Protokoll Das 32.14.1 E-Mail. von Versand den zwischen für E-Mail Protokoll Kontact von dieses Evolution, nutzen Transport wie Outlook E-Mail-Clients den und Auch für genutzt. Internet wird im Protocol E-Mail-Servern den Transport Mail Simple Das RELATED erlaubt. 2Bhnln izle Protokolle einzelner Behandlung 32 32.14 SMTP library helo linuxclient.spenneberg.net (1) 250 mail.spenneberg.net

mail from: [email protected] (2) open source 250 Ok rcpt to:[email protected] (3) 250 Ok data 354 End data with . Subject: SMTP-Test (4) From: Ich bins To: Ralf

Test (5) . (6) 250 Ok: queued as 556B857AAA quit 221 Bye Connection closed by foreign host.

Zunächst begrüßt der Client den Server und stellt sich selbst vor (1). Anschließend nennt der Client die Envelope-Absenderadresse (2). Dies ist vergleichbar mit der Adresse außen auf einem Briefumschlag. Dann gibt er den Envelope-Empfänger an (3). Es folgt der Inhalt der E-Mail (Inhalt des Briefumschlages). Dort gibt der Client im Header einen Betreff, den Absender und den Empfänger an. Diese Angaben sind optional und können auch weggelassen werden. Das Verhalten des Mailservers bei fehlenden Angaben ist von dem Produkt abhängig und kann nicht allgemein gültig angegeben werden. Abgetrennt durch eine Leerzeile folgt dann der tatsächliche In- halt der E-Mail (5). Die Eingabe wird durch einen Punkt auf einer ansonsten leeren Zeile beendet (6). Der Client beendet die Verbindung mit quit. Das SMTP-Protokoll überträgt normalerweise sämtliche Informationen im Klartext. Jedoch gibt es mit SMTP über SSL (smtps, Port 465) auch die Möglichkeit, SMTP über die Secure Socket Layer zu verwenden. Dies hat sich jedoch nicht durchge- setzt. Heute beherrschen fast alle Mailserver als Alternative die Transport Layer Security (TLS). Nachdem das Kommando STARTTLS auf dem unverschlüsselten Wege übertragen wurde, handeln der Client und der Server innerhalb der bestehenden Verbindung eine TLS-Verbindung aus. Die Verbindung wird nicht unterbrochen oder auf einem anderen Port geöffnet. Es genügt der Standardport 25/tcp hierfür.

32.14.2 Iptables-Regeln Die Behandlung des SMTP-Protokolls in einer Firewall ist sehr einfach. Da das Pro- tokoll wie Telnet, HTTP und SSH nur einen einzigen Port verwendet, genügt eine Zeile, um das Protokoll über eine Firewall zu erlauben. $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p tcp --dport 25 -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

547 open source library ITBE AOTU ptp-dot2 msae-saeNW- ACCEPT ACCEPT -j -j ACCEPT NEW ACCEPT ESTABLISHED,RELATED -j --state -j --state NEW state ESTABLISHED,RELATED state --state -m --state -m state 25 state OUTPUT -m --dport -m -A 25 tcp INPUT $IPTABLES --dport -p -A tcp OUTPUT $IPTABLES -p -A INPUT $IPTABLES -A $IPTABLES kön- einsetzen: möchten, Regeln schützen Firewall folgenden lokalen die einer Sie mit nen direkt Mailserver einen Sie Wenn n Fe idrune id u rn e eodrnSrku eütes, 548 genügt Struktur besonderen IRCNet der Namen Grund den unter Auf organi- heute sind. die von wiederzufinden Netze, Grund 1996 große EFnet Netzwerke. zwei Auf und unabhängige in übertragen. Aufspaltung mehrere Internet die 1993 entwickelt erfolgte das ab Relay-Chat-Protokoll entstanden auf das Problemen das 1988 satorischen für wurde zurück, Dieses BITNET den wurde. Bei das An- Die #VPn. auf angemeldet. oder gehen gleichzeitig Benutzer #Linux fänge tausend wie mehrere Namen sind Channels tragen so Ser- größeren Channels Chaträumen, vernetzten organisierten Die miteinander thematisch Channels. in aus genannten Kommunikation kommunizieren. Netzwerk die zu verteilten erfolgt Echtzeit Dabei einem vern. ermög- in von es textgestützt es das wird Benutzern Kommunikationsmedium, Realisiert anderen ein mit ist weltweit Chat licht, Relay Internet Protokoll Das IRC E-Mail- eines 32.15 Einsatz bei Kapitel im Firewall Sie einer finden DMZ Konfiguration einer in die Servers für Beispiele Weitere Achtung Achtung intn eknSedrn h uhdee urf ugestatten! zu Zugriff DNS- diesen zu auch Zugang ihm daran, noch Sie auch Denken Diensten. zusätzlich benötigt E-Mail-Server Ein fah- fort. Fehlermeldung, sofort eine ebenfalls sie sie ren Erhalten fortfahren. und aufbauen anschließend Client Verbindungs- erst zum einer Identd-Verbindung bei eine zunächst SMTP-Server anfrage einige Verzö- da zu SMTP-Verbindung kommen, einer ablehnen. gerungen Aufbau Identd-Anfragen beim Firewall es kann Ihrer Ansonsten auf zusätzlich sollten Sie ITBE AOTU pup-dot5 msae-saeNW- ACCEPT -j ACCEPT NEW -j --state NEW state --state -m state 53 -m --dport 53 udp --dport -p tcp OUTPUT -p -A OUTPUT $IPTABLES -A $IPTABLES REJECT -j 113 --dport tcp -p $EXTDEV -i INPUT -A $IPTABLES 9 . 2Bhnln izle Protokolle einzelner Behandlung 32 32.16 TFTP library wenn der Client Zugang zu einem Server dieser Netzwerke hat, um an sämtlichen Chaträumen teilzunehmen. Weitere heute übliche Netze sind QuakeNet, Undernet,

DALnet, Freenode etc. open source Das IRC-Protokoll erlaubt neben dem reinen Chat auch den Austausch von Da- teien über eigene dedizierte Verbindungen (ähnlich den Datenverbindungen bei FTP). Diese Verbindungen werden Direct-Client-to-Client-Verbindung (DCC) ge- nannt. Die für diese Verbindungen verwendeten Ports werden von dem Client und Server dynamisch ausgehandelt. Um diese Verbindungen sicher zuzulassen, bie- tet der Linux-Kernel ein Stateful-Inspection-Modul ip_conntrack_irc (siehe auch Ab- schnitt 32.10).

32.15.1 Iptables-Regeln Die Iptables-Regeln für den IRC-Verkehr sind bei Anwendung der Stateful Inspec- tion sehr einfach. Es genügt, das Modul zu laden und anschließend die Verbindung zum IRC-Server zuzulassen.

$MODPROBE ip_conntrack_irc ports=6667

$MODPROBE ip_nat_irc # bei gleichzeitiger Anwendung von NAT $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p tcp --dport 6667 -m state --state NEW  -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Das ip_conntrack_irc-Modul erkennt automatisch angekündigte DCC-Verbindungen und trägt diese mit dem Zustand RELATED in der Verbindungstabelle als Expectation ein. Diese Verbindung wird dann von der zweiten Regel auch erlaubt. Bei dem Laden des Moduls können Sie einige Werte als Parameter angeben. Zunächst ist dies der Port, auf dem der IRC-Server angesprochen wird: ports=6667,6668.DerPara- meter max_dcc_channels gibt die maximale Anzahl gleichzeitiger DCC-Verbindungen an (Default 8). Der Parameter dcc_timeout definiert schließlich den Timeout für nicht beantwortete DCC-Verbindungen (Default 300 Sekunden).

32.16 TFTP

Das Trivial File Transfer Protocol hat mit dem FTP-Protokoll nur den Namen ge- meinsam. Es verwendet das UDP-Protokoll und den Port 69. Außerdem kennt es keine Anmeldung. Es wird häufig eingesetzt, um auf Netzwerkkomponenten eine neue Firmware einzuspielen oder um Konfigurationseinstellungen zu laden. Auch das Preboot Execution Environment (PXE) verwendet TFTP. Eine Implementierung des Protokolls in einer Firewall ist daher selten, aber soll trotzdem hier kurz vorgestellt werden, da es ebenfalls dynamisch zugewiesene Ports verwendet.

549 open source library e ot.Dskne i brsls prüfen: selbst aber Sie können Das Ports. der rruihres nesüzndemitnDsrbtoe nIrmKre bereits Kernel Ihrem in Distributionen das meisten die unterstützen Erfreulicherweise Iptables-Regeln 32.16.1 kann. werden Verbin- eine aufgebaut UDP-Port UDP-Port beliebigen beliebigen einem einem von zu damit Löcher dung werden, ernorme die geöffnet müssen wenn Firewall Ansonsten der möglich, unterstützt. in nur Protokoll ist dieses Firewall Inspection einer Stateful in Datei Protokolls der dieses Implementierung Übertragung Eine gesamte die neuen gebliebenen für einem gleich bleiben Abbildung mit dem (siehe Ports bereits an identisch gewählten Ser- lediglich also sondern nun Antwort wird Der 69, die Die Antwort 1023. erkennt nicht Zielport. erste Client Sourceport > Die Der als gesendet. 1023. Port Antwort Port 69. > beliebigen seiner Port Port einen in einen auf Anfrage verwendet ebenfalls Server und den seiner antwortet an in ver RRQ/WRQ) verwendet (Request: Client Anfrage Der eine sendet Client Der Ports. beliebige verwendet TFTP-Protokoll Das 32.5: Abbildung 550 folgenden der ip_conntrack_tftp mit $MODPROBE Sie können Nun mehr. erlauben: nicht TFTP-Verbindungen Angabe Regel die benötigt Modul Dieses gcc-4.0 4KSTACKS ip_conntrack_tftp,ip_conntrack,iptable_nat REGPARM F97654AA2851F38C31D9F7B 686 2.6.12-1.1390_FC4 GPL Boden Magnus srcversion: helper depends: NAT tftp vermagic: /lib/modules/2.6.12-1.1390_FC4/kernel/net/ipv4/netfilter/ip_nat_tftp.ko license: description: author: ip_nat_tftp modinfo filename: ~]# [root@bibo ip_nat_tftp endeVridn lihetggnte id üsnSeac a Modul das auch Sie müssen wird, genattet gleichzeitig Verbindung die FTP-Stateful-Inspection- TFTP- Wenn einem dem zu Verbindung analog eine Sie Sie denen aufbauen. können auf Server angeben, laden, Ports acht Modul maximal Modul dieses Sie Wenn übersetzen. neu Kernel Ihren Sie sen ip_conntrack_tftp ae.Dee ou eöiti ie lee ugb uhdeAngabe die auch Ausgabe älteren einer in benötigt Modul Dieses laden. 192.168.0.5 Mdl ende e he itiuinnctdrFl s,müs- ist, Fall der nicht Distribution Ihrer bei dies Wenn -Modul. 1291/udp 1297/udp 1297/udp 32.5 ). RRQ/WRQ Antwort Daten 2Bhnln izle Protokolle einzelner Behandlung 32 1315/udp 1315/udp 69/udp TFTP-Server 32.17 IMAP library

$MODPROBE ip_nat_tftp # bei SNAT oder DNAT

$IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p udp --dport 69 -m state --state NEW -j ACCEPT open source $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

32.17 IMAP

Das Internet Message Access Protocol (IMAP, RFC 3501) erlaubt den Zugriff auf und die Verwaltung von E-Mails und Dateien auf dem Server. Im Gegensatz zum POP3-Protokoll verbleiben die E-Mails beim IMAP-Protokoll auf dem Server und werden nicht nach einem Download gelöscht. Dadurch können Sie mit mehreren Clients von unterschiedlichen Orten die E-Mails lesen und bearbeiten. Der IMAP-Server verwendet zum Anbieten seines Dienstes den TCP-Port 143. Ver- bindungen auf diesem Port übertragen die Daten normalerweise unverschlüsselt. Lediglich die Authentifizierung kann verschlüsselt erfolgen. Allerdings kann auch das IMAP-Protokoll auf die Dienste des SSL-Protokolls zurückgreifen. Der IMAP- Server bietet dann IMAP-über-SSL-Verbindungen auf dem TCP-Port 993 an. Zusätz- lich unterstützen moderne IMAP-Server die Transport Layer Security. Hier wird nach einem STARTTLS-Kommando die Verbindung auf dem Port 143/tcp verschlüs- selt.

Achtung Die Verwendung des STARTTLS-Kommandos und der TLS ist optio- nal. Wenn Sie eine verschlüsselte Verbindung erzwingen möchten, müssen Sie auf SSL (Port 993/tcp) ausweichen.

Sie können das IMAP-Protokoll selbst mit einem Telnet-Client nachstellen: [root@bibo ~]# telnet mail.spenneberg.net 143 Trying 217.160.128.61... Connected to mail.spenneberg.net (217.160.128.61). Escape character is ’^]’. * OK dovecot ready. a001 LOGIN test test a001 OK Logged in. a142 SELECT INBOX * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. * 0 EXISTS * 0 RECENT * OK [UIDVALIDITY 1122315709] UIDs valid * OK [UIDNEXT 1] Predicted next UID

551 open source library ITBE AFRAD- tt -tt SALSE,EAE jACCEPT -j ESTABLISHED,RELATED --state state -m FORWARD -A $IPTABLES irBcsae ag eel,dea e evrafdmPr 1/c gesendet 995. genutzt 110/tcp TCP-Port Verbindung Port den SSL-gesicherte dem Server eine der auf über verwendet IMAP Server Dann wie werden. den kann an Steuerung POP3 die zur Auch verwendet werden. Befehle, übli- ASCII-Protokoll lange anschließend Das Buchstaben E-Mails gelöscht. vier die Server um werden dem verwendet, Dazu auf E-Mail-Client abzuholen. einem cherweise Server von wird einem 1939) von (RFC E-Mails 3 Protocol Office Post Das POP3 ACCEPT -j 32.18 NEW ACCEPT --state -j state ACCEPT ESTABLISHED,RELATED -m -j --state $IMAP_PORTS ESTABLISHED,RELATED state --dport --state -m multiport state OUTPUT -m -m -A tcp INPUT $IPTABLES -p -A INPUT $IPTABLES -A $IPTABLES sehen möchten, IMAP_PORTS="143,993" schützen Firewall aus: folgt lokalen wie einer analog mit Regeln die IMAP-Server einen $IMAP_PORTS Sie Wenn --dport multiport -m tcp -p $EXTDEV -o $INTDEV -i FORWARD -A $IPTABLES IMAP_PORTS="143,993" Zunächst Gateway: einfach. ein sehr für Protokolls Regeln einfachen die des angesichts sind Iptables-Regeln Die Iptables-Regeln 32.17.1 completed. Close OK completed. a752 Select close [READ-WRITE] a752 OK a142 552 110 mail.spenneberg.net 217.160.128.61... telnet Trying testen: ~]# Telnet-Client [root@bibo einem mit einfach ganz POP3-Protokoll das können Sie msae-saeNW- ACCEPT -j NEW --state state -m Achtung ilc i nedn anbiUtrttugdes Unterstützung bei Le- kann unverschlüsselt. Anmeldung die Daten diglich sämtliche überträgt POP3-Protokoll Das clsetefle.Lie nesüznnrsh eieAnbieter wenige sehr nur unterstützen den Leider erfolgen. schlüsselt APOP -Befehl. 2Bhnln izle Protokolle einzelner Behandlung 32 APOP Bfhsver- -Befehls  32.18 POP3 library

Connected to mail.spenneberg.net (217.160.128.61). Escape character is ’^]’.

+OK dovecot ready. open source user test +OK pass test +OK Logged in. list +OK 1 messages: 1 754 . retr 1 +OK 754 octets Return-Path: Received: from bibo.spenneberg.de (bibo.spenneberg.de [127.0.0.1]) by bibo.spenneberg.de (8.13.4/8.13.4) with ESMTP id j6PIRfDM018622 for ; Mon, 25 Jul 2005 20:27:41 +0200 ... gelöscht ...

. dele 1 +OK Marked to be deleted. quit +OK Logging out, messages deleted. Connection closed by foreign host.

32.18.1 Iptables-Regeln Die Iptables-Regeln für das POP3-Protokoll sind sehr einfach und entsprechen de- nen für das IMAP-Protokoll. Zunächst die Regeln für ein Gateway:

POP3_PORTS="110,995" $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p tcp -m multiport --dport $POP3_PORTS  -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Wenn Sie einen POP3-Server mit einer lokalen Firewall schützen möchten, sehen die Regeln analog wie folgt aus:

POP3_PORTS="110,995"

$IPTABLES -A INPUT -p tcp -m multiport --dport $POP3_PORTS -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

553 open source library ITBE AFRAD- tt -tt SALSE,EAE jACCEPT -j ESTABLISHED,RELATED --state state -m FORWARD -A $IPTABLES ugmtScr oktLyr(S) iruwr e ot53tpverwendet. 563/tcp Port der wird Hierzu Siche- (SSL). eine Layer NNTP-Protokoll Socket das verschlüs- Secure bietet und mit ermöglichen, sichere rung zu eine Daten Um der 119. Übertragung TCP-Port selte den verwendet NNTP-Protokoll Pos- Das das und Artikel das vorhandenen erlaubt Artikel. von der Protokoll weiterer Abfordern Transport ten textbasierte das zum Das Newsgruppen, dient Newsserver. der 997) einem Auflisten von RFC und (NNTP, ACCEPT zu Protocol Nachrichten -j Transfer News NEW Network --state Das state NNTP -m 123 ACCEPT --dport -j 32.20 udp ESTABLISHED,RELATED -p --state $EXTDEV state -o -m $INTDEV FORWARD -i -A fol- FORWARD $IPTABLES Die -A einfach. $IPTABLES Gateway: recht ein sind durch NTP-Protokolls NTP-Protokoll das des erlauben Unterstützung Regeln genden die für Regeln Die Iptables-Regeln einge- 32.19.1 Synchronisation zur die 1023. Clients, > anderen UDP-Port Alle einen 123. verwenden werden, Port setzt sie den verwenden Client kommunizieren, als Informatio- miteinander auch der untereinander Austausch NTP-Server den für Wenn 123 nen. UDP-Port den verwendet an. NTP-Protokoll nicht Das Authentifizierung diese unter- NTP-Server NTP-Protokoll Lei- öffentliche vorzubeugen. viele mit Das Spoofing-Angriffen bieten Systemzeit 2030). um der Servers, der (RFC des Authentifizierung Synchronisation Zeitquellen eine zur zentralen stützt dient mehreren (NTP) oder Protocol einer Time Network Das NTP 32.19 554 sehen möchten, NNTP_PORTS="119,563" schützen aus: Firewall folgt lokalen wie einer analog Regeln mit die NNTP-Server einen $NNTP_PORTS Sie Wenn --dport multiport -m tcp -p $EXTDEV -o $INTDEV -i FORWARD -A $IPTABLES Gateway: ein für NNTP_PORTS="119,563" de- Regeln entsprechen die und Zunächst einfach IMAP-Protokoll. sehr das sind für NNTP-Protokoll nen das für Iptables-Regeln Die Iptables-Regeln 32.20.1 msae-saeNW- ACCEPT -j NEW --state state -m 2Bhnln izle Protokolle einzelner Behandlung 32  32.21 H.323 library

$IPTABLES -A INPUT -p tcp -m multiport --dport $NNTP_PORTS -m state --state NEW -j ACCEPT $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT open source

32.21 H.323

Das H.323-Protokoll ist in Wirklichkeit ein ganzer Satz von Protokollen, die von Programmen wie Microsoft Netmeeting oder Gnomemeeting verwendet wer- den, um Audio- und Video-Informationen über das Internet zu transportieren. Einen Überblick über die beteiligten Protokolle und Standards erhält man auf http://www.packetizer.com/voip/h323/standards.html. H.323 verwendet die folgenden Ports für seine unterschiedlichen Dienste:

Port Beschreibung

389/tcp Internet Locator Server 522/tcp User Location Server 1503/tcp T.120 Protocol 1720/tcp H.323 (H.225 call setup) 1731/tcp Audio Call Control > 1023/tcp H.245 Call Control > 1023/udp RTCP/RTP Streamin

Die Vielzahl der beteiligten Protokolle und die Verwendung von dynamischen Ports zeigt die Komplexität des Protokolls. Daher soll hier auf eine Beschreibung des Pro- tokolls verzichtet werden. Interessierte Leser finden auf http://www.packetizer.com/ voip/h323/ ausführliche Informationen über das Protokoll.

32.21.1 Iptables-Regeln Die Komplexität des Protokolls ist auf einer Firewall durch Einsatz der Stateful Inspection handhabbar. Erfreulicherweise gibt es sowohl für den Linux-Kernel 2.4 als auch den Linux-Kernel 2.6 im Iptables-Patch-O-Matic Kernel-Module, die dies unterstützen. Ob Ihre Distribution diese Module enthält, können Sie sehr leicht mit dem folgenden Befehl prüfen:

[root@bibo ~]# modinfo ip_conntrack_h323 modinfo: could not find module ip_conntrack_h323

In diesem Fall müssen Sie das Modul mit Patch-O-Matic in Ihrem Kernel einführen, aktivieren und übersetzen.

555 open source library ITBE AFRAD- ITE o$XDV- c -pr 70- tt -tt E jACCEPT -j Zustand im NEW diese den tragen auf --state und Verbindungen Ports state die dynamischen dann -m erkennen Tracking-Helper-Module 1720 Connection ACCEPT Die --dport -j tcp ESTABLISHED,RELATED -p --state $EXTDEV state -o -m $INTDEV FORWARD -i -A FORWARD $IPTABLES -A $IPTABLES ip_nat_h323 im $MODPROBE Gegenstellen ip_conntrack_h323 mit $MODPROBE Verbindung die zum Clients Verbindung internen erlauben. die zu um mindestens Internet und öffnen, laden 1720 Module TCP-Port die Sie müssen Anschließend 556 Clients Zweck der diesen IP-Adressen für die häufig Paketen daher den wurden eingesetzt. Vergangenheit SIP-Proxys in der auch wenn In da Fall, werden. kommt, der transportiert RTP-Protokoll insbesondere Zuge ist das zum Dies für NAT Firewall. eine auch UDP-Ports an der Anforderungen hohe Aushandlung SIP dynamischen stellt der die Grund tatsächlich Auf überträgt RTP und aus, Verbindung die die Sprachdaten. Für handelt Transport verwendet. SIP für Time (RTP). IP) Real Linie das Protocol over zusätzlich erster Voice SIP-Protokoll in (VoIP, das verwendet Sitzungen Moment Internet Sprachübertragung im das allgemeine wird über um Sprachübertragung Es entwickelt, die auszuhandeln. wurde Clients (SIP) mehreren Protocol zwischen Initiation Session Das SIP 32.22 Tipp Achtung oitenDA e C-ot 70nc ne erforderlich. innen nach 1720 TCP-Ports des DNAT ein möchten, ist entgegennehmen außen so von Verbindungen auch Sie Wenn benötigt. Patch neuer ein wird 2.6.11 Version Ab RELATED 2Bhnln izle Protokolle einzelner Behandlung 32 ndrZsadtbleein. Zustandstabelle der in 32.22 SIP library

32.22.1 Iptables-Regeln Die Komplexität des Protokolls mit dynamisch ausgehandelten UDP-Ports verlangt für eine sichere Firewall-Implementierung die Unterstützung von Stateful Inspec- open source tion. Da diese für den Linux-Kernel aber erst ab der Version 2.6.11 zur Verfügung steht, sollen hier zunächst die Regeln ohne Stateful Inspection für eine Firewall als Gateway vorgestellt werden.

# SIP verwendet den UDP-Port 5060 $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p udp -m udp --dport 5060 -m state  --state NEW -j ACCEPT

# RTP - the media stream iptables -A FORWARD -i $INTDEV -o $EXTDEV -p udp -m udp --dport 10000:20000 -m state  --state NEW -j ACCEPT -j ACCEPT

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Falls Sie gleichzeitig auch NAT einsetzen, kann es in Abhängigkeit von dem Client aber wieder zu Problemen kommen. Als Lösung können Sie den Kernel > 2.6.11 einsetzen. Dann gibt es im Patch-O- Matic Stateful-Inspection-Module für SIP, die Sie in Ihren Kernel patchen, aktivieren (CONFIG_IP_NF_SIP, CONFIG_IP_NF_NAT_SIP) und kompilieren können. Diese erkennen die dynamischen RTP-Verbindungen und führen ein korrektes NAT durch.

$MODPROBE ip_conntrack_sip $MODPROBE ip_nat_sip

# SIP verwendet den UDP-Port 5060 $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p udp -m udp --dport 5060 -m state  --state NEW -j ACCEPT

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

557

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library iswr i rivrcidnnPooolnrealisiert: Protokollen verschiedenen drei mit und wird in Integrität Dies Authentizität, Internet die das schützen Pakete. über Sie der Vertraulichkeit Informationen transportieren. zu um Form verwendet, geschützter werden IPsec-Protokolle IPsec Die 33.1 Implementie- unterschiedlichen Auf- kompliziert. die Patches besondere unterschiedlichen durch eine vielen zusätzlich die Firewall dies und jeder rungen wird bei Linux ist Unter IPsec-Verbindungen gabe. von Filterung Die 33 50gkpet ai esndePkt ü ie A-otrutreswieder kann. werden unterwegs Port genutzt NAT-Router dem Erkennungsmerkmal einen als mit für der ausge- UDP-Pakete auf, Pakete ESP-Verbindung in Port die die einen erneut weisen Sobald ESP-Pakete Damit erkennt, 4500. gekapselt. die NAT UDP-Port 4500 auch den ein werden auf wurde, Verbindung Port handelt der den Verhandlung es der wechselt Sobald während werden. unterstützt IKE-Protokoll Implementierungen allen das fast von heute die vorgesehen, afs leRue i e A o otlsnPooolnShirgetnbe- Schwierigkeiten Protokollen port-losen von NAT dem Abschnitt (siehe mit kommen Router alle fast Da I I I loki nütgsPkt ae idhuehugnrnc issProtokoll dieses erzeugt noch NAT nur häufig Ein heute ein. wird mit Daher Überprüfung eingesetzt. Paket. seine ungültiges in kein IP-Header also schließt äußeren Es den garantieren. Paketen nicht von Vertraulichkeit und Integrität Authentizität, Payload verworfen. Security AH-Protokoll wird Encapsulated Paket dem das nach- von und wird Eine erkannt, NAT) ein. Fehler (z.B. als mit auch Bestandteile IP-Headers Garantie dieser äußeren Änderung die trägliche schließt des Dabei Bestandteile garantieren. unveränderlichen Paketen die von Integrität und tizität Header Authentication clsemtra ü i elseugirrAfae.DsIEPooolau- IKE-Protokoll Schlüsselmaterial. Das dieses erzeugt Aufgaben. und ihrer Kommunikationspartner die Realisierung thentifiziert die für Schlüsselmaterial Exchange Key Internet IPsec 32.13 A,I-rtkl 1.Dee rtkl andeAuthen- die kann Protokoll Dieses 51). IP-Protokoll (AH, IE 0/d) oolA l uhEPbenötigen ESP auch als AH Sowohl 500/udp). (IKE, ,wre ohEwieugnfrdeeProtokolle diese für Erweiterungen noch wurden ), EP PPoool5) issPooolkn die kann Protokoll Dieses 50). IP-Protokoll (ESP,

open source library open source library ITBE AFRAD- ITE o$XDV- 1- tt -tt E jACCEPT -j ACCEPT NEW -j --state NEW state ACCEPT --state -m -j state 51 ESTABLISHED,RELATED -m -p --state 50 $EXTDEV state -p -o -m $EXTDEV $INTDEV FORWARD -o -i -A $INTDEV FORWARD $IPTABLES -i -A FORWARD $IPTABLES -A $IPTABLES ITBE AFRAD- ETE o$NDV- VNG pup- utpr -pr 500,4500 --dport multiport -m udp -p $VPN_GW -d $VPN_GW $INTDEV --to-destination -o DNAT $EXTDEV -j -i 50 FORWARD -p -A PREROUTING $IPTABLES -A nat -t $IPTABLES .2sc isrNm a ihfrdnnunIscSakdsLnxKres2.6 Linux-Kernels des IPsec-Stack neuen den für sich hat Name Dieser 26sec. 2. ITBE AFRAD- ITE o$XDV- d mmliot-dot5040 mstate -m 500,4500 --dport multiport -m udp -p $EXTDEV -o $INTDEV -i FORWARD -A ein auf verwenden: $IPTABLES Firewall Regeln eine folgenden durch die möchten, Sie geben können Möglichkeit zuzugreifen, VPN-Gateway die IPsec Client von einem Durchleiten Sie zum Wenn Iptables-Regeln 33.2 und Openswan FreeSwan, in 2.4 Kernel den für Patch als ist KLIPS KLIPS. 1. Linux-Kernel: den für IPsec-Implementierungen zwei mindestens gibt Es 560 DNAT -j 500,4500 --dport multiport -m udp -p PREROUTING -A nat -t $IPTABLES Dies weiterleiten. Gateway möch- das VPN_GW=192.168.0.5 betreiben erreichen: an Befehlen DMZ Firewall folgenden einer den der mit von in Sie Protokolle Firewall können die einer Sie hinter müssen VPN-Gateway ten, ein Sie Wenn msae-saeNW- ACCEPT -j NEW --state state -m -tt E jACCEPT -j NEW --state -odsiain$VPN_GW --to-destination togwnetatn ü e enl26gb si oetnrennPatch einen nur Moment Namen Netzwerk- im dem virtuelle es mit stellt karten gibt Implementierung Diese 2.6 Openswan-Distribution. Kernel der in den Für enthalten. strongSwan igbret isrSakiton ac efga.E eiz en virtuellen keine besitzt Er verfügbar. Patch ohne Netzwerkkarten. ist Stack Dieser eingebürgert. Netzwerkkar- transportierten physikalischen empfangen. Netzwerkkarten die oder gesendet über diese ten verschlüsselt über Weiteren Alle im statt. werden Pakete Klartext im findet karten Achtung li ü a P.DhrsltnSedeeapse n ü UDP für und anpassen Kapitel diese (siehe Sie erhöhen sollten Protokolle Daher generische zu und VPN. möglicherweise das sind für klein Tracking-Timeout-Werte Connection Die ipsecX u efgn.DrVrerafdee Netzwerk- diesen auf Verkehr Der Verfügung. zur 19 ).  3IPsec 33   33.3 KLIPS library

Virtuelle open source Karte

eth0 Echte Karte

ipsec0

Abbildung 33.1: KLIPS stellt eine virtuelle Netzwerkkarte zur Verfügung.

$IPTABLES -A FORWARD -i $EXTDEV -o $INTDEV -d $VPN_GW -p 50 -m state --state NEW -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Das Protokoll AH (51) kommt in den Regeln nicht vor, da es kein NAT erlaubt.

33.3 KLIPS

Wenn Sie das VPN-Gateway direkt auf der Firewall betreiben möchten, hängen die Regeln und die Möglichkeiten stark von dem verwendeten IPsec-Stack ab. Zunächst betrachten wir KLIPS, dann das aktuelle 26sec. KLIPS ist der Kernel-Patch des FreeS/Wan-Projekts. Er kommt bei allen Linux- Kerneln 2.4 zum Einsatz, die FreeS/Wan verwenden. Die Weiterentwicklung des FreeS/WAN-Projekts Openswan (http://www.openswan.org) unterstützt ab der Ver- sion 2.3 auch KLIPS auf dem Kernel 2.6. Bei dem Einsatz von KLIPS werden virtu- elle Netzwerkkarten ipsecX für das Routing der zu verschlüsselnden und entschlüs- selten Pakete verwendet. Auf der physikalischen Netzwerkkarte (ethX)tauchendie Klartextpakete nicht auf. Dies erlaubt es, sehr einfach und sauber die Regeln zu defi- nieren und zu entscheiden, welches Paket durch den VPN-Tunnel darf und welches im Klartext versandt werden darf (siehe Abbildung 33.1). Um den Zugriff auf das VPN-Gateway auf der Firewall zu erlauben, müssen Sie sicherstellen, dass Sie die folgenden Regeln verwenden:

EXTDEV=eth0 $IPTABLES -A INPUT -i $EXTDEV -p udp -m multiport --dport 500,4500 -j ACCEPT $IPTABLES -A OUTPUT -o $EXTDEV -p udp -m multiport --dport 500,4500 -j ACCEPT $IPTABLES -A INPUT -i $EXTDEV -p 50 -j ACCEPT $IPTABLES -A OUTPUT -o $EXTDEV -p 50 -j ACCEPT $IPTABLES -A INPUT -i $EXTDEV -p 51 -j ACCEPT $IPTABLES -A OUTPUT -o $EXTDEV -p 51 -j ACCEPT

561 open source library e uasn okne i ogneRgl nutzen: Regeln Tun- folgende den Sie über können Netz internen so dem zulassen, aus nel Verbindungen alle grundsätzlich Sie Möchten transportieren. zu Klartext-Pakete die filtern. 3426sec 33.4 ACCEPT -j NEW --state state des -m Freiheiten 80 sämtliche ACCEPT --dport stehen -j Ihnen tcp ESTABLISHED,RELATED -p --state $INTDEV state -o -m $VPNDEV FORWARD -i -A FORWARD $IPTABLES -A $IPTABLES Sie können VPNDEV=ipsec0 aufzubauen, außen von einschränken: HTTP-Verbindungen Regeln sein, die möglich ACCEPT nur es -j Soll ACCEPT $VPNDEV -j -o $INTDEV $INTDEV -o -i $VPNDEV FORWARD -i -A FORWARD $IPTABLES -A $IPTABLES VPNDEV=ipsec0 Interface durchlassen das Tunnel Sie den durch können Sie Hierfür Pakete welche möchten. entscheiden, noch Pro- Sie zu müssen Nun AH und des beiden ESP Timeouts Protokolle in kurzen generischen können. Tunnel die die führen blemen und die anderen UDP zum einen für und Tracking zum den Connection werden da auf aufgebaut hier verzichtet, häufig habe Tracking Richtungen Ich Connection Tunnel. des der Einsatz Aushandlung zur und IKE-Verbindungen IPsec-Verkehr verschlüsselten sämtliche jeglichen grundsätzlich akzeptieren Regeln Diese 562 ver- zu Ketten den Abbildung in in Pakete wie der Testumgebung eine Einsortierung sich die Sie sollten über schaffen, Überblick einen sich Um kernel-..rpm das --changelog können -q Sie hinterlegt. auslesen: rpm Befehl Debian-Pakets folgenden oder dem mit RPM- RPM-Pakets Modifikationen des eines diese Changelog Changelog wurden dem Glück in viel aber Mit Kernel verschiedenen Distributionsversion. die SUSE-Professional-9.2- einer übertragen für innerhalb einen Unterschiede SUSE-Professional-9.3-Kernel sogar für einen existieren Beispiel Wahrscheinlich auf können. zum gültig unverändert Sie allgemein garantieren, ermitteln, die nicht dies ich Kernel Informationen, möglich, kann die Auch nicht anzugeben. Sie es Kernel dass ist alle bereits und Leider Distribution Distributionen hat. Ihre alle für die eingearbeitet Patches, Kernel Ketten den den verschiedenen von die in abhängig in nämlich Pakete ist die Dies selbst Kernel die einsortiert. sich Ihr ist Sie wie ist, sollten verschaffen, enthalten Zunächst darüber schwieriger. 2.6 Klarheit weitaus Linux-Kernel Pakete im relevanten der der IPsec-Stacks, Filterung des Verwendung der Bei iptables ipsecX Bfhsofn mdnVrerzu Verkehr den um offen, -Befehls uzn a ewne id um wird, verwendet das nutzen, 33.2 ubun Dann aufbauen. 3IPsec 33 33.4 26sec library open source

Client Firewall mit VPN-Endpunkt VPN-Gateway

Abbildung 33.2: Bauen Sie sich eine Testumgebung, in der Sie Ihren Kernel testen können. fügen Sie zu allen Ketten in allen Tabellen LOG-Regeln hinzu und erzeugen IPsec- Verkehr. Achten Sie darauf, dass es ein Unterschied ist, ob Sie die Pakete auf dem VPN-Gateway selbst oder von einem Client hinter dem Gateway erzeugen lassen. Außerdem ist es ein Unterschied, ob eine IPsec-Tunnel-Security-Association oder eine IPsec-Transport-Security-Association genutzt wird. Versuchen Sie möglichst Ihre Konstellation nachzubilden. Im Folgenden wird das Verhalten der Standard-Kernel bis einschließlich 2.6.14 be- schrieben.

33.4.1 Transport-Modus Im Transport-Modus ist die Betrachtung besonders einfach. Da die Pakete direkt als IPsec-Pakete erzeugt werden, kann Iptables nur die verschlüsselten Pakete filtern. Diese treten ganz normal in der INPUT- und in der OUTPUT-Kette auf. Der Inhalt dieser Pakete kann vor ihrer Verschlüsselung nicht gefiltert werden.

33.4.2 Tunnel-Modus Anders ist das bei Paketen, die in dem Tunnel-Modus übertragen werden. Hier müssen Sie zwischen Paketen unterscheiden, die von dem Tunnel-Gateway selbst erzeugt werden, und Paketen, die von anderen Systemen erzeugt werden, die den Tunnel nutzen. In der Abbildung 33.3 sehen Sie den Paketverlauf durch die Ketten, wenn ein ande- rer Rechner durch das Tunnel-Gateway auf den IPsec-Tunnel zugreift. Oben ist der Paketverlauf des ausgehenden Pakets und unten der Paketverlauf des eingehenden Pakets gezeichnet. Der Stern zeigt den Ort der Verschlüsselung/Entschlüsselung an. In der Abbildung 33.4 sehen Sie den Verlauf, wenn das Gateway selbst durch den Tunnel kommuniziert. Sie sollten erkennen, dass die Filter-Ketten das ausgehende Paket im Klartext analy- sieren. Das ausgehende verschlüsselte Paket durchläuft die Filter-Ketten nicht mehr. Das eingehende IPsec-Paket wird zunächst im verschlüsselten Zustand in der Filter- INPUT-Kette gefiltert, dann entschlüsselt und durchläuft dann erneut sämtliche Ketten, als ob das Paket gerade erst angekommen sei.

563 open source library 564 Host einem auf Ketten die durch Paketverlauf 33.3: Abbildung Lokaler Prozess 3IPsec 33 33.4 26sec library

Interne open source Netzwerkkarte des Gateways

raw PREROUTING nat POSTROUTING

mangle PREROUTING mangle POSTROUTING

nat PREROUTING filter FORWARD

mangle FORWARD mangle FORWARD

filter FORWARD mangle PREROUTING

Verschlüsselung raw PREROUTING

mangle POSTROUTING Entschlüsselung

nat POSTROUTING filter INPUT

mangle INPUT

mangle PREROUTING

raw PREROUTING

Externe Netzwerkkarte des Gateways

Abbildung 33.4: Paketverlauf durch die Ketten auf einem Gateway

565 open source library drFle-NU-et u i lretPkt ketee,dedeeMarkierung diese die überlebt akzeptieren, Filter-FORWARD- MARK Klartext-Pakete der die mit in nur Sie Markierung Filter-INPUT-Kette können Anschließend oder Diese Pakets. werden. des Entschlüsselung angebracht PREROUTING-Mangle-Kette die der ESP-Paket in einem ESP-Pakete in an für aber kann oder Sie Firewall-Markierung wird können Die Information geschickt Diese VPN kommt. das verstecken. IPsec-Tunnel durch dort Firewall-Markierung dem später einer können aus Paket Sie FORWARD- Paket das möchten. der das ob zulassen in ob prüfen, Verkehr Sie direkt den dass nicht Sie ist, aber ob VPN-Verkehrs müssen, des entscheiden Filterung Kette der bei Problem Das wird. besprochen i A-OTOTN-et idvndmaseednPkti ee Fall Pakets möglich. des jedem Source-NAT nicht ein in Verschlüsselung ist der Paket Dadurch vor durchlaufen. ausgehenden Form verschlüsselter dem in von immer wird NAT-POSTROUTING-Kette Die 566 moderne, Die Firewall-Markierung. die der ist ist Variante Variante wird, sichere gesendet alte 26sec-VPN und einfache, das bessere durch Die der filtern. Verkehr, den zu Möglichkeiten, zwei Firewall-Markierung gibt mit Es Filterung 33.4.3 Achtung Tipp ihn a cad iiePthsi ac--ai ( Patch-O-Matic im ermög- Patches zu einige Verschlüsselung McHardy der Patrick vor hat Pakete lichen, der Source-NAT ein Um mit auch Sie können Verhalten Dieses policy-checks ukinee,d i leafdem auf alle sie da funktionieren, a ighnePktwr eshüsl n anenwiee Mal weiteres ein dann dargestellt. und entschlüsselt verschlüsselt wird Paket eingehende Das 01-output-hooks tcpdump oag is ace ih idrenazäi id thndiese stehen sind, Verfügung. einsatzfähig zur wieder nicht Funktionen nicht Patches diese Solange durch- Paket verschlüsselten die wird. dem dass laufen dazu, von Patches auch NAT- diese Filter-OUTPUT-Kette führten die Außerdem dass verschlüsselt, wird. dafür, und durchlaufen unverschlüsselt sorgen zweimal, Patches POSTROUTING-Kette Diese wurde. rückgezogen eg he a ughnePktldgihvrclsetan. verschlüsselt lediglich Paket ausgehende das Ihnen zeigt u efgn etlt i eohi oetnicht Moment im jedoch die gestellt, Verfügung zur ) , ipsec-02-input-hooks policy Mth e ndmncse Abschnitt nächsten dem in der -Match, , ipsec-03-policy-lookup nf_reset tcpdump Pthafae,drzu- der aufbauen, -Patch efle.DrBefehl Der verfolgen. und ipsec-04- 3IPsec 33 ipsec- 33.4 26sec library aufweisen. Dann war das Paket bei seinem Transport über das Internet durch das VPN geschützt.

$IPTABLES -t mangle -A PREROUTING -i $EXTDEV -p 50 \ open source -j MARK --set-mark 0x01 $IPTABLES -A FORWARD -m mark --mark 0x01 -j ACCEPT

Wenn Sie sicherstellen möchten, dass bestimmte Pakete auch immer durch das VPN versendet werden, können Sie diese Pakete in der Mangle-FORWARD-Kette mar- kieren und in der Mangle-POSTROUTING-Kette alle Pakete verwerfen, die nicht verschlüsselt, aber markiert sind.

$IPTABLES -t mangle -A FORWARD -i $INTDEV -j MARK --set-mark 0x02 $IPTABLES -t mangle -A POSTROUTING -m mark --mark 0x02 -p ! 50 -j DROP

So stellen Sie sicher, dass jedes Paket, das Sie in der FORWARD-Kette erlaubt haben, auch tatsächlich verschlüsselt wird.

33.4.4 Filterung mit dem policy-Match Besser ist es jedoch, mit dem policy-Match zu arbeiten. Dieser Match ist in dem Patch-O-Matic enthalten. Hiermit können Sie ohne umständliche Markierung die Pakete erkennen, die von einer IPsec-Policy geschützt werden. Zusätzlich können Sie sogar den Tunnel prüfen, der von dem Paket genutzt wird. Der Test hat die folgenden Optionen, um auf das Vorhandensein einer Policy zu testen: I --dir in|out: Hiermit definieren Sie, ob Sie eine in-oderout-Policy testen möchten. Diese Option müssen Sie angeben. I --pol none|ipsec: Hiermit wählen Sie aus, ob die Policy einen Schutz mit IPsec verlangen soll oder nicht. I --strict: Wenn Sie diese Option angeben, müssen Sie die Policy genau beschrei- ben. I --reqid : Hiermit können Sie die genaue ID der Policy angeben. Diese ID kann mit dem setkey-Kommando mit der Angabe unique:id bei der Definition der Policy gesetzt werden. I --spi: Hiermit können Sie die genaue SPI der Security Association auswählen, die genutzt werden muss. I --proto ah|esp|ipcomp: Hiermit fragen Sie das Protokoll der Policy ab. I --mode tunnel|transport: Dies wählt zwischen den IPsec-Modi Tunnel und Trans- port. I --tunnel-src [/]: Bei einem Tunnel können Sie die spezifischen Tunnel- endpunkte angeben. Dies definiert die Quelladresse. I --tunnel-dst [/]: Dies definiert die Zieladresse.

567 open source library ai ae i ed ihugnagdctudselnsce,ds i nder in die ge- dass IPsec-Policy sicher, einer stellen von immer sind. und schützt Internet abgedeckt im Pakete Richtungen akzeptierten beide FORWARD-Kette Sie haben Damit P ecüz idoe brdsVNdnRcnrerih a,kne i fol- Sie können hat, erreicht Rechner dem den von VPN später verwenden: das der Regeln über zuzulassen, gende oder Verkehr wird den nur geschützt FORWARD-Kette VPN der in nun Um a ae o ie Pe-oiyi e Richtung der ob in prüft, Zeile IPsec-Policy zweite einer Die von verworfen. werden Paket Pakete, werden, Alle das akzeptiert DROP. auf explizit FORWARD-Kette nicht der Default-Policy die die setzt Zeile \ erste Die tunnel --mode out --dir \ policy tunnel -m --mode FORWARD in -A --dir $IPTABLES policy -m FORWARD DROP -A FORWARD $IPTABLES -P $IPTABLES 568 rtkl S ecüz id n ketetdeePkt.Deltt el prüft, Richtung der Zeile in letzte Policy Die entsprechenden Pakete. einer diese von akzeptiert Paket und das ob wird, geschützt ESP Protokoll I -o pe -rt s jACCEPT -j esp --proto ipsec ACCEPT --pol -j esp --proto ipsec --pol --next definieren. e e ewnugvon Verwendung der Bei : --strict önnSehemtdsncseElement nächste das hiermit Sie können in mTne-ou i dem mit Tunnel-Modus im out ecüz wird. geschützt 3IPsec 33 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library rcttwre.Dswr mFledngzit aubtahe i zunächst wir näher ( betrachten Befehle nutzen einzelne Funktionen Dazu anschließend diese gezeigt. dann die uns anzusehen, Folgenden um im Fehlernachrichten, einzelnen wird ausreichend. die be- nicht Das einzeln Fällen ICMP-Nachrichten werden. die einigen trachtet müssen in Firewall-Richtlinien jedoch der Abhängigkeit ist In Betrachtung die allgemeine auch derart Eine Linux-Kernel denn Verbindungsliste, auf. der der Fehler ein aus dann ja bezog, löscht trat Fehlermeldung es die Dabei sich akzeptiert. die auf Pakete Verbindung, diese auch den ugnvrnwrlc.Aßre iddee rtkl o dem von Fehlermel- Protokoll von Übertragung dieses die wird für Internet Außerdem um- Linie Das erster verantwortlich. und gibt. in dungen kompliziertes ist ICMP-Nachrichten Protocol wichtige recht Message viele ein and recht Control ist es 792) da (RFC Thema, fangreiches ICMP-Protokolls des Filterung ICMP Die 34.1 richtig Protokoll das Sie wie Ihnen, zeigt Kapitel filtern. Dieses konfigurier- falsch zusammen. mit Firewalls auch dies Protokoll ten hängt dieses Teilweise ist verantwortlich. Häufig Funktionsstörungen funktionieren. nicht für Internet das würde ICMP Ohne 34 dem elredne,desc u xset ebnugnbzee,wre o dem von Die werden verwerfen. beziehen, es zu Verbindungen als existente direkt ist Linux-Kernel auf Form So sich andere ICMP- die nicht. jede eine Fehlermeldungen, eine und auf oder tatsächlich beziehen, ob bezieht sich Verbindung sie kann, Verbindung aufgebaute wenn zuzulassen, existente erkennen nur ICMP-Fehlermeldungen eine Kernel möglich, auf das der sich auch dass Fehlermeldung Linux-Kernels bedeutet, des Das Stateful-Inspection ICMP-Protokoll. die unterstützt Erfreulicherweise mEnennbtahe i i ogne ICMP-Nachrichten: folgenden die wir betrachten Einzelnen Im I I I I I router-advertisment redirect source-quench fragmentation-needed destination-unreachable: destination-unreachable traceroute Bfh eingesetzt. -Befehl ICMP RELATED igode.Wn Sie Wenn eingeordnet. ping und RELATED traceroute Pkt uasn anwer- dann zulassen, -Pakete ). ping Bfh und -Befehl

open source library open source library a u oudi ece ihugSn ah,eluendencse Ab- nächsten die erläutern macht, Sinn Richtung welcher in und RELATED schnitte. wo --state nun state Was -m destination-unreachable --icmp-type icmp -p ACCEPT FORWARD -j folgende -A Sie $IPTABLES können möchten, akzeptieren Meldungen verwenden: bestimmte Regel nur Sie Wenn ACCEPT -j RELATED --state state -m icmp -p FORWARD -A $IPTABLES 570 ICMP-Fehlermeldung destination-unreachable Die ICMP 34.2 i ilncteriha s.Dbikn smheeGüd ü is Meldung diese für Gründe Gründe: mehrere häufigsten es der Auswahl kann eine Sie Dabei sehen ist. Folgenden Im erreichbar geben. nicht Ziel ein i rnstlce itr e edne s erenah enSeenahalle einfach Sie Regel: folgende Wenn einfach einfach. Sie nutzen sehr möchten, ist akzeptieren Meldungen ICMP-Meldungen gültigen der Filtern grundsätzliches Ein I I I I I I I I I I I e nepohn ehe en a PPooolnicht. IP-Protokoll das kennt Rechner bedient. angesprochene Applikation Der keiner von wird UDP-Port angesprochene Der echo-request/echo-reply address-mask-request/address-mask-reply timestamp-request/timestamp-reply parameter-problem time-exceeded router-solicitation e ehe drdsNtwr edndrhen iealgshtt Einige geschützt. Firewall eine durch ein werden dann Netzwerk senden erreichbar. Firewalls das nicht oder ist befindet, Rechner Zielrechner Der der wahr- sich dem ist in Er Netzwerk, Das ARP-Anfrage. eine auf nicht ausgeschaltet. scheinlich reagiert Rechner angesprochene Der Achtung eknSedrn asSevelih ois co ieRglin Regel eine schon sowieso alle die vielleicht haben, Sie Skript dass Ihrem daran, Sie Denken destination-unreachable etnto-necal:network-prohibited destination-unreachable: RELATED idimrdn eedt wenn gesendet, dann immer wird Pkt erlaubt! -Pakete . 4ICMP 34 34.2 ICMP destination-unreachable library

I Das Paket ist zu groß, um in das nächste Netzwerk geroutet zu werden. Eine Fragmentierung ist erforderlich, aber nicht erlaubt. Nähere Informationen über

diese Meldung finden Sie im nächsten Abschnitt. open source Die meisten dieser Fehlermeldungen weisen auf fatale Fehler bei der Verbindung hin. Ein Client, der diese Meldungen erhält, erkennt den Fehler und bricht die Verbindungsversuche ab. Lediglich bei der Meldung fragmentation-needed wird ein erneuter Versuch mit einem kleineren Paket unternommen. Für eine Firewall be- deuten alle diese Fehlermeldungen mit Ausnahme der fragmentation-needed-Meldung, dass die Verbindung nicht aufrechterhalten werden kann. Die Firewall kann daher die Verbindung aus ihrer Zustandstabelle löschen. Ein Filtern der ICMP-Meldungen ist sehr einfach möglich. Bereits im letzten Ab- schnitt habe ich die folgende Regel vorgestellt:

$IPTABLES -A FORWARD -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT

Diese Regel akzeptiert alle ICMP-Fehlermeldungen vom Typ destination-unreachable unabhängig von ihrer Richtung und den IP-Adressen. Es ist lediglich erforderlich, dass die Firewall die Fehlermeldung einer Verbindung zuordnen kann. Jedoch können diese Pakete auch Informationen über interne Systeme preisgeben. Zum einen kann ein Angreifer erkennen, ob ein System exisitiert, Protokolle erkannt werden und die entsprechenden Ports offen sind.

Hinweis So kann ein Angreifer zum Beispiel durch Senden eines ESP- oder AH-Pakets herausfinden, ob das System ein VPN-Gateway ist oder nicht. Normale Systeme antworten mit einer protocol-unreachable- Meldung. Ein VPN-Gateway versucht das Paket zu analysieren und zu verarbeiten.

Teilweise geben die Systeme in den Fehlermeldungen mehr Informationen preis, als dem Administrator lieb ist. So schickten Linux-Kernel der Version 2.0 beliebige Speicherinhalte in den Fehlermeldungen: http://www.cartel-securite.fr/pbiondi/adv/ CARTSA-20030314-icmpleak.txt. Diese Lücke ist behoben. Jedoch sind mindestens einige Windows-Systeme von ähnlichen Problemen betroffen. Daher ist es sinnvoll, die Anzahl der Meldungen zu begrenzen. Wenn Sie eine Firewall implementieren, um ein internes Netz beim Zugriff auf das Internet zu schützen, so sollten Sie ICMP-destination-unreachable-Meldungen aus dem Internet in Ihr geschütztes Netz erlauben. Tun Sie dies nicht, werden Ihre Clients beim Zugriff auf das Internet nicht über Fehler beim Verbindungsaufbau informiert und werden es mehrfach erneut versuchen, bis ein client-interner Timeout auftritt. Ihre Benutzer werden über diese Verzögerung nicht begeistert sein. Wenn Sie die Fehlermeldun-

571 open source library i önnas ogneRglverwenden: Regel Abschnitt folgende nächsten also können den Sie (siehe Ausnahme einer mit ist erforderlich. Internet das in ne i ndmEkr T n MU seeflednExkurs). folgenden (siehe PMTUD und MTU Exkurs dem in dieser Sie an Fehlermeldung finden etwas Abschnitt nicht kaum diese auch Verbindung Client (siehe auf die ändern betroffene kann Tatsache der aber kann Ziel, ist ihre Dummerweise ihr bauen werden. PMTUD nicht und aufgebaut Fehlermeldung Die Pfad die Größe. kompletten Erreicht den passender angewiesen. für in MTU Discovery dann die Unit ermitteln Pakete Transmission Sie fast Maximum durch. frag- führen Path 1191) Frag- ist, Paket (RFC eine eine verbunden das Da Betriebssysteme Overhead wird erzeugt. einem modernen Entweder Fehlermeldung mit alle ist. Paketverlust diese B ein einem und die Netz bei versendet verworfen besteht das mentierung wird so und für MTU, es MTU groß kleineren oder zu einer großen mentiert mit Paket besonders B das einer Netz dass einem mit Gefahr, in A Empfänger nun einen sich Netz an Befindet unter- einem Paket (MTU). in Unit dass Transmission Client Tatsache, Maximum ein die die ist können. Größe ist transportieren maximale Schuld Die Paketgrößen verantwortlich. unterschiedliche Vielzahl Netzwerkmedien Internet eine schiedliche für im ist Problemen Filterung) falsche von ihre (beziehungsweise fragmentation-needed ICMP-Meldung ICMP Diese 34.3 destination-unreachable --icmp-type icmp -p ACCEPT $EXTDEV -j -o RELATED $DMZDEV --state -i state FORWARD -m -A $IPTABLES ICMP- von destination-unreachable Transport --icmp-type der icmp ist -p Natürlich ACCEPT $INTDEV -j -o RELATED $EXTDEV --state -i state FORWARD -m -A $IPTABLES die kann ICMP- weitergeben. von und Transport Applikation Nachricht Den die entsprechende oder Benutzer eine den sofort an Client sofort Information der erhält zulassen, gen 572 heDesezgefn elredne ednmctnoe ih.Sekönnen auf die Sie Clients, nicht. den oder die Sie Regel möchten ob folgenden senden der ab, Fehlermeldungen mit davon zugreifen, hängt Dienste Das Ihre sinnvoll. Umständen unter DMZ xus T n i Path-MTU-Discovery die und MTU Exkurs: 1 Bts erg 71 ye.DeMUdsEhre beträgt Ethernet des MTU Die Bytes. Token-Ring des 17914 MTU beträgt Die MBit/s) dargestellt. Ethernet (16 diese ein Ziel Abbildung so und zum der Rechner Weg Ring-Netz In dem ein kann. auf weiterleiten dass Router nicht vorkommen, ein Pakete dass es erzeugt, kann unterschiedli- Pakete kann, große Netzwerkmedien haben unterschiedliche Werte für che MTU die Da destination-unreachable destination-unreachable 16.31 destination-unreachable .En eaeetcnsh Betrachtung technische genauere Eine ). MlugnasIrmitre Netz internen Ihrem aus -Meldungen Mlugnzulassen: -Meldungen Ncrctnasder aus -Nachrichten 34.1 s i Token- ein ist 34.3 4ICMP 34 )nicht 34.3 ICMP fragmentation-needed library

LAN Router Ethernet MTU 1500  

 open source A−>B

A−>B  Token Ring  A  MTU 4464 A−>B   B 

A −> B 4 Kbyte

  

Abbildung 34.1: Im Paket-Switched Network können die Pakete über unterschiedliche Wege das Ziel finden.

1500 Bytes. Sendet nun der Rechner Eins an den Rechner Zwei 20 Kbyte Daten, so erzeugt er zwei Pakete. Das erste Paket ist etwa 17 Kbyte groß und das zweite etwa 3 Kbyte. Der Router kann diese Pakete jedoch nicht unverändert weitersenden, da die MTU des Ethernet nur 1500 Bytes beträgt. Er fragmentiert die Pakete. Dazu schneidet er zunächst das Paket in kleinere Bestandteile und kopiert jeweils den original IP-Header des Pakets davor. Die Länge die- ser Bestandteile muss ein Vielfaches von acht aufweisen. Zusätzlich setzt der Router in allen Fragmenten außer dem letzten das More- Fragments-Bit (MF). Dieses zeigt dem Empfänger an, dass weitere Fragmente folgen. Damit der Empfänger die Fragmente richtig zu- sammensetzen kann, gibt er noch den Offset des Fragments im Ge- samtpaket als Vielfaches von acht an. Die Fragmente werden nun weiter zum Empfänger gesendet, der die Fragmente zusammenbaut und das IP-Paket prozessiert. Wenn nun aber eines dieser Fragmente verloren geht, wartet der Empfänger vergebens auf dieses Fragment. Nach einem Timeout sendet er eine ICMP-time-exceeded-Fehlermeldung (siehe Abschnitt 34.6). Der Absender sendet das Paket erneut, es wird erneut frag- mentiert, und es besteht wieder die Gefahr, dass ein Fragment verloren geht. Das einzelne Fragment kann nicht neu angefor- dert werden. Der Router hat das Fragment nicht gespeichert, und der Absender weiß nichts von einer Fragmentierung. Bei einem Verlust von 1500 Bytes werden ca. 17.000 Bytes neu übertragen!

573 open source library 574 .DeFrwl rab ih die nicht erlaubt Firewall Die filtern. richtig nicht 2. Pakete fragmentierte kann Firewall Die 1. auf- Probleme zwei nun können Firewall treten: einer mit auf Kombination (PPPOE) In Bytes die acht mindestens sich um Bytes. verringert 1492 IP-Protokoll Dadurch anderen das In eingesetzt. für PPPOE. PPTP MTU um auch meist sich wird eingepackt es Ländern Protokoll handelt 1500 weiteres Deutschland ein nicht In in IP-Protokoll wird. noch das IP-Protokoll für das da MTU Ethernet- Bytes, eine die DSL- über beträgt erfolgt Die Dennoch Modem Leitung. das auf. an wieder Rechners des seit DSL-Internetzugängen Anbindung verstärkt von es taucht Einführung Jedoch hat. annehmen, der man überlebt könnte Problem basieren, dieses Token-Ring-Netze Ethernet sich auf dass heutzutage Netze alle jemand fast Da noch ein. kaum setzt erfolgt Ziel, Sicherlich zum Weg dem auf erneut. MTU Vorgang kleineren dieser noch weiteres einer ein mit anschließend dann Netz kann sich Paket Pa- Befindet Dieses das werden. bauen. kann Größe weitertransportiert Absender passenderen Der einer Absender Hops. mit den neu nächsten ket des Router Absen- MTU der den die informiert über an Router auch Fehlermeldung Fehlermeldung Der dieser eine werden. Fall In sendet gesendet unserem der. und weiter In Paket nicht fragmentieren. das jedoch zu verwirft Paket nicht das Paket weist das kann Bit Dieses an, Pa- alle (DF). Router ist, Don’t-Fragment-Bit alle aktiviert gesetzten PMTUD einem dem mit bei kete Client, ein lö- sendet zu Hierzu intelligent sen. Problem dieses versucht, Path-MTU-Discovery Die ue e rtndrh ril e mfne uhdserste das auch Empfänger der Fragmente fil- Erhielt alle Sie durch! automatisch parat: ersten ließen Lösung und dem einfache Fragment außer erste eine das hatten terten Paketfilter das er ersten Soll handelt. Die Telnet-Paket ein entscheiden, verwerfen? oder oder mehr HTTP- akzeptieren nicht ein Paket um Fragment sich zweiten es dem ob klassischer Paket- ab Der Ein nun anfangen. Vier. nichts kann Schicht gar filter der TCP-Header einem auf mit nicht kann und Router Drei auch Router Schicht Router ein der der arbeitet auf da Schließlich kopiert. IP-Header, IP-Header einen den noch Fragment lediglich nur zweiten aber dem Fragment Ab auf. das sowohl TCP-Header enthält weist einen Fragment auch eines als dieses Fragments IP- denn einen ersten Problem, ein des kein taucht Filterung ist soll, HTTP-Pakets Die filtern auf. Pakete Problem fragmentierte besonderes Paketfilter ein Wenn 1. fragmentation-needed -Nachricht. 4ICMP 34 34.3 ICMP fragmentation-needed library

Fragment, so konnte er das Paket defragmentieren und auswer- ten. Wurde das erste Fragment durch eine Firewall verworfen,

konnte der Empfänger das Paket nicht defragmentieren und open source musste auch alle weiteren Fragmente verwerfen. Leider gab es in der Vergangenheit mehrfach Angriffe (z.B. http://cert.uni- stuttgart.de/archive/bugtraq/1999/07/msg00232.html), die diese einfache Lösung umgingen. Daher sammeln heute alle Paketfilter bereits die Fragmente, defragmentieren sie und analysieren erst anschließend das Paket mit ihren Regeln. Wird das Paket akzeptiert, so wird es weitertransportiert und möglicherweise hierzu erneut fragmen- tiert. Wird das Paket verworfen, so werden auch alle Fragmente verworfen. 2. Bei dem zweiten Problem handelt es sich nicht um ein Sicherheits- problem, sondern vielmehr um eine Art von Denial-of-Service. In Abbildung 34.2 sehen Sie eine typische Konstellation, wie sie heute im Internet anzutreffen ist. Der DSL-Anwender greift auf einen Webserver im Internet zu. Die- ser Webserver wird durch eine Firewall geschützt, die grundsätz- lich keine ICMP-Meldungen von außen erlaubt. Dies ist nicht un- gewöhnlich, da bis vor einigen Jahren die Paketfilter kaum in der Lage waren, ICMP-Meldungen sicher zu filtern. Die Firewall-1 des Marktführers CheckPoint konnte in der Version 4 dies von Haus aus nicht. Solange der Webserver nur kleine Datenmengen versendet, tritt kein Problem auf. Sobald der Webserver aber mehr als 1492 Byte große Pakete erzeugt, werden diese von dem DSL-Router auf der Seite des Internet-Service-Providers als zu groß abgelehnt. Dieser Rou- ter erzeugt eine ICMP-fragmentation-needed-Nachricht und sendet sie an den Webserver. Die Firewall verhindert, dass diese Nachricht den Webserver erreicht. Der Webserver erhält keine Empfangsbe- stätigung und sendet das Paket nach einiger Zeit erneut. Da er den Grund für den Paketverlust nicht kennt, sendet er das Paket un- verändert neu. Dieses neue Paket wird erneut verworfen, und eine Fehlermeldung wird generiert. Nach einiger Zeit wird der Webser- ver aufgeben und die Verbindung abbrechen. Die Daten werden den Client nicht erreichen. Dummerweise ist der Client davon betroffen und kann kaum etwas zur Behebung des Problems tun. Als einzige Lösung im Fall des TCP-Protokolls kann er die Maximum Segment Size (MSS) setzen (siehe Abschnitt 16.31).

Die Fehlermeldung fragmentation-needed sollten Sie grundsätzlich in allen Richtungen durch Ihre Firewall erlauben. Ansonsten kann es bei der heutigen IT-Infrastruktur

575 open source library gefälschten efgnüe ähieeMtoe e lsknrle eohrairnal mir alle TCP-Stacks reagieren meisten Jedoch die auf Flusskontrolle. noch Auch der Betriebssysteme Source-Quench bekannten Methoden worden. Meldungen. mächtigere abgelöst diese über Algorithmen verfügen Router moderne langsamer ein durch dann noch ist Pakete kaum die verwendet dass Heutzutage so informieren, ist zu auftreten, werden. Absender Verzögerungen gesendet dadurch den und sinnvoller, emp- Pakete müssen Pakete es die diese werden einzelne Da gesendet er daher muss. erneut und wenn verwerfen später kann versenden, unverarbeitet verarbeiten Empfangswarteschlange Rechner genug seiner ein aus schnell oder nicht Router Pakete ein fangenen kann Meldung source-quench ICMP Diese RELATED --state state 34.4 -m fragmentation-needed --icmp-type icmp -p FORWARD Kunden -A Zeile: Ihre $IPTABLES folgenden und der Sie mit die das erfolgt kommen, einfachsten Verbindungsproblemen Am zu betreffen. VPNs und DSL mit Firewall- der Grund wird auf Webserver funktioniert nicht. Der PMTUD Konfiguration zu. Die Webserver geschützt. einen Firewall auf eine greift durch DSL-Anwender Ein 34.2: Abbildung 576 " "Source-Quench: --log-prefix LOG -j source-quench --icmp-type icmp -p FORWARD -A $IPTABLES og sitTi des Teil ist Es Song. önesnvl en is ahihe upooolee,s asSeerkennen Sie dass so sind. gültig protokollieren, doch zu vielleicht Nachrichten Nachrichten diese ob diese können, sein, sinnvoll könnte i ifce ekegfrdeEzuugdee edne ist Meldungen dieser Erzeugung die für Werkzeug einfaches (siehe Ein führen Denial-of-Service zum 17429 bis kann Dies i ole diese sollten Sie jACCEPT -j ). source-quench source-quench dsniff Ncrctneiteed ebnugnz verlangsamen. zu Verbindungen existierende -Nachrichten -Pakets: NcrctnnctdrhIr iealelue.Es erlauben. Firewall Ihre durch nicht -Nachrichten http://www.monkey.org/~dugsong/dsniff source-quench Router sendetICMP-Fehlermeldung Ncrctn oite ölc,mit möglich, es ist So -Nachrichten. http://xforce.iss.net/xforce/xfdb/ tcpnice . o Dug von 4ICMP 34  34.5 ICMP redirect library

34.5 ICMP redirect

Die ICMP-redirect-Nachricht erlaubt es einem Router, einen Rechner auf einen bes- open source seren Router hinzuweisen. Wann wird eine ICMP-Redirect-Nachricht versandt (Ab- bildung 5.17 auf Seite 127)?

1. Rechner A sendet ein Paket an Rechner B. Da Rechner B sich in einem anderen Netz befindet, sendet Rechner A das Paket an sein Default-Gateway G1. 2. Das Gateway G1 prüft seine Routing-Tabelle und stellt fest, dass der nächste Hop für das Paket das Gateway G2 ist. 3. Wenn sich der Rechner A, das Gateway G2 und das Gateway G1 in demselben Netz befinden, sendet das Gateway G1 eine Redirect-Nachricht an den Rechner A und teilt ihm mit, dass das Gateway G2 ein besserer Router auf dem Weg zum Ziel Rechner B sei. 4. Außerdem leitet das Gateway G1 das Paket an das Gateway G2 weiter. 5. Der Rechner A trägt das neue Gateway G2 in seiner Routing-Tabelle oder seinem Routing-Cache ein und verwendet nun dieses Gateway, um den Rechner B zu erreichen.

Sicherlich möchten Sie nicht, dass irgendjemand Ihrer Firewall oder einem Rechner in Ihrer DMZ oder Ihrem internen Netzwerk von außen einen besseren Router mit- teilen kann. Diese ICMP-Nachricht kann natürlich für Angriffe in Form von Router- Spoofing verwendet werden. Sie sollten diese Nachricht nicht über Ihre Firewall zulassen. Vielleicht ist es sinnvoll, diese Nachrichten zu protokollieren (wenn Sie die Protokolle auch lesen). $IPTABLES -A FORWARD -p icmp --icmp-type redirect -j LOG --log-prefix "Source-Quench: "

34.6 ICMP time-exceeded

Diese ICMP-Nachricht zeigt eine Zeitüberschreitung beim Pakettransport an. Bei dem Transport eines Pakets kann es zu zwei Arten der Zeitüberschreitung kommen: I Bei der Defragmentierung eines Pakets hat der Empfänger nicht alle Fragmente innerhalb seiner vorgeschriebenen Zeit erhalten. Er verwirft das Paket und schickt eine time-exceeded: ttl-zero-during-reassembly-Nachricht zurück. I Bei dem Transport eines Pakets hat das Paket seine Lebensdauer überschritten. Jedes Paket trägt im IP-Header einen Time-to-Live-Wert (TTL). Jeder Router, der das Paket weiterleitet, reduziert diesen Wert um eins. Zusätzlich wird dieser Wert jede Sekunde, die das Paket auf einem Router in der Warteschlange ver- weilt, um eins reduziert. Dies tritt heute jedoch kaum noch auf. Erreicht der Wert 0, so verwirft der Router das Paket und sendet eine time-exceeded: ttl-zero- during-transit-Meldung an den Absender. Hiermit sollen Paket-Irrläufer durch fehlerhafte Routerkonfiguration vermieden werden.

577 open source library u ersle u,s asihülcewieepel,deMlugnz proto- zu Meldungen die empfehle, üblicherweise ich verwerfen. IP-Stacks dass zu ausgereiften und so den kollieren auf, mit selten Netzen sehr modernen nur in treten Fehlermeldungen Diese ihrihwle i eatg ahihe ih uc heFrwl erlauben. Firewall Ihre durch nicht Nachrichten derartige Sie wollen Sicherlich gesendet. (224.0.0.2) eemßgnAsädn(bihres le1 iue)ICMP- Minuten) 10 den alle in auf (üblicherweise sendet basiert Abständen Router 1256) regelmäßigen Jeder manuel- RFC Router-Solicitation-Nachrichten. Routererkennung gewissen Discovery, und automatische Sys- (Router Router-Advertisment- einen eines die Routererkennung aber Diese Router wurde dies entwickelt. die erzeugt, Da werden Administrationsaufwand die festgelegt. Üblicherweise Rechner len Konfigurationsdateien jeder kennt. in dass Router erforderlich, tems zuständigen es ist ihn IP-Protokolls für des Funktionieren das router-advertisment/router-solicitation Für ICMP LOG -j 34.8 parameter-problem --icmp-type icmp -p FORWARD -A $IPTABLES die für Header Hierfür im werden. Meldung verwiesen IP-Option besondere sie eine auf die nicht dann dass kann es sein, fehlt, gibt Option auch die jedoch viele Da kann fehlte. auf es Zustellung Zeiger Es gibt einem hin. Hierfür mit eines Absender Grund konnte. den Grund verarbeiten den weist auf nicht Fehlermeldung es Paket Die Gründe. ein wenn verschiedene IP-Header gesendet, dem System in einem Fehlers von wird parameter-problem Fehlermeldung ICMP Diese state -m time-exceeded --icmp-type icmp 34.7 -p $INTDEV -o $EXTDEV -i Path-MTU-Discovery FORWARD die -A Betriebssysteme $IPTABLES meisten die Seite auf da Exkurs auf, Routers den gut eines (siehe mehr so heute Konfiguration nicht treten das der Defragmentierung gar der auf in wie bei Fehlern Fehler Zugriff werden. bei informiert beim diese Paketen Richtung Netzes von damit in internen zulassen, Fehlermeldungen Clients diese eines wahrscheinlich Ihrer Schutz Sie möchten zum einsetzen, Firewall Internet eine Sie Wenn 578 e oae ezeka,jttir otrAvrimn-ahih usenden. zu Die Router-Advertisment-Nachricht ihre jetzt an, Netzwerk lokalen dem n die und ownie otrnomtoe.D ishugnctazpae s,kn der kann ist, akzeptabel die Minuten nicht eine 10 häufig nach auch spätestens dies Rechner er Da erhält wird, Informatio- Routerinformationen. gestartet die notwendigen neu Rechner Rechner ein der nun Wenn kann den So über eintragen. IP-Adresse. Routingtabelle Informationen seiner seine in wichtige Beispiel nen zum enthalten wie Nachrichten Router, Diese aus. Nachrichten -o-rfx"aaee-rbe:" "Parameter-Problem: --log-prefix ACCEPT -j RELATED --state router-advertisment router-solictation router-solicitation Ncrctwr ndie an wird -Nachricht Ncrctwr ndie an wird -Nachricht 572 unterstützen. ) Ncrctsne.Deewital otrin Router alle weist Diese senden. -Nachricht aaee-rbe:required-option-missing parameter-problem: All-Devices All-Routers MliatArse(224.0.0.1) -Multicast-Adresse  -Multicast-Adresse router-advertisment . 4ICMP 34  - 34.9 ICMP timestamp-request/timestamp-reply library

34.9 ICMP timestamp-request/timestamp-reply

Mit den ICMP-timestamp-request-undtimestamp-reply-Nachrichten (RFC 792) kann ein open source Rechner sowohl die Uhrzeit eines anderen Rechners ermitteln als auch die Wegezeit berechnen. Der Absender der timestamp-request-Nachricht trägt seine Uhrzeit in Milli- sekunden seit Mitternacht (UTC) ein (Originator’s Timestamp). Der Empfänger trägt bei Erhalt der Nachricht seine eigene Uhrzeit in dem Receive Timestamp-Feld ein. Die Transmit Timestamp trägt er kurz vor dem Versand der timestamp-reply-Nachricht ein (Abbildung 34.3).

Checksum 13 - Request / 14 - Reply 0

Identifier Sequenznummer

Originator’s Timestamp

Receive Timestamp

Transmit Timestamp

Abbildung 34.3: Die Timestamp-Nachrichten

In einer gewissen Weise ähnelt dieser Mechanismus dem Ping (siehe unten), bietet aber mit der absoluten Uhrzeit noch zusätzliche Informationen. Die meisten mo- dernen Betriebssysteme reagieren auf diese Nachrichten, obwohl nur sehr wenige Werkzeuge existieren, die diese Nachrichten erzeugen und auswerten können. Ein allgemein verfügbares Werkzeug ist Nmap. Weitere Werkzeuge sind icmppush und sing (http://sourceforge.net/projects/sing/). Nmap kann mit der Option -PP den Ping nach anderen Systemen im lokalen Netz durchführen.

[root@bibo ~]# nmap -PP -sP 192.168.255.0/24

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2005-07-29 13:23 CEST Host 192.168.255.1 appears to be up. MAC Address: 00:13:10:1F:B7:D1 (Unknown) Host 192.168.255.100 appears to be up. Host inspiron-8100.opensource-training.de (192.168.255.125) appears to be up. MAC Address: 00:20:E0:6C:72:1E (Actiontec Electronics) Nmap finished: 256 IP addresses (3 hosts up) scanned in 2.295 seconds

Das Werkzeug sing ist noch mächtiger und erlaubt es, jede Art von ICMP-Nachricht zu erzeugen. Sicherlich wollen Sie diese Nachrichten nicht von außen durch Ihre Firewall erlau- ben. Die Filterung dieser Nachrichten unterscheidet sich von den anderen ICMP- Nachrichten, da es sich hier nicht um eine Fehlermeldung handelt. Man kann fast

579 open source library ebnugeknt(tt:NW n igtae.JdsEh-el-ae wird neue Echo-Reply-Paket als Jedes wird eingetragen. Echo-Request-Paket und Jedes NEW) filtern. (State: so erkannt auch Verbindung kann stehen, Nachrichten Client-Server-Verhältnis die scheinbaren Iptables einem in wieder Nachrichten die uhdeeNcrctnmctnSenraewienctdrhen iealin wie Firewall Werkzeuge eine Sie durch möchten Vielleicht nicht lassen. normalerweise Netz Sie geschütztes möchten Ihr der Nachrichten Hilfe diese mit Auch Möglichkeit, versandt. Routern der wer- von ähnelt Normalerweise nur Address-Mask-Reply-Nachrichten ermitteln. den Dies den zu er Router. Router lokalen falls den den oder, an Router-Solicitation-Nachricht (255.255.255.255) kennt, Address-Mask-Request- Broadcast-Adresse Router eine die lokalen gül- Rechner der Netz an der nach sendet entweder lokales im- Netz Dazu Nachricht demselben sein fragen. Funktion in über zu Rechner diese Rech- Netzmaske andere Informationen tigen geben, wurde anderen keine zu Ursprünglich Möglichkeit einen der die fragen. Rechner, Rechner, besitzt, einem zu einem um Netzmaske es plementiert, seiner erlauben nach 950) ner (RFC Nachrichten Diese address-mask-request/address-mask-reply ICMP 34.10 für Regel allgemeine eine state Sie dass -m aller voraus, Akzeptanz natürlich timestamp-request die setzt --icmp-type Regel dieser icmp Funktion Die -p $EXTDEV -o $INTDEV Regel folgende -i Sie FORWARD können -A zulassen, $IPTABLES Nmap außen für nach oder Firewall Testzwecke Ihre für nutzen: durch Nachrichten innen dieser Verwendung von die Sie Möchten Sequenznum- die Request- und Identifier entsprechenden Nachricht. den der den über der mer IP-Adresse zu aus der Reply-Nachrichten neben sie erfolgt Zusätz- entfernt der Nachrichten und ESTABLISHED). Zuordnung Verbindung (State: Die die auch gewertet Tabelle. Timestamp-Reply Verbindung jeder beendet wird aufgebauten lich Timestamp-Reply wird einer Jeder Timestamp-Request Teil gewertet. Jeder NEW) als anders! (State: Nachrichten Verbindungsaufbau neuer diese Da- als sprechen. Iptables kommunizieren, auch miteinander die filtert Server, her einem und Client einem von 580 er- Nachrichten diese der Nach- Befehl, die den nicht zumindest auch Sie Sie kennen Wenn zeugt: so kennen. kennen, sicherlich Sie richten werden Nachrichten (Ping) Diese echo-request/echo-reply ICMP address-mask-request --icmp-type 34.11 icmp -p $EXTDEV -o $INTDEV -i FORWARD -A $IPTABLES Regel: folgende die Sie benötigen Dann nutzen. ndnZercnr isrbatottsemteiner mit sie beantwortet Dieser Zielrechner. den an msae-saeNW- ACCEPT -j NEW --state state -m ACCEPT -j NEW --state ping e igBfh reg eine erzeugt Ping-Befehl Der . ESTABLISHED Pkt verwenden. -Pakete echo-request Ncrctudsne diese sendet und -Nachricht echo-reply Ncrct ahier Da -Nachricht. ig-ak -mask sing 4ICMP 34   34.11 ICMP echo-request/echo-reply (Ping) library der entsprechenden Verbindung zugeordnet (State: ESTABLISHED) und beendet die Verbindung. So können die Echo-Nachrichten sicher von einer Iptables-Firewall

gefiltert werden. open source

Hinweis Der ping-Befehl auf einem Linux-System kann auch einen Broadcast- Ping durchführen. Manche Implementierungen erlauben auch einen Multicast-Ping. Hierbei wird der Echo-Request an die Broadcast- oder Multicast-Adresse geschickt. Sämtliche Rechner, die auf diese Anfrage reagieren (Unix, Router, kein MS Windows), antworten. Da nun aber nur eine Echo-Reply-Antwort von Iptables zugelassen wird und anschließend die Verbindung aus der Zustandstabelle gelöscht wird, ist ein Broadcast-Ping nicht möglich, wenn die Echo-Request- und Echo-Reply-Pakete zustandsorientiert gefiltert werden.

Mit der folgenden Regel erlauben Sie Ihren Benutzern, die Erreichbarkeit von Rech-

nern im Internet mit dem ping-Befehl zu testen: $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p icmp --icmp-type echo-request -m state  --state NEW -j ACCEPT

Häufig wird zusätzlich auch die Ping-Funktionalität beim Zugriff auf die DMZ ge- wünscht. Sie möchten aus Ihrem internen Netz und aus dem Internet prüfen, ob Ihr

Webserver noch läuft. $IPTABLES -A FORWARD -o $DMZDEV -p icmp --icmp-type echo-request -m state  --state NEW -j ACCEPT

Hier habe ich auf die Angabe der eingehenden Schnittstelle verzichtet. So wird nun jedes Echo-Request-Paket, das in die DMZ geroutet werden soll, akzeptiert. Dies erfolgt unabhängig davon, ob das Paket von innen oder von außen die Firewall erreicht hat.

Achtung Gerade bei Ping ist die zustandsorientierte Filterung wichtig. Sie könnten auf die Idee kommen, grundsätzlich jedes Echo-Reply- Paket zu akzeptieren, um so auch Broadcast-Pings zu ermöglichen. Dann öffnen Sie aber möglichen Tunnel-Werkzeugen Tür und . Es existieren eine Reihe von Werkzeugen, die auf der Basis von Echo-Paketen jedes beliebige Protokoll tunneln können. Eines der ersten Werkzeuge war itunnel von dem Hacker-Team Teso. Die zustandsorientierte Filterung würde diesen Tunnel nicht erlauben. Der Ping Tunnel (ptunnel, http://www.cs.uit.no/~daniels/PingTunnel/)

581 open source library rcruet w.ehtd 6.8.2.6,3 osmx 8bt packets byte 38 max, hops 30 (66.187.229.16), www.redhat.de to einem traceroute ab werden ~]$ Häufig [spenneb@bibo Fall. diesem erreicht. in Ziel wie sein ( gut Paket Sternchen so ein Zeitpunkt immer die nicht bestimmten über das Router, geht die Dabei ms ermittelt 58.027 Traceroute-Befehl Der ms 59.379 ms 59.158 (81.169.129.12) bsd-training.de 10 packets byte 38 max, hops 30 (81.169.129.12), www.bsd-training.de to traceroute ~]$ Traceroute-Befehl der [spenneb@bibo sicherlich: wie Sie gefragt, kennen immer ICMP-Nachrichten Ausgabe folgende schon auf Die sich komplett funktioniert. Sie Traceroute-Funktion haben aufgenom- der hier Vielleicht Befehl Antworten basieren. den die ich da habe Dennoch men, ICMP-Nachricht. keine ist Traceroute Traceroute 34.12 otr n ih o ilz ratn oizetdrBfh e T-etim TTL-Wert 582 den Befehl den der von modifiziert Antwort IP-Paket erhalten, eine ein zu Um versendet Ziel wird. Befehl vom angegeben Der nicht Aufruf einfach. und beim ganz Admi- Routern die es langjährigen Zieladresse, ist von ähn- der oder Grunde auch mit aufzeichne Im man unterwegs Router hört Unsinn. den die Häufig lichen von Paket das Ziel? Antwort dass eine zum Erklärungen, er Weg nistratoren erhält dem warum auf und Routern Traceroute-Befehl, der versendet Was Verkehr: r.t.ecl.e 22111122 379m 090m 796ms 57.906 ms 55.884 ms ms 70.990 52.912 ms ms 53.860 ms 48.056 ms 63.789 ms 51.602 ms 47.944 ms 8** 55.010 ms (212.121.151.242) 46.187 ms 0.940 ar1.str.de.colt.net ms 7*** 53.053 (62.156.139.146) 79.062 ms 62.156.139.146 ms 6 46.832 (62.154.18.18) 4.139 ms f-ea2.F.DE.net.DTAG.DE 5 49.293 (217.0.73.82) ms 217.0.73.82 4 0.871 (217.0.116.135) 217.0.116.135 3 (192.168.255.1) 192.168.255.1 2 1 ms 58.089 ms 58.084 ms ms 57.246 65.330 ms ms 58.237 ms 60.838 ms 57.951 ms 59.459 ms 171.903 ms 57.699 ms (81.169.160.158) 62.711 ms 57.894 81.169.160.158 ms 60.145 ms (81.169.160.38) 58.560 ms 48.130 81.169.160.38 ms 9 61.900 ms (194.97.172.146) 57.110 ms 47.983 strato-bln1.fdknet.de ms 8 ms 59.129 (62.104.191.139) 46.582 ms 0.711 L0.bln2-g.mcbone.net ms 7 57.817 (62.104.199.89) 46.357 ms so-1-1-1-0.lpz2-j2.mcbone.net ms 6 47.190 (62.154.89.122) 0.764 ms l-ea1.L.DE.net.DTAG.DE 5 77.835 (217.0.73.82) ms 217.0.73.82 4 0.846 (217.0.116.135) 217.0.116.135 3 (192.168.255.1) 192.168.255.1 2 1 oa ie unltozAwnugdrZustandsüberwachung der Anwendung betreiben! und kann trotz aufbauen Es Tunnel Werkzeug. einen verfügbare aktuell sogar mächtigste das sicherlich ist rcruewww.redhat.de traceroute www.bsd-training.de traceroute *** neeg.Dn leten iealden Firewall eine filtert Dann angezeigt. ) 4ICMP 34 34.12 Traceroute library

IP-Header des Pakets. Zunächst sendet der Befehl drei Pakete mit einem TTL-Wert von eins. Der erste Router reduziert den TTL-Wert um eins und muss das Paket

verwerfen, da der TTL-Wert null erreicht hat. Zusätzlich sendet er eine ICMP-Time- open source Exceeded-Fehlermeldung an den Absender. Der Absender erhält also drei Fehler- meldungen von dem Router mit dessen IP-Adresse. Für die IP-Adresse führt der Befehl nun noch eine Rückwärts-Namensauflösung durch (außer Sie geben beim Aufruf des Befehls die Option -n an). Der Befehl gibt nun diese Informationen aus:

1 192.168.255.1 (192.168.255.1) 0.871 ms 4.139 ms 0.940 ms

Nun erzeugt der Befehl drei weitere Pakete, die sich nur in dem TTL-Wert unter- scheiden. Dieser ist nun zwei. Der erste Router reduziert den TTL-Wert und routet das Paket weiter an den zweiten Router, der dann das Paket verwirft und nun die Time-Exceeded-Mitteilung mit seiner Absenderadresse verschickt. So erhält der Client die IP-Adresse des zweiten Routers. Nun stellt sich die Frage, was für ein Paket der Traceroute-Befehl versendet? Ein IP-Paket mit wachsendem TTL-Wert, aber was für ein IP-Paket? Wenn Sie den Windows-tracert.exe-Befehl verwenden, handelt es sich um ein ICMP-Echo-Request- Paket. So kann der tracert.exe-Befehl leicht ermitteln, wann er das tatsächliche Ziel erreicht hat. Solange der TTL-Wert zu klein ist, um das Ziel zu erreichen, erhält er Time-Exceeded-Meldungen. Sobald das Ziel erreicht wurde, erhält der Befehl eine Echo-Reply-Nachricht. Der Unix-traceroute-Befehl arbeitet anders, auch wenn einige Varianten (z.B. Red- Hat/Fedora) auch mit der Option -I ICMP-Echo-Request-Nachrichten verwenden können. Dieser Befehl versendet UDP-Pakete. UDP-Pakete benötigen einen Quell- und einen Zielport. Der Quellport wird zufällig gewählt (> 1023). Der Zielport wird nach einer einfachen Formel gewählt: BASE + TTL - 1. Der BASE-Wert kann beim Befehl mit der Option -p frei gewählt werden. Der Defaultwert ist 33434. Die Ziel- ports liegen also im Bereich 33434-33689. Solange der TTL-Wert zu klein ist, um den Zielrechner zu erhalten, erhält der traceroute-Befehl eine Time-Exceeded-Nachricht. Sobald der Zielrechner erreicht wird, basiert die Portwahl auf der Hoffnung, dass auf diesen Ports kein Dienst horcht. Üblicherweise sendet dann ein Betriebssystem eine ICMP-Port-Unreachable-Nachricht zurück. So kann der traceroute-Befehl erken- nen, dass er sein Ziel erreicht hat. Wenn Sie nun die Traceroute-Funktionalität von innen über Ihre Firewall erlauben möchten, müssen Sie folgende Regeln verwenden:

# Akzeptiere Time-Exceeded-Nachrichten von außen. Für Windows und Unix

# erforderlich $IPTABLES -A FORWARD -i $EXTDEV -o $INTDEV -p icmp --icmp-type time-exceeded -m state  --state RELATED -j ACCEPT

# Für Windows-tracert.exe erlaube echo-request-Pakete $IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -p icmp --icmp-type echo-request -m state  --state NEW -j ACCEPT

583 open source library ITBE AFRAD- ETE o$NDV- cp-im-yepr-necal mstate -m port-unreachable --icmp-type Dest-Unreach icmp alle -p meistens $INTDEV außen -o von $EXTDEV da -i Fall, FORWARD der werden -A bereits akzeptiert $IPTABLES meistens Nachrichten ist # Dies Port-Unreachable-Nachrichten # Erlaube # 41 piirn e ICMP-Regeln der Optimierung 34.13 nach Time-Exceeded-Paket erzeugte lokal das Firewall, versenden. zu der state innen es -m erlaubt Regel time-exceeded Diese --icmp-type icmp -p $INTDEV -o hinzufügen: OUTPUT Regel folgende -A die $IPTABLES Sie möchten, können Sie wird, Wenn versenden. angezeigt erscheinen. zu Firewall Ausgabe die der Time-Exceeded-Nachrichten auch in hat, Sterne dass auftau- Recht drei werden nicht das Firewall Traceroute-Befehle nicht der der Statt selbst Ausgaben sie den da in nun chen, wird selbst Firewall Die state -m 33434:33689 --dport udp -p $EXTDEV -o $INTDEV -i UDP-Pakete FORWARD meisten erlaube -A ACCEPT den Unix-traceroute $IPTABLES -j in Für ESTABLISHED ist # --state Regel state Diese -m Antworten. FORWARD die vorhanden -A akzeptiert bereits $IPTABLES Regel Skripten folgende # Die # 584 schnell können Das Paket. zweiten dem ab Paket, alle zweite in es Pakete jedes sind meisten es die ist TCP-Verbindung da DNS-Anfrage einer sein, einfachen bei Regel einer ge- erste Bei Verbindungen die gehören. Kette aufgebauten Kategorie jeder zu diese in die immer Pakete, sollte Dies sämtliche hören. akzeptiert Regel erste ACCEPT MY_ICMP Die -j -j ESTABLISHED icmp --state -p state FORWARD -m -A FORWARD $IPTABLES -A $IPTABLES Beginn zu Regeln: Sie beiden genug erstellen folgenden früh einfachsten die Regeln Am Pakete FORWARD-Kette diese werden. Ihrer die dass betrachtet ICMP-Regeln wichtig, FORWARD-Kette es Ihre der ist in auch FORWARD- Hierfür dass der können. sicherstellen, betrachten ICMP-Pakete tatsächlich Sie der Beispiel müssen opti- Abschnitt am Zunächst zu (siehe das wenig Kette. diesem an ich ein in Ketten demonstriere irgendwie benutzerdefinierten es Folgenden Regeln die Im ich sich die wie bieten sinnvoll, möchten, Hierfür es mieren. filtern ist detailliert habe, so beschrieben Kapitel ICMP-Protokoll das Sie Wenn -tt EAE jACCEPT -j RELATED --state ACCEPT -j RELATED --state ACCEPT -j NEW --state   4ICMP 34 9.3  ). 34.13 Optimierung der ICMP-Regeln library auch mal mehrere hundert Pakete sein. Da Sie entscheiden, welche Verbindung aufgebaut werden darf (State: NEW), ist dies auch sicher.

Anschließend prüfen Sie in der zweiten Regel, ob es sich um ein ICMP-Paket open source handelt, und springen dann in die benutzerdefinierte Kette MY_ICMP. Diese müs- sen Sie nun anlegen und mit Regeln füllen. Wenn Sie meinem Rat folgen, wer- den Sie alle Destination-Unreachable-Meldungen von außen, alle Fragmentation- Needed-Meldungen, Time-Exceeded-Meldungen von außen (für Traceroute) und Echo-Request-Pakete von innen (für den Ping) zulassen. Ihre Regeln könnten dann folgendermaßen aussehen:

$IPTABLES -N MY_ICMP

# Destination-Unreachable von außen $IPTABLES -A MY_ICMP -i $EXTDEV -p icmp --icmp-type destination-unreachable -m state  --state RELATED -j ACCEPT

# Fragmentation-Needed $IPTABLES -A MY_ICMP -p icmp --icmp-type fragmentation-needed -m state --state RELATED  -j ACCEPT

# Time-Exceeded von außen für traceroute $IPTABLES -A MY_ICMP -i $EXTDEV -o $INTDEV -p icmp --icmp-type time-exceeded -m state  --state RELATED -j ACCEPT

# Echo-Request von innen für ping $IPTABLES -A MY_ICMP -i $INTDEV -o $EXTDEV -p icmp --icmp-type echo-request -m state  --state NEW -j ACCEPT

# Protokolliere Parameter-Problem und Source-Quench

$IPTABLES -A MY_ICMP -p icmp --icmp-type source-quench -j LOG --log-prefix "Source-Quench: " $IPTABLES -A MY_ICMP -p icmp --icmp-type parameter-problem -j LOG  --log-prefix "Parameter-Problem: "

# Alle weiteren ICMP-Nachrichten werden unterdrückt $IPTABLES -A MY_ICMP -j DROP

Die letzte Regel verwirft alle ICMP-Pakete, die im Vorfeld nicht akzeptiert wurden. Damit ist sichergestellt, dass am Ende dieser benutzerdefinierten Kette auch kein Rücksprung in die FORWARD-Kette erfolgt und dort möglicherweise noch Pakete akzeptiert werden oder einfach nur Prozessorleistung für unnötige Tests vergeudet wird.

585

ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library belle mMmn ae i i ogne il mKre ..4zrVerfügung: zur 2.6.14 Kernel im Ziele folgenden die Sie haben Moment Funktionen Im diese auch Sie Dies können Verfügung. Dann zur ändern. die Zukunft IPv6 Patch-O-Matic nutzen. Funktionen, nächster für in alle in nicht aber Lediglich stehen der sich aufbauen, wird verfügbar. Anzahl Tracking IPv6 große Connection für dem Eine auf auch Verfügung. sind zur Patches Ziele verfügbaren und Tests andere 51Fleugmtip6tables mit Befehl Filterung Der 35.1 Fall. der nicht noch leider aber dies ist Aktuell neu wird. und unterstützt überarbeitet Kapitel komplett (siehe Funktionalität zu schreiben diese geschrieben erneut Netfilter-Team IPv6-Protokoll das das hat für er- unterstützt. Tracking müssen, IPv4-Protokoll Connection USAGI-Projekts ganze das des das nur Patch nicht Tracking Um ein Connection Tracking immer das Connection da ist gewesen, das Hierfür forderlich unterstützt IPv6-Protokoll. das Kerneln das wesentliche nicht älteren eine 2.6.13 noch 2.6.14 den einschließlich Kernel Bei dem bis eintreten. ab Linux-Kernel Änderung wird unterstützen, be- die wenig Iptables nur Während unterstützt IPv6-Protokoll Dennoch IPv6-Protokoll. eingesetzt. das kaum reits bisher wird IPv6-Protokoll Das 35 rcigudNtokAdesTasaingibt. Translation Address Network und Tracking is il önnSei e riTabellen drei den in Sie können Ziele Diese I I I Verfügung. HL LOG ACCEPT etrnZeewre brldaeKremdl realisiert. Kernelmodule ladbare über werden Ziele weiteren etrutnerläutert. unten weiter isitenZe,dsnrfrdsIv-rtkl u efgn th.E wird Es steht. Verfügung zur IPv6-Protokoll das für nur das Ziel, ein ist Dies : nat , MARK th ih u efgn,d s(oh en nesüzn ü Connection für Unterstützung keine (noch) es da Verfügung, zur nicht steht , DROP , ip6tables NFQUEUE , IPv6 RETURN , REJECT ukinetietshzmBefehl zum identisch funktioniert und QUEUE , 27 ROUTE ,s asnnac addsIv-rtkl komplett IPv6-Protokoll das bald auch nun dass so ), ae ihhe mfs igbueZeehnet Alle handelt. Ziele eingebaute fest um hier sich es da , und TRACE thn i ü a P4Poool zur IPv4-Protokoll, das für wie stehen, raw , filter und iptables mangle he thnleicht stehen Ihnen . iste.DeTa- Die einsetzen.

open source library open source library mdePkt upüe,kne i u i ogne et zurückgreifen: Tests folgenden die auf Sie können prüfen, zu Pakete die Um 588 Optionen: folgenden die hat Target da Das kann. gefährlich, der erzeugen ist in Routing-Loops Targets nur Hoplimits des des darf Erhöhung Verwendung Target eine Die Dieses ist werden. vergleichbar. Hoplimit eingesetzt IPv4-Protokolls Der Mangle-Tabelle modifizieren. des IPv6-Hoplimit-Feld TTL-Feld das dem Sie mit können Ziel diesem Mit HL IPv6-Targets35.2.1 Neue 35.2 I I I I I I I i irennegnnTest. eigenen einen hier Sie -lst --hl-set sind: IPv6 Protokoll das für hinzugekommen Neu sind: funktionieren, Iptables-Erweiterungen den identisch die Erweiterungen, --icmpv6-type icmpv6 -p --protocol -p, -lic --hl-inc --hl-dec e isleFnto i e IPv4. bei wie Funktion dieselbe ben – – – – – – – – – – – – – – – des stimmt. Adresse mrt -m ipv6header -m hl -m hbh -m eui64 -m dst -m physdev -m owner -m multiport -m mark -m mac -m limit -m length -m esp -m ah -m iri rfnSednIPv6-Routing-Header. den Sie prüfen Hiermit : IPv6-Header. im Hop-Limit-Feld das prüft Test Dieser : ispütdnIPv6-Hop-by-Hop-Header. den prüft Dies : prüfen. IPv6-Destination-Header im Optionen Sie können Hiermit : , ispüt bdrEI4Ti ie uoofiuire IPv6- autokonfigurierten einer EUI64-Teil der ob prüft, Dies : iri röe i a olmtu e neeee Wert. angegebenen den um Hoplimit das Wert. Sie angegebenen erhöhen den Hiermit um : Hoplimit das Sie reduzieren Hiermit absolut. : Wert den Sie setzen Hiermit : s --source -s, iri önnSeOtoe mIv-edrprüfen. IPv6-Header im Optionen Sie können Hiermit : mdsseileIMv-rtkl uutrtte,haben unterstützen, zu ICMPv6-Protokoll spezielle das Um : , d --destination -d, , i --in-interface -i, , o --out-interface -o, 5IPv6 35 ha- 35.3 Neue IPv6-Matches library

35.3 Neue IPv6-Matches

35.3.1 dst open source Mit diesem Test können Sie den IPv6-Destination-Header prüfen. Der Test hat zwei zusätzliche Optionen: I --dst-len : Dies prüft die totale Länge des Headers. I --dst-opts [:], []: Hiermit prüfen Sie einzelne Optionen und ihre Länge.

35.3.2 eui64 Wenn die IPv6-Adresse per Autokonfiguration zugewiesen wurde, enthalten die niedrigen 64 Bit der IP-Adresse die MAC-Adresse der Netzwerkkarte. Dieser Test prüft, ob das tatsächlich der Fall ist.

35.3.3 hbh Hiermit können Sie die IPv6-Hop-by-Hop-Optionen testen. Die Option --hbh-len prüft die totale Länge, während Sie mit --hbh-opts [:] die ein- zelnen Optionen und ihre Länge prüfen können.

35.3.4 hl Dieses Modul prüft das Hoplimit-Feld. Sie können prüfen, ob der Wert mit einem bestimmten Wert übereinstimmt, kleiner oder größer ist. Dieser Test ist mit dem ttl-Test vergleichbar. I --hl-eq : Gleich. I --hl-lt : Kleiner. I --hl-gt : Größer.

35.3.5 ipv6header Mit diesem Test können Sie die Optionen im IPv6-Header testen. Mit der Option --header können Sie die Header angeben, die in dem Paket enthalten oder nicht (!) enthalten sein müssen. Dabei müssen Sie alle Header angeben, damit der Test zutrifft. Wenn Sie nur einen Teil angeben möchten, müssen Sie zusätzlich die Option --soft definieren. Sie können die folgenden Header testen: hop, dst, route, frag, auth, esp, none, proto.

589 open source library isrTs rf e otn-edr irü ae i i ogne Optionen: folgenden die Sie haben Hierfür Routing-Header. den prüft Test rt Dieser 35.4 590 I I I I I I ohne ist. vorhanden --rt-0-not-strict [,] --rt-0-addrs --rt-0-res --rt-len [] --rt-segsleft --rt-type nee.Wn i eilc iepüe öhe,mse i uäzihdiese zusätzlich Sie müssen möchten, prüfen eine angeben. Option lediglich Sie Wenn finieren. ispüt bdsrsrireFl eez ist. gesetzt Feld reservierte das ob prüft, Dies : iri rfnSednnmrshnTpdsRouting-Headers. des Typ numerischen den Sie prüfen Hiermit : iri rfnSedeLnedsHeaders. des Länge die Sie prüfen Hiermit : i ezeOto usal PArse mRuigHae de- Routing-Header im IP-Adressen alle muss Option letzte Die : ispüt bi eevetnFl Tp0 ieAdresse eine 0) (Typ Feld reservierten im ob prüft, Dies : ispütdsSegments-Left-Feld. das prüft Dies : 5IPv6 35 ü iu-evrud-Netzwerke und Linux-Server für 2.6 und 2.4 Kernel mit Sicherheit Co. & iptables mit Linux-Firewalls Spenneberg Ralf üce otn•SnFacso•Hro,England Harlow, • Francisco San • Boston • München o il,Otro•Sde eioCity Mexico • Sydney • Ontario Mills, Don nipito ero Education Pearson of imprint An ard•Amsterdam • Madrid

open source library ee let üfnnra i oäe edn ü i otxzsädgist zuständig Postfix die für senden, Domänen die an nur ( dürfen Clients deren master.cf ai otxnnEMisasdmItre ü heDmn nim,set- annimmt, Domäne Ihre für Internet Parameter dem den aus Sie E-Mails zen nun Postfix beschränkt! Damit Localhost auf Parameter dieser ist Häufig gennimmt. reject_unauth_destination 127.0.0.0/8 networks ibgsPout(uhenMcootEcag evr en regnSei der in Sie Erzeugen sein. Sie be- Server) sondern Variable, ein Exchange erfolgen, eigene kann Microsoft Dies eine Clients ein Mailserver. Datei die eigenen (auch durch Postfix- einen Produkt den direkt Netzwerk auf liebiges Ihrem nicht Zugriff der in Der soll und intern soll. DMZ Postfix-Servers arbeiten verwenden Relay der Ihres als Namen in Postfix den der Mailserver die hier für Sie ein, Tragen Domäne passen. Mailserver ren oder /etc/postfix/main.cf Konfigurationsdateien: wesentliche zwei besitzt Postfix-MTA E-Mail-Relay als Postfix Der A.1 Austausch können. den nutzen für DMZ und Sie der Installation in das die E-Mails kurz vorstellen, der nur E-Mail-Relays im Ihnen einfachen reichlich ich möchte eines inzwischen Hier Konfiguration existiert Buchform. in Sprache, werden. auch deutscher durchgeführt und nicht Internet in auch würde auch hier soll Literatur, (MTA) und Alternative sprengen Postfix-Mail-Transport-Agenten Buches dieses des Rahmen den Beschreibung komplette Eine A e nennMisre u etretn ndsItre nim,tae Sie tragen annimmt, Internet Variable das der in in Mailserver Weiterleitung internen zur Ihren Mailserver internen rem e nennMisresz.DeVariable Die zu. Mailservers internen res u üsnSePsfi ohsgn i rdeEMisfrIr oäezustellen Domäne Ihre für Parameter E-Mails den die Sie er setzen wie sagen, Hierzu noch soll. Postfix Sie müssen Nun uähtsltnSedfrsre,ds i Parameter die dass sorgen, dafür Sie sollten Zunächst ai erenahdrheür edn i üsnldgihi e Datei der in lediglich müssen Sie werden. durchgeführt einfach sehr damit mydestination $myhostname ee eibgnEpägri e -alvredndre.Al an- Alle dürfen. verwenden E-Mail der in Empfänger beliebigen jeden und rfnSe bdeVariable die ob Sie, Prüfen . ). Postfix-E-Mail-Relay /etc/postfix/main.cf ai otxac asclc brdsNtwr -al entge- E-Mails Netzwerk das über tatsächlich auch Postfix damit , iiePrmtranpassen. Parameter einige eez s.Dsbdue,ds let ndrGruppe der in Clients dass bedeutet, Das ist. gesetzt mydestination=$mydomain internal_mail i ofiuaindsPsfi l ea kann Relay als Postfix des Konfiguration Die . mp_eiin_etitos=permit_mynetworks, = smtpd_recipient_restrictions rnpr_as=hash:/etc/postfix/transport = transport_maps n esnSedee i PArseIh- IP-Adresse die dieser Sie weisen und , inet_interfaces mynetworks ai otxEMisvnIh- von E-Mails Postfix Damit . ein: myhostname eznSeetee auf entweder Sie setzen yewrs=$internal_mail, = mynetworks und mydomain /etc/postfix/ ü Ih- für .In all my-

open source library open source library mdeeFnto uatvee,mse i eilc e Parameter den lediglich Sie müssen aktivieren, zu Funktion speichert Ergebnis diese Das ab. Um E-Mail Database. die Verification Postfix Address für der auch Zustellung in lehnt die Postfix nimmt Mailserver zu, interne und nicht der Benutzer Benutzer Lässt diesen an. diesen Postfix E-Mails sich Benutzer merkt diesen zu, für dieser auch Benutzer Lässt Mailserver. den internen an den Gleichzeitig Zustellung an Empfänger. eine Zustellung lokalen scheinbare unbekannten ver- eine einen Postfix Postfix an versucht in E-Mail Funktion jede Diese zunächst Verify-Servers. zögert des Verwendung die ist Informatio- Angenehmer weitere finden Sie einbinden. unter hier nen SQL-Datenbanken oder LDAP auch recipient_restrictions engsttsn!HbnSedeDtiezut regnSedeHash-Datenbank die Sie erzeugen Klam- erzeugt, eckigen Datei die die dass Sie mit darauf, Haben sind! Sie gesetzt Achten mern E-Mail-Servers. internen Ihres Adresse mPsfi i it e ütgnEpägrzrVrüugz tle,benutzen stellen, zu Verfügung zur Empfänger gültigen Parameter der den Sie Liste die Postfix Um Ver- Verify-Server. zur den hier Postfix verwenden bietet direkt Sie Empfängerliste Postfix oder die überprüfen. fügung, Sie Empfänger stellen die Entweder Sie Möglichkeiten. müssen zwei passiert, nicht das Ihrem Damit mit Black- auch landen (häufig Sie Spam-Block-Liste anderen und genannt). oder Bounce-E- angesehen, einen list einer der Spam auf und als schnell System auch recht internen Relay werden dem Bounces auf weitergelei- Diese Fehlermeldungen innen Mail. nach zu und führt das angenommen Dies Benutzer da tet. werden existente verlieren, Dadurch nicht durch. an Spaß Das E-Mails E-Mail-Adresse den zustellt. auch der System schnell Verifizierung internen keine Sie zum führt und werden Postfix-Relay annimmt betreiben, E-Mail jede so zunächst Relay Postfix-Relay das Sie Adressverifizierung Wenn A.2 dabei Sie Ersetzen internen smtp:[ip_internal_mail] zum an: Postfix Inhalt die folgendem mit eintragen, Datei example.com die Domänen also alle Sie Legen nun soll. weiterleiten Sie Mailserver müssen Datei dieser 592 = smtpd_recipient_restrictions evr omse i e mr-otste.Ite i otxSre,hitder heißt Postfix-Server, ein er Ist zustellt, setzen. Internet Smart-Host das den Sendmail- in Sie ein Parameter direkt E-Mail-Server müssen nicht interne so der E-Mails Ist Server, die Postfix-E-Mail-Relay. Mail- dieses er internen an Ihren dass sondern noch konfigurieren, nur Sie so müssen server Jetzt Glückwunsch. Herzlichen wars. Das ota /etc/postfix/transport postmap permit_mynetworks http://www.postfix.org/LOCAL_RECIPIENT_README.html relayhost local_recipient_maps . example.com ndrDatei der in durchIhreDomäneund . /etc/postfix/main.cf n bree ismen ae.Sekönnen Sie Datei. eine diesem übergeben und modifizieren: ip_internal_mail Postfix-E-Mail-Relay A . uc i IP- die durch smtpd_ A.3 Amavisd-New library

reject_unauth_destination reject_unknown_recipient_domain

reject_unverified_recipient open source

Postfix wird zunächst jeden Benutzer, der von dem internen Mailserver abgelehnt wird, nur temporär mit dem Fehler 450 ablehnen. Das bedeutet, dass die Clients später erneut eine Zustellung versuchen sollen. Wenn Sie die Protokolle eine Weile beobachtet haben und sicher sind, dass Postfix alles richtig macht, können Sie den Fehlercode ändern: unverified_recipient_reject_code = 550

A.3 Amavisd-New

Für eine zusätzliche Filterung auf einem Postfix-Mail-Relay bietet sich Amavisd- New (http://www.ijs.si/software/amavisd/) an. Viele Distributionen enthalten bereits ein Amavisd-New-Paket. Für alle anderen können Sie von der Homepage ein Paket herunterladen. Installieren Sie das Paket nach der Anleitung. Je nach Ihrer Distribu- tion müssen Sie einige Pakete der Distribution oder aus dem Internet nachinstallie- ren, die Amavisd-New vorraussetzt. Amavisd-New kann einen Virenscan und auch eine Spam-Analyse über SpamAssassin durchführen und benötigt dafür auch die entsprechenden Pakete. Die Filterung mit Amavisd-New erfolgt als externes Mail-Relay (Abbildung A.1). Postfix nimmt die E-Mail zunächst entgegen und prüft die DNS-Namen und Adres- sen. Dann übergibt Postfix per SMTP die E-Mail an Amavisd-New, das als lokaler Dienst auf dem Port 10024 läuft. Dieses zerlegt die E-Mail und scannt die E-Mail mit einem Virenscanner und SpamAssassin. Wird ein Virus gefunden, nimmt Amavisd- New die E-Mail in Quarantäne. Ist das nicht der Fall, so übergibt Amavisd-New die E-Mail wieder per SMTP an eine zweite Postfix-Instanz auf Port 10025. Diese wird so konfiguriert, dass keine erneuten Prüfungen der E-Mail durchgeführt werden und die E-Mail direkt weitergeleitet wird. Für die Konfiguration müssen Sie zwei Einträge in der Postfix-Konfigurationsdatei /etc/postfix/master.cf hinzufügen:

127.0.0.1:10025 inet n - y - - smtpd -o content_filter= -o local_recipient_maps= -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks, \ reject_unauth_destination -o mynetworks=127.0.0.0/8 smtp-amavis unix - - y - 2 smtp

593 open source library otn_itr=smtp-amavis:[127.0.0.1]:10024 = content_filter Datei der in Eintrag einen Sie müssen Zusätzlich eingebunden. SMTP über Content-Filter als wird Amavisd A.1: Abbildung 594 Konfigurationsdatei der in Amavisd-New verwenden. Sie zu können Amavisd-New Nun Content-Filter als an, Postfix Sie weisen Damit irnudapse.DeeDtiitsh u omnir.I e ese Fällen meisten den In kommentiert. Ansprüchen. meisten gut den sehr bereits ist Default-Konfiguration Datei die entspricht Diese anpassen. und rieren odisable_dns_lookups=yes -o smtp_data_done_timeout=1200 -o /etc/postfix/main.cf /etc/amavisd.conf Postfix-E-Mail-Relay A hinzufügen: konfigu- ls_n_oshn){ flush_und_loeschen() SYSCTL=/sbin/sysctl IPTABLES=/sbin/iptables # # http://www.opensource-training.de Spenneberg Training # Ralf OpenSource 2005 # Firewall (c) die # stoppt Skript # Dieses # #!/bin/sh Argu- Dieses entgegen. Argument ein nimmt entweder Es kann Firewall. ment die Firewall stoppt der Skript Stopp Dieses B.1 Firewall. der Stoppen zum Skript ein Sie finden Kapitel diesem In B Argument e ugnsutn uük leKte ednglet lebenutzerdefinierten alle auf Policies geleert, alle werden gelöscht, Ketten Ketten Alle zurück. Ausgangszustand den ncleedal oiisdrKte auf Ketten der Policies alle anschließend hc ffrwl scniue hsTABLES) (has configured is 2>/dev/null) firewall /proc/net/ip_tables_names if TABLES=$(cat Check # Flush # panic Hinweis Firewall-Skript issSrp s uhafdrC mVrecns»Beispielskripte« Verzeichnis im CD der auf vorhanden. auch ist Skript Dieses adl ssc mdegece crtemtdmUtrcid dass Unterschied, dem mit Schritte gleichen die um sich es handelt stop oder panic ACCEPT en Mit sein. eez n a otn ekiir.Bidem Bei deaktiviert. Routing das und gesetzt DROP etltwerden. gestellt stop ez a kitdnRcnrin Rechner den Skript das setzt

open source library open source library ez_oiy){ setze_policy() } 596 co- "ez i oiydrKte u plc:" $policy: do auf $TABLES; Ketten in der i 1 Policy for return die && $"Setze ret=0 ] -n "$TABLES" echo -z 2>/dev/null) [ /proc/net/ip_tables_names Übergabeparameter TABLES=$(cat den auf Policy die policy=$1 Setze # "Fehler" echo || "OK" echo && $ret ] return 0 -eq echo $ret [ done do $TABLES; in " Tabellen i Ketten: alle for benutzerdefinierte Für und # Firewall-Regeln 1 $"Lösche ret=0 return -n && echo ] "$TABLES" -z [ ae"i in " "$i" "$i case -n echo -Z; ret+=$?; $i let -t Zaehler $IPTABLES Reset # -X; ret+=$?; $i let -t Ketten $IPTABLES Loesche # -F; ret+=$?; $i let -t $IPTABLES Flush # nat) filter) ITBE tnt- RRUIG$oiy\ $policy PREROUTING -P nat -t $IPTABLES ;; \ $policy INPUT -P filter -t $IPTABLES &$PALS- a POTU plc \ $policy \ OUTPUT $policy -P POSTROUTING nat -P -t nat $IPTABLES -t && $IPTABLES && \ $policy \ FORWARD $policy -P ret+=1 OUTPUT filter let -P -t || filter $IPTABLES -t && $IPTABLES && Firewall-Skript B B.1 Stopp der Firewall library

|| let ret+=1 ;;

mangle) open source $IPTABLES -t mangle -P PREROUTING $policy \ && $IPTABLES -t mangle -P POSTROUTING $policy \ && $IPTABLES -t mangle -P INPUT $policy \ && $IPTABLES -t mangle -P OUTPUT $policy \ && $IPTABLES -t mangle -P FORWARD $policy \ || let ret+=1 ;; *) let ret+=1 ;; esac done

[ $ret -eq 0 ] && echo " OK" || echo " Fehler" echo return $ret } case "$1" in stop) flush_und_loeschen setze_policy ACCEPT RETVAL=$? ;; panic) flush_und_loeschen setze_policy DROP RETVAL=$? ;; *) echo $"Usage: $0 {stop|panic}" exit 1 ;; esac

exit $RETVAL

597

.Awnug is cih idtdeShctn57dsOIMdlsa.Hier ab. OSI-Modells des 5-7 Schichten die bildet Schicht Diese Pro- Anwendung: die arbeiten 4. Hier OSI-Modells. des 4 Schicht der entspricht Dies Transport: der 3. OSI-Modell im entspricht TCP-Modells des Schicht zweite 2. und Diese 1 Internet: Schicht der OSI-Modell 2. im entspricht Schicht Diese Netzzugang: 1. ih is xkeUtreln nsee cihe,snenvredtnrvier nur verwendet sondern Schichten, sieben in daher besitzt Unterteilung Schichten: Es Applica- exakte entwickelt. und OSI-Modell diese dem Presentation nicht Schich- vor Session, wurde folgenden TCP/IP-Protokoll Transport, die Das Network, um tion. sich Data-Link, es Physical, handelt ten: Hierbei ver- sieben aufzuteilen. in Schichten Netzwerkprotokolle die schiedene um verwendet, mit wird auch OSI-Referenzmodell Das Kommunikation einfache eine ermöglichen. ver- Internet- und zu den intern Internet können in so dem zu um haben umgestellt, anbieten Firmen TCP/IP Dienste Viele auf ähnliche 1982 Heutzutage ebenfalls Protokoll. Netze umgestellt. Ab verwendete ihre IP Jahren Internet Verwendung. Protokoll gangenen im meiste neue Version das die das TCP/IP die auf heute ist ARPANET wurde findet damalige 1978 Version das Diese entwickelt. wurde gestellt. 1973 fertig seit IPv4 wird TCP/IP-Protokollfamilie TCP/IP Die C.1 werden. erklärt in sollen Sie verstehen, finden zu Netzwerkprotokolle Darstellungen Detection Ausführliche die Intrusion Proto- der als um verwendeten mit und Punkte, Zusammenhang Wiederauffrischung Internet im als wesentlichen auch im Die wie die Einführung dienen. als in Nachschlagekapitel sowohl Einführung soll Es kurze geben. eine kolle soll Kapitel Dieses C retndeApiainpoool i TP ent T etc. FTP Telnet, HTTP, wie Applikationsprotokolle die arbeiten UDP. und TCP tokolle ist. gemeint IP-Protokoll umgangsprachlich das häufig wenn gesprochen, wird 3 Daher Schicht IP-Protokoll. der das von auch arbeitet Hier 3. Schicht Netzwerkgrundlagen [29] und [11] .

open source library open source library i edrudir eetn olnnnkr ogsel werden. vorgestellt kurz nun sollen Bedeutung ihre und erfolgreiche Felder be- die Die Best-Effort-Protokoll müssen ist. erforderlich als Anwendungen dies die auch wenn oder prüfen, wird Übertragung Protokolle Es höheren überprüft. Die zu und zeichnet. weiterhin garantiert Knoten nicht Pakets andere des Pakets über IP-Header im Daten werden (Abbildung die Informationen abgespeichert und benötigten hierzu erkennen Die zu der übermitteln. in Ausfall sind den Diese Netzwerkkompo- aufrechtzuerhalten. Lage, redundanter Routing-Protokolle Ausfall dynamische bei durch Kommunikation nenten die es, ermöglicht Dies unterschiedliche über Pakete finden. die Ziel können das Network Wege Paket-Switched Im C.1: Abbildung switched (packet (Abbildung switched Paketen erreichten (circuit einzelnen Ziel in ihr Tatsa- Verbindung unabhängig Daten die network) die Zielrechner. dedizierte sondern war diesem keine benötigte, IP-Protokolls küm- zu mehr IP-Kommunikation des network) Pakets Hierbei eine Einführung des übertragen. dass der Zustellung zu bei che, die Zielrechner Neuerung um revolutionäre einem IP-Protokoll Die zu das IP-Datagramme Quelle sich verantwortlich, einer dafür mert ist von 5) STD Paketen 791, in RFC (IP, Protocol Internet IP Das C.2 600 C.2 2. Paket .DnohitI i rtkl,dsdeZseln des Zustellung die das Protokoll, ein IP ist Dennoch ). Curcuit Switched Network Switched Curcuit Paket Switched Network Paket Switched 1. Paket C.1 ). Netzwerkgrundlagen C C.2 IP library

048 16 31 0 Header- Version Type of Service Länge des gesamten Paketes

Länge open source 4 Bit 8 Bit 16 Bit 4 Bit 4 Byte Identifikationsnummer Flaggen Fragment Offset Fragmentident-Ifikationsnummer 3 Bit 13 Bit 16 Bit 8 Byte

Time To Live (TTL) Protokoll Prüfsumme des Headers 8 Bit 8 Bit 16 Bit

12 Byte

Quell-IP-Adresse 32 Bit

16 Byte

Ziel-IP-Adresse 32 Bit 20 Byte

Optionen (wenn vorhanden)

Daten

Abbildung C.2: IP-Header Version 4

C.2.1 Version Dieses Feld ist vier Bits lang. Es enthält die IP-Version. Üblicherweise enthält die- ses Feld im Moment die Zahl 4. Jedoch werden in der nahen Zukunft sicherlich vermehrt auch IPv6-Pakete auftreten. Diese enthalten dann hier die Zahl 6.

C.2.2 Header-Länge Dieses Feld enthält die Länge des Headers. Es ist selbst 4 Bits lang. Jedoch wird die Länge nicht in Bits oder Bytes gemessen, sondern in Doppelworten. Ein Dop- pelwort entspricht 4 Bytes oder 32 Bits. Ein üblicher IP-Header ohne Optionen ist 20 Bytes lang. Daher befindet sich bei den meisten Paketen hier eine 5. Weist der Header weitere IP-Optionen auf (z.B. Source Routing, s.u.), so befindet sich hier ent- sprechend eine größere Zahl. Der Header kann maximal eine Länge von 15 (4 Bits) Doppelworten, also 60 Bytes einnehmen.

601 open source library a ae lihetgdsD-lg(.. eez a.I ismFl afdsPaket das darf Sinn. Fall keinen auch diesem wenn Zahl In diese null, hat. hat auf gesetzt daher Wert werden, (s.u.) fragmentiert diesen DF-Flag nicht setzt das gleichzeitig 2.4 auf Paket Linux-Kernel Portscan« das aktuelle Der »Gespoofter sind vergeben. Abschnitt Hiermit zufällig 1. (siehe um möglich immer Seite Portscans üblicherweise gespoofte Zahl diese jedoch bei inkrementiert und Absender IP-Identifikationsnummer Der gesprochen. der Fragment-Identifikationsnummer häufig der Literatur von von der Paket Paket in fragmentierten fragmentierten wird einem Daher nicht kann. Empfän- einem zuordnen der Pakets bei Fragmentierung eines einer Identifikations- Fragmente Falle langen die im Bit ger damit 16 erfolgt, eindeutigen Dies einer verschickt. mit nummer üblicherweise wird Paket Jedes Identifikationsnummer C.2.5 sind, Lage übertrage- der die in sind nicht transportieren. zu Übertragungsmedien Üblicherweise Pakete die sein. große daher da derartig lang lang, kleiner, Bit Byte wesentlich 16 65.535 Pakete ist maximal nen Feld Das Paket Bytes. ein in kann Gesamtpaketlänge die definiert Feld Dieses Gesamtpaketlänge C.2.4 und Diffserv durch 2 abgelöst heute Minimize-Cost werden Sie (0x04), (s.u.). (0x00). ECN 4 0 Normal-Service (0x10), Maximize-Reliability 16 und tatsächlichen Minimize-Delay (0x02) (0x08), den Werte: folgenden auf 8 die Auswirkung existieren Maximize-Throughput wenig Es Dennoch Verwendung nur Pakets. Eine häufig. daher des Auswertung. Transport recht hat seine Anwendungen jedoch Internet die es im Art durch Router nutzen Anwendungen eine wenige Linux wenigen IPv4- nur um unter von unterstützen des nur implementiert, Anwendungen Entwicklung heutzutage Die ursprünglich der wird gesetzt. Es seit wurde bieten. steht Es zu Es Quality-of-Service Verfügung. lang. zur Bits 8 Protokolls ist Type-of-Service-Feld Das Type-of-Service C.2.3 602 das ist null immer Bit muss folgende und verwendet Das nicht momentan wird Bits des sein. drei Fragmentierung dieser die erste über Das Informationen die Bits, enthalten. drei Pakets enthält IP-Header Der Flaggen C.2.6 enrGöenctzselnkn,ms a ae ewre n ieICMP- eine und verwerfen Paket aufgrund das Paket muss dieses schicken. kann, Absender der den Router, zustellen an Fehlermeldung Ein nicht werden. Größe fragmentiert seiner nicht Paket das darf 63 .Dhreitee iieBtibssee(..OeBD,dedeeZahl diese die OpenBSD), (z.B. Betriebssysteme einige existieren Daher ). o’ Fragment Don’t (F)i.Itdee i eez 1,so (1), gesetzt Bit dieses Ist -(DF-)Bit. Netzwerkgrundlagen C C.2 IP library

Das dritte und letzte Bit ist das More Fragments follow-(MF-)Bit. Dieses Bit zeigt an, dass weitere Fragmente folgen. Beim letzten Fragment und allen nicht fragmentier-

ten Paketen ist dieses Bit gelöscht. open source

C.2.7 Fragment-Offset Dieses Feld gibt bei einem Fragment dessen Beginn im Gesamtpaket an. Hierbei erfolgt die Angabe in Vielfachen von 8. Das bedeutet, dass ein Fragment (außer dem letzten) immer eine Länge aufweisen muss, die durch 8 ohne Rest teilbar ist. Das Feld ist 13 Bit lang und kann damit den ganzen Bereich von maximal 65.535 Bytes eines Pakets abdecken. Der Empfänger verwendet diese Information, um das Paket in der richtigen Reihen- folge zusammenzusetzen. Der Ping of Death nutzte Fragmente, um den TCP/IP-Stack einiger Betriebssysteme mit einem Bufferoverflow zum Absturz zu bringen. Es ist möglich, Fragmente so zu konstruieren, dass bei der Defragmentierung ein Paket größer 65.535 Bytes entsteht. Dies ist möglich, da das erste Fragment eine Größe von 1500 Bytes aufweist. Jedes weitere Fragment ist 1480 Byte lang. 1500 Bytes plus 43 mal 1480 Bytes ergeben 65.140 Bytes. Nun kann ein weiteres Fragment erzeugt werden, das erneut 1480 Byte lang ist. Erlaubt wären jedoch nur noch 395. Bei der Defragmentierung kommt es daher zum Bufferoverflow. Dieser Angriff erhielt den Namen Ping of Death, da es besonders einfach war, mit dem Kommando ping diese Pakete zu erzeugen.

C.2.8 Time To Live (TTL) Bei dem Feld Time To Live handelt es sich um ein 8 Bit langes Feld. Es kann somit Werte von 0 bis 255 aufnehmen. Dieser Wert wird von jedem Router, der das Paket weiterleitet, gelesen und pro Hop um 1 dekrementiert. Erreicht hierbei das Feld den Wert null, so muss der Router das Paket verwerfen und eine Fehlermeldung an den Absender zurücksenden. Diese Funktion erlaubt es, mit dem Werkzeug traceroute die Route eines Pakets zu ermitteln. Hierzu werden Pakete mit steigenden TTL-Werten an den Zielrechner gesendet. Jeder Router wird entsprechende Pakete verwerfen müssen und eine Feh- lermeldung an den Absender schicken. So wird die IP-Adresse eines jeden Routers ermittelt. Diese Funktion eignet sich jedoch auch zur Verwirrung von IDS-Systemen und zur Ermittlung von Firewall-Regeln. Hierzu werden spezielle Pakete erzeugt. Diese wei- sen eine TTL auf, so dass die Firewall beziehungsweise das IDS-System die Pakete sieht, sie aber nie den entsprechenden Empfänger erreichen. Bei dem Firewalking handelt es sich um eine ähnliche Technik. Verschiedene Betriebssysteme verwenden üblicherweise unterschiedliche Standard- TTL-Werte. Linux verwendet 64.

603 open source library ..2Ziel-IP-Adresse C.2.12 erkennbar. nicht Header im ist Source-NAT sich Ein befindet Adresse. wurde, Pakets entsprechende durchgeführt des die Translation) Transport hier beim Address Wenn (Network Absenders. Source-NAT des ein IP-Adresse die enthält Feld Dieses Quell-IP-Adresse C.2.11 keine dieses wenn verwirren, zu Prüfsummen. IDS-System fehlerhaften ein durchführt. mit um Prüfsummenermittlung er- Pakete werden, Netzwerk verwirft verwendet kann lokalen Empfänger Dies Pakete im Der jedem sein. berechnet. nur von worden daher neu Prüfsumme zeugt können durchführt, Header-Prüfsummen diese Änderungen fehlerhaften wird das sich mit TTL), Headers Router), des (z.B. (z.B. Werte ändern Netzwerkgerät einige Übertragung Da Pakets. Prüf- der Die des Netzwerkge- bestimmen. während Datenanteil können Paket-Headers den Hiermit des nicht Validität Pakets. enthält die summe des Empfänger der IP-Headers auch des und räte Prüfsumme die ist Dies Prüfsumme C.2.10 entdeckt, Werkzeug ein hat aufbaut. hierbei Project NVP-(11-)Tunnel sich einen Honeynet es Beispiel Das zum kann handeln. das so Tunnel einen entdeckt, um Netzwerk auch im Protokolle Datei ungewöhnliche der enthal- Werden in des Nummern Nummer die alle gibt werden zum Feld Linux sind aufgeführt. Dieses Unter Dies (17). übertragen. an. UDP zu Protokolls und Protokollen tenen (6) von TCP Anzahl (1), große ICMP eine Beispiel Lage, der in ist IP Protokoll C.2.9 604 die für Byte einem definiert, Abbildung Typ Daten. den die für das Bytes Byte, entsprechenden und einem Länge aus bestehen Optionen verwendet. Op- Die Optionen Bytes keine 40 werden IP-Protokolls können Standardmäßig des Insgesamt werden. übertragen. Verhalten übertragen Option tionen Notwen- das als die die werden gelegentlich senden, Diese besteht modifizieren. zu Jedoch Informationen gespeichert. in zusätzliche werden IP-Headers digkeit, Informationen des erforderlichen Bytes IP-Pakets 20 des den Transport den für Sämtliche IP-Optionen C.2.13 nicht Header im ist Destination-NAT be- Ein Pa- erkennbar. Adresse. wurde, des entsprechende durchgeführt die Transport hier Translation) beim sich Address Wenn findet (Network Empfängers. Destination-NAT des ein IP-Adresse kets die enthält Feld Dieses C.3 Netzwerkgrundlagen C eashuih das. veranschaulicht /etc/protocols C.2 IP library

Typ Länge Daten open source

Copy Class Typ 1 Bit 2 Bit 5 Bits

Abbildung C.3: IP-Optionen-Aufbau

End of Optionlist Dies definiert das Ende der Optionenliste. Es ist eine Option der Klasse 0 und des Typs 0. Diese Option besitzt kein Längenfeld und kein Datenfeld.

No Operation No Operation ist eine Option der Klasse 0 mit Typ 1. Sie wird verwendet, um die Optionenliste aufzufüllen. Die Länge des IP-Headers kann nur in Doppelworten angegeben werden. Wenn die Länge der Optionen nicht durch 4 teilbar ist, werden sie mit dieser Option aufgefüllt. Diese Option weist weder ein Längenfeld noch ein Datenfeld auf.

Security Options Diese Option der Klasse 0 mit Typ 2 ist 88 Bits lang und wird für militärische Zwecke genutzt. Üblicherweise wird diese Option nicht im Internet beobachtet. Sie hat keine Verwandtschaft mit IPsec.

Record Route Diese Option verwendet die Klasse 0 und den Typ 7. Router, die diese Option im Paket erkennen, sollen ihre IP-Adresse im IP-Header aufzeichnen. Da die Größe des IP-Headers beschränkt ist, können hier nur maximal acht Router ihre IP-Adressen eintragen. Daher wird diese Funktion nur selten im Internet genutzt und stattdes- sen auf traceroute zurückgegriffen. Während diese Funktion jedoch für jedes Paket tatsächlich die Route protokolliert, zeigt traceroute nur die wahrscheinliche Route an.

Loose Source Routing Loose Source Routing ist eine Option der Klasse 0 und mit Typ 3. Die Größe dieser Option hängt von der Anzahl der angegebenen Router ab. Loose Source Routing erlaubt es dem Absender, eine Liste von Routern im IP-Header anzugeben, über die das Paket neben anderen transportiert wird. Es können aus Platzgründen maximal

605 open source library i ae ndeeArsesne n ieLoeSuc ot nee,dmtdie soll. damit werden angeben, gesendet Route Paket Source das Loose wohin eine wissen, und außen auch senden von Internet-Router geroutet Adresse Angreifer Pakete diese ein nicht Internet-Routern an kann So ansonsten Paket meisten routen. ein den die zu auf 192.168.0.0/24) routen, (z.B. Beispiel, RFC-1918-Netze zu zum an erlaubt Pakete Es es, würden. erlaubt werden Routing Source Loose . UDP und Router-IP-Adressen C.3 oder Timestamps die nur Möglichkeit, anzufordern. Timestamps die besteht hinterlegt, Zeit Es die wurde. noch Record-Route- verarbeitet zusätzlich Paket der aber das ähnlich ablegt, der Router Header zu der im dass IP-Adresse verlangt, seine 4) Option Typ 2, (Klasse Option Diese modifizieren Paket genutzt. TimeStamp Erweiterungen das experimentelle Router für der wird Es dass weiterroutet. definiert, es 20) er bevor Typ muss, 0, (Klasse Option Diese Alert Router definiert weiteren Hier keine dürfen 9. Es Typ Router. mit verwendenden werden. und zu verwendet 0 der Router Klasse Abfolge der exakte mit die Option Liste die eine ist Routing Source Strict Routing Source Strict Funktion: diese unterstützen Befehle Verschiedene traceroute werden. angegeben Router acht 606 be- Darstellung der Zittern leichtes ein durch nur meistens das verloren Videostreaming-Anwendung sich einer Pa- macht bei verlorenen so Paket gegenüber geht, ein Unempfindlichkeit Beispiel gewissen zum einer Wenn in keten. Fehlerkontrolle. oft gewisse sich seiner eine äußert Aufgrund meist Dies Protokolle Daten. eine höheren der gegen die Reihenfolge bieten Vorkehrungen der Unzuverlässigkeit es garantiert Vertauschung bietet eine Es noch oder Protokoll. Datagramms Duplizierung eines Datagramm-orientiertes Ablieferung und die unzuverlässiges weder ein ist das UDP meist wird Paket Fällen ein diesen denen In verwendet. wird. bei UDP-Protokoll zugestellt handelt, Empfänger da Broadcast-Anwendungen Viele mehrere nutzen, oder an nicht Overhead. gleichzeitig gar Multicast- gewaltigen sie um einen können sich oder jedoch es nicht am es Garantie diese beiden generiert Über- benötigen korrekte der Hierzu Anwendungen und Internetappli- eines Daten. vollständige meisten die stellt der Die garantiert tragung 6) TCP dar. (s.u.). IP STD TCP von 768, verwenden Basis kationen RFC auf Protokolle (UDP, eingesetzten Protocol häufigsten Datagram User Das , netcat etc. Netzwerkgrundlagen C C.3 UDP library merkbar. Eine TCP-ähnliche Fehlerkontrolle mit einer erneuten Sendung des Pakets würde meist zu einem Stottern und Anhalten des Streams führen.

UDP ist nur in der Lage, ein Datagramm gleichzeitig zu verarbeiten. Wenn gewisse open source Informationen mit UDP versendet werden, so werden diese nicht bereits von UDP sinnvoll auf einzelne Pakete aufgeteilt (TCP teilt die Daten entsprechend der MSS- Maximum Segment Size auf, s.u.), sondern es werden unter Umständen sehr große UDP-Datagramme gebaut, die anschließend von der darunter liegenden IP-Schicht auf IP-Paketfragmente aufgeteilt werden müssen. Um mehreren Anwendungen die Verwendung des UDP-Protokolls zu ermöglichen, verwendet UDP einen Multiplexer. Client- wie Server-Anwendungen müssen sich vor der Verwendung des UDP-Protokolls registrieren. Während dieser Registrie- rung weist die UDP-Schicht diesen Anwendungen einen Port zu. Die Verwen- dung der Ports durch die verschiedenen Dienste ist grundsätzlich willkürlich, jedoch haben sich im Laufe der Jahre bestimmte Ports für bestimmte Dienste etabliert. Die Zuweisung der Ports zu den einzelnen Diensten erfolgt durch die Internet Assigned Number Authority (IANA), die die Liste der well-known ports pflegt (http://www.iana.org/assignments/port-numbers). Der UDP-Header (Abbildung C.4) ist acht Byte lang. Er enthält den Quell- und den Zielport, die Datagrammlänge und eine Prüfsumme.

0151631

Quell-Port Ziel-Port 16 Bit 16 Bit

4 Byte

UDP-Länge UDP-Prüfsumme 16 Bit 16 Bit

8 Byte

Daten

Abbildung C.4: UDP-Header

Der UDP-Header enthält keine IP-Adressen. Diese werden im IP-Header spezifi- ziert. Der UDP-Header stellt bei einem UDP-IP-Paket die ersten acht Bytes im Da- tenanteil des IP-Pakets dar. Der UDP-Quellport (Source Port) ist wie der UDP-Zielport (Destination Port) 16 Bit oder 2 Byte lang. Die UDP-Protokollschicht verwendet diese Information, um die übertragenen Daten einzelnen Anwendungen zuzuordnen. Die Länge des UDP-Datagramms wird ebenfalls im UDP-Header übertragen. Da ein UDP-Header mindestens acht Byte lang ist, ist die kleinste mögliche UDP-Nachricht acht Byte lang. Ein IP-Paket darf maximal 65.535 Byte lang sein. Abzüglich des IP-

607 open source library . TCP C.4 größerer Übertragung komplette und fehlerfreie die der Lage, garantieren. TCP-Protokoll sendet der zu dem Datenmengen in mit so ist erneut TCP größer, Anfrage stellen. die den jedoch zu und verpflichtet, nun kontaktieren Antwort ist zu sendende Client erneut ver- Der DNS-Server zu Daten Antwort. (truncated) Pakets die trunkierte des eine Ist DNS-Server Fragmentierung können. mögliche gehen eine den loren durch Dies zurückzusenden. an nicht UDP-Datagramm DNS-Server dass seinem UDP-Paket der in garantiert, achtet einem Daten darstellt, Bytes Protokoll in 512 Namen maximal verlässliches enthaltenen Antwort darauf, kein den UDP seine Da Bitte, zurück. sendet der Client mit DNS-Server DNS-Server Der der einen sendet aufzulösen. an Hier UDP-Paket durchzuführen. ein Namensauflösungen Client um wird UDP verwendet, nutzen. Beispiel UDP-Protokoll das zum die verwendet. Anwendungen, Eingabe verschiedene Ziel- existieren als und Es Größe der Quell- und aus Inhalt 17 Pseudo-Header der UDP-Protokollnummer Zwei- wird einem der im Prüfsumme port, mit der und zusammen Berechnung überprüfen der UDP-Datagramms zu Bei des verwerfen. Prüfsumme des zu diese Empfänger Paket verpflichtet, das der felsfall nicht. 1122 ist wurde, RFC oder erzeugt laut soll Prüfsumme der Pakets eine zugunsten werden Prüfsumme jedoch berechnet einer Wenn Erzeugung Performance. Prüfsumme die Anwen- auf diese die verzichten dass Anwendungen ob Viele bedeutet, kann, Das optional. entscheiden ist dung auf UDP-Header Paket im UDP-Prüfsumme das MTUMa- Die wird die so als Unit), ist Transmission fragmentiert. größer (Maximum IP-Ebene das Unit UDP-Datagramm, Transmission Byte ein ximum bestimmt. 65.515 Anwendung Anwendung der maximal von diese UDP-Nachricht wird Erzeugt UDP-Datagramms eine des Größe kann Die Bytes werden. lang 20 mindestens von Headers 608 Verbindung die auf sich Dienste: folgenden konzentriert die Einsatz Es es bietet häufigste auf. Hierzu Der Integrität. IP ihre Netzen. Internet-Protokoll und paketvermittelten dem in Trans- auf verbindungsorientiertes Einsatz baut intelligente ein den sehr ist für eine TCP anderem portprotokoll ein. unter Über- -steuerung TCP vollständige und setzt und Flussüberwachung Hierzu haupt- korrekte Internet Informationen. die im der garantiert das tragung ist TCP 7) Protokoll. STD eingesetzte 793, RFC sächlich (TCP, Protocol Control Transmission Das I I eiirevruleVridn.DeeitfrdeFusotol,degarantierte die verantwortlich. Flusskontrolle, I/O-Management die das für und ist Übertragung Diese Verbindung. virtuelle dedizierte Verbindung. Virtuelle I/O-Management ü i Anwendung. die für – aegöe(i e D) odr a C-rtkl reg i Pakete. die erzeugt die TCP-Protokoll definiert das Anwendung sondern die UDP), Nicht bei um. (wie fortlaufen- Pakete Paketgröße diesen in wandelt anschließend Puffer TCP Strom diesen lesen. den in ihm Daten aus fortlaufende beziehungsweise als schreiben, Informationen ihre kann wendung i ednTPEdukekmuiirnüe eine über kommunizieren TCP-Endpunkte beiden Die C ittdrAwnugennIOPfe.DeAn- Die I/O-Puffer. einen Anwendung der bietet TCP Netzwerkgrundlagen C C.4 TCP library

– auf Netzwerkebene. TCP wandelt den Datenstrom der Anwendung in Seg- mente um. Hierbei werden die Segmente so erzeugt, dass sie effizient über

das Netzwerk transportiert werden. open source I Flusskontrolle. TCP bietet eine fortgeschrittene Flusskontrolle, die die unter- schiedlichen Sende- und Empfangsfähigkeiten der vielfältigen Geräte berück- sichtigt. Es ist in der Lage, vollkommen transparent für die Anwendung die Geschwindigkeit der Verbindung optimal anzupassen. I Zuverlässigkeit. Jedes übertragene Byte wird mit einer Sequenznummer verse- hen. Dies ermöglicht eine Einordnung der übertragenen Daten in der richtigen Reihenfolge. Zusätzlich bestätigt der Empfänger mit dieser Nummer den Emp- fang der Daten. Stellt TCP fest, dass bestimmte Informationen nicht übertragen wurden, so werden sie transparent für die Anwendung automatisch erneut ge- sendet. Zusätzlich bietet TCP wie UDP einen Multiplexer, so dass mehrere Anwendungen auf einem Rechner gleichzeitig das TCP-Protokoll verwenden können. Hier werden ebenfalls Ports eingesetzt. Jede Anwendung muss vor der Verwendung des Proto- kolls einen derartigen Port reservieren.

C.4.1 Auf- und Abbau einer TCP-Verbindung Damit TCP die oben erwähnten Funktionen wahrnehmen kann, ist einiger Ver- waltungsaufwand erforderlich. TCP muss zunächst eine Verbindung öffnen. Hier- bei führen die beiden TCP-Kommunikationspartner eine Synchronisation ihrer Se- quenznummern durch. Anschließend können die Daten ausgetauscht werden. Nach der Verbindung sollte diese auch wieder korrekt abgebaut werden, so dass die bei- den Kommunikationspartner die Verwaltungsstrukturen wieder freigeben können. Die Abbildung C.5 zeigt schematisch den Auf- und Abbau einer TCP-Verbindung. Diese Abbildung führt bereits in einige Funktionen von TCP ein. Der TCP-Handshake beginnt zunächst mit einem so genannten SYN-Paket. TCP besitzt sechs Bits im TCP-Header (s.u.), die die Funktion des TCP-Pakets bestim- men. Es handelt sich hierbei um die Bits SYN, FIN, ACK, RST, URG und PSH. Ein SYN-Paket ist ein Paket, bei dem die eigene Sequenznummer an den Kommuni- kationspartner übermittelt wird. Dies ist für die Synchronisation der Verbindung erforderlich. Der Kommunikationspartner erhält hiermit die Information, dass die Datenzählung mit dieser Sequenznummer beginnt. Jedes übertragene Byte besitzt eine eigene Sequenznummer. In diesem Beispiel überträgt der Client an den Server die Sequenznummer 1234. Diese initiale Sequenznummer wird für jede Verbindung neu bestimmt. Der Server beantwortet dieses Paket mit einem eigenen SYN/ACK-Paket. Das ACK- oder Acknowledge-Bit zeigt an, dass dieses Paket den Empfang von Daten bestä- tigt. Um der Gegenseite mitzuteilen, welche Daten bestätigt werden, übermittelt der Server eine Acknowledgement-Nummer: 1235. Diese Zahl definiert das nächste erwartete Byte von der Gegenstelle. Es entspricht also der Sequenznummer des letz-

609 open source library itl.Dhrwr i eunnme ih röt e letbsäitdsFIN. das ist bestätigt Bit Client Dieses Der über- erhöht. FIN. Daten nicht Bit keine Sequenznummer das werden die selbst Hierbei wird setzt schließen. Daher zu und mittelt. Verbindung Client bestä- die vom Hierzu Aufforderung, Empfang soll. die werden letzten beendet den Paket Verbindung er 6. die tigt dass im Server, Client der vom beschließt Nun erneut wird sendet Empfang und Der Daten errechnet Paket). dieser kann bestätigt. Pakets (5. Empfang Dies vierten Bytes den Paket). 396 und Server (4. seinerseits dritten der Server des bestätigt den Sequenznummern Anschließend an werden. der Bytes Differenz 67 der zunächst aus nun übermittelt Client werden. Der ausgetauscht kön- Server Nun und nicht. Client Sequenznummer Da zwischen seine bestätigt. er Daten erhöht Paket nen übermittelt, dritten ent- Daten im keine kann, Synchronisationsanfrage Client versenden diese der Client Daten der Richtungen wenn beide steht, Client in den die Vollduplex-Verbindung, er synchronisieren. Eine zu fordert Nummer Hiermit dieser seinerseits halb SYN-Bit. mit Server Seite einer gesetzten seine der von dem auf, jedoch spricht mit übermittelt Man Sequenznummer Paket worden. seine demselben geöffnet zwischen In Richtung Verbindung Verbindung. die einer ist offenen in Bestätigung Server dieser und Mit 1. Client plus Bytes empfangenen ten TCP-Handshake Der C.5: Abbildung 610 letServer Client SYN Seq=2345ACKAck=1235 FIN Seq=1301ACKAck=2742 FIN Seq=2741ACKAck=1302 Seq=2741 ACKAck=1302 Seq=1301 ACKAck=2742 Seq=2741 ACKAck=1302 Seq=1301 ACKAck=2346 Seq=1234 ACKAck=2346 SYN Seq=1234 Netzwerkgrundlagen C C.4 TCP library

Hiermit ist die Verbindung halb geschlossen. Um nun seine Richtung zu schließen, sendet der Client in demselben oder einem zusätzlichen Paket ebenfalls ein FIN an

den Server. Dieser bestätigt dieses FIN ebenfalls in einem letzten Paket, und die open source Verbindung ist in beiden Richtungen geschlossen.

C.4.2 TCP-Header Das TCP-Segment besteht ähnlich wie ein UDP-Datagramm aus einem Header und den Daten. Bevor nun das weitere Verhalten von TCP bezüglich der Flusskontrolle und der Zuverlässigkeit besprochen wird, soll kurz der TCP-Header mit seinen Informationen vorgestellt werden.

0163115 0

Quell-Port Ziel-Port 16 Bit 16 Bit

4 Byte

Sequenznummer 32 Bit

8 Byte

Acknowledgment-Nummer 16 Bit

12 Byte Header- U A P R S F Reserviert Fenstergröße Länge R C S S Y I 6 Bit 16 Bit 4 Bit G K H T N N 16 Byte

TCP-Prüfsumme Urgent-Zeiger 16 Bit 16 Bit

20 Byte

Optionen (wenn vorhanden)

Daten

Abbildung C.6: TCP-Header

Quell- und Zielport Die TCP-Ports werden vom TCP-Protokoll verwendet, um Multiplexer-Funktiona- lität zur Verfügung zu stellen. Das TCP-Protokoll ist hiermit in der Lage, mehrere Anwendungen gleichzeitig zu unterstützen. Hierzu bindet sich eine Anwendung

611 open source library mde ohzstlc uotmee,bsetdeMgihet ezgreoder verzögerte Möglichkeit, (s.u.). die versenden besteht zu Empfangs optimieren, des zu Bestätigungen zusätzlich selektive noch hat. dies 401, erhalten mit Um bereits dies ebenfalls Empfänger 201-400 der Absen- Daten bestätigt der die so Sendet er erneut, muss. da Absender 101-200 werden den Paket gesendet weist das verlo- erneut Dies anschließend Übertragung Paket 101. der zweite der und das 101 während dass 101, Paket 101, hin, zweite mit darauf das Empfänger der Geht Acknowledgement-Nummer antwortet 401. so einer und ren, mit 301 301-400, und 201, entsprechend 201-300 101, 101-200, Empfänger von 1-100, der Bytes den antwortet mit so Pakete vier Absender der kleineren Sendet einer mit der Bytes empfangen. Alle in bereits wird. die er wurden erwartet enthält Sequenznummer dass nächstes Acknowledgement-Nummer als Absender, Die Byte den empfangen. welches zu Information, an wer- Daten Information empfangen weitere Daten die ist, die Byte Lage Empfänger dem übertragene der in jedes übermittelt Maße, dem erhält den, In angesprochen, Sequenznummer. Sequenznummer eindeutige der eine bei bereits Wie Acknowledgement-Nummer 32-Bit-Zahl. eine ist Mitnick- Sequenznummer auch Die (siehe werden genutzt dies TCP-Protokoll die kann das so Möglichkeit, Angriff). auf vorherzusehen, die Angriffe nächsten Besteht gespoofte zur Sequenznummer werden. für Verbindung initiale ermittelt einer Die zufällig von (s.u.). Verbindung Sequenznummer Annahme Sequenznummer jede die diese für über Entscheidung über sollte die erfolgt und Daten Daten Reihen- der der Sequenznum- richtigen Zuordnung einer mit Die der Byte versehen. in übertragene mer jedes Daten wird die können, Kommunika- und zusammensetzen die folge bestätigen Damit Übertragung Daten. übertragenden diese zu tionspartner der Zustellung die garantiert TCP Sequenznummer der UDP). von der (s. wurden Zuordnung zugewiesen Jedoch fest Die Diensten willkürlich. 65.535. gewissen grundsätzlich Ports bis ist einige 0 IANA Applikationen von den Ports zu 65.536 Ports unterstützt TCP-Protokoll Anwendung Das dieser TCP-Protokoll lassen. das zukommen kann Daten ihre Anschließend spezifisch Port. einen an zunächst 612 die mal nur sondern (15 UDP, sein wie lang Pakets Byte des 60 Gesamtlänge er- die TCP-Header also 4 nicht ein trägt also mit Die Feld kann definiert Multiplikation Dieses an. Maximal TCP nach lang. Doppelworten 4). 5. Byte Feld Zahl in 20 dieses mindestens die Headers Wert immer mindestens des dem ist aus Länge TCP-Header sich Ein die mitteln. lässt gibt Bytes Feld in lange Länge Bit vier Dieses Header-Länge Netzwerkgrundlagen C C.4 TCP library

Länge des Headers. Die Gesamtlänge des Pakets lässt sich jedoch aus der Gesamt- länge des IP-Pakets minus der Länge des TCP-Headers ermitteln. open source Reservierte Bits Hierbei handelt es sich um sechs Bits, die bis vor kurzem keine weitere Verwen- dung hatten. Diese Bits mussten daher bisher gelöscht sein. Viele Firewalls und Intrusion-Detection-Systeme lösen bei einer Verwendung dieser Bits einen Alarm aus. Viele Werkzeuge zur Erkennung von Betriebssystemen nutzen diese Bits, um entfernte Systeme zu untersuchen. Unterschiedliche Betriebssysteme reagieren meist unterschiedlich, wenn diese Bits gesetzt sind. Seit einigen Jahren existieren jedoch Bemühungen, einige dieser Bits für die Explicit Congestion Notification (ECN) zu verwenden (RFC 3168). Hierbei handelt es sich um einen Mechanismus, bei dem die Kommunikationspartner eine Verstopfung des Internets im Vorfeld erkennen und die Übertragungsrate automatisch anpassen, um eine echte Verstopfung zu vermeiden. Da ECN sowohl den IP- als auch den TCP-Header betrifft, wird es in einem eigenen Abschnitt behandelt (C.5).

TCP-Flags Bei den TCP-Flags handelt es sich um sechs Bits. Diese Bits klassifizieren die über- tragenen Daten. Es sind nur sehr wenige Kombinationen dieser Bits in einem gülti- gen Paket erlaubt. Sie haben die folgenden Funktionen: I URG. Das URG-Bit (Urgent) wird verwendet, um der Gegenstelle mitzuteilen, dass das Paket wichtige Daten enthält, die sofort verarbeitet werden müssen. Um den Anteil der wichtigen Daten zu definieren, wird der Urgent-Zeiger verwen- det (s.u.). Ist das URG-Bit nicht gesetzt, so ist der Wert des Zeigers zu ignorieren. I ACK. Das ACK-Bit (Acknowledgement) wird verwendet, um den Empfang von Daten zu bestätigen. Jedes TCP-Segment einer Verbindung, außer dem ersten Segment und RST-Segmenten zum Abbruch einer Verbindung, muss dieses Bit gesetzt haben. I PSH. Das PSH-Bit (Push) kennzeichnet Segmente, die von der sendenden An- wendung »gedrückt« werden. Häufig müssen Anwendungen (z.B. telnet) nur sehr wenige Daten versenden. TCP würde zur Optimierung die Daten aber erst versenden, wenn ein komplettes Segment gefüllt wäre. Das PSH-Bit weist das TCP-Protokoll an, die Daten sofort zu versenden, da keine weiteren Daten in diesem Moment folgen. I RST. Das RST-Bit (Reset) wird nur verwendet, wenn ein Fehler in einer Verbin- dung aufgetreten ist oder wenn der Wunsch eines Verbindungsaufbaus abge- lehnt wird. I SYN. Das SYN-Bit (Synchronize) wird verwendet, um die eigene Sequenznum- mer zur Synchronisation an den Kommunikationspartner zu übermitteln. Dies

613 open source library aefitr efitriteeflsi e ae is obntoe uerkennen zu von Kombinationen Implementierungen diese Ältere auf). Fehler (Achtung: Lage, hier verwerfen der zu in sogar ebenfalls und ist Netfilter Paketfilters e edrzncs u ieBsäiugdee ae atn eo etr Daten muss weitere bevor so warten, ist, Daten dürfen. gefüllt dieser werden Bestätigung Empfangsfenster gesendet eine dieses auf dass zunächst Sender gesendet, der Daten viele so bis Wurden Fenster erlaubt Dies werden. Größe. verwendet Gbyte können groß Fenstergröße 1 der Hiermit Kbit zu Angabe verwenden. 64 die zu zu- für maximal existiert Scale-Option Bits ausreicht, Fenster Window 30 nicht das die Ring) Möglichkeit, kann Token (z.B. die Damit Netzwerke sätzlich Bit. einige des für 16 Empfangsspeichers dies verwendet. ist Da des TCP-Flusskontrolle werden. Feldes Größe der dieses von die Größe wird gibt Angabe Die Diese Window) an. (Receive Systems TCP-Fenster sendenden Das Fenstergröße 614 ver- Systeme Network-Intrusion-Detection- diese Wenn um verwirren. zu verwendet, Paketfilter Absender häufig zustandsorientierte oder Der sehr Systeme verworfen. wird Paket Eigenschaft das Diese wird ist, kontrollieren. gültig Fehlermeldung. Prüfsumme keinerlei nicht erhält diese Prüfsumme muss TCP- die die Empfänger muss Absender Wenn der Der und optional. nicht berechnen, und ein lang Prüfsumme Bit wird 16 ist Zusätzlich TCP-Prüfsumme 6) Die TCP-Segments. (TCP, des Protokoll das Daten und die IP-Adressen die enthält. auf der auch aufgenommen, sowohl mit als sich Pseudo-Header erstreckt Header Prüfsumme den Diese TCP-Prüfsumme. auf die speichert Feld Dieses TCP-Prüfsumme obntoe o Y/I,SNRToe S/I idjdc ih er- nicht Der sämtliche jedoch TCP-Flag-Kombinationen. sind üblicherweise fehlerhaften RST/FIN mit ermitteln Pakete oder Netzwerk-Intrusion-Detection-Systeme SYN/RST laubt. SYN/FIN, von kön- Bits Kombinationen vorkommen. weiteren TCP- ACK-Bit Die dem einen einer abbricht. mit das diese Paket Kombinationen RST-Paket, und in ein erste anzeigt nen und das TCP-Verbindung ist, einer gesetzt um in SYN-Bit sich Fehler das es lediglich zwei dem handelt Lediglich in haben. Hierbei Verbindung, gesetzt erlaubt. ACK-Bit sind das Ausnahmen TCP-Pakete alle müssen Grundsätzlich I eeze I-i s u nenrzvrafeatnVridn gültig. Verbindung mit aufgebauten Paket Verbin- zuvor Ein die einer FIN-Paket. ist, in einem Lage nur mit ist ebenfalls der FIN-Bit sie in gesetztem antwortet ebenfalls so Gegenseite beenden, zu die dung Wenn will. diesem beenden diese in nur darf FIN. SYN-Bit Das werden. (s.o.). gesetzt TCP-Handshakes Moment des während erfolgt a I-i Fns)wr eez,wn ieSiedrKommunikation der Seite eine wenn gesetzt, wird (Finish) FIN-Bit Das Unclean Netzwerkgrundlagen C MthdsLinux- des -Match Unclean wiesen C.4 TCP library suchen, den Zustand der Verbindung zu überwachen, aber nicht die Prüfsumme testen, so besteht die Möglichkeit, weitere Pakete (z.B. RST-Pakete) einzuschleu-

sen, die vom NIDS oder vom Paketfilter als gültige Pakete akzeptiert werden (und open source scheinbar die Verbindung abbrechen), aber vom echten Empfänger verworfen wer- den.

Urgent-Zeiger TCP ist in der Lage, bestimmte Teile der Nachricht als wichtig zu kennzeichnen. Hierzu wird das URG-Flag in den TCP-Flags gesetzt. Zusätzlich wird der Urgent- Zeiger gesetzt. Der Urgent-Zeiger (oder Pointer) zeigt auf das Ende der wichtigen Informationen im aktuellen Segment. Pakete, die das URG-Bit gesetzt haben, müssen vom Empfänger sofort bearbeitet werden. Dieses Paket sollte Vorrang vor allen weiteren Paketen in der Empfangs- warteschlange haben. Wenn der Urgent-Zeiger gesetzt, das URG-Bit jedoch gelöscht ist, muss das Paket wie ein normales Paket behandelt werden.

Optionen Die bisher im TCP-Header spezifizierten Angaben genügen für eine erfolgreiche TCP-Verbindung. Jedoch werden häufig zusätzliche Optionen genutzt, um eine An- passung der Eigenschaften zu ermöglichen. TCP unterstützt die folgenden neun Optionen: I End of Option List. Diese Option markiert das Ende der Optionen im TCP- Header. Die Option ist acht Bit lang und hat den Typ 0. I No Operation. Diese Option wird verwendet, um Bereiche zwischen den TCP- Optionen aufzufüllen. Es ist sinnvoll, dass einige Optionen auf einer 32-Bit- Grenze beginnen. Dann wird der Bereich zwischen diesen Optionen mit NOP aufgefüllt. NOP ist acht Bit lang und vom Typ 1. I Maximum Segment Size. Die Maximum Segment Size (MSS) wird von den End- punkten verwendet, um die Gegenseite über ihre MTUMaximum Transmission Unit (Maximum Transmission Unit) beziehungsweise MRU (Maximum Receive Unit) zu informieren. Diese Funktion kann auch von Routern gesetzt werden. Netfilter besitzt zum Beispiel eine TCPMSS-Funktion. Dieser Austausch erfolgt lediglich bei der Synchronisation der Verbindung. Die MSS ist üblicherweise gleich der MTU minus 40 Bytes. Es handelt sich um eine Option von 32 Bit Länge und Typ 2. Wird keine MSS an- gegeben, so verlangt RFC 1122, dass als MSS 536 (IP-Default-Größe 576 - Header 40) verwendet wird. I Window Scale. Hiermit ist es möglich, größere Empfangsfenster anzugeben als die üblichen 64 Kbyte. Maximal sind Fenster in der Größenordnung von 1 Gbyte möglich. Diese Option von Typ 3 ist drei Byte lang. Das dritte Byte definiert

615 open source library ese ekenr.Ite ndrLg,deDtnshelz eabie,s aner kann selbst so Netzwerk verarbeiten, das durch zu Empfangs- noch schnell nur sein Daten Geschwindigkeit er die die kann dass Lage, vergrößern, so der derart in Daten, es Benötigt er der dar. Ist Verarbeitung Flusskontrolle verkleinern. zur fenster gesteuerte Zeit Empfänger mehr vom Empfänger rein der eine jedoch stellt Dies reibungsärmerer bereits wesentlich der möglich. ein Bestätigung Daten ist eine der Hierdurch Austausch er erwartet. da Kürze dennoch versenden, in dann zu Pakete gesendeten Pakete es weitere erlaubt einige Windows) Sender, dem Receive die (Sliding als auf Empfangsschiebefenster warten. Daten zunächst Das Verarbeitung mehr der Sender nicht im und der darf Empfangs er des muss Sender Bestätigung die Der Anschließend eine Datenmenge, ist. übertragen. maximale Lage Menge der die vorgeschriebene in Paket verarbeiten Dazu jedem zu anpasst. in Moment Sizing) Empfänger Window der (Receive Ge- übermittelt Empfangsfenster die Empfänger sein der über dass geschaffen, schwindigkeit Möglichkeit die wird hierzu Senderate wurde Ursprünglich Die Abständen versenden. regelmäßigen TCP-Segmenten in angepasst. in wird ständig Sendepuffers hierbei TCP Sendepuffer. dieses einen Daten in so die Daten versendet, Daten die TCP-Protokolls sie des schreibt Verwendung unter Anwendung eine Wenn TCP von Eigenschaften Flusskontrolle Fortgeschrittene C.4.3 616 I I I is pindr njdmTPSgetvredtwerden. verwendet TCP-Segment jedem in Paket. darf jedem Option zehn in Diese von Endpunkte Länge beider einer Zeitstempel mit die Option enthält Diese Byte messen. zu kontinuierlich Latenzzeit die is pindr njdmTPSgetvredtwerden. verwendet TCP-Segment jedem in feh- darf ein Option exakt Diese Lage, der mitzuteilen. in Absender diskontinuierlichen Empfänger empfangenen dem bereits der Segmente die ist und Länge nachzufordern Segment variablen lendes einer und 5 Typ Timestamp. Option dem er dieser kann Datenstroms Mit hat, ununterbrochenen mitteilen. erhalten Pakete nicht eines weitere Absender Byte bereits Empfänger letzte Normalerweise der das bestätigen. Dass bestätigen. nur zu Empfänger Daten der von kann Strom unterbrochenen einen lichkeit, Data. ignoriert. Acknowledgment sie Selective wird Später werden. ausgetauscht TCP-Segmenten beiden Option Die Permitted einigen. darauf edgment sich Endpunkte beide müssen An- sind, Permitted. werden. Acknowledgment ausgetauscht Paketen Selective ersten ignoriert. beiden sie den wird in sonsten Scale- Window lediglich Die darf Empfangsfensters. angegebenen Option Header im des Maßstab den i Option Die o y s 6Btln.Sems bnal ndnersten den in ebenfalls muss Sie lang. Bit 16 ist 4 Typ vom Timestamp iri eth ü e mfne i Mög- die Empfänger den für besteht Hiermit o y rab e ednEndpunkten, beiden den erlaubt 8 Typ vom eo eetv ettgne erlaubt Bestätigungen selektive Bevor eetv cnwegetData Acknowledgment Selective Netzwerkgrundlagen C eetv Acknowl- Selective vom C.4 TCP library gesteuert wird. Dies reicht jedoch nicht aus. Es ist auch eine durch den Sender ge- steuerte Flusskontrolle sinnvoll.

Die vom Sender gesteuerte Flusskontrolle verwendet ein Congestion Window (Ver- open source stopfungsfenster), den langsamen Start (Slow Start) und die Verstopfungsvermei- dung (Congestion Avoidance). Lediglich der Sender ist in der Lage, Verstopfungen zu erkennen. Hierzu existieren drei Möglichkeiten:

1. Der Sender erhält eine ICMP-Source-Quench-Meldung eines Routers. Dies zeigt an, dass der Router nicht in der Lage ist, die Pakete schnell genug zu verarbeiten.

2. Der Sender erhält mehrfache Acknowledgements mit identischer Acknowledg- ment-Nummer. Man bezeichnet diese auch als doppelte Acknowledgements. Der Empfänger sendet ein Acknowledgement, wenn er ein weiteres Paket er- hält. Wenn ihm jedoch ein Paket fehlt, so weisen alle diese Pakete dieselbe Acknowledgement-Nummer auf. Die Acknowledgement-Nummer zeigt das nächste vom Empfänger erwartete Datenbyte an! Daher sind für den Sender doppelte Acknowledgements ein Hinweis darauf, dass wahrscheinlich ein Paket zwischendurch verloren gegangen ist.

3. Der Sender erhält innerhalb einer bestimmten Zeit kein Acknowledgement (Acknowledgment Timer). Dies weist ebenfalls auf verloren gegangene Pakete hin.

Wenn nun der Sender weiterhin die Pakete mit gleicher Geschwindigkeit sendet, wird die Verstopfung bestehen bleiben und möglicherweise schlimmer werden. Es ist also erforderlich, dass der Sender reagiert und die Rate senkt, um die Verstop- fung zu beheben und schließlich den alten Paketdurchsatz wieder zu erreichen. Hierzu wird ein Congestion Window verwendet. Dieses definiert, wie viele Daten der Sender ohne eine Bestätigung der Gegenseite versenden darf. Zu Beginn weist dieses Fenster die gleiche Größe auf wie das Empfangsfenster (Receive Window). Dieses Fenster wird nun in Abhängigkeit von der Verstopfung reduziert. I Wurden mehr als drei doppelte Acknowledgements erkannt, so wird das Con- gestion Window halbiert. Anschließend wird die Congestion Avoidance akti- viert. Diese vergrößert das Fenster wieder in sehr kleinen Schritten. I Wurde eine Source-Quench-Meldung erhalten oder fehlen Acknowledgements, so wird das Fenster so stark reduziert, dass jeweils nur ein Segment gesendet werden kann. Anschließend wird der Slow Start aktiviert. Der Slow Start vergrößert das Congestion Window exponentiell. Würde das Con- gestion Window sofort wieder auf den Ausgangswert reinitialisiert, so würde die Verstopfung sofort wieder auftreten. Beim Slow Start wird das Congestion Window für jedes bestätigte Segment um ein weiteres Segment vergrößert. Diese Technik wird verwendet, wenn eine neue Verbindung aufgebaut wird und eine Verstop-

617 open source library umr etr emneslki ubestätigen. zu selektiv Segmente und weitere mithilfe erforderlich Nummern es nicht erlauben TCP-Option Acknowledgements jedoch Selective ist der Die dass Dies Bandbreite. dazu, werden. die häufig versendet beinträchtigt die führt erneut mehr- versendet, dieser Pakete fehlt 1072 dem Acknowledgement-Nummer sämtliche jedoch bei RFC dieselbe Empfängers, erhalten, des nur dem Segmente Verhalten fach zehn klassisches mit Ein bereits Segment. wurde Empfänger erste das der zu gehen, hat Acknowledgements) verloren Meist (Selective versenden. Bestätigungen Pakete selektive wenige geschaffen, Möglichkeit nur erneut häufig Zeitgebers Wur- entsprechenden Da des verarbeiten. Ablauf zu nach Daten Daten weitere versendet. diese be- ist, werden Acknowledgement-Nummer der Lage entsprechenden so Empfang der der stätigt, mit den in nicht bestätigt Daten er gesendete Empfänger dass den Der bestätigt, prüfen. und zu Emp- Daten Daten korrekten den gesendeten Absender, der dem fang es erlauben Acknowledgement-Nummern Die (Receive Empfänger Empfangsfenster der seinem entsprechen. die sollte Window) verarbeiten, vermeiden, Sequenznummern zu mit Empfang Pakete beim nur eine Pakete du- Um veraltete aufweisen. Erkennung durch Sequenznummern die Störung identische eindeu- auch diese eigene da erlauben seine Informationen, Sequenznummern plizierter besitzt Diese anderen Byte einer Sequenznummer. übertragene in richtigen tige Jedes möglicherweise der wurden. Daten in die erhalten Daten wenn Reihenfolge die auch verarbeiten, Empfänger, zu dem Reihenfolge es ermöglichen Daten. Sequenznummern der ver- Die Übertragung Prüfsumme fehlerfreie der die Ermittlung und garantiert zur TCP-Header Prüfsumme IP-Protokoll zum Diese das zusätzlich wendet. und sind werden IP-Adressen UDP die Hierbei Daten zu obligatorisch. zu Gegensatz jedoch Im TCP bei UDP-Prüfsummen. verwendet sie den erreichen, ähneln zu TCP-Prüfsummen Ziel Die dies dieses Zeitgeber. dass und Um Acknowledgement-Nummern handhaben, dupli- Sequenznummern, erfolgt. zu Prüfsummen, verloren, Anwendung so TCP beschädigt, wurden, die die übermittelt Daten, für Reihenfolge ist, transparent falscher Lage der in in oder TCP ziert dass verwendet verlangt, TCP 793 von RFC können. Mechanismen zu garantieren welche effizient werden, Da- dies beschrieben TCP-Protokolls. um werden, des kurz Eigenschaften hier wichtigsten soll der her eine ist Zuverlässigkeit Die Zuverlässigkeit Wurden Vergröße- dar. zur Windows Methode Congestion vorsichtigere des des langsamere Erreichen rung eine beim stellt jedoch Avoidance umgeschaltet. Congestion wird Avoidance Congestion Verstopfung auf einer Windows Congestion Falle maximalen Im halb ist. aufgetreten fung 618 eto idw esntwre,bsäit owr a ogsinWno um Window Congestion das wird so bestätigt, ein wurden, versandt Windows gestion emn vergrößert. Segment eetv Acknowledgement Selective rt ople Acknowledgement- doppelter trotz , alle aee i nehl ie Con- eines innerhalb die Pakete, Netzwerkgrundlagen C C.5 Explicit Congestion Notification library

Wenn der Datendurchsatz sehr hoch ist, ist es sinnvoller, nicht jedes Paket zu be- stätigen, sondern die Bestätigung verzögert zu versenden (Delayed Acknowledge-

ments). Hierbei wird nur der Empfang jedes zweiten oder dritten Pakets bestätigt. open source Dies stellt kein Problem dar, da ein Acknowledgement bedeutet, dass alle Daten bis zu dieser Acknowledgement-Nummer empfangen wurden.

C.5 Explicit Congestion Notification

TCP ist in der Lage, bereits sehr gut mit einer Netzwerkverstopfung umzugehen und trotz Verstopfung die Datenübertragung zuverlässig zu garantieren. Jedoch kann es weiterhin zu einer Verstopfung und damit auch zu einer Verzögerung der Übertragung kommen. Die Explicit Congestion Notification (ECN) versucht nun, dies zu verhindern, indem die Kommunikationspartner bereits vor dem Auftreten der Verstopfung gewarnt werden und dem Entstehen entgegenwirken können. Die Erweiterung des IP-Protokolls um die Explicit Congestion Notification wird in RFC 3168 beschrieben. Linux ist eines der ersten Betriebssysteme, die dieses RFC umgesetzt haben. Es beschreibt die notwendigen Modifikationen des IP- und des TCP-Protokolls zur Umsetzung von ECN. Die bisher besprochenen Verfahren des TCP-Protokolls zur Vermeidung einer Netz- werkverstopfung gehen davon aus, dass es sich beim Netzwerk um eine Black Box handelt. Das Netzwerk selbst ist nicht in der Lage, eine Verstopfung anzuzeigen. Die Verstopfung zeichnet sich dadurch aus, dass keine Pakete mehr transportiert werden. Moderne Netzwerke und ihre Komponenten sind jedoch wesentlich intelligenter und sehr wohl in der Lage, eine Verstopfung bereits in ihrem Entstehen zu er- kennen. Ein Router ist bei aktiver Verwaltung (Random Early Detection, RED) sei- ner Warteschlangen in der Lage, eine Verstopfung zu erkennen, bevor die Warte- schlange überläuft und der Router die Pakete verwerfen muss. Er ist in der Lage, diese Informationen an die Endpunkte einer Kommunikation zu übermitteln, wenn die Protokolle dies vorsehen und verstehen. Dies erfolgt durch die Angabe Con- gestion Experienced (CE). Damit dies möglich ist, müssen das IP-Protokoll und das Transport-Protokoll (TCP) dies auch unterstützen. Hierzu werden im IP-Header ein ECN-Feld und in dem TCP-Header zwei neue ECN-Flags definiert. Diese Definition erlaubt eine fließende Migration, da diese Felder von Systemen, die nicht ECN-fähig sind, ignoriert wer- den. Leider werden Pakete, die diese Felder verwenden, von vielen Firewalls und Network-Intrusion-Detection-Systemen noch als gefährlich eingestuft. Das ECN-Feld im IP-Header ist zwei Bits lang. Ist dieses Feld gelöscht, so ist der Absender des Pakets nicht ECN-fähig. Tragen die beiden Bits den Wert 01 oder 10, so ist der Absender des Pakets ECN-fähig. Trägt dieses Feld den Wert 11, so hat ein Router dies gesetzt, da er eine Congestion bemerkt hat: Congestion Experienced. Das ECN-Feld entspricht den bisher ungenutzten Bits 6 und 7 des Type-Of-Service-

619 open source library 4i C-edritdsENEh-i EE.DsCRBtitdsBt8i TCP- im 8 und Bit 13 das Bytes ist der CWR-Bit 9 Das Bit (ECE). Das ECN-Echo-Bit handelt Abbildung TCP-Header. das Header. Hierbei im ist realisiert. Bits TCP-Header Flags reservierte im neuen bisher 14 zwei zwei um mit sich TCP es in werden Fähigkeiten Congestion Diese das dass mitteilt, CE- Empfänger wurde. eines dem reduziert Absender Reduced Empfänger Window der Window der Congestion dem Endpunk- ein mit dem und (CWR-)Flag, beiden mit mitteilt, – Tatsache den erforderlich, diese zwischen Absender ECN-Echo dem ECN-Fähigkeit ein Pakets der handelt ist Hierbei Aushandlung Zusätzlich erforderlich. die ten. TCP um in ECN sich für es die Funktionalitäten drei sollten sind Anschließend Insgesamt austauschen. aushandeln. CE-Pakete zu- Endpunkte über Informationen muss der jeweils Dieses Endpunkte ECN-Fähigkeit Transport-Protokoll. das die durch nächst Unterstützung halbieren. wäre. Window eine Congestion gegangen benötigt das verloren ECN TCP-Protokoll Paket das das muss ob TCP als von verhalten, Falle so Im sich Endpunkt dieser muss e iu-enlbee i ölcki,deENFntoaiä i-oe abzu- oder ein- ECN-Funktionalität genügt: einzuschalten, die Funktionalität die Möglichkeit, Um die schalten. bietet ECN- Linux-Kernel der Der Austausch über- der TCP-Kommunikation Verbindungsaufbaus ist gesamte des überwachen. fehlerhaft während Detection die Informationen als sich Intrusion Wenn lässt grundsätzlich die wird, nicht sind. wacht Pakete Für einzustufen derartige 3168. gefährlich dass RFC und erkennen, im zu wichtig Sie nun werden. finden genutzt ECE-Bit ECN Informationen kann das Weitere Anschließend dem ist. bei gelöscht beantworten, CWR-Bit Rech- das TCP-SYN/ACK-Paket ECN-fähiger und einem Ein gesetzt mit sind. TCP- gesetzt dies ein CWR-Bit kann das nun und ner Rechner ECE- das ECN-fähiger dem ein bei SYN-Paket, sendet Verbindungsaufbaus des Während ECN-Header C.7: Abbildung dem bei Paket, Feldes. ein dieses 5 Endpunkt bis ein 0 Erhält Bits die die nutzen durch Diese nun ersetzt. wird Services Type-Of-Service-Feldes Differentiated des Verwendung ehemalige Die Feldes. 620 0. einer Zuweisung die über erfolgt Abschalten Das net.ipv4.tcp_ecn=1 -w sysctl # 4 Bit Länge Header- C.7 eg e eädre Header. veränderten den zeigt 4 Bit Reserviert R W C ogsinEprecd(CE) Experienced Congestion E C E G R U K C A H S P T S R Netzwerkgrundlagen C N Y S N I F eez s,so ist, gesetzt C.6 ICMP library

C.6 ICMP

IP ist ein Protokoll, das die Zustellung des Pakets nicht garantiert. Dies ist die Auf- open source gabe der höheren Protokolle. Diese müssen bei Verlust eines Pakets diesen bemer- ken und das Paket erneut senden. Jedoch können Situationen auftreten, in denen kein Paket zum Ziel übertragen wird. In diesem Fall sollte der Absender informiert werden, um dauernde Neuübertragungen zu vermeiden oder um die Pakete mo- difiziert zu versenden. Es ist die Aufgabe des Internet Control Message Protocol (ICMP, RFC 792, STD 5), diese Informationen zu übertragen.

Hinweis ICMP kann eingesetzt werden, um das Betriebssystem eines Rech- ners zu bestimmen. Ofir Arkin und Fyodor Yarochkin haben das Werkzeug X entwickelt, das mit einigen wenigen ICMP-Paketen und den Antworten ermitteln kann, mit welchem Betriebssystem es sich gerade unterhält. Das Werkzeug und Whitepapers sind ver- fügbar unter http://www.sys-security.com/html/projects/X.html.

ICMP ist das IP-Protokoll Nummer eins. Es wird in einem IP-Datagramm über- tragen. Der ICMP-Header besteht aus dem acht Bit langen ICMP Type-Feld, dem acht Bit langen ICMP Code-Feld und einer 16 Bit langen Prüfsumme. Anschließend können Daten in Abhängigkeit vom Typ und Code angehängt werden. Die folgenden ICMP-Typen und -Codes sind definiert:

Nachricht Type Code Echo reply 0 0 Destination unrechable 3 Network unreachable 3 0 Host unreachable 3 1 Protocol unreachable 3 2 Port unreachable 3 3 Fragmentation needed but DF set 3 4 Source route failed 3 5 Destination network unkown 3 6 Destination host unkown 3 7 Source host isolated (obsolete) 3 8 Destination network admin. prohibited 3 9 Destination host admin prohibited 3 10 Network unreachable for TOS 3 11 Host unreachable for TOS 3 12 Communication admin prohibited 3 13 Host precedence violation 3 14 Precedence cutoff in effect 3 15 Source quench 4 0

621 open source library e a ae ih etrsne an ae ü a äht ezekz groß Unit zu Transmission Maximum Netzwerk Path Fehlermeldung nächste der der das mit von für Netzwerks wird nächsten es Fehlermeldung des da Diese MTU übertragen. kann, die dann senden wird weiter Zusätzlich ist. nicht Paket das ter i Nachricht Die edt ene e ilehe ih rece an(..wi rasetltist). ausgestellt er weil (z.B. kann erreichen nicht Zielrechner den er wenn sendet, i äfise utpnsind: Subtypen häufigsten ist. Die erreichbar unter- nicht ICMP-Code den Empfänger über werden. der die 0 schieden Subtypen, dass ver- verschiedene verwendet mitzuteilen, wird Nachricht Sie Absender Diese ICMP-Nachrichten. dem wichtigsten 0 um der wendet, 0 eine ist 18 Unreachable Unreachable Destination Destination 0 17 C.6.1 14 werden. erläutert Weiteren 0 im sollen Nachrichten 13 dieser wichtigsten Die 0 16 0 12 15 11 0 0 8 reply mask (obsolete) request Address mask Address 10 reply 9 (obsolete) Information request 5 Information reply Timestamp request Timestamp problem Parameter exceeded Time solicitation Router advertisment Router request Echo Redirect 622 Unreachable Port i Meldung Die efitrkne oac ran edn asehugTPAfae i einem mit TCP-Anfragen Pa- häufig Einfache sie abzulehnen. da werden, Dienste erkannt und auch ICMP- Rechner Meldungen, so bestimmte diese können auf häufig ketfilter ebenfalls Zugriff verwenden einen Paketfilters um eines TCP). (siehe Form Reset-Paket in TCP Firewalls ein Zielrechner um der sich versendet es Handelt so anzusprechen. TCP-Dienst, Zielrechner einen dem auf UDP-Dienst existenten nicht a ilezekknt i Nachricht Die kennt. Zielnetzwerk das Phae a 20 12 1 12 0 1 1 3 11 0 11 missing 5 option bad 2 Required header 5 IP 5 reassembly during transit exceeded 5 during Time exceeded Time host and network TOS and for TOS Redirect for host Redirect for network Redirect for Redirect otUnreachable Port rgetto eddbtD-i set DF-Bit but Needed Fragmentation ewr Unreachable Network idvmZercnrvredt endsPktvruh,einen versucht, Paket das wenn verwendet, Zielrechner vom wird enwre.DsZesse ät i C-ee geschickt. TCP-Reset ein hätte Zielsystem Das beantworten. ewr Unreachable Network idvredt enenRue en ot für Route keine Router ein wenn versendet, wird otUnreachable Host , otUnreachable Host idvredt enenRou- ein wenn verwendet, wird idvmlttnRue ver- Router letzten vom wird Netzwerkgrundlagen C und otUnreachable Port . C.6 ICMP library

Discovery (Path MTU Discovery) eingesetzt. Hierbei versucht das Betriebssystem, eine Fragmentierung der Pakete zu vermeiden, indem es zunächst die MTUMa-

ximum Transmission Unit für den gesamten Pfad ermittelt. Anschließende Pakete open source werden dann mit dieser PMTU versandt. Damit der Empfänger der Fehlermeldung Destination Unreachable erfährt, auf welches Paket sich die Fehlermeldung bezieht, enthält diese den IP-Header des originalen Pakets mit den ersten acht folgenden Bytes des Pakets. Dies erlaubt eine eindeutige Zuordnung des Pakets durch den Empfänger.

Achtung Viele Paketfilter erlauben die Definition einer Network Address Translation. Das bedeutet, dass die Adressen der Pakete im IP- Header modifiziert werden. Einige Paketfilter kontrollieren jedoch nicht die IP-Adressen, die im IP-Header enthalten sind, der in der ICMP-Meldung eingebettet ist. So können private IP-Adressen nach außen gelangen!

C.6.2 Source Quench Dies ist eine sehr einfache Fehlermeldung. Mit ihr teilt der Absender mit, dass er die Pakete nicht schnell genug verarbeiten kann und einige Pakete verwerfen muss. Diese Meldung wurde früher auch von Routern versendet. Diese verwen- den jedoch heutzutage modernere Quality-of-Service-Funktionen. Source-Quench- Meldungen tauchen daher nur noch recht selten auf.

Achtung Source-Quench-Meldungen können für einen Denial-of-Service- Angriff genutzt werden, wenn sie geeignet gespooft werden.

C.6.3 Time Exceeded Die Time Exceeded-Meldungen werden in erster Linie heute vom Werkzeug trace- route verursacht. Dieses Werkzeug versendet Pakete mit steigendem Time To Live- (TTL-)Wert an den Empfänger. Die Router, über die die Pakete zum Ziel transpor- tiert werden, werden die entsprechenden Pakete verwerfen und Fehlermeldungen mit ihrer Absender-IP-Adresse zurücksenden. So kann der Weg des Pakets rekon- struiert werden. Es existieren zwei wesentliche Varianten des Programms Traceroute: traceroute (Unix) und tracert.exe (Microsoft Windows). Diese Programme versenden un-

623 open source library me riPkt i dnice T nennPr eedt ee a,wn das inkrementiert. wenn Port Mal, der Jedes auch gesendet. wird Port inkrementiert, einen TTL an die TTL Programm identischer mit Pakete drei immer is elredne ietihnrnc eäf o,wn aeemnelfeh- manuell Pakete wenn die vor, kommen werden. Da gehäuft konstruiert sind, noch verwendet. lerhaft ausgereift nur falsch eigentlich recht IP-Option Fehlermeldungen jedoch diese eine inzwischen wurde IP-Implementierungen Meistens meisten aufweist. Fehler selbst werden. ete is nomto ndnCin.DrsecetdeIfraini seinem in Befehl dem Information Router mit geeigneteren die Linux diesen unter speichert an kann direkt sich Der Routing-Cache Paket Der dass Client. nächste versenden. das fest, den wird übermit- stellt und an so ab und Information befindet, Routing-Cache Router Paket diese sämtli- geeigneter ein er und besser nun weiterer telt Router ein Router weiteren Netzwerk ein demselben alle Erhält in ihre Router Routen. können ein möglichen Router kennt che Protocol möchte. Hierdurch Information Routing austauschen. informieren dem (RIP) Pfad mit Absender kürzeren untereinander den dynamisch der einen Routing-Tabellen versendet, über Router Pakets einem eines von werden Redirect-Nachrichten Die Redirect C.6.4 traceroute Pakete. terschiedliche 624 gleichzeitiger mehrerer Pakete verwen- die wird um Identifikationsnummer Identifika- Die eindeutige det, Um eine Sequenznummer. sie Echo-Reply-Paket. eine enthalten und einem können, tionsnummer zu mit trennen Echo-Request-Paket voneinander Emp- Pakete Kommando jedes Der die ICMP-Echo-Request. vom auf den antwortet die Rechner ein fänger ICMP-Nachrichten, sendet die Hierbei werden. sind verwendet -Reply und Reply Echo-Request und Echo-Request C.6.6 Fehlermeldung Problem Die Parameter C.6.5 i ükafetdrPkt idgmse n neeg.DsUnix-Programm Das angezeigt. und gemessen TTL-Wert. wird den Pakete dann der inkrementiert Rücklaufzeit und TTL Die identischer mit Echo-Request-Pakete i eunnme idfrjdsvradePktikeetetudidentifiziert und inkrementiert Paket versandte jedes für wird Sequenznummer Die esne D-aeea i ot 33 f ire ednebenfalls werden Hierbei ff. 33434 Ports die an UDP-Pakete versendet Achtung e.UtrLnxkn i nam eatgrMlugnmtder mit Meldungen derartiger Annahme die Kernel-Variablen kann hervorru- Linux Misstrauen Unter starkes zu fen. Meldungen Router derartige sollten Routing-Protokolle um einsetzt, dynamischen keine Netzwerk werden, ein Wenn verwendet spoofen. können Redirect-Meldungen werden. aaee rbe ICMP Problem Parameter tracert.exe /proc/sys/net/ipv4/conf/*/accept_redirects esne ndeZe-PArsejwisdrei jeweils Ziel-IP-Adresse die an versendet idvredt endsIP-Datagramm das wenn versendet, wird ping Afuevniadrz trennen. zu voneinander -Aufrufe Netzwerkgrundlagen C ot -Cn route abgestellt betrachtet ping C.6 ICMP library die einzelnen Pakete. Dies erlaubt die eindeutige Zuordnung eines Reply-Pakets zu dem Request-Paket und die Ermittlung der Übertragungszeit.

Die meisten Implementierungen des ping-Kommandos erlauben es, die Anzahl der open source zu übertragenden Bytes und den Inhalt zu definieren. So kann unter Linux mit der Option -p ein Muster (Pattern) definiert und mit der Option -s die Größe angege- ben werden. Werden diese Informationen nicht modifiziert, so erlauben häufig die Größe und der Inhalt des Pakets einen Rückschluss auf das sendende Betriebssys- tem. Eine weitere Option, die vor allem in Unix-Implementierungen des Befehls existiert, ist -b. Diese erlaubt ein Broadcast-Ping. Hierbei werden die Echo-Request-Pakete an eine Broadcast-Adresse gesendet. Üblicherweise antworten sämtliche Unix- und Linux-Rechner auf eine derartige Anfrage. In der Vergangenheit konnten hiermit Denial-of-Service-Angriffe erzeugt werden. Der Angreifer spoofte ein Echo-Request- Paket und sendete es an eine Broadcast-Adresse. Sämtliche Rechner antworteten und schickten ihre Antwort an den gespooften Rechner. Wurden hierzu Netzwerke mit mehreren hundert Rechnern verwendet, konnte der gespoofte Rechner häufig überflutet werden. Heute existieren kaum noch Netzwerke, die diese Pakete, die an die Broadcast-Adresse gerichtet sind, hineinlassen. Dieser Angriff ist unter dem Namen SMURF berühmt geworden. Die Netzwerke bezeichnet man als SMURF- Amplifier-Netzwerk (Verstärker). Informationen hierzu finden Sie zum Beispiel un- ter http://www.powertech.no/smurf/. Ping-Pakete sind in modernen Netzwerken vollkommen normal. Das Vorkommen lediglich von Echo-Reply-Paketen sollte jedoch Ihre Aufmerksamkeit erregen. Hier- bei könnte es sich um einen Tunnel handeln.

C.6.7 Address Mask Request und Reply Diese beiden Nachrichten können verwendet werden, um die Subnetzmaske ei- nes Rechners zu ermitteln. Diese Nachrichten verwenden ähnlich dem Echo eine Identifikationsnummer und eine Sequenznummer, um die Nachrichten zuordnen zu können. Diese Anfragen werden häufig verwendet, um herauszufinden, ob ein bestimm- ter Rechner erreichbar ist und welche Adressmaske er verwendet. Leider existiert kein klassisches Kommandozeilenwerkzeug für die Erzeugung der Anfrage. Ein Werkzeug, das jedoch genutzt werden kann, ist icmpquery. Dieses Werkzeug ist un- ter http://www.angio.net/security/ erhältlich. Hiermit können Rechner erreicht werden, bei denen ein Ping durch eine Firewall blockiert wird. Linux reagiert auf einen Ad- dress Mask Request nicht.

C.6.8 Timestamp Request und Reply Diese Meldungen sind in der Lage, die Latenz des Netzwerks zu messen. Hierzu ist es jedoch erforderlich, dass sowohl der Absender als auch der Empfänger syn- chrone Uhrzeiten verwenden. Ähnlich den Echo-Meldungen und den Address-

625 open source library Moduls nrg ih er e iu-enl22batottdeeAnfrage. diese beantwortet 2.2 Linux-Kernel Der derartige mehr. eine nicht auf reagiert Anfrage 2.4 Linux-Kernel Der erwähnt. Address-Mask-Meldungen wshnepihr.DsVratndsAPCce idutrLnxüe das über ARP-Cache Linux einem unter in wird Rechnern ARP-Caches den des nur von Verhalten werden aber Das Anfragen antwortet Ethernet-Broadcast- zwischengespeichert. dieser Es die Ergebnisse Paket. ist Die besitzt. das IP-Adresse Dies verarbeiten richtige die Netzes ff:ff:ff:ff:ff:ff. der Rechner, Die des daher derjenige versandt. Rechner Netzes ist Alle eines Pakets Adresse. Rechner des alle an Zieladresse üblicherweise IP-Paketen. von werden unabhängig Schicht, also ARP-Anfragen dieselbe sind ist ARP-Pakete wird. Das genutzt versendet. IP-Paketen von Data-Link-Schicht die der auf (ARP werden Antwort ARP-Pakete einer mit Gegenstelle entsprechenden wird. Re- der beantwortet (ARP von Reply) Anfrage die eine senden, Netzwerkgerät, anderen zu meisten einem quest) die erlaubt auf Es dieser inzwischen portiert. wurde anhand Pro- Netzwerkmedien Protokoll Resolution sondern Dieses Address entwickelt. das IP-Adressen, (ARP) wurde tocol der Ethernet Medium Basis das tatsächliche Für auf Die Hardware-Adressen. austauschen. nicht Hardware-Adressen erfolgt ihre möch- unterhalten zunächst Kommunikation Netz sie lokalen müssen einem so in ten, sich Netzwerkgeräte IP-fähige zwei ARP Wenn C.7 Router- Aufforderung ohne Unicast- regelmäßig einem 224.0.0.1. Router Adresse mit die Anfragen an die an diese Advertisement-Meldungen versenden entweder die auf Zusätzlich diese antworten oder Router Paket. wird Alle 255.255.255.255 erhalten, gesendet. Router-Advertisement-Nachricht. 224.0.0.2 Solicitation-Nachricht einer Broadcast-Adresse Router die mit weiteren die Router antworten Alle alle Router-Solicitation-Meldung. Netzwerk Damit eine einge- demselben es unterstützt, in Router-Discovery-Protokoll sendet das wird, das schaltet Netzwerkgerät, Advertisement ein und Solicitation Wenn Router C.6.9 ist das erzeugen, Werkzeug, zu Ein Meldungen können. diese zu ist, zuordnen Lage Identifikationsnummer der Pakete in die eine um auch Sequenznummer, eine Meldungen und diese verwenden Mask-Meldungen 626 192.168.0.101 who-has arp 42: arp Broadcast eth1 0:10:a4:c3:26:cb on 15:22:23.374171 listening tcpdump: # sysctl anmtdmBefehl dem mit kann el12180221:22.7650e:d7:06 :0a:32:ap60:cb 0:e0:7d:7d:70:69 arp is-at 0:10:a4:c3:26: 192.168.0.101 0:e0:7d:7d:70:69 reply 15:22:23.374625 arp 192.168.0.202 tell arp -np tcpdump Itraein -Interface r (7) arp itnhr ukntüe i et.DrIhl e ARP-Caches des Inhalt Der Werte. die über Auskunft nähere gibt /proc/sys/net/ipv4/neigh/*/ arp neeg werden: angezeigt etur.DeMnaedsARP-Kernel- des Manpage Die gesteuert. icmpquery All-Routers .Eswurdebereitsbeiden Netzwerkgrundlagen C -Multicast-Adresse C.7 ARP library

Ctrl-C # arp -an

? (192.168.0.1) auf 00:50:BF:11:23:DF [ether] auf eth1 open source ? (192.168.0.101) auf 00:E0:7D:7D:70:69 [ether] auf eth1

Der Linux-Kernel kann maximal 1024 Einträge in seinem Cache verwalten.

Hinweis: ARP-Spoofing ARP führt keine Authentifizierung durch. ARP-Antworten können daher gefälscht werden. Viele Betriebssysteme verarbeiten alle ARP- Antworten, die sie sehen, ohne dass sie jemals eine ARP-Anfrage gesendet hätten. Des Weiteren gibt es die Möglichkeit des so ge- nannten Gratuitous ARP. Hierbei aktualisiert der Empfänger einen bereits vorhandenen Eintrag.

627

1] an David: Kahn, [13]. 1] idbad,Rl,PtikB Koetter: B. Patrick Ralf, Hildebrandt, [12]. A.: Eric Hall, [11]. 1] rel efe E.F.: Jeffrey Friedl, [10]. Literaturverzeichnis 9.Eiko,Jn Hacking: Jon: Erickson, [9]. 4.Bra Scot: Barman [4]. Gurly: Rebecca Bace, [3]. Anonymous: [2]. Anonymous: [1]. 8.Cvla,Seai,BueDdo,AjnK esr,Wle ie,Pe- Lioen, Walter Lenstra, K. Arjen Dodson, Tsu- Bruce Schneier, Stefania, Bruce Cavallar, [8]. Rivest, I. Ronald Diffie, Whitfield Matt, Blaze, [7]. Cheswick: Steven William, Bellovin, [6]. Silverman: E. Richard J., Daniel Barrett, [5]. cutrIc 1997. Inc. Schuster .. ’ely2000. O’Reilly u.a.: 2003. 2001. 2001. Markt+Technik e .Mngmr,BinMrh,Hra eRee ae adl Jeff Aardal, al.: Karen et Riele, Leyland, ftp://ftp.gage.polytechnique.fr/pub/publications/jma/rsa-155.ps te modulu Paul Herman Security Guillerm, RSA Murphy, Commercial Gérard Brian Gilchrist, Montgomery, Adequate L. ter Proved to Wiener: Ciphers Michael http://www.counterpane.com/keylength.html Symmetric Thomson, Eric of Shimomura, tomu 1995. Addison-Wesley u.a.: Bonn Aufl. arbeitete Handbuch 2002. Riders .Afl ön ’ely2001. O’Reilly Köln: Aufl. 1. . .I:Ter n plcto fCytgahcTechniques, Cryptographic of Application and Theory In: s. e eeLnxHce’ Guide Hacker’s Linux neue Der rtn nomto euiyPolicies Security Information Writing nentCr rtcl:TeDfiiieGuide Definitive The Protocols: Core Internet DerneueHacker’sGuide h Codebreakers The euäeAusdrücke Reguläre nrso Detection Intrusion h r fExploitation of Art The . brrett u.NwYr:Smn& Simon York: New Aufl. überarbeitete 2., . ieal n ihreti Internet im Sicherheit und Firewalls Postfix .Afl ön ’ely1997. O’Reilly Köln: Aufl. 1. . .Afl ninpls erdr 2000. Newriders Indianapolis: Aufl. 1. . . brrett u.München: Aufl. überarbeitete 2., . S:Scr hl i umfassendes Ein – Shell Secure SSH: .1.Aufl.München:Markt+Technik edleg pntVra 2005. Verlag Dpunkt Heidelberg: . a rnic:N trhPress Starch No Francisco: San . .Afl ninpls New Indianapolis: Aufl. 1. . atrsto fa512-bit a of Factorisation . iia e Length Key Minimal .1.Aufl.Sebastopol .2.,über- 1996. .

open source library open source library 1] li,Tobias: Klein, [14]. 2] h oentProject: Honeynet The [23]. E.: Paul Proctor, [22]. Novak: Judy Stephen, Northcutt, [21]. Scambray: Joel McClure, Stuart George, Kurtz, [15]. 2] oe,Bob: Toxen, [24]. Frederick: Karen Fearnow, Matt Cooper, Mark Stephen, Northcutt, [20]. Mitchell: L. Ellen Scott, Mann, [19]. Alistair: MacDonald, [17]. Verheul: R. Eric K., Arjen Lenstra, [16]. 1] ada ei,CrsProsise: Chris Kevin, Mandia, [18]. 2] cut,E uee usl Shumway: Russell Eugene, E. Schultz, [26]. Bruce: Schneier, [25]. 2] pneeg Ralf: Spenneberg, [27]. 3] tl,Clifford: Stoll, [30]. Richard: W. Stevens, [29]. Ralf: Spenneberg, [28]. 3] ige,Rbr L.: Robert Ziegler, [32]. Forno: Richard van, R. Kenneth Wyk, [31]. 630 adeRvr rnieHl T 2001. PTR Hall Prentice River: Saddle 2003. Verlag Dpunkt e 2002. ley Handbook Analysis. and Signatures 2002. Hall Prentice River: 2001. Hill Osborne/McGraw u.a.: York New Aufl. 255-293. S. 2001. 14(4) Bd. Cryptology. of 2001. MITP Bonn: onWly&Sn 1995. Sons & Wiley John 2001. Hall e ies2001. Riders New ely1994. Wesley 2004. Addison-Wesley ehi elg2002. Verlag Technik 2001. O’Reilly 1998. lag .Afl ninpls e ies 01 SN0-7357-1008-2 ISBN 2001; Riders; New Indianapolis: Aufl. 2. . elWrdLnxSecurity Linux World Real Kuckucksei ufrOeflw n Format-String-Schwachstellen und Overflows Buffer ple Cryptography Applied nrso eeto n rvninmtSotudCo und Snort mit Prevention und Detection Intrusion P i Linux mit VPN h rcia nrso eeto Handbook Detection Intrusion Practical The iu Firewalls Linux SpamAssassin C/PIllustrated TCP/IP nwYu Enemy Your Know .Afl ninpls e ies2001. Riders New Indianapolis: Aufl. 1. .Afl rnfr mMi:FshrTaschenbuchver- Fischer Main: am Frankfurt Aufl. 5. . nietRsos:IvsiaigCmue Crime Computer Investigating Response: Incident iu ytmSecurity System Linux üce .. dio-ely2003. Addison-Wesley u.a.: München . üce .. dio-ely2005. Addison-Wesley u.a.: München . . brrett u.Mnhn Markt+ München: Aufl. überarbeitete 2., . eetn rporpi e Sizes Key Cryptographic Selecting ewr nrso eeto:A Analyst’s An Detection: Intrusion Network nietResponse Incident . brrett u.NwYr u.a.: York New Aufl. überarbeitete 2., . .1.Aufl.UpperSaddleRiver:Prentice d . .Afl edn .. Addison u.a.: Reading Aufl. 1. 1., Bd. . nietResponse. Incident .Afl edn .. dio Wes- Addison u.a.: Reading Aufl. 1. . a niHce Buch Anti-Hacker Das .1.Aufl.Sebastopolu.a.: .1.Aufl.UpperSaddle .Afl Indianapolis: Aufl. 1. Literaturverzeichnis .1.Aufl.Upper Heidelberg: . n Journal In: . onu.a.: Bonn . .3.Aufl. Intrusion .1. arp_ignore arp_filter arp_announce ARP ACK account ACCOUNT 2.6.14 Stichwortverzeichnis drs eouinProtocol Resolution Address accept_source_route accept_redirects ACCEPT -A A 26sec AH Network Automatic Maryland Advanced ADSL addrtype address-mask-request address-mask-reply lrirn,E-Mail Alarmierung, ah Angriffe Amavisd-New Amanda Firewall AltaVista ri,Ofir Arkin, Architektur Appletalk --append Antirez Application-Level-Gateway Spoofing Request Reply Cache icArchiver Disc epotrPortscan gespoofter SMURF Hijacking Session 363 84 siehe 498 106 560 359 380 339 395 , , , 543 uhniainHeader Authentication , 87 363 446 506 626 402 84 626 510 562 373 446 621 , 625 45 393 626 199 464 , , , 626 446 410 593 375 , , 446 395 375 siehe 39 , 379 570 135 , 258 64 570 516 Amanda , , 63 , 435 580 446 , , 580 517 43 , siehe 489 , 48 , 587 ARP enti,Dan Bernstein, Kette benutzerdefinierte M. Steven Bellovin, Bastille-Linux BASH Basel-2 Base64 Banner-Grabbing Bandbreitenkontrolle BALANCE Balabit B Frederick Avolio, Authentizität Header Authentication Daten von Ausspähen Audit --atomic-save. atomic-init. - - --atomic-file atomic-commit - - Authority Number Assigned arptables arpreply-target - - --arpreply-macarpreply --arp-ptype. arp-opcode. - - arp-mac-src - - arp-mac-dst. - - --arp-ip-src--arp-ip-dst.--arp-htype. ARPANET Bootvorgang bootp_relay BitTorrent Congestion Increase Binary Betriebssystem-Bestimmung onayChecking Boundary Bot-Netz 319 97 527 228 56 , 516 58 505 321 535 37 412 447 515 515 515 515 514 100 , 55 514 143 515 515 599 514 515 443 516 , 329 514 516 38 155 39 67 , 296 338 56 559 195 , 308 436 , 329 198 463 , 607

open source library open source library connbytes condition Team Report Emergency Computer comment Fred Dr. Cohen, CLUSTERIP Cluster CLOSE_WAIT CLOSE Routing Domain Internet Classless CLASSIFY PIX Cisco CIDR Chroot chkconfig R. William Cheswick, hc Point Check Club Computer Chaos C BSI Brouter uci Relay Curcuit ct_sync Cron-Daemon Crond Cracker Cookie CONTINUE Content-Filter conntrack Conntrack connrate connmark BROUTING udsm ü ihreti der in Sicherheit für Bundesamt Bugtraq Bufferoverflow Suite Security OSS BSI Broadcast CONNMARK connlimit Bridge 632 Tracking Connection oriainCenter Coordination siehe -Notation Ping -Proxy Informationstechnik 205 86 237 273 CIDR , 155 528 469 410 425 507 51 38 352 431 396 364 396 386 149 273 302 365 , 365 364 , 39 111 132 , , 296 217 , 477 508 508 375 39 516 581 , , , 86 42 , 594 377 148 252 370 , 490 410 , 57 375 , , , 42 370 51 517 359 517 , , , , 412 515 , 575 421 501 401 39 , , 52 352 420–422 606 siehe , 38 507 , BSI 523 , 481 destination - - Desktop-Firewall Renaud Deraison, Denial-of-Service --delete Defragmentierung oanNm System Name Domain DNSSEC --dport Doppelwort DNS dnat DSCP DROP DNAT DMZDEV eal Policy Default Deep-Inspection DEC-SEAL Decoy-Scan DEC-LAT Debian DCF-77 dccp Datagramm Protocol Control Congestion Datagram DARPA -d -D D DMZ Discretionary-Access-Control Disaster-Recovery disable_xfrm disable_policy DiffServ-Code-Point Services Differentiated DHCP destination-unreachable yai otCngrto Protocol Configuration Host Dynamic destinationport - - destination-port - - Destination-NAT Destination-Header dst dscp Tunnel Server siehe siehe 86 87 86 , 516 365 365 99 , 44 359 131 84 303 589 dccp DHCP 377 , 220 242 , 89 37 87 103 , 46 524 , 140 , 510 , 186 187 , 377 524 39 , 315 412 337 , 308 606 601 171 447 176 , 86 , 83 447 199 , , 421 , , 368 418 42 , , 359 56 185 172 44 361 523 324 , 356 146 89 435 , 377 , , , 589 422 , 365 , 521 57 122 , 515 204 362 Stichwortverzeichnis , siehe siehe , 516 569–571 , 389 , 412 418 , DNS ECN , 435 162 415 , 623 , 625 Stichwortverzeichnis library

E Firewall-Markierung 369, 423, 458, 460, 566 Fli4L 144 Eastep, Tom 288 force_igmp_version 447 Ebtables 507 open source Formatstring-Angriff 57, 70, 76 ebtables 506 For-Schleife 182 Echo-Reply 117 FORWARD 82, 191, 203, echo-reply 570, 580 324, 421, 504, 505, 508 Echo-Request 117, 431 Forward Acknowledgment 437 echo-request 183, 570, 580 Forward RTO Recovery 438 ECN 132, 292, 366, 377, 421, 422, 437, Forwarding 94, 188, 302, 324 613, 619 forwarding 135, 447 Congestion Experienced 619 --fragment 360 eDonkey 532, 539, 541 fragmentation-needed 569, 571, 572 Einbruch 47 Fragmentierung 341, 435, 571, 602 ELSTER 529 FreeSwan 560 E-Mail 96, 546 FTP 43, 96, 116, 190, 367, 526, 537 -Relay 591 fuzzy 387 -Server 47, 187 Fwlogwatch 251 Encapsulated Security Payload 118, 335, 559 EpyLog 271 G ESP siehe Encapsulated Security Payload Gauntlet 39 esp 366 geoip 396 ESTABLISHED 93, 111, 117, 373, 401, 403, Geschwindigkeit 493 404, 410 Gnomemeeting 396, 555 /etc/hosts.deny 234 goto 396 Ethereal 320, 486, 527 GRE 118, 398, 545 Ethernet 501 grsecurity 74, 161 eui64 589 Grub 154 ExecShield 69 eXecute-Disable-Bit 69 expire 387 H Explicit Congestion Notification siehe ECN H.323 396, 555 Exploit 52 h323-conntrack-nat 396 EXTDEV 186 Hacker 51 Härtung 143 F hashlimit 366 Hashsize 405, 407 -f 360 hbh 589 Fail-Over 471 helper 367 Fe3d 349 HL 588 Fedora Core 228, 271, 274, 297, 507 hl 589 Fehler 319 Hochverfügbarkeit 375, 469 Fehlersuche 395 Honeynet Project 604 File Transfer Protocol siehe FTP Hop-by-Hop-Optionen 589 Filesharing 534 Hoplimit 589 Filter-Tabelle 82 Hot-Standby 469 FIN 410 hping2 339, 361 FIN_WAIT 410 HTTP 43, 121, 176, 526 Firestarter 283, 307 HTTPS 526 Firewalking 603 hunt 65 Firewall Builder 273, 298, 307 Hydra 351

633 open source library --init-table. Intrusion-Prevention-System in-interface - - IMAP icmpquery icmp_ratemask icmp_ratelimit icmp_ignore_bogus_error_messages icmp_errors_use_inbound_ifaddr icmp_echo_ignore_broadcasts icmp_echo_ignore_all Intrusion-Detection-System Internet-Group-Management-Protokoll Consortium Software Internet Chat Relay Internet Protocol Internet Protocol Access Message Internet Exchange Key Internet Integrität INTDEV IKE igmp_max_msf igmp_max_memberships IGMP IDS Idle-Scan identd icmp-type - - ICMP IANA -i I 634 INPUT 86 192 Type Request Timestamp Exceeded Time Quench Source Sequenznummer Solicitation Router Redirect Problem Parameter Identifikationsnummer Header Echo-Request Echo-Reply Unreachable Destination Code Request Mask Address siehe , siehe siehe , 360 n Advertisement und 401 118 551 siehe 241 96 IMAP 82 , 186 , Intrusion-Detection-System 621 nentKyExchange Key Internet 621 , 339 55 , 504 191 403 120 625 621 sindNme Authority Number Assigned 514 624 362 , 86 , , 431 541 569 432 624 421 432 , siehe 360 624 , , 617 623 siehe 604 505 , 624 430 504 IP , 559 624 , , 625 623 621 508 IRC , 432 515 624 625 626 42 622 165 , 431 242 48 , 431 165 431 , 432 ip_autoconfig ip6tables IP INVALID ip_conntrack_timeout_max_retrans ip_conntrack_tcp_timeout_time_wait ip_conntrack_tcp_timeout_syn_sent ip_conntrack_tcp_timeout_syn_recv ip_conntrack_tcp_timeout_max_retrans ip_conntrack_tcp_timeout_last_ack ip_conntrack_tcp_timeout_fin_wait ip_conntrack_tcp_timeout_established ip_conntrack_tcp_timeout_close_wait ip_conntrack_tcp_timeout_close ip_conntrack_tcp_max_retrans ip_conntrack_tcp_loose ip_conntrack_tcp_be_liberal ip_conntrack_sip ip_conntrack_proto_gre ip_conntrack_pptp ip_conntrack_max ip_conntrack_log_invalid ip_conntrack_irc ip_conntrack_icmp_timeout ip_conntrack_h323 ip_conntrack_generic_timeout ip_conntrack_ftp ip_conntrack_expect ip_conntrack_count ip_conntrack_buckets ip_conntrack_amanda ip_conntrack Type-of-Service Version Live To Time Prüfsumme Paketlänge Optionen MF-Bit Identifikationsnummer Header Fragment-Offset DF-Bit Adresse 600 TimeStamp Routing Source Strict Options Security Alert Router Route Record Operation No Routing Source Loose -Länge , 621 587 111 602 603 600 601 604 111 604 , , 433 601 373 602 622 604 , 549 116 557 603 115 , 405 555 545 606 402 602 407 603 606 , 430 , , 605 605 191 407 , 623 543 Stichwortverzeichnis 404 , 408 408 545 403 605 , 407 , 539 , 602 408 433 407 408 606 605 407 , 408 430 408 409 408 409 409 409 409 408 409 409 Stichwortverzeichnis library ip_conntrack_udp_timeout 410 ipv4options 388 ip_conntrack_udp_timeout_stream 410 IPV4OPTSSTRIP 421, 423 ip_default_ttl 134, 433 IPv6 241, 335, 587 ip_dynaddr 434 -Header 589 open source ip_echo_ignore_broadcasts 134 ipv6header 589 ip_forward 94, 134, 324, 434 IRC 419, 541, 548 ip_local_port_range 434 itunnel 581 ip_nat_amanda 543 ip_nat_ftp 191, 420, 540 J ip_nat_irc 549 ip_nat_pptp 546 -j 84 ip_nat_proto_gre 546 Jiffie 431 ip_nat_sip 557 --jump 84 ip_nat_snmp_basic 542 ip_nat_tftp 550 K ip_no_pmtu_disc 435 Kadlecsik, Jozsef 406 ip_nonlocal_bind 434 Kaminsky, Dan 525 ip_queue_vwmark 397 KaZaA 534, 539, 541 ip_tables_matches 430 Keepalive 438 ip_tables_names 430 KeepAlived 473 ip_tables_targets 430 Kleinrock, Leonard 37 IPchains 103, 105, 110, 115 KLIPS 560, 561 IPCop 144, 307, 318 Klogd 215, 218 - - ip-destination 516 Kollision 502 - - ip-destination-port 516 Krauz, Pavel 65 IP-Filter 42, 273, 406 Kwiatkowski, Michal 458 ipfrag_high_thresh 435 ipfrag_low_thresh 435 ipfrag_max_dist 435 L ipfrag_secret_interval 435 -L 86 ipfrag_time 435 l2drop 481 iphash 463, 465, 466 LAST_ACK 410 ipmap 462, 463 Lastverteilung 375 IPMARK 393, 421, 422 Latenzzeit 616 ipp2p 397 Layer-2-Drop 481, 483 IP-Personality Patch 331 Lebensdauer 387 ippool 505 length 368 ipporthash 463, 466 Libpcap 457 - - ip-protocol 516 Libsafe 70 iprange 368 Licklider, J.C.R. 37 IPS siehe Intrusion Prevention System LIDS 74, 161 IPsec 39, 296, 301, 308, 382, 397, 425, Lilo 154 448, 559 limit 366, 368 ipset 390, 461, 505 - - line-numbers 86 --ip-source 516 Linux-Virtual-Server 473 --ip-source-port 516 - - list 86 IP-Spoofing 431, 448 Loadbalancer 375 ipt_ULOG 452 LOG 136, 323, 377, 451 Iptables 81, 110 --log 516 --ip-tos 516 log_martians 135, 447 iptree 463, 466 --log-arp 516 IPTState 263 logger 219

635 open source library MARK aiu emn Size Segment Maximum MASQUERADE --mark-target--mark mark Mangle-Tabelle adtr cesControl Access Mandatory Mail-Routing Mafia medium_id MD5 Patrick McHardy, mc_forwarding Unit Transmission Maximum macipmap Named-Pipe -n N MTU Msyslogd MSS MRTG mport ors oetTappan Robert Morris, Mondo-Rescue ou,JfryC. Jeffrey Mogul, Mkcdrec Kevin Mitnick, Thomas Merrill, MAC-Adresse mac M fruits hanging low lokkit Logwatch --log-prefix log-level - - --log-ip Logical-Volume-Manager --logical-out--logical-in 636 MySQL multiport Multicast 575 615 regn e Datenbank der Erzeugung 86 369 siehe , , 226 369 siehe 54 297 397 607 623 269 132 516 219 516 , 145 606 , 370 aiu emn Size Segment Maximum siehe 271 516 , Maximum-Transmission-Unit 463 516 615 , 515 447 378 516 225 235 515 523 , 517 61 Syslogd 145 57 , 464 447 377 37 94 421–423 , , 41 501 566 612 , 50 , , 378 393–395 45 , 517 38 , , 361 412 566 146 161 , , , 373 415 421 380 225 , , , 380 504 572 , , 436 608 , , OSI-Modell osf OpenWRT OpenVPN Openswan OpenBSD -o O NVP numeric - - Nulog Null-Scan NuFW NTP nth nstx NSFNET NOTRACK Sled NOP No-eXecute-Bit NNTP nmap ewr ieProtocol Time Network Protocol Transfer News Network Protocol Control Network ewr drs Translation Address Translation Network Port and Address Network Netmeeting NCP Agency Security National NAT Nameserver Netfilter NETBEUI Nessus NDiff NETMAP nethash Nmap Nikto NFQUEUE Nfnetlink NFLOG nf-HiPAC NEW siehe 188 -Parser -Audit Tabelle 86 388 388 524 , 241 siehe 604 , siehe 93 360 352 345 105 412 63 270 554 NNTP 270 319 , 463 , 452 81 , , 37 111 315 , 489 242 378 506 336 140 ewr oto Protocol Control Network 68 493 , ewr drs Translation Address Network 504 296 343 86 , 149 560 347 504 94 379 , 397 132 599 396 350 323 , 465 , , , , , , 373 554 , 388 111 387 508 319 , , 69 , 542 379 555 524 , , , , 401–403 , 121 412 324 , 544 425 Stichwortverzeichnis , , , , siehe 377 416 351 604 38 37 , , , 411 , 422 NTP 623 537 43 , , 579 94 , 122 414 , Stichwortverzeichnis library

- - out-interface 86, 360, 504, 515 Post Office Protocol 3 siehe POP3 OUTPUT 82, 95, 111, 120, 121, 132, 411, Postfix 190, 591 421, 425, 505, 508, 517 Mail-Relay 190 Owner 178 PostgreSQL 219 open source owner 370 POSTROUTING 94, 121, 411, 421, 504, 508 owner-socketlookup 397 PPPoE 380 PPP-over-Ethernet siehe PPPoE P PPTP 118, 380, 382 pptp-conntrack-nat 398 -p 84, 359 Preboot Execution Environment 549 Paketfilter 41, 45 Prelude-IDS 70 parameter-problem 570, 578 PREROUTING 95, 111, 121, 132, 188, 377, passives Betriebssystem-Fingerprinting 388 379, 411, 421, 425, 504, 508, 516, 517 Patch-O-Matic 359, 374, 383, 392, 416, 419, private IP-Adressen 123 425, 461, 555, 566, 587 /proc 94, 427 Path Maximum Transmission Unit /proc/net/ip_conntrack 263 Discovery 435, 572, 623 promote_secondaries 448 Peer-to-Peer 397 ProPolice 69 PEO-Hash 219 --protocol 84, 359 Personal-Desktop-Firewall 283 protocol-unreachable 571 Phishing 54 Protokolle php-syslog-ng 235 Analyse 251 physdev 370 Verkettung 227 --physdev-in 504 Protokollierung 215, 235, 451 - - physdev-is-bridged 504 MySQL 235, 265, 456 - - physdev-is-in 504 PostgreSQL 235, 265, 457 - - physdev-is-out 504 SQLite 458 --physdev-out 504 Protokoll-Scan 335 Ping 84, 117, 428, 580 Protokollserver 215 Sweep 333 Proxy 42, 46, 119, 187, 188 ping 569 proxy_arp 448 Ping of Death 400, 603 ProxyARP 294, 447, 497 pkttables 489 psd 389 pkttype 370 ptrace 74 - - pkt-type 515, 516 PXE siehe Preboot Execution Environment Pluggable Authentication Modules 158 PMTUD siehe Path-Maximum- Q Transmission-Unit-Discovery Point-to-Point Tunneling Protocol 419 quake3-conntrack-nat 398 Point-to-Point-Protokoll 398, 544 Quality-of-Service 131, 602 Policy 199 QUEUE 379, 397 policy 397, 567 quota 390 pool 390 POP3 552 R Port Scan Attack Detector 160 Port-Forwarding 126, 415, 418 Race-Condition 57, 71 portmap 462, 463 random 390 Portscan 172 Random Early Detection 619 Detektor 389 Ranum, Marcus J. 38, 43 gespooft 63 Raptor Eagle 39 POSIX-ACLs 161 RAS 498 Post Office Protocol siehe POP3 Raw-Tabelle 132, 373, 379, 395, 425

637 open source library router-advertisment router-solicita8tion ROUTE van Guido Rooij, RIPEMD160 1918 RFC Reverse-Path-Filter RETURN Remote-Access-Service RELATED redirect-target - - redirect Redirect REJECT Brian Reid, Ausdruck regulärer Darren Reed, REDIRECT e Hat Red secure_redirects eueSce Layer Socket Secure RED recent realm eueShell Secure sctp Script-Kiddie Screening-Routers screend Schulung Scanulog Sarbanes-Oxley-Act Samhain SAME -s S Runlevel RTP rt RST rsh RSBAC RPM rpc rp_filter Routing-Header Protocol Information Routing router-solicitation Protocol Transport Time Real 638 Dienst 590 86 398 398 , 372 402 556 siehe 151 359 371 371 412 161 , 41 516 132 85 135 448 218 166 408 100 267 199 643 123 admEryDetection Early Random , , , 120 93 , 417 , 379 45 38 , 140 , 63 226 569 394 , , 448 , 220 52 42 111 516 413 , , , 88 , 412 448 590 199 517 , 421 406 , 228 570 , 45 191 578 448 , 530 , 56 224 569 526 , 418 379 , 423 , 274 , siehe 373 , , , 531 , 578 528 517 504 , , 297 RAS 401 , 551 624 siehe , , 308 404 , 554 RTP , , 643 569 SetUID- --set-mark SetGID set Protocol Initiation Session Sequenznummer send_redirects SELinux Acknowledgement Selective Specter Spanning-Tree-Protokoll Spam source-quench --sourceport oreRouting Source SMURF Host Silent SMTP Smoothwall sip SIP Single-Sign-On Single-Point-of-Failure Single-Point-of-Defense sing Simple-Network-Time-Protocol Protocol Management Network Simple Protocol Transport Mail Simple Shorewall shared_media SHA-1 Firewall SF Source-NAT --source oa Designer Solar Snort SNMP snat-target - - snat SNAT Smurf SOCKS Engineering Social SNTP 2 Snort siehe siehe siehe Strict Loose Angriff -Inline 390 399 556 516 579 315 53 241 541 134 380 420 SNTP SNMP SMTP 226 144 165 458 39 siehe , 144 74 , 86 606 592 , , , 605 , 287 389 379 , , 546 412 42 , 517 431 64 542 , 42 152 298 317 359 44 152 517 Angriffe 360 , , 448 , 448 569 298 339 , 389 537 414 417 , 122 , 59 515 362 , 57 , 307 , 106 412 Stichwortverzeichnis 45 77 , 503 , 413 48 siehe , 442 516 SIP Stichwortverzeichnis library

Spoofing 59, 218, 341 T ARP 59, 65, 627 talk-conntrack-nat 399 DNS 59 tar 164 open source IP 59 TARPIT 394 --sport 89 tc 421 Spyware 172 TCP 224, 228, 401, 604, 606, 608 SQL-Injektion 57, 75 Acknowledgment Timer 617 Squid 119, 419, 526 Acknowledgement-Nummer 612 --src 86 -ACK-Scan 337 SSH 176, 181 Congestion Window 617 SSL siehe Secure-Socket-Layer Congestion Avoidance 617, 618 Stackguard 69 Congestion Window 617, 620 star 164 Congestion Window Reduced 620 state 373 -Connect-Scan 326 Stateful Inspection 539, 545, 549, 550 ECN-Echo 620 Stealth-Scans 336 -FIN-Scan 336 Steuererklärung 529 Flag 613 STP siehe Spanning-Tree-Protokoll ACK 613, 620 Stratum-1-Server 242 FIN 614 Stream Control Transmission Protocol 372 PSH 613 string 373 RST 613 strongSwan 560 SYN 64, 613, 620 stunnel 223 URG 613, 615 Subversion 384 Flusskontrolle 616 sudo 153 -Handshake 609 SUSE 218, 220, 252, 274, 298 Header 611 SUSEfirewall2 298 Länge 612 Sweep-Scan 333 MRU 615 SYN 106, 402 Optionen 615 Cookies 59 End of Option List 615 Flood 58 MSS 615 RECV 410 No Operation 615 SENT 410 Selective Acknowledgment --syn 108, 361, 472 Data 616 SYN_SENT 116 Selective Acknowledgment SYN/ACK 402 Permitted 616 syncdev 481 Timestamp 616 SYN-Cookies 442 Window Scale 614, 616 sysctl 94 port 611 Syslog 137 Prüfsumme 614, 618 Syslogd 60, 215 Receive Window 614, 617 BSD 219, 220 Reno 444 -BSD-Syslogd 218 reservierte Bits 613 Modular Syslog 219 Reset 622 Msyslogd -Segmentation-Offload 443 PEO 226 Selective Acknowledgement 618 Secure Syslogd 219 Sequenznummer 65, 609, 612, 618 Syslog-ng 228 Slow Start 617 Syslog-ng 137 -SYN-Scan 328 system-config-securitylevel 297 -Timestamps 331 SysVInit 149 -Tuning-Guide 442

639 open source library tcp_timestamps tcp_syncookies tcp_synack_retries tcp_syn_retries tcp_stdurg tcp_sack tcp_rmem tcp_rfc1337 tcp_retries2 tcp_retries1 tcp_retrans_collapse tcp_reordering tcp_orphan_retries tcp_no_metrics_save tcp_moderate_rcvbuf tcp_mem tcp_max_tw_buckets tcp_max_syn_backlog tcp_max_orphans tcp_low_latency tcp_keepalive_intv tcp_frto tcp_fin_timeout tcp_fack tcp_ecn tcp_dsack tcp_congestion_control tcp_app_win tcp_adv_win_scale tcp_abort_on_overflow 640 TFTP Telnet TIME_WAIT time tcpmss TCPMSS --tcp-flags Tcpdump tcp_wmem tcp_window_scaling tcp_westwood tcp_vegas_* tcp_tw_* tcp_tso_win_divisor Urgent-Zeiger -Wrappers -Window-Tracking -Window-Scaling -Westwood Vollduplex -Vegas 390 549 530 373 135 438 437 442 380 444 439 319 437 436 444 442 361 , 445 441 441 441 444 437 116 436 , 158 445 441 441 610 135 443 445 332 438 439 , 264 439 615 , 442 440 438 436 , 442 443 441 443 445 440 439 , 445 440 439 409 406 436 436 , 410 , 441 , 444 Trojaner Protocol Transfer File Trivial Tripwire Transport-Modus rnpr ae Security Layer Transport Proxy transparenter rnmsinCnrlProtocol Control Transmission traceroute Traceroute TRACE tproxy TPROXY --to-sourcetos TOS Token-Ring TLS I Firewall-Toolkit TIS Time-to-Live timestamp-request timestamp-reply Timestamp time-exceeded User-Mode-Linux Protocol Datagram User USENIX unclean UNTRACKED Unix-Socket Unicast Ulogd ulog-acctd TTL ULOG Uhrzeit UDP u32 U Type-of-Service Tunnel-Modus ttl TTL TSIG orePort Source -Scan Prüfsumme Länge Header Port Destination 374 374 390 siehe siehe 421 132 60 524 270 136 399 , , 515 390 133 , 399 218 172 41 166 424 412 382 rnpr ae Security Layer Transport 332 Time-To-Live , 607 , 424 267 582 452 , 607 334 265 517 501 , 217 395 , , 132 224 , 419 421 570 111 , 569 563 , 607 608 , 132 267 , 572 , 570 425 , 382 563 , 228 90 , , 423 570 , 577 373 , 603 , , 399 39 607 374 270 , , 579 92 , Stichwortverzeichnis 433 401 , , 579 , , 402 , 623 siehe 205 421 547 289 , , 577 403 , , siehe UDP 551 382 , siehe 604 , TFTP 451 , TCP 606 , 452 Stichwortverzeichnis library

V Wesslowski, Boris 251 WLAN 438 -v 86 wrapper 229 Variable 91, 92, 322 open source Verbindungstabelle 42 --verbose 86 X Verfügbarkeit 55 X.509 526 Versionskontrollsystem 274 Xen 205 Vertraulichkeit 55 xinetd 148 Virenscanner 48 Xmas-Scan 336 Virtual Router Redundancy Protocol 473 XOR 395, 421, 424 Virus 51 Scanner 42 Vixie, Paul 38 Y VLAN 516 Yarochkin, Fyodor 621 VMware 205, 308 YaST 299 Voice over IP 556 -Online-Update 147 VoIP siehe Voice over IP VPN 544 Z

W Zeitsynchronisation 241 Zombie 339 War Dialing 57 ZORP 419 Webfwlog 265 Zorp 228 Webserver 187 Zustandstabelle 402 Welte, Harald 267, 452 Zwangstrennung 415

641

cuugbiimbsce öhe,kne i ihauf sich Sie können möchten, besuchen training.de ihm Informa- Homepage Weitere bei seiner entwickelt. Schulung VPN auf Deutschland und er Red in Firewalling für bietet Hat Themen er Red tionen den hat zu für Zusammenarbeit Kurse auch 2000 dieser zwei führt Rahmen Januar Hat Im und Seit durch. RHCX anzubieten. be- Schulungen und Unix England Anschließend RHCE und und als tätig. Linux zertifiziert Systemadministrator für er Schulungen als Studium ist 1998, dem Zeit bereits Nach und lange hat. er Kursen er gehalten gann Jahre verschiedenen war der aus Biochemie Laufe ist im der er Linux- Buch im die vorliegende Autor entstanden, und Das Workshops Berater tätig. Trainer, freier Unix-Umfeld als Jahren und vielen seit ist Spenneberg Ralf Autor den Über informieren. http://www.spenneberg.com http://www.opensource- n enSeeine Sie Wenn an.

open source library