私はどこにウェブサイトを持っています:
したがって、私の考えは、IPごとのHTTPリクエストの数を制限することです(Google Botなどの有名なボットを除く):
->これらの「未解決」のIPをすべてブロックするのは良い考えですか?正当なトラフィックをブロックしますか?
アドレスごとのHTTPリクエストの数を制限するだけでは、「未解決」のIPアドレスはブロックされません。
どのアドレスが「未解決」であるかをリアルタイムで見つけると、すべての訪問者に対して少なくとも1回はDNSの逆引き参照が強制されます。これにより、最初のHTTP応答時間がせいぜい長くなり、ネームサーバーが利用できず、タイムアウトしたときにDoSに近い状態が発生します。これは本当に望ましくありません。
一般に、公開されているコンテンツをボットに捕まえられないように保護することは、シーシュポスのタスクです。サイトにアクセスする前に、すべての訪問者がチューリングテストに合格するわけではありません。利用可能なアプローチはどれも、Webサーバーの負荷を下げることしかできず、完全につかむことを妨げることはできません。また、差別化のためのすべての統計ベースのアプローチと同様に、コンテンツにアクセスできるボットの数を減らすと、必然的に、ブロックルールに不便を感じる通常の人間ユーザーの数が増えます。
Awstatsの詳細はわかりませんが、「未解決」ステータスは、逆引きDNSレコードのないすべてのIPアドレスに適用されると思います。リバースレコードなしでIPアドレスからのすべてのトラフィックをブロックすると、多くの通常の訪問者が死亡します。
Webサイトのログを調べて、ボットを選択的にブロックしてみてください。 fail2banを使用して、このトラフィックを自動化された方法でブロックできます。 fail2banはログファイル分析に基づいているため、access.logでパターンを見つけて、それに応じてfail2banを構成するだけで済みます。
あなたの提案は、あなたのコンテンツを盗んでいるアドレスの5%が同じアドレスであることを前提としています-しかし、それが事実かどうかはわかりません。確かに、私はあなたが多くの合法的なトラフィックをブロックすることを期待しています。
Syneticon-djの言うことのほとんどに同意しますが、リーチング防止のより効果的な方法があります(その用語についてはグーグルを試してください)。リファラーをチェックし、セッションIDを要求し、CSRF保護を使用しますが、フォームフィールドではなくCookieでトークンを渡します。これは、リーチャーをブロックするという観点から、リーチャーを識別するためのメカニズムを提供します。実際には、できるだけ早い段階で、つまり、そのようなIPからSYNパケットを取得するときにこれを実行する必要があります。つまり、ファイアウォールでそれらをブロックすることを意味します。 Fail2banは、ログエントリに基づいてファイアウォールをオンザフライで再構成する方法を提供します。ただし、iptablesルールの長いチェーンに注意してください レイテンシー、したがってスループットに影響します 。