Среди множества способов защиты серверов, сайтов и прочего ценного и нужного, двухфакторная аутентификация представляется, как крайне удобный инструмент. Благо не проблема прикупить токен, либо использовать его софтовую версию на своем Android/IPhone/Blackberry. Около года назад я озаботился прикручиванием двухфакторки к своим серверам, морально готовясь к огню/воде/медным трубам, но оказалось, что это максимально просто. А раз просто, то откладывание на потом просто преступно по отношению к нашим серверам.
В данной статье я расскажу, как быстро настроить двухфакторную аутентификацию на базе pam модуля pam_google_authenticator и подружить SSH с Google токеном, свободно распространяемым через Apple Appstore и Google Play.
ВАЖНО: Двухфакторная аутентификация не будет работать, если для авторицации вы используете ключи.
ВАЖНО: Убедитесь, что время на вашем телефоне и на сервере, на котором будем производить настройку, идентично. В случае расхождения времени вы не сможете попасть на свой сервер!
Если вы не уверены в том, что время на сервере не рассинхронизируется и у вас не настроен ntp клиент, самое время его настроить:
|
|
Я использую стабильный Debian Sqeeze, в котором, в отличие от Wheezy, из коробки нужное нам ПО не ставится. Не беда, на странице http://packages.debian.org/wheezy/libpam-google-authenticator ищем последнюю версию под нашу архитектуру и качаем его. В примере я качаю версию под amd64, актуальную на момент написания статьи. Так-же скачаем и поставим генератор qr кодов.
|
|
Далее заходим под пользователем, под которым будем ходить с нашим кодом и запускаем:
|
|
Приложение сразу выдаст qr код, по которому удобно привязываться к смартфону, просто отсканировав его через программу Google Authenticator, а также резервные коды, которые мы сможем использоваться, если что-то со смартфоном случится, либо его просто не будет под рукой.
Теперь нам надо ответить на несколько вопросов:
Do you want me to update your "~/.google_authenticator" file (y/n)
Апдейтить файл ~/.google_authenticator
-y
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)
Отключить многократное использование одного кода?
-y
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)
По умолчанию код действует 1,5 минуты, мы можем увеличить это время до 4 минут, что может помочь при проблемах с синхронизацией времени
-y/n
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)
Ограничить число попыток ввода до 3-х за 30 секунд?
-y
Настроим SSH.
|
|
Изменим значение ключа ChallengeResponseAuthentication на yes:
|
|
Перезагрузим SSH:
|
|
Создадим файл, в котором будут описаны условия аутентификации:
|
|
# Для сети 10.0.1.0 ходим с обычным паролем
+ : ALL : 10.0.1.0/24
# Рут ходит по одному паролю, после отладки можно грохнуть, так-же можно завести специального пользователя, под которым будем заходить при отсутствии под рукой телефона.
+ : root : ALL
# Остальные будут ходить по двухфакторке.
- : ALL : ALL
Настроим PAM:
|
|
Добавим строки после «auth required pam_env.so envfile=/etc/default/locale»:
|
|
Если мы все настроили правильно, то при следующей авторизации SSH попросит ввести Verification code.
На этом все. Спасибо за внимание.
Смотрите также
- Как добавить постоянные статические маршруты (persistent static routes) в Mac OS X.
- Знакомство с CMake. Часть 3. CMakeCache, модули CMake, зависимости сборки.
- maybe? Интересная песочница для отладки операций с файлами в скриптах Linux.
- Знакомство с CMake. Часть 2. Переменные, условия, сообщения, опции.
- Знакомство с CMake. Часть 1. Установка, CMakeLists.txt, сборка.