syslog - стандарт отправки сообщений о происходящих в системе событиях (логов), использующийся в компьютерных сетях, работающих по протоколу IP. Настройка syslog производится через файл syslog.conf. syslog использует порт UDP 514.
Протокол syslog прост: отправитель посылает короткое текстовое сообщение, размером меньше 1024 байт получателю сообщения. Получатель при этом носит имя «syslogd», «syslog daemon», либо же, «syslog server». Сообщения могут отправляться как по UDP, так и по TCP. Как правило, такое сообщение отсылается в открытом виде. Тем не менее, используя специальные средства (такие, как Stunnel, sslio или sslwrap), возможно шифрование сообщений и отправка их по Что такое SSL сертификат для сайта, почты/TLS. Syslog используется для удобства администрирования и обеспечения информационной безопасности. Он реализован под множество платформ и используется в множестве устройств. Поэтому, использование syslog позволяет обеспечить сбор информации с разных мест и хранение её в едином репозитории.
# logger -p local0.notice -t HOSTIDM -f /dev/idmc
*.info;mail.none;authpriv.none -/var/log/messages
В случае аварии системы, сообщение о возникшей проблеме, скорее всего, не будет записано на диск.
Файл 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:
# 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
:msg, contains, "IPT: " -/var/log/iptables.log & ~
Где параметр & ~ говорит о том что дальнейшую обработку записи производить не надо, следовательно она не попадет в другие файлы логов "IPT: " — log-prefix — критерий с которого начинается запись лога, чтобы rsyslog смог ее отловить и перенаправить в нужный файл. Его можно сделать разным для каждого правила, но если правило не одно, то удобнее иметь общий префикс для всех правил. /var/log/iptables.log — файл в который писать лог. rsyslogd Property-Based Filters
service rsyslog restart
/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 }