В файле .csv нет ничего волшебного. Он просто означает значения, разделенные запятыми (иногда табуляцией).
mv myfile.txt myfile.csv
done
Это всего лишь способ выполнить работу. Вместо имени пользователя я предпочитаю подсчитывать, сколько раз конкретный 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-адреса, которые показывают вредоносные признаки (например: слишком много сбоев пароля , ищущие эксплойты и т.д ..). Его легко понять и настроить в соответствии с вашими потребностями.
$ 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