Postup přidání a aktivace Google Authenticator 2FA metody na Ubuntu serveru
- Do mobilního telefonu si nainstalujte aplikaci "Google Authenticator" od vydavatele Google.
- Na serveru nainstalujeme příkazem
sudo apt install -y libpam-google-authenticator
balíček Google authentizátoru Jestliže chceme 2FA u lokálního přihlašování, záznam
auth required pam_google_authenticator.so
vložíme dosudo nano /etc/pam.d/common-auth
. Přidaná část je vyznačena tučně. Jestliže jej vložíme na začátek, viz vyznačená část níže, 2FA kód bude vyžadován před heslem. Jestliže jej vložíme na konec souboru, 2FA bude vyžadováno až po zadání hesla.... # 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 2FA chceme jen u vzdáleného přihlašování, záznam
auth required pam_google_authenticator.so
vložíme do konfiguračního PAM (pluggable authentication modules) souborusudo nano /etc/pam.d/sshd
. V něm si povšimněme záznamu@include common-auth
, který jsme možná aktualizovali v bodě výše - pokud ano, záznamauth required pam_google_authenticator.so
je načítán již s tímto souborem - tedy v případě definovaného 2FA u lokálního přihlašování je 2FA automaticky definováno i u vzdáleného přihlašování. Pokud jsme do onoho souboru tento záznam nevkládali (nechceme 2FA u lokálního přihlašování), můžeme jej vložit přímo do tohoto souborusudo nano /etc/pam.d/sshd
, který poté bude vypadat následovně:# 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
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
.Klávesovou zkrátkou ctrl+x soubor uložíme a opustíme
-
Příkazem
sudo nano /etc/ssh/sshd_config
otevřeme konfigurační SSHD soubor a ujistíme se, žeKbdInteractiveAuthentication
je nastaven na možnostyes
Dále, na konec onoho souboru vložíme záznam
AuthenticationMethods keyboard-interactive:pam
. Jestliže máme aktivován i public key, můžeme jeho vyžadování vyžadovat záznamemAuthenticationMethods publickey,keyboard-interactive:pam
.Klávesovou zkratkou ctrl+x soubor uložíme a ukončíme.
-
Na serveru zavoláme příkaz
google-authenticator
a zvolíme možnosty
pro "time based tokens". - Otevřeme Google Authenticator aplikaci na mobilním telefonu a možností "+ (Přidat) → naskenovat QR kód" si vložíme 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 opíšeme.
- Na základě vyzvání vložíme kód zobrazený v Google Authenticátor aplikace na server.
- Zobrazených záchranných 5 osmímístných kódů si spolu s secret key (2 body výše) pečlivě uschováme 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
- Příkazem
sudo systemctl restart sshd
se provede restart sshd. - Příkazem
sudo systemctl restart ssh
se provede restart SSH. - Nyní je aktivováno 2FA při přihlašování a sudo příkazech.