apache内の例外アクセス量をクエリーして禁止するユーザー


Apacheでの異常アクセスは、通常、頻繁に大量にアクセスするユーザーを指し、apacheのlogを通じてlinuxのいくつかのコマンドと組み合わせて、これらのユーザーを分析し、apacheのプロファイルを通じてアクセスを禁止することができます.まず、apacheのlog方式を変更して、いくつかの画像、cssなどのファイルを記録しないで、このようにlogの中で1行ごとに基本的に1回のアクセスに対応することができて、もし画像などのファイルの記録を除去しないならば、正常なユーザーは1つのページにアクセスして、同時にページの上の画像、cssなどのファイルをダウンロードして、複数のlogの記録を生んで、カウントの結果に影響します.apacheのconfファイルに次の構成を追加します.
SetEnvIfNoCase Request_URI/.css$ useless-file SetEnvIfNoCase Request_URI/.gif$ useless-file SetEnvIfNoCase Request_URI/.ico$ useless-file SetEnvIfNoCase Request_URI/.jpg$ useless-file SetEnvIfNoCase Request_URI/.js$ useless-file CustomLog logs/fwolf.com/access.log combined env=!useless-file
これにより、SetEnvIfの他の使い方については、ApacheドキュメントのSetEnvIfおよびEnvironment Variables in Apacheセクションを参照できます.
次に、しばらくの間実行すると、logファイルで最もアクセスの多いユーザーを分析できます.コマンドは1つだけ必要です.cat access.log |awk '{print $1}'| sort | uniq -c |sort -n
少しずつ見てみましょう.
  • catは言うまでもありません.
  • awkの役割は、最初の列、すなわちクライアントipアドレスを選別することである.
  • 最初のsortは、選別されたipアドレスを並べ替えることで、同じipアドレスが
  • に並ぶ.
  • uniqは重複値を除去するツールですが、-cパラメータを付けると、各値に何回
  • が現れるかを統計することができます.
  • 最後のsortは、uniqで生成された結果をソートし、-nというパラメータのデフォルト設定に従って、最大で一番下に並べます.

  • だから、私たちが得た結果はこうだったはずです.2040 219.148.106.198 2047 218.12.78.14 2149 218.12.26.233 2205 121.28.4.34
    , ip , log , , , apache conf :
    <Directory />
    Order Deny,Allow
    Deny from 219.143.69.2
    Deny from 218.12.26.233
    Deny from 61.135.162.51
    Allow from all
    </Directory>
    このように監視、設置を繰り返し、邪魔をする人がいないまで.
    同様に、ページを繰り返しリフレッシュして表示するユーザーを表示するには、次のコマンドを使用します.
    grep "GET/url/to/some/file"access.log |awk '{print $1}' |sort |uniq -c |sort -n
    最後のsortはsort-nrのように最大のサイトにアクセスすることをお勧めします.|lessに合わせて、使いやすいです.
    cat access.log |awk '{print $1}'| sort | uniq -c |sort -nr |less
    man sortでは−nは数字順に配列され,−rは逆配列(reverse)であると述べた. awk 。