Технологии безопасности

Сайт посвященный вопросам безопасности

Как настроить двухфакторную аутентификацию для логина и sudo

Безопасность в моде, как это и должно быть. Мы живем в мире, где данные — невероятно ценная валюта, которую вы всегда рискуете потерять. Поэтому вы должны сделать все, чтобы убедиться, что то, что вы держите на серверах и десктопах — в безопасности. Для этого администраторы и пользователи создают невероятно сложные пароли, используют менеджеры паролей и т.д. Но что, если я вам скажу, что вы можете логиниться на ваши серверы и десктопы Linux за два шага, вместо одного? Вы можете это делать благодаря Google Authenticator. Более того, это невероятно легко настроить.

Я собираюсь провести вас через процесс настройки двухфакторной аутентификации для использования ее на логине и sudo. Я продемонстрирую это на десктопной Ubuntu 16.04, но процесс также работает и для сервера. Чтобы справиться с двухфакторной стороной вещей, я буду использовать Google Authenticator.

Есть одно очень важное предостережение: однажды настроив это, вы не сможете зайти в аккаунт (или использовать команду sudo) без шестизначного кода из аутентификатора. Для вас добавляется еще один шаг, поэтому, если доставать смартфон каждый раз, когда вам необходимо залогиниться на вашу Linux-машину (или использовать sudo), является для вас проблемой, возможно, этот способ не для вас. Но помните, как бы там ни было, этот дополнительный шаг приносит вам дополнительный слой защиты, которого бы иначе не было.

После сказанного, давайте займемся настройкой.

Установка необходимых компонентов

Есть два кусочка этого пазла, которые должны быть установлены вместе в виде Google Authenticator. Первый — это приложение для смартфона. Вот как можно установить его из Google Play Store:

Откройте Google Play Store на вашем Android-устройстве
Найдите через поиск "google authenticator"
Тапните по наименованию от компании Google Inc.
Тапните «Установить»
Тапните «Принять»
Дождитесь завершения установки

Теперь давайте переместимся к установке аутентификатора на вашей linux-машине. Вот так:

Открыть окно терминала
Выполнить команду sudo apt-get install libpam-google-authenticator
Введите свой sudo-пароль и нажмите Enter
Если будет предложено, введите y и нажмите Enter
Дождитесь завершения установки

Теперь пришло время конфигурирования процесса аутентификации для работы с google-authenticator.

Конфигурация

Нужно отредактировать всего лишь один файл, чтобы добавить двухфакторную аутентификацию сразу для логина и sudo. Это файл /etc/pam.d/common-auth. Откройте его и найдите строку:

auth [success=1 default=ignore] pam_unix.so nullok_secure

Над этой строкой добавьте следующее:

auth required pam_google_authenticator.so

Сохраните и закройте файл.

Следующий шаг — настроить google-authenticator для каждого пользователя в системе (иначе они не смогут залогиниться). Для примера, предположим, что в вашей системе есть два пользователя: jack и olivia. Сперва настроим его для jack (предположим, что это аккаунт, с которым мы работали все это время).

Откройте окно терминала и выполните команду google-authenticator. Вам зададут ряд вопросов (на каждый из которых следует ответить y). Вопросы такие:

Хотите ли вы, чтобы я обновил ваш файл "/home/jack/.google_authenticator"? (y/n) y
Хотите ли вы запретить множественное использование одного и того же токена? Это ограничивает вас до одной попытки входа примерно раз в 30 секунд, но увеличивает шансы заметить или даже предотвратить атаку человек-посередине. (y/n) y
По умолчанию, токены хороши для 30 секунд, а чтобы компенсировать возможные перекосы времени между клиентом и сервером, мы предоставляем дополнительный токен до и после текущего времени. Если вы испытываете проблемы с некачественной синхронизацией времени, вы можете увеличить окно с его дефолтного значения 1:30 мин., до примерно 4 мин. Хотите это сделать? (y/n) y
Если ваш компьютер, на который вы логинитесь, не защищен от брутфорс-попыток залогиниться, вы можете включить частотное ограничение для модуля аутентификации. По умолчанию, это ограничивает атакующих на не более чем 3 попытки залогиниться каждые 30 секунд. Хотите включить частотное ограничение? (y/n) y

Ответив на эти вопросы, вам будет предоставлен секретный ключ, код верификации и пять аварийных скрэтч-кодов. Распечатайте скрэтч-коды и храните их при себе. Эти коды могут быть использованы, если у вас нет при себе вашего смартфона (каждый код может быть использован только один раз). Секретный ключ — это то, что вы используете для настройки аккаунта в приложении Google Authenticator, а код верификации — это одноразовый код, который вы можете использовать немедленно (если необходимо).

Настройка приложения

Теперь у вас есть настроенный пользователь jack. Перед тем, как вы сможете настроить пользователя olivia, вам необходимо добавить аккаунт для jack в приложение Google Authenticator. Откройте приложение и тапните кнопку меню из главного окна (три вертикальные точки в верхнем правом углу). Тапните «Настроить аккаунт», а затем тапните «Введите ключ». В следующем окне (Изображение 1) вы введете 16-значный секретный ключ, предоставленный во время выполнения приложения google-authenticator. Дайте аккаунту имя (так вы запомните на каком аккаунте он будет использоваться) и тапните «ДОБАВИТЬ».


Изображение 1: Добавление нового аккаунта в приложение Google Authenticator.

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

Наконец, вы должны настроить другие аккаунты в системе. Как я и говорил, мы собираемся настроить аккаунт под названием olivia. Вот так:

Откройте окно терминала
Выполните команду sudo su olivia
Откройте Google Authenticator на вашем смартфоне
Введите шестизначный код аутентификации (предоставленный приложением) в окне терминала (Изображение 2) и нажмите Enter
Введите свой sudo-пароль и нажмите Enter
Как новый пользователь, выполните команду google-authenticator, ответьте на вопросы и запишите предоставленные ключи и коды

После того как вы успешно настроили пользователя olivia с помощью команды google-authenticator, добавьте новый аккаунт в приложении Google Authenticator с соответствующей пользовательской информацией (так же, как вы делали для начального пользователя). Теперь у вас должны быть аккаунты для обоих пользователей jack и olivia в приложении Google Authenticator.


Изображение 2: Ввод шестизначного кода аутентификации для sudo.

Вот и все. Каждый раз при попытке залогиниться на свою машину (или использовать sudo), вам потребуется предоставить шестизначный код аутентификации, перед тем как вы сможете ввести свой пользовательский пароль. Ваша Linux-машина теперь гораздо более защищена, чем это было до двухфакторной аутентификации. Несмотря на то, что некоторым этот процесс может показаться хлопотным, я настоятельно рекомендую ее настроить… особенно для машин с чувствительными данными.