syslog-ng для централизованного сбора логов: сервер, клиенты, фильтры и TLS
Центральный syslog-сервер удобен тем, что журналы остаются доступными даже после сбоя или компрометации отдельного устройства. Но просто открыть UDP/514 и складывать всё в один файл — плохая production-схема.
Устанавливаем syslog-ng
sudo apt update
sudo apt install syslog-ngСетевой источник
source s_network {
network(
ip("0.0.0.0")
port(514)
transport("udp")
);
};UDP прост и совместим почти со всем сетевым оборудованием, но не гарантирует доставку. Если отправитель поддерживает TCP или TLS, для важных журналов лучше использовать их.
Разделяем журналы по хостам
destination d_hosts {
file("/var/log/remote/${HOST}/${YEAR}-${MONTH}-${DAY}.log"
create_dirs(yes));
};
log {
source(s_network);
destination(d_hosts);
};Ограничьте доступ firewall
Не публикуйте syslog-порт в интернет. Разрешайте подключение только из своих VLAN, VPN или адресов управляемого оборудования.
Ротация обязательна
Удалённые журналы могут быстро заполнить диск. Настройте retention через logrotate или собственную политику хранения и отдельно контролируйте свободное место.
TLS для недоверенной сети
Если логи проходят через сеть, где возможен перехват или подмена, настройте TLS с проверкой сертификатов. Это особенно важно для административных и security-событий.
Проверка
logger -n 192.0.2.10 -P 514 -d "syslog test"
sudo find /var/log/remote -type f -mmin -5После запуска проверьте не только появление файла, но и hostname, timestamp и отсутствие потерь при высокой нагрузке.