私たちがホストしているWebサイトからの「スクリーンスクレイピング」コンテンツであると思われる場合は、比較的自動化された方法でIPアドレスをブロックしようとしています。過去には、これはいくつかの独創的なPerlスクリプトとOpenBSDのpfによって達成されていました。 pfは、IPアドレスの適切なテーブルを提供でき、それらに基づいてブロッキングを効率的に処理できるという点で優れています。しかし、さまざまな理由で(私の時間の前に)、彼らはCentOSに切り替えることを決定しました。 iptablesは、多数のアドレスをブロックする機能をネイティブに提供していません(5000以上をブロックすることは珍しいことではないと言われています)。また、iptableにその数のルールを追加することには少し注意が必要です。
ipt_recentはこれを行うのに最適です。さらに、アクセスを大幅に遅くするための多くの柔軟性を提供しますが、CentOSカーネルにバグがあり、使用できなくなっています(報告されていますが、修正を待っています)。
Ipsetを使用すると、CentOSに付属しているよりも最新バージョンのiptablesをコンパイルする必要があります。これは完全に実行できますが、パッチ適用、セキュリティ、および一貫性の観点からは実行しません。
これら2つを除けば、nfblockが妥当な代替手段のように見えます。これを達成する他の方法を知っている人はいますか?個々のルールが根拠のないものとして、iptablesの数千のIPアドレスについての私の懸念はありますか?
iptables
は、netfilterを操作するためのユーザーランドツールです。 netfilterは、パケットフィルタリングを処理するカーネル内のコードです。コンテキスト的には、ユーザーランドツールを変更すると、エクスペリエンスが変更されるだけで、フィルタリングの動作方法は変更されません。
Linuxで指定されたルールの数で制限に達することはなく、ユーザーランドツールがipfwadm
であったため、ファイアウォールにLinuxを使用してきました。 Netfilterが2.4.xカーネルまでLinuxに導入されておらず、ipfwadm
がnetfilterではなくipfwのインターフェースであったことは注目に値します。 OpenBSDは、ご使用の環境で引き続き使用できる場合、ファイアウォールに最適です。
制限は、システムリソースに基づく物理的な制限であり、使用可能なRAM)の量に焦点が当てられます。問題が発生した場合は、Linuxの最大IP接続設定を調整する必要があります。カーネル。最新のLinuxディストリビューションを備えた最新のハードウェアでこれらの状況のいずれかに遭遇する可能性はほとんどありません。
Netfilterの詳細について話し合いたい場合は、netfilterメーリングリストでこのダイアログをさらに進めたほうがよいでしょう。彼らは対象分野の専門家になるからです。
これで質問に答えられない場合は、遠慮なく明確にしてください。修正させていただきます。
カーネルに大きなストレスをかけずに大量のIPアドレスをブロックする最良の方法は、次のコマンドを使用してそれらをnullルーティングすることです。
root@machine# ip route add blackhole 192.168.1.1/32
iptablesは多くのルールに適していません。
彼が参照したバグは、netfilterコード、特にipt_recentモジュールにあると思います。 4k(32ビット)と8k(64ビット)に制限されているようです。
見る:
5000のルールは問題ではありませんが、 http://www.hipac.org/ があり、膨大な数のルールを処理するのに非常に適しています。