Настройка syslog сервера windows

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Популярное и похожее

Курс по сетям

Что такое Active Directory и LDAP?

URL и URI — в чем различие?

Погружение в Iptables – теория и настройка

Полиалфавитные криптосистемы

SOAP — протокол имени мыльной оперы

rConfig — резервное копирование конфигов сетевого оборудования

В чем разница между HTTP и HTTPS?

Еженедельный дайджест

Syslog протокол — серверы, сообщения и безопасность

4 минуты чтения

Протокол Syslog — это способ для сетевых устройств отправлять сообщения о событиях на сервер регистрации — обычно известный как Syslog сервер. Этот протокол поддерживается широким спектром устройств и может использоваться для регистрации различных типов событий. Например, маршрутизатор может отправлять сообщения о том, что пользователи подключаются через консоль, а веб-сервер может регистрировать события, в которых отказано в доступе.

Обучайся в Merion Academy

Пройди курс по сетевым технологиям

Начать

Большинство сетевых устройств, таких как маршрутизаторы и коммутаторы, могут отправлять сообщения системного журнала. Кроме того, серверы *nix также могут генерировать данные системного журнала, как и большинство брандмауэров, некоторые принтеры и даже веб-серверы, такие как Apache. Серверы на базе Windows изначально не поддерживают Syslog, но большое количество сторонних инструментов позволяет легко собирать данные журнала событий Windows или IIS и пересылать их на сервер Syslog.

В отличие от SNMP, Syslog не может использоваться для «опроса» устройств для сбора информации. Например, SNMP имеет сложную иерархическую структуру, которая позволяет станции управления запрашивать у устройства информацию о таких вещах, как данные о температуре или доступное дисковое пространство. Это невозможно с Syslog — он просто отправляет сообщения в центральное место, когда инициируются определенные события.

Syslog серверы

Syslog — отличный способ объединить логи из нескольких источников в одном месте. Как правило, большинство серверов Syslog имеют несколько компонентов, которые делают это возможным.

  • Syslog слушатель: Syslog сервер должен получать сообщения, отправленные по сети. Процесс прослушивания собирает данные системного журнала, отправленные через 514 UDP порт. Как мы знаем UDP-сообщения не подтверждаются или не гарантируются, поэтому имейте в виду, что некоторые сетевые устройства будут отправлять данные Syslog через 1468 TCP порт для обеспечения доставки сообщений.
  • База данных: большие сети могут генерировать огромное количество данных syslog’а . Хорошие серверы будут использовать базу данных для хранения логов для быстрого поиска.
  • Программное обеспечение для управления и фильтрации: из-за больших объемов данных иногда бывает сложно найти конкретные записи в журнале. Решение состоит в том, чтобы использовать syslog сервер, который автоматизирует часть работы и позволяет легко фильтровать и просматривать важные сообщения журнала. Серверы должны иметь возможность генерировать оповещения, уведомления и алерты в ответ на выбранные сообщения, чтобы администраторы сразу узнавали, когда возникла проблема, и могли предпринять быстрые действия

Syslog сообщения

Сообщения системного журнала обычно содержат информацию, помогающую определить основную информацию о том, где, когда и почему был отправлен лог: IP-адрес, отметка времени и фактическое сообщение.

Системный журнал использует концепцию, называемое “facility”, чтобы идентифицировать источник сообщения на любом компьютере. Например, facility “0” будет сообщением ядра, а facility «11» будет сообщением FTP. Это восходит своими корнями к syslog’а UNIX. В большинстве сетевых устройств Cisco используются коды объектов «Local6» или «Local7».

Syslog сообщения также имеют поле уровня серьезности. Уровень серьезности указывает, насколько важным считается сообщение. Серьезность «0» является чрезвычайной ситуацией, «1» — это предупреждение, которое требует немедленных действий, а шкала продолжается вплоть до «6» и «7» — информационных и отладочных сообщений.

0 Emergency Система не работоспособна
1 Alert Система требует немедленного вмешательства
2 Critical Состояние системы критическое
3 Error Сообщения об ошибках
4 Warning Предупреждения о возможных проблемах
5 Notice Сообщения о нормальных, но важных событиях
6 Informational Информационные сообщения
7 Debug Отладочные сообщения
Недостатки syslog

У протокола syslog есть несколько недостатков.

Во-первых, проблема согласованности. Протокол Syslog не определяет стандартный способ форматирования содержимого сообщения — и существует столько же способов форматирования сообщения, сколько существует разработчиков. Некоторые сообщения могут быть удобочитаемыми, а некоторые нет. Syslog это не волнует — он просто предоставляет способ передачи сообщения.

Читайте также:  Антивирус для линукса нужен или нет

Есть также некоторые проблемы, которые возникают из-за того, что syslog использует UDP в качестве транспорта — поэтому возможно потерять сообщения из-за перегрузки сети или потери пакетов.

Наконец, есть некоторые проблемы безопасности. В сообщениях syslog’а нет аутентификации, поэтому один компьютер может выдать себя за другой компьютер и отправить ложные события журнала. Он также подвержен повторным атакам.

Несмотря на это, многие администраторы считают, что syslog является ценным инструментом, и что его недостатки относительно незначительны.

Настройка syslog сервера windows

Visual Syslog Сервер для Windows

Visual Syslog Сервер для Windows это программа для получения и просмотра сообщений syslog. Программа бесплатная с открытым исходным кодом. Лицензия GPL V2. Visual Syslog Сервер удобен для настройки серверов, маршрутизаторов и встраиваемых систем на базе Unix/Linux. Все что надо сделать — это перенаправить поток сообщений syslog на компьютер с установленным Visual Syslog Сервером. Установка Visual Syslog выполняется за 1 минуту, настройка не требуется.

  • Получение сообщений от различных источников по протоколу UDP или TCP (в соответствии со стандартом RFC 3164)
  • Полученные сообщения отображаются немедленно
  • Сохранение сообщений в текстовых файлах на диске
  • Возможность сохранять разные сообщения в разные файлы
  • Разбивка сохраненных файлов на части по достижении указанного размера или по времени накопления
  • Фильтрация отображаемых сообщения по коду, приоритету, наименованию узла, адресу источника, тэгу или содержимому сообщения
  • Настраиваемое цветовое выделение сообщений
  • Формирование различных извещений в зависимости от содержимого сообщения:
    • Показ окна с предупреждением
    • Проигрывание звукового файла
    • Отправка электронной почты на указанный адрес
    • Немедленная доставка извещений на мобильные устройства Android / iPhone: Поддержка отправки электронной почты через SMTP сервера Gmail и iCloud с авторизацией SSL / TLS. При приходе почтового сообщения в ящик Gmail или iCloud, немедленное извещение поступит на мобильное устройство.
    • Настраиваемый формат извещений
  • Выполнение действий в зависимости от содержимого сообщения:
    • Выполнение выбранной программы с параметрами
    • Сохранение сообщения в выбранный файл
  • Высокая скорость работы
  • Выполняется как обычное приложение Windows с показом значка в панели задач
  • Поддерживает операционные системы Windows XP/Vista/7/8/8.1, Windows Server 2003/2008/2012
  • Загрузка истории сообщений после запуска программы
  • Поддержка кодировки UTF8 в тексте сообщения
  • Просмотр сообщений syslog из файла на диске

После установки Visual Syslog Сервер для Windows сразу готов к работе: настройка не требуется. По умолчанию ожидает сообщений на портах 514 UDP и 514 TCP. Программа установки добавляет исключения брандмауэра для Visual Syslog Сервер.

Компиляция из исходного кода

Для компиляции Syslog Сервера из исходных кодов используйте CodeGear RAD Studio C++Builder 2007
Файл проекта visualsyslog.cbproj
Требуются дополнительные компоненты: Indy.Sockets (VCL) version 10

Для компиляции программы установки используйте Inno Setup Compiler 5.5.1(a)
Файл проекта программы установки visualsyslog.iss

Ваши вопросы и предложения по улучшению программы шлите по адресу

Планы на будущее

  • Статистика полученных сообщений: сколько, с какого адреса и т.д.

Настройка цветового выделения сообщений

Основные параметры настройки

Настройка файлов для сохранения сообщений и разбивка их на части

Отправка сообщений электронной почты через SMTP сервер

Настройка syslog-ng для централизованного сбора логов

Мне понадобилось организовать сервер для сбора логов с удаленных устройств. Это могут быть серверы, сетевое оборудование, либо что-то еще, что поддерживает логирование в формате syslog. Я решил использовать не стандартный для большинства дистрибутивов rsyslog, а установить syslog-ng, потому что мне он показался более удобным и простым в настройке.

Введение

Информации на тему сбора логов с удаленных серверов и интернете достаточно много. Ничего сложного тут нет, я и сам уже описывал подобную настройку в статье про сбор логов с mikrotik. Но решение получилось кривоватое, в комментариях написаны замечания. Я и сам знал о них, но простого и быстрого решения я не смог найти, на тот момент меня устраивал и такой вариант. Сейчас же решил все сделать аккуратно и красиво, чтобы было удобно пользоваться. В процессе поиска информации в интернете решил попробовать syslog-ng. С ним у меня не возникло никаких затруднений, сразу получилось то, что требовалось, поэтому я остановил свой выбор на нем.

Настраивать сервер сбора логов будем на системе CentOS 7. Если у вас еще не подготовлен сервер, то читайте мою информацию по установке и базовой настройке centos. Для небольшого количества устройств, нагрузка на сервер будет незначительная, поэтому имеет смысл размещать сервер на виртуальной машине. Если у вас нет готового гипервизора, можете посмотреть мою информацию на тему настройки linux гипервизора proxmox или бесплатного решения microsoft — Windows Hyper-V Server 2016.

Установка и настройка syslog-ng

С установкой нет ничего сложного. Установить syslog-ng можно одной командой:

Сразу переходим к настройке. Файл конфигурации располагается по адресу /etc/syslog-ng/syslog-ng.conf. Чтобы сервер начал принимать логи с удаленного устройства, его необходимо прописать в конфиг. Делается это просто. В самый конец конфигурационного файла добавляем информацию о новом устройстве:

Читайте также:  Missing windows program files
d_xs-zabbix Название назначения для записи лога по адресу /var/log/!remote/xs-zabbix.log
f_xs-zabbix Название фильтра по адресу сервера источника.
10.1.3.29 Адрес сервера источника логов

Соответственно для второго сервера нужно добавить еще 3 строки, например так:

И так далее. Добавляете столько серверов, сколько нужно. Не забудьте создать папку для логов. В моем примере это папка /var/log/!remote, сами файлы создавать не надо, служба автоматически их создаст, когда придет информация с удаленных серверов.

Запускаем syslog-ng и добавляем в автозагрузку:

Проверим, запустилась ли служба:

Все в порядке, слушает 514 udp порт. Не забудьте открыть этот порт в iptables, если у вас включен фаерволл. Сервер готов к приему логов.

Отправка логов syslog на удаленный сервер

Теперь идем на добавленные в syslog-ng сервера и настраиваем там отправку логов на наш сервер. Сделать это очень просто. Открываем файл конфигурации rsyslog. В CentOS он живет по адресу /etc/rsyslog.conf и добавляем туда строку:

10.1.3.22 — ip адрес syslog-ng сервера. Перезапустите rsyslog:

и проверяйте логи на сервере syslog-ng в указанной папке. Правило *.* отправит все логи в указанное направление. Это не всегда нужно, можно отредактировать правила. Для этого надо ознакомиться с документацией по syslog. Там нет ничего сложного, мне не хочется на этом сейчас подробно останавливаться. В интернете есть примеры. Приведу пару своих.

В данном случае у меня по local5.notice идет лог самбы по доступу к сетевой шаре. Мне не нужно собирать эту информацию и я ее отключил. Вот еще пример:

С этого сервера сыпалось много лишней информации уровня debug. Я ограничил отправляемые сообщения уровнем info. И так далее.

Ротация логов syslog-ng

В завершение приведу пример своего правила ротации логов. Рекомендую ротацию настроить сразу, не оставлять на потом. Создаем файл /etc/logrotate.d/syslog-ng

По этому правилу ротация логов происходит раз в день. Старые логи перемещаются в папку /var/log/!remote/old и сжимаются. Хранятся логи за последние 180 дней.

Заключение

Я привел частный случай настройки хранения логов с удаленных устройств. Решение в лоб. В простых случаях этого достаточно. Лично мне удобно смотреть информацию в текстовых файлах. Это требуется редко, сделано на всякий случай для расследования инцидентов, если таковые возникают. Эту же задачу, к примеру, можно решить с помощью заббикс. Я уже показывал, как мониторить с помощью zabbix лог файлы. Приведенное решение легко переделать в хранение логов.

Для более удобного сбора и последующего просмотра информации существуют готовые решения с написанными веб панелями. Я посмотрел на некоторые из них. Что-то мне показалось слишком сложным в настройке, где-то веб интерфейс не понравился. Для себя остановился на приведенном варианте.

Онлайн курс по Linux

Помогла статья? Подписывайся на telegram канал автора

Автор Zerox

32 комментария

нет такой команды yum

как только добавляю 3 строки в conf файл, то сервис не стартует.
что я делаю не так ?

● syslog-ng.service — System Logger Daemon
Loaded: loaded (/usr/lib/systemd/system/syslog-ng.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit) since Ср 2020-07-29 16:48:53 MSK; 3s ago
Docs: man:syslog-ng(8)
Process: 1989 ExecStart=/usr/sbin/syslog-ng -F -p /var/run/syslogd.pid (code=exited, status=2)
Main PID: 1989 (code=exited, status=2)
Status: «Starting up. (Wed Jul 29 16:48:52 2020»

июл 29 16:48:52 syslog.iceberry.local systemd[1]: syslog-ng.service failed.
июл 29 16:48:53 syslog.iceberry.local systemd[1]: syslog-ng.service holdoff time over, scheduling restart.
июл 29 16:48:53 syslog.iceberry.local systemd[1]: Stopped System Logger Daemon.
июл 29 16:48:53 syslog.iceberry.local systemd[1]: start request repeated too quickly for syslog-ng.service
июл 29 16:48:53 syslog.iceberry.local systemd[1]: Failed to start System Logger Daemon.
июл 29 16:48:53 syslog.iceberry.local systemd[1]: Unit syslog-ng.service entered failed state.
июл 29 16:48:53 syslog.iceberry.local systemd[1]: syslog-ng.service failed.
июл 29 16:48:53 syslog.iceberry.local systemd[1]: start request repeated too quickly for syslog-ng.service
июл 29 16:48:53 syslog.iceberry.local systemd[1]: Failed to start System Logger Daemon.
июл 29 16:48:53 syslog.iceberry.local systemd[1]: syslog-ng.service failed.

как только удаляю эти строки, то все ровно стартует, но логов же я не увижу, правильно ?
подскажите пожалуйста.

строки, которые добавляю: (хочу писать лог контроллера unifi)

А что у вас прописано в директиве source для «net»?

Я не вижу такого. Имеете ввиду что слушать ? там стоит 0.0.0.0 port 514

Здравствуйте.
Второй день ломаю голову, пробовал на обоих хостах использовать штатный в Ubuntu 20.04 rsyslog, и в качестве сервера syslog-ng. В обоих случаях добился того что на сервер прилетают в один файл часть системных логов с собираемого хоста, но не все, не могу заставить передавать логи nginx и его виртуальных хостов.

В идеале хотел получить следующее:

Есть хост сервер логов — host1.
Есть хост с которого хочу получать логи — host2.
Есть хост с которого хочу получать логи — host3.

На хостах host2 и host3 крутятся сервисы на nginx. Как заставить прилетать с этих хостов определённые логи, пути к которым известны, на сервер логов host1. Допустим на host2 и host3 крутится Joomla и нужные мне логи лежит по пути:
/var/log/nginx/access.log
/var/log/nginx/joomla_access.log
/var/log/nginx/joomla_access.log.1
/var/log/nginx/joomla_error.log
/var/log/nginx/joomla_error.log.1

Читайте также:  Windows system update server download

Именно их, в таком виде, хочу получать на сервере логов Host1 по пути /var/log/rsyslog/:
nginx_access.log
nginx_joomla_access.log
nginx_joomla_access.log.1
nginx_joomla_error.log
nginx_joomla_error.log.1

В целом не важно что сам Nginx умеет сам передавать свои логи на удалённый syslog сервер, хотелось бы передавать логи один к одному, тех сервисов которые не умеют напрямую передавать логи на удаленный syslog сервер. Возможно ли указывать какой именно лог файл, указав точный путь на удалённом хосте, и передавать его в определённую папку на syslog сервер в определённый файл? Если всё это возможно, киньте пример что скофигурить на сервере и что на хосте. Смысл в том что бы смотреть логи на одной машине в том виде, в котором они формируются на удалённых хостах, один к одному.

Здравствуйте.
Была бы очень полезна статья как все это потом прикрутить к заббиксу. Спасибо

Что именно вы хотите увидеть в заббиксе? Возможно, у меня есть статьи на эту тему.

Я бы хотел заббиксом собирать эти логи и видеть их в заббиксе

Плохая идея. Zabbix не предназначен для хранения логов. Он все же система мониторинга. Если надо хранить логи, лучше использовать ELK или какие-то другие решения под это дело.

Пример того, как лог файлы передавать в zabbix есть в этой статье — https://serveradmin.ru/monitoring-ssh-loginov-v-zabbix/
Может по аналогии любой лог туда отправить. Но еще повторю — если логов много это плохая идея. База заббикса не заточена под хранение большого количества логов. Работать с ними будет неудобно.

А мне интересно, а где определение source (net)? И все повторяют, и у всех все получается. )))))))))))))))))))))))))

Добрый день. Есть ли какой нибудь относительно простой способ добавить веб-гуи к syslog-ng, с авторизацией? Чтобы можно было зайти из любого места и посмотреть логи.

Мне такой неизвестен. В качестве альтернативы предлагаю посмотреть elk stack — https://serveradmin.ru/ustanovka-i-nastroyka-elasticsearch-logstash-kibana-elk-stack/
Я сейчас для сбора логов в основном им пользуюсь.

Добрый день, подскажите пожалуйста, как правильней всего настроить в ELK приём логов по syslog ?

Привет! Сделал всё как Вы написали, всё получилось, но у меня ещё один вопрос, а как можно apache, nginx, mysql и openvpn логов отправить через rsyslog на syslog-ng ?

Читать документацию к каждому из сервисов и смотреть, как настроить отправку логов в syslog формате. Если не ошибаюсь, они все это умеют. Единственное сомнение насчет mysql, не настраивал. А все остальное в syslog отправлял.

Здравствуйте! Спасибо за совет (ответ 🙂 ) настроил отправку логов nginx и apache, как вы уже сказали все они умеют отправить логи на syslog, mysql-а Я не смог настроить. В Интернете больше всего есть статьи по этой теме где syslog тправляет и сохроняет свои логи в mysql 🙂

хорошее описание. Но я бы предпочел более «старый «способ, описанный в http://www.linux-magazin.de/ausgaben/2009/06/zentrale-kontrolle/

destination loghost <
file («/var/log/hosts/$YEAR-$MONTH/$HOST/$FACILITY-$YEAR-$MONTH-$DAY»
owner(root) group(root) perm(0600) dir_perm(0700) create_dirs(yes)
);
удобнее , само сортирует файлы. Работы меньше
01 # Filter/Destination für PIX-Firewall
02 filter f_pix <
03 host(pix);
04 >;
05 # Zielort der Log-Dateien
06 destination loghost <
07 file («/var/log/hosts/$YEAR-$MONTH/$HOST/$FACILITY-$YEAR-$MONTH-$DAY»
08 owner(root) group(root) perm(0600) dir_perm(0700) create_dirs(yes)
09 );
10 >;
11 log <
12 source(s_all);
13 destination(loghost);
14 >;
15 # Pix
16 log <
17 source(s_all);
18 filter(f_pix);
19 destination(loghost);
20 flags(final);
21 >;

Спасибо за материал! Очень интересно и хорошо изложено.
И да, в syslog-ng.conf нужно раскомментировать строку:
#udp(ip(0.0.0.0) port(514));
перед тем как запускать syslog-ng.

Daemon не запускается, остановка и удаление rsyslog как писали выше не помогает:
[root@log]# systemctl restart syslog-ng.service
Job for syslog-ng.service failed because the control process exited with error code. See «systemctl status syslog-ng.service» and «journalctl -xe» for details.

[root@log]# systemctl status syslog-ng.service
● syslog-ng.service — System Logger Daemon
Loaded: loaded (/usr/lib/systemd/system/syslog-ng.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit) since Thu 2018-02-15 17:58:27 MSK; 42s ago
Docs: man:syslog-ng(8)
Process: 2003 ExecStart=/usr/sbin/syslog-ng -F -p /var/run/syslogd.pid (code=exited, status=2)
Main PID: 2003 (code=exited, status=2)
Status: «Starting up. (Thu Feb 15 17:58:27 2018»

Feb 15 17:58:27 log.local systemd[1]: Unit syslog-ng.service entered failed state.
Feb 15 17:58:27 log.local systemd[1]: syslog-ng.service failed.
Feb 15 17:58:27 log.local systemd[1]: syslog-ng.service holdoff time over, scheduling restart.
Feb 15 17:58:27 log.local systemd[1]: start request repeated too quickly for syslog-ng.service
Feb 15 17:58:27 log.local systemd[1]: Failed to start System Logger Daemon.
Feb 15 17:58:27 log.local systemd[1]: Unit syslog-ng.service entered failed state.
Feb 15 17:58:27 log.local systemd[1]: syslog-ng.service failed.
Feb 15 17:58:27 log.local systemd[1]: start request repeated too quickly for syslog-ng.service
Feb 15 17:58:27 log.local systemd[1]: Failed to start System Logger Daemon.
Feb 15 17:58:27 log.local systemd[1]: syslog-ng.service failed.

А в /var/log/messages что-то есть на этот счет? Не понятно, в чем ошибка. Обычно в логе есть информация на эту тему.

Оцените статью