RBL Check zeigt CRITICAL für nicht gelistete IP

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • RBL Check zeigt CRITICAL für nicht gelistete IP

      Mein RBL Check lügt ;)

      Source Code

      1. root@foobar.example.com ~ # /usr/lib/bloonix/plugins/check-rbl --host 176.9.65.85 --server zen.spamhaus.org
      2. {"message":"176.9.65.85 is listed on 1 servers [zen.spamhaus.org(252)]","status":"CRITICAL"}


      Beweis: anti-abuse.org/multi-rbl-check-results/?host=176.9.65.85
      A service is only a service if its monitored.
    • Danke für den Link - klappt mit search . sowie search foobar.com. Ich versuche gerade rauszufinden, was nur der Punkt tut. Wenn ich example.org eintrage, appended er das ggf:

      Source Code

      1. # Domains sind hier fürs Forum verändert
      2. root@backuppc.example.com ~ # ping git
      3. PING git.example.org (131.201.3.111) 56(84) bytes of data.
      4. 64 bytes from git.example.org (131.201.3.111): icmp_seq=1 ttl=59 time=0.797 ms


      Ich sehe noch nicht ganz, warum ich das zum prüfen einer RBL brauche. Wenn ich den check mit Debug ausführe bekomme ich:

      Source Code

      1. root@backuppc.example.com ~ # /usr/lib/bloonix/plugins/check-rbl --host 176.9.65.85 --server zen.spamhaus.org --debug
      2. check 85.65.9.176.zen.spamhaus.org
      3. $VAR1 = {
      4. 'length' => 4,
      5. 'addrs' => [
      6. '�LT�'
      7. ],
      8. 'addrtype' => 2,
      9. 'aliases' => '',
      10. 'name' => '85.65.9.176.zen.spamhaus.org.example.com'
      11. };
      12. (listed)
      13. {"message":"176.9.65.85 is listed on 1 servers [zen.spamhaus.org(252)]","status":"CRITICAL"}
      Display All


      Wo kommt denn das " '�LT�'" her? Ich habe versucht das Script zu lesen, mein perl ist aber nicht weit genug :(
      A service is only a service if its monitored.
    • Ich hab mal ein

      Source Code

      1. print "\n";
      2. print "Reverse IP " . "$reverse_ip .".". $server";
      3. print "\n";
      4. print "Host by name " . gethostbyname($reverse_ip .".". $server);
      5. print "\n";


      ins Script gebaut und bekomme dafür folgendes:

      Source Code

      1. Reverse IP 85.65.9.176 .. zen.spamhaus.org
      2. Host by name �LT


      das

      Source Code

      1. Zeile 124: my ($name, $aliases, $addrtype, $length, @addrs) = gethostbyname($reverse_ip .".". $server);


      Scheint nicht zu funktionieren. Imho sollte der check an dieser Stelle auch mit einer anderen Fehlermeldung failen (unable to resolve oder so).
      A service is only a service if its monitored.
    • ok..

      Source Code

      1. root@example.com ~ # echo 'print gethostbyname("1.2.3.4") . "\n";' | perl
      2. # komische zeichen hier
      3. root@example.com ~ #


      Imho sollte das irgendwo in ```gethostbyname($reverse_ip . "." . $server)``` liegen. ```gethostbyname("1.2.3.4")``` returned bei mir auch stranges Zeug.
      Images
      • Screenshot from 2016-07-09 17:44:27.png

        35.44 kB, 902×82, viewed 112 times
      A service is only a service if its monitored.

      The post was edited 1 time, last by pthurner ().

    • Ich hab hier noch ein bisschen drauf geschaut und komme nicht weiter (mangelnde Perl Kenntnisse um andere Lib / Methode zu nutzen).

      "search" in der resolv.conf ist für das korrekte Auflösen von z.B. 1.2.3.4.zen.spamhaus.org nicht notwendig. Imho hat die perl lib hier einen Bug, kann ich nicht genau beurteilen. Ich kann zumindest nachweisen, dass ein "search ." für das einwandfreie Auflösen unter Linux nicht benötigt ist:

      Source Code

      1. root@utility.example.com ~ # grep search /etc/resolv.conf
      2. # Kein Ergebnis, steht kein search drin
      3. # Gelistete Adresse prüfen
      4. root@utility.example.com ~ # host 49.113.87.217.zen.spamhaus.org
      5. 49.113.87.217.zen.spamhaus.org has address 127.0.0.10
      6. # Unbekannte Adresse prüfen
      7. root@utility.sinnwerkstatt.com ~ # host 138.222.118.231.zen.spamhaus.org
      8. Host 138.222.118.231.zen.spamhaus.org not found: 3(NXDOMAIN)


      Das modifizieren der resolv.conf sollte kein Requirement für die Nutzung eines Checks sein, welcher DNS Einträge abruft.

      @Jonny, kannst Du das im Plugin fixen oder technisch erklären, warum hier ein "search" (ob search . oder search foobar.com ist egal) in der resolv.conf notwendig ist? Falls das notwendig ist, sollte das auch im Plugin-Hilfstext vermerkt sein, bzw sollte der Check prüfen, ob der String search in der resolv.conf steht und ggf. mit einer entsprechenden Fehlermeldung failen.
      A service is only a service if its monitored.
    • Nö. Ich habe keine search Einträge und das Modul funktioniert bei mir hervorragend.

      Edit:

      Für deine IP funktioniert der RBL Check bei mir ohne Probleme.

      Source Code

      1. /usr/lib/bloonix/plugins/check-rbl --host 231.118.222.138 --server zen.spamhaus.org --debug
      2. check 138.222.118.231.zen.spamhaus.org
      3. $VAR1 = {
      4. 'aliases' => undef,
      5. 'addrs' => [],
      6. 'length' => undef,
      7. 'addrtype' => undef,
      8. 'name' => undef
      9. };
      10. (not listed)
      11. {"message":"231.118.222.138 is not listed","status":"OK"}
      Display All
    • Es gibt zu diesem Problem bereits einen Thread, wo andere Nutzer das gleiche Problem beschreiben: Problem mit check-rbl

      Das Problem wurde hier jedoch nicht gelöst, warum die Verwendung von search in der resolv.conf das Problem behebt, ist dort nicht erklärt.

      Ich habe hier ebenfalls durchweg durch alle Debians:

      Source Code

      1. root@signup.test.de ~ # cat /etc/issue
      2. Debian GNU/Linux 8 \n \l
      3. root@signup.test.de ~ # cat /etc/resolv.conf
      4. nameserver 46.16.72.37
      5. nameserver 46.16.74.70
      6. root@signup.test.de ~ # /usr/lib/bloonix/plugins/check-rbl --host 1.2.3.4 --server zen.spamhaus.org --debug
      7. check 4.3.2.1.zen.spamhaus.org
      8. $VAR1 = {
      9. 'length' => 4,
      10. 'addrs' => [
      11. '���a'
      12. ],
      13. 'aliases' => '',
      14. 'name' => '4.3.2.1.zen.spamhaus.org.example.de',
      15. 'addrtype' => 2
      16. };
      17. (listed)
      18. {"status":"CRITICAL","message":"1.2.3.4 is listed on 1 servers [zen.spamhaus.org(97)]"}
      Display All
      A service is only a service if its monitored.

      The post was edited 1 time, last by pthurner ().

    • Wie schon geschrieben, habe ich das Problem nicht. Ich kann es auch nicht reproduzieren.

      Source Code

      1. js@agent01.bloonix.de:~
      2. #> /usr/lib/bloonix/plugins/check-rbl --host 1.2.3.4 --server zen.spamhaus.org --debug
      3. check 4.3.2.1.zen.spamhaus.org
      4. $VAR1 = {
      5. 'aliases' => undef,
      6. 'addrtype' => undef,
      7. 'length' => undef,
      8. 'addrs' => [],
      9. 'name' => undef
      10. };
      11. (not listed)
      12. {"message":"1.2.3.4 is not listed","status":"OK"}
      13. js@agent01.bloonix.de:~
      14. #> cat /etc/resolv.conf
      15. # DON'T TOUCH THIS FILE - MANAGED BY ANSIBLE
      16. nameserver 213.133.98.98
      17. nameserver 213.133.99.99
      18. nameserver 213.133.100.100
      19. nameserver 2a01:4f8:0:a102::add:9999
      20. nameserver 2a01:4f8:0:a0a1::add:1010
      21. nameserver 2a01:4f8:0:a111::add:9898
      Display All
    • So langsam komm ich näher ;)

      Ich habe also das debian 8 example.foobar.com. Es existiert ein DNS A *.foobar.com auf eine andere IP.

      Das Verhalten ist reproduzierbar, wenn ich in die resolv.conf "search foobar.com" oder einfach gar kein search schreibe. Wenn ich "search ." schreibe, overrided das den wildcard A record.

      D.h. wenn ein DNS A *.domain.tld existiert MUSS ein "search ." in der resolv.conf stehen, damit aus ping bad.domain nicht ein ping bad.domain.domain.tld gemacht wird - was dann auflösbar ist.

      Ob ich aber nun alles weiter-resolven will oder nicht sollte dem RBL Check egal sein - der muss nur wissen, ob die Domain.zen.spamhaus.org existiert und was da drin steht. Wie der check auf "4.3.2.1.zen.spamhaus.org.example.de" kommt ist mir auch unklar, warum wird hier nochmal example.de appended?

      PS: Auch für geblacklistete IPs (hier meine akutelle DSL IP) sieht der Check komisch aus:

      Source Code

      1. root@next.example.de ~ # /usr/lib/bloonix/plugins/check-rbl --host 84.143.233.29 --server zen.spamhaus.org --debug
      2. check 29.233.143.84.zen.spamhaus.org
      3. $VAR1 = {
      4. 'name' => '29.233.143.84.zen.spamhaus.org',
      5. 'addrs' => [
      6. '
      7. '
      8. ],
      9. 'addrtype' => 2,
      10. 'length' => 4,
      11. 'aliases' => ''
      12. };
      13. (listed)
      14. {"message":"84.143.233.29 is listed on 1 servers [zen.spamhaus.org(10)]","status":"CRITICAL"}
      15. root@next.example.de ~ # nano /etc/resolv.conf
      16. root@next.example.de ~ # cat /etc/resolv.conf
      17. nameserver 185.48.118.6
      18. nameserver 185.48.116.10
      19. root@next.example.de ~ # /usr/lib/bloonix/plugins/check-rbl --host 84.143.233.29 --server zen.spamhaus.org --debug
      20. check 29.233.143.84.zen.spamhaus.org
      21. $VAR1 = {
      22. 'addrtype' => 2,
      23. 'length' => 4,
      24. 'name' => '29.233.143.84.zen.spamhaus.org',
      25. 'addrs' => [
      26. '
      27. '
      28. ],
      29. 'aliases' => ''
      30. };
      31. (listed)
      32. {"status":"CRITICAL","message":"84.143.233.29 is listed on 1 servers [zen.spamhaus.org(10)]"}
      Display All

      A service is only a service if its monitored.
    • Aso..

      Der check versucht also, 1.2.3.4.rbl.spamcop.org zu resolven - und das klappt auch (ohne search . oder search non-existing-domain.com), denn aus "1.2.3.4.rbl.spamcop.org" wird dann "1.2.3.4.rbl.spamcop.org.mydomain.com", was existiert, wenn man einen wildcard A record hat.

      Da sollte (imho) der Check aussen rum steuern und wirklich NUR seine Ziel Domain abfragen.

      Bin auch grad unsicher, wem man jetzt die Schuld zuschieben kann ;)
      A service is only a service if its monitored.
    • Der RBL Check nutzt die Funktion gethostbyname.

      Wenn ich das auf der Kommandozeile ausführe, bekomme ich keinen Wert zurück:

      Source Code

      1. perl -e 'print gethostbyname("4.3.2.1.zen.spamhaus.org")'


      Ich wette, wenn du das ausführst, bekommst du 4.3.2.1.zen.spamhaus.org.example.test zurück. Woher das example.test kommt, kann ich dir nicht sagen.
    • Genau, stimmt. (meine den vorletzten, nicht den letzten Post)

      Das example.de am schluss wird appended, weil:

      Auslöser: Es gibt einen Wildcard A record ODER / UND ich habe search "domain.de" in meiner resolv.conf

      Action: Ich versuche auf meinem Linux foobar.example.com zu resolven, das gibts aber nicht.

      Result: Es wird das appended, was ich für search in der resolv.conf habe. Nur das mit der Wildcard check ich nohc nicht, wenn ich eine ganz andere Domain requeste..

      Zum letzten Post: Nein, es requested 4.3.2.1.zen.spamhaus.org.example.test., weil es 4.3.2.1.zen.spamhaus.org nicht findet.
      A service is only a service if its monitored.