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