NPF(ファイアウォール)
| NPF | |
|---|---|
| 原作者 | ミンダウガス・ラシウケヴィチウス |
| 初回リリース | 2012年10月17日[1] |
| リポジトリ |
|
| 書かれた | C |
| オペレーティング·システム | ネットBSD |
| タイプ | パケットフィルター、ファイアウォール |
| ライセンス | BSDライセンス |
| Webサイト | www.netbsd.org/~rmind/npf/ |
NPFはBSDライセンスのステートフル・パケットフィルタであり、ファイアウォールの中心的なソフトウェアです。iptables、ipfw、ipfilter、PFに相当します。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で最終合格すべてブロック}参考文献
- ^ ab Rasiukevicius, Mindaugas (2012-10-17). 「NetBSD 6.0におけるNPFの導入」. NetBSD-Announce (メーリングリスト).