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

rsyslog не записывает удаленные сообщения в файл журнала с определенного хоста

Я установил сервер rsyslog (на основе CentOS 6), который отлично работает с некоторыми удаленными хостами. Но когда я добавил межсетевой экран Cisco ASA, он записывает свои сообщения!

Rsyslog.conf выглядит следующим образом:

# rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

#### GLOBAL DIRECTIVES ####
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

Конфигурационный файл выглядит следующим образом:

##RSYSLOG configuration file for Remote Logs
$FileCreateMode 0640 
$template PerHostLog,"/var/log/remote/%HOSTNAME%.log"

if ($fromhost-ip startswith '10.1.5' or $fromhost-ip startswith '10.2.8') then -?PerHostLog
& ~

Что-то не так с этими правилами? TCPdump показывает, что сообщения от хоста 10.2.8.1 достигают сервера, но системный журнал решил их игнорировать. Зачем??

Я решил это. Это была ошибка маршрутизации (!). Серверу не удалось связаться с отправителем сообщения, следовательно, сообщение не было обработано из rsyslog ... Давайте разберемся ...

У меня была такая же проблема. Получение логов с десятков устройств ASA, но не с конкретного. Tcpdump показал, что пакеты пришли. Моя проблема заключалась в том, что ядро ​​фильтровало свои пакеты. Решено путем изменения этих двух ключей в /etc/sysctl.conf:

net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0

Мне пришлось перезапустить сервер, потому что sysctl -p возвращал ошибки из пары ключей, которые я не хотел изменять.

Я верю, что знаю твой ответ:

http://www.rsyslog.com/doc/rsconf1_allowedsender.html

 $AllowedSender UDP, 127.0.0.0/8, [::1]/128, 10.1.5.0/24, 10.2.8.0/24

Прочитав достаточное количество документации, я подтверждаю, что сообщения действительно получаются, а затем уточняю правила фильтров / соответствия.

Пожалуйста, дайте мне знать, если / как вы это исправите; вы определенно возбудили мое любопытство.

Удачи.

У меня была такая же проблема. Еще больше сбивает меня с толку, потому что я не только знал, что информация поступает на порт 514 сервера через TCP (я использовал tcpdump для определения этого), но я также подключился к порту 514 и набрал текст и увидел, что это занесено в соответствующий журнал файл, как определено в /etc/rsyslog.conf. Однако, когда другой компьютер в сети будет передавать информацию файла журнала на порт 514, он не появится.

Я попробовал все, что было упомянуто выше, но все равно не сработало. У меня был открыт TCP-порт 514 на интерфейсе, по которому эти две машины обмениваются данными. Просто догадываясь, я модифицировал свой брандмауэр, чтобы разрешить UDP-порт 514, и бум, он сразу начал работать.

Я предполагаю, что обычный текст немедленно выгружается в файл, без вопросов. Текст / данные, отформатированные от клиента rsyslog, распознаются и обрабатываются иначе, чем просто текст, и ТРЕБУЕТСЯ связь через порт 514 UDP между двумя машинами в сети. Это не интуитивно понятно, потому что по умолчанию (я использую centos7) файл /etc/rsyslog.conf имеет два раздела, один для UDP и один для TCP, оба закомментированы, что позволяет предположить, что у вас есть выбор, который использовать. По-видимому, оба обязательный.

Просто хотел выложить это на тот случай, если в будущем это сбьет кого-нибудь еще. Как указано выше, не имеет смысла, что у rsyslogd будет что-либо для исходящей связи с хостом, предоставляющим информацию журнала на сервер, но, возможно, rsyslogd просто проверяет, доступен ли хост и существует в сети через UDP, прежде чем он обработает Строка только что полученных данных в формате системного журнала.