Главная страница
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.012 c
15-1259954884
oxffff
2009-12-04 22:28
2010.02.14
Спасибо.


1-1237982706
Eraser
2009-03-25 15:05
2010.02.14
TListView и экшены


2-1260793787
Б
2009-12-14 15:29
2010.02.14
Тангенс в в Pascal e


2-1260784227
JohnKorsh
2009-12-14 12:50
2010.02.14
Вопрос по бееспроводным сетям.


15-1260353314
ocean
2009-12-09 13:08
2010.02.14
Mozilla с Avast?