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 cheme 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.so
vložíme, viz varianty níže:2FA u SSH i lokálního přihlášení-
Otevřete konfigurační PAM soubor
common-auth
sudo nano /etc/pam.d/common-auth
Do 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 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
+X
a následně klávesamiY
aENTER
soubor uložte a zavřete.
2FA jen pro SSH přihlášení-
Otevřete konfigurační PAM soubor
sshd
sudo nano /etc/pam.d/sshd
Do 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 auth required pam_google_authenticator.so # Disallow non-root logins when /etc/nologin exists. account required pam_nologin.so
V 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.so
je 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
+X
a následně klávesamiY
aENTER
soubor 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-auth
můžeme zakomentovat (Pohlídejte si však, že záznam pro 2FA máte i v souborusudo nano /etc/pam.d/sshd
.Poznámka: 2FA je automaticky aplikováno i pro
sudo
příkazy. Stejně tak pro přihlášení veškerých uživatelů. -
Otevřete konfigurační PAM soubor
-
Otevřete konfigurační soubor
sshd_config
sudo nano /etc/ssh/sshd_config
- Ujistěte se, že
KbdInteractiveAuthentication
je nastaven na možnostyes
- Na konec souboru vložte záznam:
AuthenticationMethods keyboard-interactive:pam
Jestliže máme aktivován i public key, můžeme jeho vyžadování vyžadovat záznamem:
AuthenticationMethods publickey,keyboard-interactive:pam
- Ujistěte se, že
- Klávesovou zkrátkou
CTRL
+X
a následně klávesamiY
aENTER
soubor uložte a zavřete. - Na serveru zavolejte příkaz
google-authenticator
a zvolte možnosty
pro "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 difinován bezpečnostním klíčem (secret key), který je zobrazen pod daným QR kódem. Tento kód si opište.
- Na základě vyzvání přepiště kód zobrazený v Google Authenticátor aplikace 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
/*username*/.google_authenticator
odpově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) service
Ubuntu 24.04
sudo systemctl restart ssh
Ubuntu 22.04sudo systemctl restart sshd sudo systemctl restart ssh
- Nyní je aktivováno 2FA při přihlašování a
sudo
příkazech. - Jestliže je na serveru více běžných uživatelů, 2FA autentizační soubor prostřednictvím
google-authenticator
je 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: