Blogeinträge zum Thema: Security

Alles rund um das ausgewählte Thema ... Zeige max. 5 Stories pro Seite von 1

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.