15.3 Ist Linux sicherer als Windows?
Linux und Windows unterscheiden sich in einigen 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 Sie es unter Windows schon kennen.
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. Zugegeben, 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.
15.3.1 Verschiedene Konzepte
Wir werden uns im Folgenden zuerst einmal die verschiedenen Konzepte der beiden Betriebssysteme etwas genauer ansehen und uns 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.
Privilegien
Bei beiden Systemen ist ein wesentlicher Teil des Konzepts, 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 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 er unter Windows nicht unbedingt ein Administrator sein muss. Er kann sich auch die Rechte entziehen und als eingeschränkter Benutzer durch das System navigieren. Aber jetzt mal im Ernst: Haben Sie das schon einmal probiert? Ich kann Ihnen sagen, dass dies mit erheblichen Hürden verbunden ist.
Sicherheitskonzept
Es ist bestimmt nicht Teil des Sicherheitskonzepts von Windows, unsichere Dienste standardmäßig im Internet anzubieten, trotzdem geschieht es. Geht Windows dieses Risiko aus Bequemlichkeit ein oder damit zum Beispiel 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 dafür wesentlich sicherer.
Windows kann sicher gemacht werden
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 Sie Windows prinzipiell schon sehr sicher machen können, es erfordert aber eine Menge Handarbeit, die gerade den PC-Anfänger überfordert.
15.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, XP, Vista und 7. Die Windows-9.x-Reihe hat keine (ausreichende) Rechteverwaltung. Sie haben bereits einige Grundlagen zur Verwendung von Root und 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 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.
Schwäche von Windows
Auch unter Windows Vista und Windows 7 ist es möglich, aus dem laufenden System heraus (vorübergehend) Systemverwaltungsrechte zu erlangen, um zum Beispiel ein Programm zu installieren. Sie müssen die -Taste gedrückt halten, eine ausführbare Datei (zum Beispiel ein Installationsprogramm; die Systemsteuerung ist leider nur über Umwege erreichbar) per Rechtsklick auswählen und dort Ausführen als wählen. Dort geben Sie 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.
Eindringlinge erben Rechte
Als Administrator oder als 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.
Stärke von Linux
Bei Linux-Systemen hingegen ist es sehr einfach, während des Betriebs nur kurzzeitig Root-Rechte zu erlangen. Haben Sie dann die Aufgabe erledigt, melden Sie sich als Root ab und sind wieder normaler Benutzer. Das Prinzip sudo sorgt dafür, dass Sie nur für einen bestimmten Befehl diese Root-Rechte benutzen.
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, er darf also 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 müssen Sie, meist bei der Installation, einen Benutzer Root und ein Passwort für diesen Benutzer angeben. Darüber hinaus können Sie weitere Benutzer anlegen. Wollen Sie nun im laufenden Betrieb eine Aktion durchführen, die Systemverwaltungsrechte erfordert, fordert Linux Sie zur Eingabe des Root-Passworts auf.
Im Terminal können Sie mit su und dem Root-Passwort zum Root werden. Nach Beendigung der Aufgabe verlassen Sie das entsprechende Programm und sind wieder der normale Benutzer. Diese Methode hat sich bereits über einen langen Zeitraum bewährt, sie hat jedoch auch einige Nachteile:
- Es kann nur einen Superuser Root geben.
- Vergessen Sie, sich als Root abzumelden, bleibt das System gefährdet.
- Sie müssen sich mindestens zwei (unterschiedliche) Passwörter merken.
- Die Methode 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 von Ubuntu aufgefallen sein, dass sie nirgendwo ein Root-Passwort festlegen mussten. Der Grund ist ein ganz einfacher: Ubuntu verwendet sudo. Aber was ist das eigentlich genau?
In der »normalen« Linux-Welt gibt es, einfach gesagt, Roots und User. Die Roots dürfen alles mit dem System »anstellen« (Administration, Installationen etc.), die User dürfen es lediglich »benutzen«. Sudo (Substitute User Do) ist ein Paket, das einem normalen User zeitweise (das heißt 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 also eine Vereinfachung für den User, damit er sich nicht für jede Kleinigkeit als Root »umloggen« muss. Mac-Besitzer erinnern sich vielleicht an diese Art des Root-Umgangs. Der Ansatz ist dort der gleiche.
Das Konzept von sudo bietet einige Vorteile:
- Es kann mehrere Roots mit unterschiedlichen Rechten geben.
- Das Passwort bleibt 15 Minuten lang aktiv, danach wird es automatisch deaktiviert.
- Sie müssen sich meist nur ein Passwort merken.
- Sie brauchen sich nicht explizit wieder als Root abzumelden und können dies somit auch nicht vergessen.
Während der Installation erhält der erste Benutzer privilegierte Rechte: Sein Passwort ist zugleich für Administratoraufgaben gültig. Starten Sie beispielsweise ein Systemprogramm wie den Paketmanager Synaptic, so wird dieses Passwort unmittelbar nach dem Start des Programms abgefragt.
Aus einer Konsole heraus lassen sich Programme nur dann mit Root-Rechten starten, wenn der Befehl sudo vorangestellt wird, also zum Beispiel so:
sudo apt-get install <Programmpaket>
Auch hier ist vor der eigentlichen Befehlsausführung stets das Passwort des Standardbenutzers einzugeben.
Diejenigen unter den Lesern, die von einer anderen Linux-Distribution zu Ubuntu migriert sind, können das bekannte Wechseln via su in eine Root-Konsole folgendermaßen realisieren: Ergänzen Sie die versteckte Datei .bashrc mit einem Editor Ihrer Wahl um die folgenden Zeilen:
gedit ~/.bashrc
#Auszug aus .bashrc
alias su='sudo -s'
Starten Sie anschließend eine neue Shell. In dieser können Sie nun bequem per su in eine Root-Shell wechseln.
Wenn Sie ein Mehrbenutzersystem eingerichtet haben, so können Sie anderen Benutzern ebenfalls die Verwendung von Systemprogrammen gestatten, indem Sie diese einfach der Administratorgruppe zuordnen.
Dies geschieht am schnellsten durch den Standardbenutzer mit folgendem Befehl:
sudo adduser <Name> admin
Der Benutzer kann nun mit seinem eigenen Passwort auf der Konsole den sudo-Befehl verwenden.
Root-Account wieder deaktivieren
Wenn Sie bereits einen Root-Account angelegt haben, dann können Sie ihn folgendermaßen wieder deaktivieren:
sudo passwd -l root
Sie brauchen aber nicht für jede zu startende Anwendung ein separates Terminal oder einen gesonderten Reiter darin zu öffnen. Hängen Sie zusätzlich ein Kaufmanns-Und (zum Beispiel nautilus &) an, um den Prozess direkt im Hintergrund zu starten und die Konsole für weitere Eingaben freizugeben. Einfluss auf die eventuellen Fehlermeldungen hat dies nicht; sie erscheinen weiterhin im Terminal.
Sicherheit – eine Stärke von Open Source
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. Allerdings weist Linux im Gegensatz zu Windows ein paar Unterschiede im Umgang mit diesen Sicherheitslücken auf.
Durch den großen Kreis von 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, wie bereits besprochen wurde.
Die größte Gefahr geht tatsächlich vom Benutzer selbst 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 im Internet bewegen, besonders wenn es um das Thema Geld geht!
- Antworten Sie auf keinen Fall auf sogenannte Phishing-Mails, und benutzen Sie keine Links, die Ihnen per E-Mail zugesandt werden!
- Seien Sie misstrauisch bei (vermeintlichen) E-Mails von Ihrer Bank und behalten Sie im Hinterkopf, dass eine Bank niemals per E-Mail nach Passwörtern oder sonstigen persönlichen Angaben fragen würde.
- Benutzen Sie nur verschlüsselte Verbindungen, wenn Sie Onlinebanking betreiben (SSL). Sie erkennen eine solche Verbindung daran, dass in der Adressleiste Ihres Browsers nicht mehr http://..., sondern https://... steht.
Phishing beschreibt eine Methode, wie einige finstere Gestalten im Internet versuchen, an Ihre Bankdaten heranzukommen, um anschließend Ihr Konto zu plündern. Zu diesem Zweck werden E-Mails verschickt, die täuschend echt das Layout Ihrer Bank imitieren. In solchen E-Mails werden Sie auf irgendeine Art aufgefordert, einen Link in dieser E-Mail anzuklicken. Dadurch kommen Sie dann auf eine speziell eingerichtete Internetseite, die wiederum genauso aussieht wie die von Ihrer Bank. Wenn Sie auf dieser Seite irgendwo Ihre geheimen Daten eintippen, hat der Verbrecher sein Ziel erreicht. Er besitzt nun Ihre Daten und kann Ihr Konto leer räumen.
Tipp 241: Die Herkunft des Firefox verschleiern |
Wenn Sie durch das Internet surfen, hinterlassen Sie Spuren. So kann Firefox einer Website unter anderem verraten, welche Website Sie davor besucht haben. Für den Webseitenbetreiber ist es durchaus interessant zu erfahren, von welchen Seiten die meisten Besucher zu ihm gelotst werden. Sollten Sie dieses Verhalten nicht wünschen, können Sie es wie folgt abschalten: Geben Sie in der Adressleiste about:config ein und bestätigen Sie die folgende Aufforderung, vorsichtig zu sein. Geben Sie dann referer als Filter ein. Per Doppelklick auf den Wert von network.http.sendRefererHeader (standardmäßig 2) öffnet sich ein Dialogfenster, in dem Sie den Wert auf 0 setzen können. Anschließend können Sie die Seite einfach schließen. |
15.3.3 SELinux
SELinux (Security-Enhanced Linux) ist eine spezielle Erweiterung des Linux-Kernels. Es implementiert die Zugriffskontrollen auf Ressourcen im Sinne von Mandatory Access Control. 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-Distributionen Fedora und Red Hat Enterprise Linux enthalten SELinux standardmäßig, und die Unterstützung ist ebenfalls standardmäßig aktiviert. SELinux lässt sich in Ubuntu nachinstallieren. Die standardmäßige Integration von SELinux wurde zugunsten von AppArmor (siehe nächster Abschnitt) und PolicyKit aufgegeben.
Mandatory Access Control: Mandatory Access Control ist ein Konzept für die Kontrolle und Durchsetzung von Zugriffsrechten auf Computern, bei dem die Entscheidung über Zugriffsberechtigungen nicht auf der Basis der Identität des Akteurs (Benutzers, Prozesses) und des Objekts (Datei, Gerät) gefällt wird, sondern aufgrund allgemeiner Regeln und Eigenschaften des Akteurs und Objekts. Auch erhalten häufig Programme eigene Rechte, die die Rechte des ausführenden Benutzers weiter einschränken.
15.3.4 AppArmor
AppArmor ist ein Sicherheitsframework, das bis vor Kurzem noch von Novell entwickelt wurde und in Ubuntu standardmäßig mit den zugehörigen Sicherheitstools Einzug gehalten hat. Der Sinn und Zweck von AppArmor ist es, die Rechte von Anwendungen und der von ihnen gestarteten Prozesse zu beschneiden – im besten Fall, ohne dass der Anwender davon etwas bemerkt. Auf diese Weise lässt sich die Sicherheit des Systems drastisch erhöhen, und selbst Zero-Day-Exploits stellen keine große Gefahr mehr dar. Allerdings funktioniert das nur unter der Voraussetzung, dass für das verwundbare Programm ein AppArmor-Profil vorhanden ist und die Rechte dort entsprechend beschnitten wurden. Experimentierfreudige Anwender können natürlich vorhandene Profile erweitern oder neue erstellen.
Zero-Day-Exploits: Ein Exploit (engl. to exploit, ausnutzen) ist ein kleines Schadprogramm, welches die Sicherheitslücken von anderen Programmen ausnutzt. Wird eine Sicherheitslücke entdeckt und nicht dem Hersteller gemeldet, so wird diese Schwachstelle erst nach dem ersten Angriff bekannt. Der Name des dabei genutzten Exploits leitet sich daher vom »nullten Tag« (engl. zero day) ab, wobei Informatiker generell mit der Null zu zählen anfangen.
15.3.5 Was wird überwacht?
Wenn Sie wissen möchten, was AppArmor genau überwacht, hilft Ihnen der Befehl sudo apparmor_status:
apparmor module is loaded.
17 profiles are loaded.
17 profiles are in enforce mode.
/sbin/dhclient
/usr/bin/evince
...
0 profiles are in complain mode.
5 processes have profiles defined.
5 processes are in enforce mode.
/sbin/dhclient (2701)
/usr/bin/evince (3661)
...
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.