как подделать имя хоста в сообщениях системного журнала? - PullRequest
3 голосов
/ 16 ноября 2011

Я регистрирую подобные сообщения в perl -

syslog ("LOG_INFO", "this is info");
syslog ("LOG_WARNING", "this is warning");

когда я вижу эти сообщения, я получаю это -

Nov 15 20:20:47 ubuntu tag-0.0.2[13399]: this is info
Nov 15 20:20:47 ubuntu tag-0.0.2[13399]: this is warning

Слово "Ubuntu" в сообщении системного журнала происходитбыть именем хоста локального хоста.

Можно ли войти в систему локально и указать имя хоста?

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

Кстати, если я могу добавить дополнительный вопрос - почему журналы не показывают уровень сообщения?разве я не ожидаю увидеть "info" в сообщении info syslog, которое я регистрирую?

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Вероятно, самый простой способ выполнить эту задачу - установить syslog для получения сообщений по сети.Для rsyslog это часто в /etc/rsyslog.conf:

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

Я использую здесь UDP, потому что это легко сделать на любом демоне syslog и продемонстрировать это легко:

$ echo "<0>Oct 11 22:14:15 mymachine testing" | nc -u localhost syslog
^C
$ tail -1 /var/log/syslog
Oct 11 22:14:15 mymachine testing

Вкратце: <nnn> представляет средство и приоритет, как описано в разделе 4.1.1 RFC .Временная метка строго определена в 4.1.2: в коротких трехбуквенных английских сокращениях месяца без начального 0 - вместо начального пробела: Aug__8 вместо Aug_8 (подчеркивание используется, поскольку пробелы в кодовых блоках),Имя хоста не может иметь каких-либо доменных частей.IP-адреса в порядке, как IPv4, так и IPv6.

Вы также можете использовать доменные сокеты Unix (unix(7)), например /dev/log.Это было бы более надежно, чем UDP.

0 голосов
/ 16 ноября 2011

К сожалению, я не верю, что возможно указать имя хоста, если вы входите в систему локально.

Кроме того, вы не должны видеть «информацию» перед вашими журналами. Уровень журнала влияет на то, куда отправляются сообщения (вы можете настроить это в /etc/syslog.conf). По умолчанию LOG_INFO и LOG_WARNING идут в /var/log/messages.log, а LOG_EMERG и LOG_ERR - в /var/log/errors.log. Уровень не отображается на выходе.

...