Olá pessoal, depois de um tempo afastado por motivos que muitas vezes extrapolam a nossa vontade, estou de volta. Vou falar um pouco de como o iptables é organizado e como ele funciona.
Não entraremos em detalhes técnicos, o objetivo aqui é saber como ele lida com os dados, em postagens futuras falaremos sobre os comandos dessa ferramenta tão poderosa.
Espero que gostem.
Não entraremos em detalhes técnicos, o objetivo aqui é saber como ele lida com os dados, em postagens futuras falaremos sobre os comandos dessa ferramenta tão poderosa.
Espero que gostem.
1)IPTABLES
A partir do kernel do Linux 2.4 foi introduzido o firewall iptables em substituição ao ipchains que estava embutido nos kernels da série 2.2. O novo firewall tem como vantagem ser muito estável, confiável, permite muita flexibilidade na programação de regras pelo administrador do sistema, mais opções disponíveis ao administrador para controle do tráfego, controle independente do tráfego local, entre redes e de interfaces devido a nova organização das etapas de roteamento de pacotes.
O iptables é um firewall em nível de pacotes e funciona baseado nos endereços de origem e destino, nas portas de origem e destino, prioridades e outros. Ao receber os pacotes o iptables os submete a uma comparação com as regras estabelecidas pelo administrador para saber se um pacote tem ou não permissão para passar. Em firewalls mais restritivos o pacote ao ser bloqueado é registrado em um arquivo de log para posterior análise do administrador do sistema.
Outras funções do iptables podem ser usadas para modificar e monitorar o tráfego da rede, fazer NAT, redirecionamento de pacotes, marcação de pacotes, modificar a prioridade dos pacotes que chegam e saem do sistema, contagem de bytes, divisão de tráfego entre máquinas, criar proteções anti-spoofing, contra syn flood, DoS, o tráfego vindo de máquinas desconhecidas da rede pode ser bloqueado e registrado através do uso de regras simples.
As possibilidades oferecidas pelo iptables juntamente com as ferramentas UNIX maduras dá ao administrador do sistema possibilidades quase que infinitas na criação das regras, ficando a cargo de sua imaginação definir quais recursos utilizar. Para criar regras realmente efetivas precisamos ter informações como o que é necessário bloquear, quais interfaces o sistema possui, o que tem acesso garantido, quais serviços devem estar acessíveis para cada rede, e a partir daí começar a montar o firewall.
O iptables é um firewall em nível de pacotes e funciona baseado nos endereços de origem e destino, nas portas de origem e destino, prioridades e outros. Ao receber os pacotes o iptables os submete a uma comparação com as regras estabelecidas pelo administrador para saber se um pacote tem ou não permissão para passar. Em firewalls mais restritivos o pacote ao ser bloqueado é registrado em um arquivo de log para posterior análise do administrador do sistema.
Outras funções do iptables podem ser usadas para modificar e monitorar o tráfego da rede, fazer NAT, redirecionamento de pacotes, marcação de pacotes, modificar a prioridade dos pacotes que chegam e saem do sistema, contagem de bytes, divisão de tráfego entre máquinas, criar proteções anti-spoofing, contra syn flood, DoS, o tráfego vindo de máquinas desconhecidas da rede pode ser bloqueado e registrado através do uso de regras simples.
As possibilidades oferecidas pelo iptables juntamente com as ferramentas UNIX maduras dá ao administrador do sistema possibilidades quase que infinitas na criação das regras, ficando a cargo de sua imaginação definir quais recursos utilizar. Para criar regras realmente efetivas precisamos ter informações como o que é necessário bloquear, quais interfaces o sistema possui, o que tem acesso garantido, quais serviços devem estar acessíveis para cada rede, e a partir daí começar a montar o firewall.
2)Arquitetura do IPTABLES
O iptables é considerado um firewall de primeira geração, pois possui comportamentos diferente de seus antecessores ip-chains e ipfwadm, que funcionavam apenas como filtro de pacotes stateless. Funcionando como um filtro de pacotes statefull o iptables possui a capacidade de atuar sobre as camadas do protocolo TCP. Apesar da implementação do firewall stateless ser mais simples, ele apresenta uma configuração mais trabalhosa, além de ser menos seguro se comparado aos filtros baseados em estado de conexão (Statefull).
Para o filtro de pacotes stateless todo pacote recebido é considerado novo, independente do fluxo de informação em questão (requisição ou resposta). Já com o iptables é possível trabalhar com um filtro de pacotes statefull, através da definição de regras como: nova(NEW), estabelecida (ESTABLISHED), reincidente (RELATED) ou inválida (INVALID), que permitem identificar os “estados de conexão”.
Outra característica do iptables é a modularização o que permite adicionar novas funcionalidades de maneira extremamente simples, ficando assim, a cargo do administrador decidir que módulos atendem melhor suas necessidades.
O iptables possui uma organização baseada em três tipos de tabelas (filter, nat e mangle), e cada tabela possui suas respectivas chains (prerouting, postrouting, input, forward, output) de acordo com a sua funcionalidade. Nesse caso podemos classificar chain como um conjunto de regras com objetivos semelhantes. Para melhor entendimento temos:
• A chain INPUT é responsável por definir as regras que farão a filtragem de pacotes cujo endereço de destino é o firewall.
• A chain FORWARD é responsável por comportar as regras que farão a filtragem dos pacotes que passarão pelo firewall, ou seja, que possuem como endereço de destino algum host fora da rede interna.
• A chain OUTPUT fica responsável por estabelecer as regras para a filtragem dos pacotes que são originados pelo próprio firewall.
• A chain PREROUTING é responsável por definir regras específicas de roteamento antes que o pacote seja enviado para a chain INPUT ou FORWARD, podendo realizar algum redirecionamento de conexão (através do alvo DNAT) ou de porta (através do REDIRECT).
• A chain POSTROUTING fica responsável por regras específica de roteamento após o pacote ter passado pelas chains PREROUTING, INPUT ou FORWARD ou OUTPUT, podendo realizar algum tipo de filtro ou troca de endereços IPs de origem, através do alvo SNAT ou MASQUERADE.
As chains são organizadas por tabelas, ou seja, cada tabela possui um conjunto de chains variando de acordo com a sua funcionalidade, para melhor entendimento temos:
• A tabela filter define as principais regras de permissões de acessos (filtros) do firewall, e comporta as chains INPUT, FORWARD e OUTPUT.
• A tabela nat é responsável pela implementação do NAT, e através dela podemos realizar redirecionamento de conexões e acessos compartilhados. A tabela nat comporta as chains PREROUTING e POSTROUTING.
• A tabela mangle é utilizada para aplicar regras de acesso a qualquer pacote recebido pelo firewall, podendo também marcar pacotes para realização de balanceamento de carga, além de muitas outras possibilidades. A tabela mangle nas versões de kernel mais atuais comporta todas as chains (PREROUTING, INPUT, OUTPUT, FORWARD e POSTROUTING).
Para o filtro de pacotes stateless todo pacote recebido é considerado novo, independente do fluxo de informação em questão (requisição ou resposta). Já com o iptables é possível trabalhar com um filtro de pacotes statefull, através da definição de regras como: nova(NEW), estabelecida (ESTABLISHED), reincidente (RELATED) ou inválida (INVALID), que permitem identificar os “estados de conexão”.
Outra característica do iptables é a modularização o que permite adicionar novas funcionalidades de maneira extremamente simples, ficando assim, a cargo do administrador decidir que módulos atendem melhor suas necessidades.
O iptables possui uma organização baseada em três tipos de tabelas (filter, nat e mangle), e cada tabela possui suas respectivas chains (prerouting, postrouting, input, forward, output) de acordo com a sua funcionalidade. Nesse caso podemos classificar chain como um conjunto de regras com objetivos semelhantes. Para melhor entendimento temos:
• A chain INPUT é responsável por definir as regras que farão a filtragem de pacotes cujo endereço de destino é o firewall.
• A chain FORWARD é responsável por comportar as regras que farão a filtragem dos pacotes que passarão pelo firewall, ou seja, que possuem como endereço de destino algum host fora da rede interna.
• A chain OUTPUT fica responsável por estabelecer as regras para a filtragem dos pacotes que são originados pelo próprio firewall.
• A chain PREROUTING é responsável por definir regras específicas de roteamento antes que o pacote seja enviado para a chain INPUT ou FORWARD, podendo realizar algum redirecionamento de conexão (através do alvo DNAT) ou de porta (através do REDIRECT).
• A chain POSTROUTING fica responsável por regras específica de roteamento após o pacote ter passado pelas chains PREROUTING, INPUT ou FORWARD ou OUTPUT, podendo realizar algum tipo de filtro ou troca de endereços IPs de origem, através do alvo SNAT ou MASQUERADE.
As chains são organizadas por tabelas, ou seja, cada tabela possui um conjunto de chains variando de acordo com a sua funcionalidade, para melhor entendimento temos:
• A tabela filter define as principais regras de permissões de acessos (filtros) do firewall, e comporta as chains INPUT, FORWARD e OUTPUT.
• A tabela nat é responsável pela implementação do NAT, e através dela podemos realizar redirecionamento de conexões e acessos compartilhados. A tabela nat comporta as chains PREROUTING e POSTROUTING.
• A tabela mangle é utilizada para aplicar regras de acesso a qualquer pacote recebido pelo firewall, podendo também marcar pacotes para realização de balanceamento de carga, além de muitas outras possibilidades. A tabela mangle nas versões de kernel mais atuais comporta todas as chains (PREROUTING, INPUT, OUTPUT, FORWARD e POSTROUTING).
3)Como funciona o IPTABLES
Com o passar do tempo e a evolução dos ataques o filtro de pacotes estático (static packet filtering) passou a não ser tão eficiente no confronto às novas modalidades de ataques. Para resolver esse problema o filtro de pacote estático teve que passar por uma reformulação, dando origem a um novo conceito em filtragem de pacotes. Conhecido como filtro de pacotes dinâmico (dynamic packet filtering) ou filtro de inspeção de estados (stateful inspection), o novo firewall toma decisões de filtragem baseado nas informações dos pacotes de dados e da sua tabela de estados, além de levar em consideração todos os dados do pacote, e não apenas o cabeçalho.
O IPTABLES por ser considerado um filtro de pacotes dinâmico, incorpora todas as características citadas acima, e funciona da seguinte maneira:
O IPTABLES por ser considerado um filtro de pacotes dinâmico, incorpora todas as características citadas acima, e funciona da seguinte maneira:
Passo 1: No cenário ilustrado acima quando um usuário deseja iniciar uma conexão ele envia um pacote SYN para o firewall;
Passo 2: o firewall ao receber o pacote SYN o submete à tabela de regras definida pelo administrador da rede;
Passo 3: se o pacote não passar por uma das regras ele é descartado e a conexão é rejeitada;
Passo 4: no caso do pacote passar sem problemas por todas as regras, a sessão é cadastrada na tabela de estados do firewall que se encontra na memória do kernel;
Passo 5: após o cadastro na tabela de estados o pacote é enviado para o destino. A partir do momento que a sessão está cadastrada os próximos pacotes são submetidos diretamente à tabela de estados, e se fizerem parte de alguma sessão da tabela são liberados, senão são descartados.
4) Bibliografia
- JUCÁ, Humberto L. Técnicas Avançadas de Conectividade e Firewall em GNU/LINUX. 1. Ed. Rio de Janeiro: Brasport, 2005.
- SILVA, Gleydson Mazioli. Guia Foca GNU/Linux. Versão 5.60. Espírito Santo: Vitória, 2007.
- NAKAMURA, Emilio Tissato.(2000). Um Modelo de Segurança de Redes para Ambientes Cooperativos. Dissertação (mestrado) – Unicamp, 2000.
Bom pessoal, é isso aí. Espero que este post ajude a esclarecer um pouco mais sobre esta ferramenta magnifica.
Bom trabalho a todos !!!
Passo 3: se o pacote não passar por uma das regras ele é descartado e a conexão é rejeitada;
Passo 4: no caso do pacote passar sem problemas por todas as regras, a sessão é cadastrada na tabela de estados do firewall que se encontra na memória do kernel;
Passo 5: após o cadastro na tabela de estados o pacote é enviado para o destino. A partir do momento que a sessão está cadastrada os próximos pacotes são submetidos diretamente à tabela de estados, e se fizerem parte de alguma sessão da tabela são liberados, senão são descartados.
4) Bibliografia
- JUCÁ, Humberto L. Técnicas Avançadas de Conectividade e Firewall em GNU/LINUX. 1. Ed. Rio de Janeiro: Brasport, 2005.
- SILVA, Gleydson Mazioli. Guia Foca GNU/Linux. Versão 5.60. Espírito Santo: Vitória, 2007.
- NAKAMURA, Emilio Tissato.(2000). Um Modelo de Segurança de Redes para Ambientes Cooperativos. Dissertação (mestrado) – Unicamp, 2000.
Bom pessoal, é isso aí. Espero que este post ajude a esclarecer um pouco mais sobre esta ferramenta magnifica.
Bom trabalho a todos !!!
3 comentários:
Muito bom o artigo.
Continue postando material com essa qualidade.
Parabéns
Fala Gabriel. É isso aí rapaz, vão lotar a internet de soluções, pois, não agüento mais cair em fóruns e blogs com problemas sem soluções!!!
parabenns pelo post,de alta qualidade...
Postar um comentário