Tiago Souza - Tecnologia, Riscos e Segurança

Como criar script para controle centralizado de firewall

O controle de firewall centralizado fornece uma maneira centralizada de gerenciar o firewall em vários servidores ou loadbalancers executando iptables. Desta forma, você pode rapidamente permitir, bloquear, deletar e pesquisar abuse rangers e etc com um comando em vários servidores. Acessa esses servidores através de SSH.

Suporta IPv4 e IPv6.

Testado no Debian 6.x / 7.x / 8.x / 9.x, mas deve funcionar em qualquer distro.

Pré-requisitos

Para usar as funções precheck, protected e findip para IPv6, você precisa do módulo python netaddr instalado. O IPv4 não precisa disso, pois usa a correspondência de prefixo na forma binária do IP.

Debian: apt-get install python3-netaddr

É mais eficiente usar ipset além de iptables. O Ipset pode ser usado para gerenciar listas que o iptables pode se referir e usar. Assim, isto trabalha mais rápido e a manipulação da lista também é mais flexível e o método preferido de usar esse script.

Debian: apt-get install ipset

Uma vez que este script se conecta aos servidores fornecidos com SSH, esse acesso deve estar presente antes que ele possa ser usado.

Configurações

Copie o exemplo de configuração de cfc.cfg-example para cfc.cfg pela primeira vez.

As seguintes configurações podem ser definidas no arquivo de configuração:

As funções IPv6 são marcadas com o sufixo 6.

Utilização

Ao inserir IPs/intervalos com os seguintes comandos, faça isso na notação CIDR, isso será validado e não aceitará mais nada.

add:

cfc.sh add n.n.n.n/NN '' cfc6.sh add ''

Adiciona o determinado IP (intervalo) aos firewalls com a ação configurada para todo o tráfego a partir dessa origem. Faz um comentário por padrão com a data atual, mas você pode adicionar um comentário opcional usando aspas simples para adicionar um motivo ou owner desse intervalo como um exemplo. Também pode ser pesquisado nesse comentário mais tarde.

addstring:

cfc.sh addstring : cfc6.sh addstring :

Adiciona um bloco de string de caracteres ao iptables para um determinado protocolo e porta de destino. Um exemplo prático seria bloquear um User-Agent destinado a um grupo de servidores web, de modo que uma conexão TCP destinada a porta 80 com a string: Firefox/28.0, todo o tráfego recebido que corresponda a essa string para a porta TCP 80 seria bloqueado: cfc.sh addstring tcp:80 'Firefox/28.0'

Cuidado, pois isso pode ter grandes consequências se a string não for específica o suficiente!

clean:

cfc.sh clean

Limpa todas as regras CFC firewall anteriores a 'n' quantidade de dias. Tenha em mente que isso dependerá do formato de data padrão! Assim, se você personalizou o formato da data, você precisará ajustar o script na seção clean.

del:

cfc.sh del n.n.n.n/NN cfc6.sh del

Exclui o IP fornecido (intervalo) / regra dos firewalls

delstring:

cfc.sh delstring : cfc6.sh delstring :

Exclui um bloco de string no iptables para um determinado protocolo e porta de destino.

find:

cfc.sh find cfc6.sh find

Procura os firewalls para a string dada (case in-sensitive), isso pode ser (parte de) um IP / intervalo / comentário.

findip:

cfc.sh findip n.n.n.n/NN cfc6.sh findip

Procura os firewalls se o IP fornecido (intervalo) já faz parte de uma regra adicionada; pode ser um pouco lento em grandes firewalls para IPv6 (~25 segundos para pesquisar 500 intervalos de IP por servidor). O IPv4 usa a correspondência de prefixo na forma binária do IP em vez disso, que é aproximadamente 500% mais rápido, isso também é usado para os recursos de precheck e protectedranges.

ipsethostinit:

cfc.sh ipsethostinit cfc6.sh ipsethostinit

Adiciona uma lista IPSET ao host especificado e uma regra iptables referindo-se a ela usando os parâmetros definidos no cfc.cfg. Isso só precisa ser feito uma vez antes de adicionar regras de firewall.

last:

cfc.sh last cfc6.sh last

Mostra as últimas entradas adicionadas aos firewalls.

.

Publicado originalmente no HoC em 11 de fevereiro de 2018.

Este conteúdo foi traduzido com permissão. HoC não é afiliado com este site.

Autor: Priyanshu Sahay Tradução por Tiago Souza

.

#firewall