Ведение журнала пакетного фильтра

Ведение журнала пакетного фильтра

Я использую OS X Mavericks и использую брандмауэр "packet filter". Однако, похоже, что "pflogd" недоступен.

Я обнаружил, что можно создать интерфейс с именем pflog0, а затем использовать tcpdump, чтобы увидеть пакеты, которые pf сбросил. Однако мне хотелось бы иметь файл журнала.

Моим решением было создать launchd plist и создать этот интерфейс при загрузке, запустить tcpdump (как root) и записывать все в /var/pf.log; это работает отлично.

Однако меня немного беспокоит, что tcpdump будет работать весь день в фоновом режиме в режиме root. Стоит ли это делать?

Спасибо

решение1

Я не знаю OS X Mavericks, но я тестировал это на OS X Mountain (не при загрузке):

Редактировать файл/etc/sudoers

Добавьте следующее, чтобы запретить запрашивать пароль:

youruser ALL=(ALL) NOPASSWD: /usr/sbin/tcpdump

Запустите tcpdump в фоновом режиме и запишите данные в файл захвата (главное здесь — это то, &что заставляет команду работать в фоновом режиме):

sudo tcpdump -i pflog0 -s 0 -B 524288 -w ~/Desktop/myfile.pcap &

Чтобы остановить tcpdump, завершите его, получив идентификатор процесса:

ps -ef
sudo kill pid

Чтобы открыть файл захвата:

tcpdump -s 0 -n -e -x -vvv -r ~/Desktop/myfile.pcap

решение2

Я обнаружил, что tcpdump не требует sudo при прослушивании интерфейса (никаких специальных опций), я думал, что требуется...

В любом случае, я могу просто создать интерфейс со скриптом в /Library/LaunchDaemons и запустить tcpdump с другим скриптом в ~/Library/LaunchAgents и включить ведение журнала. Все работает хорошо :)

Связанный контент