Как управлять файлом журнала с помощью grep или awk?

В файле .csv нет ничего волшебного. Он просто означает значения, разделенные запятыми (иногда табуляцией).

mv myfile.txt myfile.csv

done

2
09.12.2016, 20:38
2 ответа

Это всего лишь способ выполнить работу. Вместо имени пользователя я предпочитаю подсчитывать, сколько раз конкретный IP-адрес пытается подключиться к моему хосту, потому что в конечном итоге я могу его заблокировать.

awk '/Failed password/{ z[$11]++; } 
     END{ 
       for (i in z){ 
         if (z[i]>3) printf("%s attemps %s times.\n", i, z[i])
       }
}' /var/log/secure

(Конечно, это может быть одинарная команда, я сделал отступ для повышения читабельности.)

Объяснение:

awk читает файл журнала построчно. Если строка содержит строку string / Failed password / увеличивает индекс элемента массива z [$ 11] ++ на $ 11 (т.е. IP-адрес): я использую это как счетчик. В конце найдите в массиве z [$ 11] и распечатайте только те IP-адреса, которые пытались подключиться более 3 раз.
Вы можете настроить чек и сообщение для печати по своему усмотрению.


Если вас беспокоят попытки подбора пароля, могу ли я предложить вам использовать существующий инструмент как Fail2ban , который сканирует файлы журналов и блокирует IP-адреса, которые показывают вредоносные признаки (например: слишком много сбоев пароля , ищущие эксплойты и т.д ..). Его легко понять и настроить в соответствии с вашими потребностями.

0
27.01.2020, 22:43
$ awk '/Failed password/{for(i=1;i<=NF;i++)if($i~/for/)user[$(i+1)]++}END{for(j in user){if(user[j]>3){printf("%s : %s times failed\n",j,user[j])}}}' /var/log/secure
0
27.01.2020, 22:43

Теги

Похожие вопросы