kiltum (kiltum) wrote,
kiltum
kiltum

Тут сижу, думаю думу на тему "автоотстреливалки идиотов". Дано: много-много строк, из которых надо выдрать значения скриптом. Скажем, логи. При этом "привязаться" можно только к части строки.

Например, скармливаем скрипту следующий кусок лога:

Nov 13 18:47:04 back sshd(pam_unix)[1637]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=cirrus.fis.fc.ul.pt
Nov 14 14:27:37 back sshd(pam_unix)[8796]: check pass; user unknown
Nov 14 14:27:37 back sshd(pam_unix)[8796]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=222.184.241.126

Надо выдрать cirrus.fis.fc.ul.pt или 222.184.241.126. Я знаю несколько приемов:

Первый, самый простой: отсеять строки по authentication failure, потом "взорвать" строку по символам "=" и взять самый последний кусок. Как вариант, вместо "взрыва" использовать поиск "=" справа. Способ шикарный и самый быстрый (в смысле реализации), но возникают проблемы с конфигурированием. К примеру, завтра авторы ssh перетащат rhost в середину и всё придется переделывать.

Второй, аналогичный первому: "взрывать" по "пробелу", потом искать среди строк rhost= и выкусывать нужное. На мой взгляд, самый приличный способ, если требуется искать не только rhost=

Последний: написать regexp. Самый плохой, ибо ни читабельности, ни юзабельности.

Нафига это? Возникло желание написать автобанилку чудиков, машины которых перебирают пароли, ищут всякие скрипты в cgi-bin и так далее. Поглядел в инете - ничего, кроме пары поделок на питоне не увидел.

Пока это видится в этаком минималистическом стиле: в syslog вставляется строчка типа *.* script. Онный же, переваривая через себя весь поток, на основе правил (типа 3 раза хост попытался послать проверить на openrelay) вызывает всякие программки (типа добавить правило в фаирволл)

Вот, сижу, думаю, как лучше всё это организовать.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 24 comments