web-dev-qa-db-ja.com

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

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

pfコマンドでブロックし、その後/etc/pf.logで永続的にブロックするにはどうすればよいですか?そのIPのx.x.x.x/24をどのようにブロックできますか?例です: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
# 
13
somelooser28533

これを行う最良の方法は、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(すべて削除)、replaceshowがあります。詳細については、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番目のホストwillは、passルールが一致するため、他のマシンのポート80に接続できますblockルールをオーバーライドします。

13
Zé Loff

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

これはpf.confファイルに含まれます。たとえば、2つのbadguysファイルがあり、1&2 badguys1は行き来する人のためのもので、badguys2は永続的なブラックリストのためのものです。

したがって、一定期間迷惑である誰かのIPを追加する必要がある場合は、それらをbadguys1に追加します。

これで、pf.confファイルに次のようになります。私の例では、それが私のWiFiインターフェースであるため、en1を使用します。これを、ネットワークが接続するインターフェイスに設定します。

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を追加します。これでb​​adguys1を見ると、新しいIPが表示されています。

Sudo pfctl -t badhosts -T show
4
user160328

私はこの情報をウェブサイトから入手し、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
    
3
ryekayo