저는 OS X Mavericks를 실행 중이고 "패킷 필터" 방화벽을 사용하고 있습니다. 그러나 "pflogd"는 사용할 수 없는 것 같습니다.
나는 pflog0이라는 인터페이스를 생성한 다음 tcpdump를 사용하여 pf가 삭제한 패킷을 볼 수 있다는 것을 발견했습니다. 그러나 로그 파일을 갖고 싶습니다.
내 해결책은 launchd plist를 만들고 부팅 시 이 인터페이스를 만들고, tcpdump를 (루트로) 실행하고 모든 것을 /var/pf.log에 기록하는 것이었습니다. 그것은 완벽하게 작동합니다.
그러나 백그라운드에서 루트 모드로 하루 종일 tcpdump를 실행하는 것이 조금 걱정됩니다. 해야 할까요?
감사합니다
답변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를 중지하려면 프로세스 ID를 검색하여 종료하세요.
ps -ef
sudo kill pid
캡처 파일을 열려면:
tcpdump -s 0 -n -e -x -vvv -r ~/Desktop/myfile.pcap
답변2
인터페이스에서 수신 대기할 때 tcpdump에 sudo가 필요하지 않다는 것을 알았습니다(특별 옵션 없음). 그럴 줄 알았는데...
어쨌든 /Library/LaunchDaemons의 스크립트로 인터페이스를 생성하고 ~/Library/LaunchAgents의 다른 스크립트로 tcpdump를 실행하고 로깅을 활성화할 수 있습니다. 모두 잘 작동합니다 :)