Если вы администратор Linux и хотите максимально обезопасить свои серверы и настольные компьютеры, вы наверняка задумывались об использовании двухфакторной аутентификации. Вообще, настроить ее настоятельно рекомендуется каждому, так как двухфакторная аутентификация заметно усложняет злоумышленникам задачу получить доступ к вашим машинам.
Linux позволяет настроить компьютер так, что войти в консоль, рабочий стол или через Secure Shell будет нельзя без кода двухфакторной аутентификации, привязанного к этой машине. Рассмотрим весь процесс настройки на системе Ubuntu Server 16.04.
Введение
Прежде чем начать, нужно учесть один факт — после настройки двухфакторной аутентификации вы не сможете получить доступ к вашему компьютеру без сгенерированных третьей стороной кодов. Каждый раз, когда вы захотите войти в систему, вам понадобится либо ваш смартфон, либо экстренные коды (emergency codes), которые можно настроить в процессе.
Нам понадобится сервер или десктоп Linux. Убедитесь, что система в актуальном состоянии, а ваши данные скопированы на случай непредвиденных обстоятельств. Для создания двухфакторных кодов будем использовать стороннее приложение, например, Authy или Google Authenticator. Условно будем пользоваться Google Authenticator, которое нужно предварительно установить.
Установка
Залогиньтесь в системе и выполните следующие шаги:
- Откройте окно терминала.
- Выполните команду: sudo apt install libpam-google-authenticator.
- Введите пароль sudo и нажмите Enter.
- Если появится запрос на подтверждение, введите «y» и нажмите Enter.
- Дождитесь конца установки.
Теперь пришло время настроить компьютер на двухфакторную аутентификацию.
Конфигурация
Вернитесь в окно терминала и введите команду: sudo nano /etc/pam.d/common-auth. Добавьте следующую строку в конец файла:
auth required pam_google_authenticator.so nullok
Сохраните и закройте этот файл.
Теперь мы должны настроить Google Authenticator для каждого пользователя, кто должен иметь доступ в систему. Для этого нужно вернуться в окно терминала и от лица пользователя, которому планируется предоставить доступ, запустить команду google-authenticator. Здесь придется ответить на пару вопросов.
Первый вопрос: «Хотите ли вы, чтобы токены аутентификации были основаны на времени (y/n)» («Do you want authentication tokens to be time-based (y/n)»). Ответьте «y», вам будет предоставлен QR-код. Откройте на своем смартфоне двухфакторное приложение, добавьте учетную запись и отсканируйте этот QR-код.
Рисунок 1. Полученный QR-код
После того, как вы добавите код, останется ответить еще на несколько вопросов:
- Do you want me to update your "/home/jlwallen/.google_authenticator" file (y/n) — Хотите ли вы обновить файл/home/jlwallen/.google_authenticator;
- Do you want to disallow multiple uses of the same authentication token (y/n)? — Хотите ли вы отключить возможность многократного использования одного токена? Эта настройка позволяет выполнять только один вход в систему каждые 30 секунд. Если эта опция активирована, ваши шансы заметить или даже предотвратить атаку вида «Человек посередине» (man-in-the-middle) возрастают.
- Поскольку значением по умолчанию является 30 секунд, а время сервера и клиента может незначительно отличаться, есть возможность использовать некий дополнительный токен. Следовательно, если у вас возникают проблемы с синхронизацией, вы можете увеличить время окна примерно до 4 минут. Хотите ли вы это сделать? — Do you want to do so (y/n).
- Если вы сомневаетесь в защите вашего компьютера от атак типа брутфорс (brute-force), вы можете активировать ограничение скорости для модуля аутентификации. По умолчанию это не более 3 попыток входа в систему каждые 30 секунд. Хотите ли вы включить ограничение скорости? — Do you want to enable rate-limiting (y/n)
Ответим на каждый вопрос утвердительно, введя «y» и нажав Enter.
Настройка SSH
Следующим шагом будет настройка SSH для работы с двухфакторной аутентификацией. Если этот шаг пропустить, вы не сможете войти через SSH.
Сначала надо включить модуль PAM. Для этого набираем команду: sudo nano /etc/pam.d/sshd. Открыв файл, добавляем следующую строку в конец файла:
auth required pam_google_authenticator.so nullok
Сохраняем этот файл, а затем выполняем команду: sudo nano /etc/ssh/sshd_config. В этом файле находим:
ChallengeResponseAuthentication no
И меняем на:
ChallengeResponseAuthentication yes
Сохраняем этот файл и перезапускаем sshd — sudo systemctl restart sshd.
Вход в систему
Прежде чем осуществить выход из системы, настоятельно рекомендуем вам открыть новое окно терминала и попытаться выполнить вход через SSH. Если это сделать не удалось, повторите все описанные выше шаги, убедившись, что вы ничего не пропустили. После того, как вам удастся успешно залогиниться через SSH, вы можете завершить сеанс и снова войти в систему.
Выводы
Вот и все, вы добавили дополнительный уровень безопасности для ваших Linux-машин. Помните, что без стороннего приложения вы не сможете выполнить вход в систему, поэтому всегда держите ваш смартфон под рукой.