Udpとtcpで動作するPBX(電話システム Astersik )があります。ブロックしたいIPアドレスから無効な要求を受け取ることがあります。Iコンピュータを再起動するまで、これらの要求をブロックできません。理由は、UFWが確立された接続をブロックしないためだと思います。
IPアドレス1.2.3.4
から悪意のあるリクエストを受け取っているとしましょう。次に、次のコマンドを実行して、これらの要求をブロックする必要があります。
Sudo ufw insert 1 deny from 1.2.3.4 to any
ルールが他のルールよりも先に実行されるように、insert 1
が必要です。
とにかく、そのコマンドを実行しても、コンピューターが1.2.3.4
に応答することがわかります。問題は、すでに確立された接続が存在するため、ufwはそれらの接続が閉じられるまでそれらのパケットをドロップしないためです。
一時的な解決策を見つけました:
1)nano /etc/ufw/before.rules
を開きます
2)次の行にコメントします。
(写真では、線はコメントされていません。ただし、赤い円の中にあるものはすべてコメントしてください)
3)ファイアウォールを再起動しますufw disable
、次にufw enable
これらの行にコメントを付けると、ファイアウォールは希望どおりに機能します。すぐに接続をブロックします!
問題は、これらの行にコメントを付けると、DNSが機能しなくなることですつまり、ping google.com
を実行すると、uknown Host google.com
が表示されます。
これらの行にコメントするとDNSが機能しなくなるのはなぜですか?つまり、Sudo ufw insert 1 deny from 1.2.3.4 to any
を実行すると、そのIPからの要求がなくなります。 。 IPアドレスをブロックするたびにコンピューターを再起動する余裕はありません。
遠野、
ufwはiptablesのフロントエンドです。あなたが本質的に求めているのは、関連する確立された接続の受け入れを停止したときにDNSが失敗する理由です。 conntrackは接続を追跡します。トラフィックがconntrackのエントリと一致する場合、それは確立されます。確立された接続が新しい接続を作成する場合、それは関連しています。トラフィックが新しく、確立または関連していない場合、それは新規です。
すでに接続が確立されている場合は、チェーンの先頭にドロップ命令を挿入する必要があります。 /etc/ufw/before.rulesを編集して、コメントしたルールの前にブロックセクションがあるようにします。そこに-A ufw-before-input -s 1.2.3.4 -j DROP
のエントリを追加します。次に、Sudo ufw reload
を使用します。
それでも問題が解決しない場合は、ufwがiptablesのフロントエンドであり、すべての選択が含まれているわけではないため、ufwの代わりにiptablesを使用することを検討してください。
https://www.cyberciti.biz/faq/how-to-block-an-ip-address-with-ufw-on-ubuntu-linux-server/
UDPはステートレスプロトコルですが、LinuxカーネルはそれでもIP番号とポート番号を30秒間追跡して、確立された関連トラフィックを判別します。 (30秒または/proc/sys/net/netfilter/nf_conntrack_udp_timeout
の値)-ServerFaultリンク: Iptables: "-p udp --state ESTABLISHED"
DNSはUDPを介して機能するため、DNSクエリを送信し、関連するリターントラフィックを許可するルールをコメントアウトした場合、応答は返されません-> DNSが壊れています。
UDPの「状態」は30秒間追跡されるため、INPUTの先頭に新しいブロックルールを挿入しようとしても効果はありません。 「ufw-before-input」が最初に発生し、ESTABLISHEDトラフィックを許可してから、INPUTルールがそれを認識してドロップします。
これを修正するには、次のいずれかを行う必要があります。
'conntrack'のようなものを使用して、ブロックするホストの追跡されたUDPエントリを削除してから、ファイアウォールにブロックルールを追加します。確立された接続または関連する接続はないため、ブロックはすぐに有効になります。例えば 特定のconntrackエントリを削除しますか?
ファイアウォールルールを作り直して、DROPの後に、最初に実行するのではなく、INPUTルールでESTABLISHED、RELATEDルールを実行するようにします。
IPアドレスをブロックするたびにコンピューターを再起動する余裕がありません
しかし、40億のIPアドレスを一度に1つずつフィルタリングして、手動でブロックする余裕はありますか?それは合理的なことではないようです。 IPSデバイスを使用し、fail2banを使用します。