Перейти к содержанию

rsyslog

rsyslogd, как и его предшественник syslogd собирают логи от различных сервисов и направляют их в log файлы или на удалённые log хосты. Также возможна реализация отправки логов на удалённые хосты для централизации управления и улучшения практик безопасности.

Его основной конфигурационный файл - /etc/rsyslog.conf.

Стандартное расположение лог файлов - /var/log.

Некоторые из log-файлов:

  • boot.log - содержит сообщения загрузки сервисов во время их загрузки

  • ...

FIXME

rsyslog.conf

Секция ## MODULES ## rsyslog.conf позволяет включать/отключать особые фичи в rsyslog. Пример такой секции в Debian 10:

#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
#module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")

Записи $ModLoad определяют загружаемые модули. Отключаются модули путём комментирования этой записи (# в начале).

Секция ## RULES ## перечисляет правила по которым rsyslog будет собирать логи.

Пример этой секции в Debian 10:

###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log
#alert                          /dev/console


#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err

#
# Some "catch-all" log files.
#
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg                         :omusrmsg:*

Записи в этой секции имеют две колонки: левая - определяет какие сообщения будут попадают под правило, правая - место, куда эти сообщения будут сбрасываться.

Сообщения определяются основываясь на сервисе (daemon, kern, user, mail и т.п.) и приоритете (начиная от debug, info, notice, продолжая warn и error, и заканчивая crit, alert и emerg), которые разделяются "." (точкой). Получается, что запись mail.warn определяет все сообщения от сервиса mail уровня warn и выше.

Стандартно все сообщения направляются в локальные файлы в /var/log. Но существует возможность перенаправить их на какое-либо устройство, например /dev/console, или на удаленный хост логирования. Значок "@" указывает имя хоста логирования (например, @log.ak.ru).

Примеры использования модулей

FIXME

Использование удалённого loghost'а с rsyslog

Для использования rsyslog для отправки логов на другую машину необходимо произвести изменения конфигурации с обоих сторон (сервера и клиента).

Со стороны клиента

Чтобы отправлять логи на удалённую машину, заместо файла, необходимо внести изменения в rsyslog.conf со стороны клиента. Во второй колонке секции rules заместо файла необходимо указать адрес удалённого лог-сервера через @, например:

authpriv.*                         /var/log/secure
# UDP is used in that case:
authpriv.*                         @log.ak.ru
# TCP is used in that case:
authpriv.*                         @@log.ak.ru

В конкретном случае логи данного типа будут сохранятся и на локальной машине, и на удалённом сервере.

Со стороны сервера

На сервере необходимо разрешить приём сообщений на стандартном 514 порту TCP/UDP, для этого нужно:

  • Изменить rsyslog.conf, раскоментировав строки, подгружающие imudp и imtcp модули:

    # Module UDP
    module(load="imudp")
    input(type="imudp" port="514")
    # Module TCP:
    module(load="imtcp")
    input(type="imtcp" port="514")
    

  • Открыть необходимые порты на вашем системном фаерволе (iptables или firewalld).

  • Перезапустить сервис rsyslog systemctl restart rsyslog.

  • Проверить, что сервер слушает на необходимых нам портах:

    # netstat -tunlp | grep 514
    tcp    0   0 0.0.0.0:514     0.0.0.0:*        LISTEN      1264/rsyslogd
    tcp6   0   0 :::514          :::*             LISTEN      1264/rsyslogd
    udp    0   0 0.0.0.0:514     0.0.0.0:*                    1264/rsyslogd
    udp    0   0 :::514          :::*                         1264/rsyslogd
    

Дополнительно

man'ы
Связанные материалы
Литература

...