Tâche #24483
Scénario #24481: Tester la solution Racdata
Analyser les requêtes adressées au service Bind9 sur hestia.eole.lan
Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Restant à faire (heures):
0.0
Description
Les logs de requêtes bind9
sur hestia.eole.lan
arrivent en double dans le message syslog, par example :
<30>2018-07-17T11:56:16+02:00 hestia named[13430]: 17-Jul-2018 11:56:16.268 queries: info: client 192.168.10.136#54998: query: castor.eole.lan IN AAAA + 17-Jul-2018 11:56:16.268 queries: info: client 192.168.10.136#54998: query: castor.eole.lan IN AAAA +
Le format est différent de celui fourni par défaut, il nous faut donc une configuration particulière.
Historique
#1 Mis à jour par Daniel Dehennin il y a presque 6 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Daniel Dehennin
#2 Mis à jour par Daniel Dehennin il y a presque 6 ans
Analyse des logs de requête bind9
¶
Ajout de la configuration suivante sur racdata-test.eole.lan:
- Définition des
patterns
spécifiques àbind9
[root@racdata-test ~]# cat > /etc/logstash/patterns/bind9 <<EOF BIND9_QUERY_FLAG_RECURSE [+-] BIND9_QUERY_FLAG_SIGNED S BIND9_QUERY_FLAG_EDNS E BIND9_QUERY %{BIND9_TIMESTAMP:[query][timestamp]} queries: %{LOGLEVEL:loglevel}: client %{IP:[query][client][ip]}#%{POSINT:[query][client][port]:int}: query: %{GREEDYDATA:[query][request]} IN %{GREEDYDATA:[query][type]} %{BIND9_QUERY_FLAG_RECURSE:[query][flag][recurse]}%{BIND9_QUERY_FLAG_SIGNED:[query][flag][signed]}?%{BIND9_QUERY_FLAG_EDNS:[query][flag][edns]}? %{GREEDYDATA:message} EOF
- Ajout de l’analyse des logs de
bind9
[root@racdata-test ~]# cat > /etc/logstash/instances/analyse/filter-10-analyse-bind9.conf <<EOF filter { if [program] == "named" { if [canal] { # Use canal test for heavy logs mutate { replace => { "canal" => "net" } } } grok { # Overwrite the "message" to get it unduplicated match => { "message" => "%{BIND9_QUERY}" } patterns_dir => [ "/etc/logstash/patterns" ] overwrite => [ "message" ] tag_on_failure => [ "named_parsing_failed" ] remove_tag => [ "_grokparsefailure" ] add_tag => ["DNS"] } if [syslog][ip] { mutate { copy => { "[syslog][ip]" => "source_host" } } } # Make the flags more readable if [query][flag][recurse] { translate { field => "[query][flag][recurse]" destination => "[query][recurse]" dictionary => { "+" => "yes" "-" => "no" } fallback => "unknown" override => true remove_field => "[query][flag][recurse]" } } if [query][flag][edns] == "E" { mutate { add_field => { "[query][edns]" => "yes" } remove_field => [ "[query][flag][edns]" ] } } elseif ! [query][flag][edns] { mutate { add_field => { "[query][edns]" => "no" } } } if [query][flag][signed] == "S" { mutate { add_field => { "[query][signed]" => "yes" } remove_field => [ "[query][flag][signed]" ] } } elseif ! [query][flag][signed] { mutate { add_field => { "[query][signed]" => "no" } } } } } EOF
- Redémarrage du daemon d’analyse
[root@racdata-test ~]# systemctl restart logstash-analyse.service
- Vérification du démarrage
[root@racdata-test ~]# tail -n 0 -f /var/log/logstash/analyse/logstash.log [2018-07-17T16:20:49,666][INFO ][logstash.outputs.rabbitmq] Connected to RabbitMQ at [2018-07-17T16:20:50,858][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>250} [2018-07-17T16:20:50,861][INFO ][logstash.pipeline ] Pipeline main started [2018-07-17T16:20:50,884][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9602} [2018-07-17T16:20:50,885][INFO ][logstash.inputs.rabbitmq ] Connected to RabbitMQ at
Résultats d’analyse¶
Après quelques instants, les premiers log de requêtes bind9
sont analysées.
Vous devriez les voir dans l’interface kibana
sous l’onglet Discover
, voici ce que j’obtiens, au format JSON :
{ [...] "process": { "name": "named", "id": 14414 }, [...] "query": { "request": "bp-eole.ac-dijon.fr", "flag": {}, "recurse": "yes", "client": { "port": 33221, "ip": "192.168.10.142" }, "signed": "no", "edns": "no", "type": "A", "timestamp": "17-Jul-2018 16:26:34.145" }, [...] "syslog": { "severity": { "code": 6, "label": "informational" }, "hostname": "hestia", "fqdn": "hestia.eole.lan", "pri": 30, "ip": "192.168.232.2", "raw": "<30>2018-07-17T16:26:34+02:00 hestia named[14414]: 17-Jul-2018 16:26:34.145 queries: info: client 192.168.10.142#33221: query: bp-eole.ac-dijon.fr IN A + 17-Jul-2018 16:26:34.145 queries: info: client 192.168.10.142#33221: query: bp-eole.ac-dijon.fr IN A +", "facility": { "code": 3, "label": "daemon" }, "timestamp": "2018-07-17T16:26:34+02:00" }, [...] "message": "17-Jul-2018 16:26:34.145 queries: info: client 192.168.10.142#33221: query: bp-eole.ac-dijon.fr IN A +", [...] "tags": [ "DNS" ], [...] } <pre>
#3 Mis à jour par Daniel Dehennin il y a presque 6 ans
- % réalisé changé de 0 à 100
- Restant à faire (heures) changé de 12.0 à 0.0
#4 Mis à jour par Daniel Dehennin il y a presque 6 ans
- Description mis à jour (diff)
#5 Mis à jour par Daniel Dehennin il y a presque 6 ans
J’ai modifié la configuration pour faire une résolution inverse sur l’IP des clients
@@ -57,5 +55,23 @@
}
}
}
+ if [query][client][ip] {
+ dnstimeout {
+ reverse => {
+ "[query][client][ip]" => "[query][client][host]"
+ }
+ action => "replace"
+ failed_cache_size => 10000
+ failed_cache_ttl => 86400
+ hit_cache_size => 10000
+ hit_cache_ttl => 86400
+ timeout => 0.1
+ }
+ }
+ if ! [query][client][host] {
+ mutate {
+ copy => { "[query][client][ip]" => "[query][client][host]" }
+ }
+ }
}
}
#6 Mis à jour par Scrum Master il y a presque 6 ans
- Statut changé de En cours à Résolu
- Tâche parente changé de #24481 à #24475
#7 Mis à jour par Scrum Master il y a presque 6 ans
- Tâche parente changé de #24475 à #24481
#8 Mis à jour par Daniel Dehennin il y a plus de 5 ans
- Statut changé de Résolu à Fermé