Событие netfilter для локально обработанного пакета (код модуля ядра C netfilter) - PullRequest
0 голосов
/ 03 февраля 2011

Если входящий пакет поступает и обрабатывается локально, есть ли способ получить уведомление об этом событии?

В настоящее время я использую ловушку NF_IP_LOCAL_IN.Но похоже, что это дает все пакеты, предназначенные для интерфейса.Например, предположим, что tcp пакет X поступает на порт 5000, а на порту 5000 прослушивается сокет. Я хотел бы получить это событие.

Чтобы пояснить, я имею в виду, что я хочу получать только события пакета XВсе остальные пакеты, которые не обрабатываются локально (т.е. те, которые генерируют ICMP-адрес, недоступны, о которых я не хочу получать уведомления)

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Netfilter живет на уровне L3 / L4, поэтому он имеет доступ только к информации до уровня L4. OTOH, LSM (модули безопасности Linux) имеют хуки почти везде, включая socket_recvmsg, который, я думаю, следует вызывать только для пакетов, которые вас интересуют.

Теперь, можете ли вы использовать это, зависит от вашей ситуации. В вашей среде уже работает LSM? Если ответ «да», можете ли вы создать и вставить политику для вашего LSM, которой будет достаточно для ваших целей?

0 голосов
/ 03 февраля 2011

Ну, интерфейс должен быть lo.

Или я не понимаю, почему хук LOCAL_IN вас не устраивает.

...