Beveiliging van de Raspberry Pi

De beveiliging van de Raspberry Pi is belangrijk. Gaten in de beveiliging kan ervoor zorgen dat hackers de Raspberry Pi, zonder dat je het weet, overnemen en er alles mee kunnen doen.

Het gewenste beveiligingsniveau is afhankelijk van wat je met de Raspberry Pi wilt gaan doen. Indien je het apparaat in je thuisnetwerk, achter een router met firewall, wilt gebruiken dan is de standaard beveiliging meestal al voldoende.

Echter, indien jouw Raspberry Pi direct met het internet verbonden is, bijvoorbeeld met een SSH-verbinding, dan moet je zeker wat beveiligingsmaatregelen nemen.

 

Wijzig het standaard wachtwoord

De standaard gebruikersnaam en wachtwoord wordt gebruikt voor iedere Raspberry Pi waar Raspbian op draait. Indien iemand toegang kan krijgen tot jouw Raspberry Pi en de gebruikersnaam en wachtwoord zijn niet gewijzigd dan heeft die persoon root acces tot jouw Raspberry Pi.

Met onderstaand commando gaan we het wachtwoord wijzigen. Geef in de terminal in:

sudo raspi-config

Selecteer optie 1 en volg de instructies om het wachtwoord te wijzigen.

 

Wijzig de gebruikersnaam

Door het wijzigen van de gebruikersnaam maak je de Raspberry Pi een klein stukje veiliger. De gebruikersnaam van alle Raspberry’s is standaard pi, wijzig dit daarom zo snel mogelijk.

Om een nieuwe gebruiker toe te voegen met dezelfde rechten als de pi gebruikers gebruiken we het volgende comanndo:

sudo useradd -m fred -G sudo

Hiermee is een nieuwe gebruiker met de naamfred aangemaakt, een home folder gecreëerd en de gebruiker is toegevoegd aan de  sudo groep. Je moet vervolgens een wachtwoord instellen voor de nieuwe gebruiker:

sudo passwd fred

Log uit en log in met de nieuwe accountgegevens. Controleer of alle rechten in orde zijn (bv. sudo opdrachten) met commando:

sudo visudo

Het visudo commando kan alleen uitgevoerd worden door een gebruiker met sudo rechten. Als het succesvol uitgevoerd wordt dan kun je er zeker van zijn dat het nieuwe account juist is toegevoegd aan de sudo groep.

Indien je zeker weet dat het nieuwe account goed werkt dan kun je de pi gebruiker verwijderen. Let er wel op dat de huidige Raspbian distributie soms de gebruiker pi nodig heeft. Indien je niet zeker bent verwijder de gebruiker pi dan niet.

Gebruik onderstaand commando om de pi gebruiker te verwijderen:

sudo deluser pi

Dit commando zorgt ervoor dat de pi gebruiker wordt verwijderd, maar dat de home/pi folder blijft bestaand. Met onderstaand commando kun je de home folder van de gebruiker pi direct verwijderen. Let er wel op dat alle data in deze folder permanent verwijderd wordt. Zorg er dus voor dat je eventueel een back-up gemaakt hebt.

sudo deluser -remove-home pi

Sudo vereist een wachtwoord

Indien je sudo voor een commando zet wordt dit commando uitgevoerd als superuser. Standaard heb je hier geen wachtwoord voor nodig. Opzich is dit geen probleem. Echter, indien jouw Raspberry Pi met het internet verbonden is en iemand heeft toegang gekregen tot de Raspberry (bijvoorbeeld via een webpage exploit) dan kan de hacker dingen wijzigen waar een superuser login eigenlijk voor nodig is, tenzij je een wachtwoord op sudo hebt gezet.

Om er een wachtwoord op te zetten geef je onderstaand commando in:

sudo nano /etc/sudoers.d/010_pi-nopasswd

en wijzig de pi regel (of welke gebruikersnaam superuser rechten heeft ) naar

pi ALL=(ALL) PASSWD: ALL

Sla tot slot het bestand op.

 

Installeer de laatste securiy fixes

Zorg er altijd voor dat je Raspbian versie up-to-date is, aangezien de meeste recente distributie de laatste security fixes bevatten.

Updaten van alle geïnstalleerde packages:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Tijdelijke bestanden opruimen:

sudo apt-get autoremove
sudo apt-get autoclean

Indien je gebruik maakt van SSH om verbinding te maken met jouw Raspberry Pi dan kan het zinvol zijn om een cron job toe te voegen om de SSH-server periodiek te updaten. Onderstaand commando, wat je kunt instellen als een dagelijkse cron job, zorgt ervoor dat je altijd de laatste SSH beveiligings fixes hebt, onafhankelijk van je normale update-proces.

sudo apt-get install openssh-server

Verbeteren van gebruikersnaam/wachtwoord beveiliging

Het belangrijkste is dat je een erg sterk wachtwoord gebruikt, zeker indien de Raspberry Pi aan het internet verbonden. Gebruik hoofd- en kleine letters, cijfers én leestekens.

Je kunt ook bepaalde gebruikersnaam toestaan of blokkeren in de sshd configuratie:

sudo nano /etc/ssh/sshd_config

Voeg onderstaande regel toe aan het bestand (uiteraard alleen de namen gebruikers die je toestemming wilt geven om in te kunnen loggen).

AllowUsers edward andrew charles anne

Je kunt ook DenyUsers gebruiken, zodat bepaalde namen niet kunnen inloggen:

DenyUsers harry william

Nadat je de wijzigingen hebt doorgevoerd moet je de sshd service herstarten met commandosudo systemctl restart ssh of de Raspberry Pi simpelweg rebooten.

 

Installeer een firewall

Er zijn veel firewall mogelijkheden beschikbaar voor Linux. De meest gebruikte oplossing is om gebruik te maken van iptables. Standaard is iptables geïnstalleerd bij Raspbian, maar niet geconfigureerd. De configuratie kan een ingewikkelde taak zijn. Een gemakkelijkere alternatief is gebruik maken van ufw,  wat staat voor ‘Uncomplicated Fire Wall’. Dit is de standaard firewall in Ubuntu, maar kan ook eenvoudig geïnstalleerd worden op jouw Raspberry Pi:

sudo apt-get install ufw

ufw is een tamelijk eenvoudige opdrachtregel. In dit artikel leggen we een paar basis opdrachtregels uit. Let erop dat ufw uitgevoerd moet worden met superuser rechten, alle commando’s worden dus voorafgegaan met sudo. Je kunt alle commando’s ook uitvoeren met de optie --dry-run, hierdoor worden alle commando’s uitgevoerd, zonder dat er wijzigen doorgevoerd worden.

Om de firewall in te schakelen (ook na een reboot) geef je onderstaand commando in:

sudo ufw enable

Om de firewall uit te schakelen (ook na een reboot) geef je onderstaand commando in:

sudo ufw disable

Een bepaalde poort openzetten:

sudo ufw allow 22

Een bepaald poort blokkeren:

sudo ufw deny 22

Je kunt ook een bepaalde sevice op een bepaalde poort blokkeren of toestaan:

sudo ufw deny 22/tcp

Je kunt een bepaalde service toestaan, zelfs als je niet weet welke poort het gebruikt. Dit voorbeeld staat de ssh service toe via de firewall:

sudo ufw allow ssh

Het statusoverzicht van alle settings van de firewall:

sudo ufw status

De regels kunnen redelijk gecompliceerd zijn, bijvoorbeeld door een specifiek IP adres te blokkeren, specificeren in welke richting verkeer toegestaan is of het aantal pogingen om verbinding te maken te limiteren (bv. om een Denial of Service (DoS) aanval te voorkomen. Je kunt ook aangeven of de regels gelden voor de LAN-verbinding (eth0) of voor de Wi-Fi verbinding (wlan0). Voor de volledige details kun je kijken op de ufw man pagina (man ufw), maar de meeste voorkomende commando’s vind je hieronder.

Limiteer de log in pogingen op de SSH poort met tcp: dit zorgt ervoor dat een IP adres dat zes of meer pogingen binnen 30 seconden heeft gedaan geen verbinding meer kan maken:

sudo ufw limit ssh/tcp

Weiger verbinding met poort 30 vanaf IP adres 192.168.2.1

sudo ufw deny from 192.168.2.1 port 30

 

Eén gedachte over “Beveiliging van de Raspberry Pi

  • 31 december 2018 om 10:36
    Permalink

    Dank voor dit goed overzicht om een Raspberry beter te beveiligen, zoals verwacht kreeg ik problemen met fail2ban vanwege IPv6 probleem (ERROR: problem running ip6tables). Maar ik heb nog een ander vreemd probleem, eerst mijn UFW status:

    Status: active
    Logging: on (low)
    Default: deny (incoming), allow (outgoing), allow (routed)
    New profiles: skip

    To Action From
    — —— —-
    vpnpoort/udp ALLOW IN Anywhere
    Anywhere ALLOW IN 192.x.y.0/24

    Met deze instelling kan ik probleemloos via VPN (na poort forwarding op mijn router) de Raspberry via SSH benaderen. Maar mijn browser via VPN gebruiken lukt niet (inclusief het benaderen van mijn Domestica op een ander Pi) . Ik heb toevallig wel een oplossing gevonden maar deze begrijp ik niet; bovenstaand probleem is na een reboot van de Pi maar na de twee commando’s: “sudo ufw disable/sudo ufw enable” werkt het (browser/domestica) wel. Omdat ik dit verschil niet direct door had, was ik behoorlijk “dazed and confuzed” wanneer het wel dan weer niet werkte. Enig idee?

    Pi 3B+ / OpenVPN private IP: 10.8.0.2

    Beantwoorden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *