Я пытаюсь включить аутентификацию 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 ...
общий счет
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
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
# 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
.