Il modo migliore per utilizzare la grande blacklist IP per negare l'accesso a un server web?

C'è un modo efficace e semplice per utilizzare la blacklist IP ( come questa , ma forse 2-3 volte più grande, che non può essere semplificata a CIDRs molto) per negare l'accesso a un server web (sia lighttpd che Apache) usando standard / userspace software (nessuna ricompilazione del kernel) su Linux ?

Le regole di Deny AFAIK in Apache config e iptables hanno tempo di ricerca lineare. Ci sono moduli del kernel che gestiscono in modo efficiente grandi elenchi di IP, ma l'installazione di questi richiede la patch del kernel.

  • Trova directory in cui mancano i file con una specifica estremità
  • Come aggiungere systematically secure_path nel file sudoers
  • Le performance NFS di Linux rispetto alle altre FS
  • Miglior server IRC linux leggero per una squadra
  • Come interrompere i servizi di sistema in un ordine specifico
  • Perché il mio server utilizza tanta memory?
  • 5 Solutions collect form web for “Il modo migliore per utilizzare la grande blacklist IP per negare l'accesso a un server web?”

    Potresti provare a utilizzare il moblock (google it – non può aggiungere ancora link, nuovo utente). Distriggers tutti i blocchi di blocchi scaricati e utilizza solo un block locale generato. Potrebbe essere necessario aggiungere il supporto NFQUEUE (coda netlink) al tuo kernel, ma può essere già presente per impostazione predefinita.

    L'impostazione generale è: per tutti i pacchetti SYN sulle porte che si desidera filtrare, utilizzare l'azione NFQUEUE di netfilter per spingerli a moblock, seduti negli spazi userspace. Moblock effettua una corrispondenza efficiente e invia una risposta ACCEPT o DROP a netlink.

    Il formato del file di configuration del moblock è abbastanza semplice: su ciascuna row, assegnare un nome e una gamma IP, nel formato 123.123.123.42-123.123.124.56. Quando il moblock carica gli intervalli, costruisce una struttura dati efficiente in grado di corrispondere a quelle intervalli. Quando un pacchetto viene eliminato a causa di una corrispondenza, il nome di intervallo e l'IP di origine effettiva vengono registrati (o no, se si distriggers la logging delle corrispondenze).

    Ho usato il moblock nella sua configuration predefinita (blocchi di liste scaricati) con circa 230000 intervalli IP e non hanno osservato alcun colpo di performance rilevabile (solo il pacchetto SYN è importnte per mantenere il traffico del kernel / userspace).

    Un avvertimento: se il moblock non è in esecuzione, credo che l'azione predefinita di NFQUEUE è DROP, con conseguente negazione del servizio dell'applicazione. Detto questo, ho continuato a funzionare continuamente senza problemi per oltre 6 mesi. È comunque ansible impostare una sonda di monitoraggio che avvisa se un IP conosciuto non è più in grado di connettersi a: 80 sul server. Non si desidera definitivamente utilizzare il moblock per filtrare ssh, a less che non si siano abilitati in modo esplicito alcuni IP affidabili in netfilter per recuperare.

    Le regole di negazione AFAIK in Apache config e iptables hanno tempo di ricerca lineare.

    Una specie di. È ansible utilizzare le catene in IPTables per abbatterlo, vale a dire che un approccio più semplice sarebbe avere una catena per each block di indirizzi di class A (ad es. 1.0.0.0/8, 2.0.0.0/8 ecc.) E le regole per bloccando la catena, riducendo notevolmente il tempo di ricerca (peggior caso ~ 200 valutazioni di regole per arrivare alla regola di class A e quindi comunque molte regole all'interno di quel block. È anche ansible utilizzare "iptables -L -v -n" per vedere i set di regole vengono valutati più pesantemente e li spostano in cima. Ci sono altri modi migliori per farlo, la documentazione di iptables copre questo.

    Sì, sul tuo sistema, dovrebbe essere un /etc/hosts.allow . Date un'occhiata, ha alcuni esempi molto semplici per bloccare IP anche su base di servizio.

    In poche parole, in /etc/hosts.allow :

     ALL : ALL : allow httpd : /etc/hosts.httpd.deny : deny sshd : /etc/hosts.sshd.deny : deny 

    Penso che non puoi farlo senza presentarvi il kernel.

    l'ipset sembra essere una buona soluzione.

    Citando dalla sua pagina web:

    Se lo desidera

    • memorizzare più indirizzi IP o numbers di port e confrontare la raccolta da iptables a un colpo d'occhio;
    • Aggiorna dynamicmente le regole iptables contro gli indirizzi IP o le porte senza penalità sulle performance;
    • esprimere complessi codici IP e indirizzi basati su porte con una sola regola iptables e beneficiare della velocità dei set IP

    allora ipset può essere lo strumento giusto per te.

    È anche ansible farlo in .htaccess

    Ecco un esempio che blocca da useragent, ma l'idea è la stessa: http://jetfar.com/trap-content-scraper-spam-harvester-bots-using-honeypot-wordpress-htaccess/

    Le regole di negazione AFAIK in Apache config e iptables hanno tempo di ricerca lineare.

    Vorrei provarlo e poi fare un certo test prima di decidere questo fuori – l'impatto potrebbe essere inosservabile, e sarebbe molto facile da mantenere.

    Allo stesso modo si potrebbe provare ad aggiungere l'elenco a /etc/hosts.deny

    Non credo che sia più veloce senza provare prima.

    Cheers / Richy

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