背景
目前在公网上有一个腾讯云服务器Chrome HSTS异常导致无法访问HTTPS网页,提供web服务。使用的架构是 LNMP。为了加强web服务的安全性,安装了nginx模块,可以稍微阻挡一些其他的web攻击,比如SQL注入。 waf 模块的日志记录功能已启用。针对目前的情况,需要对waf模块的日志进行分析,定期检查web服务器是否存在潜在的危机。下面按照我的步骤来看看如何使用ELK日志分析平台来分析nginx的waf日志。并根据分析结果做一些潜在的危机管理工作。
一、waf 日志上传到 ELK 服务器
目前waf的日志已经转移到ELK服务器的/var/log/nginx/waf目录下,总共43天的日志数据
我们先简单看一下waf模块的日志
[root@elk7 ~]# cat /var/log/nginx/waf/_2020-07-.log
61.28.109.5 [2020-07-28 23:30:07] "GET /?id=../etc/" "-" " /5.0 ( NT 10.0; Win64; x64) /537.36 (KHTML, 像壁虎) /79.0.@ >3945.88 /537.36" "\.\./"
61.28.109.5 [2020-07-28 23:30:28] "GET /?id=../etc/" "-" " /5.0 ( NT 10.0; Win64; x64) /537.36 (KHTML, 像壁虎) /79.0.@ >3945.88 /537.36" "\.\./"
#从这两个日志来看Chrome HSTS异常导致无法访问HTTPS网页,waf模块日志有一定的格式,所以我们可以根据日志格式写正则表达式
二、过滤 waf 日志
[root@elk7 ~]# vim /etc//conf.d/nginx-waf.conf
输入{
文件{
路径 => [ "/var/log/nginx/waf/*.log" ]
=> { "标签" => "nginx-waf" }
=> ""
# => "/dev/null"
}
}
{
如果 [tags] 中的“nginx-waf”{
咕咕{
匹配 => [ "", "%{IP:}\s+\[%{:}\]\s+\"(?:%{WORD:} %{:})\"\s+\"( %{USER:user}|)\"\s+\"%{:}\"\s+\"(?.*)\"" ]
匹配 => [ "", "%{IP:}\s+\[%{:}\]\s+\"(?:%{WORD:} %{:})\"\s+(\" |)\"((?
.*)|-)\"\s+\"%{:}\"\s+\"(?.*)\"" ]
}
日期{
=> "亚洲/"
match => ["", "yyyy-MM-dd HH:mm:ss"]
=> "@"
=> ""
}
地理信息 {
=> ""
=> "geoip"
=>"/usr/share////jruby/2.5.0/gems/--geoip-6.0.3-java//- City.mmdb"
=> [ "[geoip][]", "%{[geoip][]}" ]
=> [ "[geoip][]", "%{[geoip][]}" ]
}
}
}
{
如果 [tags] 中的“nginx-waf”{
{
主机 => ["10.1.1.1:9200"]
index => "-nginx-waf-%{+YYYY.MM.dd}"
}
}
}
过滤日志以形成以下有价值的字段:
访问者的公共IP
@网站被访问的时间
用于访问网站的HTTP请求方法
请求的页面资源(URL)
您使用什么浏览器终端访问网站
触发waf模块的内容会被拦截
地理信息。访问者公网IP所在城市
地理信息。访问者公网IP所在省份
地理信息。访问者公网IP所在国家
三、分析日志
评论留言