Digamos que eu tenha uma cadeia introduzida com iptables -N SERVICES-VPN
.
Mas aí eu quero que essa corrente largue tudo... então iptables -A SERVICES-VPN -j DROP
.
O problema aqui é que posso precisar adicionar regras mais tarde para ser aceito. Toda vez que preciso adicioná-los, tenho que excluir manualmente a regra de descarte (irritantemente pelo número da linha, certo?), Introduzir as novas regras para aceitar esse serviço e reintroduzir a regra de descarte novamente iptables -A SERVICES-VPN -j DROP
.
Isso pode até ser visto como uma falha de segurança, onde um botnet pode estar esperando que eu abra todas as portas deletando a regra DROP para fazer algo, onde a última linha de defesa, o firewall, é o que está protegendo a máquina em questão.
Esse problema não existe para as políticas, onde algo como iptables -P INPUT DROP
ainda vai me permitir adicionar novas regras, e se não existir nenhuma regra vai cair a conexão. Qual é a melhor maneira de conseguir isso com correntes?
Divida a cadeia em duas com uma lista de regras de permissão e outra cadeia que procura regras de permissão e descarta depois.
Algo que se parece com isto:
Espero que você não tenha um script sujo na inicialização que faça isso, mas um
iptables-restore
arquivo compatível perfeitamente formatado que torne isso atômico, o que eliminaria as condições de corrida que você mencionou.Espero que você também mude para
nftables
(nft
na CLI), já que não é obsoleto e é mais flexível (isso provavelmente pode ser alcançado com duas cadeias separadas para VPN/não-VPN).Edit: a
iptables
depreciação pode ser debatida, mas pelo que entendi, embora existam ferramentas para facilitar a transição paraiptables
incluirnftables
módulos de compatibilidade do lado do kernel, não espero que durem para sempre, então vou manter isso aqui, mas fique à vontade para ler os comentários de @AB abaixo para diferentes pontos de vista. O ponto principal em relação a esta questão é que ela oferece mais flexibilidade, o que pode tornar a solução mais fácil de implementar/manter.Ou , em vez de usar
-A
para anexar , adicionar depois , que adiciona novas regras por trás das regras existentes em uma cadeia, você usa a opção-I
para inserir novas regras no início da cadeia (existente), sem primeiro excluir nenhuma das regras existentes que precisam vir atrás da regra que você está adicionando.