Вы можете использовать Сменный модуль аутентификации с открытым исходным кодом (PAM), созданный Google, известный как Google Authenticator . Этот модуль доступен в стандартных репозиториях, а также в GitHub, так что вы можете строить из исходного кода. В сочетании с одноименным приложением для Android, iOS или Blackberry оно создает основанные на времени и чувствительные ко времени коды для аутентификации вместе с вашим паролем. Так как это модуль PAM, его можно поместить куда угодно . Давайте начнем!
Установка
Для начала вы можете установить PAM со следующим:
sudo apt-get install libpam-google-authenticator
Просто!
Настройка:
После его установки вы также захотите установить соответствующее мобильное приложение для Android, iOS или Blackberry (в зависимости от вашей мобильной платформы). Каждый бесполезен без другого. После того, как у вас есть приложение, необходимое для вашего мобильного устройства, запустите в терминале следующее:
google-authenticator
Начнем с того, что зададим вам несколько вопросов. Первый - единственный, на который вы должны ответить «Да», и он спрашивает, хотите ли вы, чтобы коды основывались на времени. После этого прочитайте каждый вопрос и сделайте тот выбор, который наиболее вам подходит.
После завершения начальной настройки вы увидите очень большой QR-код в вашем терминале, а также некоторую другую информацию. Строка с надписью «Ваш новый секретный ключ:» является очень необходимой строкой, если вы не хотите использовать QR-код для сопряжения устройства, поэтому не закрывайте это окно, пока не начнете настройку! «Скретч-коды», которые это дает вам, также важны, так как именно они будут использоваться для входа в систему, если вы потеряете свое мобильное устройство. Запишите их и храните в безопасном месте.
Теперь на мобильном устройстве откройте приложение Google Authenticator и выберите «Настроить учетную запись». Вы можете отсканировать созданный QR-код или выбрать «Использовать предоставленный ключ». Если вы отсканируете QR-код, все будет автоматически сохранено в учетной записи с именем «your_user @ your_host». Однако, если вы выберете «Использовать предоставленный ключ», вам придется ввести имя, ключ и тип токена вручную. Имя может быть чем угодно. Ключ будет секретным ключом, сгенерированным ранее. Тип будет по умолчанию на основе времени. После настройки вы увидите учетную запись на главной панели приложения Google Authenticator, а также круговой таймер рядом с ним. Этот таймер сбрасывается каждые 30 секунд, и генерируется новый код.
Включение этого!
Здесь приходит волшебство. Поскольку это модуль PAM, его можно использовать в разных местах. Я расскажу, как добавить аутентификацию в sudo
запросы, войти в систему по SSH и войти в систему lightdm. Однако, прочитав этот учебник, вы сможете включить его в другом месте на основе тех же приемов.
SSH
Я делаю это в первую очередь, потому что есть дополнительный шаг. Первое, что вам нужно сделать, это отредактировать ваш конфигурационный файл SSH:
gksudo gedit /etc/ssh/sshd_config
Найдите строку, которая говорит:
ChallengeResponseAuthentication no
и измените «нет» на «да».
Теперь вам нужно отредактировать модуль PAM для ssh:
gksudo gedit /etc/pam.d/sshd
В самом конце этого файла добавьте следующую строку:
auth required pam_google_authenticator.so nullok
Аргумент "nullok" указывает системе не запрашивать код подтверждения, если пользователь не настроил двухфакторную аутентификацию. После этого отредактируйте и перезапустите ваш ssh-сервис:
sudo service ssh restart
sudo
Запросы
Отредактируйте файл PAM для sudo
:
gksudo gedit /etc/pam.d/sudo
Добавьте следующую строку в самом конце:
auth required pam_google_authenticator.so nullok
Теперь каждый sudo
запрос будет запрашивать код подтверждения и пароль.
LightDM (GUI Log-In)
Отредактируйте файл PAM для LightDM:
gksudo gedit /etc/pam.d/lightdm
Добавьте следующую строку в самом конце:
auth required pam_google_authenticator.so nullok
Это оно! Каждый раз, когда вы входите в систему через графический интерфейс, он запрашивает код подтверждения после вашего пароля.
Общесистемный и TTY-вход
Даже если вы включите вышеуказанные методы, он все равно не будет запрашивать код подтверждения, если вы переключитесь на TTY с CTRL+ ALT+ F#. Чтобы это исправить, отредактируйте common-auth
файл PAM:
gksudo gedit /etc/pam.d/common-auth
и добавьте следующую строку в самый конец:
auth required pam_google_authenticator.so nullok
Примечание. Поскольку этот файл общей аутентификации включен во все остальные файлы типа аутентификации, вам необходимо удалить необходимые строки аутентификации из других файлов. В противном случае он дважды запросит код подтверждения и не позволит войти в систему после.
Заворачивать
Как вы могли заметить, добавить эту аутентификацию было довольно легко. Если вы используете менеджер дисплеев, отличный от LightDM, вы могли бы легко просто изменить строку выше lightdm соответственно. Поскольку ваше мобильное устройство и ваша система уже поделились этим секретным ключом, они всегда должны быть синхронизированы. Для этой настройки нет взаимодействия с серверами Google или любым другим интернет-ресурсом. Даже если оба устройства были полностью автономны, коды подтверждения, отображаемые в вашем приложении, будут правильными. Всякий раз, когда вам необходимо войти в систему с помощью одного из методов, которые вы включили, просто откройте мобильное приложение и получите текущий код подтверждения.
Веселиться!!