http://www.zago.eti.br/firewall/dicas-e-truques-iptables.txt dicas e truques, indicações de tutoriais e comandos com exemplos de uso do Iptables. Use CTRL+F para refinar a pesquisa. Linha de: **************** sapara mensagens ou tópicos. ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux veja também neste diretorio (site) FAQ outros arquivos com mensagens da Linux-br. http://www.zago.eti.br/firewall/ ******************************************************************** ONDE FICA O IPTABLES? Em scripts precisa informar o caminho completo para chamar o Iptables. Dependendo da distro ou versão, pode estar em locais diferentes, no CL9 ele está em /usr/sbin, veja como localiza-lo com whereis: # whereis iptables iptables: /usr/sbin/iptables COMO INICIAR (CARREGAR) O MODULO IPTABLES? Coloque no script o comando pra carregar o modulo, carregue somente os modulos necessários. Pra fazer NAT (pra compartilhar internet) modprobe iptable_nat ******************************************************************** INSTALAR: qualquer regra de firewall que utilize Iptables requer este modulo, na maioria das opções de instalação inclue o Iptables, o CL9 instalado com perfil "estação de trabalho" não inclue, neste caso precisa fazer a instalação que pode ser via apt, synaptic ou rpm. Pra instalar o pacote que vem no CD de instalação e via apt, basta executar como root em um terminal: apt-get install iptables Ou via Synaptic, procure, selecione e instale o pacote iptables. Ou via rpm a partir do diretório onde salvou ou download ou montou o CD, execute o comando: rpm -ivh iptables-versão.rpm --replacepkgs Como ver se está instalado? No CL9, via synaptic procure pelo pacote iptables ou via rpm assim: # rpm -qa | grep iptables iptables-1.2.7a-26694cl ajuda: # iptables -h ******************************************************************** > # iptables -F > /lib/modules/2.4.5-9cl/kernel/net/ipv4/netfilter/ip_tables.o: init_module: > Device or resource busy Iptables não foi iniciado, execute antes o comando ou inclua no rc.local: modprobe ip_tables LOG Arquivos de logs criados pelo iptables registra todo tráfego que for pelo iptables por padrão no arquivo /var/log/kern.log veja os resultados de: iptables -t filter -L INPUT iptables -L INPUT -n iptables -L INPUT -n - ******************************************************************** ******************************************************************** COMO FAZER UM SCRIPT DE FIREWALL COM IPTABLES? Pra testes as regras podem ser executadas na linha de comando, mas isto tem um incoveniente, toda vez que reinicar a maquina as regras se perdem, o ideal e executa-las junto com o boot da maquina. Quando for poucas regras pode acrescenta-las no final do script de inicialização, no CL é o rc.local que fica em: /etc/rc.d/rc.local A maneira mais elegante é criar um script com as regras, pra isto basta usar um editor de texto pra criar um arquivo texto com as regras do firewall, depois torne-o executavel e acrescente no final de: /etc/rc.d/rc.local uma linha pra chamar o script, exemplo pra chamar um script com nome iptfirewall que está no sub-diretório /etc/rc.d, basta acrescentar no final de rc.local, esta linha: /etc/rc.d/iptfirewall Pra criar script veja mais em: http://www.zago.eti.br/scripts/scripts-modelos.txt ******************************************************************** MODELOS DE FIREWALL COM IPTABLES: ******************************************************************** MODELO 1 COMPARTILHAR CONEXÃO DE INTERNET __SEM__ FIREWALL. Este topico (MODELO 1) não é um firewall, são somente regras pra compartilhar uma conexão, ideal pra testes de instalação e solução de problemas quando suspeitar de regras do firewall, com estas regras a maquina fica totalmente vulneravel a invasão, veja neste documento outros modelos com indicação da segurança. Pra compartilhar uma conexão de internet para os demais micros da rede, precisa no minimo destas regras: modprobe iptable_nat iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward EXPLICANDO: A primeira linha carrega o modulo pra fazer NAT. A segunda linha faz o mascaramento a tercera linha ativa o IP forward, repasse de pacote pras demais maquinas da rede interna, veja mais exemplos abaixo. Pra quem usa modem discado ou o pacote rp-pppoe modprobe iptable_nat iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward Pra quem usa ADSL com IP fixo e não levanta a interface ppp0 modprobe iptable_nat iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward A diferença entre as duas regras acima é a interface de saida pra internet, eth0 ou ppp0 Existem outras regras e maneiras, nos proximos exemplos tem mais exemplos sobre uso da regra com NAT. a tercera linha ativa o IP forward, repasse de pacote pras demais maquinas da rede interna. Pra acionar o IP forwarding, tem varias maneiras também, além da indicada acima: echo 1 > /proc/sys/net/ipv4/ip_forward Também estas: alterar em /etc/sysctl.conf: de net.ipv4.ip_forward = 0 para net.ipv4.ip_forward = 1 OU altere em /etc/sysconfig/network: de # FORWARD_IPV4=no # not used anymore. see /etc/sysctl.conf para FORWARD_IPv4="yes" Lembre que somente uma deverá ser utilizada, prefiro acrescentar no escript esta regra: echo 1 > /proc/sys/net/ipv4/ip_forward e não utilizo as outras mencionadas acima. Conferir se repasse está habilidade (forward), execute: cat /proc/sys/net/ipv4/ip_forward Exemplo de comando e o que retorna quando habilitado. [zago@faq zago]$ cat /proc/sys/net/ipv4/ip_forward 1 Retornando 1 está habilitado, retornando zero não está habilitado, caso tenha dado o comando para fazer forward e no resultado acima está retornando 1, então tem algum erro, provavel erro de digitação. regras do mascaramento cat /proc/net/ip_masquerade ver as regras do iptables # iptables --list -n -v # iptables --list # iptables -L para barrar um IP especifico acrescente a linha abaixo em seu script depois do ip_forward: /usr/bin/iptables A -OUTPUT -p tcp -s IPBLOQUEADO -j DROP ******************************************************************** MODELO 2 COMPARTILHAR CONEXÃO DE INTERNET __COM__ FIREWALL. ******************************************************************** ******************************************************************** De:  Marcus Lima Responder-a:  marcuslima@marcuslima.eti.br Para:  Bruno Mancuso , linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br)IPTABLES nao funciona Data:  Mon, 20 Oct 2003 15:29:16 -0300 Tenta digitar: iptables -t nat -nL e você verá o resultado da sua regra. Quanto a regra funcionar, vc não disse se elas estão funcionando. Sua rede interna está acessando o servidor SMTP externo? Att, Marcus Lima. ******************************************************************** ******************************************************************** ********************************************************************