Linux: Blocca l'enorme elenco di IP?

Qual è il modo più efficace per bloccare l'accesso agli indirizzi IP da 8-10k?

Il mio server esegue EngineX su Debian.

Se ansible, vorrei mostrare a tutti gli indirizzi un errore di server interno (500).

I IP sono dispersi e non sotto alcun sottoinsieme particolare.

  • Il registro di accesso di Nginx mostra l'utente autenticato "admin"
  • Pratica migliore per gestire il server default_ e il public ip in nginx
  • Chiarimento del risultato netcat
  • Nginx Reverse Proxy Gzip al client
  • Qual è il vantaggio di avere ELB davanti ai server NGINX?
  • Mercurial non riceve spinta
  • Nginx / PHP-FPM = pagine vuote
  • Come interrompere i colpi ripetitivi dal medesimo host allo stesso URL?
  • 3 Solutions collect form web for “Linux: Blocca l'enorme elenco di IP?”

    se gli indirizzi sono raggruppati in una o più sottoreti continui [es. poche / 24s] – creo una regola di prerouting semplice che avrebbe DNAT tutto il traffico sulla port 80 da loro ad ascoltare qualcosa sulla port 81 [ad esempio vhost da nginx] che servirebbe solo pagina di errore:

    iptables -t nat -A PREROUTING -p tcp -s 194.88.0.0/16 --dport 80 -j REDIRECT --to 81 

    se questo è 8-10k ips unico sparsi "tutto intorno" … sarà interessante; -] – vorrei ancora andare con lo scenario sopra ma per corrispondenza io userei ipset . qualcosa come questo:

     ipset --create ban iphash ipset --add ban 80.1.2.3 ipset --add ban 90.4.5.6 ipset --add ban 153.17.18.19 # .... iptables -t nat -A PREROUTING -p tcp -m set --set ban src --dport 80 -j REDIRECT --to 81 

    Potrebbe dare un'occhiata a: http://www.hipac.org/ Gestisce un gran numero di regole abbastanza bene. Se esiste un model per gli IP che si sta tentando di bloccare, è ansible utilizzare la regola MATCH. La regola di prerouting di pQd functionrebbe bene con nf-hipac che utilizza una tabella hash per memorizzare le regole e è notevolmente più veloce delle ricerche iptables predefinite.

    Potresti scrivere le regole in linee di negazione nel block di posizione. Per renderlo semplice, è ansible includere un file che includa i blocchi di negazione e ricaricare la configuration per ora. Poiché sarebbe all'interno del file di configuration nginx, non dovrebbe influenzare troppo le performance.

    Se si dispone di un elenco di questi indirizzi in un file, è ansible provare quanto segue in Nginx config:

    1 Definire un gruppo IP utilizzando la direttiva geo (all'interno del block http):

     http {
     ...
       block geo $ {
         default 0;
         include la list nera; 
       }
     ...
     }
    

    Ciò significa che il block $ variabile sarà impostato su 0 per impostazione predefinita.

    2 Preparare un file di liste nera per assomigliare a questo:

     192.168.0.0/24 1;
     192.168.2.0/24 1;
     10.0.0.0/8 1;
    

    Cioè, impostare block variabile $ a 1 per questi indirizzi.

    3 All'interno del block `location ', controllare questa variabile e segnalare errore 500 se è 1:

      se (block $ 1) {
        return 500;
      }
    

    PS: L'efficienza di questa soluzione è argomentabile, poiché le connessioni da IP barrate sono accettate () e passate al server web. Tuttavia, se questo piccolo overhead non è critico per il tuo host, preferisco farlo con Nginx, non con iptables.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.