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.

  • Utilizzo di software-RAID vs "firmware" -RAID (aka FakeRAID)
  • Raggiungere un server Linux con un IP privato senza VPN
  • Routing multipath nei kernel post-3.6
  • nginx proxypass rewrite url base
  • Linux; Che cos'è lo stripe_cache_size e cosa fa?
  • Trova directory / file più grandi in modo ricorsivo
  • Se ansible, vorrei mostrare a tutti gli indirizzi un errore di server interno (500).

    I IP sono dispersi e non sotto alcun sottoinsieme particolare.

  • Gestione dei pacchetti Debian locali nel controllo sorgente
  • Problema con il time lockd del server NFS su Debian linux
  • Abilitare SMP su Debian i386?
  • Devo interrompere i servizi (Apache, MySQL) durante la ricostruzione software RAID 1 su Linux?
  • C'è un modo per rimuovere "ultimi messaggi ripetuti x volte" dai registri?
  • apt-get l'aggiornamento / aggiornamento senza modificare nulla
  • 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.