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

Пользователь консоли заблокирован - проблемы с pam?

Я пытаюсь включить аутентификацию AD для стабильных серверов Debian, чтобы пользователи могли входить в систему через ssh с аутентификацией в Windows AD. Все работает нормально, и я могу подключиться к серверу по ssh, используя свои учетные данные Windows, но я заметил это сообщение при удаленном входе в систему по ssh при входе в систему как root:

Your account has been locked. Please contact your System administrator
Your account has been locked. Please contact your System administrator
Your account has been locked. Please contact your System administrator
Last login: Sat Jun 13 14:15:14 2009 from workstation1
server1:~#

Я проверил, могу ли я войти в систему через локальную консоль как root, но не могу. Выскакивает та же ошибка. Это могло сильно ударить меня в будущем. В то же время я пробовал ту же настройку для RedfHat, и у меня нет этой проблемы. Я считаю, что проблема где-то в моей конфигурации pam, но не вижу, где поиск ошибки тоже никуда меня не приведет.

Ниже приведены сведения о соответствующих файлах pam в Debian и redhat ...


Версия Debian

общий счет

account sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
account sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
account sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
account required    pam_unix.so

Common-auth

auth    sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
auth    sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
auth    sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
auth    required    pam_unix.so nullok_secure

общая сессия

session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022
session sufficient      pam_winbind.so  require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX 
session sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXXX
session sufficient      pam_winbind.so require_membership_of=S-1-5-21-602162358-1844823847-725345543-XXXXX
session required    pam_unix.so

Файл системной аутентификации RedHat:

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        sufficient    pam_winbind.so use_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     sufficient    pam_winbind.so use_first_pass
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_winbind.so use_first_pass
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     required      pam_winbind.so    use_first_pass
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_mkhomedir.so skel=etc/skel/ umask=0027

/etc/pam.d/sshd

# PAM configuration for the Secure Shell service

# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
auth       required     pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
auth       required     pam_env.so envfile=/etc/default/locale

# Standard Un*x authentication.
@include common-auth

# Disallow non-root logins when /etc/nologin exists.
account    required     pam_nologin.so

# Uncomment and edit /etc/security/access.conf if you need to set complex
# access limits that are hard to express in sshd_config.
# account  required     pam_access.so

# Standard Un*x authorization.
@include common-account

# Standard Un*x session setup and teardown.
@include common-session

# Print the message of the day upon successful login.
session    optional     pam_motd.so # [1]

# Print the status of the user's mailbox upon successful login.
session    optional     pam_mail.so standard noenv # [1]

# Set up user limits from /etc/security/limits.conf.
session    required     pam_limits.so

# Set up SELinux capabilities (need modified pam)
# session  required     pam_selinux.so multiple

# Standard Un*x password updating.
@include common-password

Ради любви к $ {Diety}, не изменяйте common-* части стека PAM при экспериментировании с новой настройкой аутентификации. Это самый быстрый и простой способ самому выбраться из отверстия Хоуга.. Вы потенциально можете заблокировать себя из системы постоянно из-за сценария с курицей и яйцом: вы заблокированы в системе, но вам необходимо войти в систему, чтобы внести изменения, необходимые для предотвращения блокировки.

Попробуйте поэкспериментировать с одной службой, например SSH (при условии, что поблизости есть консольный доступ). Если у вас есть прототип / настройка сервиса в соответствии с вашими точными требованиями, не применяйте его сразу к common-* файлы, вместо этого подумайте, какое влияние это окажет на другие системные службы. Помните, common-* действует как универсальный инструмент для большинства конфигураций, и единственная ошибка здесь означает визит к спасательному компакт-диску чтобы снова разблокировать его. Как только вы хорошо поймете, как конфигурация будет взаимодействовать с различными службами, которые зависят от системных настроек по умолчанию, примените ее.

Еще один момент, который следует учитывать, заключается в том, что если вы вносите это изменение в common-* чтобы упростить единый вход для всех служб на коробке, он будет не поймать каждую службу, некоторые службы имеют свою собственную настройку аутентификации, и вам также нужно будет проверить их.

Что касается сообщений консоли, то произошло то, что winbind обращается к вашему контроллеру AD, который обнаруживает чрезмерное количество неудачных попыток входа в систему. После 15 попыток (я считаю, что это стандартный номер, который использует MS) учетная запись блокируется на определенный период времени, если администратор не разблокирует учетную запись. Вот почему вы получаете сообщения «учетная запись заблокирована» при входе в систему - часть winbind вашего стека терпит неудачу при попытках аутентификации, и процесс «проваливается» до следующего шага в стеке.

Я бы внимательно посмотрел на ваши настройки winbind, чтобы определить, что аутентификация действительно успешна. Если вы отправляете учетные данные от члена домена, который не нравится контроллеру AD, не имеет значения, правильный пароль или нет - рано или поздно учетная запись будет заблокирована, потому что запрос исходит от того, что воспринимается как не член домена. Первое, что нужно проверить, - это присоединение winbind к домену, так как это повлияет даже на просмотр учетных данных. Я бы также посмотрел, как ваша административная учетная запись обрабатывается winbind - я, кажется, припоминаю, что для обеспечения правильного поведения требовались одна или две дополнительные настройки (я откопаю их и отредактирую, когда они у меня появятся ... )

Я также рекомендовал бы установить вторичный пароль в локальном Linux-окне, используя /etc/passwd, так что у вас есть проверка подлинности с ошибкой. Если служба winbind не может пройти аутентификацию (и в этом случае она имеет место) /etc/passwd подберет слабину и позволит вам войти. Тот факт, что вы все еще можете войти, похоже, указывает на то, что вы уже сделали это, установив локальный пароль, такой же, как пароль AD для учетной записи, которую вы используете.

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