5

Из другой ветки здесь, на Stack Exchange, я обнаружил, что довольно просто включить syslogd на Lion или Mountain Lion для приема входящих соединений.

cd /System/Library/LaunchDaemons
sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener dict" com.apple.syslogd.plist
sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener:SockServiceName string syslog" com.apple.syslogd.plist
sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener:SockType string dgram" com.apple.syslogd.plist
sudo launchctl unload com.apple.syslogd.plist
sudo launchctl load com.apple.syslogd.plist

Проблема, однако, заключается в том, что, когда мой маршрутизатор отправляет сообщения в syslogd, они появляются в консоли на OS X как поступающие из неизвестного - например:

5/3/13 9:19:40.000 AM Unknown[-1]: [WAN-IN-6-A]IN=eth2 OUT=eth0 SRC=141.133.142.260 DST=10.0.00.10 LEN=64 TOS=0x00 PREC=0x00 TTL=53 ID=30298 DF PROTO=TCP SPT=60553 DPT=443 WINDOW=65535 RES=0x00 SYN URGP=0 

Принимая во внимание, что в сообщении журнала с локального компьютера указан отправитель: 03.05.13 7: 38: 20.155 AM kdc [67]: ссылка LKDC на реальное имя области LKDC

Запуск tcpdump на удаленном хосте журнала показывает, что сообщения отправляются с большей информацией, чем показано в консоли:

    router.example.com.38236 > server.example.com.syslog: SYSLOG, length: 258
Facility kernel (0), Severity warning (4)
Msg: May  3 09:12:39 router kernel: [WAN-LOCAL-default-D]IN=eth2 OUT= MAC=dc:ca:fe:ba:be:17:00:21:a0:ce:66:d9:07:00 SRC=86.86.123.381 DST=130.168.365.128 LEN=60 TOS=0x00 PREC=0x00 TTL=39 ID=26555 DF PROTO=TCP SPT=46635 DPT=62615 WINDOW=5840 RES=0x00 SYN URGP=0 

09:12:45.557613 IP (tos 0x0, ttl 64, id 0, смещение 0, флаги [DF], прото UDP (17), длина 286)

Может кто-нибудь направить меня к тому, как настроить системный журнал на сервере OS X Mountain Lion, чтобы распознавать отправителя во входящих сообщениях журнала и классифицировать их соответствующим образом?

1 ответ1

1

Я полагаю, что уже слишком поздно для OP, но я могу сообщить о своем недавнем опыте с OS X 10.10 Yosemite.

Похоже, вы не можете настроить syslogd в OS X для непосредственного распознавания отправителя. Фактически, как только сообщения журнала были получены в ASL (Apple System Log), единственный способ их распознать - это то, что у них есть несколько бессмысленных ключей: PID - 0xFFFFFFFF+1, GID и UID - 0xFFFFFFFF+2. Конечно, эта аномалия позволяет вам косвенно распознавать UDP-сообщения, поэтому вы можете просто получить их с такими ключами. Но, тем не менее, вы не сможете отличить лог-сообщения, приходящие от двух разных источников UDP.

Можем ли мы что-то сделать с сообщениями, прежде чем они попадут в ASL? Я не нашел никакого способа, и я не думаю, что есть возможность, потому что режим отладки в syslogd/ASL показывает, что анализ сообщения уже сделан функцией ASL.

Обратите внимание, что я проводил тесты, используя маршрутизатор DD-WRT (который является Linux) в качестве источника системного журнала UDP, и я не пытался проверять непосредственно содержимое пакетов UDP; возможно, проблема в том, что DD-WRT отправляет искаженные пакеты. ... хотя я сомневаюсь в этом.

Кроме того, я бы сказал, что syslogd/ASL в OS X довольно сложный и содержит ошибки (я уже отправил отчет об ошибке). Поэтому я бы порекомендовал пройти по ним и попробовать syslog-ng. Это будет мой следующий шаг.

Если вы все еще хотите попробовать syslogd для OS X, я написал обо всей настройке в своем блоге, в том числе о том, как сбросить все входящие UDP-сообщения в их собственный автоматически повернутый файл журнала.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .