Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Einführung
2 Mathematische und technische Grundlagen
3 Hardware
4 Netzwerkgrundlagen
5 Betriebssystemgrundlagen
6 Windows
7 Linux
8 Mac OS X
9 Grundlagen der Programmierung
10 Konzepte der Programmierung
11 Software-Engineering
12 Datenbanken
13 Server für Webanwendungen
14 Weitere Internet-Serverdienste
15 XML
16 Weitere Datei- und Datenformate
17 Webseitenerstellung mit (X)HTML und CSS
18 Webserveranwendungen
19 JavaScript und Ajax
20 Computer- und Netzwerksicherheit
A Glossar
B Zweisprachige Wortliste
C Kommentiertes Literatur- und Linkverzeichnis
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
IT-Handbuch für Fachinformatiker von Sascha Kersken
Der Ausbildungsbegleiter
Buch: IT-Handbuch für Fachinformatiker

IT-Handbuch für Fachinformatiker
Rheinwerk Computing
1216 S., 6., aktualisierte und erweiterte Auflage, geb.
34,90 Euro, ISBN 978-3-8362-2234-1
Pfeil 20 Computer- und Netzwerksicherheit
Pfeil 20.1 PC-Gefahren
Pfeil 20.1.1 Viren und Würmer
Pfeil 20.1.2 Trojaner und Backdoors
Pfeil 20.1.3 Weitere Schädlinge
Pfeil 20.2 Netzwerk- und Serversicherheit
Pfeil 20.2.1 Servergefahren
Pfeil 20.2.2 Wichtige Gegenmaßnahmen
Pfeil 20.2.3 Kryptografie
Pfeil 20.3 Zusammenfassung

Rheinwerk Computing - Zum Seitenanfang

20.2 Netzwerk- und ServersicherheitZur nächsten Überschrift

Wie Sie bereits im ersten Abschnitt gesehen haben, birgt der Transport von Daten über öffentliche Netze vielfältige Gefahren. Hier werden einige Maßnahmen vorgestellt, die diese Gefahren vermindern; völlig abstellen lassen sie sich nie, solange Sie mit dem Netzwerk verbunden sind.


Rheinwerk Computing - Zum Seitenanfang

20.2.1 ServergefahrenZur nächsten ÜberschriftZur vorigen Überschrift

Beachten Sie, dass die im ersten Abschnitt für Desktop-PCs genannten Gefahren prinzipiell auch Serverrechner treffen können. In diesem Abschnitt geht es dagegen um Gefahren, die es vornehmlich auf Serverdienste und -anwendungen, aber auch auf deren Benutzer abgesehen haben.

  • Exploits. Die Basis der meisten Angriffe auf Server ist die Ausnutzung (Exploit) bekannter Sicherheitslücken in Programmen. Solche Anfälligkeiten, beispielsweise für Overflows oder für die illegale Eingabe von Programmcode, kommen immer wieder vor. Die meisten Entdecker nutzen diese Lücken glücklicherweise nicht aus, sondern informieren den Hersteller der Software sowie bekannte Sicherheits-Mailinglisten wie Bugtraq. Bei Open-Source-Programmen steht oft innerhalb weniger Tage ein Patch zur Verfügung, der die Sicherheitslücke schließt; bei kommerzieller Software kann es mitunter einige Wochen dauern oder gar erst in der nächsten Hauptversion behoben werden. Wichtig ist, dass Sie verfügbare Patches oder Upgrades immer sofort installieren. Falls Sie für einen Server verantwortlich sind, sollten Sie Bugtraq (http://www.securityfocus.com), den Heise-Sicherheits-Newsletter (http://www.heisec.de) und andere Sicherheitsinformationen abonnieren.
  • DoS-Attacken. Eine der häufigsten Arten von Angriffen auf Server sind die sogenannten Denial-of-Service-Attacken (DoS). Dabei wird der Serverdienst durch Überlastung zum Absturz gebracht. DoS benötigt nicht unbedingt Sicherheitslücken, sondern sendet oft technisch korrekte (aber viel zu viele) Anfragen an den Server. Gerade das macht es schwer, den Angriff abzuwehren. Viele prominente Websites wie Amazon, Yahoo! oder heise.de waren schon betroffen. Solange der Angriff aus einer einzigen Quelle stammt, lässt er sich bereits am Router herausfiltern. Häufiger verwenden DoS-Attacken aber »gespoofte« (gefälschte) Absender-IP-Adressen oder greifen gar von vielen Hunderten durch Trojaner gesteuerten PCs gleichzeitig an – dies wird als Distributed Denial of Service (DDoS) bezeichnet.
  • Crackerangriffe. Einige Angriffe auf Server erfolgen mit dem Ziel, die Kontrolle zu übernehmen und den Server für eigene Zwecke zu missbrauchen, beispielsweise als Spam-Relay oder Lagerstätte für illegale Inhalte. Beachten Sie, dass Sie technisch und vor allem rechtlich für Ihren Server verantwortlich sind. Die Entschuldigung, dass mehrere Hundert Hollywood-Blockbuster oder widerliche Nazi-Propaganda durch einen Angriff dort gelandet seien, zählt vor Gericht möglicherweise nicht. Wenn Sie also einen öffentlichen Server betreiben, sind Sie in der Pflicht, sich intensiv um dessen Sicherheit zu kümmern – regelmäßig Updates und Patches installieren, Passwörter ändern, Log-Dateien untersuchen und so weiter.
  • Rootkits. Bei der gefährlichsten Variante eines Crackerangriffs wird ein sogenanntes Rootkit installiert. Es ersetzt gezielt Systemdateien und Systemprogramme durch manipulierte Versionen, um den Angriff zu verschleiern. Beispielsweise könnte eine Rootkit-Version von ps (siehe Kapitel 7, »Linux«) einen laufenden Backdoor-Prozess ausblenden. Die beste Chance, Rootkits zu erkennen, besteht in der Installation eines Intrusion Detection Systems.
  • Webattacken. Besonders verbreitet sind Angriffsversuche auf Webtransaktionen. Da sie im Klartext ablaufen, ist es relativ leicht, Session-IDs, Formulardaten oder Anmeldeinformationen auszuspionieren und einzusetzen. Ein Beispiel ist das sogenannte Cross-Site-Scripting (XSS). Es verwendet einfache Tricks wie zum Beispiel Forenbeiträge, um mit JavaScript angereicherte Hyperlinks zu verbreiten, die nicht nur eine bestimmte URL anfordern, sondern dieser gleichzeitig spezielle Daten zusenden, die dazu führen, dass der Angreifer aus dem Besuch des Opfers auf der entsprechenden Website Informationen abgreifen kann.
  • Eine Weiterentwicklung des XSS-Szenarios sind Man-in-the-Middle-Attacken wie etwa das Session-Hijacking. Sie machen sich einen gravierenden Sicherheitsmangel vieler Websites zunutze, die auf Verschlüsselung verzichten, nachdem sich ein Benutzer einmal gegenüber dem Webserver identifiziert hat. Gelingt es einem Angreifer, die URL einer Clientanfrage aus einer solchen Session zu stehlen, kann er die nächste Anfrage unter der angeblichen Identität des ursprünglichen Users senden und erhält so möglicherweise private Informationen. Im schlimmsten Fall handelt es sich bei der angegriffenen Site um das Homebanking-Interface eines Geldinstituts.[Anm.: Einer Bank, die solche hochsensiblen Transaktionen auf so unsichere Art und Weise handhabt, sollten Sie als Kunde allerdings sofort den Rücken kehren. Schließlich würden Sie auch keinen Schuhkarton statt eines stählernen Schließfachs mieten.]
  • Weit verbreitet sind Angriffe auf CGI-Skripte und Webanwendungen. Dies liegt nahe, da diese oft überaus schlampig und ohne Sicherheitsbewusstsein programmiert werden. Wenn es genügt, an eine Formulareingabe ein Semikolon und einen Shell-Befehl anzuhängen, um den Server anzugreifen, dann läuft etwas schief. Für Webanwendungen gilt daher noch mehr als für alle anderen Computerprogramme: Misstrauen Sie jeder Benutzereingabe, und überprüfen Sie sie gründlich. Hinzu kommen natürlich auch hier Exploits; Webserver und Sprachen-Interpreter sind (wie jede Software) nicht fehlerfrei.
  • SQL-Injection. Sehr viele Webanwendungen setzen auf eine relationale Datenbank auf – in Kapitel 18, »Webserveranwendungen«, wurde das beliebte Beispiel PHP/MySQL vorgestellt. Da Eingaben aus Webformularen besonders häufig für SQL-Abfragen eingesetzt werden, kann es leicht passieren, dass Angreifer versuchen, diese Abfragen ein wenig zu verlängern.

    Stellen Sie sich zum Beispiel vor, ein Formular enthielte das folgende Feld:

    Suche nach: <input type="text" name="such" />

    Ein PHP-Skript verwendet den Wert aus diesem Feld folgendermaßen:

    $such = $_GET['such'];
    $result = mysql_query ("select * from info where
    beschreibung like '%$such%';");

    Jemand gibt in das Feld such Folgendes ein:

    test%'; delete from info;--

    Die SQL-Abfrage wird also folgendermaßen ergänzt:

    select * from info
    where beschreibung like '% test%';
    delete from info;-- %';

    Der Inhalt der Tabelle info wird vollständig gelöscht; der »Müll« hinter dem Semikolon nach info wird durch die Kommentarzeichen -- ignoriert. Natürlich können Angreifer den Quellcode des PHP-Skripts nicht sehen und wissen daher zum Beispiel nicht, wie die Datenbanken und Tabellen heißen – außer natürlich dann, wenn auf dem Server standardisierte Software läuft (etwa bestimmte Content-Management-Systeme oder Webshops). In der Praxis werden solche Angriffsversuche aber auch nicht manuell in die Formulare eingetippt, sondern durch automatisierte Skripte ausgeführt.

    Auch hier gilt, dass Sie Formulareingaben dringend genau untersuchen und säubern müssen, bevor Sie Ihre Datenbank damit »füttern«. Auch das Escaping aller dynamischen Elemente von Datenexperten – im PHP/MySQL-Umfeld beispielsweise mithilfe von mysql_real_escape_string($eingabe) – ist hilfreich.


Rheinwerk Computing - Zum Seitenanfang

20.2.2 Wichtige GegenmaßnahmenZur nächsten ÜberschriftZur vorigen Überschrift

Es ist wichtig, Serverrechner mithilfe diverser Schutzmaßnahmen gegen Angriffe abzusichern. Die folgende Liste enthält einige der wichtigsten dieser Maßnahmen.

  • Firewalls. Selbstverständlich können Sie einen Server, dessen Aufgabe die Bereitstellung von Dienstleistungen über ein Netzwerk ist, nicht vollständig hinter einer Firewall verbergen. Vielmehr sollten Sie über eine intelligente Verteilung der betroffenen Rechner im Netzwerk nachdenken. Möglicherweise können Sie Proxy-Dienste verwenden, um eine Firewall zwischen dem eigentlichen Server und Backend-Servern, etwa für Anwendungen oder Datenbanken, zu überbrücken.

    Falls Sie Linux verwenden, ist die Firewall in Form des mächtigen Paketfilters iptables bereits im Kernel enthalten; für andere Systeme gibt es vergleichbare Lösungen. Beachten Sie aber, dass ein Paketfilter auf einem einzelnen Host gerade in einem Unternehmensnetzwerk kein hinreichender Ersatz für eine Application Gateway Firewall darstellt, die sämtlichen Netzwerktraffic filtern kann. Diese kann auf einem einzelnen Rechner im Netzwerk installiert werden, über den der gesamte Traffic umgeleitet wird. Ein solcher Rechner wird als Bastion-Host bezeichnet. Noch sicherer ist eine DMZ (demilitarisierte Zone). Es handelt sich um ein separates Netzwerk, das dem eigentlichen Firmennetzwerk vorgeschaltet wird und auf jeder Seite einen Paketfilter und eine Application Gateway Firewall enthält. Der Zugriff aus dem Firmennetzwerk erfolgt ausschließlich über autorisierte Proxys. Auch alle für das Internet relevanten Server wie Webserver, Mailserver oder VPN-Server befinden sich innerhalb der DMZ.

    Auch Windows enthält eine eingebaute Software-Firewall, die sich über Start · Systemsteuerung · Windows-Firewall grafisch konfigurieren lässt.

  • Intrusion Detection Systems (IDS). Angriffe oder Angriffsversuche sind nicht immer leicht zu erkennen. Am besten ist es, Sie installieren eine Software, die unerwünschte Änderungen erkennt und Alarm gibt. Eine gute Wahl für Linux ist beispielsweise das Open-Source-Programm tripwire. Sie können es unter http://sourceforge.net/projects/tripwire/ herunterladen. Genau genommen ist tripwire kein »richtiges« IDS, sondern ein allgemeiner, frei konfigurierbarer Warndienst, der bei Änderungen am System Alarm schlägt.

    Ein anderes empfehlenswertes und weitverbreitetes Open-Source-IDS ist Snort. Es handelt sich um ein echtes Network Intrusion Detection System (NIDS). Download-Links und weitere Informationen finden Sie unter http://www.snort.org. Auf der Website http://www.datanerds.net/~mike/snort.html wird übrigens auch eine (allerdings extrem veraltete!) Win32-Version angeboten.

    Beachten Sie, dass Sie ein IDS unbedingt installieren müssen, bevor der betreffende Rechner erstmals an das Netzwerk oder ans Internet angeschlossen wird, denn Rootkits sind beispielsweise nur dann erkennbar, wenn die Änderung des betreffenden Binärprogramms nachträglich stattfindet.

  • chroot-Umgebung. Auf Unix-Systemen gibt es eine interessante Sicherheitsmaßnahme für Serverdienste: Sie können Programme in einen chroot-»Käfig« sperren. Das bedeutet, dass der Software vorgegaukelt wird, ihr lokales Unterverzeichnis sei das Wurzelverzeichnis des Dateisystems. Beachten Sie allerdings, dass auch dies keine absolute Sicherheit gewährleistet – es gibt immer wieder Sicherheitslücken in den eingesperrten Programmen oder in den chroot-Implementierungen, die es einem Angreifer ermöglichen, der chroot-Umgebung zu entkommen.

    Die Einrichtung einer solchen Umgebung ist vor allem deshalb nicht ganz einfach, weil Sie herausfinden müssen, welche Verzeichnisse und Dateien das Programm außer seinem eigenen Installationsumfang benötigt, um ausgeführt werden zu können. Die genaue Konfiguration hängt stark vom jeweiligen Serverdienst und von Ihrem konkreten System ab. Auf der Website zum Buch finden Sie einige Links mit Anleitungen.

  • Crackertools. Im ersten Moment hört es sich vielleicht merkwürdig an, aber eine der besten Schutzmaßnahmen vor Angriffen besteht darin, die Werkzeuge der potenziellen Angreifer zu benutzen, um Sicherheitslücken zu erkennen und nach Möglichkeit zu schließen. Eines der wertvollsten Tools in dieser Sparte ist Nessus. Dieses freie Programm funktioniert unter zahlreichen Unix-Varianten und Windows. Sie können es unter http://www.nessus.org herunterladen.

    Hier muss auf ein weiteres politisches Problem hingewiesen werden: Seit August 2007 ist § 202c StGB in Kraft, der die Herstellung und Verbreitung solcher Tools unter Strafe stellt, wenn sie der Vorbereitung eines Einbruchs in EDV-Anlagen dienen. Es gibt noch keine Gerichtsurteile dazu, sodass noch offen ist, ob und wie sehr dieser Paragraf Administratoren in deren täglichen Arbeit behindern wird. Auf dem LinuxTag in Berlin im Mai 2007 verteilte allerdings selbst das Bundesamt für Sicherheit in der Informationstechnik (BSI) CDs mit den zuvor genannten Tools.

  • Geschulte Mitarbeiter. Die beste technische Sicherheitsmaßnahme nützt nichts, wenn die User nicht darüber Bescheid wissen. Menschliches Versagen ist immer die größte Sicherheitslücke. Einige der erfolgreichsten Cracker haben nicht nur durch ausgeklügelte technische Maßnahmen Zugriff auf geschützte Systeme erlangt, sondern vor allem durch »Social Engineering« – siehe beispielsweise das Buch »Die Kunst der Täuschung« von Kevin Mitnick, einem verurteilten Cracker.

    Beispielsweise ist der vernünftige Umgang mit Passwörtern weithin unbekannt. Beachten Sie deshalb besonders die folgenden Punkte, und weisen Sie auch Ihre Kollegen darauf hin:

    • Passwörter dürfen niemals sinnvolle Wörter sein, sondern müssen möglichst wirre Kombinationen aus Groß- und Kleinbuchstaben, Ziffern und Sonderzeichen sein.
    • Passwörter müssen regelmäßig gewechselt werden. Wenn Ihr Betriebssystem eine Möglichkeit bietet, die Benutzer nach einer bestimmten Zeit zur Änderung zu zwingen, sollten Sie diese Möglichkeit nutzen.
    • Ein Passwort wird niemals aufgeschrieben! Ein sicheres Passwort, das man sich dennoch leicht merken kann, ergibt sich am einfachsten aus den Anfangsbuchstaben eines möglichst sinnlosen Satzes; einige Zeichen sollten allerdings keine Buchstaben sein. Ein Beispiel finden Sie in Kapitel 7, »Linux«.
    • Administratoren, Mitarbeiter von Internetprovidern, Polizisten oder Staatsbeamte fragen niemals nach dem Passwort. Wer auch immer Sie also danach fragt, ist ein Betrüger.
    • Passwörter sind erst der Anfang – die vorgestellten Maßnahmen zur Passwortsicherheit sind wichtig. Für sich allein sind sie aber noch lange keine ausreichende Absicherung. Das sollten sowohl Sie als auch die restlichen Benutzer wissen.

Praxisbeispiel Netfilter/iptables – die Linux-Kernel-Firewall

Das Programm netfilter ist ein unmittelbar in den Linux-Kernel eingebauter Netzwerkpaketfilter. Konfiguriert wird er über das Tool iptables, das seit dem Linux-Kernel 2.4 verfügbar ist. Der Kernel 2.2 enthielt einen Vorläufer von netfilter, dessen weniger leistungsfähiges Frontend ipchains hieß. netfilter analysiert IP-Datagramme, bevor sie an die Empfängeranwendungen ausgeliefert werden; falls nötig, werden die Pakete umgeleitet, modifiziert oder sogar gelöscht.

Die iptables-Regeln modifizieren eine oder mehrere der folgenden fünf vordefinierten Chains (Ketten):

  • PREROUTING – Pakete, die soeben von der Netzwerkschnittstelle in Empfang genommen wurden
  • INPUT – eingehende Pakete, bevor sie an die Empfängeranwendung ausgeliefert werden
  • OUTPUT – ausgehende Pakete, die soeben von einer Netzwerkanwendung erzeugt wurden
  • POSTROUTING – Pakete, die gerade über die Netzwerkschnittstelle gesendet werden sollen
  • FORWARD – Pakete, die nicht für den lokalen Rechner bestimmt sind, sondern die dieser per IP-Forwarding (Routing) weiterleitet

Die Filterregeln werden in verschiedene Tabellen geschrieben. Drei sind automatisch vorkonfiguriert:

  • nat (Network Address Translation) – ermöglicht die Änderung von IP-Adressen und/oder Ports, um Pakete aus dem internen in ein externes Netzwerk umzuleiten oder umgekehrt. Die zulässigen Chains sind OUTPUT, POSTROUTING und PREROUTING.
  • filter – diese Tabelle bestimmt die Regeln für erlaubte und verbotene Datenpakete. Bei eingehenden Paketen dient sie dem Schutz vor möglichen Angriffen oder Spionage; bei ausgehenden schützt sie vor Trojanern und anderer Spyware sowie vor Anwendungen, die »nach Hause telefonieren« möchten (Letzteres kommt bei Open-Source-Programmen natürlich seltener vor als bei kommerziellen). Auch auf Routing-Pakete, die der Rechner nur durchreicht, können filter-Regeln angewendet werden. Die Tabelle kann demzufolge für die Chains INPUT, OUTPUT und FORWARD eingesetzt werden und stellt die eigentliche Firewall-Funktionalität bereit.
  • mangle – über diese Tabelle können Sie Datenpaket-Header beliebig modifizieren. Sie kann mit allen fünf Chains zusammenarbeiten.

Jede Regel kann ein Match (Kriterium) besitzen, um ihre Gültigkeit auf bestimmte Pakete zu beschränken.

Zuletzt besitzen alle Regeln ein Target (Ziel). Fünf von ihnen sind vordefiniert:

  • ACCEPT – das Datenpaket wird akzeptiert, das heißt an den nächsten Verarbeitungsschritt weitergereicht (dort könnte es gegebenenfalls durch eine weitere Regel modifiziert werden).
  • DROP – das Paket wird ersatzlos verworfen.
  • REJECT – Auch dieses Target verwirft das Paket, versendet aber zusätzlich eine Ablehnungsmitteilung an den Absender.
  • QUEUE – das Paket wird aus dem Kernel in den Userspace weitergereicht, wo es von einer spezialisierten Anwendung weiterverarbeitet werden kann.
  • RETURN – das Paket wird in der ursprünglichen, aufrufenden Chain weiterverarbeitet; dieses Target entspricht einem Rücksprung aus einem Unterprogramm und eignet sich somit für benutzerdefinierte Regeln, die an bestimmten Stellen eingeschoben werden.

Hier einige der wichtigsten Kommandozeilenparameter des Tools iptables:

  • -t table oder --table table – Auswahl der Tabelle. -t filter verwendet zum Beispiel die Tabelle filter.
  • -A chain oder --append chain – die Regel wird an die angegebene Chain angehängt. Beispiel: -A PREROUTING.
  • -I chain [Regelnummer] oder --insert chain [Regelnummer] – fügt eine neue Regel vor der angegebenen ein oder an den Anfang der Chain, wenn keine Nummer angegeben wird. Dies ist wichtig, da manche Regeln eine bestimmte Reihenfolge benötigen.
  • -R chain Regelnummer oder --replace chain Regelnummer – ersetzt die angegebene Regel durch die mitgelieferte neue Regel.
  • -D chain Regelnummer oder --delete chain Regelnummer – löscht die Regel mit der betreffenden Nummer aus der Chain.
  • -j Target – hier wird das Target angegeben, entweder eines der zuvor genannten Standardziele oder ein benutzerdefiniertes. Dieser Parameter legt also fest, was mit Paketen geschieht, auf die die Regel zutrifft. -j DROP beispielsweise verwirft die betreffenden Pakete.
  • -s [!]Quelladresse[/Maske], alternativ --src oder --source – Quelladresse oder Quelladressbereich eines Pakets. Ein Ausrufezeichen steht für alle Pakete, die nicht aus der angegebenen Quelle stammen. -s 192.168.1.0/24 legt zum Beispiel eine Regel für Pakete fest, die aus dem angegebenen Netz stammen; -s !192.168.1.0/24 gilt dagegen für alle Pakete außer denjenigen aus dem benannten Netz.
  • -d [!]Zieladresse[/Maske], alternativ --dst oder --destination – Regeln für Datenpakete mit einer bestimmten Zieladresse oder einem Zieladressbereich. Ein Ausrufezeichen negiert die Angabe auch bei dieser Option. -d 192.168.1.18 gilt beispielsweise für alle Pakete, die an diese IP-Adresse gesendet werden sollen.
  • -p [!]Protokoll oder --protocol [!]Protokoll – Regeln für Pakete, die das angegebene Transportprotokoll verwenden beziehungsweise (mit Ausrufezeichen) nicht verwenden. Zulässig sind alle Werte aus der Datei /etc/protocols, entweder numerisch oder anhand ihres Namens. Wichtige Protokolle sind zum Beispiel tcp, udp und icmp (ping).
  • --source-port Portnummer oder --sport Portnummer – Quellport (TCP) oder Quell-Dienstnummer (UDP) von Paketen, zum Beispiel --sport 25 oder --sport smtp für Pakete, die von einem SMTP-Server stammen; je nach Chain ist ein lokaler oder ein Remote-Mailserver gemeint. Alle Dienstnummern von 0 bis 65.535 und alle Namen aus /etc/services sind zulässig.
  • --destination-port Portnummer oder --dport Portnummer – Zielport des Pakets; --dport 22 oder --dport ssh gilt zum Beispiel für Pakete, die an einen SSH-Server gesendet werden.
  • -i Schnittstelle – Regel für eingehende Pakete, die über die angegebene Netzwerkschnittstelle ankommen. Beispiel: -i eth0 gilt für die erste Ethernet-Karte.
  • -o Schnittstelle – Regel für Pakete, die über eine bestimmte ausgehende Schnittstelle gesendet werden. Beispiel: -o ippp0 betrifft nur Pakete für die erste (und meist einzige) ISDN-Schnittstelle.
  • -L [chain] oder --list [chain] – gibt eine Liste aller Regeln für die angegebene Chain aus. Wird keine Chain genannt, erhalten Sie eine vollständige Liste aller netfilter-Regeln.
  • -h oder --help – Ausgabe der Hilfe mit den hier genannten und allen anderen Optionen.

Zum Schluss sehen Sie hier noch einige Beispiele für konkrete Filterregeln:

  • # iptables -t filter -I INPUT -p tcp \
    -s 196.12.21.0/24 -j DROP

    Eingehende Pakete aus dem Netzwerk 196.12.21.0/24 sollen verworfen werden. Auf diese Weise lassen sich beispielsweise die Adressen bekannter Verbreiter von Malware komplett sperren. Es ist wichtig, diese Regel mithilfe von -I an den Anfang der INPUT-Chain zu stellen, um Regeln zuvorzukommen, die einfach sämtliche eingehenden TCP-Pakete durchlassen.
  • # iptables -t filter -I INPUT -p ICMP -j DROP
    Verhindert alle ICMP-Zugriffe, das heißt die Überprüfung Ihres Rechners mit ping. Es gibt ein DoS-Angriffsszenario mit fehlerhaft formatierten ICMP-Paketen, den sogenannten Ping of Death, deshalb wird diese Regel manchmal verwendet. Der Nachteil ist natürlich, dass Sie Ihre eigenen Rechner dann auch nicht mehr mit ping testen können. Verwenden Sie in der Praxis also so etwas wie
    # iptables -t filter -I INPUT -s!192.168.1.0/24 \
    -p
    ICMP DROP

    um ping-Pakete zu verwerfen, die nicht aus Ihrem Netz stammen.

  • # iptables -t filter -O OUTPUT -d 192.168.0.22 -j DROP
    Diese Regel lehnt alle Pakete ab, die an eine bestimmte Zieladresse gesendet werden. Auf diese Weise könnten Sie ein Programm daran hindern, Verbindung zum Server oder zum Netzwerk seines Herstellers aufzunehmen.
  • # iptables -t nat -A POSTROUTING -o eth0 -j SNAT \
    --to 196.23.17.41

    Source-NAT: Die IP-Adresse aller Pakete, die über die Schnittstelle eth0 gesendet werden, erhält einen anderen (externen) Wert.
  • # iptables -t nat -A POSTROUTING -o dsl0 -j MASQUERADE
    IP-Masquerading, eine besondere Form des Source-NAT, überschreibt die lokale IP-Adresse mit der dynamisch zugewiesenen. Dies ermöglicht zum Beispiel die gemeinsame Nutzung eines DSL-Anschlusses durch mehrere Rechner im lokalen Netzwerk.
  • # iptables -t nat -A PREROUTING -i eth0 -j DNAT \
    --to 192.168.1.22

    Destination-NAT, das Gegenteil von Source-NAT, ändert die IP-Adresse eingehender Pakete in einen lokalen Wert.

Rheinwerk Computing - Zum Seitenanfang

20.2.3 KryptografieZur vorigen Überschrift

Die Verschlüsselung von Nachrichten als Strategie zum Überleben in einer oft feindlichen Umwelt ist jahrtausendealt. Politische, wirtschaftliche oder militärische Informationen mussten geheim gehalten werden. Da das Internet ein allgemein nutzbares Kommunikationsnetz ist, wurde die Kryptografie für beinahe jeden interessant.

Die Codes früherer Zeiten waren eher einfach: Bekannt ist zum Beispiel der Cäsar-Code, bei dem jeder Buchstabe im Alphabet durch lineare Verschiebung durch einen anderen ersetzt wird. Der »Schlüssel« ist hier die Anzahl der Stellen, um die die Buchstaben verschoben werden. Tabelle 20.1 zeigt das bekannte Beispiel »ROT13«, das Buchstaben um 13 Stellen verschiebt.

Tabelle 20.1 Cäsar-Code oder ROTn: Verschiebung der Buchstaben um n Stellen, hier das Beispiel »ROT13«

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

A

B

C

D

E

F

G

H

I

J

K

L

M

Mithilfe der Tabelle dürfte es Ihnen keine Schwierigkeiten bereiten, den folgenden Satz zu lesen: »Irefpuyhrffryhat ybuag fvpu, qraa avpug nyyrf trug wrqra rgjnf na«. Das Praktische an den 13 Stellen ist, dass das Alphabet genau halbiert wird, sodass Verschlüsselung und Entschlüsselung derselbe Vorgang sind. Das folgende Perl-Skript leistet entsprechend beides:

#!/usr/bin/perl -w
use strict;
print "Nachricht: ";
my $msg = <>;
$msg =~ tr/a-z/n-za-m/;
$msg =~ tr/A-Z/N-ZA-M/;
print "ROT13: $msg\n";

Natürlich ist ROT13 in den Augen der Kryptoanalyse (der Wissenschaft von der Entschlüsselung) ein »Witz«. Der schnellste Ansatz ist eine Häufigkeitsanalyse (Welcher Buchstabe kommt in einer Sprache am häufigsten vor?) – je länger der Text, desto schneller führt sie zum Ziel.

Durch die moderne Mathematik und vor allem die Einführung der Computertechnik wurden erheblich komplexere Verschlüsselungsverfahren geschaffen, die sich nicht mehr ohne Weiteres – zum Teil sogar gar nicht – knacken lassen. Das wichtigste Merkmal für eine gute Verschlüsselung ist allerdings eine ausreichende Schlüssellänge. Das ausgeklügeltste Verfahren nutzt nichts, wenn sich der Schlüsselraum, also die Gesamtheit aller möglichen Schlüssel, in wenigen Minuten durch einen Brute-Force-Angriff durchprobieren lässt.

Zunächst sollten Sie einige Grundbegriffe kennen, die im Zusammenhang mit der modernen Kryptografie im IT-Bereich häufig verwendet werden:

  • Symmetrische Verschlüsselung. Bei dieser klassischen Form der Verschlüsselung wird zur Verschlüsselung und zur Entschlüsselung derselbe Schlüssel verwendet. Damit dies sicher ist, muss der Schlüssel selbst vor Außenstehenden verborgen werden. Für Internetverbindungen ist dieses Verfahren deshalb nicht geeignet.
  • Asymmetrische Verschlüsselung. Diese Form der Kryptografie wird auch als Public-Key-Verfahren bezeichnet. Für die Verschlüsselung wird ein anderer Schlüssel verwendet als zur Entschlüsselung. Einer der beiden Schlüssel ist öffentlich (Public Key), der andere geheim (Private Key). Jeder, der an einem solchen Verschlüsselungsverfahren teilnehmen möchte, kann seinen öffentlichen Schlüssel verteilen. Wer diesem Teilnehmer eine Nachricht senden möchte, kann sie mit dessen öffentlichem Schlüssel verschlüsseln. Der andere Teilnehmer kann sie daraufhin mit seinem privaten Schlüssel dechiffrieren. Genau dieses Verfahren liegt Internet-Kryptografielösungen wie SSL oder PGP zugrunde.
  • Einwegverschlüsselung. Bei dieser besonderen Form der Verschlüsselung ist die Dechiffrierung nicht vorgesehen und (sofern der Algorithmus korrekt arbeitet) auch nicht möglich. Einwegverschlüsselung wird beispielsweise für Passwörter verwendet: Anstatt das Passwort für den Vergleich mit der Benutzereingabe zu entschlüsseln (was ein erhebliches Sicherheitsrisiko wäre), wird die Eingabe nach demselben Verfahren chiffriert wie das verschlüsselt gespeicherte Passwort.
  • Digitale Signatur. Eine Signatur wird benutzt, um die Identität eines Absenders zu gewährleisten. Damit dies wirklich sichergestellt ist, muss die Signatur von einer vertrauenswürdigen Zertifizierungsstelle beglaubigt werden. Anschließend kann der Anbieter Inhalte mit seinem privaten Schlüssel signieren; mit seinem öffentlichen Schlüssel können Empfänger die Identität des Anbieters überprüfen.
  • Message-Digest. Ein Message-Digest-Algorithmus (auch Message Authentication Code oder kurz MAC genannt) berechnet aus einem recht langen Inhalt eine möglichst kurze Zeichenfolge, die die Eindeutigkeit des ursprünglichen Inhalts gewährleistet. Eine Änderung des Inhalts sollte zuverlässig auch den Digest-Wert verändern. Dies gewährleistet die Integrität von Inhalten wie E-Mails, Webseiten oder Downloads.

Es gibt im Computer- und Netzwerkbereich zahlreiche Einsatzmöglichkeiten für Kryptografie. Hier nur einige der wichtigsten:

  • E-Mail-Verschlüsselung. Die Verschlüsselung von E-Mail-Nachrichten mithilfe von PGP (Pretty Good Privacy) oder dessen Open-Source-Variante GnuPG ist eines der beliebtesten Einsatzgebiete für Kryptografie. Es handelt sich um ein Public-Key-Verfahren. Wenn ich jemandem eine verschlüsselte Nachricht senden möchte, kann ich sie mit seinem öffentlichen Schlüssel verschlüsseln, der allgemein verfügbar sein darf. Der Empfänger kann die Mail dann ausschließlich mit seinem privaten Schlüssel entschlüsseln. In moderne E-Mail-Clients lässt sich PGP oder GnuPG leicht integrieren, sodass es auf Knopfdruck zur Verfügung steht.
  • SSL/TLS für Webseiten. Sicherheitsrelevante Webtransaktionen sollten nicht im Klartext durchgeführt werden, sondern ebenfalls verschlüsselt ablaufen. Dazu wird gesichertes HTTP (HTTPS) über SSL oder das modernere TLS verwendet. Neben der Verschlüsselung wird die Identität des Anbieters garantiert. Er muss ein digitales Zertifikat verwenden, das idealerweise von einer anerkannten Zertifizierungsstelle (englisch: Certification Authority, kurz CA) beglaubigt wurde. Eine ausführliche Anleitung, wie Sie eine SSL-gesicherte Website mit Apache 2 einrichten, finden Sie auf der Website zu meinem Buch »Apache 2« unter http://buecher.lingoworld.de/apache2/mod_ssl.html.
  • SSH (Secure Shell). Die Fernadministration von Unix-Servern ist eine angenehme und oft zeitsparende Angelegenheit. Dazu wird traditionellerweise das Protokoll und Programm telnet verwendet. Dieses ist allerdings extrem unsicher, weil sämtliche Daten im Klartext übertragen werden. SSH ist eine verschlüsselte Lösung für dieses Problem. Um mit einem SSH-Server zu kommunizieren, benötigen Sie ein entsprechendes Clientterminal. Auf Unix-Rechnern ist dafür in der Regel das Programm ssh vorinstalliert. Für Windows gibt es beispielsweise das Programm PuTTY (Download beispielsweise unter http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html).
  • VPN (Virtual Private Networks). Verteilte IT-Infrastrukturen mit mehreren, weit voneinander entfernten Standorten sind ein Problem: Eine dedizierte Standleitung zwischen ihnen ist oft zu teuer, und das Internet ist dagegen zu unsicher und verlangt lästige Einschränkungen durch die mangelnden Fähigkeiten der verfügbaren Protokolle. Die Lösung heißt VPN: Ein voll ausgestattetes, frei konfigurierbares Netzwerk wird über das Internet »getunnelt«. Verschlüsselung ist übrigens kein integrierter Bestandteil eines VPN, sondern muss von den verwendeten Protokollen selbst geleistet werden.


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück




Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de


  Zum Katalog
Zum Katalog: IT-Handbuch für Fachinformatiker






IT-Handbuch für Fachinformatiker
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Linux Handbuch






 Linux Handbuch


Zum Katalog: Computer Netzwerke






 Computer Netzwerke


Zum Katalog: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


Zum Katalog: Windows 8.1 Pro






 Windows 8.1 Pro


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo