Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.006 c
2-1260903513
ВадимММ
2009-12-15 21:58
2010.02.14
bmp не сделать


1-1237742925
Eazy
2009-03-22 20:28
2010.02.14
Сфера применения Delphi7


2-1261037894
JohnKorsh
2009-12-17 11:18
2010.02.14
Ворос по INDY.


2-1260805424
JohnKorsh
2009-12-14 18:43
2010.02.14
Delphi 7 перестал останавливатться по Breakpoint.


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский