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