Использование syslog

syslog - стандарт отправки сообщений о происходящих в системе событиях (логов), использующийся в компьютерных сетях, работающих по протоколу IP. Настройка syslog производится через файл syslog.conf. syslog использует порт UDP 514.

Протокол syslog прост: отправитель посылает короткое текстовое сообщение, размером меньше 1024 байт получателю сообщения. Получатель при этом носит имя «syslogd», «syslog daemon», либо же, «syslog server». Сообщения могут отправляться как по UDP, так и по TCP. Как правило, такое сообщение отсылается в открытом виде. Тем не менее, используя специальные средства (такие, как Stunnel, sslio или sslwrap), возможно шифрование сообщений и отправка их по Что такое SSL сертификат для сайта, почты/TLS. Syslog используется для удобства администрирования и обеспечения информационной безопасности. Он реализован под множество платформ и используется в множестве устройств. Поэтому, использование syslog позволяет обеспечить сбор информации с разных мест и хранение её в едином репозитории.

  • Командный интерфейс к syslog — logger
    # logger -p local0.notice -t HOSTIDM -f /dev/idmc
  • По умолчанию syslogd сбрасывает на диск (sync) файлы журналов всякий раз после записи в них системного сообщения. Вы можете отключить сброс, поставив перед именем файла в файле /etc/syslog.conf знак "минус". Например:
    *.info;mail.none;authpriv.none                  -/var/log/messages

    В случае аварии системы, сообщение о возникшей проблеме, скорее всего, не будет записано на диск.

Примеры настроек syslog.conf

Файл syslog.conf служит для настройки протокола Использование syslog. После любых изменений в конфигурационном файле демон syslogd должен быть перезапущен, например так

/etc/rc.d/syslogd restart

Как показывает практика, оптимальней новые записи добавлять в начало файла.

По умолчанию Руководство по iptables: Настройка и оптимизация фаервола Linux логи записывает в журналы /var/log/messages, /var/log/syslog, и /var/log/kern.log. Настроим протоколирование iptables в отдельный файл iptables.log. Уровень протоколирования выбран –log-level INFO

Алгоритм изменений syslog:

  1. указываем сообщения ядра уровня INFO записывать в дополнительный файл: kern.info /var/log/iptables.log
  2. вывод в файлы syslog, kern.log блокируем: kern.!=info
# touch /var/log/iptables.log
# nano /etc/rsyslog.d/50-default.conf
kern.info                       /var/log/iptables.log
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none;\
        kern.!=info             -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*;kern.!=info              -/var/log/kern.log
...
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none;kern.!=info              -/var/log/messages
...
# service rsyslog restart

Для удобства введем общий префикс IPT: для правил iptables. По этому префиксу демон syslog будет определять что эта искомая строка и запишет согласно правилу в нужный нам файл iptables.log.

$IPT -A FORWARD -m limit --limit 3/m --limit-burst 5 -j LOG --log-level INFO --log-prefix "IPT: "
$IPT -A INPUT -m limit --limit 3/m --limit-burst 5 -j LOG --log-level INFO --log-prefix "IPT: IN_ETH0: "

Создадим правила в /etc/rsyslog.d/iptables.conf

iptables.conf
:msg, contains, "IPT: " -/var/log/iptables.log
& ~

Где параметр & ~ говорит о том что дальнейшую обработку записи производить не надо, следовательно она не попадет в другие файлы логов "IPT: " — log-prefix — критерий с которого начинается запись лога, чтобы rsyslog смог ее отловить и перенаправить в нужный файл. Его можно сделать разным для каждого правила, но если правило не одно, то удобнее иметь общий префикс для всех правил. /var/log/iptables.log — файл в который писать лог. rsyslogd Property-Based Filters

service rsyslog restart
iptables
/var/log/iptables.log
{
        rotate 10
        daily
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                reload rsyslog >/dev/null 2>&1 || true # for Debian
                invoke-rc.d rsyslog reload > /dev/null # for RHEL
                service rsyslog reload > /dev/null # for CentOS
        endscript
}
PQ VPS сервера в 28+ странах.