Blocco dell'accesso apache tramite la stringa dell'agente utente


8

Ho uno scripter che sta usando un proxy per attaccare un sito web che sto servendo.

Ho notato che tendono ad accedere al sito tramite software con una determinata stringa di user agent comune (ad es. Http://www.itsecteam.com/en/projects/project1_page2.htm "Havij advanced sql injection software" con una stringa user_agent di Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij). Sono consapevole del fatto che qualsiasi software di cracking degno del suo sale sarà probabilmente in grado di modificare la sua stringa di user agent, ma sto bene con lo script che deve occuparsi di quella funzione ad un certo punto.

Quindi, esiste un software là fuori per bloccare automaticamente l'accesso e la lista nera permanente abbinando le stringhe dell'agente utente?

Risposte:


18

puoi negare l'accesso tramite BrowserMatch e Negare da SetEnvIf Esempio:

SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
<Directory "/var/www">
        Order Allow,Deny
        Allow from all
        Deny from env=bad_bot
</Directory>

Per bloccarli permanentemente devi scrivere un file di registro personalizzato e usare fail2ban ad esempio per vietarli con iptables

Ad esempio, creare LogFormat

LogFormat "%a %{User-agent}i" ipagent

Aggiungi la registrazione al tuo vhost / a livello di server

CustomLog /var/log/apache2/useragent.log ipagent

/etc/fail2ban/filter.d/baduseragent.conf

[Definition]
failregex = ^<HOST> Mozilla/4\.0 \(compatible; MSIE 7\.0; Windows NT 5\.1; SV1; \.NET CLR 2\.0\.50727\) Havij$

/etc/fail2ban/jail.conf

[apache-bad-user-agent]

enabled  = true
port     = 80,443
protocol = tcp
filter   = baduseragent
maxretry = 1
bantime  = 86400
logpath  = /var/log/apache2/useragent.log

Sì, ciò bloccherebbe le stringhe dell'agente utente errato, ma sto cercando di fare un ulteriore passo avanti e bandire automaticamente ips associati alle stringhe dell'agente utente errato, in modo tale che l'uso della stringa agente utente ti venga bandito da quel punto in poi su quell'ip. Userei fail2ban ma non ho trovato un modo per applicarlo bene alle richieste http a questo punto.
Kzqai,

Prova il mio suggerimento nel post pubblicato
Dmytro Leonenko il

6

Penso di aver capito la tua domanda. Fornirò una spiegazione più dettagliata se questo è ciò che stai cercando. (funzionerà come una trappola anche per altre cose)

  • Abilita il motore mod_rewrite in apache2
  • Crea un trap.php, visitare può fare quello che vuoi. Ad esempio, l'ho fatto aggiungere tutti i visitatori ip a una lista nera che nega l'accesso al mio web.
  • Crea un file degli useragents che non ti piacciono, uno per riga come questo
    bas_useragent [tab] black
    useragent_bad [tab} black
  • Ora aggiungi il tuo mod_rewrite che corrisponde alla mappa dai cattivi useragents, quindi reqrites alla tua trappola se c'è una mappa. La regola potrebbe apparire così:

    RewriteMap badlist txt:~/bad_useragent_list
    RewriteCond %{HTTP_USER_AGENT} .* [NC]
    RewriteCond ${badlist:%1|white} ^black$ [NC]
    RewriteRule (.*) "/trap.php" [L]

  • Questo fondamentalmente abbina il useragent alle chiavi nel tuo file, se non viene trovato si presume che sia "bianco" e la richiesta non è modificata. Se viene trovato e il valore associato è "nero", la richiesta viene riscritta per andare al tuo file trap.php, che fa quello che ti piace.
  • Alcune idee possibili. Fai in modo che un altro script guardi un file comune in cui trap.php scrive un IP. Se questo file comune cambia, questo watcher legge le nuove informazioni, analizza gli indirizzi IP e aggiunge una regola alle tabelle IP che blocca tutto il traffico proveniente da quell'indirizzo. Spero che questo possa essere d'aiuto! Ancora una volta, se desideri maggiori dettagli, rispondi qui.

quasi dimenticato, puoi leggere di mod_rewrite qui: httpd.apache.org/docs/current/mod/mod_rewrite.html
blerbl,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.