Raspberry Pi si získalo obrovskou popularitu, což bohužel neuniklo ani pozornosti kybernetických hrozeb a zločinců. V tomto článku si ukážeme, jak zvýšit bezpečnost vašeho Pi pomocí dvoufaktorového ověřování.
Fenomén Raspberry Pi
Raspberry Pi je malý, jednodeskový počítač, který byl poprvé uveden na trh ve Spojeném království v roce 2012. Jeho primárním cílem bylo podpořit děti v experimentování s programováním, vytváření softwaru a celkově se učit IT dovednostem. Původní verze měla velikost kreditní karty a napájela se pomocí běžné nabíječky telefonu.
Zařízení nabízí výstup HDMI, USB porty, síťové připojení a běží na operačním systému Linux. Postupem času se objevily i menší verze, určené pro zabudování do různých produktů nebo pro provoz jako bezhlavé systémy. Ceny se pohybují od několika dolarů za minimalistický model Pi Zero až po desítky dolarů za výkonnější Pi 4 B/8 GB.
Úspěch tohoto malého počítače je ohromující, celosvětově se prodalo přes 30 milionů kusů. Nadšenci s ním dokázali neuvěřitelné věci, včetně vyslání Pi do stratosféry na balónu.
Jakmile se však jakákoli počítačová platforma rozšíří, zákonitě přitáhne i pozornost kyberzločinců. Zarážející je, kolik uživatelů stále používá výchozí uživatelská jména a hesla. Pokud je váš Raspberry Pi přístupný z internetu přes Secure Shell (SSH), je nutné ho zabezpečit.
I když na svém Pi nemáte žádná cenná data, je důležité ho chránit, protože se může stát vstupní branou do vaší sítě. Jakmile útočník získá přístup do sítě, může se přesunout na další zařízení, která ho zajímají více.
Co je dvoufaktorová autentizace?
Autentizace, tedy proces získání přístupu do systému, vyžaduje jeden nebo více faktorů. Tyto faktory se dělí do následujících kategorií:
Něco, co znáte: Například heslo nebo heslová fráze.
Něco, co máte: Například mobilní telefon, fyzický token nebo hardwarový klíč.
Něco, čím jste: Biometrický údaj, jako otisk prstu nebo sken duhovky.
Vícefaktorové ověřování (MFA) vyžaduje heslo a alespoň jednu další položku z jiné kategorie. Pro náš příklad použijeme heslo a mobilní telefon. Na mobilním telefonu bude spuštěna aplikace Google Authenticator a na Pi bude nainstalován ověřovací modul Google.
Aplikace v mobilu se spáruje s vaším Pi naskenováním QR kódu. Tím se do mobilního telefonu přenesou informace z Pi, které zajistí, že jejich algoritmy pro generování čísel budou vytvářet shodné kódy ve stejnou dobu. Tyto kódy se nazývají časově omezená jednorázová hesla (TOTP).
Když Pi obdrží požadavek na připojení, vygeneruje kód. Vy pomocí ověřovací aplikace v mobilu zobrazíte aktuální kód, a Pi vás poté vyzve k zadání hesla a tohoto ověřovacího kódu. Správné musí být jak heslo, tak TOTP, abyste se mohli připojit.
Konfigurace Raspberry Pi
Pokud běžně používáte SSH na svém Pi, pravděpodobně se jedná o bezhlavý systém. Proto ho budeme konfigurovat přes SSH připojení.
Nejbezpečnější je vytvořit si dvě SSH připojení: jedno pro konfiguraci a testování a druhé jako „záchrannou brzdu“. Pokud se totiž z Pi omylem odpojíte, budete mít stále k dispozici druhé připojení. Změna nastavení SSH neovlivní aktuální připojení, takže pomocí druhého můžete případné změny zrušit a napravit.
Pokud byste se z SSH úplně odpojili, stále máte možnost připojit k Pi monitor, klávesnici a myš a přihlásit se normálně. To za předpokladu, že Pi monitor podporuje. Pokud to ale není možné, je opravdu důležité mít „záchranné“ SSH připojení otevřené, dokud si neověříte, že dvoufaktorové ověřování funguje správně.
Krajním řešením je samozřejmě přeformátování operačního systému na micro SD kartě Pi, ale tomu se chceme vyhnout.
Nejprve musíme vytvořit dvě připojení k Pi. Oba příkazy mají následující formát:
ssh [email protected]
Jméno Pi je v tomto případě „watchdog“, ale vy samozřejmě zadáte jméno vašeho zařízení. Pokud jste změnili výchozí uživatelské jméno, použijte to vaše; v našem případě je to „pi“.
Z bezpečnostních důvodů zadejte tento příkaz dvakrát v různých oknech terminálu, abyste měli k Pi dvě připojení. Jedno pak minimalizujte, aby nepřekáželo a nedošlo k jeho nechtěnému zavření.
Po připojení se zobrazí uvítací zpráva. V příkazové řádce se zobrazí uživatelské jméno (v tomto případě „pi“) a název Pi (v tomto případě „watchdog“).
Nyní je třeba upravit soubor „sshd_config“. Uděláme to v textovém editoru nano:
sudo nano /etc/ssh/sshd_config
Projděte si soubor, dokud nenarazíte na následující řádek:
ChallengeResponseAuthentication no
Nahraďte „no“ za „yes“.
Stiskněte Ctrl+O pro uložení změn v nano a Ctrl+X pro zavření souboru. Poté restartujte démona SSH následujícím příkazem:
sudo systemctl restart ssh
Dále je potřeba nainstalovat Google authenticator, což je Zásuvný ověřovací modul (PAM). Aplikace (SSH) volá rozhraní PAM systému Linux a to najde vhodný PAM modul, který obslouží požadovaný typ ověřování.
Zadejte následující příkaz:
sudo apt-get install libpam-google-authenticator
Instalace aplikace Google Authenticator
Aplikace Google Authenticator je dostupná pro iPhone a Android, stačí tedy nainstalovat verzi pro váš mobilní telefon. Můžete také použít Authy nebo jiné aplikace, které podporují tento typ ověřovacích kódů.
Nastavení dvoufaktorového ověřování
V uživatelském účtu, který používáte pro připojování k Pi přes SSH, spusťte následující příkaz (bez předpony sudo):
google-authenticator
Budete dotázáni, zda chcete, aby ověřovací tokeny byly založeny na čase; stiskněte Y a potvrďte Enter.
Vygeneruje se QR kód, který může být částečně zakrytý, protože je širší než standardní terminálové okno s 80 sloupci. Pokud ho nevidíte celý, roztáhněte okno terminálu.
Pod QR kódem uvidíte také několik nouzových bezpečnostních kódů. Ty se zapisují do souboru s názvem „.google_authenticator“, ale možná si je budete chtít zkopírovat jinam. Pokud byste ztratili přístup k TOTP (například při ztrátě telefonu), tyto kódy vám umožní se ověřit.
Následovat budou čtyři otázky, první z nich:
Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)
Stiskněte Y a potvrďte Enter.
Další otázka se ptá, zda chcete zabránit opakovanému použití stejného kódu během 30 sekund.
Stiskněte Y a potvrďte Enter.
Třetí otázka se ptá, zda chcete rozšířit časové okno pro přijímání TOTP tokenů.
Odpovězte N a potvrďte Enter.
Poslední otázka zní: „Chcete povolit omezení rychlosti?“
Zadejte Y a potvrďte Enter.
Opět se vrátíte do příkazové řádky. Pokud je to potřeba, roztáhněte okno terminálu a posuňte se v něm nahoru, abyste viděli celý QR kód.
Na mobilním telefonu otevřete aplikaci pro ověřování a klepněte na znaménko plus (+) v pravém dolním rohu obrazovky. Vyberte možnost „Naskenovat QR kód“ a naskenujte QR kód z terminálového okna.
V aplikaci se objeví nová položka s názvem podle názvu vašeho Pi a pod ní bude uveden šestimístný TOTP kód. Pro lepší čitelnost je zobrazený jako dvě skupiny po třech číslicích, ale musíte ho zadat jako jedno šestimístné číslo.
Animovaný kruh vedle kódu ukazuje, jak dlouho bude kód platný: plný kruh znamená 30 sekund, půlkruh 15 sekund atd.
Složení všeho dohromady
Zbývá nám upravit ještě jeden soubor. Musíme SSH sdělit, který ověřovací modul PAM má použít:
sudo nano /etc/pam.d/sshd
Do horní části souboru zadejte následující řádky:
#2FA auth required pam_google_authenticator.so
Můžete také zvolit, kdy budete požádáni o TOTP:
Po zadání hesla: Předchozí řádky napište pod řádek „@include common-auth“, jak je znázorněno na obrázku výše.
Před zadáním hesla: Předchozí řádky napište nad řádek „@include common-auth“.
Všimněte si podtržítek (_) použitých v „pam_google_authenticator.so“, namísto pomlček (-), které jsme použili v příkazu apt-get pro instalaci modulu.
Stiskněte Ctrl+O pro zapsání změn do souboru a poté Ctrl+X pro zavření editoru. Potřebujeme ještě jednou restartovat SSH a poté jsme hotovi:
sudo systemctl restart ssh
Zavřete toto SSH připojení, ale ponechte otevřené to „záchranné“ SSH připojení, dokud neověříme další krok.
Ujistěte se, že máte otevřenou aplikaci pro ověřování v mobilu, a poté otevřete nové SSH připojení k Pi:
ssh [email protected]
Měli byste být vyzváni k zadání hesla a následně kódu. Zadejte kód z mobilního telefonu bez mezer mezi číslicemi. Stejně jako heslo se na obrazovce nezobrazí.
Pokud vše proběhlo v pořádku, měli byste být úspěšně připojeni k Pi. Pokud ne, použijte „záchranné“ SSH připojení a projděte si předchozí kroky ještě jednou.
Jistota je nade vše
Použili jsme výraz „jistota“ namísto původního „bezpečí“.
Díky dvoufaktorovému ověřování je nyní vaše připojení k Raspberry Pi rozhodně bezpečnější, ale nikdy není nic stoprocentní. Existují způsoby, jak dvoufaktorové ověřování obejít. Tyto metody se spoléhají na sociální inženýrství, útoky typu man-in-the-middle a man-at-the-endpoint, výměnu SIM karty a další pokročilé techniky, které zde samozřejmě rozebírat nebudeme.
Proč se tím tedy zabývat, když to není dokonalé? No, ze stejného důvodu, proč zamykáte dveře, když odcházíte, i když existují lidé, kteří umí zámky otevírat – ale většina to neumí.