Es würde eine Menge Arbeit ersparen, wenn die Verbesserungen in die
SGML-Dateien eingearbeitet werden. Diese sind mittels CVS abrufbar und können
auch über die Webschnittstelle
abgerufen werden. d.Ü.
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.
Die Zahl war bei Debian 3.0 und davor nicht so niedrig, da einige
inetd
-Dienste standardmäßig aktiviert waren. Außerdem war in
Debian 2.2 der NFS-Server wie auch der Telnet-Server Bestandteil der
Standardinstallation.
Dies ist z.B. wünschenswert, wenn Sie eine Chroot-Umgebung zur Entwicklung einrichten.
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.
Je nach der Version von lsof müssen Sie $8 statt $9 verwenden.
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 zwölf 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.
Wird in /etc/adduser.conf
festgelegt (USERGROUPS=yes). Sie ändern
dieses Verhalten, wenn Sie den Wert auf no setzen. Dies wird aber nicht
empfohlen.
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.
Bei älteren Veröffentlichungen von Debian sollte Sie Folgendes ausführen:
$ apt-cache showpkg libwrap0 | egrep '^[[:space:]]' | sort -u | \ sed 's/,libwrap0$//;s/^[[:space:]]\+//'
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 älteren Veröffentlichungen war checksecurity in cron integriert und die
Datei hieß /etc/cron.daily/standard
.
In Debian kopiert das Paket kernel-source-version
die
Kernelquellen nach
/usr/src/kernel-source-version.tar.bz2
. Ersetzen Sie
einfach version mit der installierten Kernelversion.
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.
GDM wird -nolisten tcp nicht anhängen, wenn es -query oder -indirect in der Befehlszeile findet, da sonst die Anfrage nicht funktionieren würde.
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 bind9 von Woody (9.2.1-2.woody) oder Sarge (9.2.4) installiert haben.
Diese Einstellungen wurden für Bind 8.4.3 von Debian 2.2 (Potato) getestet.
Es sei denn, Sie benutzen die instdir-Option, wenn Sie
dpkg
aufrufen, aber dann könnte das chroot-Gefängnis etwas
komplizierter werden.
Falls Sie eine ältere Version von Apache einsetzen (wovon abgeraten wird, da sie seit der Veröffentlichung von Apache 1.3 in Woody nicht mehr unterstützt wird), müssen Sie der Konfigurationsdatei Folgendes hinzufügen:
<Directory /home/*/public_html> AllowOverride None Order deny,allow Deny from all </Directory>
Es wird versucht, diese mit minimalen Rechten laufen zu lassen, was beinhaltet, Daemonen unter ihren eigenen Benutzern, anstatt unter root, laufen zu lassen.
Ältere Debian-Distributionen benötigen einen passenden Kernelpatch. Zum Beispiel verwendete Debian 2.1 den Kernel 2.0.34, der diese Funktionen nicht enthielt.
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.
Bis ein automatischer Mechanismus entwickelt wurde.
Genau genommen handelt es sich um eine ASCII-armored abgetrennte GPG-Signatur.
Oder Ihren DNS vergiftet hat oder den Server spooft oder die Datei auf einem Spiegel platziert hat, den Sie verwenden, oder ...
"Ziyi" ist offensichtlich der Name einer chinesischen
Schauspielerin
.
Nicht alle Schlüssel der Apt-Depots sind überhaupt mit einem anderen Schlüssel unterschrieben. Vielleicht hat derjenige, der das Depot einrichtet, keinen anderen Schlüssel zur Verfügung, oder vielleicht ist es ihm unangenehm, einen Schlüssel mit einer derartig wichtigen Funktion mit seinem Hauptschlüssel zu unterschreiben. Hinweise, wie man einen Schlüssel für ein Depot einrichtet, finden Sie unter Prüfung von Debian-fremden Quellen, Abschnitt 7.4.4.
Entweder weil Sie Stable (Sarge) oder eine ältere Veröffentlichung verwenden, oder weil Sie nicht die neuste Version von Apt einsetzen wollen, obwohl wir das Testen wirklich schätzen würden.
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
.
Interessante Diskussionen zu diesem Thema finden sich in http://lists.debian.org/debian-mentors/2004/10/msg00338.html
und http://lists.debian.org/debian-devel/2004/05/msg01156.html
.
Unter Umständen wird er als dh_adduser
in debhelper enthalten
sein. Sehen Sie sich dazu #81967
, #291177
und #118787
an.
Sie können sogar eine SELinux-Richtlinie erstellen.
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.
Sie sollten typischerweise eine Bridge-Firewall einsetzen, damit die Firewall selbst nicht entdeckt werden kann. Lesen Sie mehr dazu unter Aufsetzen einer überbrückenden Firewall (bridge Firewall), Anhang D.
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 einiger Daten 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.
Sie können die Option debug verwenden. Damit wird der Fortschritt des Moduls unter authpriv.notice protokolliert.
Mit folgendem Python-Aufruf können Sie eine sehr eingeschränkte Bash-Umgebung
für makejail erstellen. Erstellen Sie das Verzeichnis
/var/chroots/users/foo
und eine Datei mit dem Namen
bash.py
und folgendem Inhalt:
chroot="/var/chroots/user/foo" cleanJailFirst=1 testCommandsInsideJail=["bash ls"]
Führen Sie dann makejail bash.py aus, um eine Benutzer-Umgebung unter
/var/chroots/user/foo
zu erstellen. So testen Sie die Umgebung:
# chroot /var/chroots/user/foo/ ls bin dev etc lib proc sbin usr
Unter Umständen benötigen Sie die Geräte /dev/ptmx
und
/dev/pty*
und das Unterverzeichnis /dev/pts/
. Es
sollte ausreichen, MAKEDEV im /dev
-Verzeichnis der Chroot-Umgebung
auszuführen, um sie zu erstellen, falls sie nicht existieren. Wenn Sie einen
Kernel einsetzen, der die Gerätedateien dynamisch erstellt (Version 2.6),
müssen Sie die Dateien /dev/pts/ selbst erstellen und mit den passenden Rechten
ausstatten.
Wenn Sie einen Kernel verwenden, der Mandatory-Access-Control (RSBAC/SElinux) unterstützt, müssen Sie die Konfiguration nicht ändern, wenn Sie dem Sshd-Benutzer 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.10, Fri, 12 Jan 2007 13:43:33 +0100jfs@debian.org