1

攻撃後のログ ファイルの分析に grep を使用しています。たいていそう

grep -F "POST /xxxxx.php" ./access-log

今、誰かが私の Web サイトのいくつかを攻撃しましたが、脆弱性がどこにあるのか、攻撃者の IP アドレスがどこにあるのかもわかりません。今度は、次のように、複数の Web サイトにリクエストを送信した IP アドレスを見つけたいと思います。

abcde.com-log:123.123.123.123 - - [12/Jan/2013:08:41:08 +0100] "POST /xxxxx.php HTTP/1.1" 200 1234 "-" "-"

wxyz.com-log:123.123.123.123 - - [12/Jan/2013:08:41:08 +0100] "POST /xxxxx.php HTTP/1.1" 200 1234 "-" "-"

しかし、grep やその他の UNIX ツールを使用してその一致のみを取得する方法がわかりません。一致するのは複数のログ ファイルです。

4

1 に答える 1

0

必要な IP アドレスが各ログ ファイルの最初のフィールドとして表示されるものであると仮定して、次のことを試してください。

awk '
   /POST \/xxxxx\.php/ {
      ip=$1
      if ( !(ipFilePairs[ip,FILENAME]++) ) {
         ipFileCnt[ip]++
         ipFileList[ip] = ipFileList[ip] " " FILENAME
      }
   }
   END {
      for (ip in ipFileCnt)
         if (ipFileCnt[ip] > 1)
            print ip ":" ipFileList[ip]
   }
' *.log
于 2013-01-18T01:30:50.657 に答える