Verbessern der Systemsicherheit gebräuchlicher Linux Distributionen

ArticleCategory: [Es gibt verschiedene Artikel Kategorien]

System Administration

AuthorImage:[Ein Bild von Dir]

[Bild des Autors]

TranslationInfo:[Autor und Übersetzer]

original in en Michael Jastremski 

en to de Jens Link

AboutTheAuthor:[Eine kleine Biographie ü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

Abstract:[Hier sollte eine kleine Zusammenfassung stehen]

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.

ArticleIllustration:[Das Titelbild des Artikels]

[Illustration]

ArticleBody:[Der eigentliche Artikel. Überschriften innerhalb des Artikels sollten h2 oder h3 sein.]

Einleitung

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.

Der Weg zu mehr Sicherheit

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.:

  1. Programme, die Sie nie benutzen
  2. Programme, die nur von root ausgeführt werden sollen
  3. Solche Programme, die Sie nur gelegentlich benötigen, und bei denen es Sie nicht stört via su(1) zu root zu werden.

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