SSH двухфакторная авторизация по Google Аутентификатору

Thank you for reading this post, don't forget to subscribe!
Мож­но раз­ны­ми спо­со­ба­ми защи­щать доступ по SSH к сво­е­му сер­ве­ру - запре­щать / раз­ре­шать доступ для раз­ных поль­зо­ва­те­лей, настра­и­вать аутен­ти­фи­ка­цию по клю­чам или напри­мер настро­ить двух­фак­тор­ную аутен­ти­фи­ка­цию при помо­щи Google Authenticatior.
Перед тем, как начать, реко­мен­дую настро­ить NTP син­хро­ни­за­цию на сво­ем сер­ве­ре / рабо­чей стан­ции, напри­мер при помо­щи CHRONY, уста­но­вить на свой теле­фон Google Authenticator (ищи в Google Play или что ты там исполь­зу­ешь), далее при­сту­пить к уста­нов­ке и на настрой­ке MFA.

Установка Google Authenticator

Для CentOS необ­хо­ди­мо уста­но­вить epel репозиторий:
yum install epel-release

 

Далее уста­но­вить Gogle Authenticator:
yum install google-authenticator

 

Настройка Gogle Authenticator

Для настрой­ки необ­хо­ди­мо запу­стить google-authenticator из-под поль­зо­ва­те­ля для кото­ро­го будет настра­и­вать­ся MFA:
google-authenticator

 

После запус­ка необ­хо­ди­мо отве­тить на несколь­ко вопросов:
Do you want authentication tokens to be time-based (y/n) y

 

Do you want me to update your "/home/ssh-user/.google_authenticator" file (y/n) y

 

И так далее, отве­ча­ем на все вопро­сы утвер­ди­тель­но, на одном из эта­пов необ­хо­ди­мо отска­ни­ро­вать QR код для сво­е­го мобиль­но­го аутентификатора

Настройка SSH

Необ­хо­ди­мо доба­вить стро­ку в sshd кон­фиг pam.d:
nano /etc/pam.d/sshd

 

 

Вклю­чить параметр:
ChallengeResponseAuthentication yes

 

В кон­фи­гe sshd:
/etc/ssh/sshd_config

Пере­за­пу­стить sshd:

systemctl restart sshd.service

 

Тестирование подключения

Про­бу­ем под­клю­чить­ся как обыч­но, если исполь­зу­ет­ся аутен­ти­фи­ка­ция по паро­лю, после вво­да паро­ля нуж­но будет вве­сти про­ве­роч­ный ключ:

 

Если используется подключение по RSA ключу

если такое под­клю­че­ние настро­е­но, то для рабо­то­спо­соб­но­сти связ­ки RSA + OTP необ­хо­ди­мо открыть sshd_config:

 

Доба­вить в него строку:

Открыть pam кон­фиг sshd:

 

Заком­мен­ти­ро­вать строку:

 

Пере­за­пу­стить sshd:

 

Отладка SSHD

Для это­го доста­точ­но запу­стить sshd с пара­мет­ром -D:

 

Вре­мен­но доба­вить порт в исклю­че­ния firewalld:

 

Попро­бо­вать под­клю­чить­ся на ука­зан­ный порт: