Im Zuge der ganzen Enthüllungen von Edward Snowden zu Überwachung und Datenschutz ist die Sensibität diesbezüglich stark gewachsen. Immer weniger Menschen möchten ihre persönlichen und (höchst-)sensiblen Daten "Clouds" mit unbekannten Zugriffsmöglichkeiten Dritter überlassen. Konsequenterweise müssen diese Dienste durch einen eigenen Server, welcher auch administriert werden muss, abgedeckt werden. In diesem Artikel möchte ich kleine Auswahl verschiedener Serverdienste und Verwaltungstools vorstellen, welche auf einem Debian-basierten Linux betrieben werden können.

 

Ob man einen Server "headless", also ohne Grafische Oberfläche und somit ohne Bildschirm betreibt, oder mit Benutzeroberfläche, ist zweitrangig. In beiden Fällen können die Dienste über die Kommandozeile installiert und konfiguriert werden. Die Befehle sind im Folgenden meist mit angegeben und beziehen sich auf die Linux-Distribution Debian und Derivate. Bei anderen Distributionen sind die Namen der Softwarepakete identisch, die Paketverwaltung hat aber einen anderen Namen und Befehl. Die Paketverwaltungssoftware "apt-get" beziehungsweise "aptitude" sollten vorhanden sein und können beide verwendet werden. Für Systeme, welche keinen direkten "root"-Account, sondern das "sudo"-System besitzen, muss der Befehl "sudo" vorangestellt werden.

Beispiel mit root-Zugang und apt-get:

apt-get install <paketname>

Beispiel mit sudo und aptitude:

sudo aptitude install <paketname>

 

Softwareverwaltung

Bei Linux ist man in der komfortablen Lage, den Bezug und die Verwaltung der Software zentral administrieren zu können. Folgende (Teil-)Automatisierungen verringern den Wartungsaufwand zusätzlich.

aptitude

aptitude ist eine erweiterte und komfortablere Software, welche auf dem auch schon sehr umfangreichen apt-get aufsetzt. Neben dem Einsatz als Komandozeilentool bietet es eine grafische Oberfläche zur Paketverwaltung, über die neben der Paketbeschreibung auch die Beziehungen zu anderen Paketen einfach nachgeschlagen werden kann. Sollte aptitude nicht standardmäßig installiert sein, kann man es über apt-get nachholen:

apt-get install aptitude

apticron

apticron liest einmal täglich die Paketlisten (welche automatisch aktualisiert werden) und kann eine eMail versenden, welche Pakete installiert werden können. Dies erleichtert die Administration und das Einspielen von Updates ganz erheblich. Zu installieren über

aptitude install apticron

Noch nützlicher ist die Funktion in Kombination mit

unattended-upgrades

Dieses Paket lädt vorhandene Sicherheitsaktualisierungen automatisch herunter und installiert diese, falls keine Nutzerinteraktion nötig ist und keine sonstigen Gründe einem automatischen Update entgegen stehen. In Verbindung mit apticron werden so nur noch schwierige Fälle und sonstige Aktualisierungen per Mail gemeldet, welche manuelles Eingreifen erfordern.

aptitude install unattended-upgrades

checkrestart

Bei Updates kann es passieren, dass zwar die neuen Programmbibliothek" title="wikipedia: Programmbibliothek" target="_blank">Bibliotheken schon installiert sind, aktuell laufende Dienste aber noch die alten Versionen im Speicher haben und benutzen. Um den Zustand zu beheben, muss man den Dienst neustarten. Um zu testen, welche Dienste dies sind, kann man checkrestart ausführen. Diese Software findet die betroffenen Programme und liefert auch den Befehl zum Neustart der Dienste.

aptitude install debian-goodies

 

Serverdienste

Die verschiedenen Funktionalität werden auf einem (weltweit üblicherweise Linux-)Server in Form von Diensten ("Daemon") zur Verfügung gestellt. Es bezeichnet einen im Hintergrund laufenden Dienst, welche auf dem dafür typischen Port auf Anfragen wartet. Die folgenden Dienste bilden (normalerweise) die Basisausstattung für einen Server. Die Absicherung der Dienste ist sehr wichtig, die Anleigungen und Tipps dazu vielfältig, weshalb sie den Rahmen übersteigen würden. Deshalb möchte ich diesbezüglich auf die weiterführenden Links und das Netz verweisen.

sshd

SSH beziehungsweise der OpenSSH-Server bildet die Grundlage für das Arbeiten auf einem Server ohne eigene Benutzeroberfläche beziehungsweise ohne Maus/Tastatur/Bildschirm oder bei gemieteten Servern. Da dieser Dienst quasi unumgänglich ist, muss er besonders geschützt werden, auch wenn die Anfälligkeit gegen Angriffe aufgrund seiner Exponiertheit durch vielfache Kontrolle des Quellcodes gering ist. Die Installation der Serverkomponente erfolgt über

aptitude install openssh-server

die der Clientsoftware über

aptitude install openssh-client

beziehungsweise beide gleichzeitig über

aptitude install ssh

Wichtig dabei zu wissen ist, dass sich der Benutzer "root" - sofern vorhanden (vergleiche sudo-Mechanismus) - standardmäßig einloggen darf. Dies ist notwendig, da bei einer Neuinstallation nicht immer ein Normaler Benutzer angelegt wird und somit ein Login unmöglich wäre. Das heißt aber auch, dass Brute-Force-Angriffe direkt auf das Superuser-Konto ausgeführt werden können. Höheren Schutz erlangt man, indem man einen normalen Benutzer anlegt, den root-Login in der SSH-Konfiguration deaktivert und sich nur über den normalen Benutzer einloggt. Zum Aktivieren der neuen Einstellungen muss der ssh-Dienst natürlich neu gestartet werden. Noch sicherer ist übrigens der Login per Zertifikat.

sshguard/fail2ban

Um sshd vor Brute-Force-Angriffen und der daraus möglicherweise folgenden hohen Prozessor- und Netzwerk-Last zu schützen, kann sshguard beziehungsweise fail2ban eingesetzt werden. Die beiden Tools blockieren dabei IP-Adressen von den angreifenden Rechnern bei einer bestimmten Anzahl von fehlerhaften Login-Versuchen für eine bestimmte Zeit. sshguard ist dabei speziell für den SSH-Dienst, fail2ban kann auch weitere Dienste (inkl. SSH) absichern. Die Installation geschieht über

aptitude install sshguard/fail2ban

apache2

apache ist einer der am weitesten verbreiteten Webserver. Da er schon etwa 20 Jahre auf dem Buckel hat und eher defensiv entwickelt wird, ist seine Stabilität als hoch anzusehen. Durch die große Verbreitung gibt es auch eine sehr gute Dokumentation. Die aktuelle Version 2 installiert man über

aptitude install apache2

mod_security

mod_security ist im Prinzip eine Firewall für apache. Sie stellt generische, auf regulären Ausdrücken basierende Suchmuster zur Verfügung, welche Angriffe nach verschiedenen Schemata verhindern sollen. So groß die Flexibilität, so hoch auch die Gefahr, durch Fehlkonfiguration erst Sicherheitslücken zu öffnen. Deshalb ist eine ausführliche Beschäftigung mit den Möglichkeiten unabdingbar. mod_security installiert man über

aptitude install libapache2-modsecurity

Einen Standardregelsatz, der Angriffe passend filtert (OWASP Core Rule Set -- CRS), bekommt man über

aptitude install modsecurity-crs

Diese Anleitung erklärt, wie man mod_security richtig installiert und konfiguriert.

mod_evasive

mod_evasive bietet die Möglichkeit, (D)DOS-Attacken abzuwehren. Im Prinzip ähnelt es somit der Software sshguard für den SSH-Server.

aptitude install libapache2-mod-evasive

Weitere Apache-Module

Um spezielle Arten von Angriffen wie etwa "Slowloris"-Attacken, Bandbreiten- und Leistungsengpässen zu vermeiden, können auch die folgenden Module von Interesse sein:

mod_limitpconn, mod_qos, mod_noloris, mod_antiloris und mod_reqtimeout.

mysql/postgresql

Die Datenbankserver MySQL und PostgreSQL sind als Datenspeicherort unabdingbare Bestandteile eines LAMP-Stacks. Alle dynamischen Daten werden in der Datenbank abgelegt. Da alle wichtigen Daten hier lagern, sind wiederum hohe Anforderungen an die Sicherheit des Dienstes zu stellen! Eine entsprechende, umfangreiche Beschäftigung mit der Absicherung ist damit unabdingbar (siehe auch Links unten). Installiert wird der jeweilige Servertyp mit:

aptitude install mysql-server/postgresql

automysqlbackup/autopostgresqlbackup

Diese beiden Skripte ermöglichen ein einfaches Backup der Datenbanken durchzuführen. Sie können zeitlich gesteuert werden, Backups verschieden lange vorhalten und bei Erfolg/Misserfolg per Mail benachrichtigen. In diesem Zusammenhang darf nie vergessen werden: Nur ein getestetes (also erfolgreich wieder eingespieltes) Backup ist ein "echtes" Backup!

aptitude install automysqlbackup/autopostgresqlbackup

exim4

In diesem Artikel ist öfters von "Benachrichtigung per Mail" die Rede. Dies kann natürlich nur mit einem installierten Mailserver geschehen. Standardmäßig ist (bei Debian) exim4 vorhanden. Dieser ist deutlich kleiner als Postfix, hat aber für die meisten Anwendungsfälle einen meist völlig ausreichenden Funktionsumfang. Standardmäßig ist er nur für lokale Mailzustellung konfiguriert. Um nicht den Aufwand betreiben zu müssen, ihn als "echten" Mailserver zu konfigurieren, kann man auch die Funktion "Smarthost" nutzen. Dabei hinterlegt man die Zugangsdaten eines Mailservers, zu dem man SMTP-Zugang hat und die Mails werden über diesen Weg versandt. Dabei ist nur sicherzustellen, dass die Verbindung verschlüsselt aufgebaut wird und die Konfigurationsdatei mit dem Passwort keine Leserechte für Unbefugte enthält. Installiert wird er über

aptitude install exim4

Um die Konfiguration (zum Smarthost) - auch erneut - durchzuführen, ruft man

(sudo) dpkg-reconfigure exim4

auf und folgt den Anweisungen.

openvpn/dnsmasq

Um einen geschützten und verschlüsselten Kanal zu seinem Server aufbauen zu können, ist OpenVPN eine sehr gute Variante. Einerseits, um Zugriffe auf bestimmte Dienste schon serverseitig auf lokale IP-Adressen einschränken und somit besser schützen zu können (zum Beispiel nagios), andererseits, um beispielsweise in öffentlichen oder offenen WLANs seine Daten vor dem Zugriff Dritter zu schützen. Um auch die DNS-Abfragen über diesen geschützen Tunnel zu leiten, muss auch dnsmasq installiert werden. Eine (nicht mehr ganz taufrische) Anleitung dafür ist hier zu finden, eine weitere, für Debian 7 (wheezy), hier.

aptitude install openvpn/dnsmasq

OwnCloud

Das Betreiben eines Servers soll ja nicht alleine dem Selbstzweck dienen. Dienste wie der Mail-, Web- oder Datenbankserver möchten auch beschäftigt werden. Deshalb möchte ich eine Software vorstellen, welche in mehrfacher Hinsicht einen großen, täglichen Nutzen hat: OwnCloud. Es ist ein OpenSource-Projekt und ersetzt propriätere Dienste zum Synchronisieren von Dateien wie DropBox oder Google Drive. Näheres habe ich in diesem Artikel näher ausgeführt.

Debian ist bekannt für die zurückhaltende Art, Software freizugeben. Das führt zu seiner legendären Stabilität. Dies ist aber für sich schnell entwickelnde Projekte mit vielen Releases nachteilig. Um nicht bei jedem Update das neue Archiv per Hand einspielen zu müssen, wird von OpenSuse freundlicherweise eine Paketquelle angeboten, auf welche von OwnCloud selbst hingewiesen wird. Dazu muss folgende Zeile entweder in die Datei /etc/apt/sources.list, besser aber noch in eine neu anzulegende Datei /etc/apt/sources.list.d/owncloud.list eingetragen werden:

deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /

Der entsprechende Signatur-Key kann über folgende Befehle heruntergeladen und installiert werden:

wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key 
apt-key add - < Release.key

Nach einem Updaten des Paketspeichers mit

aptitude update

kann man dann owncloud installieren:

aptitude install owncloud

Der Desktop-Sync-Client für das Synchronisieren der Daten kann installiert werden mit:

aptitude install owncloud-client

Darüber hinaus kann OwnCloud einige andere Funktionen übernehmen, von denen ich zwei im Folgenden explizit vorstellen möchte.

CalDAV/CardDAV

Neben der Möglichkeit, Dateien zu synchronisieren, existiert auch eine Schnittstelle für Kontakte, Termine und Aufgaben über CalDAV und CardDAV. Es ist somit möglich, PCs und Smartphones unabhängig von Microsoft, Google und Co. über den eigenen Server zu synchronisieren. Ich habe dies hier beschrieben. Die Kontakte und Kalender lassen sich auch einfach (per Link) mit anderen Teilen. Die Adressen für die Synchronisierung mit Endgeräten sind im persönlichen Bereich von OwnCloud hinterlegt.

mozilla_sync

Der OpenSource-Browser Mozilla Firefox kann über eine Synchronisationsfunktion Verlauf, Lesezeichen, Formulardaten, Passwörter, Tabs etc. verschlüsselt auf einem Mozilla-Server ablegen und zwischen verschiedenen Geräten abgleichen. Auch wenn die Daten verschlüsselt sind, möchte man vielleicht keine Passwörter auf fremden Servern speichern. Abhilfe bietet in diesem Fall wiederum OwnCloud. Seit Version 6 ist die App "mozilla_sync" standardmäßig vorinstalliert. Sie kann den Mozilla-Server komplett ersetzen. Dazu muss man die App in den OwnCloud-App-Einstellungen aktivieren und die unter Persönlichen Einstellungen angezeigte URL in den Sync-Einstellungen von Firefox unter "alternativer Server" eintragen. Es können natürlich mehrere Browser mit dem Account synchronisieren.

 

Monitoring-Tools

Um einen sinnvollen Kompromiss zwischen Überwachungsaufwand und Sicherheit der betriebenen Dienste zu erreichen, helfen die folgenden Tools.

logcheck

logcheck liest Log-Dateien der Serverdienste und verschickt die Ergebnisse (üblicherweise einmal täglich) per Mail. Um nicht mit Nichtigkeiten überfrachtet zu sein, werden (vor allem von Debian) Filter mitinstalliert, welche die banalen Nachrichten ausfiltern. Sehr hilfreich, um die Vorgänge im Blick zu behalten.

aptitude install logcheck

nmap

nmap ist ein Portscanner, welcher den Status der Ports auf einem System auflistet. So können einfach die offenen Ports beziehungsweise die dahinter laufenden Dienste ermittelt werden. Sehr sinnvoll, um mögliche Punkte für potentielle Sicherheitsangriffe festzustellen.

aptitude install nmap

sslscan

Mit diesem Kommandozeilentool kann man die von einem (Web-)Server akzeptierten Verschlüsselungsverfahren abfragen. Sehr hilfreich, um die eigene Konfiguration zu testen. Siehe dazu auch diesen Artikel.

aptitude install sslscan

netcat

netcat (auch nc) ist das Multifunktionstool für alles mit TCP[[ und [[User_Datagram_Protocol für IPv4 und IPv6. Es können mit ihm Verbindungen und Inhalte mitgeschnitten und ausgewertet werden, was vor allem für Debugging sehr interessant ist.

aptitude install netcat

munin/monit/nagios

Diese drei Programme dienen dem Überwachen von Systemfunktionen mit Hilfe einer grafischen Oberfläche. Da sie über den Webserver zur Verfügung gestellt wird, kann der Server trotzdem ohne X betrieben werden. munin und monit sind dabei kleinere Tools, nagios ein ausgewachsener Allekönner. Trotz oder gerade wegen des großen Funktionsumfangs sollte man sich im Klaren sein, dass man sich auch zusätzlich Sicherheitsrisiken durch die Überwachungstools holen kann!

aptitude install munin/monit/nagios3

top/htop/nmon

Diese drei Programme ermöglichen ein Überwachung der aktuellen Leistungsdaten auf der Kommandozeile. top und htop sind dabei hauptsächlich für das Anzeigen der Prozesse zuständig, nmon kann auch die Last von Netzwerk, CPU, Festplatten, etc. anzeigen. Gehört meines Erachtens zu den nützlichsten Tools.

aptitude install top/htop/nmon

cat/tac/less/head/tail/tailf/watch

Diese fünf Programme erlauben das komfortable Anzeigen von Logdateien. Sie gliedern sich durch folgende Eigenschaften:

  • cat/tac: Zeigen ganze Dateien von vorne (cat) oder von hinten (tac) beginnend
  • less: Blättert bildschirmweise von vorne beginnend durch Dateien
  • head: zeigt den Anfang einer Datei
  • tail/tailf: zeigt das Ende einer Datei (tail), auch fortlaufend (tail -f oder tailf)
  • watch: führt einen Befehl nach einer gegebenen Zeit erneut aus und zeigt die Ausgabe
aptitude install cat/tac/less/head/tail/watch

 

Diese Aufstellung kann natürlich nicht abschließend sein. Alleine schon deshalb, da immer neue Wege gefunden werden, Rechner und Server anzugreifen. Es ist deshalb wichtig, sich hinsichtlich neuer Bedrohungen kontinuierlich auf dem aktuellen Stand zu halten. Die folgenden Links helfen dabei, die Dienste möglichst sicher zu konfigurieren, die oben vorgestellten Tools und Programme, dies auch zu testen.

If you can't open it, you don't own it!

 

Weiterführende Links: