Форум: "Прочее";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];
ВнизНужна помошь линуксоидов в написании части скрипта Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c