OpenBSDでpfを使用して不正なIPアドレスをブロックする方法は?


14

nginxログから、厄介なことをしているIPアドレスがあることがわかります。

pfコマンドでそれをブロックし、その後で永久にブロックするにはどうすればよい/etc/pf.logですか?x.x.x.x/24そのIPのをブロックするにはどうすればよいですか?例です:1.2.3.4

更新:いいえ、OpenBSDの/ etcにallow / denyファイルがないようです。また、不正なIPアドレスをブロックするための最良のアドバイスはpfを使用することです。

# cd /etc 
# ls -la|egrep -i 'deny|allow'
# uname -a
OpenBSD foo.com 5.4 GENERIC.MP#0 amd64
# 

/ etcディレクトリにhosts.denyファイルがありますか?
リエカヨ14

回答:


13

これを行う最良の方法は、テーブルを定義し、ホストをブロックするルールを作成することですpf.conf

table <badhosts> persist
block on fxp0 from <badhosts> to any

そして、そこから動的にIPアドレスを追加/削除します:

$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4

他の「テーブル」コマンドには、flush(すべて削除)、replaceおよびが含まれshowます。詳細man pfctlをご覧ください。

より永続的なリストが必要な場合は、1つ(またはそれ以上)のファイルに保持できます。でpf.conf

table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any

IPアドレスの代わりにホスト名を追加することもできます。man pf.confおよびの「表」セクションを参照してくださいman pfctl

上記の例では、インターネットに面したインターフェースがfxp0であると想定しています。設定に応じて変更してください。また、中に規則があることに注意してくださいpf.conf順次について評価されるblockか、pass適用され、その最後にマッチしたルールをルール。このルールセットで

table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80

そして、1.2.3.4と192.168.0.10をbadhostsテーブルに追加した後

$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10

1.2.3.4および192.168.0.10からのすべてのトラフィックはブロックされますが、2番目のホスト他のマシンのポート80に接続できます。passルールが一致してblockルールを上書きするます。


4
ブロックルールはとしてより簡単に指定できますblock in from <badhosts>。インターフェイスまたはto anyパーツを指定する必要はありません。
kurtm 14年

4

他の回答から、ブロックしようとしている不良ホストの実際のテーブルを作成する必要があるかどうかは明らかではありません。

これはpf.confファイルに含まれています。たとえば、2つのbadguysファイルがあります。1&2 badguys1は出入りする人向けで、badguys2は永続的なブラックリスト登録用です。

そのため、しばらく迷惑な人のIPを追加する必要がある場合は、badguys1に追加します。

これで、pf.confファイルにこれがあります。私の例では、en1を使用しています。これは私のWiFiインターフェースだからです。ネットワークのインターフェイスに設定します。

table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on en1 from <badhosts> to any

これで、badguys1に一時アドレスを追加できます。(badhostsではなく、テーブルの名前です)

sudo pfctl -t badguys1 -T add 185.130.5.160

1 table created.
1/1 addresses added.

1つのテーブルが作成されたと表示されますが、実際には新しいテーブルを作成するのではなく、IPを追加します。badguys1を見ると、新しいIPが表示されます。

sudo pfctl -t badhosts -T show

3

私はこの情報をウェブサイトから入手し、についての私の悪い知識を許しますOpenBSDが、ここに行きます。このURLをご覧ください。それによると、それはあなたがするIPをブロックするように述べています:

echo '123.123.123.123' >> /etc/pf.blocked.ip.conf

次に、ファイアウォールを再起動します。

pfctl -d
pfctl -e -f /etc/pf.conf

または、ファイアウォールタイプを再起動せずに追加するには:

pfctl -t blockedips -T add 111.222.333.444

次に、タイプが追加されているかどうかを確認します。

pfctl -t blockedips -T show

更新:たぶんこれが役立つでしょう。

  • viで次のファイルを開きます。

    vi /etc/pf.conf

  • 次のコード行を追加します。

    table <blockedips> persist file "/etc/pf.blocked.ip.conf" ext_if="bge0" # interface connected to internet

  • その後、ファイアウォールを再起動し、次のように入力してIPがブロックされていることを確認します。

    pfctl -d
    pfctl -e -f /etc/pf.conf
    pfctl -t blockedips -T show
    

1
私はそれに続くが、IPがまだブロックされていない、私はテーブルのニーズがブロックに設定すると思うが、その部分はHOWTOで明確ではありません
somelooser28533

その方法を調べることができるかどうか見てみましょう。
リエカヨ14

2
pf.confをリロードするためにpfを無効にしてから再度有効にする必要はありません。pfctl -f /etc/pf.conf十分です
ゼロフ14

1
(悪い)HOWTOは思考を妨げ、コピーを奨励します。を読んでman pf.conf、OpenBSDのmanページがどれほど優れているかに驚かれることでしょう。さらに、pf.confファイルを全体として読み取る必要があるため(ルールを配置する順序が重要です)、通常、単一行をコピーして貼り付けることはお勧めできません。ファイルとtableルールを作成します(これで十分です)が、pf.confファイル全体を共有するか、適切なblockルールとそのファイル内の場所を把握するのはユーザー次第です。
ゼロフ14

1
@ryekayo ext_if="bge0"マクロを含めることと、ブロックルールがない理由を正当化できない限り、それが不完全である(つまり、適切な答えではない)ため、あなたがそれに費やした努力に関係なく、私あなたの答え批判します。さらに、HOWTOに関する私のコメントは、あなたではなくOPで対処されました(謝罪、私はそれを明確にすべきでした)。
ゼロフ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.