первое, что приходит на ум, использовать iptraf, который ведет логи и оставляет информацию о соединениях в удобочитаемом виде.
Код: Выделить всё
/usr/bin/iptraf -i eth1 -L /home/dennis/logs/iptraf_`date +%d`_`date +%m`_`date +%y` -B -t 1380
-L /home/dennis/logs/iptraf_`date +%d`_`date +%m`_`date +%y` имя файла, которое составляется из текущей даты, и куда потом будут складываться логи,
-B оставить процесс в бэкграунде (вместо B можно использовать системный ключ в конце строки &, который позволяет отаттачиться от процесса после его запуска и передать управление родительскому)
-t 1380 задать количество минут, в течение которых будет работать iptraf.
и скормить эту строчку крону, но такое решение оставляет желать лучшего, т.к. каждый! из пролетающих пакетов оставляет след в файле. И за день логирования в нашей небольшой сети лог разрастается до внушительных размеров. На самом деле не нужно знать информацию о всем соединении, достаточно только зафиксировать прохождение SYN пакета, чтобы знать, с чем соединялся пользователь. iptraf не позволяет использовать фильтры такого рода, поэтому намного удобнее воспользоваться tcpdum - ом.
Аналогичная вышеуказанной строка будет иметь вид:
Код: Выделить всё
/usr/sbin/tcpdump -i eth1 -a 'tcp[tcpflags] & tcp-syn != 0' > /home/dennis/logs/tcpdump_`date +%d`_`date +%m`_`date +%y`
Код: Выделить всё
tcpdump -r filename > outfile
Код: Выделить всё
tcpdump -r filename -q > outfile
в конце просто добавляем в crontab строчку, и все.
http://www.linuxjournal.com/article/6446
http://www.linuxjournal.com/article/6447