Linux findet, vor allem als zuverlässiges Server-Betriebssystem, immer mehr Verbreitung. Die meisten dieser Linux-Installationen sind, insbesondere an der TU, ständig mit dem Internet verbunden. Aus diesem Grund ist es besonders wichtig, über die Sicherheit der Installation Überlegungen anzustellen.
Das Gerücht, Linux sei ein "Hacker-Betriebssystem", geht einerseits auf die große Verbreitung und gute Dokumentation zurück, bewahrheitet sich bezüglich Netzwerksicherheit aber nur dann, wenn das entsprechende Fachwissen, das zum Betrieb eines Servers nötig wäre, fehlt (das gilt nicht nur für Linux). Da die Installation von Linux jetzt schon sehr bequem und menügeführt vonstatten geht, ist dafür ein solches Wissen nicht nötig, um zu einem lauffähigen Linux zu kommen, was sich im Betrieb allerdings rächen kann. Um sich dieses Wissen gezielter aneignen zu können, möchte ich in Form einer Checkliste die mir am wichtigsten erscheinenden Punkte zusammenfassen. So haben Sie einerseits eine grobe Konfigurations-Richtlinie zur Verfügung, andererseits können Sie Ihr Wissen gezielter vertiefen, wenn Sie beim Durchlesen der Checkliste auf Wissenslücken stoßen.
Es ist für ein komplexes Server-Betriebssystem, welches noch dazu in verschiedensten Distributionen und Versionen verfügbar ist, evident, dass diese Liste keinen Anspruch auf Vollständigkeit hat.
Tipp 1 |
Starten Sie nur die benötigten Services (Daemons) |
a |
Start über Startupscripts |
Top |
Die folgenden Daemons werden über Startupscripts gestartet, welche sich in einem für den jeweiligen Runlevel relevanten Verzeichnis befinden.
Wie weiß ich den Standard Runlevel ? grep default /etc/inittab Als Ergebnis sehen Sie eine Zeile, z.B: id:3:initdefault: Die 3 entspricht dem eingestellten Runlevel. Wenn Sie z.B. den unten angegebenen dhcp-Server deaktivieren wollen, gehen Sie in das dem Runlevel entsprechende Verzeichnis z.B. /etc/rc.d/rc3.d (kann je nach Distribution variieren) und nennen Sie die Datei S35dhcpd auf s35dhcpd um. Beim nächsten Reboot wird dieser Daemon nicht mehr gestartet. Die Nummer hinter dem "S" gibt die Startreihenfolge an und kann je nach Distribution variieren. Einige Beispiele von Startupscripts: S05apmd You only need this for laptops |
b | Start über inetd.conf -> TCP-Wrapper einbauen |
Top |
Beispiel: Hier ist z.B. nur ftp und swat (Samba Configuration Tool) erlaubt, ftp und swat werden über den TCP-Wrapper (tcpd) umgeleitet. Das System
läuft auch noch, wenn man alles auskommentiert, also keine falsche Scheu, besser man dreht ein Service ab, das man nachher wieder aktivieren muss,
als man wird Opfer einer Hackerattacke!
# Nicht vergessen: Nach Editieren inetd.conf: killall -HUP inetd (inetd liest das conf-File neu ein!) Achtung:
Neue Versionen haben oft statt des inetd den xinetd laufen, dann ist die Konfigurationsdatei meist in mehrere, für jedes Service eine, aufgeteilt, die sich in einem eigenen Verzeichnis, meist /etc/xinetd.conf befinden. Dieser neue xinetd hat die TCP-Wrapper-Funktion bereits eingebaut und ist flexibler zu konfigurieren. Die Syntax ist etwas anders, siehe "man xinetd" und "man xinetd.conf". |
Tipp 2 |
Zugriffsrechte über TCP-Wrapper einschränken |
Top |
Der TCP-Wrapper wird über 2 config-Dateien konfiguriert. Außerdem müssen
die Einträge in /etc/inetd.conf modifiziert werden. Z.B.:
/etc/hosts.deny:
/etc/hosts.allow: Funktion testen ! Das heißt: alle Dienste, die über tcpd gestartet werden, sind für "mysubnet ..." erlaubt, jedoch swat nur für die eine Maschine "mycomputer.mysubnet" und für die lokale Maschine. Siehe auch: man 5 hosts_access Auch den Portmapper-Zugriff kann man bei Linux über host.allow/deny konfigurieren.
Achten Sie natürlich auch auf spezielle Services, die Sie selbst gestartet haben: z.B. appletalk, mars-nwe (Novell-Server) etc. |
Tipp 3 |
Shadow Password verwenden, auf sinnvolle Passwörter achten |
Top |
Bei RedHat: Wenn Sie die Option "shadow-passwords" beim Installieren vergessen haben, hilft: pwconv |
Tipp 4 |
Auf File Permissions achten beim Einrichten von Usern, Gruppen |
Top |
Da kann man nicht viel dazu sagen, hängt von der Struktur ab, die man abbilden will. Siehe: man chmod, man chgrp, man chown
Bei RedHat: gute graphische Konfigurationshilfe: linuxconf |
Tipp 5 |
Womöglich nur ssh verwenden (oder onetime-passwd) |
Top |
Um sich von Windows oder Mac einzuloggen: Teraterm bzw. nifty-telnet Teraterm (für Windows): http://hp.vector.co.jp/authors/VA002416/teraterm.html Nifty-Telnet (für Mac): http://www.lysator.liu.se/~jonasw/freeware/niftyssh/ |
Tipp 6 |
Wenn User für Samba oder pop u.dgl. eingerichtet werden: |
Top |
keine Shell (/bin/false im /etc/passwd) und eigenes Passwort, welches in keinem Shell-Account verwendet wird. Auch für ftp-User, dann muss man aber /bin/false in /etc/shells eintragen.
Sollte sich dann jemand das Passwort mittels eines Sniffers aneignen, kann er zwar Dateien transferieren, jedoch keine Kommandos absetzen bzw. Programme starten. |
Tipp 7 |
Achten Sie auf offene X-Verbindungen |
Top |
(also remote X-Server: X-Terminal, andere Unix/Linux-Maschine, Windows mit X-Server, z. B. HCL-Exceed)
Wenn X-Windows-Sessions nicht über ssh getunnelt werden, kann
Punkt b.) ist nur möglich, wenn der X-Server für alle zugänglich ist. |
Tipp 8 |
Samba Server absichern |
Top |
|
Tipp 9 |
Achten auf Netzwerktopologie: große Collisiondomain ? |
Top |
Sind andere schwach gesicherte Maschinen im Netz ? -> Gefahr durch potentielle Passwort-Sniffer !
Abhilfe: Bessere Sicherung der Maschinen durch strukturierte Verkabelung, Switches, Bridges etc. |
Tipp 10 |
Eventuell zusätzliche Filterung mit Packetfilter (ipchains) |
Top |
Logging für die Rules aktivieren ? (option -l) Siehe: http://gd.tuwien.ac.at/opsys/linux/LDP/HOWTO/IPCHAINS-HOWTO.html
Verwenden Sie ipchains und andere Firewall-Lösungen nur, wenn Sie wirklich wissen, was Sie tun, und testen Sie die Konfiguration auf ihre gewünschte Funktion, damit Sie sicher gehen, dass hier nicht nur Sicherheit vorgetäuscht wird. |
Tipp 11 |
Eventuell einfache Firewall-Lösungen |
Top |
mit packetfilter in forward-chain, Masquerading, siehe http://linux.tuwien.ac.at/firewall.html |
Tipp 12 |
Bei Kernel >= 2.2.x -> Spoofing Protection möglich |
Top |
Spoofing Protection verhindert das Vortäuschen falscher IP-Adressen.
echo 1 > /proc/sys/net/ipv4/conf/ethx/rp_filter |
Tipp 13 |
Achten Sie auf Veröffentlichungen von Securitybugs, Patches ... |
Top |
Siehe Homepages der diversen Distributionen. |
Tipp 14 |
Erkennen von Hackerattacken I |
Top |
evtl. cronscripts, welche potentielle Attacken erkennen, wie z.B.: logcheck ...
Achten Sie in den Logfiles auf "connect from unknown": könnte Portscanner-Aktivitäten anzeigen. |
Tipp 15 |
Erkennen von Hackerattacken II |
Top |
Kopieren Sie Programme, die Sie zum Aufspüren von Hackern brauchen, wie ps, ls, ifconfig, top, find, grep, cksum, md5sum usw., unter einem anderen Namen auf ein anderes Verzeichnis.
Machen Sie nach der Erstinstallation von diesen (oder vom ganzen /bin/* /sbin/* ) ein cksum oder md5sum und notieren Sie sich die Checksummen (ausdrucken, auf anderer Maschine speichern). Wenn Sie den Verdacht hegen, dass ein Hacker auf Ihrer Maschine sich versteckt hält, machen Sie den oben beschriebenen Vorgang nochmals in eine andere Datei und vergleichen Sie die beiden Dateien mit "diff". Wenn Unterschiede gemeldet werden, wurde etwas verändert (könnte natürlich auch von Ihnen durch irgendwelche Updates verursacht sein, daher nach einem Update den Vorgang wiederholen.)
So können Sie feststellen, ob ein Eindringling einige Ihrer wichtigen Systemprogramme ausgetauscht hat, um Spuren zu verschleiern. |
Tipp 16 |
Allgemeine Hinweise |
Top |
Wenn Sie einfach eine Standardinstallation durchführen, sollten Sie daran denken, dass, je nach Distribution, der Bequemlichkeit halber viele Komponenten und Dienste mitinstalliert werden, die Sie meist nicht brauchen. Informieren Sie sich bitte, was das für Komponenten sind, die da laufen. Machen Sie einen Portscan (dieser wird auf Wunsch vom ZID für Sie durchgeführt: E-Mail an security@tuwien.ac.at mit dem Betreff "Systemcheck".) Tipp 1 soll Ihnen dabei als Anhaltspunkt und Hilfe dienen, allerdings ohne einen Anspruch auf Vollständigkeit. Vorsicht bei fertig installierten Firmenlösungen: Erfahrungsgemäß sind die Leute, die das System installieren, nicht mit so großen Netzwerken, wie auf der TU vorhanden, konfrontiert. Daher fehlt auch oft eine gewisse Erfahrung; wieder laufen einige nicht benötige Dienste.
Weitere Informationen können Sie durch die "HOWTOs" des LDP (Linux Documentation Project) bekommen, siehe: http://gd.tuwien.ac.at/opsys/Linux/LDP/. |
Sollte Ihnen das alles zu viel sein, können Sie für Ihren Server auch einen Wartungsvertrag bei uns (Zentraler Informatikdienst, Abteilung Standardsoftware) abschließen, siehe:
sts.tuwien.ac.at/pss/