Loading article…
| 原作者 | ミンダウガス・ラシウケヴィチウス |
|---|---|
| 初回リリース | 2012年10月17日[1] |
| リポジトリ |
|
| 書かれた | C |
| オペレーティング·システム | ネットBSD |
| タイプ | パケットフィルタ、ファイアウォール |
| ライセンス | BSDライセンス |
| Webサイト | このサイトについて |
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)
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 dynamic 10.1.1.2 ポート 22 <- $ext_if ポート 9022 をマップします
# NPF には、カスタム プロシージャを通じてサポートされるさまざまな拡張機能があります。
手順「ログ」{
ログ: 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 (メーリング リスト).
