web-dev-qa-db-ja.com

PFを使用して特定のIPへの発信接続をブロックする

TCPリクエストが特定のIPアドレスに送信されるたびに、基本的な拒否ルールを設定する方法についてヒントを教えてもらえますか?PFパケットフィルターを使用しています。何か助けは?

6
Joseph A.

最も基本的な形式は、_/etc/pf.conf_構成で次のようになります。

_block from any to 192.0.2.2

# which is equivalent to:
block drop from any to 192.0.2.2
_

デフォルトでは、このblockアクションはdrop送信元IPからのすべてのインターフェースでanyパケットsilentlyになります、両方向。クライアントはブロックされていることに気付いていないため、タイムアウトになり、再試行する可能性があります...

_block return_は、 'friendly neighbor'方法で、respondingプロトコル固有の方法で、TCP RST(リセット)またはICMP UNREACHABLEパケットを使用します。クライアントはこの情報を使用して、あきらめるか、まともな方法で再試行できます。

_block return from any to 192.0.2.2
_


デフォルトのblockの動作は、_set block-policy_オプションを使用して変更できます。


より複雑な例-しかし、ルールセットが拡大し始めると、管理と読み取りが容易になります。

_mybadhosts = "{ 192.0.2.2, 203.0.113.0/24 }"
ext_if = "em0"

block return on $ext_if from any to $mybadhosts                 # example #1
block return on em0 from any to { 192.0.2.2, 203.0.113.0/24 }   # ^expanded form

block drop out on egress from any to $mybadhosts                # example #2
_

例#1変数、リスト_{}_、ネットマスク_/24_の簡単な使用法を示し、インターフェース_em0_。 (変数は$記号なしで定義されますクォートは削除されます、実行時にルールが展開されます)

例#2out送信パケットをegressインターフェースグループにドロップします(ifconfig(8)を参照) )


関連項目:

6
pete