Come bloccare Ip malevoli su Nginx e Apache

Parole
Marco Bellomo
Immagini
Francesca Uguzzoni
Tempo di lettura
5

Suggerimenti veloci e rapidi per tamponare situazioni d’emergenza

I

Questo però non è quel tipo di serata, il sistema è stato compromesso da un’ondata di spam che sta affogando le caselle di posta elettronica e sta creando disagio agli utenti.

Ti trovi ora di fronte a uno o più monitor illuminati, con il suono incessante delle notifiche che segnalano nuovi messaggi indesiderati. Il programmatore, già lo sai, è fuori per il weekend, e non è reperibile. 

Forse hai un Dio nel cuore, forse no, ma non è una nottata in cui provi molto amore. Inizi ad analizzare l'origine dello spam, accedi ai log del server, e cerchi tracce di intrusioni e vulnerabilità, cercando indizi per capire quale sia la falla del sistema. Nel frattempo, gli utenti continuano a segnalare l'improvviso aumento di messaggi indesiderati, aumentando la pressione sulla situazione.

Inizia a implementare regole firewall più stringenti, magari cerchi di identificare modelli nei messaggi di spam per implementare dei filtri, ma arriva il momento…



Bloccare gli ip, tagliare la testa al toro

Magari ti confronti con altre figure professionali prima di farlo, magari no, a volte si deve arrivare a una mossa decisa, bloccare gli Ip che stanno provocando il danno. 

Per prima cosa, sia che si utilizzi Apache, Nginx o altri web server, bisogna vedere quali sono gli ip che provocano il danno.

Mettiamo che un bot vada sulla pagina contatti, la compili con dati fasulli, e mandi lo spam. 

Faremo esempi su apache e nginx, se si utilizza un altro web server, si dovrà adattare la logica mostrata.

A questo punto, sul tuo server, analizzi il log di accesso alle pagine.

Comando per nginx 

tail -n 100 -f /var/log/nginx/access.log | grep -E 'POST /contatti/|GET /contatti/'

Comando per apache

tail -n 100 -f /var/log/apache2/access.log | grep -E 'POST /contatti/|GET /contatti/'

Comando per sistema dockerizzato

docker-compose -f docker-compose.yml logs --tail 100 -f webserver | grep -E 'POST /contatti/|GET /contatti/'

a questo punto, ottenuti gli gli ip che stanno freneticamente mandando email, si può fare un controllo sulla geolocalizzazione dell'ip.

Si va su uno dei tanti siti esistenti, come per esempio: 

https://whatismyipaddress.com/

e si analizza la collocazione geografica.

Si può anche fare una veloce “scansione” dell’ip, per capire se è già noto come un ip sospetto Per questo ci sono molti siti, come per esempio:

https://botguard.net/en/tools

A questo punto della situazione, si può iniziare a fare un lavoro certosino e bloccare tutti gli ip che si identificano come sospetti.

su nginx andrai a mettere dei deny direttamente nel blocco location 

server {

# Altre configurazioni del server...

location / {

# Altre configurazioni della location...

deny ip_in_formato_ipv4;

allow all;

}

# Altre configurazioni del server...

}

Su apache, andrai a mettere varie regole sul tuo .htaccess

<Directory "/var/www/html">

# Altre configurazioni della directory...

Require all granted

Deny from ip_in_formato_ipv4;

</Directory>

Bloccare gli ip che provengono da una determinata collocazione geografica

Per attacchi più particolari può capitare che il fix temporaneo fatto funzioni per un po’, ma che alla fine lo spam riprenda con nuovi IP precedentemente non coinvolti.

Sempre nell’ottica di un fix veloce, con pochi elementi più solidi a supporto, si può arrivare alla conclusione che è utile bloccare le visite da un determinato paese, se si vede che la locazione geografica dei nuovi IP è la stessa dei precedenti. 

Naturalmente questa è una decisione più difficile da prendere, anche a livello etico, e non può che essere temporanea.

Comunque una possibile soluzione veloce è fare una rapida visita al sito: 

https://www.ip2location.com/free/visitor-blocker

scaricare una lista di ip, selezionando Apache o Nginx e quindi il formato deny. 

A questo punto si ha un elenco degli Ip legati alla locazione geografica desiderata e si procede a inserirli.

Conclusioni

Quanto descritto corrisponde a procedure di emergenza, un coltellino svizzero per mettere un fix veloce a situazioni in cui si deve agire velocemente, dove magari altri sistemi più solidi e integrati hanno comunque fallito, o non sono proprio stati implementati. 

Detto ciò, posto rimedio in questa maniera e monitorando la situazione, si può tirare un sospiro di sollievo, con il consiglio ovviamente di confrontarsi poi con le altre figure professionali coinvolte nel progetto, per sistemare al meglio la situazione, e poter procedere alla rimozione di eventuali blocchi geografici.

Analizza la tua presenza online.

Scrivici per una consulenza gratuita



Richiedi consulenza

Marco Bellomo

Chairman

A diciott'anni pensavo che sarei diventato uno scrittore di fama mondiale e che avrei dominato le classifiche con il mio oscuro ciclo fantasy. A ventiquattr'anni pensavo che il PHP fosse immortale. Oggi mi piace non dare nulla per scontato, forse perché ...