Как программы безопасности, такие как брандмауэр, IPS и IDS, имеют доступ к сетевым данным?

Говорят, что ядро ​​отвечает за уровни транспорта, Интернета и доступа к сети для сетевых данных. Затем сетевые данные передаются по соответствующему процессу на основе номера порта.

Как программы безопасности, такие как брандмауэр, IPS и IDS, имеют доступ к сетевым данным, которые не принадлежат им, в то время как они являются только программой уровня пользователя, а не частью ядра? Как насчет прокси-сервера?

Почему сетевые данные должны передать брандмауэр сначала перед соответствующим процессом?

Как правило, эти программы безопасности содержат две части, один из которых работает в пространстве ядра, один работает в пространстве пользователя. Часть user space является лишь интерфейсом к iteract с частью пространства ядра.

Например, iptables содержит:

  • netfilter, набор крючков для сетевого кода в ядре. Он также включает механизмы передачи пакетов в программу пользовательского пространства.

  • ip_tables , модуль, который использует netfilter для устранения сетевых пакетов, настройки правил …

  • iptables , инструмент пользовательского пространства для настройки правил в модуле ip_tables.

Netfilter и ip_iptables запускаются в пространстве ядра, а iptables в пользовательском пространстве.