-
Dwustopniona autentykacja przy logowaniu po ssh
Bezpieczeństwo systemów informatycznych jest tematem, który „wałkuje” się nieustannie. Czy daje to efekty … różnie. Nie wszyscy rozumieją, żeby nie zapisywać hasła np. do poczty pod ikoną programu pocztowego lub na karteczce nalepionej na monitorze. Zostawmy tą kwestię i skupmy się na dodatkowej autentykacji użytkowników łączących się np. po ssh.
Niezbędne będzie repozytorium EPEL. Przystępujemy do instalacji i wydajemy poniższe polecenie:
yum install google-authenticator
Następnie uruchamiamy zainstalowane narzędzie z użytkownika któremu chcemy włączyć dwustopniową autentykację. Efekt powinien być zbliżony do poniższego:
[root@ssh ~]# google-authenticator
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@ssh%3Fsecret%3DND4CGCVFJBTXOWLQ
Your new secret key is: ND4CGCVFJBTXOWLQ
Your verification code is 649868
Your emergency scratch codes are:
34713621
35208507
15091687
65507993
99045025Do you want me to update your "~/.google_authenticator" file (y/n) <-odpowiadamy twierdząco
Pamiętajmy, iż jeżeli nie wykonamy powyższych działań przy innych użytkownikach, logujących po ssh, nie uzyskają oni dostępu do serwera. Zaleca się zapisanie powyższych pięciu kodów awaryjnych. Przydadzą się, jeśli nie będziemy mieli dostępu do naszej aplikacji generującej tokeny jednorazowe.
Skorzystanie z powyższego linka skutkować powinno wyświetleniem w oknie przeglądarki obrazkowego kodu (qrcode), który powinniśmy zeskanować przy pomocy naszego telefonu komórkowego i aplikacji „Google Authenticator”. Następnie przystępujemy do konfiguracji serwera. W pierwszej kolejności edytujemy plik „/etc/ssh/sshd_config”. Ustawiamy opcję „ChallengeResponseAuthentication” na „yes”:
ChallengeResponseAuthentication yes
Teraz czas na konfigurację PAM-a. Edytujemy plik „/etc/pam.d/sshd”. Dodajemy na samej górze wspomnianego pliku linie „auth required pam_google_authenticator.so”. Przykładowa zawartość pliku:
auth required pam_google_authenticator.so
auth required pam_sepermit.so
auth include password-auth
account required pam_nologin.so
account include password-auth
password include password-auth
session required pam_selinux.so close
session required pam_loginuid.so
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
Restartujemy daemona ssh:service sshd restart
Próbujemy się zalogować.
ssh root@ip_naszego_serwera
przemek@xeno ~ $ ssh root@adres_ip
Verification code: <- podajemy kod z aplikacji generującej tokeny
Password: <- a tu nasze hasło użytkownika
Last login: Sat Nov 8 20:06:12 2014 from
[root@ssh ~]#
I to tyle 🙂 Opisanego narzędzia można również np. do dodatkowego zabezpieczenia logowania przez powłokę graficzną. Powodzenia
Jak zawsze na temat. Świetnie piszesz.
Nie ma słowa „autentykacja” 🙂 Jest słowo „uwierzytelnianie”
Autentykacja (ang. authentication) jest to weryfikacja czy user jest tym za którego się podaje. Czyli „Kim jesteś?” i „Jak sprawdzić, że jesteś tą osobą, za którą się podajesz?
Autoryzacja (ang. authorisation) jest to weryfikacja czy user ma prawo dostępu do konkretnych usług / zasobów. Pytania to „Czy user X może przeczytać Y?”, „Czy user X może zmienić Z?”.
Też uważam, że słowo autentykacja to wydumana nowomowa/bełkot techniczny nie mające z językiem polskim nic wspólnego.
Prawidłowe określenie zarówno od strony logicznej jak i mowy/pisowni to uwierzytelnianie.