Google Authenticator — двойная защита не будет лишней

На многих сайтах для обеспечения безопасности встречается использование двойной верификации при входе. В данной статье я постараюсь описать как обезопасить сервер от взлома (установим дополнительную защиту входа) с помощью Google Two-Factor Authentication
Будем собирать с исходников, для этого установим необходимые пакеты

1
yum groupinstall 'Development Tools'

Создадим пользователя

1
useradd blog

и так же нужно его дописать в /etc/sudoers

1
blog ALL=(ALL) ALL

скачаем исходники

1
git clone https://github.com/google/google-authenticator-libpam

перейдем в директорию

1
cd google-authenticator-libpam/

Запустим поочередно команды

1
2
3
4
./bootstrap.sh
./configure
make
sudo make install

Если успешно копируем все в нужные директории

1
2
cp /usr/local/lib/security/pam_google_authenticator.so /lib64/security/
cp google-authenticator /usr/bin

и запускаем google-authenticator
в появившемся вопросе нажимаете Y
Google Authenticator
Можете приложением отсканировть QR или же ввести secret key в приложение
google_authenticator
Осталось
только научить SSHD работать с GOOGLE

в

1
/etc/pam.d/sshd

допишем

1
auth required pam_google_authenticator.so nullok

и в

1
/etc/ssh/sshd_config

сменим параметр

1
ChallengeResponseAuthentication yes

Перезапускам службу SSH

1
systemctl restart sshd.service

можем проверить
Успешная двойная авторизация
Немного логов о авторизации
Специально проверил ни фейк ли сделал, невозможно ли ввести цифры от башки, так вот, все чудесно работает
Логи с плохим Google кодом ( я вводил плохой google код и правильный системный пароль но увы не пропустило)

1
2
3
Feb 11 22:11:25 centos7test sshd(pam_google_authenticator)[28416]: Invalid verification code for root
Feb 11 22:11:35 centos7test sshd[28416]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Feb 11 22:11:37 centos7test sshd[28414]: error: PAM: Authentication failure for root from 192.168.184.1

В этом случае и Google код и системный пароль были правильными.

1
2
3
Feb 11 22:11:48 centos7test sshd(pam_google_authenticator)[28417]: Accepted google_authenticator for root
Feb 11 22:11:56 centos7test sshd[28414]: Accepted keyboard-interactive/pam for root from 192.168.184.1 port 48665 ssh2
Feb 11 22:11:56 centos7test sshd[28414]: pam_unix(sshd:session): session opened for user root by (uid=0)

Ошибка ввода Google кода
На этом все. большое спасибо.