von Frédéric Raynal
Über den Autor:
Frédéric Raynal arbeitet an seiner Doktorarbeit über Image Tattooing am
INRIA (Institut National de Recherche en Informatique et Automatique).
Außerdem ist er an der Entwicklung von Bastille-Linux beteiligt.
Inhalt:
|
Bastille-Linux
Zusammenfassung:
Bastille-Linux 1.1, freigegeben Anfang Juni, ist keine neue Linux-Version, sondern eine Sammlung von Skripten, um Ihr System besser gegen mögliche Verwundbarkeiten zu schützen. Die Autoren benutzen einen erzieherischen Ansatz und man kann durch die Installation dieser Skripte eine Menge lernen.
Einführung
Hinsichtlich Sicherheit ist Linux um einiges besser als andere Betriebssysteme. Nichtsdestoweniger unterscheiden sich die Distritubtionen in dieser Hinsicht. Bastille-Linux bietet Ihnen Mittel, Ihr System zu schützen. Es war ursprünglich für Red-Hat geschrieben, aber die aktuelle Version arbeitet auch mit anderen Distributionen zusammen.
Das Projekt wird von Jon Lasser (Haupt-Koordinator) und Jay Beale (Haupt-Entwickler) geleitet. Weitere Entwickler, Software-Designer und Betatester sind ebenfalls beteiligt.
Um es nochmals klarzustellen: Bastille-Linux ist KEINE neue Linux-Distribution! Es ist eine Sammlung von in perl geschriebenen Skripten, um die Sicherheit von Linux zu erhöhen.
Sicherheit meint hier Computer-Sicherheit:
wie kann man verhindern, daß unerwünschte Personen auf Ihren Rechner zugreifen?
Bastille-Linux gibt einen Teil der Antwort, indem es die Anfangsinstallation
Ihrer Linux-Distribution verändert.
Eine grundlegende Aufgabe eines SysAdmins ist es, die Bedürfnisse seiner
Benutzer zu kennen, nicht nur, um ihnen gerecht zu werden, sondern auch um zu
vermeiden, dass unnötige Programme im Netzwerk laufen ... man muss
Sicherheitslöcher eindämmen können. Einer meiner Mentoren pflegte zu sagen:
Je weniger Du tust, um so besser;-] Natürlich sprach er über die Komplexität
von Algorithmen, aber man kann es auch auf die Netzwerkadministration anwenden:
Ein Übermaß an Programmen kann Schaden anrichten, weil es mehr Angriffspunkte
bietet. Um Verwundbarkeiten zu reduzieren, installieren Sie nur, was Sie
wirklich benötigen.
Bastille-Linux versucht, die Möglichkeiten für eine Attacke einzugrenzen.
Um dieses Ziel zu erreichen, benutzen die Software-Designer einen sehr
erzieherischen Anspruch: Sie erklären Schritt für Schritt, was zu tun ist.
Präsentation
Z .Zt. gibt es Bastille-Linux in Version 1.1.0, freigegeben in der ersten
Junihälfte.
Neben der offensichtlichen Nützlichkeit hat Bastille-Linux eine
erzieherische Funktion. Die Skripte stellen detaillierte und genaue Fragen.
Die Entwickler versuchen, dem Benutzer Neues beizubringen. Sie erklären den
Hintergrund der Fragen und die Auswirkungen der möglichen Antworten. Dies
macht Bastille-Linux zu einem sehr leicht zu benutzenden Werkzeug.
Für fortgeschrittene Benutzer ist der in
perl
geschriebne Quellcode ein Muster an Klarheit (ja, dass ist möglich :-); jeder
Kommentar beschreibt wie die Aktion sich auswirkt.
Hier sind einige Möglichkeiten der Version 1.1.0 :
-
Bastille-Linux arbeitet nun auch auf länger installierten System
-
Eine undo Funktion ist dabei:
von jeder von Bastille-Linux veränderten Datei wird ein Backup angelegt
-
Ursprünglich lief Bastille-Linux nur auf RedHat und Mandrake; dies ist nicht
mehr wahr. Nun enthält ein Modul die richtigen Pfad-Anweisungen für die
benutzte Distribution.
Bastille-Linux hat verschiedene Module, 4 allgemeine Module und einige für
spezielle Anwendungen (Software
such as
sendmail,
FTP,
... order Boot oder unnütze Daemondienste)
Die allgemeinen Dienste sind für:
-
Firewall installation
-
System-Software Update
-
Überprüfung auf SUID-root Programme
-
Deaktivierung und Beschränkung unnützer Dienste
Die anderen Module betreffen mehr spezielle Aspekte. Einige kümmern sich um
Sicherheitsprobleme, die durch schlecht konfigurierte Software entstehen
(sendmail oder FTP
z B.), andere modifizieren die Konfiguration einiger Dienste etwas strikter
(PAM,
syslog,
...)
Einige Sicherheitsfunktionen kasdadieren und bieten unterschiedliche
Schutzebenen
(dies ist gegen die Prinzipien meines Mentors ... aber einmal muss man sich ja
emanzipieren ;-)
Man muß jeden Dienst oder jedes mögliche Sicherheitsloch mit allen
Möglichkeiten schützen.
Wenn eine Sicherung versagt, halten die anderen die Sicherheit des Systems
aufrecht.
Installation oder "Schauen wir uns die Skripte an, solange der Wolf noch nicht
da ist."
Bisherige Bastille-Linux-Versionen funktionierten nur auf neuen Systemen, dies
ist seit der letzten Version nicht mehr so. Jedoch muss festgehalten werden,
daß die Änderungen durch Bastille-Linux auf einem bereits benutztem System
(fast) nutzlos sind. Deshalb wird empfohlen (aus Sicherheitsgründen und nicht
wegen der Software), Bastille-Linux nur auf einem neu installierten System zu
installieren.
Sie sind nun gewarnt, es wird ernst: die Installation!
Bastille-Linux ist verfügbar als tarball .tgz
bei bastille-linux.sourceforge.net.
Dieses Archiv umfaßt nur 134 KB. Nach dem Abruf entpacken Sie es mit
(tar
xzf Bastille-1.1.0.tgz).
Vier Skripte steuern Bastille-Linux :
-
InteractiveBastille.pl:
Dieses Skript stellt der Benutzerin verschiedene Fragen, um herauszufinden,
was auf dem System eingerichtet werden soll. Als nächstes erstellt es aus den
Antworten eine Konfigurations-Datei.
-
AutomatedBastille.pl : i
installiert eine Default-Konfiguration und bietet die Möglichkeit, eine
Firewall aus einem mitgeliefertem Konfigurationsskript zu benutzen. Dieses
Skript wird nicht mehr gepflegt.
-
BackEnd.pl
: Dieses Skript nimmt die Änderungen am System vor. Es bekommt seine Parameter
von den Antworten, die Sie vorher gegeben haben.
-
Undo.pl : Wenn Sie
BackEnd.plstarten, werden einige
Systemdateien
(/etc/syslog.conf,/etc/inetd.conf,
/etc/hosts.*,
...) modifiziert. Um diese bei Problemen zurückzusetzen, werden Kopien im Verzeichnis
/root/Bastille/undo angelegt.
Zur Installation von Bastille-Linux müssen Sie als root angemeldet sein, weil die Skripte Konfigurations-Dateien ändern.. Zur Installation führen Sie zuerst
InteractiveBastille.pl aus.
Dann beantworten Sie die Fragen (unten weiter erläutert) Zum Schluss starten Sie
BackEnd.pl
und das wars! Ein Protokoll der Änderungen findet sich im
/root/Bastille/undo Verzeichnis..
Noch einige Hinweise:.
-
Sie müssen das Skript aus dem
/root/Bastille Verzeichnis starten.
... das wird sich künftig ändern und dann können Sie es aus einem beliebigen Verzeichnis starten (vielleicht ist es ja schon möglich, wenn Sie dies lesen)
-
Zwei Module erlauben das Anlegen von Accounts ... sofern Sie
"shadow passwords" auf Ihrem System installiert haben. Dies ist zwar der Default, aber überprüfen Sie bitte, dass
/etc/passwd keine Passwörter enthält,
dass Sie nur als root auf /etc/shadow
zugreifen können und dass diese letzte Datei wirklich die Passwörter enthält!
-
Bastille-Linux unterhält noch keine Verweise zwischen den Modulen wie es bei
der Kernelkonfiguration ist (dies wird ebenfalls in einer zukünftigen Version
ermöglicht). Deshalb achten Sie auf die Antworten und ihre Auswirkungen. So
könnten Sie dem IPchains-Module sagen, das es Port 2049 schliessen soll und
trotzdem NFS
in der Liste der aktiven Hintergrundprozesse im MiscellaneousDaemons-Modul belassen.
(NFS benutzt diesen Port).
Schrittweise
Nun schauen wir uns die Fragen von Bastille-Linux an, um die einzelnen Schritte zu verstehen: Der Buchstabe zwischen [] zeigt die Fehlwert-Antwort
(N -> Noe, Y -> Ja).
IPChains
Dieses Modul wird zur Konfiguration einer Firewall benutzt. Obwohl es für die Systemsicherheit nicht zwangsweise erforderlich ist, erlaubt es die Kontrolle des Netzverkehrs von und zu dieser Maschine. Die Verkehrskontrolle ist nicht ausreichend, Sie müssen auch die Dämonen rekonfigurieren (denken Sie daran, unterschiedliche Sicherheitsebenen sind nicht nutzlos).
Dieses Skript arbeitet in einer sehr guten Weise. Es berücksichtigt 2 Netzwerkschnittstellen:
eines, das mit der Außenwelt kommuniziert und eines, was den Verkehr mit dem lokalen Netzwerk (LAN) regelt. Ziel ist es, die Dienste zu ermitteln, die auf dieser Maschine verfügbar sein sollen und die anderen zu stoppen. Fehlwert ist es, alles abzulehnen, was von aussen kommt. Als nächstes definiert das Skript die Regeln, um bestimmte Dienste verfügbar zu machen.
Das Skript verwaltet TCP-, UDP-, und ICMP-Protokolle. Es stellt Listen von Diensten für jedes Protokoll bereit, auf die man achten oder die man vermeiden sollte. Es würde zu lange dauern, hier den Ansatz von Bastille-Linux für die Firewall-Installation im Detail zu erläutern, aber das Lesen des Skripts und der Kommentare ist sehr hilfreich. Ein bestimmtes Grundwissen ist jedoch Voraussetzung, um dieses Modul zu nutzen..
PatchDownload
Aktualisierungen sind für die Systemintegrität wichtig. Während der letzten Monate hatten z. B. bind
und piranha, große Sicherheitsprobleme.
Sie wurden schnell korrigiert, da aufgrund des verfügbaren Quellcodes schnell Patches geschrieben wurden.
Unglücklicherweise arbeitet dieses Skript nicht besonders gut. Es ist ziemlich komplex, da Sie die installierten Pakete bestimmen müssen und unter diesen diejenigen, die aktualisiert werden müssen. Dann muss der Patch abgerufen werden und vor der Installation muß sichergestellt sein, das der Patch nicht durch den Transfer oder Cracker verändert wurde. Dies ist wirklich von Ihrer Distribution abhängig..
Z. Zt. empfiehlt Jay Beale, diesen Schritt manuell auszuführen, ihn aber
nicht auszulassen. Eine verbesserte Version dieses Moduls ist in Arbeit und sollte bald verfügbar sein.
Dateiberechtigungen
Dieses Modul basiert auf einem Dokument des SANS-Teams. Das Ziel ist es, die Programme zu bestimmen,
die nur für root (oder root Gruppen-Mitglied) zur Verfügung stehen, bei denen das SUID-Bit gesetzt bleiben muss.
-
Would you like to set more restrictive permissions on the administration
utilities [N] ?
Einige Programme dürfen nicht jedem zur Verfügung stehen. BAST hat eine beeindruckende Liste von Programmen, deren Rechte auf 0750 gesetzt werden können.
-
Danach geht es um das SUID-Bit. Dieses Bit erlaubt es einem Benutzer mit root-Berechtigung, das Programm auszuführen.
('s' in Position 4, 7 and 10)
>>ls -l /bin/ping
-rwsr-xr-x 1 root root 17968 Mar 6
15:57 /bin/ping
Dieses Bit erleichtert die Benutzung, reduziert aber die Sicherheit. D. h., wenn jemand eine Schwachstelle findet (z. B.einen Pufferüberlauf), ist es ihm möglich, root -Berechtigung zu erhalten.
BAST schlägt vor, dieses Bit u. a. von den folgenden Programmen zu
entfernen:
mount/umount,
ping,
dump/restore,
cardctl,
... Neben anderen enthält diese Liste ping
und traceroute, zwei Programme, die es
erlauben, den Status eines Server zu überprüfen. Hier das SUID-Bit zu entfernen,
ist schon ein bißchen paranoid, aber beeinträchtigt die Benutzung der Maschine nicht.
In dieser Liste findet man auch die r-Befehle.
Dies betrifft Programme wie rcp, rlogin
oder rsh.
Diese Programme verschlüsseln die Daten nicht, die sie über das Netzwerk senden. Außerdem benutzen sie nur die IP-Adresse zur Authentifizierung, was evtl. IP-Spoofing ermöglicht
.
Zugangs-Sicherheit
Ein Einbruch beginnt oft mit der Kompromittierung eines Benutzer- oder Systemkontos.
Einige einfache Schritte erschweren dies und erlauben es, Einbrüche zu entdecken.
-
Would you like to set up a second UID 0 account [N] ?
Wenn Sie hier mit Ja antworten, wird ein zweiter root-Zugang angelegt. In diesem Fall sollten Sie nie mehr den Originalroot-Zugang benutzen, sondern nur noch den gerade erstellten. Dies verdoppelt zwar die Möglichkeiten, ein Root-Passwort zu knacken... aber dies erlaubt es Ihnen, die Benutzung dieser
root -Identität in den Dateien in /var/log zu verfolgen.
-
May we take strong steps to disallow the dangerous r-protocols? [Y]
Wie oben erwähnt, sind die r-Befehle
eine gute Möglichkeit, sich einen Zugang zu einer Maschine zu erschleichen. Die Passwörter werden im Klartext übertragen! In einem solchen Netzwerk eröffnet ein Snifffer interessante Aspekte...
Bastille-Linux verbietet die Nutzung der r-Befehle
durch PAM (Pluggable Authentication
Modules), entfernt die Ausführungsberechtigung und stoppt die Server in der
tcp_wrapper-Konfiguration
(rlogind, rexecd und rshd). Sie werden durch /etc/inetd.conf
konfiguriert, wo sie als Kommentar enthalten sein sollten..
-
Would you like to enforce password aging? [Y]
Passwörter müssen dann alle 180 Tage gewechselt werden. Zugriffskennungen, deren Passwörter sich nicht ändern, werden deaktiviert.
-
Would you like to create a non-root user account? [N]
Benutzen Sie Ihren root-Zugang so wenig wie möglich. Ein einzelnes Kommando wie
rm -rf
/ kann als root ein Desaster anrichten ... aber etwas weniger als ein Standard-Benutzer. Nur administrative Aufgaben sollten als root durchgeführt werden..
-
Would you like to restrict the use of cron to administrative accounts? [Y]
cron erlaubt die automatisierte Durchführung von Aufgaben.
Z. B. kann ein Administrator das Programm nutzen, um die Datei-Integrität in regelmäßigen Abständen zu prüfen oder die Dateien in /var/log zu überprüfen.
Andererseits ist es ein zu großes Privileg, jeder Benutzerin den Zugriff zu gestatten. Als Kompromiß erstellt BAST eine Datei /etc/cron.allow, in der die für cron zugelassen Benutzer eingetragen sind.
Boot-Sicherheit
Die Optionen dieses Moduls betreffen die physische Sicherheit der Maschine. Dies korrigiert Sicherheitslücken vorheriger Module. Jeder, der direkten Zugang zur Konsole hatte, konnte privelegierten Zugriff (i.e. root) erhalten. Das Starten von LILO im single-Modus führt zu einer Shell mit root-Berechtigung ;-P
Offensichtlich ist das nicht ausreichend. Um den Computer zu schützen, muß
das BIOS passwort-geschützt sein, es darf nur von der Festplatte gebootet
werden können und der Rechner muß verschlossen sein, damit niemand seine
Festplatte einbauen kann ... Das ist natürlich schon fast wieder paranoides
Verhalten und Sie müssen es nicht ohne besonderen Grund tun.
.
Von der Software-Seite gesehen, bieten einige Restriktionen einen guten Kompromiß im Vergleich zur obigen Methode:
-
Would you like to password-protect the LILO prompt? [N]
"Yes" verhindert den unbefugten Zugand zum System nach einen Reboot.
-
Would you like to reduce the LILO delay time to zero? [N]
Auf diese Weise kann niemand Parameter während der Bootphase eingeben. Wenn auf Ihrem Computer allerdings mehrere Betriebssysteme installliert sind, sollten Sie verneinen, weil sonst nur das Standard-Betriebssystem gestartet werden kann!
-
Do you ever boot Linux from the hard drive? [Y]
Wenn Sie eine der vorhergehenden Fragen bejaht haben und LILO auf Ihrer Festplatte instaliert ist, müssen Sie hier auch ja sagen, damit LILO die Änderungen auf die Platte schreibt.
-
Would you like to write the LILO changes to a boot floppy? [N]
Wenn Sie mit einer Bootfloppy arbeiten, entweder für Notfälle oder weil es Ihre Art ist, Linux zu booten, müssen Sie diese ebenfalls aktualisieren.
-
Would you like to disable CTRL-ALT-DELETE rebooting? [N]
Damit soll verhindert werden, dass jemand die Maschine rebootet. Dies ist allerdings sinnlos, solange das Netzkabel ungeschützt ist. ;-)
-
Would you like to password protect single-user mode? [Y]
Wie wir bereits gesehen haben, ist es eine gute Idee zu verhindern, das jedermann root-Berechtigung erlangen kann.
Inetd sichern
Ziel dieses Moduls ist, überflüssige Dienste zu beschränken oder zu deaktivieren.
Cracker finden leicht Sicherheitslöcher in privilegierten Diensten, deshalb sollten sowohl Dienste als auch Privilegien beschränkt werden.
So erlaubt es ein Fehler im DNS von RedHat 6.0, über das Netz Root-Rechte zu erhalten. Deaktivierung dieses Dienstes oder Reduzierung der Privilegien schützt vor diesem Fehler.
Einige Protokolle, wie die bereits erwähnten r-Befehle
und ftp
oderr telnet , sind leicht auszunutzen.
Andere erlauben es, Informationen zu erhalten (finger
oder identd zum Beispiel).
Viele dieser Dienste werden durch
tcp_wrapper
verwaltet, was die Zugriffskontrolle auf einen bestimmten Dienst (durch
/etc/hosts.{allow,
deny}) ermöglicht. Wenn das Wrapper-Programm entscheidet, dass der
Client auf diesen Dienst zugreifen darf, wird die Anforderung an den eigentlichen Server weitergereicht..
Dieser Teil ist noch etwas starr und wird sich in künftigen Versionen ändern.
-
Would you like to modify inetd.conf and /etc/hosts.allow to optimize
use of Wrappers? [Y]
Bastille-Linux installiert diese beiden Dateien. Sie sollten sich diese Dateien anschauen; vielleicht können Sie die Parameter genauer an Ihre Bedürfnisse anpassen.
-
Would you like to set sshd to accept connections only from a small list
of IP addresses? [N]
sshd ist ein Daemon, der Verbindungen auf eine sichere Art und Weise erlaubt (Schlüsselaustausch, Passwort- und Daten-Verschlüsselung). Es ist ein vollständiger Ersatz für telnet,
rlogin,
rsh,
rcp
und ftp.
Es gibt eine äquivalente Version zu ssh
unter BSD-Lizenz: OpenSSH.
Wir kommen noch darauf zurück.
-
Would you like to make "Authorized Use" banners? [Y]
Jeder, der sich mit Ihrer Maschine verbindet, wird eine Warnungsmeldung sehen, die fragt, ob dieser Dienst und Rechner berechtigterweise in Anspruch genommen wird. Die Nachricht findet sich in
/etc/motd .
Bevor wir fortfahren, sollten wir daran erinnern, dass das Netzwerk auf einem Client-Server-Modell beruht. Daher müssen Sie wissen, ob Sie auf der Client- oder Server-Seite eines jeden Dienstes stehen. Wenn der Webserver gestoppt wird, können Sie trotzdem im WWW arbeiten: Ihr Browser ist ein Client.
DisableUserTools
Dieses kurze Modul ist auf einem Server unerläßlich. Normalerweise erlangt ein Hacker Zugang durch eine normale Benutzerkennung. Dann kompiliert sie einige Programme, um Schwachstellen der Maschine auszunutzen. Dieses Modul deaktiviert den C-Compiler für jeden Benutzer ausser
root.
Wenn diese Maschine nur als Server dient, auf der niemand etwas zu kompilieren hat, sollten Sie den Compiler vollständig entfernen.
ConfigureMiscPAM
Ziel dieses Moduls ist es, die Risiken durch Denial-of-Service-Attacken zu begrenzen.
- Diese Attacken bringen ein System durch Überlastung zum Stillstand (z. B. eine Partition durch
core Dateien zumüllen ...).
PAM steht für "Pluggable Authentification Module". Diese Systembibliothek erlaubt es dem System-Administrator, für jede Anwendung die Art der Benutzer-Authentifizierung, die Rechte und die Ressourcen auszuwählen.
-
Would you like to put limits on system resource usage? [Y]
Die /etc/security/limits.conf
-Datei enthält Systembegrenzungen. Bastille-Linux setzt folgende Werte:
-
core-Dateien werden auf 0 begrenzt ;
-
jede Benutzerin darf maximal 150 Prozesse aktiv haben ;
-
die maximale Dateigröße ist auf 40Mb begrenzt.
Jeder Wert kann später direkt in der Konfigurationsdatei geändert werden.
-
Should we restrict console access to a small group of user accounts? [N]
Unter RedHat 6.0/6.1 haben Benutzer der Konsole einige Privilegien wie das Mounten einer CD-ROM.
Man kann den Konsol-Zugang auf eine Gruppe berechtigter Benutzer begrenzen. Mit dieser Frage können Sie diese Benutzer definieren, wenn Sie es möchten.
Logging
syslog ist einer der wichtigsten Dienste, um herauszufinden, ob eine Maschine komprimittiert wurde. Dieser Daemon zeichnet Systemereignisse auf. Sie können den Level der aufgezeichneten Informationen ändern.
Es ist bemerkenswert: Wenn Sie nur ein Minimum an Diensten aktiviert haben, wird jedes Problem schnell aus den /var/log Dateien ersichtllich. Andererseits, wenn Sie eine Unmenge an überflüssigen Diensten aktiv haben, werden diese Dateien sehr umfangreich und dementsprechend schwieriger zu handhaben
.
Dieses Modul fügt neue Überprüfungen in die /etc/syslog.conf-Datei ein.
-
Would you like to add additional logging? [Y]
Bastille-Linux legt eine /var/log/kernel-Datei an, für Meldungen aus dem Kernel-Bereich und die schwere Probleme anzeigen (Firewall-Nachrichten gehören dazu). Einige Informationen werden an 2 Terminals gesendet (TTY 7 und 8). Eine neue Datei mit dem Namen /var/log/loginlog verzeichnet Benutzer, die sich mit dem System verbinden.
-
Do you have a remote logging host? [N]
Solange Sie keine zweite Maschine haben, zu der Sie Ihre Nachrichten senden können, lautet die Antwort nein.
-
Would you like to set up process accounting? [N]
Unter Linux ist es möglich, die ausgeführten Befehle aufzuzeichnen, wer was wann tat.
Diese Log-Dateien werden sehr umfangreich. Natürlich benötigt es eine Menge an Ressourcen und es ist besser, das Accounting abzuschalten bis Sie es wirklich brauchen.
Sonstige Daemonen
Immer um Minimierung bemüht, aktiviert dieses Modul nur die Server, die Sie bem Booten wirklich benötigen.
Standardmäßig gilt jeder Dienst als unnütz und ist daher deaktiviert. Reaktivieren können Sie Dienste mit dem
chkconfig -Befehl.
Dienste |
Beschreibung |
apmd |
Batteriezustandskontrolle. |
NFS und samba |
Zum Verwalten verteilter Dateisysteme ... in heterogenen Netzwerken sehr nützlich, sind sie doch große Sicherheitsrisiken. |
atd |
Alles was atd kann, kann auch mit
cron. erledigt werden. |
PCMCIA Dienste |
Wenn Sie PCMCIA-Hardware benutzen (eher auf Laptops/Notebooks als auf Arbeitsplatzrechnern). |
dhcpd |
Server für die Verteilung temporärer IP-Adressen. Dieser Dienst wird entweder von Internet Service Providern (ISP) angeboten oder in einem LAN benutzt.
|
gpm |
Im Konsolen-(Text-) Modus zur Benutzung der Maus erforderlich. Wenn Sie nicht oft im Textmodus arbeiten, ist dieser Dienst nutzlos.. |
news server |
Nur wenige Leute müssen einen News-Server auf Ihrer Maschine haben. Dies ist normalerweise Sache des ISP. |
routed |
Wie ein News-Server ist auch dies Sache des ISP. Es betrifft das DNS. |
NIS |
Im LAN sehr nützlich .. Aber Ursprung großer Sicherheitsprobleme!!!
|
snmpd |
Der Dienst befasst sich mit Netzwerkadministration (Statistik, Management, Benutzer,...)
|
sendmail |
Es gibt keinen Grund, für das Senden/Empfangen von Mail sendmail als Daemon zu starten.
Außerdem, wenn Sie Ihre eMail per POP/IMAP von Ihrem ISP beziehen, ist
sendmail
wirklich nutzlos und da es große Sicherheitslöcher hat .... |
Sendmail
Wie bereits erwähnt, ist
sendmail
ein Dienst zur Verwaltung von eMail. Seine Geschichte ist voller Sicherheitslücken aufgrund der vielen Aufgaben, die ein Mail-Server durchzuführen hat und der erforderlichen Privilegien (Namensauflösung, Syslog-Information ...). Abgesehen von seinen Schwächen erlaubt es
sendmail, Informationen über eine bestimmte Benutzerin auf einem Server zu erhalten..
Z. B. kann durch sendmail
EXPN und VRFY herausgefunden werden, ob ein bestimmtes Benutzerkonto existiert.
sendmail muss nicht als Service laufen, um eMail senden und verschicken zu können. Für Privatanwender ist sendmail
wahrscheinlich ganz nutzlos, weil Sie jeden Mail-Client wie
(netscape, rmail,
pine,
mutt,
etc...) zum Senden Ihrer eMail nutzen können.
Zum Empfang Ihrer eMail können Sie
sendmail periodisch aktivieren, um Ihre Mailbox zu überprüfen.
-
Do you want to leave sendmail running in daemon mode? [Y]
Wir haben gerade gesehen, das es in den meisten Fällen nutzlos und gefährlich ist - dann ist es besser, ihn zu deaktivieren.
-
Would you like to run sendmail via cron to process the queue? [N]
Hierdurch überprüft sendmail
die Warteschlange alle 15 Minuten Sie können diesen Parameter in der /etc/sysconfig/sendmail-Datei ändern..
-
Would you like to disable the VRFY and EXPN sendmail commands? [Y]
Diese Kommandos bieten nützliche Informationen für Hacker oder Spammer.
Fern-Zugriff
Es ist oft nützlich, sich mit einer entfernten Maschine verbinden zu können.
Wir haben gesehen, dass die
r-Befehle dies in einer sehr
unsicheren Weise tun. BAST empfiehlt hierfür ssh einzusetzen. Diese Software verschlüsselt die Daten (und auch die Passwörter) bei einer Verbindung.
Sie können eine Software benutzen, bei der die Länge des Sitzungsschlüssesl 128 Bit nicht überschreitet. Was ist ein Sitzungsschlüssel. Es ist der Schlüssel, der zur Verschlüsselung der Daten dient.
Dieser Sitzungsschlüssel wird schrittweise zwischen Client und Server aufgebaut.
Er kommt von einem Schlüssel-Austausch-Protokoll (zumeist Diffie-Hellman)
. Es wird zusammengesetzt aus einem Teil eines jeden beteiligten Schlüssels. Als nächstes wird der Sitzungsschlüssel benutzt, um die Daten mit einem symmetrischen Algorithmus zu verschlüsseln (d. h. der gleiche Schlüssel dient zum Ver- und Entschlüsseln der Daten). DES, was zur Verschlüsselung der Unix-Passwörter benutzt wird, ist ein symmetrischer Algorithmus mit einem 56-Bit-Schlüssel.
Nun, ist ein 128-Bit-Schlüssel groß genug, um Transaktions-Vertraulichkeit und Sicherheit zu garantieren: JA!
Selbst heute, wo DES als "nicht sehr sicher" gilt, sind die Attacken außerhalb der CPU-Leistung, die den meisten Leuten zur Verfügung steht. Andererseits ist es ein Fehler zu glauben, ein Schlüssel von 2k Länge sei zweimal so schwer zu finden als ein Schlüssel mit Länge
k .Wenn die Schwierigkeit exponential ist, wächst sie viel schneller als die Schlüsselgröße. Für einen Schlüssel mit einer Länge von
k , existieren 2^k mögliche Schlüssel (und 2^2k für einen Schlüssel von 2k Länge). Multiplizieren wird die Schlüsselgröße mit 2, fügen wir
mögliche Schlüssel hinzu! Wenn Sie die Schwierigkeit betrachten, DES (56 Bit) zu brechen, kann man davon ausgehen, das 128-Bit-Schlüssel unknackbar sind (solange der Ver-/Entschlüsselungsalgorithmus keine Sicherheitslücke enthält.. Aus einer Angriffssicht bringt die Erhöhung dieser Grenze die Schwierigkeit von "unmöglich" nur auf "noch unmöglicher".
4 Andere Software-Pakete bieten ähnliche Dienste :
ssh 1.2.x: ein Client-Server-System zum Aufbau verschlüsselter Verbindungen;;
ssh 2.x: das gleiche wie vorher, nur mit weniger Schwächen und mehr Möglichkeiten;
OpenSSH: eine den vorgenannten vergleichbare Version aber unter einer BSD-Lizenz;
ssf : wie ssh,
aber vom französischen Recht akzeptiert . (Das musste gesagt werden!)
Die folgenden Modue betreffen immer noch Dienste. Die Regeln mögen überraschend aussehen:
Man definiert Restriktionen und dann werden sie gestoppt. Diese beiden Maßnahmen stehen nicht im Widerspruch. Diese Dienste können reaktiviert werden, entweder versehentlich oder durch böswillige Personen ... dann scheint es besser, sie zu beschränken.
DNS
EIN DNS (Domain Name Server) stellt Beziehungen zwischen IP-Adressen und Maschinennamen und umgekehrt her.
Zum Beispiel verweist 198.186.203.36 auf www.bastille-linux.org. Das Hauptprogramm dieses Dienstes ist BIND. Kürzlich wurde eine DoS-Attacke gegen BIND gefunden. Dies kann nur vermieden werden, wenn DNS nur Zugriff auf eine kleine Gruppe von Verzeichnissen hat. Sie können das Root-Verzeichnis (Fehlwert /) mit dem
chroot-Befehl vor der Ausführung eines Befehls ändern.
Zunächst einige technische Details bevor wir das BAST-Verhalten erklären. Der Daemon für diesen Dienst heißt named.
Seine Konfiguration steht in /etc/named.conf.
-
Would you like to chroot named and
set it to run as a non-root user? [N]
Um dies zu erreichen, legt BAST einen neuen Benutzer mit Namen dns an, der keine Shell hat, aber sein eigenes Verzeichnis /home/dns.
In diesem Verzeichnis wird eine klassische System-Architektur nachgebildet mit
(/usr,
/etc,
/var,
etc ...). Als nächstes werden die Konfigurationsdateien und Bibliotheken für den Daemon kopiert. Es müssen noch weitere Änderungen gemacht werden
(für syslog
zum Beispiel - überprüfen Sie das Skriptt DNS.pm).
Nun hat DNS seine eigene Umgebung).
-
Would you like to deactivate named, at least for now? [Y]
Die meisten Leute brauchen keinen Name-Server auf ihrer Maschne, weil ihr ISP diesen Service bietet. Das DNS-HOWTO beschreibt eine Cache-Installation für Namensauflösung, aber selbst das kann Probleme bereiten.
Apache
Apache ist der am häufigsten genutzte Web-Server im Internet. Solch ein Server ist nur in 2 Fällen sinnvoll:
-
um eine Webpräsenz zur Verfügung zu stellen. Hierfür benötigt man eine feste
IP-Adresse. ISP's haben eine solche Adresse, ihre Kunden normalerweise nicht.
-
um Ihre eigenen Webseiten zu testen; in diesem Fall muß der Server
(/etc/rc.d/init.d/httpd start) nur gestartet werden, wenn er benötigt wird.
.
Die Konfigurationsdateien finden sich in /etc/httpd/conf.
-
Would you like to deactivate the Apache web server? [Y]
Weil wir ihn nicht immer benötigen, deaktivieren wir ihn.
-
Would you like to bind the web server to listen only to the localhost? [N]
Es ist möglich, den Daemon httpd an eine bestimmte IP-Adresse zu binden. BAST schlägt eine Verbindung zur
localhost-Adresse, 127.0.0.1, vor. Dies erlaubt das Testen von Webseiten auf der eigenen Maschine.
Erreichbar sind sie über
http://localhost/
Apache benutzt damit das
loopback -Interface
(lo) für seine Arbeit..
-
Would you like to bind the web server to a particular interface? [N]
Yes löscht die vorherige Antwort.. Wir sagten, daß wir den Web-Server mit dem
loopback-Interface benutzen wollen ... und diese Frage erlaubt es, ein anderes Interface (z. B. Ethernet) mit dem Web-Server zu verbinden.
-
Would you like to deactivate the following of symbolic links? [Y]
Das muß gesetzt werden. Wie der DNS in einem eingegrenzten Bereich läuft, darf es dem
Apache nicht erlaubt werden, seinen Bereich
(z. B. /home/httpd) zu verlassen.. Wenn ein Benutzer einen Link auf root
/ in seinem Web-Server-Verzeichnis hat, kann jedermann auf alle Dateien zugreifen, vor allem auf die Konfigurationsdateien wie
passwd und andere.
-
Would you like to deactivate server-side includes? [Y]
Wie Jay Beale sagt, wenn Sie nicht wissen, worum es geht, brauchen Sie es auch nicht:
Es reicht zu sagen, das dies so konfiguriert werden kann, das Benutzer beliebige Programme auf dem Server ausführen können.-
Would you like to disable CGI scripts, at least for now? [Y]
Ein CGi-Skript (Common Gateway Interface) zu schreiben ist nicht schwierig ... aber es verlangt sorgfältiges Arbeiten. Viele Methoden zur Systemkomprimittierung beruhen auf Fehlern in diesen Skripts.
-
Would you like to disable indexes? [N]
Ohne eine index.html-Datei in enem Verzeichnis zeigt Apache alle Dateien in diesem Verzeichnis an.
Dies ist ein geringeres Problem als das Beachten symbolischer Links ... aber,
stellen Sie sich vor, das ein Verzeichnis wichtige schützenswerte Daten enthält.
Ein Web-Server kann wie jeder andere Server eine Einladung zum Besuch und zur Beschädigung Ihres Rechners werden, wenn er schlecht konfiguriert ist. Dies kann manchmal recht ärgerlich werden.
Besuchen Sie einfach mal
www.kitetoa.com,
Sie werden es nicht bedauern ;-) ( Hinweis des Übersetzers: Leider nur in französisch!)
Drucken
Nur eine Frage: Werden Sie von dieser Maschine aus drucken? Wenn Sie nein sagen, deaktiviert BAST
den lpd-Daemon und entfernt das
SUID-Bit von lpr und lprm.
=============
FTP
Aus Sicherheitssicht kann FTP die Ursache für viele Probleme sein. Beim Verbindungsaufbau wird das Passwort im Klartext übertragen, ebenso die Daten.
Außerdem wurden einige Sicherheitslücken im
wu-ftpd gefunden. Wenn Sie diesen Dienst aktivieren müssen, können Sie durch BAST einige Möglichkeiten beschränken.
Die Datei, die den Zugriff auf den FTP-Server regelt, ist
/etc/ftpacces.
-
Would you like to disable user privileges on the FTP daemon ? [N]
Ein FTP-Problem ist das der Verbindung als "Anonymus"-Benutzer.
Ein weiteres das des Datei-Uploads. Viele Attacken nutzen diese Schwächen.
- Would you like to disable anonymous download? [N]
Damit werden Verbindungen mittels
anonymous-Login verhindert.
Noch einige Tips und Tricks
Wie ich bereits sagte, hat BAST großen erzieherischen Wert.
Fragen und Kommentare sind bedeutsam.
Wenn Dinge nicht ganz klar sind, gibt es viele Ressourcen, um die richtige
Antwort zu finden. Der beste Weg, um zu einem bestimmten Thema etwas zu
erfahren, ist die Benutzung des entsprechenden Moduls.
Erstellen Sie eine Sicherungskopie der Datei mit den Fragen. Editieren Sie die Questions.txt-Datei.
Jedes Modul beginnt mit dem FILE-Schlüsselwort ... behalten Sie nur, was Sie benötigen.
/root/Bastille >> cp Questions.txt
Questions.txt-orig
/root/Bastille >> emacs Questions.txt
BackEnd.pl &
/root/Bastille >> ./InteractiveBastille
Natürlich sind die Maßnahmen von BAST nicht genug, um Ihr System zu sichern:
- Kein System ist zu 100 % sicher;
- zusätzliche Maßnahmen sind erforderlich, um die "Arbeit" von BAST zu komplettieren.
Dazu gehören Logdatei-Analysatoren, Port-Scan-Entdeckung (portsentry, snort, snplog, etc ...), die Benutzung des www.openwall.com Kernel-Patches.
Es ist ein langer und schwieriger Weg ein System zu sichern. Sie müssen sich ständig über Sicherheitslücken informieren (z. B. durch Mailing-Listen wie "bugtraq" von der securityfocus-Webseite).
Zusammenfassung
BAST hilft beim Sichern einer sehr bekannten Distribution. Sie könnten fragen: "Warum soll ich diese benutzen?"
Sicherlich ... aber RedHat (Mandrake - sie sind sehr ähnlich) hat einige schöne Möglichkeiten. Ziel dieses Artikels ist es nicht, eine Distribution zu fördern (oder zu verdammen). Die Freihiet der Wahl ist eine der stärken freier Software. Dieser Artikel hat verschiedene Ziele. Zuerst soll er Ihnen die ständigen Sorgen eines Systemadministrators zeigen, der in der Furcht lebt, das sein Netzwerk von böswilligen Leuten zerstört wird.
Andererseits können Sie mit diesem Werkzeug tief in die Konfiguration eines Linux-Systems blicken.
In dieser Hinsicht ist es ein guter Weg, nicht nur für Anfänger, sondern auch
für erfahrene Benutzer, die
"Mysterien" einer Linux-Konfiguration zu entdecken.
Die zwei grundlegenden und allgemeinen Konzepte sind Minimalismus und Tiefe.
Weniger aktive Dienste bedeuten weniger Sicherheitslücken. Für jeden Dienst
sind mehrere Schutzebenen besser als eine ... aber dies ist ein zweischneidiges
Schwert, weil ein schlecht konfigurierter Schutz (oder die Kombination mehrerer)
sich gegen Sie wenden kann.
Zum Schluß: die nächste Version soll BUS (Bastille Unix
Security) heißen. Es wird eine Kombination aus BAST und Msec (Mandrake
Security Project). Letzteres wird umbenannt in Usec (Unix Security Project).
Referenzen
-
http://bastille-linux.sourceforge.net
: offizielle Seite für Bastille-Linux e
-
Bastille-Linux: A Walkthrough : on www.SecurityFocus.com site,
von Jay Beale, Hauptentwickler von Bastille-Linux,
präsentiert die Software und die Installation. Dieser Artikel half mir sehr beim Schreiben des Artikels, den Sie jetzt lesen ;-)
-
http://www.sans.org : die Webadresse der
SANS-Gruppe, (Jay Beale arbeitet mit ihnen zusammen).
Eine wahre Informationsquelle über Computer-Sicherheit.
-
http://www.securityfocus.com/frames/?content=/vdb/stats.html:
noch bei SecurityFocus, eine interessante Studie über Betriebssysteme und ihre Fehler..
Erste Plätze für eine wohlbekannte "OS"-Familie, dann kommt Linux.
.
-
www.kitetoa.com : ein System, das Webserver testet ... und interessante Sachen findet.
. Zugleich spaßig und pathetisch - nur in französisch
-
http://www.ssh.com : secured
shell. ssh offizielle Seite; frei benutzbar zur Evaluierung oder nicht kommerzielle Nutzung oder für Universitäten
-
http://www.openssh.org : das gleiche wie ssh ...
aber unter BSD-Lizenz :)
Last modified: Mon Jun 12 16:40:50 CEST 2000
Talkback für diesen Artikel
Jeder Artikel hat seine eigene Seite für Kommentare und Rückmeldungen. Auf dieser Seite kann jeder eigene Kommentare abgeben und die Kommentare anderer Leser sehen:
2001-05-22, generated by lfparser version 2.13