Autor(es) original(es) | Mindaugas Rasiukevicius |
---|---|
Lanzamiento inicial | 17 de octubre de 2012 ( 17 de octubre de 2012 ) | [1]
Repositorio |
|
Escrito en | do |
Sistema operativo | NetBSD |
Tipo | filtro de paquetes , cortafuegos |
Licencia | Licencia BSD |
Sitio web | www.netbsd.org/~rmind/npf/ |
NPF es un filtro de paquetes con estado con licencia BSD , un software central para el cortafuegos . Es comparable a iptables , ipfw , ipfilter y PF . NPF está desarrollado en NetBSD .
NPF fue escrito principalmente por Mindaugas Rasiukevicius. NPF apareció por primera vez en la versión NetBSD 6.0 en 2012. [1]
NPF está diseñado para un alto rendimiento en sistemas SMP y para una fácil extensibilidad. Admite varias formas de traducción de direcciones de red (NAT), inspección de paquetes con estado , tablas de árbol y hash para conjuntos de IP, código de bytes ( BPF o código n) para reglas de filtrado personalizadas y otras funciones. NPF tiene un marco de extensión para admitir módulos personalizados. Las funciones como registro de paquetes, normalización de tráfico y bloqueo aleatorio se proporcionan como extensiones de NPF.
# Asignar direcciones solo IPv4 de las interfaces especificadas.$ext_if = inet4(wm0)$int_if = inet4(wm1)# Tablas eficientes para almacenar conjuntos de IP.tabla <1> tipo archivo hash "/etc/npf_blacklist"tabla <2> tipo árbol dinámico# Variables con los nombres de los servicios.$services_tcp = { http, https, smtp, dominio, 9022 }$services_udp = { dominio, ntp }$localnet = { 10.1.1.0/24 }#Se admiten diferentes formas de NAT.mapa $ext_if dinámico 10.1.1.0/24 -> $ext_ifmapa $ext_if dinámico 10.1.1.2 puerto 22 <- $ext_if puerto 9022# NPF tiene varias extensiones que son compatibles a través de procedimientos personalizados.procedimiento "log" {registro: npflog0}## La agrupación es obligatoria en NPF.# Debe haber un grupo predeterminado.#grupo "externo" en $ext_if {# Paso con estado de todo el tráfico saliente.pasar con estado fuera final todoBloque en final desde <1>pasar con estado en la familia final inet proto tcp a $ext_if puerto ssh aplicar "log"pasar con estado en el protocolo final tcp a $ext_if puerto $services_tcppasar con estado en el protocolo udp final a $ext_if puerto $services_udp# FTP pasivo y traceroutePasar con estado en el protocolo final tcp a $ext_if puerto 49151-65535pasar con estado en el protocolo final udp a $ext_if puerto 33434-33600}grupo "interno" en $int_if {# Filtrado de entrada según RFC 2827.bloquear en todopasar en final desde $localnetPase en la final desde <2>pasar el examen final todos}grupo predeterminado {pasar final en lo0 todosbloquear todo}