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

Как запретить системному журналу прослушивать 514 на CentOS 5.8

У меня есть машина CentOS 5.8 (с обычным системным журналом), которая по какой-то причине слушает порт 514, хотя она не запускается с «-r» (для получения сообщений удаленного системного журнала).

# netstat -tulpn | grep 514
udp        0      0 0.0.0.0:514       0.0.0.0:*  2698/syslogd  

Системный журнал запускается только с "-m 0":

ps -ef | grep syslogd
root      2698     1  0 15:55 ?        00:00:00 syslogd -m 0

Я пробовал запустить его с "-m 0 -r", просто чтобы проверить, есть ли разница, но ее нет.

Этот компьютер является клиентом и должен регистрироваться только на центральном сервере журналов - он не должен прослушивать сам себя.

Что мне не хватает?

Я только что нашел это: https://bugzilla.redhat.com/show_bug.cgi?id=137205. Из последнего комментария, сделанного в 2010 году, похоже, что это ошибка 2004 года, которая до сих пор не исправлена ​​(прошло всего 8 лет ...)

Я только что провел небольшое тестирование, и хотя порт определенно открыт syslogd, не похоже, что он на самом деле обрабатывает или регистрирует любую направленную на него активность по UDP 514. Вы можете проверить это, отправив данные с помощью netcat:

topher@nexus:~$ nc -u localhost 514
This is a test.
This is another test.
^C

А затем проверьте файл журнала. Я тестировал его на двух боксах RHEL5, и если -r не используется, он не будет обрабатывать журналы.

Обновить: Другое решение (или, на самом деле, обходной путь), о котором я только что подумал, - это установить rsyslog (или syslog-ng) в качестве демона syslog на замену для sysklogd по умолчанию. Ни один из этих альтернативных демонов системного журнала не страдает описанной выше ошибкой.

rsyslog является демоном системного журнала по умолчанию с RHEL 6.x и доступен как поддерживаемый пакет для RHEL / CentOS 5.2+. rsyslog находится в активной разработке (sysklogd - нет, и не было уже много лет). rsyslog также поддерживает множество дополнительных функций и возможностей. Как уже упоминалось, с RHEL / CentOS 5.2+ переключиться со стандартного syslogd на rsyslog так же просто, как yum install rsyslog.

Если вы решили заменить демон syslog и хотите что-то более чистое и гибкое (на мой взгляд), стоит взглянуть на Syslog-NG. Конфигурационный файл не поддерживает обратную совместимость со старым syslog.conf (rsyslog делает), поэтому на первый взгляд это может показаться немного сложным, но для сложных или расширенных настроек ведения журнала (особенно на центральном хосте журнала) Syslog-NG - отличный выбор.

Это довольно странно. Я тестировал свою виртуальную машину Centos 5.8 и не вижу проблемы, которую вы описываете. Добавление -r добавляет порт udp, а удаление -r и перезапуск удаляет его. У меня установлен sysklogd-1.4.1-46.el5, если это поможет.

GNU syslogd (также известный как sysklogd) является частью inetutils. Я связался с источником, чтобы показать условия, при которых он привязывается к порту UDP:

  • голова около 3/2012 (на основе 1.9.1). Это проверка AcceptRemote, который устанавливается только тогда, когда syslogd вызывается с -r.

  • v1.6 с 2007 г.. В добавок к -r/AcceptRemote случае выше, он также будет связываться, когда NoForward является не устанавливать. Это по умолчанию. Я подозреваю, что вы используете эту версию или что-то в этом роде. В парсере опций есть только длинный вариант чтобы отключить его, --no-forward, и, очевидно, это нарушает необходимую вам функциональность.

И, наконец, спрятавшись здесь, я дам реальный ответ: любое время, потраченное на настройку GNU syslogd, лучше было бы потратить на замену его чем-то другим. Счастливой Пасхи :-)