Можно ли описать данные, выводимые в лог firewall?

Как-то не нагуглил такое. Видно неправильно спрашивал…


Dec 18 13:22:44 termo-gate kernel: [256252.455417] IN=eth0 OUT= MAC=00:1e:58:a7:8f:02:00:30:48:92:d6:e1:08:00 SRC=195.250.86.17 DST=ххх.ххх.ххх.ххх LEN=41 TOS=0x00 PREC=0x00 TTL=113 ID=55089 DF PROTO=TCP SPT=2446 DPT=3389 WINDOW=65535 RES=0x00 ACK URGP=0 

Это одна из строк в логе. Мой IP заменён в ней на ххх.ххх.ххх.ххх.
Приблизительно один раз в 2-5 секунд добавляется новая строка в лог. Бум какой-то прямо.

Можно как-то сократить количество инфы, попадающей в этот лог?
Хотелось бы, чтобы осталось так:


Dec 18 13:22:44 SRC=195.250.86.17 DPT=3389

Заранее сенк.

Slava D wrote:

> Можно как-то сократить количество
> инфы, попадающей в этот лог?

Да можно, наверное.
Надо поизучать ман конфига демона (syslog или rsyslog). Там описывается
формат вывода информации.

Не узрел такого…

IN=eth0 OUT= MAC=00:1e:58:a7:8f:02:00:30:48:92:d6:e1:08:00 SRC=195.250.86.17 DST=ххх.ххх.ххх.ххх LEN=41 TOS=0x00 PREC=0x00 TTL=113 ID=55089 DF PROTO=TCP SPT=2446 DPT=3389 WINDOW=65535 RES=0x00 ACK URGP=0

При помощи конфига syslog-ng можно при помощи темплейтов сократить до такого варианта. Похоже - это ядро присылает в таком формате…

Slava D wrote:

> При помощи конфига syslog-ng можно при
> помощи темплейтов сократить до такого
> варианта. Похоже - это ядро присылает в
> таком формате…
>

Надо поизучать руководство:
http://www.balabit.com/support/documentation/syslog-ng-v3.0-guide-admin-en_0.pdf
Там подробно, с примерами, всё расписано.

При помощи самого конфига syslog-ng можно, например, фильтровать входящую информацию и создавать из макросов строки вывода.

По-русски](http://belgorod.lug.ru/wiki/index.php/Настройка_syslog-ng) здесь описаны зарезервированные макросы:

ISODATE\FULLDATE - варианты описание даты
FACILITY - каким уровнем сгенерированно сообщение (auth/mail/cron и т.д.)
PRIORITY - приоритет (info/err и т.д.)
HOST\FULLHOST - откуда
HOST_FROM - последний хост в цепочке
PROGRAM - какая программа
PID - pid процесса
MSG - само сообщение 

Если оставить темплейт в таком виде : template("$MSG
")
, то выводимая строка как раз и будет иметь вид, который я описывал.


IN=eth0 OUT= MAC=00:1e:58:a7:8f:02:00:30:48:92:d6:e1:08:00 SRC=195.250.86.17 DST=ххх.ххх.ххх.ххх LEN=41 TOS=0x00 PREC=0x00 TTL=113 ID=55089 DF PROTO=TCP SPT=2446 DPT=3389 WINDOW=65535 RES=0x00 ACK URGP=0

Т.е. эта строка-сообщение формируется похоже раньше самого syslog-ng. Вернее она поступает в него уже в таком виде.

Похоже Вы таки правы. “Интересные” моменты этого руководства начались со страницы 195. Парсеры. rotfl!

Решение таково.

Редактируем файл /etc/syslog-ng/syslog-ng.conf.

После секции описания фильтров пишем свой парсер:

#Firewall log parcer
parser p_firewall {
csv-parser(columns("FW.LOG_ID", "FW.IN_FACE", 
"FW.OUT_FACE", "FW.OUT_MAC", "FW.SRC_IP", "FW.DST_IP",
"FW.LEN", "FW.TOS", "FW.PREC", "FW.TTL", "FW.ID", "FW.FLAG",
"FW.PROTO", "FW.SRC_PORT", "FW.DST_PORT", "FW.WINDOW",
"FW.RES", "FW.ASK", "FW.URGP")
flags(escape-double-char,strip-whitespace)
delimiters(" ")
);
};

И немного модифицируем строки, отвечающие за вывод информации файервола:

#
# Firewall (iptables) messages in one file:
#
destination firewall { file("/var/log/firewall" template("$FULLDATE ${FW.SRC_IP} ${FW.DST_PORT}
") suppress(30) ); };   
log {
  source(src);
  source(chroots);
  filter(f_iptables);
  parser(p_firewall);
  destination(firewall);
  };

Всё. Теперь лог содержит только то, что я и хотел:


2011 Dec 21 09:21:25 SRC=46.151.156.1 DPT=28775
2011 Dec 21 09:21:25 SRC=77.122.55.126 DPT=443
2011 Dec 21 09:21:25 SRC=87.230.74.47 DPT=443
2011 Dec 21 09:21:25 SRC=62.80.169.202 DPT=28775
2011 Dec 21 09:21:25 SRC=46.201.193.251 DPT=5393
2011 Dec 21 09:21:26 SRC=194.186.151.15 DPT=28775
2011 Dec 21 09:21:28 SRC=194.186.151.15 DPT=28775
2011 Dec 21 09:21:29 SRC=212.74.221.185 DPT=28775
2011 Dec 21 09:21:30 SRC=62.80.169.202 DPT=28775
2011 Dec 21 09:21:34 SRC=46.151.156.1 DPT=28775
2011 Dec 21 09:21:35 SRC=212.74.221.185 DPT=28775
2011 Dec 21 09:21:41 SRC=213.248.24.138 DPT=28775