» » » Debian / Ubuntu: Мультифакторная аутентификация для SSH

Debian / Ubuntu: Мультифакторная аутентификация для SSH

Author: Tatyana dated 31-05-2018, 08:27
  • Dislike
  • 0
  • Like
Debian / Ubuntu: Мультифакторная аутентификация для SSHДоступ к серверу по SSH может быть ограничен множеством способов: IP-адрес, SSH ключи и так далее. Один из способов — аутентификация с помощью стороннего приложения на смартфоне. Приложение генерирует одноразовые уникальные коды, которые используются в дополнение к основному паролю. Если злоумышленник знает ваш логин и пароль, то для доступа к ресурсу под вашим логином ему так же необходим доступ к вашему устройству с приложением, генерирующим эти коды. Подобный способ аутентификации гораздо безопаснее стандартной комбинации логин / пароль и удобен тем, кто в силу каких-либо причин не может ограничить доступ к своему серверу по IP, или использовать SSH ключи.

В этом примере у меня сервер с ОС Debian 9 (Stretch) и приложение Google Authenticator на смартфоне под Android. Google Authenticator так же есть и под iOS.

Устанавливаем OATH-TOTP приложение на сервер:
sudo apt install libpam-google-authenticator


Запускаем инициализацию:
google-authenticator


После запуска вышеуказанной команды вам будет задано несколько вопросов. Первый из них: ограничение срока действия каждого токена аутентификации. Имеется ввиду, что каждый генерируемый код будет действителен не протяжении ограниченного периода (30 секунд, например). Отвечаем «да». Выдача:
Do you want authentication tokens to be time-based (y/n) 


Если ответить «нет», то каждый генерируемый код будет так же одноразовым, но бессрочным.

После этого система сгенерирует огромный QR-код, который вы должны будете просканировать своим смартфоном. Это важный момент. Убедитесь, что ваш терминал достаточных размеров. Если QR-код не помещается в экран, то можно использовать ссылку, приведённую ниже QR-кода для доступа к уменьшенной копии или вручную ввести secret key в приложение.

Запишите секретный ключ и коды восстановление (secret key, verification code) в безопасное место. Это единственный способ доступа к серверу в случае утраты приложения. Если вы, например, потеряете ваш смартфон или по каким-либо другим причинам не сможете им воспользоваться. Имеется ввиду, что SSH — единственный путь, по которому вы можете получить доступ к своему серверу.

Do you want me to update your "~/.google_authenticator" file (y/n)


Отвечаем «да». В корневой директории пользователя будет создан файл .google_authenticator, содержащий ключ и инструкции для работы OATH-TOTP. Если ответить «нет», то настройка прервётся и OATH-TOTP не будет работать.

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 (y/n)


Хотите ли вы отключить многократное использование одного и того же токена аутентификации? Отвечаем «да».
Имеется ввиду, что вы сможете проходить аутентификацию не чаще, чем раз в 30 секунд, что в свою очередь позволит обнаружить или даже предотвратить перехват сессии. Код будет аннулирован сразу после его ввода.

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n)


Имеется ввиду, что каждый код будет действителен на протяжении 30-ти секунд. Во избежании проблем, связанных с рассинхронизацией времени между сервером и вашем устройством, к этому времени будет добавлено ещё по 30 секунд в обе стороны. Если этого не достаточно, то можно увеличить общий размер временного окна с полутора минут до четырёх минут. Отвечаем «нет», так как это безопаснее. Стоит ответить «да» только в том случае, если связь между вами и сервером действительно плохая, и рассинхронизация времени между вашим сервером и смартфоном может превышать полторы минуты.

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n)


По умолчанию будет выставлено ограничение на количество попыток аутентификации. Не более трёх попыток каждые 30 секунд. Отвечаем «да».

На этом настройка закончена и OATH-TOTP работает. Вы можете скачать и сохранить файл .google-authenticator. Его можно использовать на другом сервере, если у вас их много и вы не хотите настраивать каждый из них отдельно.

Далее нужно настроить непосредственно SSH сервер для работы с OATH-TOTP.

Поскольку настройка SSH сервера будет проводиться с использованием сессии SSH, то во избежании проблем с возможной блокировкой в случае ошибки лучше открыть несколько сессий.

Редактируем файл sshd:
sudo nano /etc/pam.d/sshd


В самый низ добавляем следующее:
# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok


Nullok в самом конце означает, что авторизация с использованием OATH-TOTP опциональна. Пользователи по-прежнему смогут авторизоваться без OATH-TOTP кодов, используя только логин и пароль. Если вы уверены, что для всех пользователей OATH-TOTP настроен, то уберите это условие из строки.

Сохраняем файл и переходим к конфигурации:
sudo nano /etc/ssh/sshd_config


Ищем строку ChallengeResponseAuthentication и ставим значение в yes. Пример:
. . .
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication yes
. . .


Сохраняем изменения и перезагружаем SSH сервер.
sudo systemctl restart sshd.service

или
sudo service sshd restart


Для проверки попробуйте открыть ещё одну ssh сессию. После ввода пароля вас попросят ввести код, сгенерированный приложением на вашем смартфоне.
Password: 
Verification code: 


На этом настройка закончена. Мультифакторная авторизация работает.
Like Dislike

___
Tatyana K.



Tags: Linux Debian Ubuntu SSH


 
  • Creative Commons Licence
  • Norton Safeweb
  • Powered by MariaDB
  • Powered by Debian
  • Website Uptime Monitoring By ServiceUptime.com
  • Yandex.Metrica