[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