2017-01-10 11 views
1

У меня есть файлы истории веб-журнал, как это:Ищите куб.см атаки IP-адреса с помощью сценариев оболочки файлов журнала

157.15.14.19 - - 06 Sep 2016 09:13:10 +0300 "GET /index.php?id=1 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:13:11 +0300 "GET /index.php?id=2 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:13:12 +0300 "GET /index.php?id=3 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:14:13 +0300 "GET /index.php?id=4 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:14:14 +0300 "GET /index.php?id=5 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:15:15 +0300 "GET /index.php?id=6 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:15:16 +0300 "GET /index.php?id=7 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:15:17 +0300 "GET /index.php?id=8 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:16:10 +0300 "GET /index.php?id=9 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:16:10 +0300 "GET /index.php?id=10 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
8.8.8.8 - - 06 Sep 2016 09:17:10 +0300 "GET /index.php?id=11 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
9.9.9.9 - - 06 Sep 2016 09:17:10 +0300 "GET /index.php?id=12 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:18:10 +0300 "GET /index.php?id=13 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:19:10 +0300 "GET /index.php?id=14 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:19:10 +0300 "GET /index.php?id=15 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:20:10 +0300 "GET /index.php?id=15 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
123.123.123.123 - - 06 Sep 2016 09:21:10 +0300 "GET /index.php?id=15 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
157.15.14.19 - - 06 Sep 2016 09:22:10 +0300 "GET /index.php?id=15 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 

Я хочу узнать IP-адреса куб.см атаки, только через файлы вчера веб-журнал

В этом примере я подписываю cc-атаку:

каждые 5 минут. Тот же самый удаленный ip-запрос насчитывает более 5, ip будет атаковать cc и распечатать его.

Файл журнала весь день, и использовать только Баш скрипты, так же, как AWK, кошка, поглазеть, СЭД и т.д. ..

Пожалуйста мне предлагают некоторые, спасибо много.


Update:

Я пытаюсь WITE тестовый скрипт (на 2minutes тот же запрос число> 5)

[email protected]:/tmp/tb$ cat 5.txt |awk '{print $7,$1}' |awk -F: '{print $1*60+int($2/2),$0}' |sort |uniq -c -f2 |awk '{if($1>5){print $0}}' 
    10 546 09:13:10 157.15.14.19 

Но код настолько плохо, это будет оптимизация.

ответ

1
awk -v Interval=5 -v Trig=5 -F '[[:blank:]]*|:' ' 
     { 
     # using format log 
     # 157.15.14.19 - - 06 Sep 2016 09:13:10 +0300 "GET /index.php?id=1 HTTP/1.1" 200 16977 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 
     # $1   2 3 4 5 6 7 8 9 10  11 ... 

     ThisTime = $7 * 60 + $8 
     #if new cycle (so this line is not in the cycle) 
     if (ThisTime > (LastTic + Interval)) { 
      # check and print last cycle hit 
      for(IP in IPCounts) if (IPCounts[ IP] > Trig) print LastTime " " IP " : " IPCounts[ IP] 

      # reset reference 
      split("", IPCounts) 
      LastTime = $4 " " $5 " " $6 " " $7 ":" sprintf("%2d", ($8 - ($8 % Interval))) ":00" 
      LastTic = $7 * 60 + ($8 - ($8 % Interval)) 
      } 
     # add this line to new cycle 
     IPCounts[ $1]++ 
     } 

     END { 
      # print last cycle 
      for(IP in IPCounts) if (IPCounts[ IP] > Trig) print LastTime " " IP " : " IPCounts[ IP] 
      } 
     ' YourFile 


# for format of log 
# op.g.cc 124.145.36.121 - - [21/Nov/2016:03:38:02 +0800] ==> 172.11.0.238:80 "POST ... 
# $1  2    3 4 5   6 7 8 9  10 11 ... 

# change: 
# $7 by $6, $8 by $7 
# LastTime = $5 ":" $6 ":" sprintf("%2d", ($7 - ($7 % Interval))) ":00 +800]" 
# IPCounts[ $2]++ 

Примечание:

  • работы быстро и грязно для выбора времени (вы упоминаете 1 журнал в день). Если больше точности необходимо использовать mkftime использовать в режиме реального эпохи эталонного времени
  • триг уровень счетчик триггера (в 5 раз) и Интервал времени цикла (5 минут)
+0

Благодарности Большое спасибо .. – lines

+0

op.g.cc 124.145.36.121 - - [21/Ноябрь/2016: 03: 38: 02 +0800] ==> 172.11.0.238:80 "POST /zabbix/jsrpc.php?output=json-rpc HTTP /1.1 "200 77" 0.316 "" http://op.g.cc/?ddreset=1&sid= "" Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, например, Gecko) "" - "" - "upstream_response_time" 0.316 "request_time" 0.316 " dd.g.cc 60.223.153.54 - - [21/Ноябрь/2016: 03: 38: 02 +0800] ==> 172.11.0.53:8012" GET /? ts = 1479670682 & uid = & mid = & cs = HTTP/1.1 "200 479" 0.039 "" - "" Dalvik/2.1.0 (Linux; U; Android 5.0.2; Redmi Note 2 MIUI/V8.0.2.0.LHMCNDG) "" - "" 5.0.1.0002 "upstream_response_time" 0.039 "request_time" 0.039 " – lines

+0

Формат моего журнала был изменен следующим образом: Как изменить скрипты. Спасибо – lines