Wie mache ich meinen Linuxrechner sicherer ?!

 
 

Einige Hinweise für den sicheren Betrieb von Systemen unter Linux in Verbindung mit dem Internet:

Die standardmaeszige Installation einer Linux-Distribution resultiert meist nicht in einem sehr abgesicherten System.
Deshalb hier einige Tipps, wie durch den Einsatz einfacher Mittel (Zeit und Tools) Linux sicherer gemacht werden kann.
 

Einfache Tipps:

1.Einspielen aller Updates:
                              Meist ist seit der Pressung der CD einer Distribution bzw. des Download der Installationsdateien aus dem
                              Internet etwas Zeit vergangen. Vielleicht genug, um inzwischen ein bereits bekanntes Sicherheitsloch
                              mitzuinstallieren...deshalb ist dringend zu empfehlen (insbesondere bevor der Server an das Internet
                              angeschlossen wird), alle Updates via Download sich besorgen und installieren.
                              Bei Distributionen basierend auf Red Hat package management system RPM ist das relativ einfach:
                                   Ausgabe einer Liste, welche Pakete ein Update benötigen:
                                       find /mnt/tmp/somewhere/ -name '*.rpm' | while read i; do name=`rpm -q
                                       --queryformat "%{NAME}\n" -p $i`; rpm -q $name >/dev/null 2>&1 && echo -n
                                       "$name "; done; echo
                                   Installation der Pakete:
                                       find /mnt/tmp/somewhere/ -name '*.rpm' | while read i; do name=`rpm -q
                                       --queryformat "%{NAME}\n" -p $i`; rpm -q $name >/dev/null 2>&1 && rpm -Fhv
                                       --nodeps $i; done; echo

2.Ersatz von Telnet-Daemon und R-Tools durch SecureSHell:
                              Der Einsatz Telnet als Zugang über das Netz und den R-Tools ist nur in den wenigsten Fällen notwendig:
                                   Verwendung von X-Server auf Hosts, die kein X-Tunneln durch SSH unterstützen können
                                   Backup auf Bandlaufwerke via rmt (Remote Magnetic Tape) - Tunneln durch SSH ist möglich,
                                   allerdings performance-raubend (Ver- und Entschlüsselung des Datenstroms)
                              Falls oben genannte Punkte nicht zum Einsatz kommen, kann der Telnet-Daemon deaktiviert werden
                              (auskommentieren in /etc/inetd.conf und Senden des Signals HUP an den inetd) und Installation von z.B.
                              OpenSSH
                                   Eine Liste für Clients unter MS-Windows laufende Systeme ist hier zu finden

3.Deaktivieren aller nicht benötigter Internetdienste:
                              Haeufig sind viel mehr Internetdienste aktiviert, als notwendig sind. Welche Dienste aktiv sind, zeigt folgendes
                              Kommando
                                   IPv4-Services: netstat -lnp --ip
                                   IPv6-Services: netstat -lnp --inet6
                              Alle nicht benoetigten Dienste können abgeschaltet werden durch
                                   direkt gestarteter Daemon durch Deaktivieren des Runlevel-Scripts (bei Red Hat Linux z.B. mit
                                   chkconfig oder linuxconf)
                                   alle vom inetd gestarteter Daemon durch Auskommentieren der entsprechenden Zeile in
                                   /etc/inetd.conf

4.Deinstallation nicht benutzter Programme:
                              Jedes installierte Programm, welches nie benoetigt wird, stellt ein zusaetzliches Sicherheitsrisiko dar,
                              insbesondere, wenn es das SUID (set user id on execution) oder SGID (set group id on execution) Bit
                              gesetzt sind.
                                   Auflistung aller Dateien mit gesetztem SUID oder SGID Bit:
                                       find / -perm +06000 -type f -ls
                              Bei RPM ist es relativ einfach, ein Programmpaket zu deinstallieren, wenn man es nicht benoetigt. Eventuelle
                              nichtbeachtete Abhaengigkeiten werden einem angezeigt. Man kann sich dann entscheiden, entweder das
                              Paket auf die harte Tour (--nodeps) oder gleich die Abhaengigkeiten mit zu deinstallieren.

5.Hilfreiche "Schalter" im Linux-Kernel
 
Syncookie Support                                               gegen SYN-Flodding                       echo "1" >/proc/sys/net/ipv4/tcp_syncookies

Limitierung der Rate an
ausgesendeten speziellen                                   gegen                                                    echo "100">/proc/sys/net/ipv4/icmp_destunreach_rate
ICMP-Paketen                                                     DOS-Attacken                                 echo "100">/proc/sys/net/ipv4/icmp_echoreply_rate
                                                                                                              echo "100">/proc/sys/net/ipv4/icmp_paramprob_rate
                                                                                                              echo "100">/proc/sys/net/ipv4/icmp_timeexceed_rate
                                                                                                                                                                        Limitiert hier auf 100 pro Sekunde

Abschalten von ICMP echo-reply auf            gegen Scanning                                echo "1">/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
Broadcast-Adressen

Abschalten von ICMP echo-reply                   gegen Scanning                                echo "1">/proc/sys/net/ipv4/icmp_echo_ignore_all
generell

Verwerfen von IP-Paketen mit                          gegen Attacken                                echo "0">/proc/sys/net/ipv4/conf/*/accept_source_route
Source-Route-Option

Verwerfen von ICMP redirect                            gegen Attacken                                echo "0">/proc/sys/net/ipv4/conf/*/accept_redirects
Paketen

Defragmentiere eingehende                                gegen Attacken                                echo "1">/proc/sys/net/ipv4/conf/*/ip_always_defrag
IP-Pakete immer

Loggen von allen Paketen mit                             gegen Scanning                                echo "1">/proc/sys/net/ipv4/conf/*/log_martians
unmoeglichen IP-Adressen

Abschalten des ICMP Address                         gegen Scanning                                 echo "0">/proc/sys/net/ipv4/ip_addrmask_agent
mask replies

Deaktivieren von IP-forwarding                       schaltet Routing ab                           echo "0">/proc/sys/net/ipv4/ip_forward

Deaktivieren von IP-forwarding                       schaltet Routing ab                           echo "0">/proc/sys/net/ipv4/conf/*/forwarding
per Interface

Um die Aenderungen rueckgaengig zu machen, musz man lediglich die Werte vertauschen.

6.Die inetd.con
                               Wenn man diese Datei oeffnet, sieht man anhand der Kommentare welcher Dienst gestartet wird. Wird z. B. der telnet-"Server" gestartet, sieht die Zeile
                                folgendermaszen aus:

                        telnet stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd

                                Will man verhindern, dasz dieser Dienst gestartet wird, setzt man einfach ein Kommentar ("#") am Anfang der Zeile und startet die inetd
                                 neu. Danach  sollte die Zeile so:

                        #telnet stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd

                                aussehen.
                                Der Neustart der Datei wird wie folgt erledigt...
                                Zuerst braucht man die PID (das ist die Nummer, die der Prozess hat); dazu recht das Command ps ax | grep inetd damit man die PID findet. Die
                                Ausgabe sieht dann etwa so aus:

                                root@dreckskind:~ > ps ax | grep inetd
                                 3344 ?        S      0:00 inetd
                                 21431 pts/1    S      0:00 grep inetd
                                root@dreckskind:~ >

                                Hier hat der inetd die PID 3344 und kann mit kill -HUP 3344 neu eingelesen werden. Wenn man sich danach nochmal mit nmap scannt, sollte telnet
                                nicht mehr laufen. Mit den anderen Diensten (bis auf einige Ausnahmen) wird genauso verfahren.

7.Die Ausnahmen
                                Einige Dienste werden nicht ueber den inetd gestartet, sondern von der rc.config aufgerufen. Dazu gehoeren z. B.:

                                - httpd
                                -  sshd
                                - portmap
                                - Printer
                                - ....

                                Oeffnet die Datei einfach mit einem Editor und geht die Eintraege der Reihe nach durch. Wenn ihr einen Dienst verbieten wollt, mueszt ihr lediglich
                                Wert von    "YES" auf "NO" aendern und beim naechsten Start sind die Aenderungen wirksam.
 

8.Firewall
                                Solltet ihr Fragen, Wuensche oder sonst irgendwas haben, schickt mir einfach ne Mail (strcat@gmx.net) und wir sehen weiter ...