NPF (zapora sieciowa)

NPF
Oryginalni autorzy Mindaugas Rasiukevicius
Pierwsze wydanie 17 października 2012 ; 10 lat temu ( 17.10.2012 )
Magazyn
Napisane w C
System operacyjny NetBSD
Typ filtr pakietów , zapora sieciowa
Licencja Licencja BSD
Strona internetowa www .netbsd .org /~rmind /npf /  Edit this on Wikidata

NPF to licencjonowany przez BSD stanowy filtr pakietów , centralny element oprogramowania firewalla . Jest porównywalny z iptables , ipfw , ipfilter i PF . NPF jest rozwijany w NetBSD .

Historia

NPF został napisany głównie przez Mindaugasa Rasiukeviciusa. NPF po raz pierwszy pojawił się w wydaniu NetBSD 6.0 w 2012 roku.

Cechy

NPF został zaprojektowany z myślą o wysokiej wydajności w systemach SMP i łatwej rozbudowie. Obsługuje różne formy translacji adresów sieciowych (NAT), stanową kontrolę pakietów , tablice drzew i skrótów dla zestawów adresów IP, kod bajtowy ( BPF lub kod n) dla niestandardowych reguł filtrowania i inne funkcje. NPF ma strukturę rozszerzeń do obsługi niestandardowych modułów. Funkcje takie jak rejestrowanie pakietów, normalizacja ruchu, losowe blokowanie są dostarczane jako rozszerzenia NPF.

Przykład npf.conf

# Przypisywanie adresów tylko dla IPv4 dla określonych interfejsów. $ext_if = inet4(wm0) $int_if = inet4(wm1) # Wydajne tablice do przechowywania zestawów IP. tabela <1> wpisz plik hash "/etc/npf_blacklist" tabela <2> drzewo typów dynamiczne # Zmienne z nazwami usług. $services_tcp = { http, https, smtp, domain, 9022 } $services_udp = { domain, ntp } $localnet = { 10.1.1.0/24 } # Obsługiwane są różne formy NAT. 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 ma różne rozszerzenia, które są obsługiwane przez niestandardowe procedury. procedura "log" { log: npflog0 } # # Grupowanie jest obowiązkowe w NPF. # Musi istnieć grupa domyślna. # group "external" na $ext_if { # Stanowe przekazywanie całego ruchu wychodzącego. przekaż stateful out final all block in final from <1> pass stateful in final family inet proto tcp do $ext_if port ssh zastosuj "log" przekaż stany w finale proto tcp do $ext_if port $services_tcp przekaż stany w finale proto udp do $ext_if port $services_udp # Passive FTP i traceroute przekazują stan w finalnym proto tcp do $ext_if port 49151-65535 przekazują stan w finalnym proto udp do $ext_if port 33434-33600 } group "internal" na $int_if { # Filtrowanie ruchu przychodzącego zgodnie z RFC 2827 .blok we wszystkich przechodzi w finale z $localnet przechodzi w finale z <2> odrzuca wszystkie w finale } group default { przechodzi w finale na lo0 all blokuje wszystkich }
  1. ^ a b Rasiukevicius, Mindaugas (2012-10-17). „Wprowadzenie NPF w NetBSD 6.0” . Ogłoszenie NetBSD (lista mailingowa).

Linki zewnętrzne