20.3 Ist Linux sicherer als Windows?
Linux und Windows unterscheiden sich in ein paar Ansätzen grundsätzlich. Oft wird behauptet, Linux sei eigentlich konzeptionell gar nicht sicherer als Windows. Sobald sich dieses System weiter verbreiten würde, müssten die Anwender mit einer wahren Flut von Linux-Viren rechnen, so wie man es unter Windows schon kennt.
Dies ist aber nur die halbe Wahrheit. Es stimmt zum Teil, dass die Verbreitung von Viren bei Monokulturen wie Windows wesentlich einfacher ist. Bei dieser Betrachtungsweise wird aber vergessen, dass Windows und Linux sich schon vom Ansatz her teilweise deutlich unterscheiden. Gut, kein Mensch kann in die Zukunft sehen. Dennoch:
In der Art, wie heutzutage Viren in Windows-Rechner eindringen und dort Schaden anrichten, kann dies unter Linux nicht passieren.
Wir werden uns im Folgenden zuerst einmal die verschiedenen Konzepte etwas genauer ansehen und uns unsere Gedanken über ein sicheres Betriebssystem machen. Im Zuge dessen werfen wir einen Blick unter die Haube von Ubuntu und widmen uns den Möglichkeiten, die wir haben, um uns von der Sicherheit zu überzeugen oder diese sogar noch auszubauen. Schließlich widmen wir uns der Verschlüsselung von E-Mails.
20.3.1 Verschiedene Konzepte
Sehen wir uns nun die beiden grundlegenden Unterschiede zwischen Linux und Windows einmal genauer an:
- Bei beiden Systemen ist ein wesentlicher Teil des Konzeptes, dass es Benutzer mit unterschiedlichen Privilegien gibt. Bei Linux hat ein Benutzer tatsächlich nur Zugriff auf seine persönlichen Daten. Somit kann der Benutzer auch nur seine eigenen Daten verändern oder löschen. Unter Windows XP zum Beispiel ist der Benutzer standardmäßig ein Administrator, also ein Benutzer, der uneingeschränkten Zugriff auf das gesamte System hat. Jeder Virus, der in ein solches System eindringt, hat dann die gleichen Rechte wie der Benutzer, der gerade im Internet war. Und wenn der Benutzer ein Administrator ist, dann hat auch der Virus Zugriff auf das gesamte System.
- Nun weiß der Windows-Benutzer ja, dass man unter Windows nicht unbedingt ein Administrator sein muss. Man kann sich auch die Rechte entziehen und als eingeschränkter Benutzer durch das System navigieren. Aber jetzt mal im Ernst, haben Sie dies schon einmal probiert? Ich kann Ihnen sagen, dass dies mit solchen Hürden verbunden ist, dass Sie ganz schnell die Nase voll davon haben werden und sich – trotz der Gefahr – lieber wieder einen Administrator-Status zulegen werden.
- Es kann bestimmt nicht Teil des Sicherheitskonzeptes von Windows sein, unsichere Dienste standardmäßig im Internet anzubieten, trotzdem geschieht es. Geht Windows dieses Risiko aus Bequemlichkeit ein oder damit z. B. der Benutzer noch eine Animation mehr beim Surfen hat? Ich möchte hier nicht näher auf dieses Thema eingehen, im Internet finden Sie bei Bedarf sehr viele Informationen hierzu.
- Aber es geht auch anders. Bei Linux sind solch unsichere Dienste abgeschaltet. Dies mag zwar manchmal etwas unbequemer für den Benutzer sein, ist aber wesentlich sicherer.
Damit haben wir gerade die wichtigsten Gründe kennengelernt, warum Windows-Systeme so anfällig für Schädlinge sind: Es liegt gar nicht am Konzept selbst, sondern an der mangelhaften oder fehlenden Umsetzung bzw. Umsetzbarkeit. Daraus ergibt sich dann die Notwendigkeit von Virenscannern und Firewalls. Ich möchte noch einmal betonen, dass man Windows prinzipiell schon sehr sicher machen kann, nur ist dafür eine Menge Handarbeit nötig, die gerade den PC-Anfänger überfordert.
20.3.2 Root versus sudo
Ein wichtiger Grund für die hohe Sicherheit von Linux-Systemen gegenüber Windows ist die strikte Beschränkung bei den Zugriffsrechten. Vergleichbar ist dies überhaupt nur mit den NT-basierten Systemen von Windows, also NT,
2000 und XP. Die Windows-9.x-Reihe hat keine (ausreichende)
Rechteverwaltung. Sie haben bereits einige Grundlagen über die Verwendung von Root bzw. sudo kennengelernt, in diesem Abschnitt wollen wir diese Kenntnisse noch einmal vertiefen und weiter ausbauen.
Root ist der Superuser unter Linux, vergleichbar mit dem Administrator unter Windows, er darf quasi alles. Ihm gehören fast alle Dateien des Systems und er kann alle Dateien bearbeiten. Ähnliches gilt für den Admin-Account bei Windows-Systemen. Daher ist es aus oben genannten Gründen sehr gefährlich, ständig mit Root-Rechten unterwegs zu sein.
Auch unter Windows 2000 und XP Professional ist es möglich, aus dem laufenden System heraus (vorübergehend) Systemverwaltungsrechte zu erlangen, um z. B. ein Programm zu installieren. Man muss dafür die Umschalt-Taste gedrückt halten, einen Rechtsklick auf eine ausführbare Datei (z. B. Installationsprogramm, die Systemsteuerung ist leider nur über Umwege erreichbar) machen, und dort »Ausführen als« wählen. Dort gibt man dann den Benutzer Administrator und das zugehörige Passwort an. Schon startet das gewünschte Programm mit Administratorrechten. Trotz dieser Möglichkeiten melden sich Windows-Benutzer in den meisten Fällen gleich als Administrator an, da auf diese Weise die Bedienung des Systems sehr bequem und einfach ist.
Als Administrator oder Root zu arbeiten hat aber entscheidende Nachteile, besonders dann, wenn der Rechner mit dem Internet verbunden ist. Gelingt es einem Angreifer, in das System einzudringen (eventuell mit einem Virus), so besitzt er ebenfalls sofort Administratorrechte und kann tun, was immer er will. Bei Linux-Systemen hingegen ist es sehr einfach, während des Betriebs kurzzeitig Root-Rechte zu erlangen. Hat man dann die Aufgabe erledigt, meldet man sich als Root ab und ist wieder normaler Benutzer.
Dieses Prinzip macht das System sehr sicher. Denn sollte es trotzdem einmal einem Angreifer gelingen, sich in das System einzuklinken, hat er nur normale Benutzerrechte, d. h., er darf ausschließlich die Dateien im Home-Verzeichnis des Benutzers bearbeiten. Auf den Großteil des Computers, vor allem auf die sensiblen Bereiche, hat er keinerlei Zugriff.
Root – der Standard bei Linux
Bei jedem Linux-System muss man, meist bei der Installation, einen Benutzer Root und ein Passwort für diesen Benutzer angeben. Darüber hinaus können noch weitere Benutzer angelegt werden. Will man nun im laufenden Betrieb eine Aktion durchführen, die Systemverwaltungsrechte erfordert, wird man von Linux zur Eingabe des Root-Passworts aufgefordert. Im Terminal kann man mit su und dem Root-Passwort zu Root werden. Nach Beendigung der Aufgabe verlässt man das entsprechende Programm und ist wieder der normale Benutzer.
Diese Methode hat sich bereits über einen langen Zeitraum bewährt, sie hat jedoch auch einige Nachteile, die nachfolgend beschrieben werden sollen:
1. | 1. Es kann nur einen Superuser Root geben. |
2. | 2. Vergisst man, sich als Root abzumelden, bleibt das System gefährdet. |
3. | 3. Man muss sich mindestens zwei (unterschiedliche) Passwörter merken. |
4. | 4. Es verleitet zur ständigen Arbeit als Root. |
sudo – der Standard unter Ubuntu
Gerade den Umsteigern von einer anderen Linux-Distribution dürfte während der Installation aufgefallen sein, dass man nirgendwo ein RootPasswort festlegen musste. Der Grund ist ein ganz einfacher: Ubuntu verwendet sudo. Aber was ist das eigentlich genau?
Nun, in der »normalen« Linux-Welt gibt es, stark vereinfacht gesagt, Roots und User. Die Roots dürfen alles (Administration, Installationen etc.), die User dürfen das System lediglich »benutzen«. Sudo (Substitute User DO) ist lediglich ein Paket, das einem normalen User zeitweise (d. h. für den Befehl, vor dem ein sudo steht) die privilegierten Rechte eines Roots einräumt. Hierzu muss er dann bei jeder Benutzung von sudo sein normales Benutzerkennwort als Authentifizierung einsetzen. Es ist sozusagen eine Vereinfachung für den User, damit er sich nicht für jede Kleinigkeit als Root »umloggen« muss. Wer in letzter Zeit einen Mac sein eigen nannte, kann sich vielleicht an diese Art des Root-Umgangs erinnern. Der Ansatz ist dort der gleiche.
Natürlich hat nicht jeder Nutzer diese Möglichkeit: Administrative Befehle mit sudo kann im Normalfall nur der bei der Installation von Ubuntu angelegte Benutzer (Uid=1000) durchführen. Um zusätzlichen Benutzern die Möglichkeit zu geben, auch mit sudo zu arbeiten, müssen diese Benutzer zu der Linux-Gruppe admin hinzugefügt werden.
Ein Nachteil dieses Verfahrens ist, dass man bei längerer Tätigkeit als Root eventuell das Passwort mehrmals eingeben muss. Außerdem verleitet es dazu, ein recht einfaches Passwort zu wählen. Ansonsten bietet dieser Ansatz aber einige Vorteile:
1. | 1. Es kann mehrere Superuser mit unterschiedlichen Rechten geben. |
2. | 2. Das Passwort bleibt 15 Minuten lang aktiv, danach wird es automatisch deaktiviert. |
3. | 3. Man muss sich meist nur ein Passwort merken. |
4. | 4. Es schult im Umgang mit Root-Rechten, da man es (in einer Root-Shell) immer wieder eingeben muss. |
Den Nachteil, dass man es vor jedem Befehl schreiben muss, kann man ganz leicht ändern, indem man in der Datei ~/.bashrc mit einem Texteditor Folgendes in der letzten Zeile hinzufügt:
alias su=''sudo -s''
Dann kann man von nun an mit su in ein simuliertes Root-Terminal umschalten.
Root-Passwort wieder deaktivieren
Da bei Ubuntu das ganze System auf sudo ausgerichtet ist, kann es zu großen Problemen führen, wenn man nachträglich den Benutzer Root aktiviert. Alle Werkzeuge unter dem Menüpunkt System · Systemverwaltung greifen z. B. auf das Programm gksudo zurück, das wiederum auf sudo basiert und nicht auf su.
Wenn jetzt aber der Benutzer Root freigeschaltet wurde, funktioniert die Anmeldung über sudo nicht mehr und sowohl die Menüpunkte als auch einige andere Sachen lassen sich nicht mehr aufrufen. Wenn Sie jetzt aber schon einen Root-Account angelegt haben, dann können Sie ihn folgendermaßen wieder deaktivieren:
user$ sudo passwd -l root
20.3.3 Allgemeine Bemerkungen
Auch in Linux gibt es immer mal wieder Sicherheitslücken, manche davon werden sogar als schwerwiegend bezeichnet. Kein Betriebssystem ist vor solchen Gefahren gefeit, auch Linux nicht. Diesen Eindruck möchte ich auch nicht hinterlassen, allerdings weist Linux im Gegensatz zu Windows ein paar Unterschiede im Umgang mit diesen Sicherheitslücken auf.
Durch den großen Kreis an freiwilligen Entwicklern und die Möglichkeit, dass jeder das Betriebssystem verbessern kann (Sie wissen schon – Open Source), werden Sicherheitslücken sehr schnell erkannt und dadurch auch wesentlich schneller geschlossen als bei der »Konkurrenz«.
Außerdem sind die möglichen praktischen Auswirkungen von Sicherheitslücken aufgrund des konsequent eingehaltenen Sicherheitskonzeptes vergleichsweise gering, dies hatte ich bereits besprochen.
Die größte Gefahr geht tatsächlich vom Benutzer, also von uns allen, aus:
Auch das beste Betriebssystem kann nicht verhindern, dass ein unvorsichtiger Anwender seine Bankdaten per unverschlüsselter E-Mail oder durch ein ungesichertes Programm versendet.
Deswegen ein paar eindringliche Worte zum Thema Sicherheit:
- Seien Sie stets wachsam, wenn Sie sich mit dem Internet auseinandersetzen, besonders, wenn es um das Thema Geld geht!
- Antworten Sie auf keinen Fall auf sogenannte Phishingmails[Phishing beschreibt die Tatsache, dass einige finstere GestaltenBenutzen Sie nur verschlüsselte Verbindungen, wenn Sie Online-Banking betreiben (SSL). Sie erkennen eine solche Verbindung daran, dass in der Adressleiste Ihres Browsers nicht mehr http://..., sondern https://... steht.]
20.3.4 SELinux
SELinux (Security Enhanced Linux) ist eine spezielle Erweiterung des Linux-Kernels. Es implementiert die Zugriffskontrollen auf Ressourcen im Sinne von Mandatory Access Control.[Mandatory Access Control ist ein Konzept für die Kontrolle und Durchsetzung von Zugriffsrechten auf Computern, bei der die Entscheidung über Zugriffsberechtigungen nicht auf der Basis Identität des Akteurs (Benutzers, Prozesses) und des Objektes (Datei, Gerät) gefällt wird, sondern aufgrund allgemeiner Regeln und Eigenschaften des Akteurs und Objektes. Auch erhalten häufig Programme eigene Rechte, die die Rechte des ausführenden Benutzers weiter einschränken.]
SELinux wurde maßgeblich von der NSA entwickelt. Für Kernel 2.4.x gibt es einen Patch, in Kernel 2.6.x ist SELinux direkt integriert. Die Linux-Distribution Fedora Core (Community-Version von RedHat) ist die erste Distribution, die von Haus aus SELinux-Unterstützung mitliefert. Fedora Core 3 und Red Hat Enterprise Linux 4 haben erstmals SELinux standardmäßig dabei und die Unterstützung ist ebenfalls standardmäßig aktiviert. Die Integration von SELinux in Ubuntu ist geplant und soll in einer der folgenden Veröffentlichungen vorhanden sein.