После обновления до Debian 7.4 парольная аутентификация из любой службы займет много времени. Это верно для входа по SSH, sudo'ing и аутентификации с dovecot (который настроен на использование PAM).
Я могу выполнить обратный поиск записей DNS, похоже, это не проблема. Такое ощущение, что у какого-то механизма аутентификации истекло время ожидания. Я попытался включить pam_debug, но не вижу каких-либо выводов отладки.
Вот пример того, сколько времени требуется для выполнения sudo (с запросом пароля, когда sudo кэширует пароль, он работает мгновенно):
ceicke@h1633420:~$ time sudo who
[sudo] password for ceicke:
ceicke pts/0 2014-08-01 09:19 (80.131.XXX.XXX)
real 0m27.976s
user 0m0.009s
sys 0m0.014s
Также мгновенно работает SSHing в ящик с моим закрытым ключом. Так что действительно процесс проверки пароля занимает много времени.
Я немного не понимаю, что еще я могу попробовать, тем более что модуль PAM очень молчит о том, что он делает.
Вот результат работы strace: http://pastebin.com/dRvqsrcd
Есть много звонков time(null)
который, я думаю, получает текущую временную метку Unix. Похоже, что-то активно проверяет тайм-аут.
Я замечаю две вещи:
time(null)
звонку часто предшествует открытый звонок /dev/urandom
, неужели мой сервер ожидает накопления достаточной энтропии?krb5
в разных местах. Я не использую Kerberos для аутентификации, могу я просто вынуть pam_krb5.so
из моих конфигов pam?У меня нет большого опыта подготовки вывода strace, может быть, вы сможете увидеть больше?
Энтропия на сервере довольно низкая, от 100 до 200.
Мой первый совет тоже попробовать strace -f sudo who
. Но это не сработает, поскольку strace не отслеживает программы SUID. Вы должны прикрепиться к своей оболочке, используя strace
так как корень а потом позвони sudo
.
В вашем типе оболочки
$ echo $$
чтобы получить PID вашей оболочки. Затем откройте другой терминал и станьте пользователем root в этом терминале. Там вы вводите
# strace -f -t -T -p $pid -o /tmp/sudo.strace
где $pid
PID, который вы получили от другого терминала. Затем вернитесь к своему первому терминалу и запустите
$ sudo who
После того, как вы получили результат, вернитесь в корневой терминал, остановите процесс strace с помощью CTRL-C и проанализируйте /tmp/sudo.strace
Обновить: Извините, я забыл упомянуть два варианта strace
. С участием -t
он ставит перед каждой строкой время дня и -T
показывает время, затраченное на системные вызовы. Это облегчает поиск точки, в которой он становится медленным.
Обновление 2: Учитывая, что вам не нужен Kerberos, можно отключить pam_krb5. Вы можете прокомментировать это в файлах в /etc/pam.d/, обычно в файлах с именами * common - **. Kerberos нужна некоторая энтропия, и это может быть виновником. Но тем не менее проверьте это предположение, запустив strace
с участием -t
.
И ты должен Изменить пароль, поскольку он доступен для чтения в текстовом файле, который вы загрузили в pastebin.
Итак, выяснилось, что проблема была вызвана Kerberos в сочетании с низкой энтропией. Поскольку я не использовал Kerberos, я запустил pam-auth-update
и невыбранный Kerberos.