7

Click here to load reader

Artigo Gerencia De Redes

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Artigo Gerencia De Redes

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

[email protected]

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”.

Page 2: Artigo Gerencia De Redes

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.

Page 3: Artigo Gerencia De Redes

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.

Page 4: Artigo Gerencia De Redes

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]

Page 5: Artigo Gerencia De Redes

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;

Page 6: Artigo Gerencia De Redes

–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;

Page 7: Artigo Gerencia De Redes

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”,

Portugues , 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