Vous êtes sur la page 1sur 9

Iptables, modelo de firewall com dicas para diversas distro.

http://www.zago.eti.br/firewall/iptables-modelos.html

Iptables, modelo de firewall com dicas para diversas distro.


Atualizado em: 15/11/2007
Sobre este documento Testar firewall Firewall com proxy na mesma maquina e outras regras carregando modulos Exemplos e dicas sobre as regras de Iptables Conectividade Social excluir do proxy Samba - fechando as portas para o mundo MAC ADRESS - controle pelo numero da placa de rede porta 25 e 110 e-mail Squid - proxy - redirecionamento Liberar IP (estaes) com acesso por fora do proxy NAT e forward - compartilhar internet Redirecionamento de conexes recebidas - entrada SSH - fechado para o mundo e aberto para rede interna SSH - Redirecionar entrada para estaes da rede VNC - redirecionamento para estaes da rede SUSE 10.1 - executar script no boot CL10 - executar script no boot Indicaes

Sobre este documento


Como criar um firewall e como iniciar em diversas distribuies, original em formato texto com marcaes para converso em HTML, processo automatizado com scripts e txt2tags. Resumo de comandos e regras de iptables mais utilizados, (na minha opinio e como eu uso, copiar e colar). Dificilmente os comandos e dicas atendero suas necessidades, muitos nem so compativeis com sua instalao ou nem servem para seu uso, tente adaptar ao seu ambiente, use como fonte de consulta e referencia. Todas as dicas e exemplos neste tutorial, considera a instalao default da distribuio, nada de compilar kernel, instalar patch ou modificaes no kernel. Tambm no considera o uso de firewall da prpria distro, as referencias a ele so para desativar ou usar em substituio ao indicado neste howto. Considere que firewall no so somente regras de Iptables, veja algumas dicas em; http://www.zago.eti.br/firewall/firewall.txt Considere que no existe um firewall padro, so muitas possibilidades, cada rede tem suas particularidades, neste documento tem algumas regras e dicas para entender o principio de como funciona, no use como firewall, use somente como script de referencia para consulta ou modelo inicial, implemente suas regras especificas, pesquise sobre o assunto, neste diretrio tem muitos modelos e indicaes nas mensagens da Linux-br.

Testar firewall
Teste o seu firewall nestes sites: http://scan.sygatetech.com/ Direto na pgina de testes das portas http://scan.sygatetech.com/stealthscan.html http://www.auditmypc.com/ https://grc.com/x/ne.dll?bh0bkyd2 Navegue nos sites acima, tem diversas opes de testes, verifique no resultado, quais portas esto abertas, quando aparece portas que no devem ser acessadas via internet neste servidor, estas portas tem que ser fechadas, edite o teu scrip de firewall e acrescente mais uma regra especifica para fechar a porta, ou parar o servio, volte ao site e faa novo teste. Configure de forma que sejam listadas somente as portas dos servios que voce disponibilizou para acesso via internet, porta 80 para

1 de 9

10/10/2011 21:05

Iptables, modelo de firewall com dicas para diversas distro.

http://www.zago.eti.br/firewall/iptables-modelos.html

servidor web, porta 22 para ssh e assim por diante. Tudo que no pode ter acesso de fora deve ser fechado, fechar a porta, ou melhor, dever aparecer nos testes acima como fechadas ou no listadas. Pode acessar de qualquer estao da rede, o teste de volta sempre feito no micro que est de cara para internet. Tem muitas dicas nas mensagens deste documento e outros arquivos deste diretrio com FAQ especificos sobre port scanner, firewall etc..

Firewall com proxy na mesma maquina e outras regras


Dicas e exemplos com o modelo; http://www.zago.eti.br/firewall/fireaula.sh Ambiente, micro com duas placas de rede configuradas, uma eth? ligada ao modem ADSL, conexo configurada e com acesso normal internet, outra eth? ligado ao HUB com comunicao normal com as maquinas da rede interna, responde ao ping ou outro servio como ssh. Precisa conferir e fazer alguns ajustes; Placas de rede, observe estas variaveis no inicio do script
EXTERNA=eth0 INTERNA=eth1

eth1 = placa de rede INTERNA (rede local) - ligada ao HUB e conectada com as maquinas da rede interna eth0 = placa de rede EXTERNA (internet) - ligada ao modem ADSL ou router ou outro equipamento que sai ou entra da internet, conectada com o mundo (internet) Ajuste o device nestas variaveis conforme sua rede, lembre que conexes com pppoe utiliza o device ppp0 em lugar de eth? Utilizar variveis opcional, facilta muito na administrao, troca ou copia para outra instalao. Comente as linhas que no utiliza, veja neste documento mais detalhes nos tpicos especificos sobre cada servio. Neste script as linhas de comando iniciam com "$iptables", este sinal ($) no inicio da linha indique est usando uma varivel de nome "iptables", nesta varivel indica o caminho completo do iptables. iptables=/usr/sbin/iptables Pode tentar sem indicao do caminho, basta remover o sinal ($) de todas as linhas que iniciam com ($iptables) ou colocar o caminho para o seu iptables, o comando which retorna o caminho completo which iptables Pegue o resultado e compare se o local o mesmo do script, sendo diferente precisa alterar na criao da varivel iptables, pode tentar criar a varivel com. iptables=$(which iptables) Resumindo, teste todos os exemplos abaixo que um deles deve funcionar.
iptables /usr/sbin/iptables ou criar e usar a varivel iptables apontando para iptables em sua instalao. iptables=/usr/sbin/iptables $iptables

carregando modulos
A maioria das distros utiliza modulos, se preferir pode compilar o kernel com este recurso, considere que trabalhar com modulos mais prtico, pode iniciar ou parar somente o servio (modulo), pode at compilar o modulo ou atualizar sem alterar nada no kernel e portanto sem reiniciar a maquina. em breve farei algumas anotaes sobre a finalidade de cada modulo.
##### carregar modulos # fazer NAT, de forma geral compartilha a interenet com

forward

2 de 9

10/10/2011 21:05

Iptables, modelo de firewall com dicas para diversas distro.

http://www.zago.eti.br/firewall/iptables-modelos.html

/sbin/modprobe iptable_nat # resolve os problemas de FTP, sempre que tiver problemas com acesso a sites de FTP, #lentido, problemas de login ou acesso, tente carregar estes modulos relacionados a FTP. /sbin/modprobe ip_conntrack /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ip_nat_ftp # utlizado nas opes que geram log. /sbin/modprobe ipt_LOG /sbin/modprobe ipt_REJECT /sbin/modprobe ipt_MASQUERADE

Cuidado com esta opo zera regras, tem outra regra logo abaixo que mantem as conexes existentes, quando fizer qualquer alterao nas regras, precisa executar o script para carregar as novas regras, as regras abaixo removem as anteriores mas mantem as conexes existentes.
##### Zera regras $iptables -F $iptables -X $iptables -F -t nat $iptables -X -t nat $iptables -F -t mangle $iptables -X -t mangle $iptables -P INPUT DROP $iptables -P OUTPUT DROP $iptables -P FORWARD DROP

Coloque aps as regras abaixo, suas regras de bloqueio, log e outros controles, em seguida as regras de redirecionamento....

##### Filtros - DROP nos pacotes TCP indesejaveis $iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-level 6 --log-prefix "FIREWALL: NEW sem syn: " $iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP ##### ACCEPT $iptables -A $iptables -A $iptables -A $iptables -A (libera) pacotes de retorno da internet INPUT -i ! $EXTERNA -j ACCEPT INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

Exemplos e dicas sobre as regras de Iptables


Conectividade Social excluir do proxy
Este um servio da Caixa Economica, geralmente utilizado por funcionarios do departamento pessoal das empresas, utiliza o navegador mas no pode passar pelo proxy, inventaram uma conexo segura na porta 80, a soluo que encontrei foi excluir o IP da Caixa do proxy, funciona com esta regra.
##### Liberar Conectividade Social para todos # liberando acesso a toda a rede 200.201 e pode liberar sites alem da CAIXA. $iptables -t nat -A PREROUTING -p tcp -d 200.201.0.0/16 -j ACCEPT $iptables -A FORWARD -p tcp -d 200.201.0.0/16 -j ACCEPT

Tem mais dicas e detalhes sobre isto em; http://www.zago.eti.br/squid/conectividade-social.html

Samba - fechando as portas para o mundo


Precisa liberar as portas do netbios 136 a 139, libere somente para sua rede interna.
# Fechando as portas do samba o perigo mora aqui caso fique de cara para a internet. $iptables -A INPUT -p tcp -i $EXTERNA --syn --dport 139 -j DROP $iptables -A INPUT -p tcp -i $EXTERNA --syn --dport 138 -j DROP $iptables -A INPUT -p tcp -i $EXTERNA --syn --dport 137 -j DROP

Por questo de segurana no se deve rodar Samba junto com firewall, no tem incompatibilidades nem conflito entre estes servios, podem rodar na mesma maquina, considere que Samba no deve dar as caras na internet, um eventual incidente nesta maquina pode comprometer seus dados e informaes, quando rodar Samba na mesma maquina, feche as portas 137, 138 e 139, tem que fechar somente para acessos da internet, em maquinas que no roda Samba pode remover as linhas acima. Use este exemplo de regra para fechar a porta de outros servios rodando na maquina, principalmente quando no devem ouvir nem atender requisies vindo da internet

3 de 9

10/10/2011 21:05

Iptables, modelo de firewall com dicas para diversas distro.

http://www.zago.eti.br/firewall/iptables-modelos.html

Outra opo, quem j fechou tudo precisa abrir as portas para acesso das maquinas da rede interna, alguns exemplos.
$iptables -I INPUT -p tcp -s 192.168.1.0/24 -d 192.168.1.254 --dport 138,139 -j ACCEPT

Onde 192.168.1.0 sua rede e 192.168.1.254 seu servidor Samba. Permitir de qualquer origem, depende de outras regras do firewall negando acesso via internet.
$iptables -A INPUT -p tcp --destination-port 139 -j ACCEPT

MAC ADRESS - controle pelo numero da placa de rede


Regras de IPtables pelo numero da placa de rede MAC ADRESS, o exemplo abaixo nega qualquer acesso com origem na placa de rede identificada com o MAC (00:E0:7D:E3:5F:1E), neste caso no importa o IP da maquina, a ordem da regra no firewall muito importante, aplicar antes do redirecionado do proxy e no ter regra anterior liberando o acesso. Para testar, troque o MAC do exemplo abaixo pelo de uma maquina da sua rede, depois de rodar o script do firewall a maquina no acessa mais nada na internet, o NAT est negado.
$iptables -t nat -A PREROUTING -i $INTERNA -m mac --mac-source 00:E0:7D:E3:5F:1E -j DROP

Com esta regra, qualquer pacote proveniente deste MAC sero descartados, no permine NAT e no navega, no conecta por ssh nem outro meio. Inverter a regra para liberar, troque DROP por ACCEPT Outros exemplos.
Negar somente para portas 80 e 3128 $iptables -A INPUT -p tcp -m multiport --dport 80,3128 -m mac --mac-source 00:E0:7D:E3:5F:1E -j DROP Permitir conexo via ssh $iptables -A INPUT -m mac --mac-source 00:E0:7D:E3:5F:1E -p tcp --dport 22 -j ACCEPT

# teste com mac da m7mia para liberar somente ssh (porta 22)
$iptables $iptables $iptables $iptables -A -A -t -t INPUT -p tcp -m multiport --dport 22 -m mac --mac-source 00:40:F4:5B:9E:A7 -j ACCEPT INPUT -m mac --mac-source 00:40:F4:5B:9E:A7 -p tcp --dport 22 -j ACCEPT nat -A PREROUTING -p tcp -m multiport --dport 22 -m mac --mac-source 00:40:F4:5B:9E:A7 -j ACCEPT nat -A PREROUTING -i $INTERNA -m mac --mac-source 00:40:F4:5B:9E:A7 -j DROP

Tem mais exemplos nas mensagens do FAQ. http://www.zago.eti.br/firewall/iptables-mac.txt

porta 25 e 110 e-mail


Regras de firewal para quem trabalha com tudo fechado e libera somente o necessrio, neste exemplo de firewall, para fechar tudo e abrir somente o necessrio, deve comentar as linhas.
$iptables -A POSTROUTING -t nat -o $EXTERNA -j MASQUERADE echo "1" > /proc/sys/net/ipv4/ip_forward

com estas linhas acima comentadas no possvel navegar nem enviar ou receber e-mail, para liberar a navegao tem exemplos neste tutorial , pode liberar pelo firewall ou pelo proxy (squid) quando redirecionado. Quanto ao envio e recebimento de e-mail segue alguns exemplos, liberao para todos, somente para determinado dominio, somente por maquina da rede, combinando IP interno com dominio e etc. Veja os comentarios para cada regra.

# Estas regras abaixo permite que todos os smtp e pop funcionan, precisa comentar estas linhas para refinar o contro iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -d 0/0 -p tcp --dport 110 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -d 0/0 -p tcp --dport 25 -j MASQUERADE

Liberando smtp somente para uma maquina e um destino (provedor)


$iptables -t nat -A POSTROUTING -s 192.168.1.211/32 -p tcp --dport 25,110 -d smtp.bol.com.br -j MASQUERADE ou $iptables -t nat -A POSTROUTING -s 192.168.1.211/32 -p tcp --dport 25 -d smtp.bol.com.br -j MASQUERADE

4 de 9

10/10/2011 21:05

Iptables, modelo de firewall com dicas para diversas distro.

http://www.zago.eti.br/firewall/iptables-modelos.html

#$iptables -t nat -A POSTROUTING -s 192.168.1.211/32 -p tcp --dport 110 -d pop.sao.terra.com.br -j MASQUERADE

Squid - proxy - redirecionamento


A regra que redireciona o trafego da porta 80 para 3128 Squid, tem que ficar antes da regra que faz NAT para forar o uso do proxy, assim estaes com navegador configurado para usar proxy cai nas regras do proxy, se tentar sem proxy no navega. No script fireaula.sh tem estas regras sobre Squid.

##### Squid - proxy #utilize somente uma das opes abaixo, comente as demais # redireciona o trafego da porta 80 para 3128, execeto a estacao # com IP 192.168.1.6 #$iptables -t nat -A PREROUTING -i $INTERNA -s \! 192.168.1.6 -p tcp -m multiport --dport 80,443 -j REDIRECT --to-p # redireciona o trafego da prota 80 para 3128 (squid) $iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128

Tem duas regras, ambas se aplicam quando roda o Squid na mesma maquina firewall, a segunda est habilitada;
$iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128

esta regra redireciona todo o trafego da porta 80 e 443 para a porta 3128, com isto as estaes s navegam pelas regras do squid, na estao configure o navegador para usar proxy na porta 3128 e IP do servidor proxy. A primeira regra que est comentada;
#$iptables -t nat -A PREROUTING -i $INTERNA -s \! 192.168.1.6 -p tcp -m multiport

--dport 80,443 -j REDIRECT --to-p

esta regra tambm faz o redirecionamento como na anterior, com excluso de uma maquina do proxy, neste exemplo a estao com IP 192.168.1.6 vai navegar sem passar pelo proxy, este recurso ajuda muito na soluo de problemas, quando tem problemas com acesso a sites especificos, tem sites que no pode acessar via proxy, nestes casos para acessar sem passar pelo proxy, troque o IP citado na regra pelo IP da estao que vai usar no teste, use o navegador sem proxy e tente acesso, observe que a linha eat comentada, deve usar somente uma das regras, quando habilitar a primeira comente a segunda e vice versa. Considere utilizar instalaes de testes, pode montar outro servidor proxy na rede, servidor de e-mail interno ou outro servio, para excluir esta maquina de testes do proxy, utilize a excluso acima, quando for mais de uma maquina utilize o exemplo abaixo.

Liberar IP (estaes) com acesso por fora do proxy


Excluir mais de uma estao do proxy, no firewall tem este exemplo para liberar por portas, multiplas portas.
##### excluir estacoes do proxy, passa direto pelo NAT $iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.37/32 -p tcp -m multiport $iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.53/32 -p tcp -m multiport --dport 80,443 -j ACCEPT --dport 80,443 -j ACCEPT

Utilize uma regra para cada IP, neste exemplo acima as estaes com IP 192.168.1.37 e 53 no precisa configurar proxy no navegador e acessam internet por fora do proxy, estas regras obrigatoriamente tem que ser adicionadas no firewall, antes da regra do redireionamento do Squid, observe no Firewall a posio delas em relao a regra do redirecionamento para a porta 3128. Outro exemplo de formato da regra. liberar a porta 80 para determinado IP de origem
$iptables -t nat -A PREROUTING -s 192.168.1.53 -p tcp -i $INTERNA --dport 80 -j ACCEPT

Outro exemplo de formato da regra para liberar acesso a tudo


# micro zago 192.168.1.53 $iptables -t nat -A PREROUTING -s 192.168.1.53 -d 0.0.0.0/0

-j ACCEPT

Lembrando que Squid no firewall, servidor proxy e controla somente o que passa pela porta 80, no pode redirecionar outras portas, portanto servios como cliente de e-mail nas estaes no passaro pelo controle do Squid nem sero afetados pelas regras acima, sobre este e outros servios veja o tpico sobre NAT. Outro exemplo para liberar um IP da rede , liberar todas as portas, algo como tirar um IP do firewall e passar direto
# em tetes # Regra para fazer NAT de tudo. e para todos #$iptables -A POSTROUTING -t nat -o $IF_EXTERNA -j MASQUERADE # Regra para fazer SNAT para destino especifico

5 de 9

10/10/2011 21:05

Iptables, modelo de firewall com dicas para diversas distro.

http://www.zago.eti.br/firewall/iptables-modelos.html

#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o $EXTERNA -j SNAT --to 200.200.200.200/24 # Regra para liberar um IP interno, fazer nat de tudo, de todas as portas, neste exemplo libera o IP interno 192.168 $iptables -t nat -A PREROUTING -i $IF_INTERNA -s 192.168.1.218/32 -j ACCEPT

Controle via iptables e por estao (IP da estao), tem mais exemplos em outros tpicos deste tutorial, neste tem algumas dicas sobre controle por IP de origem para acesso externo passando pela porta 25, 110, 80 e 443, tente modificar ou adaptar ao seu ambiente, altere IP indicado nas regras abaixo para o da estao que deseja testar regra. Modificando o exemplo com NAT para liberar estao do proxy, temos esta regra no firewall liberando estao para navegar sem passar pelo proxy.
##### excluir estacoes do proxy, passa direto pelo NAT $iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.37/32 -p tcp -m multiport

--dport 80,443 -j ACCEPT

Proibir porta 80 e 443 na estao especifica. Faa copia da regra acima e modifique a regra para rejeitar, proibir determinado IP de navegar, basta alterar na copia da regra, IP e de ACCEPT por DROP.
$iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.37/32 -p tcp -m multiport --dport 80,443 -j DROP

Impedir ou liberar acesso a e-mail via clientes de e-mail local (na estao), fechar as portas 25 e 110, como neste exemplo.

Esta regra impede cliente de e-mail acessar servidores externos (provedores), fechar portas 25 e 110. $iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.37/32 -p tcp -m multiport --dport 25,110 -j DROP Libera cliente de e-mail para acessar servidores externos (provedores), liberar porta 25 e 110. $iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.37/32 -p tcp -m multiport --dport 25,110 -j ACCEPT

Permitir estao usar cliente de e-mail na maquina local e probir a navegao.


$iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.37/32 -p tcp -m multiport $iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.37/32 -p tcp -m multiport --dport 80,443 -j DROP --dport 25,110 -j ACCEPT

Invertendo a ordem, permitir navegao e probir cliente de e-mail na estao.


$iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.37/32 -p tcp -m multiport $iptables -t nat -A PREROUTING -i $INTERNA -s 192.168.1.37/32 -p tcp -m multiport --dport 80,443 -j ACCEPT --dport 25,110 -j DROP

Com estes exemplos fica fcil adpatar a regra para outras portas e servios, basta copiar a regra, alterar o IP e porta. Lembre de acrescentar no firewall antes da regra que lebera ou bloqueia geral, em firewall que redireciona a porta 80 as regras de iptables sobre a porta 80 tem que ser acrescentada antes da regra do redirecionamento.

NAT e forward - compartilhar internet


No firewall, depois da regra do Squid tem estas duas regras;
## NAT para os demais servios que trabalham em outras portas, # como exemplo, libera o acesso a cliente de e-mail e ssh $iptables -A POSTROUTING -t nat -o $EXTERNA -j MASQUERADE echo "1" > /proc/sys/net/ipv4/ip_forward

Obrigatoriamente tem que ficar depois da regra do proxy, servem para compartilhar internet para os demais protocolos, como exemplo, liberar a porta 25 e 110 utilizadas pelos clientes e-mail que no acessam a net pela porta 80, portanto no passam pelo proxy, estas regras liberam tudo, compartilhamento total, como antes delas tem o redirecionamento do proxy, tudo que usar a porta 80 cai no proxy e fica por l, as demais portas no so redirecionadas, portanto cai nesta regra que faz NAT. Qualquer bloqueio deve ser acrescentando antes desta regra, ou se preferir, crie regras especificas de nat por protocolo e estao.

Redirecionamento de conexes recebidas - entrada


So regras que repassam a conexo para outra maquina da rede, considere um ambiente com uma maquina conectada na internet via ADSL, vamos considerar que esta maquina compartilha a internet para as demais maquinas da rede, vamos chamar esta maquina de firewall, neste tipo de conexo somente ela tem IP rotevel na internet, algo do tipo 200.200.200.200, todas as conexes vindo do mundo tem que apontar para o IP deste micro, atraz dele tem diversos micros, servidores e estaes trabalhando com IP reservado, como exemplo da classe 192.168.1.0, no possvel utilizar esta classe de IP nas conexes via internet, IP desta classe so descartados no primeiro roteador. Atraz deste firewall pode ter servidores ou estaes rodando servios como; ssh, webmin, VNC ou outro qualquer, no firewall

6 de 9

10/10/2011 21:05

Iptables, modelo de firewall com dicas para diversas distro.

http://www.zago.eti.br/firewall/iptables-modelos.html

possvel liberar (repassar) conexes vindo da internet para se conectar direto com estas maquinas. Considere um firewall rodando na maquina com IP fixo 200.200.200.200, atraz dele uma estao usando IP 192.168.1.144, regras de iptables podem redirecionar conexo vindo da internet direto para esta maquina. Mesmo sem rodar o servio no firewall, as conexes vindo do mundo (internet) tem que apontar para o IP do firewall, quando atendida as regras de redirecionamento, a conexo rapassada para outra maquina da rede com IP reservado informado na regra, (estao atraz do firewall), na origem da conexo precisa somente do IP do firewall, tambm a porta quando for o caso, as regras de firewall faz o resto. Resumindo; Identifique quais portas esse servio utiliza, IP que do seu (servidor) que o mesmo IP de internet, se possivel o IP remoto (cliente) quando quiser liberar acesso somente a um IP externo, a regra tem este formato:

Liberar somente para conexes vindo de determinado IP, neste exemplo o IP remoto (-s 200.204.198.164) mais a porta i iptables -t nat -A PREROUTING -p (protocolo tcp ou udp) -s (IP remoto) --dport (porta solicitada) -i (interface ext ##### Redirecionar ssh na porta 2222 $iptables -t nat -A PREROUTING -p tcp -s 200.204.198.164 --dport 2222 -i $EXTERNA -j DNAT --to 192.168.1.144:22

Outra forma; rediciona somente pela porta, no importa o IP de origem iptables -t nat -A PREROUTING -p tcp(ou udp) -d (IP do firewall local, servidor de internet) --dport (porta solicita

Lembrando que a ordem importante, se conflitar regras, a primeira que antender ser atendida e as demais ignoradas. Nos tpicos a seguir tem mais exemplos sobre SSH e VNC, o principio se aplica a outros protocolos e portas, pode modificar estas regras para webmin, banco de dados e etc....

SSH - fechado para o mundo e aberto para rede interna


SSH muito til e prtico para administrar maquinas remotas, por ser muito usado, tem muitos scripts que tentam fazer acesso forado via ssh, alguns tem uma lista de login e senha e ficam tentando, existem muitas tecnicas e maneiras, voce tem que se preocupar com isto e se defender, ssh tem um alto nvel de segurana e configurao, mas a configurao feita por voc. No modelo de firewall tem estas regras;
##### Libera acesso externo para ssh e servidor web #$iptables -A INPUT -p tcp --dport 80 -i $EXTERNA -j ACCEPT #$iptables -A INPUT -p tcp --dport 80 -i $INTERNA -j ACCEPT #$iptables -A INPUT -p tcp --dport 22 -i $EXTERNA -j ACCEPT $iptables -A INPUT -p tcp --dport 22 -i $INTERNA -j ACCEPT

A porta 80 do servidor de pginas web (apache), a porta 22 do ssh. So duas regras, uma especifica para liberar acesso pela placa de rede interna $INTERNA e outra especifica para a placa de rede da internet $EXTERNA, como as regras no inicio do firewall fecha tudo, precisa implementar regra liberando acesso, neste exemplo tem regras especificas por placa de rede para facilitar a configurao. No exemplo acima est aberto somente para acesso pelas maquinas da rede interna e proibindo o acesso externo, conexes da internet, est comentada a linha com a varivel $INTERNA, caso queira liberar para o mundo, remova o comentrio da linha com varivel $EXTERNA. Observe que neste firewall fecha tudo e depois vai abrindo as portas, em firewall aberto onde vai fechando as portas, a regra muda de ACCEPT para DROP, algo neste formato;
#$iptables -A INPUT -p tcp --dport 22 -i $EXTERNA -j DROP

Lembre que ssh tem muitas possibilidades de configurao, este somente um exemplo de lidar com as portas, caso permita conexes vindo da internet, pesquise sobre segurana e configurao dele, neste FAQ tem um diretrio especifico sobre ssh.

SSH - Redirecionar entrada para estaes da rede


Redirecionando os pedidos que chegam da net, ou seja o firewall simplesmente repassa para outra maquina completar a conexo, segue alguns exemplos com redirecionamento como base no IP de origem ou porta destino. No firewall tem esta regra sobre ssh
##### Redirecionar ssh na porta 2222 $iptables -t nat -A PREROUTING -p tcp -s 200.204.198.164 --dport 2222 -i $EXTERNA -j DNAT --to 192.168.1.144:22

7 de 9

10/10/2011 21:05

Iptables, modelo de firewall com dicas para diversas distro.

http://www.zago.eti.br/firewall/iptables-modelos.html

Tentando descrever este ambiente, imagine duas empresas, cada uma tem seu micro rodando firewall e conectado ao modem ADSL, sem restries de uso pela operadora quanto as portas descritas aqui, em uma ponta tem IP 200.204.198.164 e na outra ponta IP 200.200.200.200, atraz destas maquinas tem estaes com IP da classe 192.168.1.0, esta regra permite que estao de uma rede se conecte via ssh com estao atraz da outra rede. Exemplo de linha de comando tratada por esta regra (redirecionada). No console de maquina atraz do IP 200.204.198.164 fazendo NAT
ssh -p 2222 zago@200.200.200.200

Observe que indica a porta (-p 2222) e dispara o comando para o IP do firewall remoto 200.200.200.200, o redirecionamento para a estao interna no firewall onde roda a regra acima, (ip 192.168.1.144) ocorre quando atender as seguintes condies; origem da conexo no IP = 200.204.198.164 e porta destino = 2222. As demais requisies de ssh sero atendidas pela prpria maquina ou outra regra do firewall. Onde -s (source, origem) IP 200.204.198.164, requisies que chegam deste IP na placa de rede da internet -i $EXTERNA (-i imput, entrada), --dport 2222, na porta 2222, observe que tem varias condies, IP de origem, porta destino, entrada pela placa de rede externa. Quando atendida todas estas condies o pedido repassado para outra maquina da rede (DNAT --to 192.168.1.144:22), a estao da rede interna com ip 192.168.1.144 vai atender o pedido na porta 22, claro que o firewall dela precisa permitir e tambm ter o servio rodando (ouvindo) nesta porta, neste exemplo o servio sshd, servidor do ssh. Esta regra vale tambm para FreeNX, ele trabalha sobre conexo ssh, requer configurao especifica para obter o desktop remoto, algo como VNC mas com melhor qualidade, velocidade e segurana. Sobre ssh e FreeNX, tem mais dicas, exemplos e FAQ em; http://www.zago.eti.br/ssh/

VNC - redirecionamento para estaes da rede


Prefiro ssh ou FreeNX, mas quando temos que conectar a estaes windows na rede remota, VNC torna uma grande soluo. No firewall tem esta regra sobre VNC
##### VNC # Redireciona portas na primeira maquina vnc troque o ip iptables -A FORWARD -i $EXTERNA -p tcp --dport 5800:5900 iptables -A FORWARD -i $EXTERNA -p udp --dport 5800:5900 iptables -t nat -A PREROUTING -p tcp -i $EXTERNA --dport iptables -t nat -A PREROUTING -p udp -i $EXTERNA --dport #Redirecionar para maquina VNC ouvindo na 5801 iptables -A FORWARD -i $EXTERNA -p tcp --dport 5801:5901 iptables -A FORWARD -i $EXTERNA -p udp --dport 5801:5901 iptables -t nat -A PREROUTING -p tcp -i $EXTERNA --dport iptables -t nat -A PREROUTING -p udp -i $EXTERNA --dport #####

conforme a maquina que deseja acessar. -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 5800:5900 -j DNAT --to 192.168.1.144:5800-5900 5800:5900 -j DNAT --to 192.168.1.144:5800-5900 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 5801:5901 -j DNAT --to 192.168.1.144:5801-5901 5801:5901 -j DNAT --to 192.168.1.144:5801-5901

Uso do primeiro exemplo simples, basta instalar o VNCSERVER e rodar, neste exemplo, redireciona qualquer pedido que chega da internet na porta 5800, na URL do navegador use o IP:porta, neste formato;
http://200.200.200.200:5800

A regra de firewall se encarrega de redirecionar para a estao e esta se encarrega atender o pedido e completar a conexo com login e senha. A segunda opo complica um pouquinho porque permite ter varias maquinas aceitando conexo via VNC, usa a porta como meio de seleo da maquina remota, permite multiplas conexes VNC, redireciona para estao interna coforme a porta indicada na conexo, precisa configurar o VNCserver para ouvir em outra porta, use 5801 para maquina 1, 5802 para maquina 2 e assim por diante, a seleo da maquina remota feita conforme a porta indicada na URL, entendeu como simples, quase como uma tabela, 5801 conecta na maquina X, 5802 conecta na Y e assim por diante..., precisa de uma regra para cada maquina, repita o exemplo acima para cada maquina, altera a porta e IP, exemplo de uso na URL para conexo com maquina que est ouvindo na porta 5801.
http://200.200.200.200:5801

Veja tambm o tpico sobre SSH - redirecionamento, so semelhantes e ajuda na explicao. Sobre VNC, tem mais dicas, exemplos e FAQ em; http://www.zago.eti.br/vnc.txt

SUSE 10.1 - executar script no boot


SUSE tem configurador do firewall via Yast, tem seu prprio script de firewall.

8 de 9

10/10/2011 21:05

Iptables, modelo de firewall com dicas para diversas distro.

http://www.zago.eti.br/firewall/iptables-modelos.html

Acho mais fcil e prtico usar meu script, tem que escolher pelo firewall do SUSE ou seu script, para usar outro script preciso deabilitar o firewall do SUSE. Desabilitar o firewall nativo do SUSE, entre no yast, pode ser em modo texto, entre em "segurana e Usurios" -> Firewall, desabilite o firewall Aproveite e configure as placas de rede Yast -> "Dispositivos de Rede" -> Placa de Rede" -> avanar e selecione a placa de rede, (editar), configure conforme sua rede, com IP dinamico (DHCP) ou com IP Esttico e mascara de rede, IP da mesma classe de rede interna. No altere mais nada, no precisa mexer na rota, avanar e OK at fechar o yast. Compartilhar conexo - micro com duas placas de rede. Use um script de IPtables para compartilhar, caso no tenha, como est navegando, para teste use este script de iptables, as linhas de comando abaixo inclue o script no boot.local para executar no boot.
cd /etc/rc.d wget http://www.zago.eti.br/firewall/fireaula.sh chmod 755 fireaula.sh ./fireaula.sh rcnetwork restart echo "/etc/rc.d/fireaula.sh" >> /etc/rc.d/boot.local echo "rcnetwork restart" >> /etc/rc.d/boot.local

CL10 - executar script no boot


Salve o script no diretrio /etc/rc.d/, entre no diretrio e baixe com wget, acesse via navegador para copiar e colar, ou importar direto no editor "vi", pode salvar em outro local qualquer, lembre de ajustar o caminho nos comandos abaixo, no pode manipular em instalaes DOS/WIN. com o script no diretrio, execute estes comandos como root no console.
chkconfig myfirewall off echo fireaula.sh >> /etc/rc.d/rc.local chmod 755 /etc/rc.d/fireaula.sh sh /etc/rc.d/fireaula.sh

Use seu editor de texto puro para fazer alteraes no script, depois de salvar execute novamente para carregar as alteraes, como root no console execute uma destas opes.
sh /etc/rc.d/fireaula.sh ou cd /etc/rc.d/ ./fireaula.sh

Indicaes
Pgina principal sobre iptables e firewall http://www.zago.eti.br/A-menu-firewall.html Pgina principal deste site (FAQ) http://www.zago.eti.br/menu.html

9 de 9

10/10/2011 21:05

Vous aimerez peut-être aussi