Wenn es um Sicherheit geht, bietet Ubuntu mehrere Vorteile gegenüber einem System wie Windows. Zum Beispiel hat Ubuntu einen offenen Quellcode. Das bedeutet, dass Hunderte und sogar Tausende von Entwicklern den Code überprüfen und verbessern. Auch verfügen Linux-Systeme im Gegensatz zu Windows über keine Registry, vermissen somit den Bestandteil, der Windows-Systemen über die Jahre Würmer, Viren und verschiedenen anderen Angriffe einbrachte. Die einzelnen Komponenten eines Linux-Systems sind zudem lose verknüpft: Nur weil ein Teilbereich kaputt geht, muss nicht unbedingt das ganze System zusammenbrechen oder instabil werden.
Obwohl Linux also von Haus aus als sicherer als andere vergleichbare Desktopsysteme betrachtet werden kann, ist kein Betriebssystem von Haus aus wirklich sicher – nicht einmal Ubuntu. Ein Angreifer könnte versuchen, Ihr System zu durchsuchen, um einen offenen Port zu finden. Jede Anwendung, die auf einem Port lauscht, kann ein Sicherheitsproblem mitbringen, das zur Kompromittierung Ihres Rechners führen kann und so weiter.
Egal was Ihnen über die Sicherheit von Linux oder Windows erzählt wird: Eine persönliche Firewall zu konfigurieren, gehört bei jedem Rechner der sich ab und zu oder permanent im Internet befindet zum Standardsetup. Denn der sichere Umgang mit dem Computer hilft Ihnen, Ihr System besser zu verstehen und Ihre Seelenruhe zu bewahren. Lesen Sie dazu auch den Kasten "Alles gesperrt?".
Alles gesperrt?
Viele Benutzer schalten deshalb keine persönliche Firewall ein, weil sie befürchten, dass sie ihre Lieblingsvideoseiten nicht mehr aufsuchen und Programme nicht mehr herunterladen können. Davor müssen Sie keine Angst haben. Die Entwickler von Firewall-Programmen sind nicht dumm und wissen genau, dass Sie all die guten Dinge im Internet erreichen wollen. Sie wissen aber auch, dass da draußen viele bösen Menschen lauern, die in Ihren Computer eindringen wollen. Die Ubuntu-Firewall blockiert deshalb generell nur den Zugriff von Außen aber nicht Ihren Browser oder Ihren Mediaplayer. Einen Dienst freizugeben bedeutet somit nicht, dass Sie diesen Dienst von Ihrem Rechner aus nutzen können sondern dass andere Rechner den Dienst auf Ihrem Rechner nutzen können. Den Port 80 (um HTTP als Beispiel zu nehmen) müssen Sie somit nicht freigeben, um über Firefox im Internet surfen zu können sondern nur dann, wenn Sie selbst einen Webserver auf Ihrem eigenen Rechner einrichten möchten, was doch relativ selten der Fall ist.
UFW ist die Abkürzung für Uncomplicated Firewall. Die "unkomplizierte Brandschutzmauer" ist das offizielle Firewall-Konfigurationswerkzeug von Ubuntu [1][2] wird deshalb auch oft nur Ubuntu Firewall genannt. Das Kommandozeilentool UFW funktioniert ziemlich gut als Frontend für das leistungsstarke Set von Linux-Firewall-Dienstprogrammen, bekannt unter dem Namen Iptables [3]. Obwohl UFW dem Benutzer als ein komplettes Firewallsystem erscheint, ist ihre Aufgabe in Wirklichkeit, eine etwas leichtere Syntax für die Verwendung von iptables zu bieten.
Die Iptables-Dienstprogramme wiederum betreiben das Netfilter-Framework, erhältlich in jeder Linux-Implementierung. Netfilter und Iptables sind kompliziert genug, um ein komplettes Buch darüber zu schreiben und viele Benutzer abzuschrecken. Die UFW und das zugehörige grafische Frontend Gufw sollen die Vorteile von Firewalls dem alltäglichen Ubuntu-Benutzer näher bringen.
Die Personal Firewall
Der Begriff Firewall bezieht sich in der Regel auf eine Vorrichtung, die zwischen einem lokalen Netzwerk (wie zum Beispiel ein Heim- oder ein Firmennetzwerk) und einem größeren, weniger kontrollierten Netzwerk, wie dem Internet, eingesetzt wird. Obwohl moderne Firewalls mit einer breiten Palette von Funktionen aufgerüstet sind, besteht die grundlegende Aufgabe einer Firewall darin, den Zugriff auf das lokale Netzwerk durch Filtern des eingehenden Datenverkehrs zu beschränken. Eine persönliche Firewall funktioniert ganz ähnlich wie eine Netzwerk-Firewall, mit dem Unterschied, dass eine persönliche Firewall typischerweise ein softwarebasierter Bestandteil ist, der auf einem einzelnen System läuft, während eine echte Firewall aus spezieller Hardware und mehreren Komponenten besteht.
Eine persönliche Firewall kann den Datenverkehr aufgrund von verschiedenen Parametern wie Quell-IP-Adresse, Zieladresse oder Portnummer blockieren oder erlauben. Dienste, die auf Ihrem Ubuntu-System laufen, lauschen auf einem bestimmten TCP- oder UDP-Port auf eingehende Verbindungen. Die Portnummer gibt somit einen Hinweis darauf, welchen externen Dienst der Rechner anbietet oder benutzen möchte. Die Tabelle "Gängige Dienste" führt eine Liste der wichtigsten Dienste mit den zugehörigen Portnummern.
Viele persönliche Firewalls können den Datenverkehr auch aufgrund des Netzwerkprotokolls blockieren oder erlauben. Mehrere Firewallsysteme unterstützen zudem eine Protokollierung, sodass Sie eine Aufzeichnung der Datenverkehrstatistiken und über die Zugriffsversuche von draußen erhalten.
Gängige Dienste
| Abkürzung | Beschreibung | Portnummer |
|---|---|---|
| FTP | File Transfer Protocol | TCP 20 und 21 (meist als 21 aufgeführt) |
| POP3 | Das am meisten verbreitete Protokoll für E-Mail-Abruf. Über den POP3-Server loggt man sich ein und lädt die E-Mails herunter. | TCP 110 |
| IMAP | Internet Message Access Protocol (IMAP). Ein neueres, weiterentwickeltes Mailbox-Protokoll. | TCP 143 |
| SMTP | Simple Mail Transfer Protocol. E-Mail-Protokoll für die Übermittlung und Weiterleitung von ausgehenden Nachrichten. | TCP 25 |
| NFS | Das Network File System wird unter Linux und Unix-Systemen zum Freigeben von Dateien und zum Einbinden entfernter Verzeichnisse benutzt. | TCP- und UDP-Port 2049. Außerdem stützt es sich auf den Portmapper Dienst, der den UDP-Port 111 verwendet. |
| SSH | Die Secure Shell bietet eine relativ sichere Art, um auf ein System zuzugreifen und es zu bedienen. SSH benutzt Verschlüsselung und Public-Key-Authentifizierung. Man kann SSH auch zum Tunneln unverschlüsselter Protokolle anwenden. | TCP 22 |
| Telnet | Ein älteres Protokoll, um entfernte Systeme zu steuern. Heute durch SSH weitgehend ersetzt | Server lauscht auf TCP 23. Man kann mithilfe eines Telnet-Clients jeden Port erreichen. |
| VNC | Virtual Network Computing ist ein Protokoll, worüber man auf einem entfernten Rechner einloggen und die grafische Oberfläche betrachten kann, als säße man direkt davor. | TCP 5900 |
| IPP | Internet Printing Protocol – dient zum Anschluss von Druckern im Netzwerk. | UDP und TCP 631 |
Man startet UFW in jeder üblichen Karmic-Installation im Terminalfenster durch Eingabe von ufw. Wie bei vielen administrativen Tools, muss man auch für ufw über die nötigen Rechte verfügen, die Ihnen das vorangestellte sudo und die Eingabe Ihres Benutzerpassworts verschafft.
$ sudo ufw enable Firewall is active and enabled on system startup
Als Ergebnis des vorherigen Befehls wird UFW bei jedem Systemstart gestartet. Nach der Ausgabe des Befehls, kann man die Grundeinstellung bestimmen:
$ sudo ufw default deny Default policy changed to 'deny' (die Regeln müssen entsprechend aktualisiert werden)
Dieser Befehl sagt UFW, automatisch alle ICMP-Pakete zu verwerfen also auch aller Protokolle, die in der Tabelle "Gängige Dienste" aufgeführt sind. Anschließend setzen Sie Ausnahmen zu dieser standardmäßig gesperrten Grundeinstellung. Die folgenden Befehle erlauben eine Verbindung auf SSH-, Web- und VNC-Servern, die auf Ihrem System laufen:
sudo ufw allow 22 Regel hinzugefügt sudo ufw allow 80 Regel hinzugefügt sudo ufw allow 5900 Regel hinzugefügt
Ob die UFW-Einstellungen geklappt haben, überprüfen Sie mit folgendem Befehl:
sudo ufw status
Auf diesen Befehl hin erscheint eine Ausgabe, wie im Listing 1 zu sehen.
Status abfragen
Status: active Zu Aktion Von – —— —- 22 ALLOW Anywhere 80 ALLOW Anywhere 5900 ALLOW Anywhere
Bisher haben die Befehle lediglich einige Portnummern definiert und nicht ein bestimmtes Protokoll. Es ist ziemlich einfach, die Filterung für das TCP- oder UDP-Protokoll einzustellen:
sudo ufw allow 53/udp
Der vorstehende Befehl erlaubt Verbindungen zum DNS-Server auf Ihrem System, der standardmäßig am UDP-Port 53 lauscht. Um nur eine Verbindung auf TCP-Port 80 zu erlauben, geben Sie folgenden Befehl ein:
sudo ufw allow 80/tcp
Standardregeln
Zur Konfiguration einer Firewall (und praktisch aller Sicherheitssysteme) gibt es zwei Möglichkeiten:
UFW bietet für die Grundeinstellung beide Methoden an, es empfiehlt sich jedoch, der allgemeingültigen Faustregel zu folgen und als Grundeinstellung "alle Ports gesperrt" zu wählen. Damit hat man in der Regel weniger Problemen, da es einfacher und sicherer ist, alles zu verbieten und nur bestimmten Datenverkehr zu erlauben. Sie behalten so den Überblick, was erlaubt ist, alles andere ist verboten.
Der einzige Nachteile dieser Herangehensweise besteht darin, dass man unabsichtlich eine Verbindung zum System blockieren könnte. Eine Ausnahmeregel zu erstellen, ist aber dank ufw relativ einfach, wie Sie es in diesem Artikel erfahren.
Die vorherigen Beispiele zeigten Regeln, die für alle IP-Adressen gelten. Man kann aber die Regeln noch verfeinern. Nehmen wir an, dass Sie für Ihre Firewall die Standardregel "alles verboten" aktiviert haben. Nehmen wir weiter an, dass Sie dem Rechner mit der IP-Adresse 19.82.44.45 die Verbindung zu Ihrem lokalen System auf allen Ports gewähren möchten. Dazu genügt der folgende Befehl:
sudo ufw allow from 19.82.44.45
Es ist auch möglich, einen Bereich von IP-Adressen anzugeben. Die ICANN hat einige Adressen einem privaten IP-Bereich zugewiesen, die nicht ins Internet geroutet werden dürfen. Sie kennen diese eventuell von Ihrem WLAN-Router oder einem anderen DHCP-Server, zum Beispiel 192.168.0.1 oder 10.0.0.1.
ICANN: Organisation, die die IP-Adressen im Internet vergibt.
Um allen Rechner, die ein IP-Adresse aus einem privaten Bereich besitzen – also keinen Rechnern aus dem Internet –, den Zugang zu Ihrem System zu gewähren, geben Sie die folgenden drei Befehle ein:
sudo ufw allow from 10.0.0.0/8 sudo ufw allow from 172.16.0.0/12 sudo ufw allow from 192.168.0.0/16
Selbstverständlich kann man jeden beliebigen IP-Adressbereich angeben, auch Bereiche aus dem Internet.
Eine der leistungsstärkeren Funktionen von UFW ist die Fähigkeit, Verbindungen zu begrenzen. Man kann zum Beispiel festlegen, dass die Firewall nicht mehr als sechs Verbindungsversuche über einen Zeitraum von 30 Sekunden erlaubt. Die Beschränkung der Anzahl von Verbindungen kann folgende Arten von Angriffen erschweren:
Um das Einschränken von Verbindungen zu aktivieren, verwenden Sie den Befehl ufw limit Dienst/Protokoll
. Für sämtliche Verbindungen des Webservers geben Sie den folgenden Befehl ein:
sudo ufw limit www/tcp
Wenn Sie eine Regel löschen möchten, geben Sie einfach die Portnummer an. Um zum Beispiel die Regel für den SSH-Zugang zu deaktivieren, geben Sie den folgenden Befehl ein:
sudo ufw delete allow 22 Regel gelöscht
Wenn Sie die Grundeinstellung der Firewall ändern möchten, geben Sie einfach folgenden Befehl ein:
sudo ufw default allow
Beachten Sie allerdings, dass dadurch alle Regeln, die Sie bis jetzt definiert haben, weiterhin gültig bleiben. Am besten bleiben Sie deshalb bei der Grundeinstellung deny und fügen einzelne Regeln hinzu, die Dienste freischalten.
Die Bedienung der Firewall über die Kommandozeile ermöglicht die volle Kontrolle über Ihre persönliche Firewall, aber Sie sind nicht gezwungen, die Kommandozeile zu nutzen, wenn sie es nicht wollen. Karmic bietet eine recht robuste GUI-Anwendung, bekannt als Gufw (Abbildung 1). Gufw gehört nicht zur Ubuntu-Standardinstallation, Sie müssen das Programm deshalb zunächst über das Software-Center oder ein sudo apt-get install gufw nachinstallieren. Sie finden es danach unter System | Systemverwaltung | Firewall configuration.
Genau wie bei UFW, müssen Sie Ihr Passwort eingeben, um Gufw zu starten. Um eine neue Regel hinzuzufügen, stehen Ihnen drei Registerkarten zur Verfügung (Abbildung 2):
Abbildung 3 zeigt, wie man eine erweiterte Regel hinzufügt, die den eingehenden Datenverkehr vom System mit der IP-Adresse 10.168.1.8 zum lokalen System für beide Protokolle TCP und UDP verweigert.
Protokollierung ist eine wichtige Funktion einer persönlichen Firewall. Zum Aktivieren der Protokollierung in Gufw, gehen Sie auf Bearbeiten | Einstellungen, und markieren das Kontrollkästchen Enable ufw logging. Sie finden dann die Protokolleinträge über Datei | Protokoll.
Auf der Kommandozeile aktivieren Sie die Protokollierung über den Befehl ufw logging Stufe
, wobei Stufelow, medium, high oder full sein kann. In der Grundeinstellung nutzt die Ubuntu-Firewall die Einstellung low (niedrig). Um die Logging-Ebene auf full (auf die detailreichste Stufe) zu stellen, gibt man folgenden Befehl ein:
sudo ufw logging full
Beachten Sie allerdings, dass die Einstellung full oder bereits high dazu führt, dass Ihr System eine enorme Anzahl an Verbindungen aufzeichnet, was eine riesengroße Logdatei generiert. Deshalb hat Ubuntu als Standardeinstellung low gewählt – für den heimischen Gebrauch sollte das ausreichen.
Die Protokollierung in UFW ist aber keine alles oder nichts Sache. Es besteht zum Beispiel auch die Möglichkeit, nur bestimmte Verbindungen zu protokollieren. Folgender Befehl teilt ufw mit, die Verbindungen zu Ihrem VNC-Server (Port 5900) aufzuzeichnen:
ufw allow log 5900/tcp
Möchten Sie die Protokollierung komplett ausschalten, dann geben Sie dazu den Befehl sudo ufw logging off ein.
Neben der Ubuntu-Lösung UFW gibt zahlreiche andere Firewallwerkzeuge, die seit Jahren existieren, darunter IPcop [4], SmoothWall [5], Endian [6] oder Arno-iptables [7]. Sehr beliebt ist auch Firestarter, das sich bereits in den Ubuntu-Repos befindet und von Haus aus NAT-Support mitbringt, falls Sie Ihren Ubuntu-Rechner als Router einsetzen möchten.
Infos
[1] Ubuntu UFW Wiki: https://wiki.ubuntu.com/UbuntuFirewall
[2] Ubuntu UFW Forum: http://ubuntuforums.org/showthread.php?t=823741
[3] Netfilter/iptables: http://www.netfilter.org/
[4] Die Gufw Homesite: http://gufw.tuxfamily.org/index.html
[5] IPcop: http://www.ipcop.org
[6] SmoothWall http://www.smoothwall.org
[7] Endian http://www.endian.com
[8] Arno-iptables http://freshmeat.net/projects/iptables-firewall/?topic_id=151