Come bloccare gli indirizzi IP in HAProxy?


Risposte:


21

È possibile eliminare un IP a livello di tcp creando un ACL e quindi utilizzando il rifiuto della connessione se l'ACL è abbinato:

    acl bad_ip src 10.10.10.0
    tcp-request connection reject if bad_ip

Puoi anche impostare un back-end 403 e inviarlo a questo se vuoi farlo a livello HTTP:

frontend foo
        ...
        acl bad_ip src 10.10.10.0
        use_backend bad_guy if bad_ip
...

backend bad_guy
        mode http
        errorfile 403 /etc/haproxy/errors/403.http

Questi ACL possono essere piuttosto flessibili e puoi renderlo tale da soddisfare più condizioni all'interno di un ACL o più ACL all'interno dell'azione. Maggiori informazioni su http://haproxy.1wt.eu/download/1.5/doc/configuration.txt .


4
È necessario un backend separato solo se si desidera utilizzare una pagina di errore 403 personalizzata. Altrimenti, puoi cavartela con "http-request deny if bad_ip"
sh-beta

1
Conosci un modo per leggere l'ip da un negozio più flessibile, come db o file flat separato?
UpTheCreek

1
Quel back-end bad_guy non funziona come previsto, poiché non ha server definiti, è considerato "inattivo" e restituirà sempre 503 - servizio non disponibile. Ho solo pensato di poter scrivere "block if bad_ip" per la configurazione del frontend e genererà correttamente 403 pagine. EDIT: http-request nega se bad_ip funziona come pubblicizzato da @ sh-beta - essenzialmente fa la stessa cosa, ma forse solo per le richieste http?
Dalibor Filus,

C'è un'altra leggera differenza tra il blocco e il rifiuto della richiesta http ed è questo: "una regola 'blocco' posta dopo una regola 'use_backend' verrà comunque elaborata prima".
Dalibor Filus,

2
Se dai a un "cattivo" un 403, allora sa che è bloccato e cercherà un altro vettore. Se dai a un "cattivo" un 503 .. poi pensa di aver causato con successo un DOS e di fermare l'attacco .. Ovviamente potrebbe capirlo ma ci vorrà molto più tempo.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.