| John 的个人资料Старый нудила日志列表SkyDrive | 帮助 |
|
10月16日 Block IP addressПонадобилось мне блочить плохих пользователей через firewall. Написался забавный скрипт.
Что делает?
Парсит список лог фалов задаваемый маской. Выявляет упоминание IP адресов в этих файлах и формирует firewall-е правила по их блокировке. Расчитано на сутки (т.е. через 23 часа происходит реабилитация IP адреса.
Чуть подробне :
Скрипт стОит запускать раз в час. Файлы по маске смотрятся в текущем каталоге (для тех кто будет делать "запланированную задачу")
Сначала disable-иться правило "следующего часа" (как раз для "реабилитации IP". если за час не нагадит в лог файл, то в список и не попадёт).
Потом формируется список IP упоминавшихся в LOG файлах с течении последних 60 минут (параметр /TimeOld). чтобы не просматривать все файлы, смотрится дата модификации файла и если она раньше TimeOld, то файл даже не просматривается. Т.к. ввиду разных причин командная строка ограничена (я поставил 6000 символов в начале скрипта - iCmdLen = 6000 ), то не все отмеченные в логе N раз (/Count = 2000) могут попасть в правило, но скорее всего попадут в следующем часу. По умолчанию файл считается W3C логом с time stamp в GMT, т.е. читается комментарий #Fields: и определяются позиции параметров "date", "time" и "c-ip". Но можно задать позиции "руками" (встроенный help подскажет как"). Список запихивается в правило с именем XX (час запуска скрипта). Если правило отсутствует - оно создаётся.
Вот такой весёлый скрипт. Нам помог утихомирить небольшой напавший на нас BotNet. Идея мне понравилась тем, что как-то легко "самореализовалась" система реабилитации IP.
P.S. не всё оптимально (лишний раз формирование словаря и отсутствие некоторых проверок), зато наглядно :-)
P.P.S. возникнет желание - можно докастомизировать (указание каталогов, маски названий правил и произвольная реабилитация, например 3 дня) ...
引用通告此日志的引用通告 URL 是: http://kgb-boss.spaces.live.com/blog/cns!8B2CF0F53CBBA8FF!896.trak 引用此项的网络日志
|
|
|