Elasticsearch 容器服务 如何通过日志去检测爆破事件比如说一分钟登陆失败了多少次我需要判断具体的字段 或者通过grep去输出
可以通过以下步骤使用 Elasticsearch 容器服务来检测爆破事件:
- 创建索引:在 Elasticsearch 中,索引是一个包含相关数据的逻辑命名空间。可以使用 curl 命令在 Elasticsearch 中创建一个新索引,例如:
curl -XPUT 'http://localhost:9200/login-logs'
- 将日志数据导入 Elasticsearch:可以使用 Logstash 将日志数据从日志文件中导入 Elasticsearch。在 Logstash 配置文件中,可以指定输入来源、过滤器和输出目的地。例如,以下配置文件将从 /var/log/auth.log 文件中读取 SSH 登录日志,并将其导入到 Elasticsearch 中:
input {
file {
path => "/var/log/auth.log"
type => "ssh-login"
}
}
filter {
if [type] == "ssh-login" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} sshd(?:\[%{POSINT:pid}\])?: Failed %{WORD:auth_method} .* from %{IP:src_ip} port %{NUMBER:src_port} .*" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "login-logs-%{+YYYY.MM.dd}"
}
}
- 搜索日志数据:可以使用 Elasticsearch 的搜索 API 搜索已导入的日志数据。以下是一个搜索请求的例子,它搜索了最近一分钟内所有登录失败的事件:
curl -XGET 'http://localhost:9200/login-logs/_search' -d '
{
"query": {
"bool": {
"must": [
{
"match": {
"auth_method": "password"
}
},
{
"match": {
"result": "failure"
}
},
{
"range": {
"@timestamp": {
"gte": "now-1m"
}
}
}
]
}
}
}
'
以上搜索请求使用了布尔查询,它包含了三个必须满足的条件:auth_method 字段等于 "password"、result 字段等于 "failure",以及 @timestamp 字段在最近一分钟内。可以根据具体的日志格式和搜索需求进行相应的修改。
- 输出搜索结果:可以使用 grep 命令将搜索结果输出到终端,例如:
curl -XGET 'http://localhost:9200/login-logs/_search' -d '
{
"query": {
"bool": {
"must": [
{
"match": {
"auth_method": "password"
}
},
{
"match": {
"result": "failure"
}
},
{
"range": {
"@timestamp": {
"gte": "now-1m"
}
}
}
]
}
}
}
' | grep -o '"_source":{.*}' | sed 's/"_source":{//g' | sed 's/}//g'
以上命令将搜索结果中的 _source 字段提取出来,并去掉了多余的字符,输出了每个事件的详细信息。可以根据具体需要进行输出格式的调整。
原文地址: http://www.cveoy.top/t/topic/bI6i 著作权归作者所有。请勿转载和采集!