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.

  • Provisioning per un piccolo team di sviluppo software Linux
  • Come applicare la complessità della password in Redhat?
  • I valori di memory SNMP non corrispondono a `free`
  • Preferibile software VM per un piccolo team di dev
  • Come configurare nginx per redirect a https per un determinato host quando si trova dietro un bilanciatore di carico di terminazione SSL
  • Impostazione $ PATH per utente weberver
  • Se ansible, vorrei mostrare a tutti gli indirizzi un errore di server interno (500).

    I IP sono dispersi e non sotto alcun sottoinsieme particolare.

  • Impostare grub2 su un raid software GPT 3 TB HDD
  • arp che-ha richieste di visualizzazione vlan isolated indirizzi diversi (single NIC)
  • Apache con solo HTTP misto e HTTPS virtualhosts
  • Utilizzo di software-RAID vs "firmware" -RAID (aka FakeRAID)
  • Debian ip6tables regola l'impostazione per IPv6
  • ia32-libs: Dipende: ia32-libs-i386 ma non è installabile
  • 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.