Я просто cat /var/log/auth.log
захожу и вижу, что | grep "Failed password for"
записей много .
Однако есть два возможных типа записи - для действительного / недействительного пользователя. Это усложняет мои попытки к | cut
ним.
Я хотел бы видеть создание списка (текстового файла) с IP-адресами возможных злоумышленников и количеством попыток для каждого IP-адреса. Есть ли простой способ создать его?
Кроме того, касательно только ssh
: что все записи /var/log/auth.log
я должен учитывать при составлении списка возможных злоумышленников?
Пример моего 'auth.log' со скрытыми номерами:
cat /var/log/auth.log | grep "Failed password for" | sed 's/[0-9]/1/g' | sort -u | tail
Результат:
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user ucpss from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user vijay from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user webalizer from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user xapolicymgr from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user yarn from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zookeeper from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zt from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for mysql from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.111.111.1 port 11111 ssh1
/etc/ssh/sshd_config
... настройки поискаPasswordAuthentication no
иPermitRootLogin without-password
... тогда все такие попытки пароля будут сорваны, прежде чем они войдут в auth.log ...Ответы:
Вы можете использовать что-то вроде этого:
Он ищет строку
Failed password for
и извлекает (-o
) IP-адрес. Он сортируется иuniq
подсчитывает количество случаев.Вывод будет выглядеть следующим образом (с вашим примером в качестве входного файла):
Последний в выводе пробовал 6 раз.
источник
| sort -n
в цепочку.sed -nr '/Failed/{s/.*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/;p}'
заменяет оба greps.zgrep "Failed" /var/log/auth.log*
поиск в архивах сжатых журналов, чегоsed
нельзя.Это может быть раздутым решением, но я предлагаю вам взглянуть на установку что-то вроде Fail2Ban
Это сделано для такого рода журналирования + добавляет бонус в виде возможности добавлять (временные) правила в ваш брандмауэр, чтобы блокировать повторяющихся нарушителей. Обязательно внесите в белый список свои собственные IP-адреса, хотя мне несколько раз удавалось временно заблокировать себя
источник
Это сработало очень хорошо для меня. (IP-адреса были изменены, чтобы защитить виновных)
источник
источник
password
- не работает. Он даже не охватывает различные типыawk
записей, столбец печати является альтернативойcut
, а не решением.uniq -c
как в лучшем ответе.