Come impedire ai client per indirizzo IP di accedere a determinati URL sul mio server Web?


9

Come posso bloccare in modo permanente qualsiasi indirizzo IP che accede a pagine vulnerabili conosciute come /phpMyadmin/? Sto eseguendo un server Debian e vedo spesso bot o hacker che scansionano il mio server cercando di trovare vulnerabilità.

73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyadmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin2/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin3/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin4/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"

Ho già seguito questa domanda di StackOverflow: come proteggere phpMyAdmin .

Sto cercando di iniziare a bloccare i robot dall'assorbimento della larghezza di banda.


4
Questo pulirà i file di registro, ma non aiuterà affatto con la sicurezza. Tieni sempre aggiornato phpmyadmin o accedi ad esso solo da localhost (e blocca tutto il resto del traffico). Per accedere al server remoto, tunnel la porta tramite ssh.
Stefan M,

Penso che aiuterà la sicurezza perché bloccherà gli indirizzi IP dannosi che tentano di accedere a quel sito.
Whitecat,

@Whitecat 404significa il codice HTTP Page not found. Come ritieni che questi IP offendano gli IP? In base a quale output decidi di bloccare questi IP?
Valentin Bajrami,

Voglio bloccare l'ip in base al fatto che stanno andando a phpMyAdmin. Ho protetto il mio sito e so che chiunque acceda a quella pagina è dannoso.
Whitecat,

1
Perché non crei un.htpasswd
nicoX il

Risposte:


18

Questo potrebbe essere più pesante di quello che stai cercando, ma potresti prendere in considerazione l'utilizzo di fail2ban ( https://www.fail2ban.org ). Questo è uno strumento in grado di monitorare i file di registro e vietare automaticamente gli indirizzi che generano registri che corrispondono a una serie di schemi personalizzabili.


5
tbh questo è il problema esatto che fail2banè stato progettato per affrontare. È un po 'pesante ma, di nuovo, i criteri desiderati sono di per sé abbastanza dinamici. Tutto ciò che fail2banè considerato è tanto leggero quanto stai cercando di risolvere questa classe di problemi usando uno strumento standard.
Bratchley,

1
Beh, suppongo che potresti scrivere un cgi binario suid-root, ospitarlo come / phpmyadmin, che aggiunge la regola firewall del suo chiamante.
Giosuè,

7

Non farlo. Nella migliore delle ipotesi non otterrai altro che rendere i tuoi tronchi meno ingombranti; nel peggiore dei casi finirai per bloccare i visitatori legittimi a cui è capitato di ottenere (tramite DHCP) un indirizzo IP che apparteneva a qualcuno il cui PC era stato infettato come nodo botnet.

Il vero problema qui è il disordine dei log, e può essere risolto solo configurando la tua registrazione per eliminare le richieste che sono note per la scansione vuln per i vuln che il tuo sito non ha e non avrà perché non stai usando il vulnerabile framework per cui stanno eseguendo la scansione. Se sei preoccupato per la completa perdita della registrazione (forse forniscono prove che suggeriscono chi era responsabile di un attacco diverso o quando è iniziato un attacco, ecc.) Quindi limitati a limitare più voci di registro per URL spazzatura da un determinato IP in un breve periodo di tempo dovrebbe funzionare meglio.


6
fail2bani divieti sono temporanei - X colpi di un brutto tentativo di accesso entro Y secondi, divieto di Z minuti, con XY e Z configurabili. Eliminare i registri dei tentativi di intrusione attivi mi suona come una scelta significativamente più pericolosa.
Shadur,

2
nella probabilità dello 0,1% che ciò accada, gli utenti legittimi a questa istanza di phpmyadmin dovrebbero essere in grado di inviare semplicemente messaggi OP per sbloccare. Inoltre, fail2ban può bloccare un attacco di scansione prima che colpisca la vulnerabilità senza patch o zero day sul tuo server.
Segfault,

1
@Segfault: presumibilmente non ci sono utenti legittimi /phymyadmin/perché /phymyadmin/non esiste sul server (vedi: 404). Piuttosto, gli utenti legittimi in questione sono tutti gli utenti del sito che verrebbero bloccati da un firewall.
R .. GitHub FERMA AIUTANDO ICE

1
Il "migliore" in realtà include ulteriori test bloccati inclusi quelli che potrebbero essere effettivamente riusciti. Giocare con i contenuti del registro sembra anche un buon modo per perdere informazioni quando ti rendi conto di aver fatto una sorta di errore nel tuo filtro. Se sei preoccupato per il disordine dei log, allora hai bisogno di una piattaforma di analisi come ELK per setacciare tutto per le cose che ti interessano.
Bratchley

2
L'altro problema correlato è l'uso crescente di CGN. Un ISP può avere centinaia di clienti che condividono un singolo indirizzo IP, rendendo nel migliore dei casi il blocco IP pericoloso, anche temporaneo. Puoi avere un utente legittimo e una scansione attiva dallo stesso indirizzo contemporaneamente.
Bob,

3

trova phpMyAdmin.conf in una delle directory di configurazione di httpd e aggiungi deny 73.199.136.112nella sezione consenti / nega del file di configurazione e un IP richiesto nella sezione 2.4. Ho riportato di seguito un esempio del file di configurazione completo in cui ho le voci al contrario, blocco tutto tranne i segmenti IP consentiti per accedere allo strumento.

[thebtm@server conf.d]# cat /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
# 
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 10.10.26
       Require ip 192.168.56
       Require ip 127.0.0.1       
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.25
     Allow from 192.168.56
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>

Questo è bellissimo. Ma il problema è che ci sono robot costanti da molti IP diversi. Non riesco a stare al passo con ogni IP diverso dato che ottengo tra 20-30 ips dannosi unici al giorno.
Whitecat,

2
Questo è il motivo per cui ho mostrato il contrario in cui si consente l'accesso ai segmenti a cui si desidera avere accesso e il blocco automatico del resto.
thebtm

Alias /phpmyadmin /usr/share/phpMyAdmind /phpmyadmindovrebbe essere cambiato in qualcos'altro per motivi di sicurezza. Alias /secret /usr/share/phpMyAdmind
nicoX,

Ho modificato il file di configurazione predefinito fornito con lo strumento durante l'installazione e creato alcuni indirizzi IP casuali.
thebtm
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.