No artigo anterior foi descrito as chains e qual o caminho que o pacote percorre dentro do iptables ate chegar no sistema operacional e sair pela interface de rede. Agora neste artigo quero falar um pouco sobre uma caracteristica interessante do iptables que e a capacidade do iptables em verificar o estado de um pacote ou nao. Voce pode me perguntar "Mas o que e isso de verificar o estado do pacote?". Um pacote que chega ao seu firewall pode ser uma resposta para uma conexao web, ftp, dns que tem origem dentro de sua rede ou uma conexao que se originou sem ser requisitada (e possivelmente pode ser uma tentativa maliciosa)! Para ser capaz de distinguir isso o iptables possui uma tabela interna onde verifica esta informacao!Informacoes dinamicas como esta estao guardadas em um diretorio especial que que se chama proc. E ai que o iptables possui este arquivo. Talvez o nome possa mudar de uma distribuicao a outra, mas ele geralmente estara relacionado com conntrack. Tenho um livro comprado a algum tempo e ali ele cita o nome como sendo ip_conntrack_max! Buscando em meu firewall/proxy encontrei 3 ocorrencias porem todas elas possuem o mesmo valor (que vamos explicar ja ja o que ele significa), mantendo uma coerencia! Para encontrar esse arquivo executei o seguinte comando:find /proc -iname *conntrack_max/proc/sys/net/ipv4/netfilter/ip_conntrack_max/proc/sys/net/netfilter/nf_conntrack_max/proc/sys/net/nf_conntrack_maxCaso voce mude o valor em qualquer um desses arquivos ela se refletira nos outros! Entao nao se de o trabalho de criar um script para mudar nos tres lugares! Estes arquivos so existirao apos estar carregado no sistema os modulos de rastreamento de conexao (nf_conntrack, nf_conntrack_ipv4, xt_state, que sao carregados automaticamente quando se usa o modulo do iptables state). Os valores contidos nestes arquivos representam o numero maximo de conexoes que poderao ser rastreadas pelo firewall. Caso voce chegue ao valor maximo voce vera uma mensagem como esta em seu log:ip_conntrack: maximum limit of xyz entries exceededE novas conexoes serao rejeitadas! Voce pode mudar esse valor mas geralmente o padrao e algo aceitavel. Se voce precisa mudar ele existe um arquivo que esta disponivel no site da wallfire.org! Ali e explicado os valores padrao e como sao calculados.Um firewall capaz de fazer este tipo de inspecao nos pacotes e de grande auxilio e ira economizar muitas linhas de codigo para criar algo mais seguro. Sem isso as regras de seu firewall seriam muito mais complexas, alem de ter que imaginar inumeras possibilidades de pacotes maliciosos! Claro que essas vantagens vem a um custo, cada nova conexao rastreada por este sistema necessita de 224 bytes de memoria adicional! Essa informacao voce pode verificar ao momento em que os modulos sao carregados e sera algo como isso aqui:ip_conntrack version 2.4 (960 buckets, 7680 max) - 224 bytes per conntrackSe nao fosse o valor do arquivo conntrack_max uma rede com muitos usuarios de p2p poderia facilmente lotar a memoria do servidor! Porem mesmo com este limite redes ponto-a-ponto podem impedir que conexoes importantes sejam efetuadas! Por isso use o modulo ipp2p do POM e limite as conexoes p2p!Na pratica o comando que permite o iptables