Themenabend
Internet- und Linux-Sicherheit


Sascha Schneider, 30.05.2000






















1 Einführung

Man muß unterscheiden zwischen Problemen die die Privatsphäre betreffen und Problemen, die die Sicherheit eines Systems und der der darauf befindlichen Daten gefährden.

1.1 Begriffsklärung

Buffer-Overflow

Die meistgenutzte Attacke auf ein System, bzw einen Dienst auf demselben. Wird auch oft als die "Verwundbarkeit des Jahrhundert" bezeichnet. Eine BufferOverflow-Attacke wird ausgeführt, indem man einem Programm mehr Daten liefert, als der Programmierer vermutet hat. Hat dieser keine Überprüfung eingebaut, kann man mit geringer Mühe dem Programm eigene Befehle zum ausführen unterjubeln. Besonders schwerwiegend ist das bei Programmen, die unter Benutzer-ID 0 (root) laufen. Lässt man diese eine shell starten, liegt das gesamte System offen vor einem.

Weiterführende Informationen findet man in Aleph One's "Smashing The Stack For Fun And Profit"

DNS-Spoofing

DNS-Spoofing bezeichnet den Vorgang, einem Rechner einen falschen DNS-Eintrag unterzujubeln, so daß bei der Auflösung eines Maschinennames nach einer IP-Adresse eine falsche Adresse ausgegeben wird. Es gibt 2 grundlegende Vorgehensweisen, einmal jubelt man einem Nameserver eine falsche Zoneninformation unter, ein anderesmal fängt man eine Abfrage an den Nameserver ab, und gibt eine falsche Information zurück. Publikumswirksam wurde die erste Variante durchgeführt, als die Seite www.ImmobilienScout24.de auf eine amerikanische Sex-Seite gespooft wurde. Es kann allerdings auch weniger harmlos für eine Man-In-The-Middle Attacke eingesetzt werden.

DoS

Steht für Denial of Service - Eine Attacke, die das Ziel hat den angegriffenen Rechner oder Dienst nicht mehr benutzbar zu machen. Wird oft durch Überlastunbg des Rechners oder Dienstes oder Ausnutzung von Sicherheitslücken die nicht zur Komprimitierung des gesamten Systems führen durchgeführt.

DDoS

Distributed Denial of Service Attacke. Berühmt geworden durch die Angriffe auf große kommerzielle Anbieter, wie z.B. Yahoo.com oder Amazon.com. Hierbei greifen viele Rechner, die quer über das Internet verteilt sind gemeinsam einen einzelnen Rechner an. Diese werden dabei durch ein Tool wie Stacheldraht und TribeFloodNetwork gesteuert. DDoS-Attacken werden durchgeführt gegen Rechner mit zu großen Bandbreiten und Leistungsreserven, so daß ein Rechner alleine sie nicht bezwingen kann.

Exploits

Exploits sind Beispielprogramme, die das Ausnutzen (englisch: to exploit) von Sicherheitslücken vorführen. Exploits sind eine kontrovers diskutierte Sache, schliesslich erlauben sie einem nicht sonderlich fähigen Menschen das Ausnutzen von Sicherheitslücken. Andererseits erlauben sie Systemadministratoren das Überprüfen ihres Systems auf Sicherheitslücken. somit können sie ihre Arbeitskraft auf das Beheben des Fehlers/Problems verwenden, anstatt erst einen Exploit für jede bekannt gewordene Sicherheitslücke zu schreiben.
Exploits werden auch oft zu sogenannten Root Kits zusammengefasst.

Fingerabdruck

Ein Fingerabdruck existiert sowohl für den geheimen, als auch für den öffentlichen Schlüssel, und wird durch eine mathematisch nicht umkehrbare Funktion ermittelt. Durch den Vergleich des Fingerabdrucks lässt sich überprüfen, ob der Schlüssel echt ist.

Firewall

Als Firewall wird ein System bezeichnet, daß ein Netz von einem anderen trennt. Es gibt verschiedene Arten von Firewalls. Linux implementiert z.B. mit ipchains(8) oder ipfwadm(8) (ja nach Kernelversion) eine sogenannte Packet Filter Firewall, das heisst daß die einkommenden und ausgehenden Datenpakete nach vom Systemadministrator festgelegten Regeln filtert. Die Filterung wird z.B. nach Absender-IP und -Port, Empfänger-IP und -Port, sowie dem Pakettyp, und dem Netzwerk-Device durchgeführt.

Desweiteren gibt es sogenannte Statefull Packet Firewalls, diese analysieren nach ebenfalls vom Verwalter festgelegten Regeln die Verbindungen, und lassen z.B. nur Antworten auf vorher ausgegangene HTTP-Anfragen passieren. Hat man z.B. verboten, daß eine Telnetverbindung von aussen nach innen aufgebaut werden darf, überwacht die Firewall den Port, und reagiert auf Aufbauversuche. Diese Dynamik ist jedoch auch eine große Schwäche, weil man die Firewall mit sich selbst austricksen kann.

Als nächstes möchte ich noch die sogenannten Application Level Firewalls (auch Applikation Level Gateways genannt) erwähnen, das sind Firewalls, die Inhalte von Verbindungen filtern. Z.B. erkennen diese Firewalls aktive Inhalte wie ActiveX oder Java, und unterdrücken diese.

Eine schöne Einleitung findet man unter http://www2.little-idiot.de/firewall/.

GPG

GPG ist der Gnu Privacy Guard, und wird unter anderem von Peter Gerwinski mitentwickelt. Es ist ein freier, vom Bundes Wirtschaftsministerium unterstützer Ersatz für PGP, übertrifft es aber bei weitem.

IP-Spoofing

IP Spoofing bezeichnet den Vorgang einem System eine falsche IP-Adresse vorzuspiegeln. Angreifer benutzen es oft um portscans zu verstecken, indem sie nur die Absender-Adresse fälschen, und in dem Datenaufkommen die wirklichen Scan-Pakete zu verstecken. Fortgeschrittene Angreifer bringen einen Rechner in den Weg der Daten und geben sich durch die gefälschte Adresse als Zielsystem aus. Dies wird dann wiederum für eine Man-In-The-Middle Attacke eingesetzt.

MIM/MITM

Man In The Middle Attacken sind eine spezielle Art Proxy nur daß sie Daten verfälschen. Dies geht sowohl mit Datenverbindungen, als auch im Bereich der Kryptographie, indem dort ein Angreifer zwei Kommunikationspartner jeweils seine Schlüssel unterjubelt, und dann zwischendrin die Kommunikation verfälscht.

PGP

PGP ist ein Verschlüsselungsprogramm, das auf einem Public Key Verfahren basiert. Entwickelt wurde es von Philip Zimmerman, und ist mitlerweile ein kommerzielles Produkt, das jedoch für die private Nutzung umsonst ist. Da es jedoch nicht frei ist, empfehle ich die Nutzung von GPG.

Portscan

Ein Portscan ist ein Vorgang, bei dem alle Ports eines Systems systematisch überprüft werden, ob sie "offen" sind, d.h. ob dort ein Dienst sitzt, der auf eine Verbindung wartet. sogenannte Scanlogger können dies erkennen, und an den Systemverwalter melden. Es gibt viele verschiedene Arten von Portscans, die z.B. bei TCP den sogenannten XMas-Scan, dabei werden alle möglichen Flags in einem Datenpaket gesetzt, und gewartet wie der TCP-Stack des gescannten Systems darauf reagiert.

Portscanner

Portscanner wie NMAP oder SAINTsind sowohl Angriffs-, als auch Verteidigungs-Werkzeuge. Angriffs-Werkzeuge, weil man mit ihnen ein entferntes System auf eventuelle Sicherheitslöcher testen und damit einen Angriff vorbereiten kann. Verteidigungs-Werkzeuge sind sie, weil man damit eben auch sein eigenes System testen kann, und dort eventuelle Schwachpunkte finden und anschliessend beheben kann. Bei aktuellen Portscanner hat man die Möglichkeit das Timing der Pakete zu verändern und zu verlangsamen, so daß die meisten Scanlogger überhaupt nicht mehr mitbekommen, daß das System gescannt wird. Desweiteren können aktuelle Portscanner die richtigen Scanpakete zwischen welchen mit gefälschter Absender-IP verstecken, und dadurch den Scanversuch unkenntlich machen.

Proxy

Ein Proxy (engl. Proxy: Stellvertreter) ist ein System, daß Daten stellvertretend für das Zielsystem annimmt, und dann (unter Umständen) an das Zielsystem weiterleitet. Es gibt mehrere Arten von Proxies, die meistbenutzte Art ist ein HTTP und FTP-Proxy ala Squid, daß die Daten durch eine Firewall schleust, so daß man nur diesem einen Rechner (dem Proxy eben) eine direkte Verbindung ins Internet zugestehen muß. Zudem implementieren diese Systeme oft noch einen Cache, und sparen zusätzlich zu ihrer ursprünglichen Funktion auch noch Bandbreite. Proxies können auch dazu benutzt werden, um nur authorisierten Benutzern Zugriff auf das Internet zu erlauben, oder unerwünsche Inhalte wie z.B. Werbebanner draussen zu halten.

Public Key Verfahren

Ein Public Key Verfahren ist ein Verschlüsselungsverfahren, das einen öffentlichen und einen geheimen Schlüssel benutzt. Der öffentliche Schlüssel wird benutzt um z.B. eine Mail zu verschlüsseln, oder eine unterschriebene Mail zu verifizieren. Die Mail kann nur mit dem geheimen Schlüssel entschlüsselt werden, oder mit demselben signiert werden *.

Der Vorteil eines Public Key Verfahrens gegenüber einem "klassischen" Verfahren mit nur einem Schlüssel ist, daß man keinen sicheren Kanal braucht, um den Schlüssel auszutauschen. Seinen öffentlichen Schlüssel kann man beliebig verteilen, seine Echtheit lässt sich problemlos über den Fingerabdruck verifizieren. Dieses sollte man jedoch persönlich machen. Systeme die nach einem Public Key Verfahren arbeiten sind GPG und PGP. Informationen zum Thema Kryptographie findet man auf Bruce Schneier's Homepage, oder auf SecurityFocus.

Root Kits

Ein Root Kit ist eine Sammlung von Exploits für bekannte Probleme und verschiedene Systeme. Dies versetzt sogenannte Script Kiddies in die Lage ein System zu "knacken", ohne wirklich Ahnung von der Materie zu haben.

Scanlogger

Scanlogger wie der z.B. von SuSE mitgelieferte scanlogd oder Portsentry überwachen das System auf Anzeichen von Portscans, und melden diese an den Systemverwalter, oder nehmen für kurze Zeit das gesamte System vom Netz. Portscans zeichnen sich oft dadurch aus, daß viele Verbindungen in kurzer Zeit von demselben entfernten System zu (unter umständen) verschieden lokalen Ports aufgebaut werden. Es kann allerdings auch passieren, daß einer großer Massendownload per FTP als Portscan erkannt wird, weil dort ebenfalls viele Verbindgungen zum lokalen System aufgebaut werden.

Script Kiddies

Skript Kiddies sind Leute die mit Hilfe von anderen Leuten geschriebenen Tools (scripts) versuchen, DoS-Attacken zu fahren oder Systeme zu "knacken". Sie haben meist nicht das Wissen, solche Tools selbst zu schreiben, geschweige denn Sicherheitslücken selbst zu finden. .

Signatur

Wenn man eine Mail signiert, wird aus dem geheimen Sclüssel und der Mail eine Prüfsumme berechnet, die einem ermöglicht zu überprüfen, ob die Mail auf dem Transport verändert wurde. .

Sniffer

Ein Sniffer ist ein Programm, daß den Datenverkehr im Netzwerk analysiert, und den Inhalt anzeigen kann.

Es gibt sehr viele Programme dieser Art, und die meisten Distributionen liefern eine Fülle dieser Tools mit. Die beliebtesten sind meiner Meinung nach tcpdump, und Ethereal. .

SSH

Die Secure Shell ist ein Ersatz für telnet, rsh, rlogin und rcp. SSH implementiert in der unsichersten Stufe dieselbe Funktionalität wie rsh, und lässt sich genauso konfigurieren. In der sichersten Stufe, arbeitet ssh mit einer authentifizierung über ein Public Key Verfahren. So haben nur Leute Zugang zu dem Rechner, deren Public Key vorher in die Datei ~/.ssh/authorized_keys eingetragen wurde. In der mitleren Stufe, arbeitet das System mit normalen Passwörtern, genau wie telnet.

Die SSH ermöglicht auch die Erstellung eines Virtuellen Privaten Netzwerks (VPNs), indem man zwischen zwei Rechnern eine ssh-Verbindung erstellt, und dann darüber eine PPP-Verbindung aufbaut.

Stacheldraht und TFN

Stacheldraht und TribeFloodNetwork(TFN) sind Tools die ein hierarchisch organisiertes System von Angriffsrechnern koordinieren. Es gibt immer einen "Master", der das ganze System steuert, als nächste Stufe kommen die sogennanten Agents, die direkte Befehle vom Master erhalten, und an die schlußendlich eigentlichen Angriffsrechner weiterleiten. Die kommunikation zwischen den Rechnern ist schwer zu entdecken, da sie 1. verschlüsselt ist, 2. nur aus UDP-Paketen besteht, also keine Verbindung zwischen den Systemen aufgebaut wird, und 3. die Befehlsempfänger keine Rückmeldung geben. Ausmachen kann man sie nur, indem man alle offenen Ports des eigenen Systems überprüft (z.B. mit Portscannern wie NMAP), und nicht bekannte Ports mit dem Befehl fuser(1)
fuser -n udp <lokaler-Port>überprüft.

Virtuelle Private Netzwerke

Ein Virtuelles Privates Netzwerk (VPN) ist eine verschlüsselte Verbindung zwischen zwei Netzen. Man kann sie quer durch ganze Internet aufbauen, und spart sich so die Kosten sich z.b. aus dem Ausland ins heimische Firmennetz einwählen zu müssen. Microsofts VPN-Variante heisst Point-To-Point-Tunneling-Protocol (PPTP), für Linux gibt es sowohl PPTP-clients, als auch auf anderen Unixen gängige VPN-suiten wie z.B. FreeS/WAN.
Das ist nicht ganz korrekt, eigentlich werden die Schlüssel des Public Key Verfahrens dazu genutzt einen Schlüssel für ein klassisches, starkes Verfahren wie IDEA oder Blowfish auszuhandeln.

2. Mögliche Gefahren im WWW:

Ich habe die Gefahren die das WWW betreffen einmal von den Restlichen Sachen abgehoben, da ich mir denke, daß dies sehr viele interessieren wird.

Java

Java, eine Erfindung von Sun, ist sowohl ein handfestes Sicherheitsrisiko, als auch ein Problem der Privatsphäre. Java wird von einem sogenannten Java Runtime Environment auf dem lokalen System ausgeführt. Dieses JRE interpretiert den sogenannten Bytecode, und setzt ihn auf das lokale System und dessen Architektur um, so daß Java für jedes System verfügbar ist. Dabei läuft es der Java-Spezifikation entsprechend in einer sogenannten "sandbox", in der es sich theorethisch austoben kann, ohne dem System zu schaden. Leider hat es sich oft genug gezeigt, daß die Handhabung und Implementierung dieses Sandkastens schwierig ist, und viele Software-Häuser, darunter MicroSoft und Netscape überfordert. Jede ernstzunehmende Quelle für sicherheitsrelevante Informationen rät dazu es abzustellen, da sich immer neue Sicherheitslücken in den Browsern zeigen.

JavaScript

JavaScript ist eine Erfindung von Netscape, und ähnlich wie Microsoft's ActiveX eine (unter anderem auch multimediale) Erweiterung für HTML, und wird oft genutzt, um die Navigation einer Seite zu gestalten. Leider wurde dieses nicht auf Sicherheit konzipieren, und bietet ähnlich wie ActiveX vielfältige Möglichkeiten das lokale Dateisystem zu manipulieren. Aus diesem Grund sollte man JavaScript abschalten, und nur bei vertrauenswürdigen Sites zulassen. JS ist glücklicherweise, dank einer weniger perfekten Integration in das System, nicht so gefährlich wie ActiveX, was wohl auf die Verbreitung bzw. Integration in verschiedene Betriebssysteme zurückzuführen ist.

ActiveX

ActiveX ist eine Erfindung von Microsoft, um Webseiten multimedial zu erweitern. Wie wir unter anderem dank der Mithilfe des bulgarischen "Bugjägers" Georgi Guninski wissen, ist das leider alles andere als sicher, unter anderem kann man sogar per ActiveX/ActiveScripting auf den sogenannten Windows Scripting Host (WSH) zugreifen. ActiveX sollte man unter Windows auf alle fälle deaktivieren, bzw. sogar vermeiden den MS Internet Explorer zu verwenden. Glücklicherweise bleiben wir unter Linux von derartigen Auswüchsen verschont.

Cookies

Cookies sind ein reines Problem der Privatsphäre. Das heisst, es gibt (fast) keine Möglichkeit über Cookies irgendwelche Daten auszuspähen, zu verändern, oder gar das System zu schädigen. Cookies sind reine Textinformationen, die auf dem lokalen System (dem Client) hinterlegt wurden. Sie werden oft genutzt, um Voreinstellungen zu speichern, oder Informationen zu hinterlegen. Das ist auch genau das Problem, schliesslich kann man dadurch User jederzeit wiedererkennen, je nach Einstellung des Browsers und der Information in den Cookies sogar in der gesamten Domain, oder sogar überall.

Weitere Informationen findet man hier: http://developer.netscape.com:80/docs/manuals/communicator/jsguide4/cookies.htm

3. Vorsicht: Gefahr im Verzug

Ein Linux-System stellt einem viele Dienste zur Verfügung, die einem das Leben leichter machen sollen, ein Großteil davon ist jedoch aus sicherheitstechnischer Sicht ein Alptraum.

Als generelle Grundregel gilt: