Одним из важнейших инструментов в руках системного администратора является логирование — запись в журнал информации о происходящих событиях. Настраивая межсетевой экран через iptables, мы можем включить запись определённых событий в системный журнал (syslog). Это очень удобно, если Вы хотите посмотреть, что происходит с сетевыми соединениями.
В одной из предыдущих статей мы запрещали доступ к FTP-серверу по порту 21. Команда выглядела так:
iptables -A INPUT -p tcp --dport 21 -j DROP
Допустим, что мы хотим, чтобы в системном журнале отражалась информация о попытках подключения по этому порту. Тогда перед этой строкой надо добавить следующую строку:
iptables -A INPUT -p tcp --dport 21 -j LOG --log-level INFO --log-prefix "New connection from ours: "
В итоге всё вместе должно выглядеть так:
iptables -A INPUT -p tcp --dport 21 -j LOG --log-level INFO --log-prefix "New connection from ours: "
iptables -A INPUT -p tcp --dport 21 -j DROP
Теперь, если мы обратимся к файлу /var/log/syslog, то мы увидим там сообщение вида
Apr 17 15:11:37 hostname kernel: New connection from ours: IN=eth0 OUT= MAC=xx:yy:zz:xx:yy:zz:xx:yy:zz:xx:yy:zz:xx:yy SRC=XXX.XXX.XXX.XXX DST=XXX.XXX.XXX.XXX LEN=48 TOS=0x00 PREC=0x00 TTL=110 ID=38914 DF PROTO=TCP SPT=31521 DPT=21 WINDOW=65535 RES=0x00 SYN URGP=0
В этом сообщении содержится достаточно много информации: дата и время события, имя хоста, источник сообщения (для сообщений от межсетевого экрана это всегда ядро), заданный в команде префикс (New connection from ours), входящий и исходящий интерфейсы, сцепленные вместе MAC-адреса назначения и источника, IP-адреса источника и получателя, длина пакета и его время жизни, протокол и порты источника и назначения, наличие флага SYN и так далее.
Параметр —log-level определяет важность сообщения, а параметр —log-prefix позволяет задать поясняющее сообщение. Есть и другие полезные параметры. Можно дополнить эту информацию номером TCP-последовательности (—log-tcp-sequence), выводом включенных опций протоколов TCP (—log-tcp-options) и IP (—log-ip-options), а также идентификатором пользователя, процесс которого отправил данный пакет (—log-uid) Последнее имеет смысл только в цепочках OUTPUT и POSTROUTING.
Статьи по теме: