НПФ (брандмауэр)
Оригинальный автор(ы) | Миндаугас Расюкявичюс |
---|---|
Первоначальный выпуск | 17 октября 2012 г [1] |
Репозиторий | |
Написано в | С |
Операционная система | NetBSD |
Тип | фильтр пакетов , межсетевой экран |
Лицензия | Лицензия BSD |
Веб-сайт | www ![]() |
NPF — это , лицензированный BSD с отслеживанием состояния фильтр пакетов , центральная часть программного обеспечения для межсетевого экрана . Его можно сравнить с iptables , ipfw , ipfilter и PF . NPF разработан на NetBSD .
История
[ редактировать ]НПФ был в первую очередь написан Миндаугасом Расюкявичюсом. NPF впервые появился в версии NetBSD 6.0 в 2012 году. [1]
Функции
[ редактировать ]NPF разработан для обеспечения высокой производительности в системах SMP и простоты расширения. Он поддерживает различные формы трансляции сетевых адресов (NAT), проверку пакетов с отслеживанием состояния , древовидные и хэш-таблицы для наборов IP-адресов, байт-код ( BPF или n-код) для пользовательских правил фильтрации и другие функции. NPF имеет структуру расширений для поддержки пользовательских модулей. Такие функции, как регистрация пакетов, нормализация трафика, случайная блокировка, предоставляются как расширения NPF.
Пример npf.conf
[ редактировать ]# Assigning IPv4-only addresses of the specified interfaces. $ext_if = inet4(wm0) $int_if = inet4(wm1) # Efficient tables to store IP sets. table <1> type hash file "/etc/npf_blacklist" table <2> type tree dynamic # Variables with the service names. $services_tcp = { http, https, smtp, domain, 9022 } $services_udp = { domain, ntp } $localnet = { 10.1.1.0/24 } # Different forms of NAT are supported. map $ext_if dynamic 10.1.1.0/24 -> $ext_if map $ext_if dynamic 10.1.1.2 port 22 <- $ext_if port 9022 # NPF has various extensions which are supported via custom procedures. procedure "log" { log: npflog0 } # # Grouping is mandatory in NPF. # There must be a default group. # group "external" on $ext_if { # Stateful passing of all outgoing traffic. pass stateful out final all block in final from <1> pass stateful in final family inet proto tcp to $ext_if port ssh apply "log" pass stateful in final proto tcp to $ext_if port $services_tcp pass stateful in final proto udp to $ext_if port $services_udp # Passive FTP and traceroute pass stateful in final proto tcp to $ext_if port 49151-65535 pass stateful in final proto udp to $ext_if port 33434-33600 } group "internal" on $int_if { # Ingress filtering as per RFC 2827. block in all pass in final from $localnet pass in final from <2> pass out final all } group default { pass final on lo0 all block all }
Ссылки
[ редактировать ]- ^ Jump up to: а б Расюкявичюс, Миндаугас (17 октября 2012 г.). «Введение NPF в NetBSD 6.0» . NetBSD-Announce (список рассылки).
Внешние ссылки
[ редактировать ]- Официальный сайт
- NetBSD по форматам файлов Руководство –