
Controle Centralizado de Firewall
O controle centralizado de firewall fornece uma maneira centralizada de gerenciar o firewall em vários servidores ou balanceadores de carga executando iptables. Dessa forma, você pode permitir/bloquear/excluir/pesquisar rapidamente faixas de abuso, etc., com um único comando em vários servidores. Ele acessa esses servidores via ssh. Suporta IPv4 e IPv6. Testado no Debian 6.x / 7.x / 8.x / 9.x, mas deve funcionar em qualquer distribuição.
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 correspondência de prefixo na forma binária do IP.
Debian: apt-get install python3-netaddr
É mais eficiente usar 'ipset' em adição ao iptables. O Ipset pode ser usado para gerenciar listas que o iptables pode referenciar e usar. Isso funciona mais rápido e a manipulação da lista também é mais flexível e o método preferido de usar este script.
Debian: apt-get install ipset
Como este script se conecta aos servidores fornecidos via ssh, esse acesso deve estar presente antes que possa ser usado.
Copie a configuração de exemplo de cfc.cfg-example para cfc.cfg na primeira vez.
As seguintes configurações podem ser definidas no arquivo de configuração:
Ao inserir IPs/faixas com os comandos a seguir, faça-o em notação CIDR, isso é validado e não aceitará outra coisa.
add:
cfc.sh add n.n.n.n/NN '<optional comment>'
cfc6.sh add <IPv6_address_range> '<optional comment>'
Adiciona o(s) IP(s) (faixa) aos firewalls com a ação configurada para todo o tráfego dessa origem. Cria um comentário por padrão com a data atual, você pode adicionar um comentário opcional usando aspas simples para adicionar um motivo ou proprietário dessa faixa, por exemplo. Também pode ser pesquisado por esse comentário posteriormente.
addstring:
cfc.sh addstring <protocol>:<dport> <string>
cfc6.sh addstring <protocol>:<dport> <string>
Adiciona um bloqueio de string ao iptables para um determinado protocolo e porta de destino. Um exemplo prático seria bloquear um User-Agent destinado a vários servidores web, então uma conexão tcp destinada à porta 80 com a string: Firefox/28.0, todo o tráfego de entrada que corresponder a essa string em direção à porta tcp 80 será bloqueado:
cfc.sh addstring tcp:80 'Firefox/28.0'
Cuidado, isso pode ter grandes consequências se a string não for específica o suficiente!
clean:
cfc.sh clean <older_than_number_of_days>
Limpa todas as regras de firewall do CFC mais antigas que n dias. Lembre-se de que depende do formato de data padrão! Portanto, se você personalizou o formato da data, precisará ajustar o script na seção 'clean'.
del:
cfc.sh del n.n.n.n/NN
cfc6.sh del <IPv6_address_range>
Exclui o(s) IP(s) (faixa)/regra dos firewalls
delstring:
cfc.sh delstring <protocol>:<dport> <string>
cfc6.sh delstring <protocol>:<dport> <string>
Exclui um bloqueio de string no iptables para um determinado protocolo e porta de destino.
find:
cfc.sh find <string>
cfc6.sh find <string>
Pesquisa nos firewalls pela string fornecida (sem distinção entre maiúsculas/minúsculas), isso pode ser (parte de) um IP / faixa / comentário
findip:
cfc.sh findip n.n.n.n/NN
cfc6.sh findip <IPv6_address_range>
Pesquisa nos firewalls se o(s) IP(s) (faixa) fornecido(s) já faz parte de uma regra adicionada, pode ser um pouco lento em firewalls grandes para IPv6 (~25 seg. para pesquisar 500 faixas de IP por servidor). IPv4 usa correspondência de prefixo na forma binária do IP, que é aproximadamente 500% mais rápido, isso também é usado para os recursos precheck e protectedranges.
ipsethostinit:
cfc.sh ipsethostinit <server_name>
cfc6.sh ipsethostinit <server_name>
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 <nr_of_most_recent_rules>
cfc6.sh last <nr_of_most_recent_rules>
Mostra as últimas entradas adicionadas aos firewalls