Intruder-Check auf meiner Webseite
Domino, Abuse-IP
Auf meinem Domino läuft ein Log, welches die invalid requests protokolliert. Diese kommen dann zustande wenn eine URL aufgerufen wird, welche nicht existiert.
Hier mal eine kleine Liste der Top-Aufrufe dieser Seite.

Es handelt sich hierbei hauptsaechlich um PHP request weil (es wird meistens versucht sich in eine Wordpress-Seite einzuloggen). Da es sich hier allerdings um eine Domino-DB handelt, laufen diese Meldungen alle auf einen Fehler.
Man kann auch immer sehen, wenn es neue Arten von Angriffen gibt wie z.B. Solr
Was mache ich nun mit diesen Informationen. Ich verwende diese zur Abwehr und Schutz meiner Seite. Ich erweitere diese Dokumente mit Informationen. Zum einen moechte ich wissen, woher die Angreifer stammen. Hierzu verwende ich eine Rest-API welche mir solche Informationen liefert. Weiterhin nutze ich noch die AbuseIP Rest-API um zu schauen, ob die IP als Angreifer bekannt ist.

Hier mal ein Beispiel dazu, die obige Adressabfrage zeigt eine 100% Abuse Wahrscheinlichkeit und die IP wurde schon ueber 1550 mal reported.
Der Codeschnipsel zur Rest-Abfrage ...
ip = doc.GetItemValue("UserAddress")(0) features = "check?ipAddress=" & ip &"&maxAgeInDays=90" Set webRequest = s.CreateHTTPRequest() Call webRequest.SetHeaderField("Accept", "application/json") Call webRequest.SetHeaderField("Host", "api.abuseipdb.com") Call webRequest.SetHeaderField("key", "e3eac73236e2d4cc97286e3809315df5f") webRequest.PreferStrings = True webRequest.TimeoutSec = 10 webRequest.Maxredirects = 1 ret = webRequest.Get(ipURL & features) respHead = webRequest.GetResponseHeaders() retLen = Len(ret) If (Instr(respHead(0), "200") = 0) Then ' NOT OK Else ' OK ' bei Sonderzeichen faellt das hier auf die nase Set jNav = s.CreateJSONNavigator( ret ) Set jElem = jNav.GetFirstElement() Set obj = jElem.value For jE = 1 To jElem.Value.size Set el = obj.GetNthElement( jE ) Select Case el.Type Case 1: ' NotesJSONObject ' in diesem fall hier nicht >> rekursion Case 2: ' NotesJSONArray auch rekursion >> type Set arr = el.value If (arr.Size > 0) Then For jA = 1 To arr.Size Set elA = arr.GetNthElement( jA ) Call doc.ReplaceItemValue("ipAbU_" & el.Name, elA.Value) Next Call doc.ReplaceItemValue("ipAbU_C_" & el.Name, arr.Size) End If Case 3: ' JSON String Call doc.ReplaceItemValue("ipAbU_" & el.Name, el.Value) Case 4: ' JSON Number Call doc.ReplaceItemValue("ipAbU_" & el.Name, el.Value) Case 5: ' JSON boolean Call doc.ReplaceItemValue("ipAbU_" & el.Name, el.Value) Case 64: ' Empty Call doc.ReplaceItemValue("ipAbU_" & el.Name, "") End Select Next Call doc.ReplaceItemValue("abusChecked", 1) Call doc.Save(True, False, True) End If Else
Was folgt nun weiteres hieraus fuer dieses Hosting. Fuer einen Teil (die 100%) der ermittelten IP-Adressen habe ich eine Blockrule in der NSG der VM auf Azure erstellt. Diese kommen also gar nicht mehr zum Webserver!

Fuer die etwas weniger sicher geltenden IP-Adressen nutze ich vorerst die IP-Deny funktion im Domino Server. Somit werden diese mitprotokolliert und ich kann diese noch weiter beobachten und ueber meinen Agenten schauen wohin sich diese IP entwickelt.
