Irgendwann wurde er von der "Linux Security Knowledge Base" abgelöst.
Dieses Dokument wird ebenfalls durch das Paket lasg
zur Verfügung
gestellt. Jetzt wird der Guide wieder unter dem Namen Lasg
verbreitet.
Eigentlich ist das so nicht ganz richtig, da immer etwas Platz für Root reserviert wird, den ein normaler Nutzer nicht belegen kann.
Ein sehr gutes Beispiel dieser Art von Angriff, der das /tmp-Verzeichnis
benutzt, ist ausführlich auf The
mysteriously persistently exploitable program (contest)
und auf
The
mysteriously persistently exploitable program explained
beschrieben
(beachten Sie, dass dieser Vorfall in einem Zusammenhang mit Debian steht). Im
Prinzip ist das ein Angriff, bei dem ein lokaler Benutzer eine angreifbare
Setuid-Anwendung versteckt, indem einer einen harten Link zu ihr
einrichtet. So kann er wirksam verhindern, dass diese Anwendung vom
Systemadministrator aktualisiert (oder entfernt) wird. Dpkg wurde kürzlich
verbessert, um das zu verhindern (vergleiche 225692
). Aber andere
Setuid-Anwendungen, die nicht vom Paketverwaltungsprogramm kontrolliert werden,
bleiben ein Risiko, wenn Partitionen nicht richtig eingerichtet werden.
Unter Debian-Woody ist das Basis-System etwa 400-500MB groß. Probieren Sie Folgendes:
, $ size=0 $ for i in `grep -A 1 -B 1 "^Section: base" /var/lib/dpkg/available | grep -A 2 "^Priority: required" |grep "^Installed-Size" |cut -d : -f 2 `; do size=$(($size+$i)); done $ echo $size 47762
Häufig werden fremde Systeme nur deshalb gehackt, weil Sie zu weiteren illegitimen Aktivitäten benutzt werden sollen (DoS-Attacken, Spam, geheime FTP-Server, DNS-Schweinereien, ...). Der Angreifer möchte meist gar nicht an die vertraulichen Daten auf dem kompromittierten System herankommen.
Sie können (auf einem anderen System) eine Paket-Attrappe mit
equivs
erstellen.
Selbst wenn die Bibliotheken aus dem Dateisystem entfernt wurden, werden die Inodes nicht beseitigt, bis kein Programm mehr einen offenen Dateideskriptor mit Verweis auf sie hat.
Das passierte z.B. beim Upgrade von libc6 2.2.x zu 2.3.x wegen Problemen mit
der NSS-Authentifizierung, siehe http://lists.debian.org/debian-glibc/2003/debian-glibc-200303/msg00276.html
.
Es sei denn, Sie haben ein Kernel-Metapaket wie
kernel-image-2.4-686
installiert, welches immer die neueste
Minor-Version des Kernels einer Architektur installieren wird.
Ein Beispielskript mit dem Namen testnet
ist im Artikel Remotely rebooting
Debian GNU/Linux machines
enthalten. Ein ausgereifteres Testskript
befindet sich im Artikel Testing network
connectivity
Das Einrichten einer seriellen Konsole würde den Rahmen dieses Dokuments
sprengen. Informationen dazu finden Sie im Serial HOWTO
und
im Remote
Serial Console HOWTO
.
Die Datei /etc/securetty
ist eine Konfigurationsdatei, die zum
Paket login
gehört.
Oder ttyvX in GNU/FreeBSD und ttyE0 in GNU/KNetBSD.
Oder comX in GNU/Hurd, cuaaX in GNU/FreeBSD und ttyXX in GNU/KNetBSD.
Die Standardeinstellung in Woody beinhaltet 12 lokale tty- und vc-Konsolen und die console-Schnittstelle. Anmeldungen von entfernten Orten sind nicht erlaubt. In Sarge stellt die Standardeinstellung 64 Konsolen für tty- und vc-Konsolen zu Verfügung. Sie können das ohne Probleme entfernen, wenn Sie nicht derartige viele Konsolen benutzen.
Achten Sie auf die getty Einträge.
Einiges davon trifft auf den Paketverwalter dpkg
zu, da die
Installations- oder Deinstallationsanweisungen (post, pre) unter
/var/lib/dpkg/
liegen, und auch auf Smartlist.
Diese Abhängigkeit ist allerdings im Debian 3.0 Paket nicht gelöst. Lesen Sie
dazu Bug #112965
.
Programme, die immer mehr Prozesse erzeugen, um so das System zum Absturz zu bringen, d.Ü.
Libpam-chroot
wurden noch nicht vollständig getestet. Es
funktioniert mit login
, aber es dürfte nicht leicht sein, diese
Umgebung für andere Programme einzurichten.
Wenn HISTSIZE eine sehr große Zahl zugewiesen wird, kann dies bei einigen Shells zu Problemen führen, da der Verlauf für jede Sitzung eines Nutzers im Speicher abgelegt wird. Sie sind auf der sichereren Seite, wenn Sie HISTSIZE auf einen ausreichend großen Wert setzen und eine Kopie der History-Datei des Benutzers anlegen (falls Sie aus irgendwelchen Gründen den ganzen Verlauf von einem Nutzer benötigen).
Ohne das Append-Only-Flag wäre es den Nutzern möglich, den Inhalt des Verlaufs zu löschen, indem sie > .bash_history ausführen.
Ttys werden für lokal Logins und entfernte Logins mit ssh und telnet erzeugt.
Chpasswd
kann keine MD5-Passwörter erzeugen. Daher muss ihm das
Passwort in verschlüsselter Form übergeben werden, bevor es mit der
-e-Option verwendet werden kann.
Beachten Sie hier die Schreibweise, da spawn nicht funktionieren wird.
Es gibt darüber einen ziemlich guten Artikel von Lance Spitzner
.
Beachten Sie, dass ein Konflikt zwischen diesem Patch und den Patches besteht, die schon im Quellpaket des Kernels 2.4 von Debian enthalten sind. Sie werden den Vanilla-Kernel verwenden müssen. Dazu führen Sie folgende Schritte durch:
# apt-get install kernel-source-2.4.22 kernel-patch-debian-2.4.22 # tar xjf /usr/src/kernel-source-2.4.22.tar.bz2 # cd kernel-source-2.4.22 # /usr/src/kernel-patches/all/2.4.22/unpatch/debian
Für weitere Informationen siehe #194225
, #199519
, #206458
, #203759
, #204424
, #210762
, #211213
und die Diskussion
auf debian-devel
.
Sie sind in der Tat so verbreitet, dass sie die Grundlage für 20% aller
gemeldeten Sicherheitsmängel pro Jahr darstellen, wie von statistics from ICAT's
vulnerability database
herausgefunden wurde.
In Debian installiert das Paket kernel-image
die Quellen unter
/usr/src/kernel-source-2.X.X
. Ersetzten Sie einfach
linux mit dem installierten Kernel.
Um das nachzuvollziehen folgendes Beispiel, das von Felix von Leitner auf der bugtraq-Mailingliste vorgestellt wurde:
host a (eth0 connected to eth0 of host b): ifconfig eth0 10.0.0.1 ifconfig eth1 23.0.0.1 tcpserver -RHl localhost 23.0.0.1 8000 echo fnord host b: ifconfig eth0 10.0.0.2 route add 23.0.0.1 gw 10.0.0.1 telnet 23.0.0.1 8000
Das scheint allerdings nicht mit Diensten zu funktionieren, die mit 127.0.0.1 verbunden sind. Sie sollten vielleicht für die Tests raw sockets verwenden.
Die Tatsache, dass dieses Verhalten durch Routing geändert werden kann, wurde von Matthew G. Marsh in dem bugtraq-Thread beschrieben:
eth0 = 1.1.1.1/24 eth1 = 2.2.2.2/24 ip rule add from 1.1.1.1/32 dev lo table 1 prio 15000 ip rule add from 2.2.2.2/32 dev lo table 2 prio 16000 ip route add default dev eth0 table 1 ip route add default dev eth1 table 2
Wie im bugtraq-Thread beschrieben, gibt es dafür einige Patches auf http://www.linuxvirtualserver.org/~julian/#hidden
und http://www.fefe.de/linux-eth-forwarding.diff
.
Ein Angreifer, der nicht in der gleichen Broadcast-Domain (also dem gleichen Netzwerk) wie der angegriffene Host ist, kann auf viele Probleme bei Zugang stoßen, nachdem die Anbindung der IP-Adressen konfiguriert wurde. Wenn der Angriff über einen Router läuft, kann es sich als ziemlich schwer herausstellen, die Antworten zurückzubekommen.
Die Liste der in Debian verfügbaren Mail-Daemons erhalten Sie wie folgt:
$ apt-cache search mail-transport-agent
Die Liste wird qmail
nicht enthalten, da dies nur im Quellcode im
Paket qmail-src
vertrieben wird.
Eine Liste von Servern/Daemonen die diese Protokolle in Debian anbieten, kann wie folgt erhalten werden:
$ apt-cache search pop3-server $ apt-cache search imap-server
Beachten Sie, dass Sie abhängig von Ihrer Bind-Version die Option -g nicht haben, höchstwahrscheinlich wenn Sie Woody laufen und bind9 (9.2.1-2.woody) installiert haben.
Es sei denn, Sie benutzen die instdir-Option, wenn Sie
dpkg
aufrufen, aber dann könnte das chroot-Gefängnis etwas
komplizierter werden.
Es wird versucht, diese mit minimalen Rechten laufen zu lassen, was beinhaltet, Daemonen unter ihren eigenen Benutzern, anstatt unter root, laufen zu lassen.
Im Gegensatz zu persönlichen Firewalls für andere Betriebssysteme, stellt
Debian GNU/Linux (noch) keine Firewall-Erstellungs-Schnittstelle zur Verfügung,
die Regeln erstellen kann, die einzelne Prozesse oder Benutzer einschränken.
Jedoch kann der iptables-Code so konfiguriert werden, dass er dies kann (siehe
dazu das "owner"-Modul in der Handbuchseite
iptables(8)
).
Übersetzungen sind in bis zu zehn verschiedenen Sprachen verfügbar.
Der vollständige Fragebogen zur
Kompatibilität
ist bei CVE erhältlich.
Einige Betriebssystem wurden schon von Problemen mit automatischen
Aktualisierungen heimgesucht, wie z.B. die Mac OS X
Software-Update-Verwundbarkeit
.
FIXME: probably the Internet Explorer vulnerability handling certificate chains has an impact on security updates on Microsoft Windows.
Manche von ihnen sind erhältlich, wenn Sie das Paket
harden-remoteaudit
installieren.
Wenn Sie das letztere Paket verwenden und ein offizielles Debian betreiben,
wird die Datenbank nicht im Zuge von Sicherheitsaktualisierung auf den neusten
Stand gebracht. Sie sollten entweder clamav-freshclam
,
clamav-getfiles
verwenden, um neue clamav-data
-Pakete
zu erstellen, oder die Datenbank über die Seite der Betreuer aktuell halten:
deb http://people.debian.org/~zugschlus/clamav-data/ / deb-src http://people.debian.org/~zugschlus/clamav-data/ /
Weitere Beispiele wie Sie gnupg
konfigurieren können, finden Sie
in /usr/share/doc/mutt/examples/gpg.rc
.
Sie können auch die Option --quiet (-q) verwenden.
Sie verringert die Ausgabe von apt-get
und wird keine Ausgabe
produzieren, wenn keine Pakete installiert werden.
Beachten Sie, dass einige Pakete nicht debconf
verwenden
könnten. Die Aktualisierung könnte dann hängen bleiben, da Pakete während
ihrer Konfiguration Eingaben des Nutzers verlangen.
Dies ist ein verbreitetes Problem, da viele Nutzer ein stabiles System betreiben wollen, aber einige Pakete aus Unstable einsetzen, um die neusten Funktionen zu haben. Das kommt daher, dass sich manche Projekte schneller entwickeln als die Veröffentlichungen von Debians Stable.
Ein leichter Weg, das ist tun, ist die Verwendung einer Live-CD wie Knoppix Std
, die sowohl die
Programme zur Integritätsprüfung als auch die dazugehörige Datenbank enthält.
Es gibt über 28 Fähigkeiten einschließlich CAP_BSET, CAP_CHOWN, CAP_FOWNER, CAP_FSETID, CAP_FS_MASK, CAP_FULL_SET, CAP_INIT_EFF_SET, CAP_INIT_INH_SET, CAP_IPC_LOCK, CAP_IPC_OWNER, CAP_KILL, CAP_LEASE, CAP_LINUX_IMMUTABLE, CAP_MKNOD, CAP_NET_ADMIN, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SETGID, CAP_SETPCAP, CAP_SETUID, CAP_SYS_ADMIN, CAP_SYS_BOOT, CAP_SYS_CHROOT, CAP_SYS_MODULE, CAP_SYS_NICE, CAP_SYS_PACCT, CAP_SYS_PTRACE, CAP_SYS_RAWIO, CAP_SYS_RESOURCE, CAP_SYS_TIME und CAP_SYS_TTY_CONFIG. Alle können deaktiviert werden, um Ihren Kernel abzuhärten.
Um dies tun zu können, müssen Sie nicht lcap
installieren, aber
damit ist es einfacher, als von Hand /proc/sys/kernel/cap-bound
anzupassen.
Wenn Sie abenteuerlustig sind, sollten Sie sich am System anmelden und die Informationen aller laufenden Prozesse speichern (Sie bekommen eine Menge aus /proc/nnn/). Es ist möglich, den gesamten ausführbaren Code aus dem Arbeitsspeicher zu ziehen, sogar dann, wenn der Angreifer die ausführbaren Dateien von der Festplatte gelöscht hat. Ziehen Sie danach das Stromkabel.
Das ist auch das Werkzeug, mit dem die CD-ROMs für das Projekt Gibraltar
erstellt werden. Das ist
eine Firewall auf einer Live-CD-ROM, die auf der Debian-Distribution beruht.
Dies ist eine Liste einiger CERTs. Ein vollständige Liste erhalten Sie unter
FIRST
Member Team information
(FIRST ist das Forum von Incident Response
and Security Teams): AusCERT
(Australien), UNAM-CERT
(Mexiko) CERT-Funet
(Finnland), DFN-CERT
(Deutschland), RUS-CERT
(Deutschland),
CERT-IT
(Italien),
JPCERT/CC
(Japan), UNINETT CERT
(Norwegen), HR-CERT
(Kroatien) CERT Polskay
(Polen), RU-CERT
(Russland), SI-CERT
(Slowenien) IRIS-CERT
(Spanien), SWITCH-CERT
(Schweiz), TWCERT/CC
(Taiwan), und CERT/CC
(USA).
Zum Beispiel könnte es auf Grundlage der Daten von Securityfocus scheinen, dass
Windows NT sicherer ist als Linux. Dies wäre eine fragwürdige Annahme. Das
liegt daran, dass Linux-Distributionen normalerweise viel mehr Anwendungen zur
Verfügung stellen als Microsofts Windows NT. Dieses Problem des Abzählens
von Sicherheitslücken wird besser in Why Open Source
Software / Free Software (OSS/FS)? Look at the Numbers!
von David
A. Wheeler beschrieben.
Ohne die Tatsache in Abrede zu stellen, dass einige Distributionen wie Red Hat oder Mandrake auch die Sicherheit bei ihrer Standardinstallation berücksichtigen, indem der Nutzer Sicherheitsprofile auswählen kann, oder Wizards verwendet werden, um beim Einrichten einer Personal Firewall zu helfen.
Beachten Sie, dass das 'security by obscurity' ist und daher auf lange Sicht gesehen wahrscheinlich nicht der Mühe wert ist.
Da keine Datei-Deskriptoren mehr vorhanden sind, könnte das System nicht mehr antworten, bis das Zeitlimit der TCP-Verbindungen überschritten wurde.
Wenn Sie einen Kernel verwenden, der Mandatory Access Control (RSBAC/SElinux) unterstützt, können Sie das Ändern der Konfiguration verhindern, indem Sie dem Sshd-Nutzer die notwendigen Rechte einräumen, um den Systemaufruf chroot() ausführen zu können.
Beachten Sie, dass keine SETUID-Dateien vorhanden sind. Das erschwert es
entfernten Benutzern, aus der chroot
-Umgebung auszubrechen. Es
verhindert allerdings auch, dass Nutzer ihr Passwort ändern, da
passwd
nicht die Dateien /etc/passwd
und
/etc/shadow
verändern kann.
Anleitung zum Absichern von Debian
Version: 3.2, Mon, 20 Jun 2005 08:01:04 +0000jfs@debian.org