Den Websurfer absichern mit dem Raspbian (Jessie) Stand: 02.11.2016 Inhalt 1. Einleitung... 1 2. Passwörter ändern... 2 3. Automatische Updates... 2 4. SSH-Port ändern... 3 4.1 Konfigurationsdatei auf der Raspberry... 3 4.2 Den Zugangs-Port bei PuTTY ändern... 3 4.3 Portfreigabe am Router... 4 5. SSH-Port absichern... 4 1. Einleitung Das größte Chaos kann an Angreifer anrichten, wenn er volle Kontrolle über das System hat. Diesen Zugang zu verschießen, sollte man direkt und ohne Umwege nach dem Online bringen des Websurfers erledigen. Hierbei gibt es viele Wege und Programme. In den folgenden Kapiteln gebe ich eine kurze Einführung wie eine Grundsicherung des Websurfers durchgeführt werden kann. Achtung! Sicher ist in unserer digitalen Welt ein nicht zu beendender Prozess, welcher ständig erweitert und angepasst werden muss. Diese Anleitung ist eine Einführung in das Thema und muss an euer System individuell angepasst werden. Rahmenbedingungen: Raspberry Pi 2 SanDisk microsd mit 32GB Raspberry Stand von Kapitel 2.1 Den Websurfer Online bringen Roland Kuenen Seite 1
2. Passwörter ändern Das erste sollten immer die einzelnen Passwörter der Benutzer sein. Ändert die Standard- Passwörter direkt nach dem Einrichten ab. Mit dem Befehl sudo passwd kann das Passwort des root -Benutzers geändert werden und mit passwd wird das Passwort des aktuellen Benutzers, in diesem Fall pi, geändert. 3. Automatische Updates Die besten Zugänge für Angreifer liegen in allgemeinen Sicherheitslücken der Programme und des Systems. Diese Sicherheitslücken schließt man am besten, wenn das System immer auf dem neusten Stand ist. Um diese Updates automatisch und regelmäßig durchzuführen kann man einen cronjob benutzen. Hierzu öffnet man den sudo nano /etc/crontab in der letzten Zeile der Tabelle tragt ihr folgendes zusätzlich ein 15 0 * * 7 root apt-get update -y && apt-get dist-upgrade -y && apt-get autoremove -y && reboot ein. Wichtig ist hier, dass die # am Ende der Tabelle wieder steht und nichtgelöscht oder verschoben wird. Die Erklärung für die Syntax möchte ich hier so einfach wie möglich halten, kann aber auf der angegebenen Webseite 1 gut eingesehen werden. Erklärung der Syntax: 15 Die Minute 15 0 Die Stunde 0 * Jeder Tag * Jeder Monat 7 Der Wochentag ist Sonntag (Null oder Sieben steht für Sonntag) root Der Benutzer der die folgenden Befehle ausführen soll apt-get update Aktualisieren der Abhängigkeiten apt-get upgrade Installiert und Aktualisiert apt-get autoremove Deinstalliert ungenutzte Abhängigkeiten reboot Neustart der Raspberry Pi Die && sind hier dafür, dass einmal die Befehle nacheinander abgearbeitet werden und der folgende Befehl nur dann ausgeführt wird, wenn der vorherige erfolgreich war. So wird z.b. die Raspberry Pi nur neu gestartet, wenn das Update, Upgrade und Autoremove erfolgreich war. 1 https://www.stetic.com/developer/cronjob-linux-tutorial-und-crontab-syntax.html Roland Kuenen Seite 2
4. SSH-Port ändern Der Standard-Port für den SSH-Zugang ist die 22. Diesen zu verändern eliminiert eine mögliche Angriffsstelle. So muss der Angreifer erst einmal den Port finden, auf welchem er einen Angriff durchführen könnte. 4.1 Konfigurationsdatei auf der Raspberry Damit die Raspberry Pi weiß, auf welchem Port sie horchen muss, öffnen wir mit sudo nano /etc/ssh/sshd_config die Konfigurationsdatei. Hier suchen wir die folgenden Zeilen: # What ports, IPs and protocols we listen for Port 22 und ändern den Port auf einen frei verfügbaren ab. Die offenen Ports fangen bei 49152 und gehen bis 65535. Zum Schluss muss der SSH-Dienst neu gestartet werden. 4.2 Den Zugangs-Port bei PuTTY ändern sudo /etc/init.d/ssh restart Wenn man den Port in der Raspberry Pi geändert hat, muss man diesen auch bei allen Verbindungen über PuTTY angeben. Dies kann direkt im ersten Fenster, in welchem auch die Verbindungsdaten stehen, eingetragen und gespeichert werden. Im nachfolgenden Bild ist das Eingabefeld gezeigt. Roland Kuenen Seite 3
4.3 Portfreigabe am Router Um die Raspberry Pi auch aus dem öffentlichen Raum aus über SSH zu erreichen, muss dieser Port auch im Router freigegeben werden. Hierzu loggt euch in euren Router ein und geht zur Einstellung Forwarding oder Portweiterleitung. Hier könnt ihr den vorher festgelegten Port zur Raspberry freigeben. 5. SSH-Port absichern Sollte ein Angreifer allerdings doch den Port herausgefunden haben, könnte er versuchen mit einem Brute-Force-Angriff Zugang zu eurem Server zu bekommen. Um dies zu unterbinden, gibt es zwei Möglichkeiten. Die erste ist den Login nur mit einem Schlüsselpaar zu erlauben. Hierzu könnt ihr in meiner Raspberry Pi Anleitung im Kapitel 1.1 Mit PuTTY und WinSCP an der Pi arbeiten die genaue Vorgehensweise im Unterkapitel 2.7 nachlesen. Die andere Methode benötigt ein zusätzliches Programm mit dem Namen fail2ban welches die Login-Versuche mitschreibt und nach bestimmten Regeln den Nutzer sperrt. Um das Programm zu installieren müsst ihr es mit sudo apt-get install fail2ban installieren. Die originale Konfigurationsdatei könnt ihr mit sudo nano /etc/fail2ban/jail.conf öffnen und einsehen. Diese sollt ihr allerdings nicht verändern. Wenn ihr die Regeln selbst anpassen möchtet, kopiert ihr diese Datei noch einmal ins gleiche Verzeichnis und benennt sie zu jail.local um. Mit dem folgenden Befehl macht ihr dies. sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local mit dem Nano-Editor öffnen wir nun diese Datei und können unsere Eigenen Einstellungen hinzufügen. sudo nano /etc/fail2ban/jail.local Roland Kuenen Seite 4
Den Anfang bis zu backend könnt ihr mit folgendem Inhalt überschreiben bzw. ersetzen. # Fail2Ban Konfigurationsdatei # # [DEFAULT] # Hier die IP-Adressen eintragen, welche nicht geblockt werden sollen. # Die einzelnen Adressen werden mit einer Leertaste voneinander getrennt. ignoreip = 127.0.0.1/8 # Die Zeit in Sekunden wie lange eine IP-Adresse gesperrt bleiben soll bantime = 180000 # Der Zeitraum in der die Login-Versuche gezaehlt werden findtime = 600 # Maximal zulaessige Versuche maxretry = 3 Diese Einstellungen können für das erste Reichen. Weiter unten im Dokument, können weitere Einstellungen für Apache und des Weiteren getätigt werden. Nach dem speichern muss der Dienst mit dem folgenden Befehl neu gestartet werden. sudo /etc/init.d/fail2ban restart Ob die Einstellungen übernommen worden sind und der Dienst gestartet ist, könnt ihr in der Log-Datei feststellen. Hier sollten ganz unten die Einträge zur bantime und die Infos zu den gestarteten Diensten aufgelistet worden sein. Die Log-Datei öffnet ihr mit sudo nano /var/log/fail2ban.log Hier werden dann auch die geblockten User mit den IP-Adressen angezeigt. Roland Kuenen Seite 5