Хотите добавить второй фактор авторизации в linux, но без заморочек с внешними порталами и веб-интерфейсами? Все можно сделать прямо в терминале с помощью PAM и TOTP. Покажу, как настроить двухфакторную авторизацию через google authenticator или oathtool.
1️⃣ Установка модуля PAM для TOTP.
sudo apt install libpam-google-authenticator # на debian/ubuntu
sudo yum install google-authenticator # на RHEL/centOS
2️⃣ Генерация секретного ключа для пользователя. Под нужным пользователем запускаем:
google-authenticator
Вы получите:
📍Секретный ключ (его нужно добавить в приложение google authenticator или аналог);
📍URL в формате otpauth://...;
📍Резервные коды на случай потери доступа;
3️⃣ Настройка PAM. Открываем PAM-конфиг sshd:
sudo nano /etc/pam.d/sshd
Добавляем в начало:
auth required pam_google_authenticator.so
Также нужно разрешить использование PAM в sshd_config:
sudo nano /etc/ssh/sshd_config
Убедитесь, что указано:
ChallengeResponseAuthentication yes
UsePAM yes
Перезапускаем SSH:
sudo systemctl restart sshd
Теперь при входе по SSH будет запрашиваться TOTP-код.
4️⃣ Использование oathtool (альтернатива телефону). Если вы хотите получать коды в консоли, используйте oathtool.
Устанавливаем:
sudo apt install oathtool
Пример генерации кода (вставьте свой секретный ключ в base32):
oathtool --totp -b 'JBSWY3DPEHPK3PXP'
Можно сделать shell-функцию:
totp() {
oathtool --totp -b "$1"
}
И использовать:
totp JBSWY3DPEHPK3PXP
🌟 Полезно знать
📍Конфигурация хранится в ~/.google_authenticator;
📍Двухфакторка включается для каждого пользователя отдельно;
📍Можно задать ограничения - например, разрешить доступ по SSH только с TOTP, но не требовать при входе локально.
#linux #2FA
🧑💻 NetworkAdmin