Rasperry Pi sicher betreiben

vorlage wordpress beitragsb

In wenigen wenigen Minuten ist ein Rasperry Pi installiert. Dann kommen ein noch einige Docker-Container rauf und dann läuft das Ding bis…
Doch schnell wird vergessen, dass auch das System einen gewissen Standard an Sicherheitskonfiguration erfüllen sollte und regelmäßig die Software auf Stand gehalten werden muss.

Das gilt nicht nur für Systeme die in Firmen oder im Internet stehen, sondern auch für den Rasperry Pi zu Hause. Aktuelle Software fügt nicht nur neue Features hinzu, sondern schließt in der Regel Sicherheitslücken die für jede Anwendungen unterschiedlich kritisch sein können. Auch mit den Rechten und verfügbaren Diensten und Schnittstellen sollte man aus IT-Security-Sicht sparsam umgehen. Berechtigungen nach dem „Least Privilege“-Prinzip und alles aus was nicht benötigt wird härtet das System zusätzlich. Für den Ernstfall gehört dann noch ein Backup dazu… Ob ihr die ganzen Punkten umsetzt, ist natürlich euch überlassen!

Zugriffe einschränken und absichern

nicht benötigte Schnittstellen abschalten

Bluetooth beim Rasperry Pi deaktivieren und deinstallieren

sudo systemctl disable bluealsa.service
sudo systemctl disable bluetooth.service
sudo reboot

Die nicht benötigte Software kann man dann auch gleich entfernen.

sudo apt-get purge bluez -y
sudo apt-get autoremove -y

Wifi beim Rasperry Pi deaktivieren

Innerhalb der Datei /boot/config.txt muss unterhalb der Sektion „[all]“ nur die Zeile „dtoverlay=disable-wifi“ eingefügt werden. Für Bluetooth könnte man auch den Weg über die config.txt gehen.

sudo nano /boot/config.txt
------------
....
[all]
dtoverlay=disable-wifi

SSH – Den Admin-Zugriff einschränken

Im SSH Daemon sollte für den „root“-user das Login verboten werden. Die Anmeldung erfolg dann mit einem Nutzer, der keine Adminrechte auf dem Server hat. Nach dem erfolgreichen Login, kann dann zum Root-User umgeschaltet werden.
Ist das getan, kann man auch gleich die Anmeldung über Zertifikate umstellen.

lokale Firewall – Netzwerkzugriff einschränken


Es lässt sich drüber streiten ob auch ein Server eine lokale Firewall braucht oder nicht, gerade wenn man eine Netzwerkfirewall hat.
In kleineren Netzwerken macht es auf jeden Fall Sinn, den Server über eine lokale Firewall zu schützen und nur die benötigten Dienste für den Netzwerkzugriff zu berechtigten. Gerade Windows Server lassen sich sehr einfach über Gruppenrichtlinien konfigurieren, wenn diese in einer Active-Directory laufen. Bei einer Armada an Rasperry Pi’s sieht das schon etwas anders aus…

In größeren Netzwerken wird dann eher zu VLAN’s, Security Zones oder auch Client-Isolation gegriffen. Im SoHo (small Office – Home) Bereich etwas überdimensioniert.

Wahrscheinlich ist es so wie meistens zu hause, keine Firewall auf den Raspi und fertig, was ausreicht wenn der Raspi nicht aus dem Internet oder VPN verfügbar ist.

SSL Zertifikat zu Docker hinzufügen

An dieser Stelle empfehle ich mit einem vorgeschalteten Reverse-Proxy zu arbeiten, anstatt jeden Webserver innerhalb der Container mit SSL-Zertifikaten zu versehen.

Weitere Information:

  • NginX SSL: https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-18-04
  • SubjectAltName: https://www.linode.com/docs/guides/using-openssls-subjectaltname-with-multiple-site-domains/

automatische Updates für den Rasperry Pi und Docker

Natürlich sollte auch die Software stets auf dem neusten Stand gehalten werden. Zumindest Sicherheitsupdates sollten zeitnah oder am besten automatisiert eingespielt werden.

Rasperry Pi – automatische Updates aktivieren

Um automatisch und täglich neue Sicherheitsupdates installieren lassen möchte, dem wird mitdem Debian Paket unattended-upgrades geholfen.

sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Die Anschließende Meldung bestätigt ihr mit JA / Yes. Aber vorsicht, nun werden alle Updates von STABLE automatisch installiert. Wer nur Sicherheitsupdates automatisch installieren möchte, sollte alle Zeilen außer „origin=Debian,codename=${distro_codename},label=Debian-Security“; in der Datei „/etc/apt/apt.conf.d/50unattended-upgrades“ auskommentieren oder rauslöschen.

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

//"origin=Debian,codename=${distro_codename},label=Debian";
 "origin=Debian,codename=${distro_codename},label=Debian-Security";
"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";

Wer weiter in die Tiefen der Funktion einsteigen möchte: https://wiki.debian.org/UnattendedUpgrades

Docker – automatisch aktualisieren mit Watchtower

Beim Aktualisieren der Container hilft euch Watchtower. Für Watchtower möchte ich zwei Docker-Compose Dateien zur Verfügung. Stelle in der der Watchtower euch per E-Mail informiert und eine in welcher automatisch Updates eingespielt werden. Der entscheidene Parameter ist

  • WATCHTOWER_MONITOR_ONLY: „false“ # Container autom. updaten
  • WATCHTOWER_MONITOR_ONLY: „true“ # nur Monitoring

Ist WATCHTOWER_CLEANUP mit true konfiguriert, werden alte Images automatisch gelöscht.

Docker-Compose File Watchtower E-Mail-Benachrichtigung

version: "3"
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: always
    environment:
      WATCHTOWER_SCHEDULE: "0 0 1 * * *"
      TZ: "Europe/Berlin"
      WATCHTOWER_CLEANUP: "false"
      WATCHTOWER_NOTIFICATIONS_LEVEL: "info"
      WATCHTOWER_MONITOR_ONLY: "true"
      WATCHTOWER_POLL_INTERVAL: 86400
      WATCHTOWER_CLEANUP: "false"
      WATCHTOWER_INCLUDE_STOPPED: "true"
      WATCHTOWER_NO_STARTUP_MESSAGE: "false"
      WATCHTOWER_ROLLING_RESTART: "true"
      WATCHTOWER_MONITOR_ONLY: 'true'
      WATCHTOWER_NOTIFICATIONS: email
      WATCHTOWER_NOTIFICATION_EMAIL_FROM: info@mymail.de
      WATCHTOWER_NOTIFICATION_EMAIL_TO: recipient
      WATCHTOWER_NOTIFICATION_EMAIL_SERVER: smtp.mymail.de
      WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER: info@mymail.de
      WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD: password
      WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT: 587
      #      WATCHTOWER_NOTIFICATION_EMAIL_DELAY: 2
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/docker/watchtower/config.json:/config.json

Docker-Compose File Watchtower – automatische Updates der Container aktivieren

version: "3"
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: always
    environment:
      WATCHTOWER_SCHEDULE: "0 0 1 * * *"
      TZ: "Europe/Berlin"
      WATCHTOWER_CLEANUP: "true"
      WATCHTOWER_NOTIFICATIONS_LEVEL: "info"
      WATCHTOWER_MONITOR_ONLY: "false"
      WATCHTOWER_POLL_INTERVAL: 86400
      WATCHTOWER_CLEANUP: "false"
      WATCHTOWER_INCLUDE_STOPPED: "true"
      WATCHTOWER_NO_STARTUP_MESSAGE: "false"
      WATCHTOWER_ROLLING_RESTART: "true"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/docker/watchtower/config.json:/config.json

weitere Infos zu Watchtower: https://containrrr.dev/watchtower/notifications/

Virenscanner

Auch wenn es nur ein Rasperry Pi ist, so sollte auch der vor dem Befall von Schadsoftware geschützt werden. Dazu im einfachsten Fall einfach ClamAV installieren. In der Regel aktualisiert sich der ClamAV durch Freshclam selber.

ClamAV mit ClamAV-Freshclam und dem Daemon installieren:

sudo apt-get install clamav clamav-freshclam clamav-daemon

Manuellen Virenscan anstoßen

sudo clamscan /home/pi/

Aber Achtung! Nachdem der Clamscan Daemon auf dem Pi war, schon einige Minuten später die CPU Load in die Höhe. Daraufhin habe ich den Daemon wieder deinstalliert und einen manuellen Scan eingerichtet.

weitere Informationen und Parameter zur ClamAV, Freshclam und Co.

Der Link geht zu: https://wiki.ubuntuusers.de/ClamAV/

Backup

Bei Thema Datensicherung bin ich noch am überlegen wie ich das angehe. „RaspiBackup“ ist schon ein heißer Kandidat. Wahrscheinlich werde ich zwei Varianten machen. Eine die wöchentlich Paperless sichert und dann 1-2 im Jahr eine komplette Sicherung via „RaspiBackup“ oder „Duplicati“. Mal schauen. Ansonsten bleibt noch ein rustikales, Fullbackup der SD-Card mit Win32Imager übrig.

weitere Informationen zum Backup des Rasperry Pi: https://bangertech.de/raspibackup-einfaches-backup-fuer-den-raspberry-pi/

weiteres

Strom sparen (für Raspi 4 & 5)

Auch wenn ihr den Raspi via shutdown now herunterfahrt, ist er noch nicht komplett aus. Das hat was mit der Kompatibilität für die HAT’s oder Wake-On-Lan zu tun. Wenn nichts von beiden verwendet wird, öffnet ihr mit rpi-eeprom-config die Config und ändert den Wert „POWER_OFF_ON_HALT=0“ auf „POWER_OFF_ON_HALT=1“. Beim Verlassen des Editors (Nano: STRG+X) die Änderungen natürlich speichern!

sudo -E rpi-eeprom-config --edit

weitere Beiträge zu Rasperry Pi & Co.