对于大多数互联网公司,基于日志分析的WEB入侵检测分析是不可或缺的。
那么今天我就给大家讲一讲如何用graylog的extractor来实现这一功能。
首先要找一些能够识别的带有攻击行为的关键字作为匹配的规则。
由于我不是专门搞安全的,所以在网上找了一些软waf的规则脚本。
剩下来的工作就可以交给Graylog的extractor实现了。
这次介绍一下extractor的Copy input用法。
(1)waf规则脚本如下:
\.\./ select.+(from|limit) (?:(union(.*?)select)) having|rongjitest sleep\((\s*)(\d*)(\s*)\) benchmark\((.*)\,(.*)\) base64_decode\( (?:from\W+information_schema\W) (?:(?:current_)user|database|schema|connection_id)\s*\( (?:etc\/\W*passwd) into(\s+)+(?:dump|out)file\s* group\s+by.+\( xwork.MethodAccessor (?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\( xwork\.MethodAccessor (gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\:\/ java\.lang \$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\[ \<(iframe|script|body|img|layer|div|meta|style|base|object|input) (onmouseover|onerror|onload)\=
(2)在导航栏Search中选择一条nginx日志,点击右边的小黑三角,依次选择Create extractor for field url -> Copy input
(3)在Condition中选择正则表达式匹配Only attempt extraction if field matches regular expression ,选择一条waf规则填入Field matches regular expression,在store as field中填入要保存的字段risk_url,
这个操作的主要作用就是把符合waf规则条件的url字段的值在拷贝到新的字段risk_url中,这样在做数据过滤的时候,只要判断risk_url字段不为空就能把风险请求的url过滤出来了。
(4)在Streams新建一个名为risk_url_log的stream。
(5)在我们建好的risk_url_log的stream中选择Manage Rules,Field填入刚才规则里创建的字段risk_url, Type选择field presence ,点击save保存。
这一步的操作主要就是告诉graylog只要字段risk_url字段是存在的,就放入risk_url这个stream中,方便我们日后查阅。