Dvou-faktorové ověření (2FA) přes Google Authenticator na Ubuntu Server
Postup pro přidání dvoufaktorového ověření (2FA) na server s využitím Google Authenticator. 2FA představuje způsob, jak zabezpečit přístup k serveru (typicky přes SSH a lokální přístup) pomocí kombinace uživatelského hesla + jednorázového hesla (OTP), které generuje aplikace Google Authenticator na mobilním zařízení uživatele. Tento proces přidává další vrstvu bezpečnosti k autentizačnímu mechanismu, protože útočník by potřeboval jak znát heslo, tak mít aktuální OTP, aby se úspěšně přihlásil.

Postup přidání a aktivace 2FA prostřednictvím Google Authenticator na Ubuntu server
- Do mobilního telefonu si nainstalujte aplikaci "Google Authenticator" od vydavatele Google. Aplikace je dostupná pro iOS i Android.
- Na serveru nainstalujte balíček Google authentizátoru
sudo apt install -y libpam-google-authenticator Dle toho, kde všude chceme požadavek 2FA při přihlašování aplikovat, určíme konfigurační soubor PAM (pluggable authentication modules), do kterého záznam
auth required pam_google_authenticator.sovložíme, viz varianty níže:2FA u SSH i lokálního přihlášení- Otevřete konfigurační PAM soubor
common-authsudo nano /etc/pam.d/common-authDo konfiguračního souboru je nutné vložit záznam
auth required pam_google_authenticator.so. Pozice vložení ovlivňuje pořadí, ve kterém je 2FA autorizace požadována.- Jestliže je vložen na začátek, viz vyznačená část níže, 2FA kód je vyžadován před heslem.
... # pam-auth-update to manage selection of other modules. See # pam-auth-update(8) for details. # Enable Google Authenticator <-- vložený záznam auth required pam_google_authenticator.so # here are the per-package modules (the "Primary" block) ... - Jestliže je vložen na konec souboru, 2FA bude vyžadováno až po zadání hesla.
- Jestliže je vložen na začátek, viz vyznačená část níže, 2FA kód je vyžadován před heslem.
- Klávesovou zkrátkou
CTRL+Xa následně klávesamiYaENTERsoubor uložte a zavřete.
2FA jen pro SSH přihlášení- Otevřete konfigurační PAM soubor
sshdsudo nano /etc/pam.d/sshdDo konfiguračního souboru je nutné vložit záznam
auth required pam_google_authenticator.so, viz vyznačená část níže:# PAM configuration for the Secure Shell service # Standard Un*x authentication. @include common-auth # Enable Google Authenticator <-- vložený záznam auth required pam_google_authenticator.so # Disallow non-root logins when /etc/nologin exists. account required pam_nologin.soV souboru si povšimněme i záznamu
@include common-auth- ten se aktualizuje v případě předchozí metody (2FA i u lokálního přihlašování). Tedy, záznamauth required pam_google_authenticator.soje v takovém případě již načítán (= 2FA z lokálního přihlašování je automaticky definováno i u vzdáleného přihlašování). - Klávesovou zkrátkou
CTRL+Xa následně klávesamiYaENTERsoubor uložte a zavřete.
Poznámka: Nechceme-li dále vyžadovat heslo při vzdáleném přihlašování, záznam
@include common-authmůžeme zakomentovat (Pohlídejte si však, že záznam pro 2FA máte i v souborusudo nano /etc/pam.d/sshd.Poznámka: Při variantě s
common-authplatí 2FA pro všechny uživatele i prosudopříkazy. Při variantě jen pro SSH se týká pouze přihlášení přes SSH.- Otevřete konfigurační PAM soubor
- Otevřete konfigurační soubor
sshd_configsudo nano /etc/ssh/sshd_config- Ujistěte se, že
KbdInteractiveAuthenticationje nastaven na možnostyes - Nastavte záznam:
AuthenticationMethods keyboard-interactive:pamJestliže máme aktivován i public key, můžeme jeho vyžadování vyžadovat záznamem:
AuthenticationMethods publickey,keyboard-interactive:pamU sshd platí první nalezená hodnota: pokud už v souboru (nebo v
/etc/ssh/sshd_config.d/) je např.AuthenticationMethods publickeyneboKbdInteractiveAuthentication noz článku SSH klíče, upravte přímo tyto záznamy místo přidávání nových. Záznam vkládejte před případný blokMatch. Výsledek ověříte příkazemsudo sshd -T | grep -Ei '^(kbdinteractiveauthentication|authenticationmethods)'. - Klávesovou zkrátkou
CTRL+Xa následně klávesamiYaENTERsoubor uložte a zavřete.
- Ujistěte se, že
- Na serveru zavolejte příkaz
google-authenticatora zvolte možnostypro "time based tokens". - Otevřete Google Authenticator aplikaci na mobilním telefonu a možností "+ (Přidat) → naskenovat QR kód" si vložte do telefonu propojení se serverem.
- QR kód je definován bezpečnostním klíčem (secret key), který je zobrazen pod daným QR kódem. Tento kód si opište.
- Na výzvu přepište kód zobrazený v aplikaci Google Authenticator do terminálu.
- Zobrazených záchranných 5 osmímístných kódů si spolu s secret key (2 body výše) pečlivě uschovejte pro možnost použití v případě ztráty telefonu.
- na výzvu ohledně aktualizace souboru
~/.google_authenticatorodpověztey - Na výzvu ohledně zákazu opětovného použití kódů odpovězte
y - Na výzvu ohledně časového posunu (time skew) odpovězte
n - Na výzvu ohledně rate-limitingu odpovězte
y - Restartujte ssh(d) serviceUbuntu 24.04 / 26.04
sudo systemctl restart sshUbuntu 22.04sudo systemctl restart sshd sudo systemctl restart ssh - Nyní je aktivováno 2FA při přihlašování (a u varianty
common-authi usudopříkazů). - Jestliže je na serveru více běžných uživatelů, 2FA autentizační soubor prostřednictvím
google-authenticatorje nutné provést pro každého uživatele zvlášť. Každý uživatel má vždy vlastní 2FA kódy.- Přepnutí se na konkrétního uživatele:
$ sudo su - someuser - Spuštění 2FA konfigurace pro uživatele
$ google-authenticator - Návrat na původního uživatele:
$ exit
- Přepnutí se na konkrétního uživatele:
Potřebujete bezpečně nastavit server?
Navrhneme, zabezpečíme a zdokumentujeme sítě i servery.