Z duvodu pozadavku na vysokou bezpecnost se stale casteji pouziva dvoufazove overeni. Prikladem jsou napriklad banky se svymi autorizacnimi SMS v Internetovem bankovnictvi.
Princip je jednoduchy: pokud utocnik ziska heslo, je mu k nicemu. Potrebuje totiz jeste jednorazove heslo. V Linuxu jde skvele pouzit Google Authenticator, jako modul pro PAM.
Dvoufazova hesla muzeme generovat dvema zpusoby:
- Nove heslo se generuje z predchoziho,
- heslo se generuje na zaklade casu.
Na generovani z predchozi hesla slouzi S/KEY. Podle meho nazoru neni nejvyhodnejsi, viz clanek v odkazu.
Druhou moznosti je generovani na zaklade casu – OTP. Nove heslo se vygeneruje kazdy X (nejcasteji 30 sekund) a stare prestane platit. Jednoduche na pouziti. Je vsak potreba mit synchronizovany cas mezi zarizenimi, pouzit NTP.
Nize si popiseme instalaci Google Authenticator PAM modulu a nastaveni SSH na Debianu 8.
Nejprve je potreba nainstalovat balicek:
# apt-get install libpam-google-authenticator
Pote pod uzivatelem, ktery se bude pomoci OTP prihlasovat spustime prikaz google-authenticator. Pruvodce nas provede nastavenim. Dulezite je pouzit OTP.
Zaroven se nam vygeneruji zalozni kody. Ty muzeme nosit treba na papirku v penezence. Pokud nebudeme mit mobil (a tedy moznost generovat kody), pouzijeme tyto zalozni. Kazdy z nich jde pouzit pouze jednou.
Nasleduje nastaveni mobilu na generovani kodu. Pro Android si z Google Play stahneme aplikaci Google Authenticator. Aplikace na generovani existuji pro vetsinu OS. Aplikaci sparujeme pomoci QR kodu, nebo prepsanim klice.
Pote muzeme pristoupit k nastaveni Linuxu.
Zeditujeme soubor /etc/pam.d/sshd a na jeho konec pridame:
auth required pam_google_authenticator.so
Dale v konfiguraku SSH serveru /etc/ssh/sshd_config najdeme a upravime nasledujici volby:
PubkeyAuthentication yes ChallengeResponseAuthentication yes UsePAM yes
a restartujeme SSHD:
# service ssh restart
Pote se muzeme prihlasit pomoci OTP.
Casto by se nam hodilo vynechat OTP. Napr. v LAN je to zbytecne. Ja pouzivam nasledujici konfiguraci:
- Pri prihlasovani z IP z LAN a VPN staci samotne heslo,
- pri prihlasovani ze vsech ostatnich IP je potreba heslo + OTP kod,
- pri prihlasovani SSH klicem ze vsech IP neni potreba heslo, ani OTP kod.
Upravime soubor /etc/pam.d/sshd. Smazeme „auth required pam_google_authenticator.so“ a misto nej na konec pridame:
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf auth required pam_google_authenticator.so
A vytvorime soubor /etc/security/access-local.conf :
+ : ALL : 10.123.0.0/16 + : ALL : LOCAL - : ALL : ALL
syntaxe je nasledujici:
- +/- na zacatku povoli/zamitne pristup
- druhe pole je uzivatelske jmeno,
- treti je hostname/IP.
Podrobnejsi popis nalezeneme na zacatku souboru /etc/security/access.conf .
V mem prikladu povolim vsem uzivatelum prihlasovani bez OTP ze site 10.123.0.0/16 a localhostu. Jinak musi pouzit heslo+otp, nebo klic.
Pouzite zdroje:
- Google Authenticator OpenSource
- How to Secure SSH with Google Authenticator’s Two-Factor Authentication
- Two Factor SSH Authentication on external address only