Mini-PCs und Platinencomputer wie der Raspberry Pi haben den Aufwand erheblich gesenkt, zu Hause einen kleinen Linux-Server zu betreiben. Das bedeutet aber nicht, dass es damit einfacher wird, einen Server sicher zu betreiben. Sie müssen einige fundamentale Sicherheitsvorkehrungen treffen. Denn obwohl der heimische Mini-Server nur an einer DSL-Leitung hängt und über eine dynamische Host-Adresse erreichbar ist, werden früher oder später ungebetene Besucher anklopfen. Dahinter stecken selten gezielte Angriffe, sondern in meistens automatisierte Scans, die stur einen Adressbereich abklappern, um nach Sicherheitslücken und Einfallstoren zu suchen.
Router: Nur benötigte Ports öffnen
Die erste Maßnahme betrifft den Router, der per Portweiterleitung den Zugang von außen erlaubt. Der Router dient zugleich als Firewall, die nur den Netzwerkverkehr auf die erlaubten Ports durchlassen soll. Einige Router bieten die Möglichkeit, einen „Exposed Host“ beziehungsweise eine DMZ (Demilitarisierte Zone) einzurichten, um alle Anfragen ungefiltert an die angegebene Server-Adresse im lokalen Netzwerk zu leiten. Diese Lösung scheint bequem, da man sich dann über die einzelnen Ports angebotener Dienste keine Gedanken machen muss. Der Server wäre damit aber völlig exponiert. Leiten Sie nur jene Ports an einen lokalen Rechner weiter, die dieser auch wirklich bedienen soll: Für den Wartungszugang per SSH brauchen Sie nur die Weiterleitung von Port 22, HTTP verlangt Port 80 und HTTPS Port 443.
Heimzugriff ganz ohne Dyn DNS einrichten – so geht’s
Zugangsdaten geheim halten
Wenn Sie unterwegs auf den heimischen Server zugreifen, dann achten Sie akribisch darauf, dass dafür nur verschlüsselte Protokolle zum Einsatz kommen. Denn es besteht immer ein erhöhtes Risiko, dass diese unverschlüsselten Daten in falsche Hände gelangen. Verwenden Sie deshalb immer verschlüsselnde Protokolle: HTTPS statt HTTP (auch mit selbst signierten Zertifikaten) und SSH statt FTP. Denn SSH dient nicht nur zur Anmeldung am Server zur Wartung (unter Windows mit dem SSH-Client Putty ), sondern auch zur sicheren Dateiübertragung. So kann Filezilla per SFTP Dateien von und zum Server übertragen.

Server: Updates zügig einspielen
Ein Linux-System kann sehr sicher sein, wenn es regelmäßig Updates bekommt. Ein System-Update führen Sie auf einem Linux wie Raspbian über das Kommando
sudo apt-get update && sudo apt-get upgrade
aus. Auf dem kleinen Raspberry dauern umfangreiche Updates recht lange, so dass man diese immer wieder gerne aufschiebt. Updates können aber auch unbeaufsichtigt im Hintergrund eingespielt werden. Dazu installiert man mit dem Befehl
sudo apt-get install unattended-upgrades
die automatischen Scripts zur Aktualisierung. Mit dem Texteditor Nano öffnen Sie über den folgenden Befehl:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
die Konfigurationsdatei und entfernen das Kommentarzeichen „//“ vor dieser Zeile:
"o=Raspbian,a=stable";
Nun benötigen Sie noch eine Konfigurationsdatei, die Sie mit
sudo nano /etc/apt/apt.conf.d/10periodic
mit dem Editor Nano erstellen. Tragen Sie dort diese vier Zeilen ein:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradea ble-Packages "1"; APT::Periodic::AutocleanInterval "3"; APT::Periodic::Unattended-Upgrade "1";
Ab jetzt wird der Raspberry Pi jeden Tag um 6:25 Uhr das System unbeaufsichtigt aktualisieren. Testen können Sie dies mit diesem Befehl:
sudo unattended-upgrades --dryrun -d
Eine komplette Distribution-Aktualisierung, die auch geänderte Abhängigkeiten unter Paketen beachtet, müssen Sie hin und wieder manuell mit sudo apt-get dist-upgrade ausführen.
Sicherheitsvorkehrung: SSH-Angriffe blocken
Automatisierte Angriffe versuchen über Wörterbuch-Attacken auf dem SSH-Port eine Verbindung mit dem Server. Bei halbwegs vernünftig gewählten Passwörtern sind diese Angriffe erfolglos. Bei Hunderten von gescheiterten Verbindungsversuchen täglich wird aber das Access-Logfile unübersichtlich. Dagegen ist ein Kraut gewachsen: fail2ban ist ein Hintergrundprozess (Daemon), der die Logdateien auf erfolglose Log-in-Versuche überprüft und die verantwortliche IP-Adresse blockt. Das Paket „fail2ban“ ist in Raspbian sowie unter Ubuntu und Debian mit
sudo apt-get install fail2ban
schnell installiert und muss bei Debian und Ubuntu nicht mal mehr konfiguriert werden: In den Standardeinstellungen wird nach fünf aufeinanderfolgenden fehlgeschlagenen Verbindungsversuchen via SSH die IP-Adresse des Clients für zehn Minuten geblockt. Eine Protokolldatei gibt es unter „/var/log/fail2ban.log“.

©AVM

©Netgear

©Asus

©D-Link

©Trendnet

©TP-Link

HTTPS: Selbst signierte Zertifikate ausstellen

Wenn der heimische Server Webdienste anbietet, die nicht öffentlich sind, sondern eine Anmeldung erfordern, dann ist verschlüsseltes HTTPS Pflicht. Dazu benötigen Sie ein SSL-Zertifikat, das Sie in die Webserver-Konfiguration einbinden. Für den Eigenbedarf reicht ein selbst signiertes Zertifikat aus, das Sie sich selbst ausstellen können. Auf einem Raspberry Pi statten Sie den Webserver Apache (Version 2) mit folgenden Schritten mit einem selbst signierten Zertifikat aus und aktivieren HTTPS:
1. Erstellen Sie das Zertifikat mit
sudo openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/certs/apache.key -out /etc/ssl/certs/apache.crt
und füllen Sie das kurze angezeigte Formular mit beliebigen Angaben aus. 2. Der Webserver Apache liefert schon eine Standardkonfiguration für SSL mit, die Sie in der Datei „/etc/apache2/sites-available/default- ssl“ finden. Öffnen Sie die Datei mit dem Texteditor Nano. Tauschen Sie die Zeile
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
gegen die folgende Zeile
SSLCertificateFile /etc/ssl/certs/apache.key
aus, ferner die Zeile
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
gegen diese:
SSLCertificateFile /etc/ssl/certs/apache.key
3. Die gerade bearbeitete und gespeicherte Datei „default-ssl“ aktivieren Sie als Site mit dem Kommando
sudo a2ensite default-ssl
in der Apache-Konfiguration 4. Schalten Sie das SSL-Modul von Apache mit dem Kommando
sudo a2enmod ssl
ein, und starten Sie anschließend den Webserver mit
sudo service apache2 force-reload
neu. Falls Ihnen ein Konfigurationsfehler unterlaufen ist, wird Sie Apache mit einer Meldung darauf hinweisen. Die Warnung „Could not reliably determine the server‘s fully qualified domain name“ können Sie ignorieren. 5. Mit dem Browser gehen Sie jetzt mit „https:// [Server-Adresse]“ zum Webserver des Raspberry Pi. Das eigene Zertifikat ist nicht durch eine zentrale Zertifizierungsstelle (CA) signiert, und deshalb wird sich der Browser beschweren, dass die Verbindung nicht vertrauenswürdig ist. Die Verbindung wird aber trotzdem verschlüsselt sein. In Firefox müssen Sie eine Ausnahme erst noch festlegen. Dies hat des Vorteil, dass das einmal akzeptierte Zertifikat dem Browser nun bekannt ist und ein Man-inthe- Middle-Angriff durch gefälschte Zertifikate auffallen würde. 6. Falls noch nicht geschehen, leiten Sie den Port 443 über den Router zum Raspberry Pi weiter, um Anfragen über HTTPS von außen anzunehmen.