Como bloquear endereços IP abusivos com pf no OpenBSD?

11

Podemos ver nos logs do nginx que há um endereço IP fazendo coisas desagradáveis.

Como podemos bloqueá-lo com um comando pf e, posteriormente, permanentemente com o /etc/pf.log ? Como podemos bloquear um x.x.x.x/24 para esse IP? É um exemplo: 1.2.3.4

UPDATE: não, parece que o OpenBSD não tem permissão / arquivo de negação em / etc. E AFAIK o melhor conselho para o bloqueio de endereços IP abusivos está usando pf.

# cd /etc 
# ls -la|egrep -i 'deny|allow'
# uname -a
OpenBSD foo.com 5.4 GENERIC.MP#0 amd64
# 
    
por somelooser28533 22.08.2014 / 20:33

3 respostas

11

A melhor maneira de fazer isso é definir uma tabela e criar uma regra para bloquear os hosts, em pf.conf :

table <badhosts> persist
block on fxp0 from <badhosts> to any

Em seguida, adicione / elimine dinamicamente os endereços IP:

$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4

Outros comandos 'table' incluem flush (remove all), replace e show . Veja man pfctl para mais.

Se você quiser uma lista mais permanente, poderá mantê-la em um (ou mais) arquivos. Em pf.conf :

table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any

Você também pode adicionar nomes de host em vez de endereços IP. Veja a seção "Tabelas" de man pf.conf e man pfctl .

Nota : Os exemplos acima assumem que a interface voltada para a Internet é fxp0 , por favor mude de acordo com sua configuração. Além disso, lembre-se de que as regras em pf.conf são avaliadas sequencialmente e, para as regras block ou pass , é a última regra de correspondência aplicável. Com este conjunto de regras

table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80

e depois de adicionar 1.2.3.4 e 192.168.0.10 à tabela badhosts

$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10

todo o tráfego de 1.2.3.4 e 192.168.0.10 será bloqueado, mas o segundo host será capaz de fazer conexões com a porta 80 de outras máquinas, porque a regra pass corresponde e substitui a regra block .

    
por 10.09.2014 / 11:51
3

Eu obtive esta informação do site e me perdoe pelo meu conhecimento de OpenBSD , mas aqui vai. Dê uma olhada neste URL . De acordo com isso, afirma bloquear um IP que você faria:

echo '123.123.123.123' >> /etc/pf.blocked.ip.conf

Então você reiniciará o firewall:

pfctl -d
pfctl -e -f /etc/pf.conf

Ou, para adicionar sem reiniciar o tipo de firewall:

pfctl -t blockedips -T add 111.222.333.444

Agora, verifique se foi adicionado o tipo:

pfctl -t blockedips -T show

Atualização: Talvez isso ajude.

  • Abra o seguinte arquivo no vi:

    vi /etc/pf.conf

  • Adicione a seguinte linha de código:

    table <blockedips> persist file "/etc/pf.blocked.ip.conf" ext_if="bge0" # interface connected to internet

  • Depois disso, eu tentaria reiniciar o firewall e confirmar que o IP está bloqueado digitando:

    pfctl -d
    pfctl -e -f /etc/pf.conf
    pfctl -t blockedips -T show
    
por 22.08.2014 / 20:45
3

Não está claro a partir de outras respostas que você precisa criar uma tabela real dos badhosts que você está tentando bloquear.

Isso acontece no arquivo pf.conf, por exemplo, eu tenho dois arquivos badguys, 1 e 2 badguys1 é para quem vem e vai, e badguys2 é para lista negra permanente.

Então, se você precisar adicionar um ip de alguém que é um incômodo por um período de tempo, adicione-o ao badguys1.

Agora, no seu arquivo pf.conf você tem isso. No meu exemplo eu uso en1, porque essa é a minha interface WiFi. Defina isso para o que sempre interface sua rede vem em.

table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on en1 from <badhosts> to any

Agora você pode adicionar endereços temporários a badguys1. (NÃO badhosts, esse é um nome para as tabelas)

sudo pfctl -t badguys1 -T add 185.130.5.160

1 table created.
1/1 addresses added.

Apesar de dizer que 1 tabela foi criada - ela realmente adiciona o ip, não criando uma nova tabela. Agora, se você procurar no badguys1, verá o novo IP.

sudo pfctl -t badhosts -T show
    
por 09.03.2016 / 16:56

Tags