如果在日志中多次匹配,则配置logstash以禁止IP地址



如果一个IP地址在日志文件中匹配了5次,我想配置我的logstash来禁止它,但我不知道如何计算IP被找到的次数,我的实际配置文件如下:

input {
  file {
    path => "/home/myuser/mygameserver/server_log.txt"
    start_position => "beginning"
  }
}
filter {
  grok {
    match => { "message" => "[(?<date>[.*?])] BAD RCON ATTEMPT BY: %{IP:clientip}" }
  }
}
output {
  exec {
    type => abuse
    command => "iptables -A INPUT -s %{clientip} -j DROP"
  }
}

日志输出如下:

[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81
[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81
[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81
[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81
[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81
[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81
[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81
[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81
[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81
[17/11/2015 22:38:02] BAD RCON ATTEMPT BY: 179.214.221.81

我认为配置文件是正确的,我只想在它上面放一个计数器,只有在日志上发现5次IP地址时才能执行防火墙禁令。

metrics{}将计算有多少项通过logstash。它通过"meter"参数将计数分组在一起,文档显示了如何使用变量(如IP地址)作为值。因此,这可以为您创建一个新的事件,其中包含特定时期内看到的IP计数。

然后,通过在达到指定计数时添加标记,可以使用throttle{}来强制执行可以看到IP地址的次数。

既然你已经计算了它们并应用了一个限制,你就可以执行一些操作了。您没有描述如何更新防火墙,但logstash有一个http{}输出,它可能会使用适当的数据访问某些URL。该输出将是由油门过滤器设置的标记的条件("if")。

希望能有所帮助。

最新更新