Anda di halaman 1dari 6

Iptables Iptables uma firewall que vem com a srie 2.4 do kernel do Linux.

. Passou a ser includo nesta verso de kernel a partir de Junho/Julho de 1999. Um firewall pode funcionar basicamente em dois nveis distintos: nvel de aplicao e nvel de pacotes Nvel de aplicao toma as decises de filtragem com base na anlise que faz ao contedo dos pacotes. Este tipode firewall analisa todo o contedo que transmitido entre o computador e a rede. Nvel de pacotes baseia-se nos parmetros dos pacotes que analisa como porta/endereo de origem/destino, estado da ligao, e outros parmetros do pacote. O firewall Iptables de nvel de pacotes, por isso funciona com base no endereo/porta de origem/destino do pacote, prioridade, etc. O firewall iptables utiliza regras de funcionamento simples para determinar se um pacote deve ter ou no permisso para passar. Estas regras definem-se como comandos que so passados ao Iptables para ser executada uma determinada aco como a de deixar passar um pacote ou de lhe barrar a passagem, de acordo com o endereo/porta de origem/destino, interface de origem/destino, etc. Como as regras so guardadas no kernel dentro dos chains1, estas so perdidas sempre que o computador reiniciado. Assim, conveniente utilizar um script que seja executado sempre que o sistema arranca, para garantir que estas regras so sempre activadas. Caractersticas do iptables Especificao de portas/endereo de origem/destino Suporte a protocolos TCP/UDP/ICMP (incluindo tipos de mensagens icmp) Suporte a interfaces de origem/destino de pacotes Manipulao de servios de proxy na rede Tratamento de trfego dividido em chains (para melhor controle do trfego que entra/sai da mquina e trfego redirecionado. Permite um nmero ilimitado de regras por chain Rpido, estvel e seguro Possui mecanismos internos para rejeitar automaticamente pacotes duvidosos ou mal formados. Suporte a mdulos externos para expanso das funcionalidades padres oferecidas pelo cdigo de firewall Suporte completo a roteamento de pacotes, tratadas em uma rea diferente de trfegos padres. Suporte a especificao de tipo de servio para priorizar o trfego de determinados tipos de pacotes. Permite especificar excees para as regras ou parte das regras Suporte a deteco de fragmentos Permite enviar alertas personalizados ao syslog sobre o trfego aceito/bloqueado. Redirecionamento de portas

As regras definidas pelo utilizador soguardadas dentro de chains. Existem dois tipos de chains: os embutidos (ex: imput, output e forward) e os que so criados pelo utilizador. Os nomes dos que so embutidos devem ser sempre especificados em maisculas porque so case-sensitive. Isto significa que escrever em maisculas diferente de escrever em minsculas.

Quando um pacote passa pela firewall verificado. Se alguma regra se aplicar a esse pacote.Se houver, ento aplicada a poltica default. Constitudo por 3 chains: INPUT Pacote destinado a maquina de firewall. OUTPUT Pacote originado da maquina de firewall. FORWARD Pacote com destino e origem separados pela maquina de firewall.Comandos para manipular chains Quando o Iptables instalado, inicialmente no existem regras em quaisquer chains (INPUT, FORWARD e OUTPUT) e todas as chains tero a poltica ACCEPT. As operaes para manipular as chains so: -N: Criar nova chain; -X: Apagar uma chain vazia; -P: Mudar a poltica de uma chain built-in(INPUT, FORWARD, OUTPUT); -L: Listar as regras de uma chain; -F: Apagar todas as regras de uma chain; -Z: Anular os contadores de pacotes e bytes de todas as regras de uma chain A estrutura geral das regras geralmente fica assim: # iptables [-t tabela] [opo] [chain] [dados] -j [ao A maioria das configuraes mais comuns envolve a manipulao de regras dentro de chains -A: Adicionar uma nova regra na chain; -I: Inserir uma nova regra em alguma posio da chain; -R: Substituir uma regra em alguma posio da chain; -D: Apagar uma regra em alguma posio da chain (-D). -D: Apagar a primeira regra que associa (com alguma condio) numa chain. Opes -s [!] address[/mask] especifica o endereo de origem -d [!] address[/mask] especifica o endereo de destino -p [!] protocolo especifica o protocolo ( TCP , UDP , ICMP , ALL ) -i [!] input_name especifica a interface de entrada dos pacotes -o [!] output_name especifica a interface de sada dos pacotes [!] -f indica que a regra se aplica s a fragmentos a partir do 2 pacote

tcpflags [!] mask set A mascara indica quais as flags a vigiar e o resultado esperado. As flags podem ser: SYN,ACK,FIN,RST,URG,PSH,ALL,NONE. [!] syn examina a flag TCP SYN. sport [!] port[:port] indica a porta TCP da origem dport [!] port[:port] indica a porta TCP de destino sport [!] port[:port] indica a porta UDP de origem dport [!] port[:port] indica a porta UDP de destino sport [!] port[:port] indica a porta UDP de origem dport [!] port[:port] indica a porta UDP de destino icmptype [!] typename examina os tipos icmp. macsource [!] address examina o Ethernet MAC address do pacote Para especifivar uma excepo utiliza-se ! que significa excepo Exemplos: iptables -t filter -A INPUT ! -s 200.200.200.10 -j DROP Diz para rejeitar todos os pacotes EXCETO os que vem do endereo 200.200.200.10. iptables -A INPUT -p tcp ! --syn -s 200.200.200.10 ! -i eth0 -j DROP Diz para bloquear todos os pacotes EXCETO os que iniciam conexes (! --syn), EXCETO para pacotes vindos pela interface eth0 (! -i eth0). iptables -A INPUT -s 200.200.200.10 ! -p tcp -j DROP Bloqueia todos os pacotes vindos de 200.200.200.10, EXCETO os do protocolo tcp.

Tabela NAT A tabela NAT serve para controlar a traduo dos endereos que atravessam o cdigo de routing da mquina Linux. Existem 3 chains na tabela nat: PREROUTING, OUTPUT e POSTROUTING A traduo de endereos tem inmeras utilidades, uma delas o Masquerading, onde mquinas de uma rede interna podem aceder a Internet atravs de uma mquina Linux, redireccionamento de porta, proxy transparente, etc. Criar um novo chain na tabela NAT Utiliza-se o parmetro N para criar uma nova chain mas especifica-se a tabela para que este chain no seja criado na tabela padro
iptables -t nat -N intra-inter

necessrio utilizar SNAT para conseguir que mquinas de uma rede interna tenham acesso Internet atravs da mquina Linux, utilizando IP fixo no Linux necessrio especificar SNAT como alvo (-j SNAT) quando queremos que as mquinas da rede interna tenha acesso Internet atravs do IP fixo da mquina Linux (para ligaes intermitentes como PPP, veja Fazendo IP Masquerading, Seo 10.4.3.1). O parmetro --to IP:portas deve ser usado aps o alvo SNAT. Ele serve para especificar um endereo IP, intervalo de endereos e opcionalmente uma porta ou intervalo de portas que ser substituda. Toda a operao de SNAT realizada atravs do chain POSTROUTING:
# Modifica o endereo IP dos pacotes vindos da mquina 192.168.1.2 da rede interna # que tem como destino a interface eth1 para 200.200.217.40 (que o nosso endereo # IP da interface ligada a Internet). iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j SNAT --to 200.200.217.40

Os pacotes indo para a Internet (nossa conexo feita via eth1, nossa interface externa) vindo do endereo 192.168.1.2, so substitudos por 200.241.200.40 e enviados para fora. Quando a resposta a requisio retornada, a mquina com iptables recebe os pacotes e faz a operao inversa, modificando o endereo 200.241.200.40 novamente para 192.168.1.2 e enviando a resposta a mquina de nossa rede interna. Aps definir suas regras de NAT, execute o comando echo "1" >/proc/sys/net/ipv4/ip_forward para habilitar o suporte a redirecionamento de pacotes no kernel. Tambm possvel especificar faixas de endereos e portas que sero substitudas: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50 Modifica o endereo IP de origem de todas as mquinas da rede 192.168.1.0/24 que tem o destino a interface eth0 para 200.241.200.40 a 200.241.200.50. O endereo IP selecionado escolhido de acordo com o ltimo IP alocado. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50:1-1023

Idntico ao anterior, mas faz somente substituies na faixa de portas de origem de 1 a 1023. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 200.200.217.40-200.200.217.50 --to 200.200.217.70-200.200.217.73 Faz o mapeamento para a faixa de portas 200.200.217.40 a 200.200.217.50 e de 200.200.217.70 a 200.200.217.73. 10.4.3.1 Fazendo IP Masquerading O IP Masquerading um tipo especial de SNAT usado para conectar a sua rede interna a internet quando voc recebe um IP dinmico de seu provedor (como em conexes ppp). Todas as operaes de IP Masquerading so realizadas no chain POSTROUTING. Se voc tem um IP fixo, deve ler Fazendo SNAT, Seo 10.4.3. Para fazer IP Masquerading de uma mquina com o IP 192.168.1.2 para ter acesso a Internet, use o comando: iptables -t nat -A POSTROUTING -s 192.168.1.2/32 -o ppp0 -j MASQUERADE A diferena que o alvo -j MASQUERADE. O comando acima faz IP Masquerading de todo o trfego de 192.168.1.2 indo para a interface ppp0: O endereo IP dos pacotes vindos de 192.168.1.2 so substitudos pelo IP oferecido pelo seu provedor de acesso no momento da conexo, quando a resposta retornada a operao inversa realizada para garantir que a resposta chegue ao destino. Nenhuma mquina da internet poder ter acesso direto a sua mquina conectava via Masquerading. Para fazer o IP Masquerading de todas as mquinas da rede 192.168.1.*: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE Aps definir a regra para fazer Masquerading (SNAT), execute o comando echo "1" >/proc/sys/net/ipv4/ip_forward para habilitar o suporte a redirecionamento de pacotes no kernel. -------------------------------------------------------------------------------10.4.4 Fazendo DNAT DNAT (Destination nat - nat no endereo de destino) consiste em modificar o endereo de destino das mquinas clientes. O destination nat muito usado para fazer redirecionamento de pacotes, proxyes transparentes e balanceamento de carga. Toda operao de DNAT feita no chain PREROUTING. As demais opes e observaes do SNAT so tambm vlidas para DNAT (com exceo que somente permitido especificar a interface de origem no chain PREROUTING). # Modifica o endereo IP destino dos pacotes de 200.200.217.40 vindo da interface eth0 # para 192.168.1.2. iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2 Tambm possvel especificar faixas de endereos e portas que sero substitudas no DNAT:

iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT --to 200.200.217.40-200.200.217.50 Modifica o endereo IP de destino do trfego vindos da interface 192.168.1.0/24 para um IP de 200.241.200.40 a 200.241.200.50. Este um excelente mtodo para fazer o balanceamento de carga entre servidores. O endereo IP selecionado escolhido de acordo com o ltimo IP alocado. iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT --to 200.200.217.40-200.200.217.50:1024:5000 Idntico ao anterior, mas faz somente substituies na faixa de portas de destino de 1024 a 5000. A operao acima a mesma realizada pelo ipmasqadm dos kernels da srie 2.2. OBS1: Se por algum motivo no for possvel mapear uma conexo NAT, ela ser derrubada. OBS2: No se esquea de conferir se o ip_forward est ajustado para 1: echo "1" >/proc/sys/net/ipv4/ip_forward. -------------------------------------------------------------------------------10.4.4.1 Redirecionamento de portas O redirecionamento de portas permite a voc repassar conexes com destino a uma porta para outra porta na mesma mquina. O alvo REDIRECT usado para fazer esta operao, junto com o argumento --to-port especificando a porta que ser redirecionada. Este o mtodo DNAT especfico para se para fazer proxy transparente (para redirecionamento de endereos/portas, veja Fazendo DNAT, Seo 10.4.4). Todas as operaes de redirecionamento de portas realizada no chain PREROUTING e OUTPUT da tabela nat. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 81 Redireciona as conexes indo para a porta 80 para a porta 81 (rodando squid) no firewall. ATENO: O squid possui suporte a proxy transparente, e poder atender as requisies acima da regra acima. -------------------------------------------------------------------------------10.4.5 Monitorando conexes feitas na tabela nat Use o comando cat /proc/net/ip_conntrack para listar todas as conexes atuais tratadas pelo mdulo nat.

Anda mungkin juga menyukai