[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
9. Kernelsicherheit
Inhalt:
9.a. Entfernen von Funktionen
Eine grundlegende Regel ist die Entfernung von allem was Sie nicht brauchen.
Das schafft einen kleinen Kernel und entfernt auch die Verwundbarkeiten die in
Treibern oder anderen Funktionen liegen können.
Ziehen Sie auch in Betracht Unterstützung für das Laden von Modulen (loadable
module support) auszuschalten. Auch wenn es möglich ist sogenannte Rootkits
ohne diese Eigenschaft hinzuzufügen, wird es doch schwerer für den normalen
Angreifer Rootkits über Kernelmodule zu installieren.
9.b. Das proc Dateisystem
Viele Parameter des Kernels können durch das /proc Dateisystem
oder durch die Benutzung von sysctl verändert werden.
Um Kernelparameter und -variablen dynamisch zu ändern, muss
CONFIG_SYSCTL in Ihrem Kernel definiert sein. Dies ist voreingestellt
im Standard 2.4 Kernel.
Befehlsauflistung 2.1: IP-Forwarding deaktivieren |
# /bin/echo "0" > /proc/sys/net/ipv4/ip_forward
|
Stellen Sie sicher, dass IP Forwarding deaktiviert ist. Dieses benötigen wir
lediglich bei einem Rechner in mehreren Netzen. Es ist anzuraten, diese
Einstellung vor allen anderen vorzunehmen, weil hiermit auch andere
(de)aktiviert werden.
Befehlsauflistung 2.2: Entfernen von ping Paketen |
# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
|
Dies veranlasst den Kernel alle ping Pakete (auch bekannt als ICMP Typ 0 Pakete)
zu ignorieren). Der Grund hierfür ist, dass IP Pakete, welche ICMP Nachrichten
beinhalten auch andere Informationen beinhalten können als Sie denken.
Administratoren benutzen ping als Diagnosewerkzeug und beschweren sich oft,
wenn es deaktiviert ist; es gibt aber für einen Außenseiter keinen Grund in der
Lage sein zu müssen, pings zu verwenden. Nichtsdestotrotz ist es manchmal
nützlich intern ping benutzen zu können, dann können Sie ICMP Typ 0 Pakete in
der Firewall deaktivieren (und es dadurch lokalen Administratoren erlauben
ping zu verwenden).
Befehlsauflistung 2.3: Ignorieren von broadcast Pings |
# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
|
Dies deaktiviert das Antworten auf ICMP Broadcasts und verhindern sog.
Smurf-Angriffe. Diese verwenden eine ICMP Typ 0 (ping) Nachricht, welche an die
Broadcast-Adresse eines Netzwerks gesendet wird, wobei der Angreifer
typischerweise die Ursprungsadresse verschleiert. Sämtliche Rechner des Netzes
werden nun auf diese Nachricht antworten und dabei den Computer der in
Wirklichkeit die gefälschte Ursprungsadresse besitzt überfluten.
Befehlsauflistung 2.4: Sperren von quellbasierendem Paket-Routing |
# /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
|
Akzeptieren Sie keine Pakete mit quellbasierendem Routing. Angreifer können
quellbasierendes Routen benutzen um Datenverkehr zu erzeugen, der vorgibt
aus dem Netzwerk zu kommen, jedoch eigentlich über seinen Ursprungspfad zurück
geroutet wird. Quellbasierendes Routing wird selten für legitime Zwecke
eingesetzt, daher ist es sicher dies zu deaktivieren.
Befehlsauflistung 2.5: Annahme von Umleitungen verweigern |
# /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
|
Akzeptieren Sie keine ICMP Umleitungspakete. Diese können zur Veränderung der
Routing Tables verwendet werden, möglicherweise mit einem böswilligen Ziel.
Befehlsauflistung 2.6: Schutz gegen falsche Fehlermeldungen |
# /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
|
Schalten Sie den Schutz gegen gefälschte Fehlermeldungen ein.
Befehlsauflistung 2.7: Reverse Pfadfilterung ermöglichen |
# for i in /proc/sys/net/ipv4/conf/*; do
/bin/echo "1" > $i/rp_filter
done
|
Stellen Sie reverse Pfadfilterung an. Dies hilft durch automatisches Ablehnen
von Quelladressen, die nicht mit dem Netzwerkinterface übereinstimmen,
sicherzustellen, dass Pakete legitime Quelladressen benutzen. Dies hat
Sicherheitsvorteile, da es IP Spoofing verhindert. Wir müssen es für alle
net/ipv4/conf/* aktivieren, da sonst die Validierung der Quelle
nicht voll funktionsfähig ist.
Warnung:
Die Nutzung von reverser Pfadfilterung kann auch ein Problem darstellen, wenn
Sie asymmetrisches Routing benutzen (Pakete von Ihnen zu einem Host nehmen
einen anderen Weg als Pakete vom Host zu Ihnen) oder wenn Sie einen Non-Routing
Host betreiben, der verschiedene IP-Adressen an verschiedenen Interfaces hat.
|
Befehlsauflistung 2.8: Protokollieren aller Pakete die gespoofed sind, quellbasierendes Routing haben oder umleiten |
# /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
|
Protokollieren von Paketen die gespoofed sind, quellbasierendes Routing
verwenden oder Umleitungen sind.
Alle diese Einstellungen werden zurückgesetzt, wenn die Maschine neu gestartet
wird. Daher schlage ich vor, dass Sie jene in /etc/sysctl.conf
eintragen. Diese Datei wird vom /ect/init.d/bootmisc Init-Skript
ausgelesen.
Die Syntax für /etc/sysctl.conf ist recht gradlinig. Entfernen Sie
das /proc/sys/ von den eben angesprochenen Pfadnamen und ersetzen
Sie / mit .:
Befehlsauflistung 2.9: Verwendung in sysctl.conf |
/bin/echo "0" > /proc/sys/net/ipv4/ip_forward
net.ipv4.ip_forward = 0
|
9.c. Grsecurity
Der Patch von Grsecurity ist Standard
in den sys-kernel/hardened-sources, aber per Voreinstellung deaktiviert.
Konfigurieren Sie Ihren Kernel wie gewohnt und konfigurieren Sie dann die
Grsecurity-Optionen. Eine ausführliche Erläuterung zu den verfügbaren
Grsecurity-Optionen ist auf der Seite des Gentoo Hardened Projekt
verfügbar.
Die aktuellen hardened-sources enthalten die 2.* Version von Grsecurity.
Für weitere Informationen zu diesem verbessertem Patchsatz konsultieren Sie
bitte die Dokumentation auf der Grsecurity Homepage.
9.d. Kerneli
Kerneli ist ein Patch der
Verschlüsselung zum existierenden Kernel hinzufügt. Durch Patchen des Kernel
erhalten Sie neue Optionen wie: Kryptographische Chiffrierung,
Zusammenfassungsalgorithmen und Kryptographische-Schleifenfilter.
Warnung:
Der Kerneli Patch ist momentan nicht in einer stabilen Version für den neuesten
Kernel verfügbar, also Vorsicht beim Gebrauch.
|
9.e. Andere Kernel Patches
Und es gibt wahrscheinlich viele weitere.
[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|