Назад | Перейти на главную страницу

Правило запрета PAM не применяется к Ubuntu в Google Cloud

я добавил

auth requisite pam_deny.so

в качестве первой строки каждого файла в /etc/pam.d/ (включая sshd), но соединения SSH по-прежнему устанавливаются без проблем. Он находится в экземпляре Google Cloud Ubuntu по умолчанию, поэтому в нем настроена таинственная аутентификация. Как мне применить мою команду deny?

Основные проверки

Я вхожу в систему, используя SSH-ключ для всего проекта, настроенный в метаданных проекта Google Cloud. Экземпляр использует cloud-init для настройки ключей SSH и т. д., но я не могу найти никаких намеков относительно того, что может быть настроено для переопределения механизма аутентификации PAM.

Мы будем очень благодарны за любой намек на то, что может переопределить механизм аутентификации PAM!

N.B. Дело в том, чтобы в конечном итоге включить модуль PAM для двухфакторной аутентификации.

Команда deny игнорируется по двум отдельным причинам, которые соответствуют двум системам, которые обходят аутентификацию PAM.

  1. Игнорируется при запуске sudo, потому что пользователь настроен с NOPASSWD флаг. Этот флаг установлен в файле в /etc/sudoers.d это линия

    %google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL
    

    и мой пользователь принадлежит к google-sudoers группа. Как руководство говорит:

    По умолчанию sudo требует, чтобы пользователь аутентифицировал себя перед запуском команды. Это поведение можно изменить с помощью тега NOPASSWD.

    Итак, используя sudo полностью обходит аутентификацию (включая PAM).

  2. Он игнорируется при входе в систему по SSH с использованием открытого ключа, поскольку аутентификация с открытым ключом SSH обходит PAM. Руководство, доступное через man sshd_config на Ubuntu 18.04 говорит

    Если установлено значение «Да», это включит аутентификацию PAM с использованием ChallengeResponseAuthentication и PasswordAuthentication в дополнение к обработке учетной записи PAM и модуля сеанса для всех типов аутентификации.

    Таким образом, аутентификация PAM работает только с двумя типами аутентификации: ответ на запрос и пароль. PAM не используется для аутентификации с открытым ключом.

    Вы можете принудительно применить отказ, добавив AuthenticationMethods publickey,keyboard-interactive к /etc/sshd_config. Это требует от пользователя аутентификации с использованием двух методов: сначала с помощью открытого ключа (при этом PAM не используется), а затем путем ответа на запрос (при этом будет использоваться PAM).