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

Centos: rsyslog блокирует sshd, а также локальный вход, если активен selinux

У меня очень любопытная проблема на машине centos 6.5 (теперь 6.6). После обновления между 11 июня и 21 октября начинаются проблемы (пакеты: http://pastebin.com/gXvaycLL). После перезагрузки в октябре не удалось войти на сервер с помощью ssh. Клиент всегда останавливается со следующим сообщением:

ssh_exchange_identification: read: сброс соединения одноранговым узлом

Я попытался войти на сервер напрямую. Сначала я попытался войти в систему с помощью консоли. После ввода пароля сервер отклонил его, сказав «неверный пароль». То же и в графическом режиме. Но пароль был правильным. Теперь я нашел решение: после деактивации selinux, добавив selinux = 0 в bootmanager. Теперь я смог войти в консоль на сервере. Кроме того, мне не удалось войти в систему с помощью ssh (также используя localhost). После этого я редактирую / etc / selinux / config и устанавливаю значение SELINUX с принудительного на разрешающее, чтобы позже отключить. После перезагрузки мне не удалось войти в систему, даже если я отключил. Единственный способ войти в систему - установить selinux = 0. Теперь я нашел злоумышленника: rsyslog. Если я отключу ведение журнала при запуске, все в порядке, примите регистрацию.

Любопытно следующее: все остальные службы, такие как apache и mysql, работают правильно, если запущен rsyslogd.

Вот нижняя часть журнала sshd с использованием debug3:

[...]
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug2: fd 4 setting O_NONBLOCK
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug3: fd 5 is not O_NONBLOCK
debug1: Server will not fork when running in debugging mode.
debug3: send_rexec_state: entering fd = 8 config len 599
debug3: ssh_msg_send: type 0
debug3: send_rexec_state: done
debug1: rexec start in 5 out 5 newsock 5 pipe -1 sock 8
debug1: inetd sockets after dupping: -1, -1
setsockopt SO_KEEPALIVE: Bad file descriptor
debug1: getpeername failed: Bad file descriptor
debug1: get_remote_port failed

Как видите, оба сокета inetd недействительны. Если rsyslog не запускается, есть положительные сокеты и все в порядке.

Я попытался исправить это, переустановив rsyslog (со свежей / неотредактированной конфигурацией), а также переустановив библиотеки selinux. Я также сделал обновление с centos6.5 до актуальной версии 6.6. Кто-нибудь знает, как я могу исправить эту проблему?

Спасибо Марлону Режису Шмитцу за подсказку к билету на centos.org: bugs.centos.org/view.php?id=7812

Здесь я нашел решение. Я удалил пакет prelink. После повторной активации rsyslog и перезагрузки системы ssh и логин теперь работают правильно.

В prelink Пакет включает программу, которая выполняет предварительную обработку исполняемых файлов и библиотек, чтобы уменьшить нагрузку на процессор и ускорить загрузку программ. Также можно создать черный список для некоторых исполняемых файлов и библиотек, но я не пробовал.

У меня такая же проблема с OEL 6, и я обнаружил, что основной причиной является следующий патч:

nss-softokn-freebl-3.14.3-17.el6.x86_64.rpm

После обновления я не могу войти через ssh.

Спасибо за ваш пост, он был полезен.