Die Erhaltung eines sicheren Systems ist eine der Hauptaufgaben einen Systemadministrators Die Erstellung eines absolut sicheren Systems ist praktisch unmöglich, es sei denn, man will dieses in einen versiegelten Tresorraum stellen, zu dem niemand den Schlüssel oder die Kombination hat. In der Praxis wird auf die meisten Systeme von mehreren Personen zugegriffen, entweder physisch oder per Remotezugang. Als Folge dessen ist es notwendig, Sicherheitsrichtlinien zu erstellen und diese zu befolgen. Bei der Erstellung von Sicherheitsrichtlinien gibt es viele Faktoren zu beachten. Dazu gehören Aspekte wie Vernetzung, Möglichkeit des physischen Zugriffs, Zugriff auf den Server über das Internet, verfügbare Intranetdienste sowie Kennwörter.
Die einfachste Art und Weise für jemanden, die Sicherheit Ihres Systems zu gefährden, besteht darin, allen Personen den physischen Zugriff zu gewähren. Falls Sie über ein Diskettenlaufwerk, ein CD-ROM-Laufwerk oder eine Festplatte verfügen, dann ist Ihr System nicht sicher. Falls ein Eindringling über eine Diskette, ein bootfähiges CD-ROM-Laufwerk oder sogar eine eigene Festplatte verfügt, können diese Geräte zum Booten Ihres Servers verwendet werden, wodurch diese vollen Zugriff auf die Informationen auf Ihrem Laufwerk erhalten.
Nachdem die physische Sicherheit des Systems gewährleistet ist, muss als nächstes die Sicherheit des Netzwerks berücksichtigt werden. Die meisten Computer sind heute für den Informationsaustausch mit anderen Systemen miteinander vernetzt. Sogar die meisten privaten Systeme sind über Modems und das Interent vernetzt. Im nächsten Abschnitt wird die Netzwerksicherheit erläutert.
Der erste Aspekt, den es zu berücksichtigen gibt, sind Kennwörter. Wenn Sie über ein schwaches Kennwort verfügen, wie z.B. eines, das auf einem regulären Wort aus einem Wörterbuch basiert, z.B. "Schlaf", würde ein Eindringling nur wenige Sekunden benötigen, um Ihr Kennwort herauszufinden. Wenn Sie dies vermeiden möchten, verwenden Sie Groß- und Kleinbuchstaben, Zahlen, Satzzeichen und andere Sonderzeichen, wie Sternchen (*) oder Zirkumflexzeichen (^). So können Sie z.B. ein Kennwort wie "DiTn%#6M" erstellen, das viel schwerer zu errraten ist.
Es ist jedoch nicht so schwierig, wie Sie denken, sich ein solches Kennwort zu merken. Sie könnten sich z.B. ein Kennwort wie D&v$MA5 wie folgt merken:
Hierbei handelt es sich um ein starkes Kennwort, das sich trotzdem leicht merken lässt. Kennwörter sollten häufig geändert werden, da sich fast alle durch einfache maschinelle Berechnungen knacken lassen.
Wenn Sie einen sicheren Computer in eine Netzwerkumgebung einbinden möchten, dann sind die ersten Überlegungen die Software, die Sie ausführen und die Berechtigungen, die Sie anderen Benutzern geben. Eine gute Daumenregel besteht darin, das Prinzip der minimalen Berechtigung anzuwenden. Dies bedeutet, dass Sie Benutzern nur Zugriff auf die Dateien und Programme geben, die sie für ihre Arbeit benötigen. So benötigt z.B. ein normaler Benutzer, der nur in der Lage sein muss, E-Mail zu lesen und senden, im Internet zu surfen und Dokumente auszudrucken, keinen Zugriff auf eine private Datenbank.
Wie können Sie erkennen, ob die Sicherheit Ihres Systems gefährdet wurde? Führen Sie eine häufige Überprüfung der Protokolle durch. Im Verzeichnis /var/log befinden sich eine Vielzahl von Protokollen, die die Systemaktivität aufzeichnen. //var/log/secure zeichnet z.B. alle zugriffs- und kennwortspezifischen Aktivitäten auf, und bietet Ihnen somit eine Überwachungsliste darüber, wer zu welcher Zeit auf Ihr System zugegriffen hat.
Obwohl Systemprotokolle nützlich sind, gibt es zusätzliche Tools, die Sie verwenden können, wie z.B.:
Diese Programme helfen Ihnen bei der Ermittlung zusätzlicher Informationen so beim Überprüfen Ihres Netzwerks auf eine Vielzahl von Schwachstellen.
Als weitere wichtige Komponente der Systemsicherheit sollten Sie sicherstellen, dass keine der in Ihrem System installierten Software bekannte Sicherheitsschwachstellen hat. Es gibt eine Organisation, CERT (Computer Emergency Response Team), die solche Software-Schwachstellen (eng. Vulernability) sammelt und dokumentiert. Geben Sie in Ihrem Webbrowser die Adresse http://www.cert.org/ ein. Caldera Systems stellt auf seiner Website unter der Adresse http://www.calderasystems.com/support/security/ ebenfalls eine Liste mit Sicherheitsupdates zur Verfügung.
Dieser Abschnitt erläutert die Erstellung einer Firewall zwischen Ihrem Server und anderen Systemen (in der Regel das Internet) sowie die Zugriffssteuerung auf Ihr internes Netzwerk mit Hilfe von Paketfiltern. Firewalls bieten einen Schutzwall zwischen dem Internet oder anderen externen Systemen und Ihrem internen Netzwerk. Paketfilter ermöglichen eine ähnliche Funktion, indem sie den Zugriff auf Ihr Netzwerk durch Untersuchen des Netzwerkverkehrs auf der Paketebene einschränken und nur solche Paketen durchlassen, die bestimmte Informationen enthalten.
Zunächst benötigen Sie einen Kernel, in den IP-Firewallchains kompiliert wurden. Sie können überprüfen, ob der aktuell von Ihnen ausgeführte Kernel diese Funktion hat, indem Sie nach der Datei /proc/net/ip_fwchains suchen. Falls die Datei vorhanden ist, unterstützt der Kernel die IP-Firewallfunktion. Falls nicht, müssen Sie einen Kernel erstellen, der über IP-Firewallchains verfügt.
HINWEIS: In den OpenLinux eServerl-Kernels ist die IP-Firewallfunktion standardmäßig aktiviert. Sollten Sie sich entschließen, den Kernel aus den ursprünglichen Quelldateien erneut zu erstellen, müssen Sie die nachfolgenden Konfigurationsoptionen einstellen, damit der Kernel IP-Firewallchains unterstützt.
Das Tool ipchains kommuniziert mit dem Kernel und gibt an, welche Pakete zu filtern sind. ipchains erstellt und löscht Regeln im intern verwalteten Paketfilterabschnitt des Kernels. Die nachfolgenden Regeln implementieren also die folgenden Sicherheitsrichtlinien:
ipchains -a input -s localnet ! 443 -d 0/0 -i eth(outside) -j ACCEPT
ipchains -A input -p all -s 0/0 -d eth(local) 53 -j ACCEPT
ipchains -A input -p all -s 0/0 -d eth(outside) 53 -j ACCEPT
ipchains -A input -p tcp -s 0/0 -d eth(local) 22 -j ACCEPT
ipchains -A input -p tcp -s 0/0 -d eth(outside) 22 -j ACCEPT
ipchains -A input -p tcp -s 0/0 -d eth(inside) 1024:20000 -j ACCEPT
ipchains -A input -p tcp -s 0/0 -d eth(outside) 1024:20000 -j ACCEPT
ipchains -A input -p tcp -s 0/0 -d eth(incide) 25 -j ACCEPT
ipchains -A input -p tcp -s 0/0 -d eth(outside) 25 -j ACCEPT
ipchains -A input -p tcp -s 0/0 -d eth(inside) 110 -j ACCEPT
ipchains -A input -p tcp -s 0/0 -d eth(outside) 110 -j ACCEPT
ipchains macht nichts anderes, als Regeln in die interne Routingtabelle des Kernels einzufügen, zu löschen und zu aktualisieren. Folglich gehen alle Regeln, die Sie einrichten, beim Neustart verloren. Verwenden Sie zum Speichern dieser Regeln die Skripts ipchains-save und ipchains-restore.
# ipchains-save > /etc/ipchains.rules
# packetfilter - Skript zur Steuerung der Paketfilterung.
# Falls keine Regeln vorhanden, nichts tun
[ -f /etc/ipchains.rules ] || exit 0
echo -n "Paketfilterung aktivieren:"
/sbin/ipchains-restore < /etc/ipchains.rules || exit 1
echo 1 > /proc/sys/net/ipv4/ip_forward
echo -n "Paketfilterung deaktivieren:"
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -P input ACCEPT
/sbin/ipchains -P output ACCEPT
/sbin/ipchains -P forward ACCEPT
echo "Verwendung: /etc/init.d/packetfilter {start|stop}"
Dieses Skript sollte früh innerhalb des Startvorgangs ausgeführt werden. Verwenden Sie das Webmin-Modul "Bootup and Shutdown Actions", um dieses Skript zu konfigurieren. Wenn Sie alternativ dazu die Änderung manuell durchführen und direkt in das grafische System booten, können Sie eine symbolische Verknüpfung mit der Bezeichnung S39packetfilter im Verzeichnis /etc/rc.d/rc5.d erstellen. Falls Sie in das Runlevel 3 booten, der nicht grafischen Anmeldung, erstellen die symbolische Verknüpfung im Verzeichnis /etc/rc.d/rc3.d.
Neben der Paketfilterung des Kernels steuert ipchains auch das IP-Masquerading und das transparente Proxying. Leider werden in der aktuellen Linux-Implementierung diese beiden Begriffe irrtümlicherweise miteinander vermischt. Masquerading und Proxying sind nicht miteinander verwandt.
Der nachfolgende Abschnitt setzt voraus, das Ihre externe Schnittstelle, die mit dem Internet kommuniziert, die Bezeichnung eth0 hat. Ist dies nicht der Fall, passen Sie die folgenden Befehle entsprechend an.
Dieser Abschnitt beschreibt unterschiedliche Firewall-Setups, mit denen Sie das interne Netzwerk vor potentiellen Angreifern aus dem Internet schützen können, und gleichzeitig den LAN-Zugriff auf das Internet ermöglichen. Jedes Setup setzt das folgende, sehr geläufige Szenario voraus:
Sie verwalten das Netzwerk von bugcorp.com. Das Unternehmen verfügt über ein LAN auf TCP/IP Ethernet-Basis mit IP-Adressen aus einem der privaten Adressbereiche:
Netzwerk der Klasse A - 10.0.0.0 - 10.255.255.255
Netzwerk der Klasse B - 172.16.0.0 - 172.31.255.255
Netzwerk der Klasse C - 192.168.0.0 - 192.168.255.255
bugcorp.com verfügt über eine zugewiesene IP-Adresse, 1.2.3.4., bei der es sich um den Rechner mit der Bezeichnung firewall.bugcorp.com handelt. Entscheidend ist, dass das private Netzwerk mit dem Internet über einen einzigen T1-Anschluss verbunden ist.
Dieses Setup verhindert, dass Pakete aus dem privaten Netzwerk direkt in das Internet übertragen werden. Die einzige Möglichkeit für Rechner, eine Internetverbindung herzustellen, ist über die Firewall. Die Firewall ist der einzige Rechner in beiden Netzwerken, der sowohl mit dem Internet als auch dem privaten Netzwerk verbunden ist. Programme, die in der Firewall ausgeführt werden, sogenannte Proxies, bieten Zugriff auf FTP, das World Wide Web, Telnet, RealAudio, Usenet-News und andere Dienste. Umgekehrt müssen alle Dienste, die Sie eingehenden Verbindungen aus dem Internet zur Verfügung stellen möchten, in der Firewall ausgeführt werden.
So ermöglichen Sie den Webzugriff vom privaten Netzwerk auf das Internet:
Transparente Proxies funktionieren ähnlich wie traditionelle Proxies.
Der einzige faktische Unterschied zwischen traditionellen und transparenten Proxies besteht darin, dass Clientprogramme, wie z.B. Webbrowser, speziell für die Verwendung von Proxydiensten konfiguriert werden müssen, während in einer traditionellen Proxyumgebung Clients von den Existenz eines Proxys nicht zu wissen brauchen. Die Konfigurationen sind jedoch leicht unterschiedlich, wie im Anschluss gezeigt:
In diesem Szenario werden Pakete, die zwischen dem privaten Netzwerk und dem Internet übertragen werden, speziell behandelt. Anstelle eines Proxys wird eine spezielle Kernelfunktion, das sogenannte Masquerading, verwendet. Beim Masquerading werden die Headerinformationen von Paketen beim Durchlaufen der Firewall umgeschrieben, wodurch es den Anschein hat, dass diese aus der Firewall selbst stammen. Die Firewall schreibt wiederum die Antwortpakete um, so dass es den Anschein hat, dass diese an den korrekten internen Empfänger gesendet werden. Alle Dienste, auf die vom Internet aus zugegriffen wird, müssen sich in der Firewall befinden.
So ermöglichen Sie den Webzugriff vom privaten Netzwerk auf das Internet:
In diesem Szenario ist Ihr persönliches Netzwerk Teil des Internets: Pakete können ohne Änderung zwischen beiden Netzwerken übertragen werden. Die IP-Adressen des internen Netzwerks müssen durch Beantragung eines IP-Adressenblocks zugwiesen werden, damit der Rest des Netzwerks Pakete an Sie übertragen kann. Dies setzt eine permanente Verbindung voraus.
In dieser Rolle dient die Paketfilterung der Einschränkung der Pakete, die zwischen Ihrem Netzwerk und dem Rest des Internets weitergeleitet werden können, z.B. um dem Internet nur den Zugriff auf interne Webserver zu ermöglichen.
So ermöglichen Sie den netzwerkinternen Webzugriff auf das Internet:
Viele Internet-Clientprogramme ftp und telnet können für die Verwendung von TCP-Wrapper konfiguriert werden, die den Zugriff auf Ihre Systeme enger einschränken und somit die Sicherheit verbessern. Viele der Dienste, die in der Datei /etc/inetd.conf aufgelistet sind, wie z.B. FTP, telnet, IMAP, finger, verwenden TCP-Wrapper. TCP-Wrapper sind Programme, die eine sehr kontrollierte Umgebung für die Ausführung von Programmen, wie z.B. telnet bieten. Durch Steuerung der Ausführungsumgebung können Sie einschränken, auf welche Teile Ihres Systems mit welchen Berechtigungen zugegriffen werden kann, usw.
Wenn nur bestimmte Personen ein Programm verwenden sollen, fügen Sie Ihre Benutzernamen in die Datei /etc/hosts.allow ein, um diesen expliziten Zugriff zu erlauben. Dieser Vorgang ist auch für bestimmte IP-Adressen oder IP-Adressenbereiche oder sogar für ganze Domänen möglich. Analog gibt die Datei /etc/hosts.deny mit derselben Syntax wie /etc/hosts.allow an, wer auf Dienste zugreifen kann, die von TCP-Wrapper kontrolliert werden. In der Praxis wird häufig zunächst allen Benutzern der Zugriff auf Dienste in der Datei /etc/hosts.deny verweigert. Anschließend werden die berechtigten Benutzer (oder IP-Adressen bzw. Domänennamen) selektiv in die Datei /etc/hosts.allow eingefügt.
Beispiel: Die folgende Datei /etc/hosts.deny verweigert allen Benutzern den Zugriff auf alle Dienste:
Um dem Benutzer john@bugcorp.com, einer beliebigen IP-Adresse im Bereich 192.168.0.0 - 192.168.255.255 und allen Benutzern aus der Toplevel-Domäne edu Zugriff auf Ihr System zu erlauben, sollte die Datei /etc/hosts.allow in etwa wie folgt aussehen.
Beachten Sie, dass es sich bei dem Sternchen um kein globales Platzhalterzeichen handelt. *.edu ist nicht identisch mit *.*.edu. In dieser Schreibweise entsprechen nur Rechnernamen im Format beliebiger.rechner.edu dieser Regel.
Die Standardsicherheitsregel für OpenLinux eServer lautet ALL: ALL : ALLOW. Diese Regel lässt alle Verbindungen zu Dämonen zu, die herauskommentiert oder nicht in der Datei /etc/hosts.allow enthalten sind. Dabei besteht eine Ähnlichkeit mit den Sicherheitsrichtlinien von OpenLinux 2.3. Um jedoch diese Standardeinstellung mit anderen Regeln in dieser Datei konform zu machen, wird empfohlen, dass die Zeile 132 herauskommentiert und das Kommentarzeichen in Zeile 136 entfernt wird (ALL: localhost YOUR_subnet KNOWN: ALLOW). Dadurch stehen Standardverbindungen nur dem localhost, localnet und bekannten Hosts zur Verfügung, d.h. Rechnernamen, die bekannte Adressen auflösen.
Telnet ist kein sehr sicheres Programm, da der Benutzername und das Kennwort im Klartext übertragen werden. Auf diese Weise können alle Benutzer ein Paketüberwachungsprogramms (wie z.B. Sniffit) das Kennwort und den Benutzernamen ermitteln. Es gibt jedoch eine Option, die die gesamte Funktionalität von Telnet ohne die Sicherheitsrisiken zulässt: SSH. Mit SSH wird der Benutzername und das Kennwort verschlüsselt, wodurch deren Ermittlung wesentlich erschwert wird (es würde sehr viel Zeit und Rechenaufwand erfordern).
Wenn Sie Kreditkartennummern, Kennwörter oder Bankdaten online erhalten, sollte ihre Website maximale Sicherheit bieten. Dies kann durch Programme wie "Websphere" oder "Secure Apache" erreicht werden. Diese Programme verwenden SSL oder Secure Socket Layer. Sie können dieses Protokoll im Web beziehen, oder die dazugehörige Verschlüsselungssoftware erwerben. Viele Leute verwenden OpenSSL zur Ausführung von "Secure Apache". Dieses Programm bietet Verschlüsselungsfunktionen für Ihre Website, um eine sichere Übertragung von Informationen zu gewährleisten (wie bei SSH).
SSH und SSL sind Methoden zur Verschlüsselung von Daten, die im Internet übertragen werden. Aber was passiert, wenn jemand ihren tragbaren Computer stiehlt, der streng geheime Daten enthält? PGP bietet eine Möglichkeit, Ihre wichtigen Daten vor dem Zugriff anderer zu schützen. MIt PGP können Sie alles von einer Datei bis zu einem gesamten Laufwerk verschlüsseln. Bei der Verwendung von PGP wird empfohlen, ein Kennwort für Ihre verschlüsselten Daten und ein anderes für die Anmeldung festzulegen. Wenn die Daten eine Verschlüsselung rechtfertigen, sollten Sie auch daran denken, ein starkes Kennwort zu verwenden.
Ändern der globalen Bootoptionen 58
Apache-Konfiguration unter Verwendung von Webmin 126
Benutzerdefiniertes Partitionieren 27
Berechtigungen und Zugriff 152
Einrichten eines BOOTP/DHCP-Servers 135
Einrichten eines Domain Name Servers 129
Einrichten eines FTP-Servers 127
Einrichten eines Webservers 125
Erstellen der Installationsdisketten 14
Erstellen eines neuen Benutzer-Accounts 37
Handbuch für Systemadministratoren 11
Herstellen der physischen Sicherheit 151
Hilfe während der Installation 19
Konfigurieren des Grafiksystems 20
Konfigurieren eines Druckservers 141
Konfigurieren eines Mailservers 120
Konfigurieren eines PPP-Einwahlservers 133
Konfigurieren von OpenLinux eServer als NIS-Client 75
Manuelles Laden von Kernelmodulen 66
Modifizieren des aktuellen Kernels 56
unbeaufsichtige Installation mit Hilfe des Lizard 14, 17
Unbeaufsichtigte Installation 16