Здрасти, сегодня продолжаем издеваться над ssh.
Давай прикрутим 2FA.
Идем на сервер к которому хотим подключиться по ssh и ставим пакеты:
sudo apt update
sudo apt install libpam-google-authenticator
Запускаем конфигуратор:
google-authenticator
После запуска конфигуратора, получишь по ебалу:
Do you want authentication tokens to be time-based (y/n)
Тут поди сам разберешься чо нажимать. В ответ тебе выплюнут QR код, ссылку и секретный ключ.
Можно еще всякие ключики использовать:
google-authenticator -t -f -d -w 3 -e 5 -r 3 -R 60
Если интересно: google-authenticator --help
Всю эту инфу куданить себе скопируй чтоб не проебаться.
Дальше сканируем этот QR код, либо берем секретный ключ который он тебе выплюнул и вставляем в vaultwarden в TOTP или на телефоне в апку добавляем.
Тот самый секретный ключ:
Your new secret key is: MAIY4KDCXKWHPDCI
В общем нужно получить шестизначный код, вернуться в терминал (где ты запускал конфигуратор) и вставить его. Логика аналогична подключению 2FA в любых сервисах.
После этого оно выплюнет тебе рекавери коды, ну и спросит:
Do you want me to update your "/root/.google_authenticator" file?
Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks
и другие
На всё соглашаешься, но если хочешь, можешь прочитать и тонко затюнить под свои задачи.
В файл /root/.google_authenticator сохранится секретный ключ и коды восстановления. Этот файл не трогаем, без него тоже нихуя не заработает.
Теперь открываем файл /etc/pam.d/sshd
И добавляем в него строчку:
# @include common-auth
auth required pam_google_authenticator.so
По необходимости комментим common-auth если ничего не работает. Есть вариант не комментить, но тогда нужно правильно настроить common-auth, но у нас сегодня не про это.
Закомментировав этот модуль ты отключаешь стандартные механизмы аутентификации и даешь зеленый свет на использование pam_google_authenticator.
Тут аккуратнее, можешь себе в ногу выстрелить. Сначала все проверяем и только потом закрываем терминал с активной сессией.
Дальше добавляем в конфиг: /etc/ssh/sshd_config
UsePAM yes
PasswordAuthentication no
ChallengeResponseAuthentication yes
PubkeyAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
Вот и всё, настройка 2FA завершена.
Рестартим:
sudo systemctl restart ssh
И пробуем подключиться по ssh к этому серверу:
ssh root@bashdays.ru
(root@bashdays.ru) Verification code:
Ха! А что вводить? Это и есть 2FA, сюда вводим одноразовый код который выплюнул тебе vaultwarden либо аппка на телефоне.
Всё! Залетаем спокойно на сервер. Без кода и ключа хуй ты теперь чо сделаешь.
Как использовать резервные коды?
Да также при запросе в Verification code. НО из файла /root/.google_authenticator они будут отлетать. Тут тоже аккуратнее.
Также можешь включать 2FA для конкретных пользователей, в конфиге /etc/ssh/sshd_config
Match User <имя юзера>
AuthenticationMethods publickey,keyboard-interactive
Настроек там жопой кушай, я тебе лишь концепт показал как эту хуйню можно быстренько настроить.
Главное не спеши и делай всё вдумчиво, чтобы не проебать доступ к серверу. Ну а если все проебал, да и хуй с ним, ебани кофейка и мультики посмотри.








Комментарии