De Raspberry Pi is nu overal en daarom trok hij de aandacht van bedreigingsactoren en cybercriminelen. We laten u zien hoe u uw Pi kunt beveiligen met tweefactorauthenticatie.
De geweldige Raspberry Pi
De Raspberry Pi is een computer met één board. Het werd in 2012 in het VK gelanceerd met de bedoeling om kinderen te laten sleutelen aan code, ze te maken en te leren. De oorspronkelijke vormfactor was een bord ter grootte van een creditcard, aangedreven door een telefoonoplader.
Het biedt HDMI-uitgang, USB-poorten, netwerkconnectiviteit en draait onder Linux. Latere toevoegingen aan de lijn omvatten nog kleinere versies die ontworpen waren om in producten te worden opgenomen of als headless-systemen te draaien. Prijzen variëren van $ 5 voor de minimalistische Pi Zero tot $ 75 voor de Pi 4 B / 8 GB.
Het succes is ongelooflijk; meer dan 30 miljoen van deze kleine computers zijn wereldwijd verkocht. Hobbyisten hebben geweldige en inspirerende dingen met hen gedaan, waaronder een zwevende naar de rand van de ruimte en weer terug op een ballon.
Helaas, als een computerplatform eenmaal voldoende wijdverspreid is, trekt het onvermijdelijk de aandacht van cybercriminelen. Het is vreselijk om te bedenken hoeveel Pi’s het standaard gebruikersaccount en wachtwoord gebruiken. Als uw Pi openbaar is en toegankelijk is via internet via Secure Shell (SSH), moet deze veilig zijn.
Zelfs als u geen waardevolle gegevens of software op uw Pi heeft, moet u deze beschermen omdat uw Pi niet het werkelijke doelwit is – het is gewoon een manier om in uw netwerk te komen. Zodra een bedreigingsacteur voet aan de grond heeft in een netwerk, gaat hij naar de andere apparaten waarin hij echt geïnteresseerd is.
Twee-factorenauthenticatie
Authenticatie – of toegang krijgen tot een systeem – vereist een of meer factoren. Factoren worden als volgt gecategoriseerd:
- Iets wat je weet: Zoals een wachtwoord of -zin.
- Iets wat je hebt: Zoals een mobiele telefoon, fysiek token of dongle.
- Iets wat je bent: Een biometrische meting, zoals een vingerafdruk of een scan van het netvlies.
Multifactor-authenticatie (MFA) vereist een wachtwoord en een of meer items uit de andere categorieën. Voor ons voorbeeld gaan we een wachtwoord en een mobiele telefoon gebruiken. De mobiele telefoon zal een Google-authenticator-app uitvoeren en de Pi zal een Google-authenticatiemodule uitvoeren.
Een gsm-app is aan uw Pi gekoppeld door een QR-code te scannen. Dit geeft wat seed-informatie door aan je mobiele telefoon vanaf de Pi, zodat hun algoritmen voor het genereren van nummers tegelijkertijd dezelfde codes produceren. De codes worden op tijd gebaseerde, eenmalige wachtwoorden (TOTP) genoemd.
Wanneer het een verbindingsverzoek ontvangt, genereert uw Pi een code. U gebruikt de authenticator-app op uw telefoon om de huidige code te zien, waarna uw Pi u om uw wachtwoord en authenticatiecode vraagt. Zowel uw wachtwoord als het TOTP moeten correct zijn voordat u verbinding mag maken.
Configureren van de Pi
Als je meestal SSH op je Pi gebruikt, is het waarschijnlijk een headless-systeem, dus we configureren het via een SSH-verbinding.
Het is het veiligst om twee SSH-verbindingen te maken: een om te configureren en te testen, en een andere om als vangnet te dienen. Op deze manier, als je jezelf buiten je Pi sluit, heb je nog steeds de tweede actieve SSH-verbinding actief. Het wijzigen van SSH-instellingen heeft geen invloed op een actieve verbinding, dus u kunt de tweede gebruiken om eventuele wijzigingen ongedaan te maken en de situatie te verhelpen.
Als het ergste gebeurt en je bent volledig buitengesloten via SSH, kun je je Pi nog steeds verbinden met een monitor, toetsenbord en muis en vervolgens inloggen op een gewone sessie. Dat wil zeggen, u kunt zich nog steeds aanmelden, zolang uw Pi een monitor kan besturen. Als dit echter niet lukt, moet u de SSH-verbinding van het vangnet echt open houden totdat u hebt geverifieerd dat tweefactorauthenticatie werkt.
De ultieme sanctie is natuurlijk om het besturingssysteem opnieuw te flashen naar de micro SD-kaart van de Pi, maar laten we proberen dat te vermijden.
Eerst moeten we onze twee verbindingen met de Pi maken. Beide opdrachten hebben de volgende vorm:
ssh pi@watchdog.local
De naam van deze Pi is “waakhond”, maar u typt in plaats daarvan de naam van u. Als je de standaard gebruikersnaam hebt gewijzigd, gebruik die dan ook; die van ons is “pi.”
Onthoud, voor de veiligheid, typ deze opdracht twee keer in verschillende terminalvensters, zodat je twee verbindingen met je Pi hebt. Minimaliseer vervolgens een van hen, zodat deze niet in de weg zit en niet per ongeluk wordt gesloten.
Nadat u verbinding heeft gemaakt, ziet u het begroetingsbericht. De prompt toont de gebruikersnaam (in dit geval “pi”) en de naam van de Pi (in dit geval “watchdog”).
U moet het bestand “sshd_config” bewerken. We doen dit in de nano-teksteditor:
sudo nano /etc/ssh/sshd_config
Blader door het bestand totdat u de volgende regel ziet:
ChallengeResponseAuthentication no
Vervang het ‘nee’ door ‘ja’.
Druk op Ctrl + O om uw wijzigingen in nano op te slaan en druk vervolgens op Ctrl + X om het bestand te sluiten. Gebruik de volgende opdracht om de SSH-daemon opnieuw te starten:
sudo systemctl restart ssh
U moet de Google-authenticator installeren, dit is een Pluggable Authentication Module (PAM) -bibliotheek. De applicatie (SSH) zal de Linux PAM-interface aanroepen en de interface vindt de geschikte PAM-module om het type authenticatie dat wordt aangevraagd te onderhouden.
Typ het volgende:
sudo apt-get install libpam-google-authenticator
De app installeren
De Google Authenticator-app is beschikbaar voor iPhone en Android, dus installeer gewoon de juiste versie voor uw mobiele telefoon. U kunt ook Authy en andere apps gebruiken die dit type authenticatiecode ondersteunen.
Twee-factorenauthenticatie configureren
Voer in het account dat u gaat gebruiken wanneer u via SSH verbinding maakt met de Pi, de volgende opdracht uit (voeg de sudo
voorvoegsel):
google-authenticator
U wordt gevraagd of u wilt dat de authenticatietokens op tijd zijn gebaseerd; druk op Y en vervolgens op Enter.
Er wordt een Quick Response (QR) -code gegenereerd, maar deze wordt gecodeerd omdat deze breder is dan het terminalvenster met 80 kolommen. Sleep het venster breder om de code te zien.
Je ziet ook enkele beveiligingscodes onder de QR-code. Deze worden naar een bestand met de naam “.google_authenticator” geschreven, maar u wilt er nu misschien een kopie van maken. Als u ooit de mogelijkheid verliest om een ​​TOTP te verkrijgen (bijvoorbeeld als u uw mobiele telefoon kwijtraakt), kunt u deze codes gebruiken om te authenticeren.
U moet vier vragen beantwoorden, de eerste is:
Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)
Druk op Y en vervolgens op Enter.
De volgende vraag is of u meerdere keren gebruik van dezelfde code binnen 30 seconden wilt voorkomen.
Druk op Y en vervolgens op Enter.
De derde vraag is of u het acceptatietraject voor de TOTP-tokens wilt vergroten.
Druk op N als antwoord hierop en druk vervolgens op Enter.
De laatste vraag is: “Wilt u snelheidsbeperking inschakelen?”
Typ Y en druk op Enter.
U keert terug naar de opdrachtprompt. Sleep indien nodig het terminalvenster breder en / of scrol omhoog in het terminalvenster zodat u de volledige QR-code kunt zien.
Open op uw mobiele telefoon de authenticator-app en druk vervolgens op het plusteken (+) rechtsonder in het scherm. Selecteer “Een QR-code scannen” en scan vervolgens de QR-code in het terminalvenster.
Er verschijnt een nieuw item in de authenticator-app met de naam van de hostnaam van de Pi, en een zescijferige TOTP-code wordt eronder weergegeven. Het wordt weergegeven als twee groepen van drie cijfers om het lezen te vergemakkelijken, maar u moet het typen als één getal van zes cijfers.
Een geanimeerde cirkel naast de code geeft aan hoeveel langer de code geldig is: een volledige cirkel betekent 30 seconden, een halve cirkel betekent 15 seconden, enzovoort.
Alles aan elkaar koppelen
We hebben nog een bestand om te bewerken. We moeten SSH vertellen welke PAM-authenticatiemodule we moeten gebruiken:
sudo nano /etc/pam.d/sshd
Typ de volgende regels bovenaan het bestand:
#2FA auth required pam_google_authenticator.so
U kunt ook kiezen wanneer u om het TOTP gevraagd wilt worden:
- Nadat u uw wachtwoord heeft ingevoerd: Typ de vorige regels onder ‘@include common-auth’, zoals weergegeven in de afbeelding hierboven.
- Voordat u om uw wachtwoord wordt gevraagd: Typ de vorige regels boven ‘@include common-auth.’
Let op de onderstrepingstekens (_) die worden gebruikt in “pam_google_authenticator.so”, in plaats van de koppeltekens (-) die we eerder gebruikten met de apt-get
commando om de module te installeren.
Druk op Ctrl + O om de wijzigingen naar het bestand te schrijven en druk vervolgens op Ctrl + X om de editor te sluiten. We moeten SSH nog een laatste keer herstarten, en dan zijn we klaar:
sudo systemctl restart ssh
Sluit deze SSH-verbinding, maar laat de andere SSH-verbinding van het vangnet actief totdat we deze volgende stap hebben geverifieerd.
Zorg ervoor dat de authenticator-app open en gereed is op uw mobiele telefoon en open vervolgens een nieuwe SSH-verbinding met de Pi:
ssh pi@watchdog.local
U moet om uw wachtwoord worden gevraagd en vervolgens om de code. Typ de code van uw mobiele telefoon zonder spaties tussen de cijfers. Net als uw wachtwoord wordt het niet op het scherm weergegeven.
Als alles volgens plan verloopt, zou u verbinding moeten kunnen maken met de Pi; zo niet, gebruik dan uw vangnet SSH-verbinding om de vorige stappen te bekijken.
Beter veiliger dan sorry
Heb je de “r” in “veiliger” hierboven opgemerkt?
Je bent nu inderdaad veiliger dan voorheen toen je verbinding maakte met een Raspberry Pi, maar niets is ooit 100 procent veilig. Er zijn manieren om tweefactorauthenticatie te omzeilen. Deze zijn afhankelijk van social engineering, man-in-the-middle- en man-at-the-endpoint-aanvallen, SIM-swapping en andere geavanceerde technieken die we hier uiteraard niet zullen beschrijven.
Dus waarom zou je je hier druk over maken als het niet perfect is? Nou, om dezelfde reden doe je je voordeur op slot als je weggaat, ook al zijn er mensen die sloten kunnen pakken – de meeste kunnen dat niet.