toggle port rule em um firewall iptables?

3

Eu tenho um servidor Ubuntu que só permite o tráfego em um grupo selecionado de portas via iptables. Uma das portas configuradas como REJECT por padrão é 53 .

Eu preciso abrir periodicamente a porta 53 para executar uma instância de acme-dns para autenticar DNS-01 desafios de LetsEncrypt e, em seguida, fechá-lo quando terminar.

Existe uma maneira fácil de automatizar isso? Eu sei como automatizar facilmente adicionando uma regra via iptables -I para inserir um ACCEPT para udp traffic 53 no topo da lista, mas a única maneira que eu sei como desabilitar Uma regra específica é listar todas as regras ativas com números de linha e desabilitar a regra específica por número de linha. Isso requer interação manual da minha parte.

Eu preciso remover essa regra e não desfazê-la inserindo um REJECT antes dela, porque ela será executada por um cron job e não quero poluir as regras com um monte de ACCEPT / REJECT alterna o desfazer um ao outro.

A única abordagem em que consigo pensar é escrever um script que imprima as regras por número de linha, analise-as e, em seguida, elimine a regra de correspondência. Existe uma maneira de fazer isso simplesmente com um comando iptables que eu não conheço?

    
por Jonathan Vanasco 31.03.2018 / 23:09

1 resposta

5

As regras podem ser gerenciadas mais facilmente usando uma cadeia definida pelo usuário.

Crie uma cadeia:

iptables -N acme-dns

Chame esta cadeia com este comando executado no lugar certo no script iptables, antes da regra REJECT para a porta 53:

iptables -A INPUT -j acme-dns

Normalmente esta corrente está vazia e não tem efeito. Quando o acesso ao acme-dns é necessário, este comando pode ser executado (pode ser mais preciso, mas esse não é o ponto aqui):

iptables -A acme-dns -p udp --dport 53 -j ACCEPT

Quando o acesso não é mais necessário, o conteúdo da cadeia pode ser liberado. Mesmo que, por algum motivo, o comando anterior tenha sido adicionado várias vezes, ele irá, de qualquer forma, liberar todas as entradas:

iptables -F acme-dns

Para este caso simples, isso é realmente tudo o que é necessário. Para casos complexos que envolvem muitas alterações dinâmicas nos valores (portas, ips ...), mas não em regras, o módulo de correspondência do conjunto e o ipset pode ajudar no desempenho e no gerenciamento.

    
por 01.04.2018 / 00:38

Tags