Dieses Dokument ist verfübar auf: English Castellano ChineseBig5 Deutsch Francais Italiano Nederlands Portugues Russian Turkce |
von Michael Jastremski Über den Autor: Michael Jastremski arbeitet seit ca. 4 Jahren mit Unix. Seine WEB-Site finden Sie hier: http://westphila.net/mike. Er dankt Andrew <andy@westphila.net> für die Hilfe mit seinem Englisch Inhalt: |
Zusammenfassung:
eser Artikel beschreibt Möglichkeiten, wie System Administratoren ihr System gegen ein Eindringen von außen schützen können. Er beschreibt mehrere Wege die Sicherheit eines Linux Systems zu verbessern.
Groß angelegte Versuche in an das Internet angeschlossen Computer einzudringen gehören zur Tagesordnung. Im steigenden Maße sind LINUX und FreeBSD Server Ziele der jüngsten Attacken, die Buffer overflows im imapd und den BIND Sourcen mit sich bringen. Jeden Tag werden neue verwundbare Stellen aller Art in der 20.000 Abonnenten zählenden BUGTRAQ Mailingliste offengelegt. (Ein Tip: Auch wenn Sie sich nur auf einer Security Mailingliste eintragen, sollte es diese sein.)
Es wäre kurzsichtig nicht anzunehmen, daß nicht wenigstens einer der 19305 Abonnenten dieser Mailingliste eine for() Schleife mit ein wenig Programmcode drumherum erstellt, in der Hoffnung Zugriff auf so viele Computer wie möglich zu bekommen.
Früher oder später wird diese Schleife die Adresse des eigenen Computers konstruieren. Es gibt keinen besseren Zeitpunkt sich vorzubereiten als jetzt.
Im Gegensatz zu dem, was einem mache "Experten" weiß machen wollen, ist es nicht so schwierig ein sicheres Computersystem zu installieren und zu warten. Eine vernünftige Systemadministration hilft sich vor der Bedrohung aus dem globalen Netz zu schützen. Dieser Artikel beschreibt einige Vorkehrungen, die ich normalerweise treffe, wenn ich ein vernetztes RedHat Linuxsystem konfiguriere. Dieser Artikel beschreibt ein paar generelle Grundregeln wie man sich vor den böswilligen Versuchen anderer schützen kann. Er ist nicht als komplette Referenz gedacht.
Die folgenden Schritte werden hoffentlich Ihr System davor bewahren ein Opfer der nächsten offen gelegten Schwachstelle in Ihrer Netzwerksoftware zu werden. Aber ACHTUNG: Wenn Sie sich nicht vollkommen sicher sind was Sie tun, lassen Sie es. Einige der Schritte setzen ein gewisses Maß an Verständnis Ihrerseits voraus. Eine Liste mit weiterführender Literatur finden Sie am Ende des Artikels.
1. Alle unnötigen Netzwerkdienste vom System entfernen. Je weniger Wege es gibt, sich mit Ihrem Computer zu verbinden, desto weniger Wege gibt es auch für einen Eindringling einzubrechen. Kommentieren sie alles aus der /etc/inetd.conf aus, was Sie nicht benötigen. Sie brauchen keinen telnet Zugang auf Ihrem System? Unterbinden sie es. Das gleiche gilt für ftpd, rshd, rexecd, gopher, chargen, echo, pop3d und ähnliches. Und vergessen Sie das Verzeichnis /etc/rc.d/init.d nicht. Einige Netzwerkdienste, wie z.B. BIND und Drucker Dämonen werden von diesen Scripten gestartet.
2.
Installieren Sie SSH. SSH ist ein Ersatz für die antiquierten Berkeley "r"
Kommandos. Sie können SSH unter folgender Adresse finden: http://www.cs.hut.fi/ssh.
SSH (Secure Shell) ist ein Programm, um sich via Netzwerk auf einem
anderen Computer anzumelden, dort Programme auszuführen und Dateien
zwischen den Rechnern auszutauschen. Es bietet eine strenge
Authentifikation und damit sichere Kommunikation über unsichere
Leitungen.
Es bietet außerdem noch einige Funktionen, die für einen ehrgeizigen Cracker sehr interessant seien dürften. Sie können SSH unter folgender Adresse http://ftp.rge.com/pub/ssh downloaden.
3. Benutzen Sie vipw(1) um alle Accounts zu sperren, bei denen sich kein Nutzer einloggen soll. Beachten Sie, daß bei RedHat Linux Accounts ohne login Shell standardmäßig /bin/sh als Shell benutzen, was ganz sicher nicht das ist, was Sie wollen. Achten Sie außerdem darauf, daß alle Accounts mit einem Passwort geschützt sind. Das folgende Beispiel zeigt, wie eine vernünftige password Datei aussehen kann.
daemon:*:2:2:daemon:/sbin:/bin/sync adm:*:3:4:adm:/var/adm:/bin/sync lp:*:4:7:lp:/var/spool/lpd:/bin/sync sync:*:5:0:sync:/sbin:/bin/sync shutdown:*:6:0:shutdown:/bin:/sync halt:*:7:0:halt:/sbin:/bin:/sync mail:*:8:12:mail:/var/spool/mail:/bin/sync news:*:9:13:news:/var/spool/news:/bin/sync uucp:*:10:14:uucp:/var/spool/uucp:/bin/sync operator:*:11:0:operator:/root:/bin/sync games:*:12:100:games:/usr/games:/bin/sync gopher:*:13:30:gopher:/usr/lib/gopher-data:/bin/sync ftp:*:14:50:FTP User:/home/ftp:/bin/sync nobody:*:99:99:Nobody:/:/bin/sync
4. Löschen Sie die "s" Bits bei allen Programmen die root gehören und dieses nicht unbedingt benötigen. Sie können dies durch den Befehl "chmod a-s" mit den/dem Namen der Datei(en) erreichen.
Zu solchen Programmen gehören u.a.:
Vor Dateien, die ich deaktivieren würde, habe ich ein Asterix(*) gesetzt. Doch denken Sie daran, daß Ihr System einige Dateien mit setuid braucht um sauber zu laufen.
Alternativ dazu können Sie auch eine spezielle Gruppe genannt "suidexe" erstellen; Nutzer denen Sie vertrauen, können Sie zu Mitgliedern dieser Gruppe machen. Die paar Programme, die suid benötigen, fügen Sie dann dieser Gruppe hinzu und löschen die allgemeinen Ausführrechte.
#find / -user root -perm "-u+s" */bin/ping */bin/mount -- nur root sollte Dateisystem mounten */bin/umount -- hier gilt das gleiche /bin/su -- Auf keinen Fall ändern! /bin/login /sbin/pwdb_chkpwd */sbin/cardctl -- Hilfsprogramme für PCMCIA Karten #/usr/bin/rcp -- Benutzen Sie ssh als Ersatz */usr/bin/rlogin -- ditto */usr/bin/rsh -- " */usr/bin/at -- Benutzen Sie cron, oder sperren Sie es ganz */usr/bin/lpq -- Installieren Sie LPRNG */usr/bin/lpr -- " */usr/bin/lprm -- " */usr/bin/mh/inc */usr/bin/mh/msgchk /usr/bin/passwd -- Auf keinen Fall ändern! */usr/bin/suidperl -- Neuere Versionen scheinen einen buffer overflow zu verursachen */usr/bin/sperl5.003 -- Nur benutzen wenn unbedingt notwendig /usr/bin/procmail -- */usr/bin/chfn */usr/bin/chsh */usr/bin/newgrp */usr/bin/crontab */usr/X11R6/bin/dga -- Viele buffer overflows unter X11 */usr/X11R6/bin/xterm -- " */usr/X11R6/bin/XF86_SVGA-- " */usr/sbin/usernetctl /usr/sbin/sendmail */usr/sbin/traceroute -- Es bringt Sie nicht um, gelegentlich das root Passwort einzugeben
5. Benutzen Sie die neueste Sendmail Version! Sie können den Sourcecode unter folgender Adresse downloaden: ftp://ftp.sendmail.org/pub/sendmail. Entpacken Sie es und lesen Sie die Anleitung. Falls sie noch ein paar Minuten Zeit haben, installieren Sie außerdem noch das im Sendmail Paket enthaltene Programm smrsh. Dieses Programm wirkt vielen Befürchtungen, die manche Menschen gegenüber sendmail haben, wie z.B. das Versenden von eMails an entscheidende Programme, entgegen. Bearbeiten Sie die Konfigurationsdatei sendmail.cf und setzen Sie die "PrivacyOptions" auf "goaway":
0 PrivacyOption=goaway
Wenn Sie nicht vorhaben Internet eMail zu empfangen, lassen Sie sendmail nicht im RECICE MODE (sendmail -bd) laufen. Ist dies der Fall disablen Sie /etc/rc.d/init.d/sendmail.ini/ und führen Sie den Befehl "killall -TERM sendmail" aus. Sie werden immer noch in der Lage sein, Mail nach aussen zu versenden.
6. Falls Sie BIND benutzen, verwenden Sie auch hier die aktuelle Version. Diese finden Sie unter http://www.isc.org. Wenn Sie BIND nicht benutzen,dann starten sie es auch nicht.
7. Übersetzen Sie den Kernel neu! Ich mache dieses normalerweise, und sei es nur um allen überflüssigen Ballast des Standardkernels los zu werden. Ein Tip: Schalten Sie alle Firewall-Optionen ein, selbst wenn der Rechner nicht als Firewall dienen soll.
CONFIG_FIREWALL=y CONFIG_NET_ALIAS=y CONFIG_INET=y #CONFIG_IP_FORWARD is not set #CONFIG_IP_MULTICAST is not set CONFIG_SYN_COOKIES=y CONFIG_RST_COOKIES=y CONFIG_IP_FIREWALL=y CONFIG_IP _FIREWALL_VERBOSE=y # CONFIG_IP_MASQUERADE is not set # CONFIG_IP_TRANSPARENT_PROXY is notset CONFIG_IP_ALWAYS_DEFRAG=y CONFIG_IP_ACCT=y #CONFIG_IP_ROUTER is not set # CONFIG_NET_IPIP is not set CONFIG_IP_ALIAS=m
8. Verwenden Sie Patches! Alle bekannten Probleme mit RedHat Linux werden auf der RedHat Errata Page aufgelistet. Schauen Sie unter http://www.redhat.com/support/docs/errata.html nach, welche Patches es für ihre Version gibt. RedHat bemüht sich, diese Seite immer auf dem aktuellen Stand zu halten. Sie finden dort auch Verweise zu den benötigten RPM Dateien nebst Installationsanleitung.
9. Konfigurieren Sie tcp_wrappers: Tcp_wrappers bieten eine Möglichkeit zu kontrollieren, welchen Computern im Netz es gestattet ist mit Ihrem Computer zu kommunizieren. Dieses Paket, das vom Sicherheits Guru Wieste Venema erstellt wurde, setzt sich vor die Programme, die durch inet.d gestartet werden bzw. die mit der Tcp_wrapper Bibliothek gelinkt wurden. Tcp_wrappers entscheiden anhand ihrer Konfigurationsdateien, ob eine Netzwerkverbindung zugelassen wird oder nicht. Um z.B. telnet und ftp zuzulassen und alles andere zu unterbinden, fügen Sie folgendes in die Datei /etc/hosts.allow ein:
in.ftd: .dialup.your-isp.com: allow all : all : deney
SSH, sendmail und andere Pakete können mit Tcp_wrapper Unterstützung erzeugt werden. Mehr Informationen finden Sie in der Manual Page für tcpd(1).
Secure Linux patches von Solar Designer:
http://www.false.com/security/linux/
replay.com RedHat crypto Seiten:
http://www.replay.com/redhat/
Verbessern der Sicherheit Ihres Rechners, indem Sie versuchen selbst
in ihn einzubrechen
http://www.alw.nih.gov/Security/Docs/admin-guide-to-cracking.101.html
Slashdot - Ein gute Quelle für Neuigkeiten:
http://www.slashdot.org
Verwenden Sie aktuelle Software, besuchen sie freshmeat regelmäßig
http://www.freshmeat.net
Smashing the stack:
http:/
/reality.sgi.com/nate/machines/security/P49-14-Aleph-One
Dem LinuxFocus-Team schreiben
© Michael Jastremski, FDL LinuxFocus.org Click here to report a fault or send a comment to Linuxfocus |
Autoren und Übersetzer:
|
2001-01-17, generated by lfparser version 2.7