Используя LDAP для аутентификации, как я могу безопасно отключить / деактивировать учетную запись, не удаляя ее?

Мы используем LDAP для аутентификации для тысяч пользователей. Основная тактика, которую мы использовали для того, чтобы пользователь не смог войти в систему, не удаляя свою учетную запись, заключается в изменении атрибута LDAP «loginShell» на что-то вроде «None» или «NA», в отличие от «/ bin / bash». Что это делает при попытке входа в систему, пользователь «Разрешить отказ». Я не уверен, что эта настройка с LDAP и «loginShell» является стандартом unix или специфична только для нашей среды здесь.

Мой вопрос заключается в том, является ли это достаточной мерой для отключения учетной записи, чтобы пользователь не смог войти в систему? Есть ли какие-либо дыры или обходные пути, в которых пользователь мог бы войти в систему? Можно ли предпринять какие-либо другие действия для отключения учетной записи?

Изменение оболочки пользователя «определенно» изменяет то, что выполняется, если они пытаются войти в систему и запустить оболочку. Это само по себе недействительно. Таким образом, кто-то может запустить ssh host -t /bin/sh , чтобы запустить команду, или все еще может войти в систему через ftp или веб-приложение, используя этот репозиторий.

Однако вы можете выполнить эту работу, проверив действительную оболочку для входа, прежде чем разрешать доступ. Вы можете сделать это с помощью фильтра LDAP. Или, на большинстве Linux-систем (и нескольких других вариантов UNIX, поддерживаемых PAM), вы можете использовать что-то вроде pam_shells, которое проверяет, отображается ли оболочка пользователя в / etc / shells, прежде чем разрешать доступ.

Традиционно вход в систему на основе оболочки выполняется путем установки оболочки в / bin / false или установки ее в / bin / nologin (если она существует). Использование pam_shells или LDAP-фильтра делает эти решения «в основном» бессмысленными. Однако мне нравится помещать / bin / true в / etc / shells, чтобы я мог отказать в доступе к оболочке для некоторых пользователей, разрешив им что-то вроде scp; Затем я помещаю / bin / false для пользователей, которые не должны получать какие-либо из них, и используйте pam_shells в тех службах, где я хочу использовать оболочку для переключения вещей.

В большинстве случаев с LDAP вы можете предоставить атрибут, который контролирует доступ. С помощью pam_ldap Linux параметр «pam_check_service_attr» позволяет вам указывать конкретные службы pam, которым этот пользователь может аутентифицироваться (используя атрибут «authorizedService»). Также есть атрибут доступа на основе хоста.

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