23.2 Unix und Sicherheit
Im Folgenden wollen wir erst einmal klären, mit welchen Sicherheitskonzepten Linux und BSD von Haus aus bereits ausgestattet sind. Erst wenn man diese Eigenschaften versteht und richtig nutzt, macht eine weitergehende Absicherung Sinn.
23.2.1 Benutzer und Rechte
Unix ist von Haus aus mehrbenutzerfähig. Das impliziert das bereits ausführlich vorgestellte Benutzer- und Rechtesystem. Ein normaler Benutzer hat dabei in aller Regel keinen Vollzugriff auf das System – und das ist unter Sicherheitsgesichtspunkten auch gut so.
Schließlich braucht man keine Schreibrechte auf wichtige Programme, man will sie nur ausführen. Man möchte als normaler Benutzer Geräte nur benutzen und keine neuen Treiber für sie konfigurieren. Auch gehen einen die Dateien anderer Benutzer nichts an, außer natürlich, der Zugriff wird explizit erlaubt.
Da der Eigentümer eine Eigenschaft des Prozesses ist, können und sollten Serverdienste unter speziellen Benutzern laufen. Wird nämlich ein solcher Dienst durch einen Exploit dazu gebracht, Code eines Angreifers auszuführen, läuft dieser Code unter einem eingeschränkten Benutzerkonto. Wenn der Administrator also nicht als root am System arbeitet und als root auch keine Dienste laufen lässt, ist eine gewisse Grundsicherheit auf jeden Fall gewährleistet.
23.2.2 Logging
Eine weitere, sicherheitsrelevante Eigenschaft von Linux/Unix ist das Logging. Über das Logging kann nachvollzogen werden, was im System passiert und schon passiert ist. Im Falle einer Systemkompromittierung kann nachvollzogen werden, wer sich wann und von welcher IP-Adresse aus eingeloggt hat. Im Falle eines Serverproblems kann anhand der Logfiles in der Regel nachvollzogen werden, wo das Problem genau liegt und wie es vielleicht behoben werden kann.
Natürlich besteht der erste Schritt eines Angreifers normalerweise darin, die Logfiles zu »desinfizieren« – also entweder nur die verdächtigen Meldungen oder gleich die ganzen Logfiles zu löschen. Setzt man dagegen einen zentralen Loggingserver ein, wie im Abschnitt zu syslogd beschrieben wurde, wird dieses Unterfangen für den Angreifer schon schwieriger.
23.2.3 Netzwerkdienste
Aber auch die normalerweise installierten Netzwerkdienste sind in der Regel auf Sicherheit bedacht. So wird zum Beispiel der SSH-Dienst, der Verschlüsselungsalgorithmen nutzt, anstatt des unsicheren Telnets installiert. Dabei handelt es sich zwar um einen sicheren Dienst, aber eine wichtige Frage stellt sich doch: Was braucht man eigentlich wirklich?
Oft werden zum Beispiel folgende Dienste installiert, die man auf einem Serversystem kaum brauchen wird:
- famd
- Der file alteration monitor daemon überwacht die Veränderung von Dateien – wenn man zum Beispiel auf der Konsole eine Datei löscht, kann so die Ansicht im Dateimanager unter KDE aktualisiert werden. Allerdings gibt es nur wenige Serverdienste, die diesen Dienst wirklich brauchen. Von daher kann er ruhig deinstalliert werden.
- portmap
- Setzt man auf dem Server kein NFS und keinen famd ein, so kann man den portmap deinstallieren.
- Alternativ kann der Dienst so konfiguriert werden, dass er nur auf dem Loopback-Device hört.
- *identd
- Über diesen Dienst kann man herausfinden, unter welchen Benutzerrechten ein Prozess läuft, der eine bestimmte TCP-Verbindung geöffnet hat. Bloß weg damit!
- fingerd
- Über den fingerd kann man bekanntermaßen herausfinden, welche Benutzer gerade eingeloggt sind. Das ist nichts, was man auf einem öffentlichen Server haben möchte.
- ...
- Leider gibt es noch viel mehr unsichere Dienste, als wir hier aufzählen können.