Firewalld bloquear / descartar e permitir por IP

2

Temos um servidor raiz Linux que basicamente é apenas um servidor docker. Hospedagem de contêineres e um corredor de IC.

Para proteger este servidor, a ideia básica para agora é

  • bloqueia todo o tráfego
  • exceto por um (ou mais) IP (s) permitido (s).

Eu adicionei uma regra rica ontem para o ip4

  • bloqueando 0.0.0.0/0
  • permitindo explicitamente nosso IP estático

Isso resultou no bloqueio do meu acesso. Recipiente Docker onde ainda é acessível. Os contêineres geram uma nova interface, até onde eu entendo que essas interfaces só devem ser responsáveis pela comunicação do host para o contêiner. Espero, pelo menos, que o firewalld filtre o tráfego antes que o tráfego seja encaminhado de, e. eth0 para dockerinterface1234.

Minha pesquisa até agora sugere. Deixar as informações da interface em uma zona torna a zona responsável por todo o tráfego. No entanto, meu próprio teste sugere que eu configurei errado ou minha pesquisa estava errada.

    
por Daniel Böttner 08.08.2017 / 11:15

2 respostas

1

Adopção do meu tutorial sobre zonas baseadas em IP para firewalld :

Comece alterando a zona padrão para ser descartada:

firewallctl config set default-zone drop

A zona de recebimento descarta todas as conexões de entrada. Você pode querer considerar a block zone que faz o mesmo, exceto que ela retorna uma conexão bloqueada em vez de apenas deixá-la silenciosamente. Em seguida, crie uma nova zona e vincule-a a uma sub-rede de endereços IP (ou um único endereço):

 firewallctl new --permanent zone --name "myzone"
 firewallctl zone "myzone" --permanent add source "198.51.100.0/24"
 firewallctl zone "myzone" --permanent add source "2001:0DB8::/32"

(Lembre-se de estar preparado para o IPv6!) Verifique se as suas zonas estão bem:

 firewallctl info zones --active

Neste ponto, você inicia adicionando portas ou serviços a myzone . Estes serviços só serão acessíveis a partir da zona / sub-rede IP que você adicionar e não na zona padrão de queda / pública.

    
por 08.08.2017 / 12:16
0

A Wikipédia possui um esquema de fluxo de pacotes bacana no link

O Docker coloca suas regras de mapeamento de porta no estágio 'mangle prerouting'. Esse estágio é executado antes de "entrada de filtro", onde a maioria dos firewalls tenta colocar suas regras de filtragem de entrada, mas se você observar o esquema, verá que os pacotes evitarão esse estágio ("decisão de roteamento") se estiverem sendo encaminhados. O que provavelmente é o que está acontecendo para você.

Em vez de lutar com as regras do Docker, você pode se apropriar completamente delas usando a tabela "bruta". Para eliminar todo o tráfego de 'eth0' para a porta 12345

iptables -t raw -I PREROUTING -i eth0 -p tcp --dport 12345 -j LOG

Observe que a tabela "bruta" também afeta o tráfego interno (Docker), portanto, se você for abandonar com base nos endereços IP de origem, certifique-se de também colocar os intervalos de IP interno do host local e do docker na lista de permissões

    
por 12.11.2017 / 10:17