LINUX.ORG.RU

GPEP'нуть айпишники из логов


0

1

Доброго дня! Пытаюсь разобраться как парсить логи. ОС ubuntu, файл /var/log/auth.log У меня задача: выделить все айпишники из файла и передать их iptables'у.

со вторым проблем нет, но вот выделить все айпишники не могу, т.к.:

Apr 7 18:45:31 mail sshd[26579]: Failed password for invalid user ts1 from 109.200.103.226 port 39892 ssh2
Apr 7 18:45:34 mail sshd[26581]: Failed password for invalid user ts3 from 109.200.103.226 port 40405 ssh2
Apr 8 01:59:07 mail sshd[27835]: Failed password for root from 46.252.130.123 port 34199 ssh2
Apr 8 01:59:10 mail sshd[27837]: Failed password for root from 46.252.130.123 port 34758 ssh2

есть строки с «for invalid user ts1 from » и есть с «for root from». я пытался сделать так:

cat auth_log_viewer.sh

#!/bin/bash
for ip in `grep "Failed password for invalid user " /var/log/auth.log | gawk '{print $13}' | sort -u`
do
    #Перебор INPUT OUTPUT FORWARD
    for tabs in INPUT OUTPUT FORWARD
    do
        echo "Заносим $ip в REJECT... ok"
        iptables -A $tabs -s $ip -j REJECT
        let "inner+=1"
    done
    echo
done
exit 0

Но это только для «Failed password for invalid user »

Как-то можно без использования временных файлов выдернуть из текста все айпишники? Пробовал так же по маске [0-9][0-9].[0-9] и т.д., но айпишники могуть быть и 1.1.1.1 10.1.1.1 100.1.1.1 и т.д.

Заранее спасибо за помощь!!!

Ответ на: комментарий от redgremlin

а вот это не подошло... в выводе увидел и айпишники и просто цифры. Но все равно спасибо!!!

levin-a
() автор топика
sed -n 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/\nip&\n/gp' /var/log/auth.log | grep ip | sed 's/ip//'| sort | uniq
Fletch ★★
()
Ответ на: fail2ban от dhameoelin

fail2ban пробовал, даже не знаю, почему перестал пользоваться... толком не срабатывала на некоторые правила для некоторых сервисов, уже не помню каких...

levin-a
() автор топика

я так делаю:

$ sed -r '/: Failed password/s/.*\s(([0-9]{1,3}\.){3}[0-9]{1,3})\s.*/\1/' x.txt 
109.200.103.226
109.200.103.226
46.252.130.123
46.252.130.123
drBatty ★★
()

странно, когда в этом скрипте исполняется строка iptables -F , то у меня отваливается коннект с серваком... не пингуется ни с одного айпишника, хотя все свои айпишники из списка исключаю...

что может быть?

levin-a
() автор топика
Ответ на: комментарий от levin-a

все)) все решилось... удалил строку и написал ее заново. Странно, но работает )

levin-a
() автор топика
Ответ на: комментарий от levin-a

странно, я не жалуюсь, но Вам виднее

а -F Вам правило, по которому открыт доступ на 22 порт не сносит, случаем? ;)

dhameoelin ★★★★★
()
Ответ на: комментарий от dhameoelin

нет)) сейчас скрипт выглядит таким образом:

cat auth_log_viewer.sh
#!/bin/bash
outer=1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo "Сброс таблиц iptables.. ok"
echo ""
echo ""

echo "Парсинг логов ..."
for ip in `egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' /var/log/auth.log | sort -u | egrep -v "93.184.XXX.XXX|46.XXX.XXX.XXX|0.0.0.0"`
   do
      echo "Перебор IP-адресов: $ip"
      echo "------------------"
      inner=1

      #Перебор INPUT OUTPUT FORWARD
      for tabs in INPUT OUTPUT FORWARD
         do echo "Заносим $ip в REJECT... ok"
         iptables -A $tabs -s $ip -j REJECT
         let "inner+=1"
      done
   let "outer+=1"
   echo
done

echo "Было собрано и забанено $outer IP'шников"

exit 0 

Все работает! Спасибо всем за помощь!!!

levin-a
() автор топика
Ответ на: комментарий от levin-a

В fail2ban никак не обрабатывается очередность отправки правил в iptables; вызовы из разных jail'ов сваливаются на iptables практически одновременно, отчего у того сносит крышу и он эти самые правила теряет. Сейчас подготовлю и выложу переписку по этому поводу...

YAR ★★★★★
()
Ответ на: комментарий от levin-a

>egrep -v «93.184.XXX.XXX|46.XXX.XXX.XXX|0.0.0.0

„любой символ“ это ТОЧКА, а не ваше „икс“! Тебя твой-же скрипт забанит нафиг. Кроме того, существуют нормальные решения. Обычно достаточно попросту порт сменить.

drBatty ★★
()
Ответ на: комментарий от levin-a

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

drBatty ★★
()
Ответ на: комментарий от drBatty

Про ключи-то я не только слышал, но и пользуюсь и очень активно. А как другим админам объяснить о том, что пароли запоминать нужно, я не знаю.

Порт менять нельзя, т.к. есть приложения, которые работают только с 22 портом и менять его нельзя.

levin-a
() автор топика
Ответ на: комментарий от levin-a

>Про ключи-то я не только слышал, но и пользуюсь и очень активно. А как другим админам объяснить о том, что пароли запоминать нужно, я не знаю. Порт менять нельзя, т.к. есть приложения, которые работают только с 22 портом и менять его нельзя.

В таком случае есть смысл запретить вход по паролю, пусть все входят по ключу. Ну и банить тех, кто пытается войти по паролю. Или не банить...

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.