Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.02.14;
Скачать: CL | DM;

Вниз

Нужна помошь линуксоидов в написании части скрипта   Найти похожие ветки 

 
NailMan ©   (2009-12-08 15:44) [0]

пишу скрип для роутера, который должен сканировать лог доступа к FTP и таблицу правил в iptables и выявлять попадания злостных IP и банить любителей брутфорсинга. Сделал пока базу, но требуется доводка алгоритма.

Алгоритм:
1) смотрим в логе authwarn.log  скажем 30 последних строк и ищем строки со словами vsftpd и "FAIL LOGIN" и сохраняем злые айпишники
Надо сказать что апишник как правило одинаковый будет ибо атак с двух одновременно зафиксированно не было ни разу.
делаю вот такой командой
IPs=`cat ${logfile} | tail -n 30 | grep vsftpd | grep "FAIL LOGIN" | awk -F "\"" "{print $2}" | awk -F "\" "{print $1}" >> ${tmpfile}`

если нет в конце >> ${tmpfile} то получается строка примерно такого вида(адреса разделены пробелами)
100.100.100.100 100.100.100.100 100.100.100.100 100.100.100.100 100.100.100.100

Далее я могу этот айпишник получить и отдельно, так что я его знаю в переменной IP
Хочется понять как определить количество слов 100.100.100.100 в множестве IPs не используюя промежуточные файл?

Я не смог найти команд для определения сего(в линуксе вобщем то еще чайник, да и линукс только на роутере мучаю, не на десктопе), потому сделал иначе: в конце сканирования строк лога есть >> ${tmpfile} и результат сохраняется построчно в темп-файл.
Далее я командой wc -L ${tmpfile} получаю фактически число вхождений айпишника в 30 последних строках лога и если количество >5 делаю процедуру занесения айпишника в iptables c опцией REJECT и сообвественно его бана.

Но создание и удаление левых файлов как то некрасиво выглядит, можно сделать то же самое но со строками? как определить число повторений 100.100.100.100 в строке  "100.100.100.100 100.100.100.100 100.100.100.100 100.100.100.100 100.100.100.100"?

дальше в скрипте у меня совершается то же самое с таблицей INPUT в iptables так что там еще и фильтровать надо и айпишник и его результат по nslookup и также надо из строки определить число вхождений(в общем случае) злостного имени или айпишника в строке результата. если число вхождений =0 то добавляем, если >0 то ничего не делаем(чтобы не переполнять таблицу правил).

поможите разобраться со строковыми переменными - перелопатил кучу литературы  - нифига не нашел вразумительного или даже  примеров каких в других скриптах.

ЗЫ: шелл у меня /bin/sh


 
Рамиль_   (2009-12-08 15:53) [1]

А может не мучаться и сделать примерно так:
http://web.opennet.ru/tips/info/2140.shtml
Или iptables такого не умеет?


 
RWolf ©   (2009-12-08 16:00) [2]


> как определить число повторений 100.100.100.100 в строке
>  "100.100.100.100 100.100.100.100 100.100.100.100 100.100.
> 100.100 100.100.100.100"?

cat строка | sed (тут заменяем все пробелы на \n) | grep -c 100.100.100.100


 
NailMan ©   (2009-12-08 16:02) [3]

не, это не то, мне нужно банить не людей которые коннектятся часто вообще, а людей которые часто неудачно логинятся.

Пробовал делать аналогичный скрипт - если у меня стоит ограничение(или не стоит) на число подключений и потоков на один IP, то чувак у каторого включено в качалке 10-20 и тд потоков он забанится, так как качалка все время пытается сделать подключение нового потока к ФТП. Если есть ограничение то больше разрешенных не выйдет, но пытаться он будет и палюбас заблокируется.

Моя задача пресекать именно попытки брутфорсинга с подбором логина или логина-пароля. Отработка раз в 5 минут сего скрипта меня устраивает, главное делать именно это, а не просто доступ к ФТП. От DDNS защита в роутере включена и так.

---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13


 
RWolf ©   (2009-12-08 16:05) [4]

а если точнее, то:
echo $IP_STRING | sed -r "s/ /\n/g" | grep -c 100.100.100.100


 
Рамиль_   (2009-12-08 16:07) [5]

Тогда так
http://www.fail2ban.org/wiki/index.php/Main_Page

http://adminletters.blogspot.com/2009/07/ssh-ftp-http-fail2ban.html


 
NailMan ©   (2009-12-08 17:31) [6]

[5] Рамиль_
Видать прога хорошая, но увы под Mips на котором мой роутер построен его нет.

Вобщем ксрипт с помощью [4] RWolf © собрал - усе работаетъ. Айпишник получается, смотрится его наличие среди забаненных и по айпи и по имени и если там его нет - добавляется. Теперь таблица правил не раздувается чрезмерно.

Усем спасибо за внимание.

---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13



Страницы: 1 вся ветка

Текущий архив: 2010.02.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
15-1260088479
Clone
2009-12-06 11:34
2010.02.14
хп на ноут


1-1237819822
Marfusha
2009-03-23 17:50
2010.02.14
Запуск макроса OpenOffice из Delphi


2-1260637936
recop
2009-12-12 20:12
2010.02.14
После выполнения файла cmd получить содержание переменных среды


1-1237817783
Дмитрий Белькевич
2009-03-23 17:16
2010.02.14
SHBrowseForFolder открывается пустым


2-1260986848
Михаил Левшов
2009-12-16 21:07
2010.02.14
Как очистить все окошки редактирования на форме (TEdit)