SSH dvoufazove overeni vcetne vynechani z LAN

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. Smazemeauth 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:

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *