SSH - 1 зависает при «Входе в интерактивный сеанс» (не DNS; возможно, связанный с SELinux)

9

У меня проблема с CentOS 6.7, когда SSH-логины на 1 с больше, чем на любых машинах, отличных от 6.7, в этой сети (например, 7.2, 5.11). Запуск отладки на стороне клиента показал зависание на «Вход в интерактивный сеанс».

Команда, на которой я основываю этот тест, взята time ssh <host> trueс моего ноутбука с использованием ключей SSH.

Две вещи, которые я уже проверил / изменил: UseDNSи GSSAPIAuthentication, и обе отключены.

Я запустил отдельный демон на другом порту с включенной отладкой и обнаружил, где происходит короткое зависание:

debug1: SELinux support enabled
debug3: ssh_selinux_setup_exec_context: setting execution context

{1s hang}

debug3: ssh_selinux_setup_exec_context: done

SELinux установлен в «разрешающий». Я не уверен, почему это могло бы вообще беспокоить "установление контекста". Есть ли способ, чтобы эти два лучше ладили без полного отключения SELinux? Я понимаю, что 1-е - это не много, но я использую эту конкретную машину в качестве шлюза SSH для хостов с белыми IP-адресами (это статическая IP-машина), и это накапливается в течение дня.

После запуска strace зависание становится немного более гранулированным:

22:16:05.445032 open("/selinux/user", O_RDWR|O_LARGEFILE) = 4 <0.000090>
22:16:05.445235 write(4, "unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 unconfined_u", 56) = 56 <0.334742>
22:16:05.780128 read(4, "18\0unconfined_u:system_r:prelink_mask_t:s0-s0:c0.c1023\0unconfined_u:system_r:unconfined_mount_t:s0-s0:c0.c1023\0unconfined_u:system_r:abrt_helper_t:s0-s0:c0.c1023\0unconfined_u:system_r:oddjob_mkhomedir_t:s0-s0:c0.c1023\0unconfined_u:system_r:unconfined_notrans_t:s0-s0:c0.c1023\0unconfined_u:system_r:unconfined_execmem_t:s0-s0:c0.c1023\0unconfined_u:system_r:unconfined_java_t:s0-s0:c0.c1023\0unconfined_u:system_r:unconfined_mono_t:s0-s0:c0.c1023\0unconfined_u:system_r:chkpwd_t:s0-s0:c0.c1023\0unconfined_u:system_r:passwd_t:s0-s0:c0.c1023\0unconfined_u:system_r:updpwd_t:s0-s0:c0.c1023\0unconfined_u:system_r:mount_t:s0-s0:c0.c1023\0unconfined_u:system_r:rssh_t:s0-s0:c0.c1023\0unconfined_u:system_r:xauth_t:s0-s0:c0.c1023\0unconfined_u:system_r:unconfined_t:s0-s0:c0.c1023\0unconfined_u:system_r:openshift_t:s0-s0:c0.c1023\0unconfined_u:unconfined_r:oddjob_mkhomedir_t:s0-s0:c0.c1023\0unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023\0", 4095) = 929 <0.000079>

Запись в /selinux/userодиночку занимает 350 мс.

Обновление 1 - вещи, которые я с тех пор попробовал :

  • Обновление. Многие из ящиков требуют обновления. Это не оказало существенного влияния на время входа в систему.
  • semodule -d unconfined- Это дало положительный эффект, сократив время входа примерно на 500 мс. Тем не менее, мои блоки C7 и C5.11 (которые я с тех пор узнал (отключил) SELinux отключен) в среднем ~ 525 мс
  • Сравнение моих машин C6.7 - Оказывается, 64-битные блоки работают быстрее, чем мои 32-битные. Может быть, для некоторых это «скучный» момент, но поскольку ни одна из этих коробок не облагается налогом, я не ожидал отклонения в 100-300 мс. Мне удалось преодолеть отметку 1 с (850 мс) на одном из 64-битных хостов. Самый низкий на 32 бита был 1.085 с

Я слишком много спрашиваю? Является ли 10-1200 мс приемлемым временем входа в систему для компьютеров с разрешением selinux? Любопытно, каковы оценки других людей.

Morgon
источник
Проверьте ваши системные журналы.
Майкл Хэмптон
У меня ... К сожалению, ничего заслуживающего внимания messagesилиsecure
Моргон
@ Morgon: Вы проверяли, запускаете ли вы что-то вроде «fail2ban» - fail2ban.org - на этой машине и / или если вы настроили «iptables» каким-то образом, который может выполнять какое-то «ограничение скорости» для входящие SSH-соединения в зависимости от исходного IP-адреса?
ricmarques
4
Если журналы не помогают, вы, вероятно, должны использовать straceи посмотреть, на каком вызове он висит.
Андрей B
1
Спасибо, @AndrewB. Я разместил это здесь: pastebin.com/raw/3c08tcMd . если вы ищете «/ selinux / user», вы увидите время ожидания 1s при попытке записи в этот файл. - Пройдя по этому пути, я обнаружил пост, связанный с ограниченным доступом об отключении «неограниченных» доменов ( bugzilla.redhat.com/show_bug.cgi?id=811656#c9 ). Это позволяет мне экономить ~ 0,5 секунды после входа в систему, но все же на 0,5 секунды медленнее, чем Cent7 / FC4. Тем не менее, по-прежнему надеюсь, что, если возможно, это будет последним достижением.
Моргон

Ответы:

1

Это может быть не связано, но медлительность, связанная с selinux, описана для учетных записей на основе IPA здесь: https://access.redhat.com/discussions/3499951

Решение для этого случая:

Я заглянул на форумы пользователей SSSD и IPA, и поскольку мои системы не используют SELINUX, я добавил это в раздел домена в конфигурации sssd:

selinux_provider=none

После этого процесс входа в систему происходит немедленно, как и ожидалось.

chutz
источник