Click here to load reader
Upload
romario2006
View
777
Download
0
Embed Size (px)
Citation preview
Ferramentas para Administração e Segurança de Redes
de Computadores: IpTables
1 Romário Roberto de Pádua Andrade
Universidade Federal do Pará - Campus Universitário de Santarém
Resumo
O presente artigo tem como objetivo a apresentação do software IpTables,
assim como conceitos básicos sobre firewall e a apresentação de comandos
para a sua implementação, configuração e utilização na pratica dessa
ferramenta para a gerencia e proteção de redes.
Palavra chaves: IpTables, firewall, segurança e redes de computadores
Introdução
Com o crescimento das redes de computadores, torna-se cada vez mais
necessária a interligação das redes privadas com as redes públicas. Conseqüentemente,
os recursos de hardware e software das empresas ficam expostas a ameaças externas ou
mesmo internas, onde falhas de segurança podem causar impactos dos mais diferentes
níveis, que podem ir desde constrangimentos até perda de mercado. Em função da
necessidade de proteger os dados, os recursos e os próprios computadores, surgiram
ferramentas de bloqueio de acessos indesejados, denominadas Firewall.
Atualmente a Linux apresenta o firewall IpTables integrado no seu kernel. O
IpTables é uma solução barata rápida e de fácil configuração, sendo muito utilizada para
segurança de pequenas rede de computadores, sendo que o mesmo se bem configurado
pode ser aplicado em segurança de redes de grandes corporações. O artigo tem como
objetivo mostrar os conceitos principais sobre o IpTables e como utilizar essa
ferramenta para proteção e gerenciamento de rede.
Firewall
A palavra Firewall que dizer “Parede corta-fogo” e como o nome sugere é
uma barreira intransponível que separa dois espaços impedindo a penetração de um
lado para outro. CHESWICK, STEVEN M. BELLOVIN e RUBIN apresentam os
seguintes conceito sobre firewall:“Firewall é qualquer dispositivo, software,
arranjo ou equipamento que limita o acesso à rede. O Firewall é um sistema que
impõe uma política de controle de acesso entre duas redes, tendo as seguintes
propriedades”.
a) todo tráfego de dentro para fora de uma rede, e vice-versa, deve
passar pelo Firewall;
b) apenas tráfego autorizado, como definido pela política de
segurança local, terá permissão de passar;
c) o próprio Firewall é imune a penetrações.
Firewall pode também ser definido como aplicativo e/ou dispositivo que
tem como objetivo implementar uma política de segurança em um ponto sobre uma
rede de computadores. Sua função principal é a filtragem de pacotes (quadros ou
datagramas ips) aceitando ou rejeitando pacotes indesejáveis negando acesso ao
servidor e/ou a maquinas de uma rede, negando acesso a serviços em portas
protegidas e etc.
Segundo NBSO, um firewall bem configurado e um instrumento importante
para implantar a política de segurança em uma rede. Ele pode reduzir a informação
disponível externamente sobre a sua rede, ou, em alguns casos, ate mesmo barrar
ataques a vulnerabilidades ainda não divulgadas publicamente (e para as quais
correções não estão disponíveis).
Contudo, firewall são somente uma camada adicional de proteção na
implementação de uma rede de computadores, não sendo recomendável que ele
seja usado como a única linha de defesa em uma rede. Firewall não são infalíveis e
apenas a sua simples instalação em uma rede não garante a segurança da mesma.
Firewalls são apenas mais um, dentre vários mecanismos de segurança que se dever
integrar em uma rede de computadores para complementar sua proteção.
Tipos de Firewall
Os firewalls atualmente estão divididos em duas categorias: filtro de pacotes,
filtro de pacotes com base no estado da conexão e filtros de pacotes na camada de
aplicação.
Os firewalls com filtros de pacote atuam diretamente na analise das informações
colhidas do cabeçalho (preâmbulo) de cada pacote que entra na rede. Dessa forma,
levando em consideração ip de destino e origem, protocolo utilizado e a porta de
comunicação, o firewall toma a decisão se o pacote é aceito ou rejeitado.
Segundo (BORSCHEID), Firewall com filtro de pacotes com base no estado da
conexão (stateful packet Filter) baseia suas ações utilizando dois elementos: dados
contidos no cabeçalho do pacote e na tabela de estados, que armazena informações do
estado de todas as conexões que estão trafegando através do Firewall e usa estas
informações, em conjunto com as regras definidas pelo administrador, na hora de tomar
a decisão de permitir ou não a passagem de um determinado pacote.
Os firewalls com filtros de pacotes na camada de aplicação têm uma algoritmos
e códigos de filtragem mais complexos. Esse tipo de firewall atua diretamente na
analise dos protocolos utilizados em diversas aplicações, desse modo a filtragem é feita
com base nas vulnerabilidades desses protocolos nos aplicativos.
Iptables
O Iptables é o software que será apresentado nesse artigo, ele é um firewall
que vem integrado ao kernel do Linux deste a versão 2.4, sendo este produzido pela
equipe de desenvolvimento Netfilter.
O iptables estar embutido no framework Netfilter e possui, além do iptables,
outros módulos em seu corpo, como por exemplo, o Ip6tables. O iptables veio de
modo a substituir o ipchains e ipfwadm e tem como característica fundamental
manter estabilidade e uma melhor flexibilidade na implementação de regras de
filtragem de pacotes do que seu antecessor ipchains. O kernel do Linux utiliza um
recurso independente para monitorar e controlar todo o tipo de fluxo de dados
dentro de sua estrutura operacional. A função do Kernel é de trabalhar ao lado de
processos e tarefas, por esse motivo foi agregado um módulo Netfilter ao mesmo
para controlar seu próprio fluxo interno (referencia).
Segundo Elgio Schlemer, o iptables usa o conceito de "ganchos" do
Netfilter, permitindo avaliar um datagrama em alguns pontos dentro do kernel.
Desse modo pode-se aplicar as lista de regras de filtragem tanto em pacotes que
chegam a maquina através da rede, quanto pacotes gerados na maquina com o
destino a própria maquina.
Basicamente o iptables se baseia em pares de regras e ações. As regras
definem em quais pacotes atuar e as ações definem qual atitude deve ser tomada
quando um pacote bater com a regra em questão. As regras e ações são
armazenadas pelo iptables listas de tabelas.
Sua principal característica, além de realizar suas tarefas de forma veloz, segura,
eficaz e econômica, apresenta um leque de possibilidades tais como:
Implementação de filtros de pacotes;
Desenvolvimento de QOS sobre o tráfego;
suporte a Source Network Address Translation (SNAT) e DNAT;
Direcionamento de endereços e portas;
Mascaramento de tráfego;
Detecção de fragmentos;
Monitoração de tráfego;
Bloqueio de ataque de Spoofing, Syn-Flood, DOS scanners ocultos, pings da
Morte, entre muitos outros.
Tabelas IPTables
O iptables possui tabelas onde ficam armazenados às regras para filtragem
de pacotes, assim ao grosso modo iptables é um banco de dados sobre regras de
filtragem de pacotes. Das tabelas existentes no iptabes as mais importantes são as
tabelas Filter, Nat e Mangle.
Tabela Filter
A tabela filter é a tabela padrão do netfilter sendo que essa implementa
regras de filtragem baseada nos pacotes. Nessa tabela estão contidas as regras que
determinam se um pacote deve ser aceito ou não pelo firewall. As regras que estão
inseridas nessa tabela não podem modificar/alterar as configurações dos pacotes
analisados. A tabela filter apresenta os seguintes conjuntos de regras:
INPUT: essas filas de regras são aplicadas a pacotes que são destinadas ao
ip da maquina, sendo analisado por eventuais regras de filtragem se existirem. Para
inserir uma nova regra nessa tabela usa sintaticamente o comando:
iptables -t filter -A INPUT [regra]
OUTPUT: essa fila regras analisa os pacotes gerados pro processos locais
da maquina. Sintaticamente para inserir uma regra nesta lista usa-se o comando:
iptables -t filter -A OUTPUT [regra]
FORWARD: essa fila de regras analisam os pacotes que chegam à maquina
mas não são destinada a ela. Sintaticamente para inserir uma regra nesta lista usa-se
o comando:
iptables -t filter -A FORWARD [regra]
Tabela NAT
A tabela NAT (Network Address Translation) possui um conjunto de regras
para roteamento de pacotes que entram na interface de rede. As regras definidas na
tabela NAT têm o poder de alterar as características como destino e origem de um
pacote. Assim como a tabela filter, a tabela NAT possui três conjuntos de regras:
PREROUTING, POSTROUTING e OUTPUT.
PREROUTING: é utilizada quando há necessidade em fazer alterações em
pacotes antes que os mesmos sejam roteados. Pois se um pacote precisa que um
parâmetro de destino seja modificado isso tem que ser feito antes da etapa de
roteamente. PREROUTING é permitido alterar apenas os campos de destino, seja
número IP ou porta. A ação que realiza isto é chamada de DNAT (Destination NAT,
sendo que NAT significa Network Address Translate). Além da ação DNAT, a lista
PREROUTING da tabela NAT ainda aceita as ações (-j) LOG e DROP (REJECT
não é aceito). Mesmo que, via de regra, pacotes deveriam ser descartados na filter,
em algumas situações pode ser desejável poder bloquear antes da etapa de
roteamento.Alé disso ainda existe a opção REDIRECT que tem função de
redirecionar pacotes para uma porta especifica da maquina onde está o firewall.
Sintaticamente para inserir uma regra nesta lista usa-se o comando.
iptables -t nat -A PREROUTING -i eth0 -p tcp -s [ip destinatário] -d
172.16.0.2 --dport [porta] -j DNAT --to [ip destino]:[porta]
POSTROUTING: utilizado quando há necessidade de se fazer alterações em
pacotes após o tratamento de roteamento. Nesta lista só é possível alterar
características de origem de um pacote, seja ip ou seja porta, tambem somente o "-o
interface" pode ser empregado pelo motivo do pacote está necessariamente saindo.
A ação (-j) que permite alterar parâmetros de origem é SNAT, sendo que no
POSTROUTING também é aceito a ação DROP e LOG. Sintaticamente para inserir
uma regra nesta lista usa-se o comando.
iptables -t nat -A POSTROUTING -p tcp -s [ip origem]-j SNAT –to [ip
origem]
OUTPUT : utilizado quando há necessidade de se fazer alterações em pacotes
após o tratamento de roteamento. Para evitar que pacotes gerados localmente fossem
condenados a não ter meios de alterar parâmetros de destino, o nat também atua no
gancho OUTPUT. As regras do nat OUTPUT tem o mesmo propósito e a mesma sintaxe
das do gancho PREROUTING, com a única diferença de operar pacotes originados por
processos locais. . Sintaticamente para inserir uma regra nesta lista usa-se o comando.
iptables -t nat -I OUTPUT -p tcp [ip origem]--dport [porta origem ] -j DNAT --
to : [porta destino ]
TABELA MANGLE
Implementa alterações especiais em pacotes em um nível mais complexo. A
tabela mangle pode alterar a prioridade de entrada e saída de um pacote baseado no type
of service (TOS) ao qual o pacote se destinava:
PREROUTING: modifica pacotes dando-lhes um tratamento especial antes que
os mesmos sejam roteados;
OUTPUT: altera os pacotes gerados localmente antes que os mesmos sejam
roteados.
As tabelas são as mesmas que compõe o Netfilter, Filter, NAT e Mangle. Exemplos
utilizando essas opções são: “iptables –t filter”; “iptables –t nat”; “iptables -t mangle”.
A tabela Filter é a padrão do Iptables, se adicionarmos uma regra sem a flag –t, o
mesmo aplicará situações contidas na tabela Filter a tal regra. Já no caso das tabelas
NAT e Mangle, é necessário especificar sempre.
Os comandos das chains são definidos por:
-A: adiciona um nova entrada ao fim da lista de regras;
–D: apaga uma regra específica da lista;
–L: exibe as regras existentes na lista;
–P: altera a política padrão das chains. Inicialmente, todas as chains estão setadas como ACCEPT, ou seja, aceitam todo e qualquer tipo de tráfego;
–F: este comando remove todas as entradas adicionadas a lista de regras sem
alterar a política padrão (-P);
–I: insere uma nova regra ao início da lista de regras, contrário do comando - A;
–R: substitui uma regra já adicionada por outra;
–N: este comando nos permite inserir ou criar uma nova chain na tabela específica.
–E: renomeia uma chain;
–X: apaga uma chain criada pelo administrador do Firewall.
As seguintes ações pode serem configuradas:
-p: especifica o protocolo aplicado a regra. Pode ser qualquer valor numérico
Especificado no arquivo /etc/protocol ou o próprio nome do protocolo (TCP,
UDP, ICMP, etc...);
–i: especifica a interface de entrada a ser utilizada. Como um Firewall possui mais de uma interface, esta regra acaba sendo muito importante para distinguir a
que interface de rede o filtro deve ser aplicado.
–o: especifica a interface de saída a ser utilizada e se aplica da mesma forma que a regra –i, porém somente as regras de OUTPUT e FORWARD se aplicam as
regras;
–s: especifica a origem do pacote ao qual a regra deve ser aplicada. A origem
pode ser um host ou uma rede;
–d: especifica o destino do pacote ao qual a regra deve ser aplicada. Sua utilização se dá da mesma maneira que a a opção –s;
!: significa exclusão e é utilizada quando se deseja aplicar um exceção a um regra. É utilizada juntamente com as opções –s, -d, -p. –i. –o;
–j: define o alvo (target) do pacote caso o mesmo se encaixe em uma regra;
--sport: porta de origem do pacote, com está opção é possível aplicar filtros com
base na porta de origem do pacote. Somente a aplicados os protocolos TCP ou
UDP;
--dport: porta de destino, especifica a porta de destino do pacote e funciona da forma similar a regra –sport.
Os seguintes alvos podem ser configurados:
ACCEPT: corresponde a aceitar, ou seja, permitir que a entrada e passagem do pacote em questão;
DROP: corresponde a descartar um pacote que é conduzido a este alvo (Target)
é descartado imediatamente. O Target DROP não informa ao dispositivo
emissor do pacote o que houve;
REJECT: corresponde a rejeitar um pacote conduzido para este alvo (Target) é automaticamente descartada, a diferença do REJECT para o DROP é que o
mesmo retorna uma mensagem de erro ao host emissor do pacote informando o
que houve;
LOG: cria uma entrada de log no arquivo /var/log/messages sobre a utilização dos demais alvos (Targets), justamente por isso deve ser utilizado antes dos
demais alvos.
RETURN: retorna o processamento do chain anterior sem processar o resto do chain atual;
QUEUE: encarrega um programa em nível de usuário de administrar o
processamento de fluxo atribuído ao mesmo;
SNAT: altera o endereço de origem das máquinas clientes antes dos pacotes serem roteados;
DNAT: altera o endereço de destino das máquinas clientes;
REDIRECT: realiza o redirecionamento de portas em conjunto com a opção --
toport;
TOS: prioriza a entrada e saída de pacotes baseados em seu tipo de serviço, informação que esta no header do IPV4. (BORSCHEID 2005)
Referencias
BORSCHEID Régis Maciel, (2005) “Prototipo para aplicação web para gerenciamento
de firewall Linux”
William R. Cheswick,Steven M. Bellovin,Aviel D. Rubin (2003), “FIREWALLS E
SEGURANÇA NA INTERNET: REPELINDO O HACKER ARDILOSO”, 2
edição
Schlemer Elgio,(2007)” Estrutura do Iptables”
http://www.vivaolinux.com.br/artigo/Estrutura-do-Iptables/ Acessado em 6 de
novembro de 2009
Schlemer Elgio,(2007) ”Estrutura do IPTables 2: a tabela nat”
http://www.vivaolinux.com.br/artigo/Estrutura-do-IPTables-2-a-tabela-
nat/.Acessado em 6 de novembro de 2009