Angriffe über die http-API reporten

Anleitungen zu Fail2Ban, blocklist.de und x-arf
Antworten
Benutzeravatar
Martin
Beiträge: 397
Registriert: 14. Sep 2010, 11:54
Kontaktdaten:

Angriffe über die http-API reporten

Beitrag von Martin » 17. Apr 2013, 23:09

die http-Api ist noch nicht oft eingesetzt worden.

Es werden wie bei der Mail folgende Daten benötigt:
- Angreifer IP
- Service-Name (ssh, ftp, imap....)
- Logs
- E-Mailadresse des Report-Servers
- Api-Key des Report-Servers
- Format der Rückgabe (Fehlermeldungen, OK-Meldung...) = xml, text, php, json

Dann kann man die Daten entweder per GET oder POST senden.
Dazu kann man weget, curl, php usw. nutzten.
Die URL baut sich dann wie folgt zusammen:

hxxp://www.blocklist .de/de/httpreports.html? \
server=$serveremail&
apikey=$serverapikey&
ip=$angreiferip&
service=$service&
format=$format&
logs=urlencode($logs)

Zusammengesetzt sieht dies dann z.b. so aus:
hxxp://www.blocklist .de/de/httpreports.html?server=fail2ban@sender-server.de&apikey=123456&ip=127.0.0.1&service=ssh&format=php&logs=urlencode('logfiles....)

Als Rückgabe wird ein Array mit "status" und "error" zurückgegeben.
Wenn $error 0 ist oder $status "success", hat alles gepasst und der Report wurde angenommen.
Ansonsten, wenn $status "error" ist, gibt es in der Variable $error ein Array mit den jeweiligen Fehlermeldungen wie z.B.:
apikey: Bitte API-Key des Servers mit ubergeben.
bzw. mit dem jeweiligen Format formartiert.

Für php könnte dies wie folgt aussehen:

Code: Alles auswählen

<?php
$apikey = 'xxxx';
$server  = 'absender@adresse.tld';

$url = 'http://www.blocklist.de/de/httpreports.html?'.
'server='.$server.'&'.
'apikey='.$apikey.'&'.
'ip='.$ip.'&'.
'service='.$service.'&'.
'format=php&'.
'logs='.urlencode($logs);

$send = file_get_contents($url);
$data = unserialize($send);
if((!is_array($data)) || (empty($data)))
  {
    die("Rueckgabe ist kein Array oder leer... bitte url manuell pruefen:'."\n".$url);
  }
if(($data['status'] !== 'success') || ($data['error'] !== 0))
  {
    echo 'Fehler beim Report:'"\n";
    print_r($data['error']);
    die();
  }
# Report erfolgreich gemeldet
Wenn die neue Seite irgendwann mal fertig ist, wird es dann ein ausführlichere Anleitung und schöner formatierte Beispiel geben.
Mfg Martin
http://www.blocklist.de/de/ Fail2Ban Reporting Service

Django
Beiträge: 11
Registriert: 11. Jun 2014, 14:50
Wohnort: dahoam
Kontaktdaten:

Re: Angriffe über die http-API reporten

Beitrag von Django » 19. Jun 2014, 12:13

HI Martin,

Ich wärm' das hier mal auf. ;) Ist diese "neue Seite" schon fertig? Oder anders gefragt, hast Du da ein paar Beispiele bzw. 'ne Anleitung/How2 fertig?


ttyl
Django

Benutzeravatar
Martin
Beiträge: 397
Registriert: 14. Sep 2010, 11:54
Kontaktdaten:

Re: Angriffe über die http-API reporten

Beitrag von Martin » 19. Jun 2014, 15:34

Hi Django,

leider nein. Das ist bei mir eingeschlafen/vergessen.
Ich werde am Wochenende an der Seite weiter schreiben.
Sorry!
Mfg Martin
http://www.blocklist.de/de/ Fail2Ban Reporting Service

Django
Beiträge: 11
Registriert: 11. Jun 2014, 14:50
Wohnort: dahoam
Kontaktdaten:

Re: Angriffe über die http-API reporten

Beitrag von Django » 21. Jun 2014, 20:09

HI Martin!

Hey, nur keinen Streß, ich bin nur auf der Suche nach Informationen wie ich fail2ban dazu bewege, die http-API zu verwenden. Bei badips.com bin ich ja schon dahintzer gekommen. Bei blocklist.de werd ich das schon auch noch hinbekommen.

ttyl
Django

Benutzeravatar
Martin
Beiträge: 397
Registriert: 14. Sep 2010, 11:54
Kontaktdaten:

Re: Angriffe über die http-API reporten

Beitrag von Martin » 22. Jun 2014, 15:15

Hi Django,

in der neuen Fail2Ban-Version ab 0.8.12 gibt es eine Action-Anweisung direkt für blocklist.de, wo darin per curl die Daten an die API gesendet werden:
https://github.com/fail2ban/fail2ban/bl ... st_de.conf
Die Anweisung kann man auch einfach bei älteren Versionen rein kopieren und verwenden:

Code: Alles auswählen

# Report block via blocklist.de fail2ban reporting service API
#
# See the IMPORTANT note in action.d/blocklist_de.conf for when to
# use this action. Create a file jail.d/blocklist_de.local containing
# [Init]
# blocklist_de_apikey = {api key from registration]
#
action_blocklist_de = blocklist_de[email="%(sender)s", service=%(filter)s, apikey="%(blocklist_de_apikey)s"]
Mfg Martin
http://www.blocklist.de/de/ Fail2Ban Reporting Service

Django
Beiträge: 11
Registriert: 11. Jun 2014, 14:50
Wohnort: dahoam
Kontaktdaten:

Re: Angriffe über die http-API reporten

Beitrag von Django » 22. Jun 2014, 19:49

HI Martin,
in der neuen Fail2Ban-Version ab 0.8.12 gibt es eine Action-Anweisung direkt für blocklist.de ...
Jo, das ist in der 0.9.0er Entwicklerversion auch so drin - zumindestens hat das der Package-Maintainer beim CentOS 6.x RPM meines Vertrauens das so verpackt. ;)

Was mich da nur etwas stutzing macht ist die "Klammerei". Ich soll also eine jail.d/blocklist_de.local in der steht:

Code: Alles auswählen

blocklist_de_apikey = {api key from registration]
also z.B.

Code: Alles auswählen

blocklist_de_apikey = {dj4n901$4g33k]
Im detail wäre das dann vor dem Key ein { und nach dem key ein ]? Sicher?

Servus
Django

Benutzeravatar
Martin
Beiträge: 397
Registriert: 14. Sep 2010, 11:54
Kontaktdaten:

Re: Angriffe über die http-API reporten

Beitrag von Martin » 23. Jun 2014, 18:18

Hi Django,

nein, dies müssen nur ein String sein:

Code: Alles auswählen

blocklist_de_apikey = "keyxxxx"
Mfg Martin
http://www.blocklist.de/de/ Fail2Ban Reporting Service

LightGapNet
Beiträge: 1
Registriert: 22. Jun 2014, 13:47

Re: Angriffe über die http-API reporten

Beitrag von LightGapNet » 28. Jun 2014, 13:14

Hi,

Wir betreiben einen Mailproxy (via NGINX) für unsere Kunden und haben im Authentication Script schon diverse Maßnahmen um IPs die Brute-Force Attacken fahren bzw. mit mehr oder weniger Random Usernamen (erfolglos) versuchen sich einzuloggen etc. auszusperren und ich möchte diese Informationen auch der Community zur Verfügung stellen und über die HTTP API Fehlversuche an Blocklist.de melden.

Das Script ist allerdings Custom und kein Fail2Ban etc. arbeitet aber ähnlich.

Jetzt ist es allerdings so dass wir zwar schon diverse Attacken gemeldet haben aber nur 2 davon auch registriert wurden.
Bei den anderen kommt von der API kein bzw. ein leerer Reply, also weder ein Error noch ein Success.
Wie kann das sein? Mach ich irgendwas falsch? Wir melden jeden EIntrag nach dem selben Muster.

Und sollte ich nur Attacken melden die unsererseits bereits blockiert wurden (zB min. 10 erfolglose Loginversuche) oder jeden einzelnen Fehlversuch. Aktuell mache ich ersteres da sonst wohl der Traffic nicht sinnvoll wär.

MFG
Günther

Benutzeravatar
Martin
Beiträge: 397
Registriert: 14. Sep 2010, 11:54
Kontaktdaten:

Re: Angriffe über die http-API reporten

Beitrag von Martin » 3. Jul 2014, 15:08

Hallo Günther,

am besten schreibst du uns an support@ einmal die IP-Adresse des Servers, welcher die Attacken an die API meldet und eine Beispiel IP, die geblockt wurde (optional).
Dann können wir die Logfiles danach prüfen und den genauen Grund feststellen (api-Meldung oder WEbserver-Meldung....).

Bei großen Log-File-Daten, empfehlen wir die Daten per POST zu senden, da sonst manchmal die Variable $_REQUEST['logs'] komischerweise leer ist.

Ansonsten wird bei einem Fehler der http-Status 400 zurück gegeben.
Wenn alles OK war, der Status 200.
Mfg Martin
http://www.blocklist.de/de/ Fail2Ban Reporting Service

Antworten