IPブラックリスト( このような 、しかしおそらく2〜3倍大きい、可能性のある効率的で簡単な使用方法はありますか?標準/ユーザースペースソフトウェア(カーネルの再コンパイルなし)を使用してWebサーバー(lighttpdまたはApache)へのアクセスを拒否するために(CIDRにあまり単純化されていません) Linux?
ApacheconfigのAFAIKDeny
ルールとiptables
のルックアップ時間は線形です。 IPの大規模なリストを効率的に処理するカーネルモジュールがありますが、それらをインストールするには、カーネルにパッチを適用する必要があります。
moblock (google it-まだリンクを追加できません、新しいユーザー)を使用してみてください。ダウンロードしたすべてのブロックリストを無効にし、生成したローカルブロックリストのみを使用します。カーネルにNFQUEUE(ネットリンクキュー)サポートを追加する必要があるかもしれませんが、デフォルトではすでに存在している可能性があります。
一般的な設定は次のとおりです。フィルタリングするポート上のすべてのSYNパケットについて、netfilterのNFQUEUEアクションを使用して、ユーザースペースに座ってmoblockにプッシュします。 Moblockは効率的なマッチングを行い、ACCEPTまたはDROP応答をnetlinkに送り返します。
Moblock構成ファイルの形式は非常に単純です。各行に、123.123.123.42-123.123.124.56の形式で名前とIP範囲を指定します。 moblockが範囲をロードすると、それらの範囲と一致する効率的なデータ構造が構築されます。一致が原因でパケットがドロップされると、範囲名と実際の送信元IPがログに記録されます(一致のログを無効にした場合はログに記録されません)。
約230000IP範囲のデフォルト構成(ダウンロードされたブロックリスト)でmoblockを使用しましたが、認識できるパフォーマンスヒットは観察されませんでした(SYNパケットのみをフィルタリングする)ただし、カーネル/ユーザースペースのトラフィックを抑えることが重要です)。
注意点:moblockが実行されていない場合、NFQUEUEのデフォルトのアクションはDROPであり、アプリケーションのサービス拒否につながると思います。そうは言っても、私は6か月以上問題なくmoblockを継続的に実行してきました。それでも、正常なIPがサーバー上の:80に接続できなくなった場合に警告する監視プローブを設定することをお勧めします。回復するためにnetfilterで信頼できるIPを明示的にホワイトリストに登録していない限り、moblockを使用してsshをフィルタリングすることは絶対に避けてください。
ApacheconfigおよびiptablesのAFAIKDenyルールには、線形ルックアップ時間があります。
ある種。 IPTablesでチェーンを使用して分割できます。つまり、単純なアプローチでは、アドレスのAクラスブロック(1.0.0.0/8、2.0.0.0/8など)ごとにチェーンを作成し、そのルールを設定します。チェーン内のブロックにより、ルックアップ時間が大幅に短縮されます(つまり、最悪の場合、Aクラスルールに到達するための最大200のルール評価と、そのブロック内の多くのルール。「iptables -L-v-n」を使用してどのルールセットが最も評価されており、それらを一番上に移動します。これを行うための他のより良い方法があります。iptablesのドキュメントでこれについて説明しています。
ええ、あなたのシステムには、/etc/hosts.allow
があるはずです。見てみましょう。サービスごとでもIPをロックアウトする非常に簡単な例がいくつかあります。
一言で言えば、/etc/hosts.allow
:
ALL : ALL : allow
httpd : /etc/hosts.httpd.deny : deny
sshd : /etc/hosts.sshd.deny : deny
.htaccessで行うこともできます
これはuseragentによってブロックする例ですが、考え方は同じです: http://jetfar.com/trap-content-scraper-spam-harvester-bots-using-honeypot-wordpress-htaccess/
ApacheconfigおよびiptablesのAFAIKDenyルールには、線形ルックアップ時間があります。
これを除外する前に、試してからいくつかのテストを行います。影響は目立たない可能性があり、保守は非常に簡単です。
同様に、リストを/etc/hosts.denyに追加してみてください。
最初に両方をテストしないと、どちらが速いとは思いません。
乾杯/リッチー
カーネルをパッシングせずにそれを行うことはできないと思います。
ipset は良い解決策のようです。
そのウェブページからの引用:
あなたがしたい場合は
- 複数のIPアドレスまたはポート番号を保存し、一挙にiptablesによるコレクションと照合します。
- パフォーマンスを低下させることなく、IPアドレスまたはポートに対してiptablesルールを動的に更新します。
- 複雑なIPアドレスとポートベースのルールセットを単一のiptablesルールで表現し、IPセットの速度の恩恵を受ける
それならipsetがあなたにとって適切なツールかもしれません。