Ho un server con apache e di recente ho installato mod_security2 perché mi viene molto attaccato da questo:
La mia versione di apache è apache v2.2.3 e utilizzo mod_security2.c
Queste erano le voci dal registro degli errori:
[Wed Mar 24 02:35:41 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:31 2010] [error]
[client 202.75.211.90] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:49 2010] [error]
[client 95.228.153.177] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:48:03 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
Ecco gli errori da access_log:
202.75.211.90 - -
[29/Mar/2010:10:43:15 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:11:40:41 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:12:37:19 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
Ho provato a configurare mod_security2 in questo modo:
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecFilterSelective REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
La cosa in mod_security2 è che SecFilterSelective non può essere usato, mi dà errori. Invece uso una regola come questa:
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecRule REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
Anche questo non funziona. Non so più cosa fare. Qualcuno ha qualche consiglio?
Aggiornamento 1
Vedo che nessuno può risolvere questo problema usando mod_security. Finora l'utilizzo di ip-tables sembra l'opzione migliore per farlo, ma penso che il file diventerà estremamente grande perché l'ip cambia server volte al giorno.
Ho escogitato altre 2 soluzioni, qualcuno può commentarle per essere bravo o no.
La prima soluzione che mi viene in mente è escludere questi attacchi dai miei log degli errori di Apache. Questo renderà più facile per me individuare altri errori urgenti quando si verificano e non è necessario sputare attraverso un lungo registro.
La seconda opzione è migliore, penso, e sta bloccando gli host che non vengono inviati nel modo corretto. In questo esempio l'attacco w00tw00t viene inviato senza nome host, quindi penso di poter bloccare gli host che non sono nella forma corretta.
Aggiornamento 2
Dopo aver esaminato le risposte sono giunto alle seguenti conclusioni.
Avere la registrazione personalizzata per apache consumerà alcune risorse non necessarie e, se c'è davvero un problema, probabilmente vorrai guardare il registro completo senza nulla mancare.
È meglio semplicemente ignorare gli hit e concentrarsi su un modo migliore di analizzare i log degli errori. L'uso dei filtri per i tuoi registri è un buon approccio per questo.
Considerazioni finali sull'argomento
L'attacco di cui sopra non raggiungerà la tua macchina se almeno hai un sistema aggiornato, quindi praticamente non ci sono preoccupazioni.
Dopo un po 'può essere difficile filtrare tutti gli attacchi fasulli da quelli reali, perché sia i registri degli errori che i registri degli accessi diventano estremamente grandi.
Prevenire che ciò accada in alcun modo ti costerà risorse ed è una buona pratica non sprecare le tue risorse su cose non importanti.
La soluzione che uso ora è logwatch Linux . Mi invia riassunti dei registri e questi vengono filtrati e raggruppati. In questo modo puoi facilmente separare l'importante dall'importante.
Grazie a tutti per l'aiuto e spero che questo post possa essere utile anche a qualcun altro.