[FUG-BR] IPFW
Luiz Otavio O Souza
lists.br em gmail.com
Sexta Outubro 9 11:37:23 BRT 2009
> Pessoal, estou estudando o IPFW e quero usa-ló no trabalho e uma coisa
> que
> não consegui é. Como fazer para alterar as regras remotamente via SSH por
> exemplo... sem perder a conexão... já compilei o kernel com
> DEFAULT_ACCEPT
> uso o check-state... tudo isso dentro de uma script bash, dai quando
> altero
> uma regra ou adiciono/removo e recarrego o script minha sessão cai...
> segue
> minhas regra.
>
> # Limpa regras antigas e aplica as novas.
> /sbin/ipfw -q -f flush
>
> # comando para adicionar regras
> fwadd="/sbin/ipfw -q add"
> fw="/sbin/ipfw"
> $fwadd pass all from any to any via lo0
> $fwadd check-state
> $fwadd nat 1 config if em0 same_ports unreg_only
> $fwadd pass all from me to any keep-state
> $fwadd pass tcp from any to me 22 setup keep-state
> $fwadd pass icmp from any to any keep-state
> $fwadd pass udp from $lan to any keep-state
> $fwadd pass all from $lan to any keep-state
> $fwadd nat 1 all from $lan to any
> $fwadd deny ip from any to any
Você esta utilizando uma regra com keep-state para aceitar o trafego do ssh
(porta 22) então quando você executa o ipfw flush todas as regras dinamicas
são removidas (junto com as estaticas) e você perde a conexão.
Você pode remover o keep-state da conexão do ssh (workaround).
Outra solução para isso é executar o script na maquina remota em background:
# sh /path/do/seu/script/de/firewall.sh &
Mesmo que a sua conexão seja fechada ele vai carregar suas regras até o fim
e você não vai ficar com o firewall inconsistente.
Normalmente depois de carregar todas as regras (em background) e mesmo
utilizando o keep-state, a conexão volta a funcionar.
Att.,
Luiz
Mais detalhes sobre a lista de discussão freebsd