NPF(ファイアウォール)

NPF
原作者ミンダウガス・ラシウケヴィチウス
初回リリース2012年10月17日; 13年前[1] (2012年10月17日
リポジトリ
  • github.com/rmind/npf
書かれたC
オペレーティング·システムネットBSD
タイプパケットフィルターファイアウォール
ライセンスBSDライセンス
Webサイトwww.netbsd.org/~rmind/npf/ 

NPFはBSDライセンスのステートフル・パケットフィルタであり、ファイアウォールの中心的なソフトウェアです。iptablesipfwipfilterPFに相当します。NPFはNetBSD上で開発されています。

歴史

NPFは主にMindaugas Rasiukeviciusによって書かれました。NPFは2012年のNetBSD 6.0リリースで初めて登場しました。[1]

特徴

NPFは、 SMPシステムにおける高いパフォーマンスと容易な拡張性を実現するように設計されています。様々な形式のネットワークアドレス変換(NAT)、ステートフルパケットインスペクション、IPアドレスセットのツリーテーブルとハッシュテーブル、カスタムフィルタルール用のバイトコード(BPFまたはnコード)などの機能をサポートしています。NPFには、カスタムモジュールをサポートするための拡張フレームワークがあります。パケットロギング、トラフィック正規化、ランダムブロッキングなどの機能は、NPF拡張機能として提供されます。

npf.confの例

# 指定されたインターフェースの IPv4 のみのアドレスを割り当てます。$ext_if = inet4(wm0)$int_if = inet4(wm1)# IP セットを保存するための効率的なテーブル。テーブル <1> 型ハッシュファイル "/etc/npf_blacklist"テーブル <2> 型ツリー 動的# サービス名を持つ変数。$services_tcp = { http, https, smtp, ドメイン, 9022 }$services_udp = { ドメイン, ntp }$localnet = { 10.1.1.0/24 }# さまざまな形式の NAT がサポートされています。$ext_if を動的に 10.1.1.0/24 にマップ -> $ext_if$ext_if 動的 10.1.1.2 ポート 22 <- $ext_if ポート 9022 をマップします# NPF には、カスタム プロシージャを通じてサポートされるさまざまな拡張機能があります。手順 "log" {ログ: npflog0}## NPF ではグループ化は必須です。# デフォルトグループが存在する必要があります。#$ext_if のグループ "external" {# すべての送信トラフィックをステートフルに渡します。ステートフルを最後にすべて渡す<1>からの最終ブロック最終ファミリ inet proto tcp のステートフルを $ext_if ポート ssh に渡し、「log」を適用します最終プロトコル tcp のステートフルを $ext_if ポート $services_tcp に渡します最終プロトコルudpのステートフルを$ext_ifポート$services_udpに渡す# パッシブFTPとtraceroute最終プロトコル TCP でステートフルを $ext_if ポート 49151-65535 に渡す最終プロトコルudpでステートフルを$ext_ifポート33434-33600に渡す}$int_if のグループ "internal" {# RFC 2827 に準拠した入力フィルタリング。すべてをブロックする$localnetからfinalを渡す<2>から最終合格最終合格者全員}グループのデフォルト{lo0で最終合格すべてブロック}

参考文献

  1. ^ ab Rasiukevicius, Mindaugas (2012-10-17). 「NetBSD 6.0におけるNPFの導入」. NetBSD-Announce (メーリングリスト).
「https://en.wikipedia.org/w/index.php?title=NPF_(firewall)&oldid=1085404042」から取得