четверг, 26 октября 2017 г.

SSH MFA access for Linux Instance/Host

Для тех, кто очень хочет MFA, двухфакторку или трех:))
Сделаем на базе Google Authenticator и Ubuntu:
1. apt-get install libpam-google-authenticator
2. в файлик /etc/pam.d/sshd добавить строчку после
@include common-password
auth required pam_google_authenticator.so nullok
#@include common-auth


3. в файлик /etc/ssh/sshd_config :
- ChallengeResponseAuthentication yes
после UsePAM yes добавить
AuthenticationMethods publickey,keyboard-interactive

systemctl restart sshd.service

4. создать файлик /etc/profile.d/mfa.sh:
if [ ! -e ~/.google_authenticator ] && [ $USER != "root" ]; then google-authenticator -t -d -f -r 3 -R 30 echo echo "Save the generated emergency scratch codes and use secret key or scan the QR code to register your device for multifactor authentication." echo echo "Login again using your ssh key pair and the generated One-Time Password on your registered device." echo exit fi

я убрал ключик -W ибо с ним у меня не работало, ошибка WINDOWS_SIZE.

5. Сделать структуру в /etc/skel для всех новых юзеров что бы приготовилась
mkdir -p -- "/etc/skel/.ssh" && sed -e 's/.*\(ssh-rsa.*\) .*/\1/' ~/.ssh/authorized_keys > "/etc/skel/.ssh/authorized_keys"

6. Добавляем юзера, в home/USER/.ssh/authorized_keys удаляем некий ключ что там есть :)) и добавляем публичный ключ пользователя.

7. Ставим приложение на смартфон Google Authenticator.
8. Пробуем зайти ssh -i private_key.pem username@IP
в первый заход для нас сгенерят QR-код и набор паролей.
Смарфоном сканируем QR код.
Второй заход уже попросит Verification code:
код смотрим на смартфоне (шесть знаков)

Комментариев нет: