Привет,
читатель!
В этом
небольшом посте, хочу рассказать о полезной возможности Splunk, а именно об
автоматическом выполнении преобразований значений полей с помощью eval. Это
позволит немного упростить запросы, а логику преобразований вынести в
конфигурационный файл props.conf.
Итак,
проверяя в очередной раз журнал Apache с целью найти попытки эксплуатации
shellshock, увидел ряд кодированных URL.
sourcetype=Apache_access
"bin"
| table clientip,useragent,uri
Естественно,
стало интересно, что собственно запрашивают. Для преобразования закодированных
URL в человекочитаемый вид у оператора eval есть функция urldecode. Её и используем:
sourcetype=Apache_access
"bin"
| eval urldec = urldecode(uri)
| table
clientip,useragent,urldec,uri
Теперь стало
понятнее, директория /cgi-bin/ у
меня всё равно пустая. Но что если раскодировку URL автоматизировать и
поручить Splunk'у. Для этого необходимо внести изменения в конфигурационный
файл props.conf.
Для этого
необходимо добавить в props.conf
(по-умолчанию живет тут -/opt/splunk/etc/apps/search/local/props.conf)
следующую строку:
[Apache_access]
EVAL-uriDecode =
urldecode(uri)
Немного
поясню:
[Apache_access] - новое преобразование будет
выполняться для sourcetype, имеющего имя Apache_access. Вообще, назначить
преобразование можно для Host, Source, Sourcetype, указав их имена или
значения.
EVAL-uriDecode - объявление нового преобразования
с сохранением значения в поле uriDecode.
urldecode(uri) - само преобразование над существующим полем uri.
Чтобы всё
работало, необходимо запомнить 2 вещи:
- Поле, над которым выполняется
преобразование должно существовать в sourcetype.
- Функция
преобразования должна поддерживаться оператором eval.
Перезапускаем
Splunk (/opt/splunk/bin/splunk restart) и теперь можем использовать в
запросах новое поле.
sourcetype=Apache_access
"bin"
| table
clientip,useragent,uriDecode,uri
Таким
образом, мы можем облегчить запросы в Splunk и спрятать преобразования полей в
конфигурационном файле. Может кому пригодится.
Комментариев нет:
Отправить комментарий