Sicherheit

> nach oben <

Allgemeine Regel

Die allgemeine Regel, die beim Erstellen eines Kernels gilt, lautet:
"Deaktivieren Sie alles, was Sie nicht brauchen!"
Dies produziert nicht nur einen wirklich kleinen Kernel, sondern ermöglicht Ihnen auch noch Fehler von Kernel-Teilen, die Sie nicht benötigen, zu umgehen.
Dies beinhaltet auch das Deaktivieren des Module-Supports - [ ] Enable loadable module support. Root Kits per Module in den Kernel zur Laufzeit einzuschläusen, wird dadurch Angreifern erschwert.

/proc-Filesystem

Verwerfen von ICMP-Paketen

# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

Dies veranlasst den Kernel alle pings bzw. alle ICMP-Pakete mit dem Typ 0 zu verwerfen. In einem Netzwerk dient der ping-Befehl lediglich dazu Verbindungen zu testen, niemand sonst (außer root) benötigt ihn also wirklich.

Ignorieren von "broadcast pings"

# /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Dies deaktiviert die automatische Antwort auf "ICMP broadcasts" und schützt so vor Smurf-Attacken.

Deaktivierung von "source routed packets"

# /bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

Angeifer können "source routed" Pakete nutzen um "Traffic" zu generieren, der vom Intranet zu stammen scheint, aber der von außerhalb Ihres Netzwerks stammt und lediglich zurück geleitet wurde, wo er her kam. So könnten Angreifer vorgehen um Ihr Netzwerk zu kompromitieren.

Schutz vor "bad error messages"

# /bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

Aktiviert den Schutz vor "bogus error message responses".

Deaktivieren von "IP forwarding"

# /bin/echo "0" > /proc/sys/net/ipv4/ip_forward

Diese Option benötigt nur ein Router, ein Host mit mehreren Netzwerk-Interfaces. Dies sollte also bei Ihnen per Default ausgeschlatet sein.

Logging

# /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

Dies loggt gespoofte Pakete, "source routed" und "redirect".

proc-Script

Da Einstellungen im /proc Filesystem beim Reboot Ihres Systems verloren gehen, empfehle ich folgendes Script in /etc/init.d/ (je nach Distribution verschieden) zu speichern.

#!/bin/sh

## DECLERATION of the VARIABLES ##
echo="/bin/echo"

## for GENTOO-Users ##
depend() {
use checkroot
}

## other SPECIAL OPTIONS for this script ##
# ...

## BEGINNING to WORK ##
$echo "Setting /proc options ..."
$echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
$echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
$echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
$echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
$echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
   for i in /proc/sys/net/ipv4/conf/*; do
      $echo "1" > $i/rp_filter
   done
$echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
$echo "0" > /proc/sys/net/ipv4/ip_forward
$echo "DONE"
exit 0

Damit dies nun bei jedem Start aufgerufen wird, müssen Sie je nach Distribution verschieden vorgehen. Alle Vorgehensweisen hier zu schildern würde diese Arbeit "sprengen".

> nach oben <

Bootloader

LILO

Um zu verhindern, dass jemand während des Boot-Vorgangs dem Kernel Paramter übergibt, ist in die /etc/lilo.conf folgendes einzutragen:

password="password_in_plain-text"

Diese Datei sollte dann jedoch nur noch der System-Administrator zu sehen bekommen, da sonst jeder Benutzer das Plain-Passwort rausbekommen könnte. Dies macht man unter einem Unix(-like)-System mit:

$ su
# chmod 0600 /etc/lilo.conf*

Jedes weitere Image kann nur durch Passwort gestartet werden, bei folgendem Eintrag (in die /etc/lilo.conf):

image="/boot/bzImage.bsp"
label="GNU/Linux"
# Protect image by using a password:
restricted

GRUB

Bei GRUB können Sie nicht nur Plain-Text-Passwords angeben sondern auch MD5 verschlüsselte. Wie das geht, zeige ich Ihnen im Folgenden:

# grub
grub> md5crypt
Password: **********
Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb

Das encryptete Passwort speichern Sie nun in Ihrer /boot/grub/menu.lst:

#
# Sample boot menu configuration file
#
# [...]

# you can use md5-passwords ...
password --md5 $1$U$JK7xFegdxWH6VuppCUSIb

# ... or plain-text-passwörter:
password **********

# [...]

title Boot OS
# this image is locked by an password
lock
> nach oben <

/etc/fstab

Ein Auszug aus einer fstab:

/dev/hd[a-z][0-9]      /boot      ext3      noauto,noatime      1   1

"Das noauto bewirkt das die Partition nicht gemountet ist und das ist gut so, da muss man normalerweise nichts machen (ausser Kernel neu kopieren oder Bootloader installieren) und da hat auch niemand was zu suchen - also standardmäßig aushängen.",
KillerFox Nov 13 18:59:17 @unknow, #uscc

> nach oben <

/etc/syslog.conf

daemon,mail.*;\
news.=crit;news.=err;news.=notice;\
*.=debug;*.=info;\
*.=notice;*.=warn      /dev/tty8

Diese Eintragungen geben alle Log-Einträge des sysklogd zusätzlich auf tty8 aus.

> nach oben <

Valid XHTML 1.0! Valid CSS! Made with Cascading Style Sheets best viewed with any browser Debian GNU/Linux

http://kernel-project.kickino.org/index_moz_de.php?action=security
Last Change: 2011-05-04 21:17:57