如果在日志中多次匹配,则配置 logstash 禁止 IP 地址
Configure logstash to ban IP address if it match several times in log
我想将我的 logstash 配置为禁止在日志文件中匹配 5 次的 IP 地址,但我不知道如何计算该 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
我认为配置文件是正确的,我只是想在它上面放一个计数器,只有在日志中找到该 IP 地址 5 次时才执行防火墙禁令。
metrics{} 将计算通过 logstash 的项目数。它通过 'meter' 参数将计数组合在一起,文档显示了如何使用变量(如您的 IP 地址)作为值。因此,这可以为您创建一个新事件,其中包含在特定时间段内看到的 IP 计数。
throttle{} 可用于强制显示 IP 地址的次数,方法是在达到指定次数时添加标签。
既然您已经对它们进行了计数并应用了限制,您就可以执行一些操作了。您没有描述如何更新您的防火墙,但 logstash 有一个 http{} output 可以用适当的数据命中一些 URL。此输出在节流过滤器设置的标签上是有条件的 ("if")。
希望对您有所帮助。
我想将我的 logstash 配置为禁止在日志文件中匹配 5 次的 IP 地址,但我不知道如何计算该 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
我认为配置文件是正确的,我只是想在它上面放一个计数器,只有在日志中找到该 IP 地址 5 次时才执行防火墙禁令。
metrics{} 将计算通过 logstash 的项目数。它通过 'meter' 参数将计数组合在一起,文档显示了如何使用变量(如您的 IP 地址)作为值。因此,这可以为您创建一个新事件,其中包含在特定时间段内看到的 IP 计数。
throttle{} 可用于强制显示 IP 地址的次数,方法是在达到指定次数时添加标签。
既然您已经对它们进行了计数并应用了限制,您就可以执行一些操作了。您没有描述如何更新您的防火墙,但 logstash 有一个 http{} output 可以用适当的数据命中一些 URL。此输出在节流过滤器设置的标签上是有条件的 ("if")。
希望对您有所帮助。