Firewalls, netfilter / iptables
As duas coisas necessárias para a construção de firewalls e Qualidade de Serviço (QoS) com Linux são dois pacotes com o nome do netfilter e iproute. Enquanto Netfilter é um filtro de pacotes quadro incluído no kernel Linux 2.4 e 2.6, iproute é um pacote contendo alguns utilitários que permitem que os usuários do Linux a fazer o roteamento avançado e modelagem de tráfego.
Este artigo destina-se a introduzir as ferramentas, vamos utilizar ao longo deste artigo. No entanto, netfilter iproute e assuntos são muito grandes, por isso que vou tentar fazer neste artigo é introduzir os leitores que não estão familiarizados com o assunto, juntamente com a construção de uma visão agradável para os leitores que já conhecem o assunto. Há dois sites com um monte de documentação sobre os projectos para netfilter, http://www.netfilter.org, e para iproute, http://www.lartc.org.
netfilter / iptables
netfilter é uma parte muito importante do kernel do Linux, em termos de segurança, deturpação de pacotes e manipulação. O front-end para o netfilter é iptables, que "diz" ao kernel que o usuário quer fazer com os pacotes IP que chegam em, passando, ou sair do Linux.
Os recursos mais utilizados do netfilter são a filtragem de pacotes e de tradução de endereços de rede, mas há um monte de outras coisas que podemos fazer com netfilter, como o pacote desconfiguração Layer 7 de filtragem.
Uma explicação sobre a forma áspera netfilter funciona é assim:
- O usuário instrui o kernel sobre o que ela precisa fazer com que o fluxo de pacotes IP através do Linux utilizando a ferramenta iptables.
- O Linux, em seguida, analisa os cabeçalhos IP em todos os pacotes que o atravessam.
- Se, ao olhar para os cabeçalhos IP, o kernel verifica regras de correspondência, o pacote é manipulado de acordo com a regra de correspondência.
Pode parecer muito simples no início, mas na verdade é um processo muito mais complicado. netfilter tem alguns tabelas, Cada uma contendo um conjunto padrão de regras, que são chamados de cadeias. A tabela padrão carregado no kernel é a tabela de filtro, que contém três correntes:
-
ENTRADA: Contém regras para os pacotes destinados à máquina Linux em si.
-
EXPECTATIVA: Contém regras para os pacotes que a máquina Linux rotas para outro endereço IP.
-
SAÍDA: Contém regras para os pacotes gerados pela máquina Linux.
Em seguida, o fluxo de pacotes através do pré-cadeia de encaminhamento da tabela nat, onde podemos fazer DNAT, redirecionamento de porta, etc
É lógico que para poder realizar a tradução de endereços de destino de rede antes de o processo de roteamento ocorre. Como você vai ver no artigo 4 º, onde discutimos DNAT em mais detalhes, DNAT é o processo de tradução de um (geralmente públicas) o endereço IP para outro (geralmente privado). Isto é feito modificando o endereço IP de destino no cabeçalho do pacote IP. netfilter deve fazer isso antes que o kernel faz uma decisão de roteamento para que o kernel irá procurar o novo endereço IP de destino do pacote IP.
Depois de passar pelas duas correntes, o kernel do Linux faz uma decisão de roteamento. Este não é o trabalho do netfilter. Analisando o endereço IP de destino do cabeçalho do pacote IP, a caixa de Linux sabe se o pacote deve ser encaminhado em outro lugar ou se destinados a ela.
Se o Linux é o destino para o pacote IP, o pacote passa pela chain INPUT da tabela mangle para a deturpação do pacote. Depois disso, o pacote é passado para o filtro de tabela INPUT cadeia, onde ele pode ser aceito, rejeitado ou abandonado. Se o pacote for aceito (por exemplo, uma solicitação para um servidor web rodando em nosso Linux), o Linux gera uma resposta a esse pacote, que atravessa a tabela mangle OUPUT primeira cadeia.
Em seguida, o pacote é transmitido através da tabela nat OUTPUT cadeia eo filtro chain OUTPUT da tabela. Neste ponto, a cadeia POSTROUTING tabela mangle e na cadeia POSTROUTING nat tabela são analisados e que o pacote está pronto para ser enviado pela interface correspondente.
As correntes apresentadas aqui são as cadeias predefinido de cada tabela (filter, nat e mangle). No entanto, os usuários podem configurar cadeias personalizado com nomes personalizados, e passar os pacotes para as cadeias da cadeia correspondente predefinidos. Por exemplo, se queremos criar algumas regras para o acesso via SSH para a máquina Linux, podemos criar uma cadeia personalizado chamado SSH, e inserir uma regra na cadeia de entrada que instrui o kernel para analisar a cadeia de SSH para os pacotes de entrada na porta 22 / TCP.
As cadeias predefinido não pode ser excluído ou renomeado.
Iptables - Operações
iptables tem uma sintaxe um pouco semelhante ao velho ipchains (netfilter para kernels 2.2). No entanto, os conceitos do netfilter para 2,4 + sementes são totalmente diferentes dos conceitos netfilters 'para kernels 2.2.
O iptables pode fazer operações com correntes são:
- Listar as regras de uma cadeia (iptables-L Chain).
- Mudar a política de uma cadeia (iptables-P CADEIA aceitar).
- Criar uma nova cadeia (iptables-N CADEIA).
- Cadeia de um Flush; apagar todas as regras (iptables-F CADEIA).
- Apagar uma cadeia (iptables-D CHAIN), só se a cadeia está vazia.
- Zero contadores de uma cadeia (iptables-Z CADEIA). Toda regra em cada cadeia mantém um contador do número de pacotes e bytes é correspondido. Este comando repõe os contadores.
Para o-L, M,-D, e operações-Z, se o nome de cadeia não é especificado, a operação é aplicada a todo o quadro, que se não especificado por padrão é a tabela de filtro.
Para especificar a tabela na qual fazemos as operações, devemos utilizar a opção-t como assim iptables-t filter ...
Operações que o iptables pode executar regras são:
- Regras acrescentar a uma cadeia (iptables-A)
- Inserir regras em uma cadeia (iptables-I)
- Substituir uma regra em uma cadeia (iptables-R)
- Excluir uma regra de uma cadeia (iptables-D)
As chaves mais utilizadas são e-A-D (acrescentar e excluir regras). Normalmente, quando da concepção de firewalls, as regras são acrescentados às cadeias.
Durante o tempo de execução, use os usuários-I-A mais porque muitas vezes eles precisam para inserir regras temporárias na cadeia.
iptables-A coloca o Estado no final da cadeia, enquanto iptables-I coloca o Estado no topo das outras regras da cadeia. No entanto, você pode inserir uma regra em qualquer ponto da cadeia, indicando a posição onde deseja que a regra para a cadeia com a opção-I: iptables-I CADEIA 4 irá inserir uma regra na quarta posição da cadeia especificada.
A sintaxe para adicionar uma regra para uma cadeia é:
Filtragem de especificações é uma parte de uma regra de iptables que é usado pelo kernel para identificar os pacotes IP para que o kernel faz a ação especificada pela Target.
Especificações de filtragem
Os pacotes IP podem ser identificadas em um grande número de formas através da especificação de interfaces, protocolos, portas, etc, para regras do iptables. A beleza disto é que nós podemos misturar qualquer dessas especificações, tendo uma alta flexibilidade e uma ampla gama de seletores. Eu não estou planejando para cobrir todos os seletores em profundidade, mas tenha em mente que, se você pensar em algo lógico sobre pacotes IP, você tem todas as chances de identificar os pacotes usando regras de iptables.
Filtragem de especificações para Layer2: Interfaces podem ser especificados como seletores com-i e muda-o.
-i significa "- in-interface" e-o para "- out-interface". + Pode ser usado para especificar apenas a cadeia no início da relação, por exemplo-i eth + irá corresponder a todas as interfaces que começam com a ETH string; assim que nós especificados todos os interfaces Ethernet como interfaces de entrada para uma regra.
Interruptores versão curta (por exemplo,-i) e muda versão longa (por exemplo "- in-interface") não tem absolutamente o mesmo efeito. Algumas pessoas preferem usar switches curto para linhas de comandos e interruptores longo de scripts que possam oferecer uma melhor legibilidade, mas vamos usar somente chaves curto neste artigo, mesmo nos scripts para se acostumar com as linhas de comando melhor.
O ponto de exclamação "!" representa uma negação e pode ser usado para especificar em que interface (s) de não aplicar este filtro (ex-i! eth1 vai não Coincidir pacotes chegando a eth1).
|
Os pacotes analisados no OUTPUT e POSTROUTING cadeias não têm interfaces de entrada, e por isso não é permitido usar a opção-i nessas cadeias. Além disso, as cadeias PREROUTING e INPUT não possuem interface de saída, e assim você não pode usar a opção-o para as regras nessas cadeias. |
Camada 3: Endereço IP de origem (es) podem ser especificados usando-s, SRC - ou - origem e destino do endereço IP (ES) com-d, - DST, ou - de destino. Fontes ou destinos podem ser endereços IP, subredes, ou nomes canônicos (por exemplo, "-s 217.207.125.58", "-s www.packtpub.com", ou "-s 217.207.125.58/32" têm o mesmo efeito). Especificando nomes canônicos para os anfitriões, que tem vários endereços IP irá resultar em adicionar o mesmo número de regras como o número de endereços IP do servidor DNS resolve para o acolhimento no momento em que as regras são adicionadas.
|
Não use nomes canônicos sobre as regras de alto risco. Por exemplo, não permitem o acesso SSH de ahost.anotherisp.com, pois isso irá permitir facilmente um man-in-the-middle ataque. |
Camada 4: O protocolo pode ser especificado usando a opção-p, que significa "- protocolo". Os protocolos podem ser especificado pelo seu número correspondente ou por seus nomes, TCP, UDP ou ICMP (case insensitive).
Para o protocolo ICMP, você pode especificar os tipos de mensagens ICMP usando "- icmp-type". A lista de mensagens ICMP podem ser encontradas usando o comando "iptables-p icmp - help".
Para o protocolo UDP, você pode especificar origem ou destino os portos com "- source-port" ou "- desporto" e "- destination-port" e "- dport".
TCP, sendo o mais completo protocolo de camada 4, tem mais opções. Você pode especificar, além da origem ou destino os portos como para o protocolo UDP, "- tcp-flags", "- syn" e "- tcp-option". Sinalizadores TCP pode ser "SYN FIN ACK PSH RST URG Todos Nenhum". "syn -" é usado para identificar as conexões de início e é equivalente a "- tcp-flags SYN, RST, ACK SYN". "- tcp-option", seguido de um número corresponde pacotes TCP com a opção definida para esse número.
|
Especificações de filtragem pode combinar todos os recursos que acabamos de mencionar, por isso podemos ter uma combinação de camadas 2, 3 e 4 especificações a mesma regra. |
Outra coisa bonita sobre netfilter / iptables é que as extensões de correspondência pode ser desenvolvida separadamente e adicionados posteriormente. No site do netfilter, há um grande repositório de correspondência extensões chamadas "patch-o-matic", no http://www.netfilter.org/projects/patch-o-matic/index.html.
A nova extensão e "ousadia" para iptables planos para estender as suas capacidades de as camadas inferiores à camada superior do modelo OSI, Layer 7-aplicação.
um artigo submetido por Philip A Clare
Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre.
Importante: Este artigo "Firewalls, netfilter / iptables" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.