
Nginx Blocca Bot Dannosi, Bloccatore di Referrer Spam, Scanner di Vulnerabilità, User-Agents, Malware, Adware, Ransomware, Siti Dannosi, con anti-DDOS, Blocco del Rilevatore di Tema Wordpress e Jail Fail2Ban per i Recidivi
| REPO | DIVENTA UNO SPONSOR |
|---|---|
| Il tuo logo e il link al tuo dominio appariranno qui se diventi uno sponsor. Basta inviarmi un'email a [email protected] se desideri sponsorizzare questo progetto, dato che il Sudafrica non è ancora supportato dal programma sponsor di Github. | |
| Aiutami a sostenermi su https://ko-fi.com/mitchellkrog |
Assicurati di essere iscritto alle notifiche di Github per essere avvisato quando il blocker viene aggiornato o quando si verificano modifiche importanti o critiche per la missione (potenzialmente dannose).
Questo è il nostro nuovo metodo di installazione preferito, ora eseguito tramite una serie di script shell contribuiti a questo repository e mantenuti da Stuart Cardall @itoffshore, uno dei maintainer dei pacchetti Alpine Linux.
Le istruzioni qui sotto riguardano un processo di installazione rapido e senza problemi che scarica tutti i file necessari per il blocker e gli script includono l'aggiunta degli include richiesti al tuo nginx.conf e ai file .vhost di nginx. Lo script di setup presuppone che i tuoi file di configurazione vhost si trovino in /etc/nginx/sites-available/ e che ogni file di configurazione vhost termini con l'estensione .vhost
Per le istruzioni di installazione manuale consulta - Vedi: https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/blob/master/MANUAL-CONFIGURATION.md
setup-ngxblocker, install-ngxblocker e update-ngxblocker possono essere tutti configurati con posizioni di installazione / aggiornamento personalizzate dalla riga di comando. (Vedi il Passo 11 delle istruzioni per scoprire come usare questi script con posizioni Nginx non standard)
Esegui uno qualsiasi degli script di setup, installazione o aggiornamento con --help o -h per visualizzare le opzioni.
NOTA BENE: Per chi usa i Certificati SSL Let's Encrypt, il metodo preferito e funzionante al 100% è il Metodo di Autenticazione Webroot. Sembra che ci siano alcuni problemi con chi usa il metodo della sfida http, ma posso confermare che webroot funziona perfettamente. Al momento non siamo certi se il metodo di sfida http-01 sia un bug di certbot o di nginx.
I report di rete duplicati da Nginx NON sono un bug né possono essere corretti: questo è il comportamento desiderato del blocker. Gli aggiornamenti giornalieri delle blacklist IP fanno sì che alcuni IP e range noti vengano inseriti in blacklist old value "1"; questi vengono poi rimessi in whitelist alla fine di globalblocklist, che è l'ordine di caricamento, il che imposta gli IP che sappiamo essere buoni al loro nuovo value "0", mettendoli così in whitelist. È così dal primo giorno del blocker e resterà così. Questi sono semplici messaggi [WARN], non messaggi [EMERG], e non influenzano in alcun modo il funzionamento di Nginx.
Scarica install-ngxblocker nella tua directory /usr/local/sbin/ e rendi eseguibile lo script.```sh sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -O /usr/local/sbin/install-ngxblocker sudo chmod +x /usr/local/sbin/install-ngxblocker
Se la tua distribuzione Linux non ha `wget`, puoi sostituire il comando `wget` sopra usando `curl` come segue:```sh
curl -sL https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -o /usr/local/sbin/install-ngxblocker
Installa il pacchetto.```sh pkg install www/nginx-ultimate-bad-bot-blocker
In alternativa, installa tramite portmaster:```sh
portmaster www/nginx-ultimate-bad-bot-blocker
Ora esegui lo script install-ngxblocker in DRY-MODE, che ti mostrerà quali modifiche apporterà e quali file scaricherà per te. Questa è solo una DRY-RUN, quindi non verrà ancora apportata alcuna modifica.
install-ngxblocker scarica tutti i file necessari, inclusi gli script di setup e di update.```sh cd /usr/local/sbin sudo ./install-ngxblocker
Questo ti mostrerà, come segue, l'output delle modifiche che verranno apportate
**(NOTA: questa è solo una DRY-RUN, non è stata apportata alcuna modifica)**```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'install-ngxblocker -x' to install files.
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker
setup-ngxblocker, install-ngxblocker e update-ngxblocker possono tutti essere configurati con posizioni di installazione / aggiornamento personalizzate dalla riga di comando.
Esegui uno qualsiasi degli script setup, install o update con --help o -h per visualizzare le opzioni.
Ora esegui lo script di installazione con il parametro -x per scaricare tutti i file necessari dal repository:```sh cd /usr/local/sbin/ sudo ./install-ngxblocker -x
Questo ti darà il seguente output:```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf...OK
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf...OK
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf...OK
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker...OK
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker...OK
Tutti i file necessari sono stati ora scaricati nelle cartelle corrette su Nginx direttamente dal repository.
ASSICURATI di rendere eseguibili i tuoi script di configurazione e aggiornamento eseguendo i due comandi seguenti. Questo è importante prima di continuare con il Passo 4 e successivi.```sh sudo chmod +x /usr/local/sbin/setup-ngxblocker sudo chmod +x /usr/local/sbin/update-ngxblocker
**setup-ngxblocker, install-ngxblocker e update-ngxblocker possono tutti essere configurati con posizioni di installazione / aggiornamento personalizzate dalla riga di comando.**
**Esegui uno qualsiasi degli script di setup, installazione o aggiornamento con --help o -h per visualizzare le opzioni.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-4.png"/>
Ora esegui lo script setup-ngxblocker in MODALITÀ DRY (prova a secco) che ti mostrerà quali modifiche apporterà e quali file scaricherà per te. Questa è solo una DRY-RUN, quindi non viene ancora apportata alcuna modifica.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker
Questo ti darà un output come il seguente (l'output qui sotto presuppone che il tuo file nginx.conf abbia già l'include predefinito di /etc/nginx/conf.d/*) Tutte le installazioni di Nginx che conosco hanno questo include predefinito nel file nginx.conf distribuito con tutte le versioni.```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'setup-ngxblocker -x' to setup files.
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
Questo script inserisce automaticamente anche il tuo IP nella whitelist del file whitelist-ips.conf.
Ulteriori IP o intervalli di IP possono essere aggiunti al tuo file personalizzabile whitelits-ips.conf situato in /etc/nginx/bots.d/whitelist-ips.conf.
**setup-ngxblocker, install-ngxblocker e update-ngxblocker possono tutti essere configurati con posizioni di installazione/aggiornamento personalizzate dalla riga di comando.**
**Esegui uno qualsiasi degli script di setup, installazione o aggiornamento con --help o -h per visualizzare le opzioni.**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-5.png"/>
Ora esegui lo script di setup con il parametro -x per apportare tutte le modifiche necessarie al tuo nginx.conf (se richiesto) e anche per aggiungere le include richieste a tutti i tuoi file vhost.
Questo script setup-ngxblocker presuppone che tutti i tuoi file vhost situati in /etc/nginx/sites-available terminino con un'estensione .vhost. È buona norma fare in modo che tutti i tuoi file di configurazione vhost terminino con un'estensione .vhost, ma se preferisci mantenere ciò che hai già, ad esempio .conf, puoi semplicemente modificare l'esecuzione di setup-ngxblocker usando il parametro `-e` per specificare l'estensione che usi per i tuoi file vhost.
Ad esempio, se i tuoi file vhost terminano con .conf, dovrai eseguire setup-ngxblocker con un parametro aggiuntivo della riga di comando come segue:
`sudo ./setup-ngxblocker -x -e conf`
Quindi ora eseguiamo lo script di setup e lasciamo che apporti tutte le modifiche necessarie per rendere il Bot Blocker attivo su tutti i tuoi siti.```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker -x
Il contenuto da tradurre non è stato fornito nell'input.```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
Noterai che ha inserito le direttive include in tutti i file .vhost sul mio server di test e ha anche aggiunto alla whitelist il tuo indirizzo IP nel file whitelist-ips.conf per te. Ulteriori IP o intervalli di IP possono essere aggiunti al tuo file whitelits-ips.conf personalizzabile situato in /etc/nginx/bots.d/whitelist-ips.conf.
Ciò che questo script di configurazione ha fatto è semplicemente aggiungere le seguenti istruzioni include ai tuoi file .vhost; aggiunge anche /etc/nginx/conf.d/* agli include in nginx.conf (se non già presente in nginx.conf), altrimenti l'intero script fallirà.```nginx
# Bad Bot Blocker
include /etc/nginx/bots.d/ddos.conf;
include /etc/nginx/bots.d/blockbots.conf;
setup-ngxblocker, install-ngxblocker e update-ngxblocker possono essere tutti configurati con posizioni di installazione / aggiornamento personalizzate dalla riga di comando.
Esegui uno qualsiasi degli script di setup, install o update con --help o -h per visualizzare le opzioni.
Ora testa la tua configurazione di nginx
sudo nginx -t
e dovresti vedere```text nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-7.png"/>
Ora ricarica semplicemente / riavvia Nginx e il Bot Blocker sarà immediatamente attivo e proteggerà tutti i tuoi siti web.
`sudo nginx -t && sudo nginx -s reload`
oppure
`sudo service nginx restart`
Tutto qui, il blocker è ora attivo e protegge i tuoi siti da migliaia di bot e domini dannosi.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-8.png"/>
Ora configura cron per aggiornare automaticamente il blocker ogni giorno, così avrai sempre la protezione più aggiornata.
`sudo crontab -e`
Aggiungi la seguente riga alla fine del tuo file crontab. Nota l'aggiunta del parametro da riga di comando `-e` per specificare il tuo indirizzo email a cui viene inviato il report di aggiornamento. Ovviamente sostituisci `[email protected]` con il tuo indirizzo email reale, altrimenti non riceverai l'email quando lo script si sarà aggiornato.
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
Questo aggiornerà il blocker ogni notte per te alle 22:00.
Se vuoi che si aggiorni più frequentemente (a volte pubblico 3-4 aggiornamenti al giorno) puoi impostarlo come segue per eseguire il cron ogni 8 ore, anche se una volta al giorno è più che sufficiente.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
Se non vuoi alcuna notifica email dopo un aggiornamento (sconsigliato nel caso in cui Nginx abbia mai un EMERG durante il ricaricamento), esegui semplicemente il tuo cron come segue.
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n`
Se preferisci inviare e-mail tramite <a href="https://www.mailgun.com/">mailgun</a>, esegui il tuo cron in questo modo:
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -g [email protected] -d yourdomain.com -a mailgun api key -f [email protected]`
Tutto qui, il blocker si manterrà automaticamente aggiornato e ricaricherà anche Nginx una volta scaricata l'ultima versione del file globalblacklist.conf.
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-9.png"/>
Ora puoi personalizzare uno qualsiasi dei file elencati di seguito per adattarli al tuo ambiente o alle tue esigenze. Questi file inclusi non vengono mai modificati durante un aggiornamento tramite lo script di aggiornamento automatico sopra, quindi qualsiasi personalizzazione effettuata qui non verrà mai sovrascritta durante un aggiornamento.```text
/etc/nginx/bots.d/whitelist-ips.conf
/etc/nginx/bots.d/whitelist-domains.conf
/etc/nginx/bots.d/blockbots.conf
/etc/nginx/bots.d/blacklist-domains.conf
/etc/nginx/bots.d/blacklist-user-agents.conf
/etc/nginx/bots.d/blacklist-ips.conf
/etc/nginx/bots.d/bad-referrer-words.conf
/etc/nginx/bots.d/custom-bad-referrers.conf
/etc/nginx/bots.d/ddos.conf
Diamo per scontato che per qualche motivo "oscuro" tu voglia davvero bloccare GoogleBot dall'accesso al tuo sito. Ti basterà aggiungerlo al file /etc/nginx/bots.d/blacklist-user-agents.conf e sovrascriverà la whitelist predefinita per GoogleBot. Lo stesso vale per qualsiasi altro bot incluso di default nella whitelist.
Tutti i file include sono commentati per tua comodità.
(VERIFICA CHE FUNZIONI)
TEST
Esegui i seguenti comandi uno per uno da un terminale su un'altra macchina Linux verso il tuo nome di dominio.
❗ sostituisci http:// yourdomain.com ❗ negli esempi seguenti con il tuo VERO nome di dominio ❗
curl -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" -I http://yourdomain.com
Dovrebbe rispondere con 200 OK
curl -A "Xenu Link Sleuth/1.3.8" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)" -I http://yourdomain.com
Dovrebbe rispondere con uno dei seguenti messaggi di errore:
curl -I http://yourdomain.com -e http://100dollars-seo.com
curl -I http://yourdomain.com -e http://zx6.ru
Dovrebbe rispondere con uno dei seguenti messaggi di errore:
Nginx Ultimate Bot Blocker ora è IN FUNZIONE e PROTEGGE i tuoi siti web !!!
❗ sostituisci http:// yourdomain.com ❗ negli esempi seguenti con il tuo VERO nome di dominio ❗
Se sei un utente Cloudflare che utilizza il sistema CDN / caching di Cloudflare, dovresti sempre disattivare la CDN di Cloudflare (imposta la nuvola grigia)
Durante i test otterrai i corretti codici di risposta come di seguito:
Questo è voluto. La CDN sta facendo il suo lavoro; la prima risposta del tuo server ha detto al bot "vattene" inviandogli una risposta 444 o 443.
Cloudflare memorizza nella cache quella risposta e quindi la seconda volta che esegui il test riceverai un messaggio di errore 520 Origin Error.
Durante il test del blocker, disattiva il sistema CDN / caching e, una volta soddisfatto dei test, riattiva la CDN/cache nel tuo ambiente di produzione, perché vuoi che i bot ricevano quella risposta da Cloudflare.
Molti altri sistemi CDN probabilmente si comporteranno allo stesso modo, quindi disattiva sempre una CDN durante i test per escludere qualsiasi cosa che possa interferire con le prove. Assicurati sempre di riattivare la CDN al termine dei test !!
Una volta abilitata la CDN di Cloudflare, esegui di nuovo il test.
Durante i test, ottieni
Questo significa che la CDN funziona.
INSTALLAZIONE DEL BLOCKER IN POSIZIONI DI CARTELLE NGINX NON STANDARD
Alcune persone compilano Nginx da sé e non finiscono per avere le posizioni standard delle cartelle nginx in /etc/nginx
Per utenti di questo tipo puoi eseguire install-ngxblocker, setup-ngxblocker e update-ngxblocker specificando la tua posizione delle cartelle nelle righe di comando come segue.
sudo ./install-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./setup-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./update-ngxblocker -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d -e [email protected]
Questo inserirà automaticamente i file nelle posizioni che specifichi, effettuerà gli include nei tuoi vhost usando le tue posizioni personalizzate e quando update-ngxblocker scaricherà un nuovo aggiornamento riscriverà automaticamente anche le sezioni "Include" all'interno del file globalblacklist.conf con le tue posizioni personalizzate. Grazie ancora a Stuart Cardall @itoffshore per i suoi contributi a questi eccellenti script.
I report di rete duplicati da Nginx NON sono un bug e non possono essere corretti: questo è il comportamento voluto del blocker. Gli aggiornamenti giornalieri delle blacklist IP fanno sì che alcuni IP e range noti vengano inseriti in blacklist old value "1"; questi vengono poi rimessi in whitelist alla fine di globalblocklist, che è l'ordine di caricamento, il quale poi imposta a value "0" gli IP che sappiamo essere buoni, rimettendoli così in whitelist. È così dal primo giorno del blocker e resterà così. Questi sono semplici messaggi [WARN], non messaggi [EMERG], e non influenzano in alcun modo il funzionamento di Nginx.
(Oltre 4000 referrer dannosi, referrer spam, user-agent, bot dannosi, IP dannosi, siti pornografici, di gioco d'azzardo e clickjacking, redditizie aziende SEO, rilevatori di temi WordPress e in continuo aumento)
Migliaia di ore di programmazione e test sono state investite in questo progetto, mostra un po' d'affetto
I bot tentano di sembrare altri software o siti web mascherando il loro user agent. I loro nomi user agent possono sembrare innocui, persino perfettamente legittimi.
Ad esempio, "^Java" ma secondo Project Honeypot è in realtà uno dei più pericolosi, MA molti bot legittimi in giro hanno "Java" nella loro stringa user agent, quindi l'approccio di molti che bloccano "Java" non è solo ignorante ma blocca anche crawler molto legittimi, inclusi alcuni di Google e Bing, e mi rende molto chiaro che coloro che scrivono script per bloccare bot raramente li testano.
I referrer spam e i nomi di dominio spam usano tecniche molto astute per saltare dai tuoi siti e avviare redditizie campagne di click-jacking e click-redirect che mostrano pubblicità a persone ignare che navigano sul web, o addirittura installano malware, adware o ransomware nei loro browser, che poi diventano parte della loro redditizia rete di bot.
Questo Bot Blocker include centinaia di nomi di dominio e indirizzi IP che la maggior parte delle persone non vedrà mai nei propri log Nginx. Questo è il risultato del fatto che tutti i miei siti usano SSL e Content-Security-Policy (CSP), che blocca le cose prima ancora che arrivino a Nginx, e ho individuato e continuo a individuare alcuni dei peggiori domini e bot in circolazione.
Una quantità enorme di siti web pornografici, di gioco d'azzardo e di fake news viene inoltre bloccata da questo script blocker, che cresce a ritmo rapido.
Purtroppo la maggior parte degli script bot blocker in circolazione sono semplicemente copiati e incollati dagli script di altre persone e fatti passare per lavoro proprio. Questo è stato ispirato da quello creato da https://github.com/mariusv e ho contribuito a quel progetto, ma poi ho preso una direzione completamente nuova, l'ho ripulito parecchio e ho ricominciato da zero. Ora è un progetto del tutto indipendente. È pulito, funziona ed è stato testato a fondo.
Questa lista per il bot blocker di Nginx è progettata per essere un file include globale di Nginx e utilizza le direttive Nginx map $http_user_agent, map $http_referer e geo $validate_client.
In questo modo il file .conf viene caricato una volta in memoria da Nginx ed è disponibile a tutti i siti web che gestisci. Devi semplicemente usare un'istruzione Include in un file conf di un vhost Nginx.
Il bello è che si tratta di un unico file centrale usato da tutti i tuoi siti web. Questo significa che c'è un solo posto dove fare modifiche, ad esempio aggiungere nuovi bot che scopri nei tuoi file di log. Qualsiasi modifica viene applicata immediatamente a tutti i siti dopo un semplice "sudo service nginx reload". Ma ovviamente esegui sempre un sudo nginx -t per testare le modifiche alla configurazione prima di ricaricare.
Il file è minuscolo. Al momento in cui scrivo e del primo commit pubblico, la dimensione del file, inclusi tutti i commenti "che nginx ignora", è attualmente di soli 185 kb e contiene già oltre 5000 domini dannosi, bot dannosi e indirizzi IP dannosi. È così leggero che Nginx non si accorge nemmeno che esista. Contiene già migliaia di voci: totale aggiornato all'inizio di questo README.
A differenza di molti altri blocker di bot dannosi per Nginx e Apache in cui le persone copiano e incollano liste da altri, questa lista è stata costruita da zero e testata a fondo, e intendo davvero a fondo, per oltre 10 mesi. Proviene da log di server reali monitorati quotidianamente e ci sono almeno 3-10 nuove aggiunte a questo file quasi ogni giorno.
È stata anche testata approfonditamente per i falsi positivi usando mesi di test costanti e regolari e di monitoraggio dei file di log.
Tutti i siti web elencati tra i referrer dannosi vengono controllati uno per uno prima ancora di essere aggiunti. Copiare semplicemente qualcosa che sembra sospetto nel tuo file di log e aggiungerlo a un blocker come questo senza prima vedere davvero cosa sia.... beh, è quanto meno sciocco.
Nginx ha un grazioso errore chiamato 444 che letteralmente lascia cadere la connessione. Tutte queste regole emettono una risposta 444, quindi se una regola corrisponde, l'IP richiedente semplicemente non riceve risposta e sembrerebbe che il tuo server non esista o sia offline.
Un test con curl usando una delle righe di comando di test documentate nel file /conf.d/globalblacklist.conf darà un semplice "curl: (52) Empty reply from server" ed è questa la risposta che ricevono i referrer dannosi e i bot.
Per i bot o i crawler che vuoi ancora consentire ma di cui vuoi limitare la frequenza di visite, puoi usare le funzioni di rate limiting integrate che ho incluso. Il file è ampiamente commentato, quindi dovresti riuscire a capirci qualcosa; in caso contrario, mandami semplicemente un messaggio se hai problemi.
oppure per contribuire con i tuoi referrer dannosi, bot o per correggere qualsiasi bot o dominio bloccato erroneamente, crea una copia (fork) di questo repository e invia pull request sui singoli file situati qui e poi invia una pull request (PR).
riguardo a elenchi errati o qualsiasi altro problema sul sistema issues; verranno esaminati e rimossi se necessario. Rispondo molto rapidamente ai problemi degli utenti e ho aiutato innumerevoli utenti per giorni e giorni a far funzionare il loro bot blocker. Si potrebbe dire che sono matto (discutibile), ma amo aiutare le persone e non ignoro le issue o le persone che hanno problemi a far funzionare tutto questo.
Molte liste in giro inseriscono domini strani nel file hosts. Il tuo file hosts e il DNS non li capiranno. Questa lista usa domini convertiti nel formato DNS corretto, comprensibile da qualsiasi sistema operativo. Evita di usare liste che non inseriscono la struttura di dominio correttamente formattata nelle loro liste.
Ad esempio Il dominio:
lifehacĸer.com (nota la K)
in realtà si traduce in:
xn--lifehacer-1rb.com
Puoi eseguire un nslookup su qualsiasi sistema operativo e risolverà correttamente.
`nslookup xn--lifehacer-1rb.com````xn--lifehacer-1rb.com origin = dns1.yandex.net mail addr = iskalko.yandex.ru serial = 2016120703 refresh = 14400 retry = 900 expire = 1209600 minimum = 14400 xn--lifehacer-1rb.com mail exchanger = 10 mx.yandex.net. Name: xn--lifehacer-1rb.com Address: 78.110.60.230 xn--lifehacer-1rb.com nameserver = dns2.yandex.net. xn--lifehacer-1rb.com text = "v=spf1 redirect=_spf.yandex.net" xn--lifehacer-1rb.com nameserver = dns1.yandex.net.
- Consulta: https://www.charset.org/punycode per maggiori informazioni a riguardo.
************************************************
## MONITORA SEMPRE QUELLO CHE STAI FACENDO:
**ASSICURATI di monitorare i log del tuo sito web** dopo aver implementato questa soluzione. Ti suggerisco di installarla prima su un singolo sito e di monitorarla per eventuali falsi positivi prima di metterla in produzione su tutti i tuoi siti web.
Non fare lo struzzo nascondendo la testa sotto la sabbia: essere un operatore di server e proprietario di siti web responsabile significa che devi monitorare frequentemente i tuoi log. Molti di voi sono finiti qui in primo luogo proprio perché avete visto cose sgradevoli nei vostri file di log di Nginx.
Inoltre, monitora quotidianamente i tuoi log per individuare nuovi referer dannosi e stringhe di user-agent che desideri bloccare. La migliore fonte per aggiungere elementi a questa lista sono i log dei tuoi server, non i miei.
Sentiti libero di contribuire a questo progetto inviando una Pull Request (PR) con i referer dannosi provenienti dai tuoi log. Puoi comunque fare affidamento su questa lista per tenere fuori il 99% dei malintenzionati.
************************************************
## COME MONITORARE I TUOI LOG GIORNALMENTE (IL MODO FACILE):
**Con un grande ringraziamento e riconoscenza a**
https://blog.nexcess.net/2011/01/21/one-liners-for-apache-log-files/
Per monitorare quotidianamente i principali referer dei file di log di un sito web, utilizza i seguenti semplici cron job che ogni mattina ti invieranno via email un elenco dei principali referer / user agent dai file di log di un determinato sito web. Questo è un esempio di un singolo cron job per un singolo sito. Configura più cron job per ogni sito che vuoi monitorare. Ecco un cron che viene eseguito ogni mattina alle 8 e mi invia via email il log dei referer ripulito. Quando dico "ripulito", intendo che il dominio del sito e altri referer come Google e Bing vengono esclusi dai risultati. Naturalmente devi modificare il nome del file di log, il nome di dominio e il tuo indirizzo email negli esempi seguenti. Il secondo cron per la raccolta degli user agent non esclude alcun referer, ma puoi aggiungere questa funzionalità copiando la condizione awk `!~` dal primo esempio.
##### Cron per il monitoraggio giornaliero dei Referer su Nginx
`00 08 * * * tail -10000 /var/log/nginx/mydomain-access.log | awk '$11 !~ /google|bing|yahoo|yandex|mywebsite.com/' | awk '{print $11}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Referers for Mydomain.com" [email protected]`
Questo ti invia via email un elenco giornaliero dei referrer utilizzando un comando awk per escludere domini come google, bing e il tuo stesso nome di dominio.
##### Cron per il monitoraggio giornaliero degli User Agent su Nginx
`00 08 * * * tail -50000 /var/log/nginx/mydomain-access.log | awk '{print $12}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Agents for Mydomain.com" [email protected]`
Questo ti invia via email un elenco dei principali User-Agent che hanno visitato il tuo sito nelle ultime 24 ore, utile per individuare stringhe User-Agent anomale o sospette.
************************************************
## BLOCCA I BOT AGRESSIVI A LIVELLO DI FIREWALL USANDO FAIL2BAN:
Ho aggiunto un filtro e un'azione personalizzati per Fail2Ban, da me scritti, che monitorano i log di Nginx per individuare bot che generano un gran numero di errori 444. Questa jail personalizzata per Fail2Ban esamina i log su un periodo di 1 settimana e banna il trasgressore per 24 ore.
Aiuta molto a tenere fuori alcuni recidivi e a impedire che riempiano i tuoi file di log con errori 444.
Consulta la cartella Fail2Ban per le istruzioni su come configurare questa fantastica aggiunta per Nginx Bad Bot Blocker.
************************************************
## FERMARE LO SPAM "FANTASMA" DI GOOGLE ANALYTICS:
Il semplice utilizzo del blocco Nginx non ferma lo spam fantasma dei referrer di Google Analytics perché questi colpiscono direttamente Analytics e non sempre toccano necessariamente il tuo sito web.
Dovresti usare filtri regex in Analytics per prevenire lo spam fantasma dei referrer.
A questo scopo sono disponibili diversi file google-exclude-0*.txt che sono stati creati per te e che vengono aggiornati nello stesso momento in cui viene aggiornato Nginx Blocker. Man mano che la lista cresce, verranno creati ulteriori file di esclusione.
************************************************
## PER FERMARE LO SPAM "FANTASMA" SU GOOGLE ANALYTICS, SEGUI LA SEMPLICE GUIDA VISIVA QUI SOTTO
Segui le istruzioni visive passo passo qui sotto per aggiungere questi file google-exclude come segmenti al tuo sito web.
<table style="width:100%;margin:0;">
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-01.jpg" alt="Google Analytics - Aggiunta di segmenti per fermare lo spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-02.jpg" alt="Google Analytics - Aggiunta di segmenti per fermare lo spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-03.jpg" alt="Google Analytics - Aggiunta di segmenti per fermare lo spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-04.jpg" alt="Google Analytics - Aggiunta di segmenti per fermare lo spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-05.jpg" alt="Google Analytics - Aggiunta di segmenti per fermare lo spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-06.jpg" alt="Google Analytics - Aggiunta di segmenti per fermare lo spam fantasma"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-07.jpg" alt="Google Analytics - Aggiunta di segmenti per fermare lo spam fantasma"/></td>
</tr>
</table>
************************************************
## BLOCCARE I DOMINI SPAM USANDO GOOGLE SEARCH CONSOLE / WEBMASTER TOOLS
(Come usare il file google-disavow.txt)
Ho aggiunto la generazione di un file di testo Google Disavow chiamato google-disavow.txt. Questo file può essere utilizzato negli Strumenti per i Webmaster di Google per bloccare tutti questi domini in quanto link spam o dannosi. Da usare con cautela.
************************************************
## VERSIONE ROBOTS.txt PER CHI NON PUÒ USARE QUESTO BLOCCO COMPLETO?
Molte persone sono in balia della propria società di hosting e non hanno accesso root al server che sta dietro al loro sito web. Se questa è la tua situazione, dai un'occhiata al file robots.txt generato automaticamente, che ti aiuterà in una certa misura a tenere lontani molti bot e User-Agent dannosi dai tuoi siti.
************************************************
## VERSIONI .htaccess PER CHI NON PUÒ USARE QUESTO BLOCCO COMPLETO?
Molte persone sono in balia della propria società di hosting e non hanno accesso root al server che sta dietro al loro sito web.
Se questa è la tua situazione, dai un'occhiata alle versioni .htaccess generate automaticamente dello Spam Referrer Blocker che puoi trovare in <a href="https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/tree/master/.htaccess">questo repository</a> questo metodo .htaccess (SOLO PER SITI APACHE) ti aiuterà a tenere fuori dal tuo sito tutti gli Spam Referrer presenti in questo blocco.
Questo viene menzionato qui semplicemente perché molte persone che usano sistemi CPanel pensano di essere dietro a un server Nginx, ma in realtà stanno eseguendo un server Apache che si trova dietro a un server proxy Nginx. .htaccess non funziona sui siti Nginx.
Non usi il server web Nginx? Guarda il [](https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker)
************************************************
# FUNZIONA, CAVOLO!!!
************************************************
## Goditi ora quello che il Nginx Bad Bot Blocker può fare per te e per i tuoi siti web.
### E Aiuta a Sostenere Questo Progetto
Migliaia di ore di programmazione e test sono state dedicate a questo progetto, mostra un po' di affetto
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Offrimi un caffè" width="300"/>](https://ko-fi.com/mitchellkrog)
************************************************
# IL TUO SITO WEB È STATO HACKERATO?
[](mailto:[email protected]) per aiutarti a ripulire e mettere in sicurezza il tuo sito web.
************************************************
### ALTRI PROGETTI GRATUITI FANTASTICI
- https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker
- https://github.com/mitchellkrogza/Badd-Boyz-Hosts
- https://github.com/mitchellkrogza/Ultimate.Hosts.Blacklist
- https://github.com/mitchellkrogza/Stop.Google.Analytics.Ghost.Spam.HOWTO
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/fail2ban-useful-scripts
- https://github.com/mitchellkrogza/linux-server-administration-scripts
- https://github.com/mitchellkrogza/Travis-CI-Nginx-for-Testing-Nginx-Configuration
- https://github.com/mitchellkrogza/Travis-CI-for-Apache-For-Testing-Apache-and-PHP-Configurations
- https://github.com/mitchellkrogza/Fail2Ban-Blacklist-JAIL-for-Repeat-Offenders-with-Perma-Extended-Banning
- https://github.com/funilrys/PyFunceble
- https://github.com/funilrys/dead-hosts
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/Suspicious.Snooping.Sniffing.Hacking.IP.Addresses
- https://github.com/mitchellkrogza/Fail2Ban.WebExploits
************************************************
### DAI UN'OCCHIATA ANCHE ALLA NUOVA GRANDE LISTA DI SITI WEB HACKERATI CON MALWARE E WORDPRESS
Questo repository contiene un elenco di tutti i siti web che incontro e che sono stati hackerati con malware.
La maggior parte dei proprietari dei siti non sa che i propri siti sono stati hackerati e vengono utilizzati per diffondere malware.
Dai un'occhiata a: https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
************************************************
### TI PIACE LA FOTOGRAFIA?
Fai un salto e vienimi a trovare su [mitchellkrog.com](https://mitchellkrog.com) o su [Facebook](https://www.facebook.com/MitchellKrogPhotography) oppure seguimi su Twitter <a href='https://twitter.com/MitchellKrog'><img src="https://img.shields.io/twitter/follow/MitchellKrog.svg?style=social&label=Follow" alt='Follow @MitchellKrog'></a>
************************************************
### RINGRAZIAMENTI E COLLABORATORI:
Molte grazie a tutti coloro che contribuiscono a questo progetto.
Molte parti degli script di generazione e del codice che gestiscono questo progetto sono state adattate da frammenti provenienti da centinaia di fonti.
In effetti è così difficile menzionare tutti, ma ecco alcune persone chiave i cui piccoli frammenti di codice mi hanno aiutato a introdurre sempre nuove funzionalità. Mostra loro un po' di affetto e dai un'occhiata anche ad alcuni dei loro progetti.
- Konstantin Goretzki @konstantingoretzki https://github.com/konstantingoretzki (Regex migliorata sul filtro Fail2Ban)
- Stuart Cardall - https://github.com/itoffshore (Script di installazione, aggiornamento e configurazione e maintainer del pacchetto Alpine Linux)
- Mike van Eckendonk - https://github.com/Eckybrazzz
- Nissar Chababy @funilrys - https://github.com/funilrys/PyFunceble (Ottimo script per verificare i nomi di dominio ATTIVI, INATTIVI e SCADUTI)
- Marius Voila https://github.com/mariusv
- Cătălin Mariș https://github.com/alrra
- deformhead https://github.com/deformhead
- bluedragonz https://github.com/bluedragonz
- Alexander https://github.com/shoonois
- Steven Black https://github.com/StevenBlack
- Fail2Ban - https://github.com/fail2ban
- Stevie-Ray Hartog https://github.com/Stevie-Ray
- Sir Athos from StackOverFlow - http://stackoverflow.com/users/2245910/sir-athos (aiuto con i tag e i commit delle build Travis)
- StackOverflow - http://stackoverflow.com/ (script bash da centinaia di domande e risposte)
- SuperUser - http://superuser.com/ (frammenti da varie domande e risposte)
Se ritieni che il tuo nome dovrebbe essere qui, scrivimi una riga.
************************************************
### Scrivere codice come questo richiede molto tempo !!
Migliaia di ore di programmazione e test sono state dedicate a questo progetto, mostra un po' di affetto
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Offrimi un caffè" width="300"/>](https://ko-fi.com/mitchellkrog)
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/zuko.png"/>
************************************************
# MIT License
## Copyright (c) 2017 Mitchell Krog - [email protected]
## https://github.com/mitchellkrogza
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.