Я установил сервер 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, прежде чем он обработает Строка только что полученных данных в формате системного журнала.