Teil 2: Den Server absichern
Aufbau von /etc/sudoers
In der Datei befinden sich vordefinierte Kommentare, die helfen sollen, die Datei übersichtlich zu gestalten.
# /etc/sudoers # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL schroedi ALL=(ALL) ALL
Den Eintrag root ALL=(ALL) ALL können Sie auskommentieren.
Mögliche Beispiele für die Verwendung von sudo:
sudo -u www-data vim /var/www/htdocs/index.html
Hier verwenden Sie den User www-data, um mit dem Editor die Datei index.html zu bearbeiten.
Um einen Server neu zu booten, verwenden Sie folgendes. Dieses Recht sollte nicht jedem Benutzer zugestanden werden.
sudo shutdown -r +15 "quick reboot"
Standardmäßig loggt sudo die Aktivitäten im Zusammenhang mit dem Sudo-Kommando ins Syslog, wo die Meldungen in den Dateien /var/log/auth.log oder /var/log/messages erscheinen. Beispiel:
Feb 20 16:22:38 127.0.0.1 sudo: schroedi : TTY=pts/1 ; PWD=/home/schroedi ; USER=root ; COMMAND=/bin/ls -al /root/ Feb 20 16:23:12 127.0.0.1 sudo: schroedi : TTY=pts/1 ; PWD=/home/schroedi ; USER=root ; COMMAND=/bin/cat /etc/passwd
Sollten Personen, die nicht Mitglieder der Sudoers sind (nicht in der Datei /etc/sudoers eingetragen sind), einen Befehl mit sudo ausführen wollen, wird dies ebenfalls geloggt und möglicherweise eine Email generiert.
Envelope-to: root@localhost To: root@localhost Subject: *** SECURITY information for localhost*** From: "M. Schroeder" <schroedi@localhost> localhost : Jan 17 07:51:36 : schroedi : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/schroedi/.ssh ; USER=root ; COMMAND=/sbin/ifconfig eth0
An dieser Stelle werden Sie erkennen, dass sudo nicht nur ein erheblicher Sicherheitsgewinn sein kann, wenn Sie es restiktiv verwenden, sondern auch, dass Sie jederzeit nachvollziehen können, wer auf Ihrem Server was gemacht hat.
Diese Logging-Konfiguration kann ebenso durch Optionen in der Datei /etc/sudoers verändert werden.
Außerdem können Sie nun nach Art von Apple oder Ubuntu den Root-Account deaktivieren, da dieser zum Arbeiten nicht mehr verwendet wird. Ich verbiege in der Datei /etc/passwd die Standard-Shell auf /bin/false, danach sollte das Einloggen und das su - nicht mehr funktionieren.
root:x:0:0:root:/root:/bin/false
Server absichern
Firewall
Vorweg sollte gesagt werden:
Es wird nie und nimmer eine hundertprozentige Sicherheit geben. Dennoch können Sie es einen Angreifer so schwierig wie möglich machen, Ihren Server auszuhebeln. In diesem Kapitel möchte ich Ihnen zeigen, wie Sie Ihren Server mit einer Firewall absichern können, was es hierbei zu beachten gibt und vor allem, wo es den einen oder anderen Trick gibt.
Firewall in der Praxis
In der Praxis ist ein Server, der ohne Firewall betrieben wird, ein gefundener Spielplatz für üble Zeitgenossen und Skriptkiddies.
Der Betrieb einer Firewall ist also unumgänglich. Es ist nur eine Frage der Zeit, bis Ihr Server von einem Portscanner überprüft wird und dann durch einen Angreifer als offen erkannt wird.
Es gibt sicher zahlreiche Bücher über Firewalls und Serversicherheit. An dieser Stelle will ich Ihnen zeigen, wie Sie Ihren Server sicher machen können. Außerdem erhalten Sie einen Einblick in den Sinn und Zweck einer Firewall sowie deren Konfigurationsphasen.
Warum sollte man eine Firewall überhaupt einsetzen?
Auch wenn auf der Webseite einiger Provider erklärt wird, dass auf einem Rootserver eine Firewall nicht notwendig ist, ist es meines Erachtens sehr sinnvoll, seinen Rechner nur die Ports oder Dienste zur Verfügung stellen zu lassen, die Sie wirklich benötigen.
Ein weiterer Vorteil ist die Kontrolle des Datenverkehrs auf den einzelnen Ports. Sie können ihn entweder komplett unterbinden, nur von innen nach außen zulassen oder an einen bestimmten Port weiterleiten.
Außerdem werden Sie in einem weiteren Workshop-Teil lernen, wie Sie den ein- und ausgehenden Traffic ermitteln können und diesen grafisch aufbereitet als HTML-Datei darstellen.
Sofern Sie sich über eine Rechnerverbindung an Ihrem Server anmelden, dann sollten Sie zunächst dafür sorgen, dass Sie nur sichere Dienste verwenden. Verwenden Sie Telnet oder Dienste wie rlogin, sollten Sie wissen, dass das Passwort dort im Klartext übertragen wird. Es könnte also von jemandem mitgeschnitten (gesnifft) werden. Mit SSH werden die Anmeldepasswörter nicht im Klartext übertragen.
Sollten Sie sich immer über einen bestimmten Rechner auf Ihrem Server einloggen, dann können Sie diese Information ebenfalls für das Absichern verwenden. Sie können dann den SSH-Login auf eine bestimmte IP-Adresse limitieren oder, sofern Sie sich über einen Provider einwählen und nicht sicher sein können, dass Sie immer die gleiche IP-Adresse erhalten, einen Adressbereich definieren. In der Regel benutzen Provider immer den gleichen Pool von IP-Adressen.
Auch andere Dienste wie HTTP, POP3/IMAP oder SMTP sind gefragt bei der Gegenseite. Im Internet kursieren zahlreiche Exploits für einschlägige Servertypen. Wollen Sie einen Mailserver mit den Diensten POP und SMTP nur für einen Bereich von Personen oder Rechnern verwenden, dann können Sie diese Ports ebenfalls auf einen Bereich beschränken.
Ihr Ziel sollte es sein, nur die Ports zu öffnen, die Sie für den Betrieb des jeweiligen Dienstes benötigen. Das hat für Sie den Vorteil, dass ein Angreifer nicht umhin kommt, einen Exploit auf den Dienst anzuwenden, oder anderweitig manipulieren muss.
Firewall Policy
Jede Firewall ist nur so sicher wie die Idee, die dahinter steckt. Sie sichern aber nicht nur nach außen, sondern auch nach innen. Also sollten Sie für jeden Bereich, den Sie verwenden wollen, eine eigene Policy definieren.
Der erste wichtige Ansatz, den Sie festlegen sollten, ist, dass Sie alles prinzipiell dicht machen - alles sperren (Default Policy = DENY).
Danach haben Sie die Dienste, die Sie zur Verfügung stellen wollen. Diese müssen Sie öffnen, da sonst der Dienst nicht benutzbar ist.
Eine Default-Policy auf dem Papier könnte wie folgt aussehen:
- Grundsätzlich ist jeder Verkehr aller Protokolle und Dienste von innen nach außen und umgekehrt verboten, sofern dieser nicht ausdrücklich durch eine nachfolgende Regel gebilligt wurde.
- Von außen: Web-Zugang ist nur über die Ports http/https möglich.
- Für Wartungsarbeiten steht ein SSH-Zugang, der nur über den Administrationsserver möglich ist, zur Verfügung.
- ICMP-Echo-Anfragen für den Server sind aktiviert. Damit können Sie Ihren Server anpingen.
Die Administration des Servers werden Sie nun hoffentlich mit ssh durchführen. Hier können Sie einen IP-Adressbereich angeben, von dem aus der sshd verfügbar ist.

