Post on 18-Jun-2015
description
Caio Roncaratti Fonseca
SEGURANÇA DE REDES COM USO DE UM APLICATIVO FIREWALL NATIVO DO SISTEMA LINUX
Monografia apresentada ao Curso de Ciência da Computação do Centro Universitário Barão de Mauá, como parte dos requisitos para obtenção do título de Bacharel em Ciência da Computação.
Orientador: Prof. MSc. André Luis dos Santos Domingues
Ribeirão Preto 2006
Agradeço:
À Deus e aos meus pais, por terem me formado a pessoa que sou; Aos professores Omar e Marco Antônio,
pela grande contribuição à metodologia de estudo e ao estímulo produtivo;
Ao professor André Luis, pela orientação, prestatividade e cooperação em
meu trabalho; À minha namorada Natália,
pelo incentivo, apoio e por estar ao meu lado quando precisei.
Dedico este trabalho aos que acreditam no aprendizado como fator elementar da evolução
humana e à todas as pessoas que de alguma forma contribuíram para a conclusão do mesmo.
"A mente que se abre a uma nova idéia jamais retornará
ao seu tamanho original."
Albert Einstein
RESUMO
O processo evolutivo alcançado pela tecnologia computacional trouxe a criação de um
conjunto de ferramentas e fatores que resultaram na estruturação da interconexão de dois ou
mais computadores, em um formato ao qual se atribui o nome “Rede de Computadores”.
Entretanto, em decorrência de uma série de fatores, sobretudo os provenientes de indivíduos
que fazem uso de seus computadores objetivando obter informações de forma ilícita, ou
simplesmente tendo comportamentos mal-intencionados contra outras pessoas e instituições,
um elemento se tornou motivo de preocupação constante em vários segmentos da sociedade,
principalmente o segmento comercial: a segurança de redes.
Neste trabalho serão abordadas as principais características que envolvem a segurança
da informação dentro do contexto das redes de computadores, possibilitada por meio do
mecanismo Firewall de controle de acesso nativo do sistema Linux, objetivando induzir a
uma reflexão sobre os motivos pelos quais esse problema deve ser destacado como sendo um
fator de grande preocupação no âmbito da informática.
Visando apresentar um dos principais métodos para a implementação da segurança,
associou-se o emprego de uma ferramenta Firewall voltada ao gerenciamento de redes,
buscando realizar o controle do fluxo de dados da mesma, garantindo assim um
funcionamento mais eficiente e seguro a ela.
Por último, idealizando-se um modelo estrutural de redes tomada como exemplo,
realizaram-se alguns experimentos a fim de se destacar o nível de relevância da ferramenta
em questão e determinar o grau de eficiência obtido.
Palavras-chave:
Linux, Firewall, Netfilter e Iptables.
ABSTRACT
The evolutive process reached by computer technology, brought the creation of a set
of tools and factors that resulted in the structuring of the interconnection of two or more
computers in a format so called “computer network”. However, due to a series of facts,
especially those related to people that made use of computers in order to get information
illegally and of mean behavior against the others, the community, especially the trade segment
of the society, has become deeply concerned about something new to her: the security of
networks.
The purpose of this work is to describe about the main factors involving the
information security inside the computer networks environment offered by the Firewall
resource of access control, native to the Linux system and the reasons why this problem
should be considered as of great concern by the information science field.
Aiming to present one of the main methods to the establishment of security the use of
a Firewall tool, was incorporated associated to networks management, for the controlling of
its data flow and yet guarantee a safer and more efficient functioning to it.
At last, conceiving a structural pattern of networks by example, a few tests were made
in order to emphasize the level of importance of the mentioned tool as well as to establish its
obtained efficiency degree.
Keywords:
Linux, Firewall, Netfilter and Iptables.
LISTA DE FIGURAS
Figura 1.1: Exemplo ilustrativo de uma rede MAN .................................................................13 Figura 2.1: Rede local de computadores de uma biblioteca .....................................................19 Figura 3.1: Ilustração de uma rede desprotegida, ligada à Internet através de um servidor
comum ..............................................................................................................................23 Figura 3.2: Modelo ilustrativo da filtragem de pacotes realizada por um Firewall .................24 Figura 3.3: Fluxo de dados na tabela filter do iptables ............................................................33 Figura 3.4: Modelo de fluxo de dados na tabela nat do iptables..............................................34 Figura 3.5: Exemplo de uma regra do iptables.........................................................................37 Figura 4.1: Ilustração do modelo de rede adotada neste estudo ...............................................42 Figura 4.2: Ilustração da topologia da rede testada ..................................................................51
Figura B 1: Camadas do modelo ISO/OSI ...............................................................................56
LISTA DE QUADROS
Quadro 3.1: Estrutura de tabelas no iptables............................................................................34 Quadro 3.2: Códigos de parâmetros do iptables e respectivas definições................................35 Quadro 3.3: Opções do iptables e seus significados ................................................................36 Quadro 4.1: Configurações da rede testada ..............................................................................51
Quadro A 1: Exemplo de uma tabela vinculada de registro de endereços no recurso NAT do netfilter relativa ao pós-roteamento..................................................................................55
Quadro A 2: Exemplo de uma tabela vinculada de registro de endereços no recurso NAT do netfilter relativa ao pré-roteamento ..................................................................................55
LISTA DE ABREVIATURAS E SIGLAS
Siglas
LAN = Local Area Network
MAN = Metropolitan Area Network
WAN = Wide Area Network
PC = Personal Computer
MP = Módulo processador
LP = Linha privativa
FTP = File Transfer Protocol
DNS = Domain Name Server
WWW = World Wide Web
DoS = Denial of Service
DDoS = Distributed Denial of Service
OSI = Open System Interconnect
CPU = Central Processing Unit
SSH = Secure Shell
TCP = Transmission Control Protocol
UDP = User Datagram Protocol
ICMP = Internet Control Message Protocol
IPV6 = Internet Protocol Version 6
NAT = Network Address Translation
IP = Internet Protocol
PPP = Point-to-Point Protocol
POP3 = Post Office Protocol
SMTP = Simple Mail Transfer Protocol
HTTPS = Hyper Text Transfer Protocol Secure
ADSL = Asymetric Digital Subscriber Line
ISO = International Organization for Standardization
POSIX = Portable Operating System Interface
TCP/IP = Transmission Control Protocol / Internet Protocol
SUMÁRIO
1 INTRODUÇÃO................................................................................................................11
1.1 Contexto ...................................................................................................................11 1.2 Motivação e relevância.............................................................................................13 1.3 Objetivo ....................................................................................................................14 1.4 Organização do trabalho...........................................................................................14
2 NECESSIDADE DE UMA INFRA-ESTRUTURA SEGURA .......................................16 2.1 Considerações iniciais ..............................................................................................16 2.2 Definição de segurança.............................................................................................16 2.3 Razões para se preocupar com a segurança da informação......................................17 2.4 Principais fatores de preocupação ............................................................................18 2.5 Má configuração do host alvo ..................................................................................20 2.6 Principais objetivos da segurança.............................................................................21 2.7 Considerações finais .................................................................................................22
3 FIREWALL: UM ESCUDO CONTRA ATAQUES.........................................................23 3.1 Considerações iniciais ..............................................................................................23 3.2 Definição e conceito .................................................................................................23 3.3 Funcionamento de um Firewall................................................................................25 3.4 O sistema operacional adotado.................................................................................26 3.5 Razões para utilização do Linux...............................................................................27 3.6 Firewall em nível de kernel: netfilter .......................................................................29 3.7 Iptables .....................................................................................................................30
3.7.1 Estrutura lógica do iptables ..............................................................................31 3.7.2 Opções do iptables ...........................................................................................35 3.7.3 Tradução de endereços de rede (NAT).............................................................37
3.8 Considerações finais .................................................................................................39 4 ESTUDO EXPERIMENTAL...........................................................................................41
4.1 Considerações iniciais ..............................................................................................41 4.2 Características da rede adotada.................................................................................41 4.3 Parâmetros e requisitos levantados...........................................................................42 4.4 Solução proposta ......................................................................................................43
4.4.1 Ativando módulos do iptables..........................................................................45 4.4.2 Preparando as tabelas e chains .........................................................................45 4.4.3 Construção das regras necessárias....................................................................46
4.5 Testes realizados.......................................................................................................50 4.6 Considerações finais .................................................................................................53
CONCLUSÕES........................................................................................................................54 APÊNDICE A ..........................................................................................................................55 APÊNDICE B...........................................................................................................................56 APÊNDICE C...........................................................................................................................58 APÊNDICE D ..........................................................................................................................60 APÊNDICE E...........................................................................................................................61 REFERÊNCIAS BIBLIOGRÁFICAS .....................................................................................62
11
1 INTRODUÇÃO
1.1 Contexto
Sabe-se que, no panorama ao qual atualmente o mundo se encontra, os recursos que a
informática nos propicia é conhecidamente indispensável. É praticamente impossível viver
hoje em dia sem as inúmeras ferramentas oferecidas pelos sistemas computacionais. A partir
dessa idéia, empresas, instituições públicas, escolas, universidades, etc, vêm se adequando a
esse novo conceito a fim de obter os vários benefícios que aqueles podem disponibilizar.
Há algumas décadas, a tecnologia da informática entrou num processo de rápida
evolução e logo passou a integrar-se no âmbito comercial. Nesse aspecto, os sistemas
computacionais passaram a auxiliar bastante nos mais variados processos envolvidos nesse
meio. Surgiu então a necessidade de compartilhar recursos, permitir comunicação e
concentrar informações comuns a todos os usuários estabelecidos em um mesmo ambiente.
Na busca de suprir essa necessidade, surgiram então as redes de computadores.
Segundo SOARES (1995), uma rede de computadores é a ligação de um conjunto de
módulos processadores (MPs)1 por meio de um sistema de comunicação que os possibilita
trocar informações e compartilhar recursos. Esse sistema de comunicação é permitido
basicamente por meio dos enlaces físicos (meios de transmissão) e de um conjunto de regras
de organização e controle da mesma (protocolos) que, em suma, representa uma linguagem de
comunicação destinada à interação de equipamentos em rede.
SOUSA (2002) mostra que a interligação de computadores em rede foi projetada de
modo a possibilitar o compartilhamento de recursos tais como: impressoras, discos rígidos
com alta capacidade de armazenamento e principalmente compartilhar arquivos.
Nas empresas, as estações de trabalho muitas vezes necessitam de recursos
relativamente onerosos. Estes representam, caso visem atender à cada computador, um gasto
muito elevado em seu orçamento. Seria inviável, por exemplo, ter uma impressora, um
scanner e um disco rígido extra em cada estação de trabalho de uma empresa.
Embora isso nos dias de hoje seja algo inadmissível de se considerar, era o caso do
que ocorria antes do surgimento dessa topologia de interconexão de computadores. De acordo
1 Módulos processadores referem-se a qualquer dispositivo capaz de se comunicar através do sistema de comunicação por troca de mensagens. Poderíamos citar, por exemplo, um microcomputador, uma máquina copiadora, um computador de grande porte, um terminal videotexto, etc (SOARES, 1995, pg. 10).
12
com SOUSA (2002) as empresas possuíam diversas bases de dados (arquivos de dados)
espalhados em duplicidade por todos os computadores pertencentes a ela. Esses dados nem
sempre permaneciam iguais pois um usuário poderia intervir nesses arquivos ou parte deles,
alterando-os, trazendo com isso a divergência entre as informações.
A solução para esse problema veio com esse novo conceito de rede, o que
proporcionou a centralização dos dados em um único computador chamado de servidor de
arquivos. Com isso, a base de dados se mantém íntegra e pode ser reproduzida ou
simplesmente consultada a qualquer momento por quaisquer usuários desta rede, o que
assegura um conteúdo único e que se mantém caso a cópia desses arquivos seja perdida por
um usuário desta rede.
As informações tratadas até o momento se associam à idéia de uma rede de pequeno
porte, a qual interliga computadores em uma empresa. Nessas condições e por suas
características, essa rede se denomina Local Area Network (LAN) ou seja, uma rede de área
local. Contudo, existem outros tipos de redes caracterizados pela sua disposição geográfica
como as MANs e WANs.
Metropolitan Area Network (MAN) é uma rede de área metropolitana, ou seja, duas ou
mais redes de computadores interligadas numa região urbana a altas velocidades, conforme
definido por SOUSA (2002). A Figura 1.1 ilustra a interconexão de redes em uma área
metropolitana. As redes locais LANs, compreendidas dentro de cada localidade (provedor de
serviços, empresa, distrito industrial e área comercial), interligam-se por meio de linha
dedicada (LP)1, no caso um link (last-mile / wireless) e por bridges chamadas Tsunami,
dentro de uma mesma área metropolitana.
Wide Area Network (WAN) é uma rede de área abrangente, que associa redes
geograficamente distribuídas em pontos distantes, normalmente ligadas através de linhas
telefônicas ou linhas dedicadas, comunicando-se através de modems, roteadores e gateways.
Um exemplo típico de uma WAN é a Internet ou o uso dela para a interconexão de redes em
locais remotos. Existem também redes WAN que interligam filiais de empresas em diferentes
regiões (interurbanas, interestaduais, internacionais, etc).
1 Linha Privativa ou LPCD (Linha Privativa de Comunicação de Dados) – linha dedicada exclusiva que interliga dois pontos sem haver comutação entre equipamentos de estações de telecomunicações públicas. Permite a conexão e troca de dados entre equipamentos em velocidades de até 2Mbps, com uma conexão permanente, integrada e segura. Adaptado de: KERBER (2006).
13
Figura 1.1: Exemplo ilustrativo de uma rede MAN
Fonte: PROXIM, 2005
1.2 Motivação e relevância
Milhares de empresas e instituições possuem uma infra-estrutura de rede interna e
necessitam de estar diariamente ligados à Internet. Nesse meio, as informações são
consideradas seu principal patrimônio. Com isso, a segurança dessas informações tornou-se
fator primordial para a sobrevivência dessas instituições (ANÔNIMO 2000, DIAS 2000).
Do ponto de vista da segurança, é comum que se considere uma proteção permanente e
que possibilite anular ao máximo as tentativas de acesso não autorizado ao nosso sistema.
Desse modo, é natural considerar que poderíamos possuir um “escudo protetor” para as redes.
Em face a essa situação, iniciou-se um processo de aprendizado relacionado à segurança de
redes, adotando-se o uso de uma ferramenta de segurança específica (o Firewall), nativo do
sistema operacional Linux. Este estudo se deve à busca pela compreensão da relevância desta
ferramenta dentro de uma estratégia de segurança de redes.
Vale ressaltar que, embora este estudo considere como foco principal apresentar uma
alternativa de solução ao problema de segurança de redes, o que pode ser notado é que o
objetivo na verdade concentra-se, associado ao foco sugerido pelo tema do trabalho, em se
combater o problema da falta de segurança do principal protocolo de comunicação utilizado
14
nas mesmas: o protocolo TCP/IP. Isso se deve ao fato desse protocolo não ter sido
desenvolvido considerando-se uma real preocupação relacionada à segurança.
Apesar disso, o objetivo do trabalho se moldará em cima do contexto no qual o
protocolo TCP/IP é amplamente utilizado: o das redes de computadores.
1.3 Objetivo
Este trabalho tem como principal objetivo conduzir a uma análise sobre o uso de
técnicas de segurança baseadas em Firewall dentro do sistema operacional Linux.
Apresentam-se alguns conceitos gerais de segurança, como por exemplo, as políticas de
segurança, as quais levam à conscientização dos fatores que devem ser levados em
consideração para se obter um bom resultado na busca pela segurança de uma rede.
Além disso, será apresentado como é possível configurar um Firewall de modo a
proteger toda uma rede, possibilitando além da segurança das estações de trabalho a
disponibilização de acesso à Internet para ambas. Complementarmente, como é o caso do
contexto que servirá de base de estudo neste trabalho, com uso de determinadas regras é
possível a publicação de quaisquer serviços na Internet, como: Web1, e-mail, PHP, FTP,
DNS, etc., a partir de um ou mais servidores que fazem parte de uma rede local.
1.4 Organização do trabalho
Este trabalho se divide em etapas que constituem na fundamentação de um estudo
baseado na descrição do contexto, delimitação do problema e na solução proposta pelo objeto
de estudo, em sua demonstração prática e nas considerações finais sobre o tema discutido.
O tema, como um todo, abordará esses itens relacionados e organizados da seguinte
forma:
• Contexto – no Capítulo 1, foi abordada a descrição do panorama em que a
questão principal está relacionada;
1 De acordo com GUIZZO (1999) Web é um sistema distribuído de informação. Esse termo é conhecido também pela sigla WWW (World Wide Web) que quer dizer “Teia de alcance mundial”. Na acepção da palavra, é uma aplicação da Internet que combina hipertexto com multimídia. O hipertexto pode interligar milhares de páginas Web por meio de links.
15
• Descrição do problema – no Capítulo 2, serão definidas as características nas
quais o estudo se baseará para a obtenção de um juízo levando em conta os
fatores determinantes aos quais ele se compreende;
• Características do objeto de estudo – no Capítulo 3, será apresentado o que é,
como se utiliza, quais as possibilidades, os itens de maior relevância, entre
outros, que constituem na implementação da segurança de uma rede local
através do aplicativo Firewall;
• Solução proposta e demonstração prática – o Capítulo 4 compreenderá a
documentação de toda fase de estudo experimental do objeto analisado na
forma prática;
• Conclusões – serão descritos todos os fatores relacionados ao problema
abordado, mostrando como será estabelecido o vínculo dele com a parte prática
(fase de estudo experimental) do trabalho, onde serão apresentadas possíveis
soluções para tal problema.
16
2 NECESSIDADE DE UMA INFRA-ESTRUTURA SEGURA
2.1 Considerações iniciais
A seguir, serão descritos quais os fatores que levam à conscientização do quão
importante e necessário é a implementação de uma infra-estrutura de redes que garanta um
bom nível de segurança das informações.
Constarão dentro deste capítulo, as características que traduzem o significado da
preocupação com a segurança dentro de um modelo de redes de computadores, tomando
como foco principal sua aplicação em ambientes corporativos, pois é onde o fator segurança é
mais preocupante devido ao grau de sensibilidade e importância das informações envolvidas
em tal contexto.
2.2 Definição de segurança
Nos dias de hoje, a questão da segurança1 é algo tão imprescindível que não se pode
sequer pensar em relevá-la. Cada vez mais, as empresas buscam fazer o possível para se
adequarem à realidade existente no mundo da informática e procuram buscar bons
administradores para projetarem e administrarem suas redes de forma a não permitirem um
acesso indevido às mesmas. Contudo, nada do que se relaciona à segurança pode ser definido
como algo que sempre valerá sobre quaisquer circunstâncias. Na verdade, esse conceito se
traduz em minimizar a vulnerabilidade de bens (qualquer coisa de valor) e recursos.
Vulnerabilidade é qualquer falha ou fraqueza que pode ser explorada para se ter acesso a um
sistema ou os dados que ele contém, segundo definido por SOARES (1995).
1 “s.f. (1391 cf. FichIVPM) 1 ação ou efeito de tornar seguro; 2 atitude de confiança nos próprios recursos; 3 estado em que a satisfação de necessidades e desejos se encontra garantida; 4 estado, qualidade ou condição de uma pessoa ou coisa que está livre de perigos, de incertezas, assegurada de danos e riscos eventuais, afastada de todo mal; 5 situação em que não há nada a temer” (HOUAISS, 2001).
17
2.3 Razões para se preocupar com a segurança da informação
A partir das vulnerabilidades e fraquezas é que os invasores de sistema se baseiam
para poder atacar usuários desprotegidos. Segundo C.E.R.T. (2005), esses ataques geralmente
visam:
• Acesso a informações sigilosas: geralmente o atacante realiza o ataque visando
obter informações importantes de um determinado alvo. Ex: documentos e
planilhas importantes, registro de banco de dados confidenciais, senhas de clientes
de banco etc;
• Uso do PC alvo como um atalho para invadir uma outra vítima: esse tipo de
ataque considera o PC da vítima como uma porta de passagem para se invadir
outra vítima ou, na maioria dos casos, um servidor de grande porte, preservando o
anonimato do invasor (seria como se o PC alvo fosse efetivamente o autor do
ataque ao servidor pois a conexão maliciosa será realizada a partir dele);
• Negação de serviço (DoS): é um tipo de ataque em que o atacante se utiliza de
conexões múltiplas e simultâneas para gerar uma sobrecarga em sua rede de forma
a indisponibilizá-la ao(s) seu(s) usuário(s);
• Negação de serviço distribuída (DDoS): constitui em um tipo de ataque DoS
ampliado, no qual um cracker utiliza vários computadores de vítimas “escravos”
para atacar uma determinada máquina. Atualmente o ambiente é ainda mais
atrativo pois com o aumento dos usuários de banda larga (aumento na velocidade
de conexão), permite-se que haja um ataque muito mais intenso não só devido à
quantidade de computadores usados no processo; e
• Danificar dados: às vezes, os crackers utilizam os ataques para destruir, apagar ou
simplesmente alterar dados e informações de uma determinada vítima. O mais
assustador é que muitas vezes, algumas empresas contratam esses crackers para
prejudicarem outras empresas concorrentes. Isso também ocorre em relação ao
primeiro item na forma de roubo de informações.
Mesmo com todas as medidas favorecendo a criação de uma barreira protetora
intransponível entre a rede externa e a intranet, nenhum administrador de redes, apesar de
deter o mais alto nível de conhecimento no assunto, conseguirá fazê-la de forma plena. O que
se deve privar de pensar é sobre idéia de que é possível se alcançar uma segurança sem a
18
existência de nenhuma brecha. Algumas informações importantes a serem consideradas são
que:
• Não existe sistema de segurança totalmente seguro e sem falhas;
• Não existe sistema operacional totalmente seguro e sem vulnerabilidades;
• Não existem ferramentas de segurança das quais um hacker nunca conseguirá
detectar falhas para superá-las;
• Não existe sequer um servidor inviolável em nenhum lugar do mundo;
• Não existe nada que não pode ser vencido por um hacker experiente e
determinado; e
• Não existe segurança plena ou definitiva.
Embora todos esses fatores sejam preocupantes, não se deve fixar somente nessas
probabilidades e deixar que isso cause pânico. As ferramentas de segurança nos sistemas de
informação, sobretudo as que serão tratadas neste trabalho, cumprem muito bem o seu papel
no objetivo de “minimizar” os efeitos nocivos da interconexão de computadores. Isso porque
é totalmente possível que aconteçam ataques a uma rede de computadores ligados à Internet,
mas eles não podem ser evitados completamente. Esse principal fator é o que o estudo
realizado neste trabalho se propõe a abordar. Essa idéia que se deve considerar para
prosseguir no objetivo de se implementar a segurança de uma rede local.
2.4 Principais fatores de preocupação
Conforme descrito por DIAS (2000), inicialmente é preciso relacionar todos os
recursos que podem estar suscetíveis a algum risco. Devemos considerar o que é necessário
proteger, os recursos mais importantes e de que forma as informações estão armazenadas
(disco rígido, disquete, memória). Em um sistema computacional, os tipos de recursos mais
comuns são:
• Hardware – processadores, unidades de disco, placas, teclados, terminais,
computadores pessoais, estações de trabalho, impressoras, servidores,
roteadores, linhas de comunicação;
19
• Software – aplicativos utilitários, programas de diagnóstico, sistemas
operacionais, programas de comunicação, aplicativos;
• Dados – em processamento, armazenados on-line, em trânsito nos dispositivos
de linhas de comunicação, backups, logs de auditoria, bases de dados;
• Pessoas – usuários e funcionários que estarão habilitados a operarem os
sistemas;
• Documentação – sobre sistemas, hardware, programas, procedimentos
administrativos, fluxo de dados, modelagem de dados; e
• Suprimentos – papéis, formulários, fitas, disquetes, CD-ROMs.
Figura 2.1: Rede local de computadores de uma biblioteca
Fonte: ORANGE, 2006
A Figura 2.1 corresponde a uma rede de computadores instalada em uma biblioteca.
Nela, pode-se perceber a existência de 9 computadores ligados em rede, utilizados para
consulta do acervo de obras no banco de dados local e também para pesquisas online. Esse
tipo de utilização de redes é muito comum hoje em dia, já que o registro dos títulos que a
biblioteca possui são armazenados em banco de dados, permitindo uma ágil e eficaz
localização dos mesmos. Porém, esse ambiente é ideal para a ação de invasores de sistema. As
invasões podem ocorrer desde a partir de uma estação da própria rede, como de fora dela, pela
Internet.
20
Neste trabalho, não será considerada a hipótese de um indivíduo entrar numa empresa
e, apontando uma arma para a cabeça de um dos responsáveis, obrigar que ele passe todas as
informações disponíveis em seu sistema. Também é impossível assegurar que nenhum dos
funcionários da empresa sofram algum tipo de engenharia social1. Além disso, caso não se
tenha uma boa proteção contra vírus, de nada adianta tentar impedir ataques externos ou
internos na rede sendo que não houve antes uma preocupação vital para a garantia da
disponibilidade de uma máquina e seus dados. Trata-se do antivírus, uma ferramenta também
indispensável em relação à segurança no âmbito computacional. Mesmo assim, é
extremamente importante que se tenha uma preocupação com a conduta e disciplina dos
usuários da rede que estará sendo equipada com os atributos de segurança.
2.5 Má configuração do host alvo
De acordo com ANÔNIMO (2000), muitas brechas de segurança são originadas por
meio da má configuração do alvo. Isso pode ocorrer a partir de um simples serviço de rede,
iniciado por um software que nem sempre o utiliza a todo o momento ou até mesmo por meio
de um Firewall mal configurado. Além disso, podem ocorrer falhas no sistema operacional ou
em aplicativos que resultem na disponibilização de acesso indevido ao host. Os riscos
resultantes vão permanecer até que se desative o serviço de rede iniciado pelo software,
complementem-se as regras do Firewall e corrijam-se as falhas do sistema e dos softwares
vulneráveis suscetíveis a ataques.
Um bom exemplo de brecha de segurança são os serviços de impressão
compartilhados e de compartilhamento de arquivos. Esses podem ser ativados em uma
instalação de atualização ou como padrão em um sistema operacional, deixando o mesmo
inseguro. É necessário saber identificar quando estão ativos e desativá-los.
Muitos usuários se julgam muito mais experientes do que realmente são. Isso
certamente pode levá-lo a imaginar que, por ter um conhecimento em algumas ferramentas
avançadas ou em alguns comandos do sistema Linux por exemplo, ele não está sujeito a ser
subjugado pelas técnicas de um invasor. E não há dúvidas de que um invasor quase sempre
tem mais conhecimento que qualquer usuário por mais experiente que ele seja.
1 Mecanismo no qual um indivíduo mal-intencionado faz uso seguindo técnicas de persuasão e manipulação com apelos muitas vezes emocionais para conseguir de uma outra pessoa as informações das quais deseja.
21
O fato é que quando um indivíduo tenta se fazer passar por um usuário experiente, ele
na verdade está mais sujeito a ataques do que a maioria dos usuários comuns, pois, com a
utilização desse seu restrito “conhecimento”, ele naturalmente poderá habilitar serviços
remotos que poderão ser potenciais alvos de ataques.
2.6 Principais objetivos da segurança
Segundo DIAS (2000), a expectativa de todo usuário, em relação à segurança de
dados, é que as informações das quais se necessita e que estão armazenadas em algum
dispositivo computacional, esteja sempre nele disponível e que nunca sejam acessadas por
qualquer pessoa não autorizada. Mesmo que o conceito de segurança num sistema
computacional seja comumente relacionado à sua garantia de funcionamento de acordo com o
que lhe é solicitado pelo usuário, o usuário espera que suas informações sempre estejam no
local e no momento que ele estabelecer, que sejam confiáveis, corretas e mantidas longe do
acesso de pessoas não autorizadas. Essas expectativas dos usuários relacionadas à segurança
de suas informações podem ser traduzidas em objetivos de segurança.
Como existem várias formas de implementação de segurança em informática, os
objetivos de segurança variam de acordo com o tipo de ambiente computacional e a natureza
do sistema em relação à sua área de atuação (administrativo, financeiro, militar,
governamental, etc.). Dentre esse tipo de panorama é necessário analisar a natureza da
aplicação, dos riscos e impactos prováveis para se identificar os objetivos mais prioritários
para a organização. Todos os envolvidos na implementação da segurança de uma empresa,
desde um usuário comum até os profissionais de informática, devem se preocupar com os
seguintes objetivos de segurança:
Confidencialidade ou privacidade – proteger as informações contra o acesso de
pessoas não autorizadas pelo dono da informação. O termo se define como a propriedade de
limitar o acesso à informação somente às entidades legítimas, às quais tiveram concessão de
acesso pelo proprietário da informação.
Integridade – garantir que os dados nunca sejam alterados ou apagados em nenhuma
hipótese. Esse conceito se exprime na propriedade de se manter todas as características
originais da informação desde o momento que ela foi criada, incluindo controle de mudanças
e garantia do seu ciclo de vida (nascimento, manutenção e destruição). Em se tratando de
22
comunicação de dados, o termo traduz-se no controle de alterações (concedidas ou acidentais)
dos dados transmitidos, seguido de sua subseqüente correção.
Disponibilidade – caracteriza-se pela necessidade de proteger os serviços de
informática, visando evitar que se tornem indisponíveis por conseqüência de uma intervenção
indevida. Muitos ataques visam indisponibilizar serviços do sistema operacional alvo. Esses
ataques geralmente são gerados a partir de uma sobrecarga de solicitação de conexão, sendo
este, um exemplo de ataque DoS (DIAS, 2000; CYCLADES, 2006).
2.7 Considerações finais
A preocupação com a segurança em redes de computadores é algo que não deve só ser
levada em consideração como um fator de potencial comprometimento da integridade dos
dados informatizados de uma empresa. Ela deve ser julgada como um problema cujas
conseqüências resultam muito provavelmente num prejuízo financeiro que, em alguns casos,
podem ter proporções catastróficas.
Como visto, existem várias formas das quais um invasor pode utilizar para obter
sucesso em seus ataques. Cada vez mais, surgem oportunidades para isso, seja por meio de
falhas e vulnerabilidades no sistema ou em aplicativos, seja também pela infinidade de
técnicas criadas por pessoas que se dedicam a este objetivo e que estão sem dúvida em
constante aperfeiçoamento.
Para uma empresa que busca se adequar a uma situação onde esses problemas podem
ser minimizados em sua quase totalidade, há entretanto diversos tipos de ferramentas
destinadas à sua prevenção e reparação. Percebe-se que a atitude mais inteligente a ser
adotada é sem dúvida, a atitude preventiva.
Assim, o estudo realizado neste trabalho traz bem definido o objetivo de fazer uma
análise da ferramenta de prevenção de incidentes a qual motivou a intitulação do mesmo.
23
3 FIREWALL: UM ESCUDO CONTRA ATAQUES
3.1 Considerações iniciais
O principal mecanismo de combate à intrusão nos sistemas de computadores é o
Firewall. Sua associação com a segurança sempre se fez prevalecer entre diversos segmentos
de sua aplicação. É comum que se encontre denominações relacionando-o como sendo o mais
importante item no que diz respeito à segurança de redes.
Dentro deste capítulo, serão abordados os diversos fatores que se destinam a prover o
favorecimento da compreensão do que se refere ao conceito, princípio de funcionamento e
aplicação dessa ferramenta. Além disso, entrarão em questão os itens que determinam o tema
do presente trabalho: o sistema operacional Linux e seu aplicativo Firewall nativo.
3.2 Definição e conceito
Seguindo sua definição literal, Firewall quer dizer “parede corta-fogo”. Essa analogia
se explica por ele atuar literalmente como uma barreira contra incêndio e sua função na rede é
a de impedir acessos externos originados por invasores.
Na Figura 3.1 é apresentado o modelo estrutural de uma rede de dados ligada à
Internet por meio de um servidor central e um roteador. Nela existem estações de trabalho que
se encontram desprovidas de segurança. Possíveis ataques podem causar sérios problemas às
informações contidas nos computadores que a compõem.
Figura 3.1: Ilustração de uma rede desprotegida, ligada à Internet através de um servidor comum
24
Firewall é um dispositivo de rede cuja função é a de administrar o tráfego entre redes
distintas e impedir a transmissão de dados nocivos ou não autorizados de uma rede a outra.
Ele é utilizado para impedir o tráfego não autorizado de um domínio de rede a outro.
Seu uso está relacionado com o tamanho da rede, o grau de complexidade das regras
que restringem o fluxo de entrada e saída de dados e o nível de segurança desejado. Além da
aplicação na forma de software, a qual se baseia estritamente este trabalho, um Firewall
apresenta-se também na forma de hardware1. Pode-se contudo, utilizar ambos os tipos para se
aumentar o nível de segurança entre as redes que ele intermedeia.
Na Figura 3.2 é representado, de forma ilustrativa, como é a estrutura de uma rede
protegida por um Firewall, fazendo uma analogia da mesma perante o seu significado literal
(parede corta-fogo). Nela, a máquina Firewall está ligada com a Internet por meio de um link
dedicado e à rede local da qual está contida. Os pacotes que chegam ao Firewall com destino
à Internet são roteados aos respectivos destinos por ele e, os que chegam da Internet com
destino às estações de rede, são filtrados pelo Firewall e repassados às quais correspondem.
A implantação de um mecanismo para controle de tráfego e acesso baseados num
aplicativo Firewall, deve ser projetada por meio de um procedimento cuidadoso. Deve-se ter a
preocupação de unir todas as informações possíveis relacionadas com a necessidade que a
rede demanda. Isso porque, a complexidade dos fatores que envolvem a necessidade da rede
traz um conseqüente aumento da dificuldade de implementação das regras do Firewall.
Figura 3.2: Modelo ilustrativo da filtragem de pacotes realizada por um Firewall
Conforme descrito por SOARES (1995), dentro do contexto de rede, é comum que
uma máquina execute inúmeras tarefas, de diferentes aplicações e de variados portes. Ela, por
sua vez, pode estar suscetível a ataques externos caso alguma dessas aplicações possuam
1 Hoje em dia existem roteadores, modems ADSL, etc. que cumprem bem as funções de um bom dispositivo Firewall, que até então se limitava restritamente a essa função. É o caso do Roteador / Firewall (DI-804HV) e do modem ADSL / roteador / Firewall TW100-BRM504.
25
falhas. Todavia, o mecanismo de defesa de um Firewall garante que estações de rede sejam
isoladas do ambiente externo da Internet impedindo assim que a vulnerabilidade de
determinada aplicação desta máquina fosse explorada por um invasor pelo fato de ela não
estar acessível via Internet.
As propriedades de um Firewall, conforme relacionadas por CHESWICK apud
SOARES (1994), se caracterizam da seguinte forma:
• Todo o tráfego que sai ou entra em uma rede, é analisado pelo Firewall;
• Somente o tráfego autorizado por sua política de segurança pode atravessar o
Firewall; e
• O Firewall deve ser imune a violações.
Dentre as particularidades da implementação de segurança baseada em Firewall está a
importância de se usar somente o que se restringe à finalidade da segurança. Por isso, um
administrador de rede deve ter a preocupação de limitar os recursos do sistema operacional da
máquina Firewall a fim de que ela possa atuar unicamente conforme o objetivo para o qual
ela foi projetada. Além disso, um Firewall deve possuir regras tais que sejam limitadas a
somente o estritamente necessário para a proteção da rede a qual estiver designado.
3.3 Funcionamento de um Firewall
O princípio de funcionamento de um Firewall foi abordado de forma sucinta no início
deste capítulo. Entretanto, é importante saber mais detalhadamente como ele atua.
Primeiramente, deve-se deixar claro que o tipo de Firewall estudado neste trabalho se baseia
exclusivamente na filtragem de pacotes. Existem outros tipos que são também aplicativos
(softwares) mas que atuam na camada 7 (aplicação) do modelo OSI1, como é o caso dos
gateways de circuitos e gateways de aplicação.
Um Firewall é implementado seguindo os parâmetros dos quais uma organização tem
necessidade. Esses parâmetros são implementados em um Firewall e recebem o nome de
regras. As regras são configuradas de acordo com os acessos que o Firewall deve bloquear,
bem como os que ele deve liberar.
1 Para mais detalhes, consulte o modelo ISO/OSI, que está disponível no Apêndice B. O nível 4 refere-se à camada de transporte do modelo OSI que possui 7 níveis. Um Firewall se restringe tão somente a análise do cabeçalho dos pacotes, logo, não tem a capacidade de ler o conteúdo dos mesmos a partir do tráfego de dados o qual ele gerencia. Por sua vez, não consegue detectar a presença de um código malicioso por meio da análise desses pacotes, estando ou não agrupados.
26
Utilizando esse conceito, um Firewall pode então analisar as informações do
cabeçalho de um pacote que esteja entrando ou saindo da rede, consultar as regras
predefinidas pelo administrador da rede e executar a ação pertinente a qual este pacote se
enquadra. Podemos criar inúmeros tipos de regras, conforme será tratado mais adiante, a
serem consultadas pelo Firewall na filtragem de pacotes. Por sua vez, as ações que serão
executadas por ele são: Aceitar, Descartar ou Rejeitar o pacote. Para executar quaisquer
dessas ações predefinidas, primeiramente ele irá tomar como referência informações contidas
no cabeçalho de qualquer pacote que passa por ele.
Vejamos então alguns dos tipos de informações que o Firewall pode se basear para
realizar a filtragem dos pacotes:
• Endereço de origem / destino;
• Máscara de sub-rede de origem / destino;
• Porta de origem / destino;
• Tipo de protocolo;
• Interface de entrada / saída;
• Status da conexão;
• Identificação do pacote;
• Entre outras.
A proteção por meio de filtros, como descreve ANÔNIMO (2000), não se restringe
somente à análise dos pacotes vindos de fora da rede. Um Firewall pode ser e na maioria dos
casos é configurado seguindo diretivas de segurança de uma organização que pode restringir
alguns tipos de acesso a determinadas estações ou sub-redes. Ela pode estabelecer por
exemplo que uma estação “X” não deva acessar determinados sites na Internet. Pode-se
também definir que um departamento, o qual faz parte de uma sub-rede interna específica,
não terá acesso à Internet ou ao site que se encontra num servidor Web da organização.
Portanto, os Firewalls são para as redes o que os esquemas de privilégio de usuário são para
os sistemas operacionais.
3.4 O sistema operacional adotado
Para se implementar um mecanismo de defesa baseado em um Firewall, é necessário
que se faça a escolha do sistema operacional da máquina que rodará tal aplicativo. Existem
atualmente inúmeros sistemas operacionais que poderiam manter um aplicativo Firewall para
27
proteger uma rede. São eles: Windows, AIX, Netware, Irix, Solaris, Unix, Linux, OS/2, entre
outros. Contudo, o sistema operacional escolhido para realizar um estudo voltado à
ferramenta Firewall de segurança, foi o sistema Linux. Portanto, a abordagem deste trabalho
ficará restrita especificamente à análise e discussão baseadas neste sistema operacional.
3.5 Razões para utilização do Linux
Deve-se salientar que Linux por si só não é um sistema operacional completo.
Tecnicamente, conforme PIRES (2005) e MORIMOTO (2004), Linux é o nome da estrutura
kernel1, que detém todas as diretrizes de interface e administração dos dispositivos de
sistema. As distribuições Linux que realmente constituem num sistema operacional completo
são denominadas GNU/Linux2. O GNU/Linux é a união de aplicativos constituídos sob a
filosofia de software livre e gratuito GNU da Free Software Fundation juntamente com o
núcleo do sistema operacional (kernel) Linux, criado em 1991 por Linus Torvalds, aluno de
ciência da computação da Universidade de Helsinki na Finlândia e que fora baseado no Unix.
O kernel tem a função de controlar todo o hardware do computador, controlar processos
executados pela CPU, gerenciar memória, etc.
Na verdade, os sistemas operacionais derivados do Unix têm todos os requisitos para
trabalharem com um controle de fluxo de dados através do Firewall nativo do sistema. No
caso do GNU/Linux, vários fatores o tornaram um dos sistemas operacionais mais utilizados
em servidores de diversos tipos de serviços voltados à rede e à Internet no mundo todo.
Algumas das vantagens do sistema GNU/Linux são:
• Código fonte aberto – o sistema GNU/Linux foi desenvolvido em contraposição
ao software proprietário. Seu intuito era que ele se tornasse um sistema isento de
apropriação privada e que possibilitasse a produção de conhecimento científico e
tecnológico aos seus usuários. Isso faz com que a idéia principal de ele ter sido
desenvolvido especialmente para ser usado por desenvolvedores de software
permite que ele fosse melhorado mediante a liberdade de criação e disseminação
1 No sentido literal, a tradução da palavra kernel significa “cerne”, ou seja, a parte mais sólida e essencial de um sistema operacional. A denominação mais usual é a que relaciona o kernel como sendo o “núcleo de um sistema operacional”. Ele é responsável pela interação imediata com o hardware, gerenciando todos os recursos do sistema. 2 Segundo SILVA (2005), Sistema operacional de arquitetura aberta – suas especificações (código fonte) estão disponíveis publicamente para que possam ser modificadas ou melhoradas por desenvolvedores ou empresas, solidários ao projeto. Por ser baseado no sistema Unix e seguir o padrão POSIX, possui compatibilidade com suas variantes (UNIX, FreeBSD, OpenBSD, HPUX, Solaris, entre outros).
28
solidária de milhares de pessoas, dentre elas colaboradores pessoais,
universidades, empresas de software e distribuidores do mundo todo;
• Linguagem simples e poderosa – a linguagem de programação utilizada
basicamente em todo o sistema é a linguagem C, uma linguagem prática,
bastante rica, compacta, portável para diversos sistemas operacionais,
plataformas e, principalmente, bastante difundida;
• Voltado à Internet – possui inúmeras ferramentas nativas que permitem a
conexão de seus usuários à Internet, além de prover serviços próprios como
servidores Web, e-mail, FTP, DNS, SSH, entre outros. Isso motiva uma detecção
e correção de falhas muito rápida, mútua e constante;
• Controle de acesso – o controle de permissões de acesso no sistema GNU/Linux
é classificado em usuários e grupos, o que garante que o acesso à determinados
processos, arquivos e diretórios sejam restringidos pelo administrador quando
necessário e à usuários ou grupos específicos;
• Atualizações rápidas e periódicas – pessoas do mundo todo contribuem para o
aperfeiçoamento desse sistema. A todo o momento podem ser disponibilizadas
atualizações de segurança, correção de falhas e melhorias em geral por qualquer
pessoa que tenha conhecimento em programação, estando ela em qualquer parte
do mundo;
• Qualidade – embora seja baseado em um conceito de livre distribuição e não
seja mantido com o capital de sua comercialização, o GNU/Linux possui
inúmeros recursos de alto grau de qualidade como os servidores HTTP (Apache)
e de e-mail (Qmail), por exemplo;
• Estabilidade e robustez – grande parte dos servidores Web de empresas famosas
do mundo todo, são mantidos pelo sistema GNU/Linux. Isso se deve em grande
parte por ele ser muito estável. Um servidor rodando num sistema Linux pode
funcionar durante anos sem nunca precisar ser reinicializado;
• Segurança – a restrição de acesso provida pelos atributos de permissão de acesso
a arquivos, diretórios e processos, é um ponto muito forte a favor da segurança
no GNU/Linux;
• Prompt de comando completo – os recursos do seu prompt de comando são
bastante ricos. Possui uma gama de ferramentas de auxílio, gerenciamento do
sistema, recursos e facilidades que tornam seu manuseio muito prático e fácil;
29
• Multiprocesso – divide as cargas de trabalho de um aplicativo em processos
individuais chamados threads; e
• Sistema gratuito – além de todos esses fatores, o GNU/Linux como dito
anteriormente é um sistema que pode ser adquirido de forma gratuita através de
servidores públicos via Internet.
Logicamente, no GNU/Linux também existem falhas pois nenhum sistema operacional
é perfeito. Muitas dessas falhas são realmente bastante sérias. Tais falhas, porém, são
identificadas em pouquíssimo tempo e suas correções (patches) saem em questão de dias ou
até mesmo horas. Apesar disso, a quantidade de falhas críticas que são identificadas neste
sistema é tradicionalmente inferior, se comparadas as dos demais sistemas, principalmente no
quesito segurança. Um dos motivos principais pelos quais o mesmo apresenta um número
bastante reduzido de falhas críticas, se deve ao sistema de testes adotado pelos
desenvolvedores do sistema antes da publicação das versões finais. Ocorre que, antes de ser
publicada a versão definitiva de uma distribuição GNU/Linux, são disponibilizadas versões de
teste para que sejam detectados possíveis problemas pelos usuários, colaboradores e empresas
do mundo todo. Assim, há sempre uma intensa bateria de testes realizadas pelos
desenvolvedores do sistema, diretos ou indiretos, a fim de que sejam detectadas falhas.
Sobre estes aspectos é que se propôs a utilização da plataforma Linux para servir como
base do estudo sobre segurança de redes por meio do aplicativo Firewall nativo da mesma.
Nas seções seguintes, serão mostrados conceitos mais detalhados sobre a ferramenta Firewall
nativa da plataforma Linux.
3.6 Firewall em nível de kernel: netfilter
No Linux, conforme define HATCH, LEE & KURTZ (2003), a filtragem de pacotes
consiste em um framework contido no kernel. É ele quem realiza no Linux as funções de
filtragem de pacotes seguindo as regras (filtros) configuradas pelo administrador de rede.
Essas regras são atribuídas a ele por meio de um programa que realiza a interface com o
módulo netfilter. Dependendo da versão do kernel podemos ter diferentes versões desse
programa. No caso das versões anteriores a 2.0.x, o programa utilizado para configurar as
regras do netfilter era o ipfwadm. Nas versões 2.2.x, usava-se o ipchains que veio a substituir
o ipfwadm por ele ser muito complicado de se utilizar. A partir da versão 2.4.x, houve uma
30
reformulação nos comandos do ipchains, dando origem ao iptables que será a base deste
trabalho.
3.7 Iptables
O iptables é o módulo responsável pela interface de configuração das regras do
netfilter. Com ele podem-se editar as tabelas de filtragem de pacotes nativas do kernel. Essa
filtragem, como já dito anteriormente, ocorre na comparação entre os dados do cabeçalho
(header) do pacote analisado e as regras predefinidas.
Conforme já mencionado na Seção 3.1 deste capítulo, o iptables trata os pacotes
seguindo parâmetros das regras configuradas e pode executar três diferentes tipos de ação:
Aceitar (ACCEPT), Descartar (DROP) ou Rejeitar (REJECT). Quando em uma regra se
especifica que a ação será ACCEPT, o netfilter aceitará os pacotes que estiverem em
conveniência a ela. Caso a ação especificada for DROP, o netfilter irá descartar todos os
pacotes de dados que se encaixarem nessa regra. Caso seja especificado a ação REJECT, o
netfilter rejeitará todos os pacotes pertinentes à regra e enviará uma mensagem explicando o
motivo da não aceitação dos mesmos. Existem outras ações como REDIRECT, MIRROR
(experimental), LOG que não serão tratadas no trabalho mas precisam ser citadas. As ações
DNAT, SNAT e MASQUERADE são específicas da tabela nat e seus respectivos
significados serão relacionados mais adiante.
Existem várias características que definem o iptables. São elas:
• Suporta os protocolos TCP / UDP / ICMP;
• Podem ser especificadas portas de endereço de origem e destino;
• Rápido, estável e seguro;
• Suporte a módulos externos para aumentar suas funcionalidades;
• Possui mecanismos internos que bloqueiam pacotes do tipo spoof ou
fragmentados;
• Permite que se adicione um número ilimitado de regras por chain;
• Suporte completo a roteamento de pacotes;
• Suporta priorização de tráfego por tipos determinados de pacotes;
• Permite enviar ao log do sistema mensagens personalizadas sobre o tráfego;
• Permite redirecionamento de portas;
31
• Suporte aos tipos de NAT1: MASQUERADE, SNAT e DNAT;
• Proteção contra DoS, ping flood e sys flood; e
• Suporta endereços IPv6 através do comando ip6tables.
3.7.1 Estrutura lógica do iptables
É importante abrir uma ressalva sobre a dimensão a qual este trabalho abrange para
que não gere o entendimento de que as opções e funções do iptables que serão relacionadas
aqui, são as únicas que ele possui. Não é o propósito deste trabalho explicar todas as
possibilidades e todas as funções do iptables. Mesmo porquê, há várias outras opções de
configuração que podem ser construídas a fim de se obter uma solução conveniente a outros
tipos diferentes de problema. Sendo assim, caso haja interesse em obter informações sobre
outras possíveis funcionalidades do iptables que não estão relacionadas neste trabalho,
sugere-se a leitura dos artigos eletrônicos contidos nas referências bibliográficas.
A estrutura lógica do iptables é formada basicamente por tabelas, chains e regras. As
regras devem ser definidas juntamente com as tabelas e chains (cadeias), pois elas consistem
em uma forma de organizar as informações que serão processadas pelo netfilter. Abaixo, será
descrito o que cada uma delas representam:
• As tabelas servem para representarem a descrição da área de atuação das
regras. As tabelas existentes por padrão são: filter, nat e mangle. Entretanto,
outras tabelas podem ser criadas. Por ex.: podemos criar uma tabela de nome
“internet” para podermos organizar as regras que tratam dos pacotes
relacionados especificamente à Internet.
• As chains representam as “cadeias” relacionadas ao tipo de roteamento do
pacote dentro da máquina Firewall. No iptables existem chains específicas
para cada tabela. Veja no quadro a seguir como elas são organizadas.
• As regras são diretrizes que servem de base para que o netfilter possa
determinar, considerando as informações do cabeçalho do pacote, a ação que
1 NAT – Network Address Translation ou “tradução de endereços de rede”. Segundo ALVES (2000), surgiu como forma de diminuir o problema de escassez de endereços IP válidos da rede pública. Isso porquê ele é um mecanismo que traduz endereços IP privados (não válidos) em IP válidos. Com isso, equipamentos de redes com endereços privados podem ter acesso à Internet.
32
deve ser tomada a ele. Tais regras se apresentam na forma: Tabela – Opção –
Chain – Parâmetros – Ação1.
Na tabela filter2 temos as chains INPUT, FORWARD e OUTPUT3. O nome filter está
relacionado com a filtragem padrão de dados do iptables. Ela não precisa necessariamente ser
especificada na linha de comando da regra, justamente pelo fato de ela ser a tabela “default”
do iptables. As chains têm um importante papel dentro do iptables. São elas que diferenciam
o destino dos pacotes dentro de sua chegada ao kernel da máquina Firewall. O significado de
cada uma delas, pode ser definido da seguinte forma:
• INPUT quer dizer “entrada”. No caso, trata da entrada de dados na própria
máquina onde roda o Firewall. Quando quisermos definir alguma regra para
filtragem de pacotes cujo destino seja a máquina Firewall, usamos esta chain.
• FORWARD quer dizer “repasse”. Está relacionada com o repasse de pacotes
que atravessam o Firewall. Quando uma estação da rede envia informações
para outra, as mesmas são repassadas pelo Firewall à estação de destino. Mas
antes, essas informações são filtradas por ele.
• OUTPUT quer dizer “saída”. Abrange os pacotes que saem da máquina
Firewall. Pode-se definir regras que restrinjam o tráfego de informações
provenientes da máquina Firewall.
Na Figura 3.3 é ilustrado o esquema lógico do fluxo de pacotes dentro do kernel
relacionados à tabela filter no iptables. Nela é possível se ter uma boa noção de como os
pacotes são classificados pelo netfilter, para que ele possa efetuar corretamente o seu
processamento. Os pacotes que chegam ao kernel, são analisados para que se constate o tipo
de roteamento a ser feito. Caso sejam destinados ao próprio Firewall, o netfilter analisa as
regras da chain INPUT e depois os encaminha para serem processados pelo processo local.
Caso destinem-se à outro host, o netfilter os compara às regras da chain FORWARD e após
isso, os destinam ao host especificado. Caso os pacotes sejam originados pelo próprio
Firewall, o netfilter os submete às regras da chain OUTPUT e só assim, os libera para saírem
da máquina.
1 Em sua definição correta, essa opção tem o significado de “alvo” (target), pois serve também para redirecionar a regra de uma chain para outra. Entretanto, será usado o termo “ação” como uma forma de facilitar seu entendimento, segundo descrito por RUSSELL (2001). 2 No iptables, as tabelas devem ser escritas em letras minúsculas. 3 As chains devem obrigatoriamente ser escritas em caixa alta. O mesmo acontece com as ações (DROP, ACCEPT, REJECT, MASQUERADE, DNAT, SNAT, REDIRECT, LOG, entre outras) e as opções (“-A”, “-R”, “-P”, etc.).
33
Figura 3.3: Fluxo de dados na tabela filter do iptables
Fonte: ERIBERTO, 2005
Na tabela nat existem também três chains: PREROUTING, POSTROUTING e
OUTPUT. O quê significam então as chains da tabela nat? Elas são definidas da seguinte
forma:
• PREROUTING é usado para permitir o roteamento de um pacote externo
quando entra no kernel, ou seja, quando há a necessidade de realizar um NAT
no endereço de destino do pacote (IP válido para endereço privado);
• POSTROUTING é usado para permitir o roteamento do pacote no momento
em que ele irá sair do kernel, ou seja, quando há um NAT no endereço de
origem do pacote (endereço privado para IP válido); e
• OUTPUT é a aplicação de um NAT no endereço IP da própria máquina
Firewall.
Na Figura 3.4 é ilustrado o esquema lógico do fluxo de dados dentro da tabela nat no
iptables. As decisões de roteamento são definidas pelo kernel, que destina os pacotes ao
destino especificado em seus cabeçalhos. Qualquer procedimento de NAT que seja necessário
antes da entrada no kernel, compete a chain PREROUTING. Já o NAT que deve ser feito
logo que o deixará, será processado pela chain POSTROUTING. Nos dois casos, são
utilizadas para o tratamento de pacotes que estão sendo encaminhados (forward). A chain
OUTPUT da tabela nat, está relacionada ao NAT dos pacotes que partem da própria máquina
Firewall.
34
Figura 3.4: Modelo de fluxo de dados na tabela nat do iptables
Fonte: ERIBERTO, 2005
No Quadro 3.1 são apresentadas as principais tabelas usadas no iptables e suas
respectivas chains.
Quadro 3.1: Estrutura de tabelas no iptables
TABLE CHAIN
INPUT
FORWARD Filter
OUTPUT
PREROUTING
POSTROUTING nat
OUTPUT
Há também os códigos que representam os itens que são considerados pelo Firewall
no seu processo de filtragem de pacotes. Esses códigos devem sempre ser escritos em letras
minúsculas. Os mais importantes para o foco deste trabalho são apresentados no Quadro 3.2.
35
Quadro 3.2: Códigos de parâmetros do iptables e respectivas definições
Código Descrição
-t Prefixo que define a tabela da qual a regra será associada
-p Prefixo que define o tipo de protocolo do pacote
-i Prefixo que define a interface de entrada
-o Prefixo que define a interface de saída
-s Prefixo que define o endereço IP de origem
-d Prefixo que define o endereço IP de destino
--sport Prefixo que define a porta de origem do pacote
--dport Prefixo que define a porta de destino do pacote
-j Prefixo que define o tipo de ação a ser tomada
! Exclusão de argumento (todos exceto...)
A estrutura lógica da linha de comando do iptables são as que foram descritas acima.
Porém, existe mais um item fundamental dela que é o das opções, o qual será discutido na
Subseção 3.5.2, que trata de diversas funções de gerenciamento do iptables.
3.7.2 Opções do iptables
A sintaxe de um comando do iptables segue determinados parâmetros. Esses
parâmetros, servem para informar claramente qual é o tipo de filtragem que o netfilter deverá
submeter o pacote. Tais parâmetros já foram parcialmente descritos na subseção anterior.
Contudo, é necessário que se conheça um de seus principais: o parâmetro opções.
Para melhor entendê-las, o Quadro 3.3 auxilia na descrição de quais são as opções
possíveis para o iptables e suas respectivas definições:
36
Quadro 3.3: Opções do iptables e seus significados
Opção Descrição
-A Insere uma nova regra na tabela especificada (Add)
-P Define uma regra padrão para determinada chain de determinada tabela
-D Apaga uma regra (Delete)
-F Apaga todas as regras de uma determinada tabela ou chain (Flush)
-L Lista as regras de uma determinada tabela (List)
-R Substitui uma regra (Replace)
-I Insere uma regra em uma linha específica (Insert)
-X Exclui uma chain especial ou todas as contidas numa tabela (eXclude)
-N Cria uma nova regra dando um nome a ela (Name)
-Z Zera os contadores de uma tabela ou chain específica (Zero)
-E Renomeia uma chain (Edit)
-C Faz uma checagem das regras existentes (Check)
-h Exibe tópicos de ajuda
Essas opções implementam a criação de regras no iptables. Veja na figura 3.5 o
exemplo de uma linha de comando básica que pode ser definida em sua utilização. Neste
exemplo, o comando diz para adicionar (opção “-A”) uma regra definindo que todos os
pacotes cujos protocolos (parâmetro “–p”) orientados à conexão (TCP) e que têm como
destino a própria máquina Firewall (chain “INPUT”), serão descartados (ação “DROP”),
conforme determinado pelo prefixo “-j”.
37
Figura 3.5: Exemplo de uma regra do iptables1
# iptables –t filter –A OUPUT –o eth0 –p udp –d 10.0.0.15 –dport 37 –j ACCEPT
Neste outro, pede-se que os pacotes que entrarem pela interface (eth0), não orientados
à conexão (UDP), com destino ao endereço IP (10.0.0.15), porta de destino (37) e que saírem
da própria máquina Firewall (OUTPUT), sejam aceitos (ACCEPT).
3.7.3 Tradução de endereços de rede (NAT)
A tradução de endereços de rede ou Network Address Translation (NAT) é um
conjunto de procedimentos que um roteador (ou equipamento equivalente) deve realizar para
converter endereços IP entre redes distintas, como definido por APLINUX (2005).
Um equipamento que possua o recurso de NAT deve ser capaz de analisar todos os
pacotes de dados que passam por ele e fazer a conversão do endereço deles de forma
adequada. O iptables tem, além dos recursos de filtragem mostrados até agora, um ótimo
suporte ao recurso de NAT.
Vamos considerar a implementação de uma rede contendo quatro estações que estão
ligadas à uma máquina que roda o sistema Linux com versão acima de 2.4.x e com o Firewall
iptables. Lembrando que devemos permitir que as quatro estações acessem a Internet e que
somente a máquina que servirá como Firewall está ligada a um modem / roteador de acesso à
Internet. 1 Existe a possibilidade de salvar as regras do iptables que estiverem registradas na memória. O comando necessário é o iptables-save. Usa-se “#iptables-save > nome_do_arquivo”. Para se restaurar as regras de um arquivo gerado anteriormente, usa-se o comando iptables-restore. Para tal, deve ser digitado “#iptables-restore nome_do_arquivo”.
38
Temos como exemplo os IPs 10.0.15.2 a 10.0.15.5 como sendo os endereços das
quatro estações desta rede. Esses IPs não são válidos na Internet. São IPs privados, por isso
não podem ser roteados na Internet. A máquina Firewall possui dois endereços IPs: 10.0.15.1
da rede local e 200.107.231.16 da conexão com a Internet, atribuídos às interfaces eth0 e eth1
respectivamente.
Para que tais estações possam ter acesso à Internet, a máquina Firewall que
gerenciam-nas deve realizar um NAT para seus endereços. Isso permitirá que o endereço IP
não-válido de cada uma delas (10.0.15.2 a 10.0.15.5) seja traduzido para o endereço IP válido
da conexão com a Internet da máquina Firewall (200.107.231.16). Entretanto, esse processo
de troca de endereço deve ser feito nas duas vias: saída e retorno. Porém, podem também
ocorrer solicitações à um mesmo host remoto por duas ou mais estações distintas. Esse caso
só é possível graças o recurso NAT possuir uma propriedade que não permite que haja
redundâncias ou conflitos de re-endereçamento. Isso porque ele cria temporariamente em
memória, uma tabela vinculada de registro de endereços1 que conterá a relação exata dos
endereços IPs e porta de origem de cada host e sua associação com o endereço IP e porta de
destino, de maneira que ele possa assim rotear de forma precisa os pacotes de dados que
retornarem desse host para as respectivas estações, garantindo que a elas retornem exatamente
os pacotes que e de onde foram solicitados. Essa importante propriedade é também
implementada pelo netfilter.
O funcionamento desse recurso no iptables é de fácil compreensão. Um exemplo: uma
estação de rede envia uma solicitação de conexão à um host remoto. Esse host, contudo, não
faz parte de sua rede mas seu endereço IP é válido na Internet. O netfilter, então, faz a troca
do endereço IP e porta de origem contidos no cabeçalho do pacote vindo desta estação para o
endereço IP válido e porta disponíveis pela sua conexão com a Internet. Ele então grava as
informações de roteamento desse pedido na tabela vinculada de registro de endereços
(privados e públicos) citada no parágrafo anterior. Assim que o host remoto enviar a resposta
àquela solicitação, o netfilter checa na mesma tabela vinculada de registro de endereços se
consta uma solicitação válida registrada nela. Caso conste, ele reescreve o cabeçalho do
pacote alterando o par (endereço público e porta) para o par (endereço privado e porta)
relacionados na tabela, encaminhando assim para a estação de destino correta. Caso não
conste, ele simplesmente descarta o pacote. 1 Qualquer tentativa de conexão vinda de um host remoto que chegue na máquina Firewall é analisada pelo netfilter, que usará como referência a tabela vinculada de registro de endereços para tomar a decisão de roteamento apropriada. Sendo assim, o recurso NAT do netfilter por si só, torna a segurança da rede (por controle de filtragem de pacotes) muito forte.
39
Os dados que o netfilter memoriza na tabela vinculada de registro de endereços são
suficientes para ele saber exatamente qual estação fez o pedido e à qual host foi enviado o
pacote, possibilitando que, após a resposta, seja alterado o endereço IP e porta de destino do
pacote vindo do host remoto. Esse endereço, que na verdade era seu próprio IP válido, será
alterado no processo de NAT para o IP da estação solicitante.
Um exemplo de como é feito o procedimento de vinculação do endereço IP privado e
porta de uma estação da rede com o endereço IP público da conexão com a Internet e porta
reescritos durante o processo de NAT, pode ser verificado a partir dos quadros A1 e A2,
contidos no Apêndice A. O Firewall realiza, durante o processo de tradução de endereços
(NAT), a edição do cabeçalho do pacote TCP/IP modificando o endereço IP de origem (IP
privado) para o seu endereço IP de conexão com a Internet (IP público). Modifica também a
porta de origem, atribuída ao pacote no momento em que ele deixa a estação para uma porta
aleatória e disponível no próprio host Firewall.
Nesse momento, o recurso NAT do netfilter, registra esses dados na tabela vinculada
de registro de endereços, conforme citado anteriormente, vinculando o endereço IP e porta de
origem com o endereço IP e porta modificados por ele. Quando um pacote TCP/IP, que
contém em seu cabeçalho o endereço IP de destino de sua conexão com a Internet, ele
imediatamente consulta a tabela vinculada de registro de endereços e, caso haja também uma
associação com alguma porta relacionada na mesma, ele então confere se o endereço de
origem desse pacote é o mesmo que foi solicitado pela estação de origem. Caso todas as
condições tenham sido satisfeitas, o netfilter efetua a tradução de endereços (NAT) contrária,
encaminhando em seguida tal pacote exatamente à estação que o solicitou anteriormente.
Caso alguma dessas condições não seja satisfeita, o netfilter simplesmente descarta o pacote.
Outra opção muito importante associada ao recurso NAT é a de mascaramento. O IP
Masquerading, é uma função também existente na tabela nat do iptables mas se difere das
funções SNAT e DNAT por elas exigirem a especificação do endereço IP válido do gateway
para permitir o acesso das estações da rede à Internet. Assim, caso o IP seja dinâmico, as
regras de mascaramento do Firewall não têm a necessidade de serem alteradas.
3.8 Considerações finais
Estabelecendo um paralelo entre a necessidade da segurança e a proposta de solução
associada ao uso de uma ferramenta Firewall, chega-se a uma definição dos fatores que
40
resultaram na adoção do sistema operacional Linux e seu aplicativo de filtragem de pacotes
iptables, como parte integrante da implementação de uma rede segura. O aplicativo Firewall
abordado neste capítulo será discutido com mais ênfase no Capítulo 4, onde serão
apresentados os conceitos e noções de funcionamento teórico / prático, que devem trazer um
entendimento mais objetivo ao que este estudo se propõe.
41
4 ESTUDO EXPERIMENTAL
4.1 Considerações iniciais
Neste capítulo será apresentada toda a fase de testes e experimentos desenvolvidos a
partir da análise do contexto, levantamento de requisitos, definição do problema e emprego
das técnicas para resolução do mesmo. O estudo experimental tem por finalidade fazer o uso
da ferramenta proposta pelo trabalho de modo a alcançar uma compreensão conclusiva a
respeito de sua importância, bem como quais foram exatamente os resultados obtidos durante
a fase de aplicação prática das teorias neste apresentadas.
A seguir, serão mostrados alguns conceitos importantes antes da aplicação
propriamente dita, que servirão como parâmetro para um melhor entendimento do que
realmente este estudo se propõe a mostrar.
4.2 Características da rede adotada
Nessa fase de estudo de caso, levou-se o entendimento de que um modelo de rede que
representasse um bom exemplo de rede corporativa, servindo como base para o
aproveitamento das técnicas de segurança via Firewall estudadas a partir deste trabalho, teria
que abranger seus principais aspectos. Sendo assim, foi considerada uma rede, de maneira
hipotética, com os seguintes aspectos:
1. 7 (sete) estações de trabalho com 1 (uma) placa de rede ethernet cada;
2. 1 (um) servidor rodando os serviços (FTP, SSH, Web e e-mail);
3. 1 (um) concentrador (hub ou switch);
4. 1 (um) microcomputador com sistema operacional Linux, 2 (duas) placas de rede
ethernet, kernel 2.4.x ou mais recente e iptables 1.3.x ou mais recente que será
também o gateway desta rede; e
5. Conexão com a Internet ligada a uma das interfaces da máquina acima.
Dentro deste modelo, serão relacionadas quais as configurações necessárias para se
garantir a segurança desta rede, permitir a comunicação entre as 5 estações da rede, o acesso
delas à Internet, o compartilhamento dos serviços do servidor (SSH, FTP, Web e e-mail) e
algumas variações dentro desse contexto favorecendo ao entendimento dos recursos
disponíveis pelo Firewall.
42
Na Figura 4.1 é apresentado visualmente o modelo de rede adotada. Nesse modelo,
apresentam-se as 7 estações da rede local, um servidor de serviços (Web, FTP, SSH e e-mail),
a máquina Firewall, um switch, um roteador ADSL e a Internet. As estações locais, servidor
de serviços e o Firewall, se interligam por meio do switch. O Firewall também está conectado
ao roteador ADSL, responsável pela comunicação do mesmo com a Internet.
Figura 4.1: Ilustração do modelo de rede adotada neste estudo
4.3 Parâmetros e requisitos levantados
Seguindo as características idealizadas para a rede em questão, foi realizado o
levantamento de quais seriam os itens que deveriam ser implementados nas regras de
filtragem do Firewall. Dessa forma, é que se pode ter a exata dimensão de como os
parâmetros, que estabelecem como deverão comportar o fluxo de dados da rede e as políticas
de segurança, caracterizarão a lógica da elaboração das regras do Firewall.
Este estudo leva também à reflexão de condições que podem não se mostrar
unicamente restritas ao panorama que foi adotado como exemplo. Portanto, algumas variantes
serão apresentadas somente a título de conhecimento.
As regras que irão compor o esquema de proteção do Firewall netfilter devem garantir
algumas diretrizes básicas. Essas diretrizes precisam ser levantadas antes de se iniciar a
configuração de um Firewall.
43
Primeiramente, será descrito aqui como seriam as condições dentro dessa rede. Por
fim, serão apresentadas as regras que foram determinadas a fim de suprirem essas condições.
A rede, como já descrito na Seção 4.1, possui 8 terminais sendo um servidor de
serviços e sete estações de trabalho comuns. A máquina Firewall servirá como gateway da
rede com a Internet pois possui conexão com ela através da interface “ppp0”. O nome dado à
interface que a liga com a rede local é “eth0”. O IP atribuído à esta conexão, porém, é um IP
dinâmico, ou seja, é alterado a cada nova conexão. Cada estação possui uma interface de rede
intitulada com o nome “eth0”.
Os requisitos obtidos na análise deste contexto são:
• A rede precisa ser defendida contra os tipos de ataques mais conhecidos;
• Deve-se liberar o procedimento de troca do endereço IP privado do Firewall
para o IP válido, no momento em que ele se conecta com a Internet.
• O número de pacotes que chegam à ela por meio do procedimento de
checagem de host presente na mesma rede (ping), deve ser limitado de modo
a não sobrecarregar a conexão nem o sistema;
• Filtrar os dados vindos da Internet de forma isolada;
• Permitir que as estações da rede acessem os seguintes serviços disponíveis
na Internet (Web, https e e-mail);
• No servidor há também os serviços (SSH e FTP) que devem ser
disponibilizados para as estações locais;
• Gerar um registro das conexões não autorizadas;
• Descartar essas conexões não autorizadas com destino às estações da rede
(conexões que não foram geradas a partir delas); e
• Descartar todos os outros tipos de conexões com destino ao Firewall1.
4.4 Solução proposta
De acordo com os requisitos levantados e relacionados na seção anterior, buscou-se o
desenvolvimento de uma aplicação prática das teorias estudadas e que tem por finalidade
alcançar uma conclusão de qual maneira ideal deveria ser implementado o Firewall em
questão através das técnicas possibilitadas pelo mesmo.
1 Para que se tenha uma segurança na rede é necessário antes de tudo, que a máquina Firewall não esteja vulnerável. Assim, devemos também criar regras que proteja a ele próprio contra as adversidades que podem ocorrer e que comprometeriam a segurança de toda a rede
44
Nas próximas subseções, tais requisitos serão traduzidos para a linguagem do
Firewall, através do interpretador de comandos iptables. Todas as regras pertinentes aos
parâmetros e requisitos citados anteriormente, foram formuladas para que se garantisse a
funcionalidade da rede considerada como modelo experimental. Por esse motivo, quaisquer
outras possibilidades envolvendo regras de filtragem não relacionadas neste trabalho, estarão
descartadas por não terem sido consideradas na proposta abordada.
Nessa nova fase, as atividades realizadas são o fruto do entendimento absorvido até o
momento, diante das pesquisas conferidas em diversas fontes e posterior aprendizado em
relação ao tema proposto.
• Definir a política padrão de filtragem com a ação de (descartar) o que não
constar nas regras de liberação;
• Proteger a conexão de entrada contra port scanners, trace routers, ataques e
pacotes fragmentados;
• Restringir o número de pacotes icmp (ping) em 2 pacotes por segundo vindos
da interface ligada à Internet;
• Tratar as conexões de entrada pela interface ligada à Internet em uma chain à
parte;
• Liberar a alteração via NAT do IP privado referente à conexão PPPoE antes
de ser atribuído o IP válido pelo provedor de acesso à Internet;
• Habilitar o roteamento de pacotes entre a rede local e a Internet;
• Liberar acesso da rede local à Internet pelas portas 80 (Web), 443 (https),
110 (POP3), 25 (SMTP) e 53 (DNS) através do mascaramento de seus
respectivos endereços IPs;
• Permitir, via NAT, a disponibilização na Internet dos serviços do servidor da
rede (Web e e-mail);
• Logar tentativas de conexão não autorizadas utilizando a função (-j LOG);
• Descartar acessos não-autorizados às estações da rede; e
• Descartar demais conexões relacionadas ao recurso NAT.
45
4.4.1 Ativando módulos do iptables
Antes de partirmos para a configuração das regras no iptables, devemos ativar os
módulos responsáveis pelo seu funcionamento de acordo com nossa necessidade. Alguns
deles vêm ativados por default em várias distribuições GNU/Linux. Mas, pra garantir,
devemos saber como ativá-los.
Ativando o módulo principal do iptables: # modprobe ip_tables
Ativando os módulos das tabelas filter e nat: # modprobe iptable_filter
# modprobe iptable_nat
Ativando o módulo reject: # modprobe ipt_REJECT
Ativando o módulo multiport: # modprobe ipt_multiport
Ativando o módulo responsável pelo mascaramento da conexão: # modprobe ipt_MASQUERADE
Ativando o módulo gerador de log do iptables: # modprobe ipt_LOG
Nesse momento, os módulos do iptables necessários à configuração do Firewall
exemplo, já estão ativos. Agora é preciso que as tabelas e chains sejam preparadas para
receber as regras que devem atender aos requisitos levantados anteriormente.
4.4.2 Preparando as tabelas e chains
Algumas configurações devem ser feitas antes de começarmos efetivamente a
implantar as regras que correspondem aos requisitos levantados anteriormente. Essas
46
configurações são destinadas somente à fase inicial da implementação da segurança através
do Firewall. Nessa fase, devem ser realizados os procedimentos de preparação das tabelas e
chains do iptables antes da atribuição das regras, considerando também que o mesmo poderia
possuir regras atribuídas anteriormente.
Limpando regras residuais das tabelas filter e nat: # iptables –t filter –F
# iptables –t nat –F
Zerando os contadores das tabelas: # iptables –t filter –Z
# iptables –t nat –Z
Definindo as políticas de filtragem a cada uma das chains das tabelas filter e nat. Essas
políticas têm o intuito de descartar tudo o que não se enquadrar na lista de regras individuais
definidas para cada uma de suas respectivas chains: # iptables –t filter –P INPUT DROP
# iptables –t filter –P FORWARD DROP
# iptables –t filter –P OUTPUT DROP
# iptables –t nat –P POSTROUTING DROP
# iptables –t nat –P PREROUTING DROP
# iptables –t nat –P OUTPUT DROP
Nesse instante, o iptables já está preparado para ser utilizado para atender estritamente
às necessidades da rede do exemplo proposto. Feito isso, deve-se implementar a criação das
regras de acordo com o que é preciso liberar ou bloquear.
4.4.3 Construção das regras necessárias
Em relação ao que foi proposto pela rede exemplo deste trabalho, foi realizado o
levantamento de requisitos para se saber o que deve ser feito por meio do Firewall para que a
rede possua as funcionalidades das quais necessita, sendo garantida a sua segurança. Sugeriu-
se então a solução proposta para que todas as exigências fossem cumpridas. Com isso, as
configurações necessárias para se garanta o funcionamento de forma segura desta rede, serão
vistas nesta subseção.
47
Criando a chain relacionada “ppp-input” que tratará os pacotes que entrarem pela interface
ppp0: # iptables –t filter –N ppp-input
As regras a seguir correspondem às regras tabela filter com as chains (INPUT,
FORWARD, ppp-input e OUTPUT). Algumas regras que não condizem estritamente às
necessidades apontadas durante a fase de levantamento de requisitos, foram criadas somente a
título de auxílio ou da abordagem de sua aplicação prática.
INPUT
Criando uma referência na chain INPUT para que os pacotes vindos da Internet sejam
analisados separadamente pela chain “ppp-input”: # iptables –t filter –A INPUT –i ppp0 –j ppp-input
Aceitando conexão “loopback” de entrada do Firewall à ele mesmo: # iptables –t filter –A INPUT –i lo –j ACCEPT
Pacotes TCP e UDP que tem como destino o Firewall são aceitos caso apresentarem o estado
de conexão (estabelecida e relacionada), ou seja, caso já exista uma conexão estabelecida ou
relacionada à uma outra, feita a partir dele anteriormente: # iptables –t filter –A INPUT –p tcp –m state --state ESTABLISHED,RELATED –j ACCEPT
# iptables –t filter –A INPUT –p udp –m state --state ESTABLISHED,RELATED –j ACCEPT
Aceitando pacotes ICMP (ping) com tolerância de um pacote por segundo (proteção contra
“ping-da-morte”): # iptables –t filter –A INPUT –p icmp –m limit --limit 1/s –j ACCEPT
FORWARD
Primeiramente, deve-se habilitar a função de repasse de pacotes no kernel: # echo “1” > /proc/sys/net/ipv4/ip_forward
Aceitando pacotes ICMP (ping) com tolerância de pacotes por tempo (dois por segundo): # iptables –t filter –A FORWARD –p icmp –s 192.168.5.0/24 –m limit --limit 2/s –j ACCEPT
48
Liberando o repasse de pacotes entre as interfaces ppp0 e eth0 e registrando os dados do
tráfego referente à elas. As portas (25, 80, 110 e 443) referem-se respectivamente aos serviços
de (SMTP, HTTP, POP3 e HTTPS) que devem estar disponíveis para a rede local: # iptables –t filter –A FORWARD –i eth0 –o ppp0 –p tcp –m multiport --dports 20,21,22,25,80,110,443 –j ACCEPT
# iptables –t filter –A FORWARD –d 192.168.5.0/24 –i ppp0 –o eth0 –m state --state ESTABLISHED,RELATED –j ACCEPT
# iptables –t filter –A FORWARD –j LOG --log-prefix "FIREWALL: FORWARD "
Liberando envio de mensagens (net send) entre as estações da rede: # iptables –t filter –A FORWARD –i eth0 –p udp –m multiport --dports 135, 137, 138 –j
ACCEPT
# iptables –t filter –A FORWARD –i eth0 –p tcp –m multiport --dports 135, 139, 445 –j
ACCEPT
Liberando acesso ao servidor FTP e SSH à todas as estações da rede: # iptables –t filter –A FORWARD –p tcp –s 192.168.5.0/24 –d 192.168.5.2 --dport 20 –j
ACCEPT
# iptables –t filter –A FORWARD –p tcp –s 192.168.5.0/24 –d 192.168.5.2 --dport 21 –j
ACCEPT
# iptables –t filter –A FORWARD –p tcp –s 192.168.5.0/24 –d 192.168.5.2 --dport 22 –j
ACCEPT
OUTPUT
Conexões TCP e UDP que forem originadas pelo Firewall são aceitas: # iptables –t filter –A OUTPUT –p tcp –m state --state NEW,ESTABLISHED,RELATED –j
ACCEPT
# iptables –t filter –A OUTPUT –p udp –m state --state NEW,ESTABLISHED,RELATED –j
ACCEPT
Aceitando conexão “loopback” de saída do Firewall à ele mesmo: # iptables –t filter –A OUTPUT –o lo –j ACCEPT
49
ppp-input
Estabelecendo um limite para o número de pacotes “ping” (um por segundo) vindos da
Internet: # iptables –t filter –A ppp-input –p icmp –m limit --limit 1/s –j ACCEPT
Registra tentativas de conexão não-autorizadas vindas da Internet: # iptables –t filter –A ppp-input –p udp --dport 53 –j LOG --log-prefix "FIREWALL: dns "
# iptables –t filter –A ppp-input –p tcp --dport 113 –j LOG --log-prefix "FIREWALL: identd "
# iptables –t filter –A ppp-input –p udp --dport 111 –j LOG --log-prefix "FIREWALL: rpc "
# iptables –t filter –A ppp-input –p tcp --dport 111 –j LOG --log-prefix "FIREWALL: rpc "
# iptables –t filter –A ppp-input –p tcp --dport 137:139 –j LOG --log-prefix "FIREWALL:
samba "
# iptables –t filter –A ppp-input –p udp --dport 137:139 –j LOG --log-prefix "FIREWALL:
samba "
As regras a seguir correspondem às regras tabela nat com as chains (POSTROUTING,
PREROUTING e OUTPUT).
POSTROUTING
Mascaramento de IP liberando conexão da rede local para a Internet com restrição aos
serviços (SMTP, POP3, HTTP e HTTPS): # iptables –t nat –A POSTROUTING –p tcp –m multiport --dports 25,80,110,443 –s
192.168.5.0/24 –o ppp0 –j MASQUERADE
PREROUTING
Liberando conexão da rede local à Internet limitada aos serviços (SMTP, POP3, HTTP e
HTTPS): # iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 200.140.2.45 --dport 25 –j SNAT --to
192.168.5.2:25
# iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 192.168.5.2 --dport 25 –j ACCEPT
# iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 200.140.2.45 --dport 80 –j SNAT --to
192.168.5.2:80
# iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 192.168.5.2 --dport 80 –j ACCEPT
# iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 200.140.2.45 --dport 110 –j SNAT --to
192.168.5.2:110
# iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 192.168.5.2 --dport 110 –j ACCEPT
50
# iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 200.140.2.45 --dport 443 –j SNAT --to
192.168.5.2:443
# iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 192.168.5.2 --dport 443 –j ACCEPT
Registrando todas as outras tentativas externas de conexão às estações locais: # iptables –t nat –A POSTROUTING –o eth0 –d 192.168.5.0/24 –j LOG --log-prefix
"FIREWALL: SNAT unknown "
Por fim, para que as estações da rede tenham o Firewall como seu gateway de rede, é
necessário fazer a seguinte configuração em cada uma delas: # route add default gw 192.168.5.1
Todas as regras contidas neste subitem, estão relacionadas em um arquivo script,
criado para ser executado na inicialização do sistema ou então por meio da simples ativação
do mesmo pelo administrador do Firewall. Esse arquivo script pode ser visualizado no
Apêndice C deste trabalho.
4.5 Testes realizados
Durante a fase de testes, foram realizados experimentos relacionados à utilização do
Firewall, abordado a partir do Capítulo 3. Esses testes basearam-se em diversos tipos de
possibilidades, além das que foram determinadas pela solução apresentada ao modelo de rede
proposto. O experimento foi possibilitado por meio da utilização da rede de computadores do
laboratório 8, localizado na instituição de ensino Barão de Mauá.
51
Figura 4.2: Ilustração da topologia da rede testada
Fazendo uso de um computador munido do sistema operacional GNU/Linux Debian
3.1, iptables 1.3.1, presente no kernel 2.4.27, levaram-se em consideração alguns dos fatores
mais comuns envolvidos na implementação de um Firewall em redes de computadores. Os
testes foram realizados juntamente com outros dois computadores (representantes da rede), os
quais estavam guarnecidos com os sistemas Windows 2000 e Debian 3.1.
As especificações e configurações dos computadores integrantes desta rede, estavam
estabelecidas conforme o Quadro 4.1. A representação da topologia da mesma pode ser
observada mediante a Figura 4.2.
Quadro 4.1: Configurações da rede testada
Host Endereço IP Interfaces Sistema Operacional Gateway padrão
Firewall 10.0.0.23
200.144.151.25 eth0, eth1 GNU/Linux Debian 3.1 192.168.1.11
Estação 1 10.0.0.25 eth0 GNU/Linux Debian 3.1 10.0.0.23
Estação 2 10.0.0.26 eth0 Windows 2000 10.0.0.23
TESTE 1: Configurou-se uma regra que descarta quaisquer pacotes ICMP oriundos
da Estação 2 da rede. A seguir, a regra foi modificada para rejeitar tais pacotes emitindo uma
mensagem de resposta especificando que a rede de destino não foi alcançada. As seguintes
regras foram configuradas: # iptables –t filter –A INPUT –i eth0 –s 10.0.0.26 –p icmp –j DROP
# iptables –t filter –D INPUT 1
52
# iptables –t filter –A INPUT –i eth0 –s 10.0.0.26 –p icmp –j REJECT --reject-with icmp-port-
unreachable
Resultado obtido: Realizando-se um teste ping a partir da Estação 2, as mensagens de erro
apresentadas referentes às regras estão relacionadas no Apêndice D. O teste ping mostrou que
o Firewall realmente não aceitou os pacotes.
TESTE 2: Foi configurada uma regra que bloqueia conexões da Estação 2 à porta 22
com status NEW, ou seja, quando há uma tentativa de nova conexão do host com destino ao
Firewall. A regra configurada foi a seguinte: # iptables –A INPUT –p tcp –s 10.0.0.26 --dport 22 –m state --state NEW –j DROP
Resultado obtido: Ao tentar realizar uma conexão por meio do cliente SSH a partir da
Estação 2, não se obteve êxito. Tentou-se então, realizar uma conexão a partir do Firewall
para a Estação 2 utilizando a mesma porta do serviço SSH (22), resultando em êxito. O teste
de conexão via SSH mostrou que o Firewall recusou a nova conexão originada pelo cliente
SSH da Estação 2 e permitiu que a conexão de saída a partir do Firewall fosse realizada sem
problemas. A mensagem de erro apresentada à Estação 2 foi: “Network error: Connection
timed out”.
TESTE 3: Configurou-se uma regra para registrar em log as tentativas de acesso à
porta 80 a partir da Estação 1. Em seguida, criou-se outra regra a fim de descartar qualquer
tentativa de acesso à porta 80 originada pela mesma. As regras configuradas foram: # iptables –A INPUT –p tcp –s 10.0.0.25 --dport 80 –j LOG –log-prefix “FIREWALL:
Conexões HTTP “
# iptables –A INPUT –p tcp –s 10.0.0.25 --dport 80 –j DROP
Resultado obtido: Realizaram-se tentativas de conexão usando o protocolo HTTP, não
obtendo sucesso. As mensagens registradas foram gravadas no arquivo (/var/log/messages) e
constam no Apêndice E. O teste mostrou que a conexão feita a partir da estação configurada
na regra, foi realmente bloqueada e registrada em log, seguindo os critérios estabelecidos no
Firewall.
TESTE 4: Implementou-se uma regra que visa compartilhar a conexão da máquina
Firewall para as estações da rede. Para tanto, elas deveriam possibilitar o mascaramento da
53
conexão com a Internet estabelecida pelo gateway e atribuída à interface (eth1), para as
estações da rede. Adicionalmente, foi liberado (aceito) o estabelecimento de novas conexões
entre as interfaces eth0 e eth1, originadas a partir das estações da rede. As regras configuradas
foram:
# iptables –t nat –A POSTROUTING –s 10.0.0.0/24 –o eth1 –j MASQUERADE
# iptables –A FORWARD –s 10.0.0.0/24 –i eth0 –o eth1 –m state --state NEW –j ACCEPT
Resultado obtido: Realizaram-se várias tentativas de conexão com a Internet a partir das
duas estações da rede. Obteve-se êxito em todas elas. Foram feitos testes de navegação
usando a porta 80 (HTTP), consulta de e-mails usando a porta 110 (POP3), acesso a um host
remoto por meio da porta 22 (SSH). Todas foram executadas sem problemas.
4.6 Considerações finais
Como visto em todo o capítulo, quanto melhor for o planejamento usando o
levantamento de requisitos, melhor será a confiabilidade da rede amparada pelo Firewall. O
sucesso da implementação de uma rede segura por meio deste recurso, depende unicamente
de uma boa previsão de incidentes e uma cuidadosa interpretação dos fatores que devem ser
considerados para que se garanta a disponibilização de acesso, recursos e serviços dos quais
uma organização pode necessitar.
A facilidade de utilização do aplicativo iptables e a intuitiva organização dos
elementos de composição das regras, se caracterizam como fatores bastante positivos e em
conformidade à sua ampla funcionalidade.
De uma maneira geral, foram apresentadas algumas das mais relevantes situações que
comumente se encontram num contexto de rede. Em uma empresa que deseja proteger seus
dados, expandir suas possibilidades de conexão, diminuir o uso de recursos que geram gastos,
eliminar boa parte das atitudes de combate a incêndio e manter-se com uma boa segurança, o
uso de um aplicativo Firewall é muito importante.
Com o estudo realizado e descrito nas seções que compõem este capítulo, espera-se
alcançar uma evolução do conhecimento relacionado a esse tema, principalmente por terem
sido abordadas de forma pertinente, algumas das informações essenciais para sua total
compreensão.
54
CONCLUSÕES
Em virtude das adversidades constantes às quais são submetidas as redes de
computadores, surgiu-se a necessidade de abordar neste trabalho a utilização e as
características de uma das ferramentas mais importantes na busca pelo combate dos
problemas existentes nesse contexto, originados geralmente por terceiros, como é o caso dos
hackers, crackers, e outros indivíduos com comportamentos análogos.
Este estudo mostrou as características para se implementar uma rede segura e buscou
um entendimento de quais parâmetros devemos considerar nessa implementação.
Os testes realizados comprovaram a eficiência do aplicativo iptables, que é a interface
do usuário com o fremework Firewall nativo do kernel Linux (netfilter), dentro dos
parâmetros e do nível de complexidade dos testes descritos e tomados como exemplo. Não
foram realizados testes de caráter avançado por não estarem dentro do intuito do estudo
proposto, o qual visa apenas uma compreensão teórica no que tange ao princípio de
funcionamento de um aplicativo Firewall no sistema operacional.
Concluiu-se por meio deste estudo, que o Firewall iptables pode se comportar de
maneira muito eficiente e estável, mas, mesmo com seus poderosos recursos, não pode ser
utilizado como única forma de proteção contra intrusões, já que não é possível somente com o
mesmo, realizar um controle mais apurado das informações por ele analisadas.
Um fator que influencia nessa limitação é que o iptables não possui como padrão a
propriedade de verificar o conteúdo dos pacotes e por isso é incapaz de conseguir determinar
a existência de códigos maliciosos dentro dos pacotes de dados, apesar de já existirem
módulos (add-ons) que podem ser carregados no kernel e que se dispõem a resolverem esse
problema. Isso ocorre em razão da invasão de privacidade, caracterizada pelo acesso ao
conteúdo das informações que são gerenciadas pelo Firewall. Mesmo assim, o objetivo ao
qual o aplicativo iptables se propõe a alcançar, é atingido com boa eficácia, principalmente
pela rápida e simples interação do mesmo com o kernel do sistema Linux.
As lições aprendidas durante este estudo, apresentam-se com toda certeza, como algo
que propiciou a reflexão de uma gama de fatores que devem ser considerados na questão da
segurança de redes. Portanto, este trabalho é importante não só no que diz respeito ao tema
abordado, mas sobretudo, à todas as outras informações que integram a parte teórica,
necessária para a sustentação de seu foco principal.
55
APÊNDICE A
Princípio de funcionamento relacional da tabela vinculada de registro de endereços do recurso NAT
Quadro A 1: Exemplo de uma tabela vinculada de registro de endereços no recurso NAT
do netfilter relativa ao pós-roteamento
IP privado / porta (postrouting) IP traduzido / porta (postrouting)
origem 192.168.5.4
destino 148.32.69.47
1455
80
200.140.2.45
148.32.69.47
1645
80
origem
destino
192.168.5.19
43.68.32.15
2978
25
200.140.2.45
43.68.32.15
1648
25
origem
destino
192.168.5.2
193.242.36.54
1296
22
200.140.2.45
193.242.36.54
1652
22
origem
destino
192.168.5.63
200.187.175.70
3754
110
200.140.2.45
200.187.175.70
1661
110
origem
destino ... ... ... ...
Quadro A 2: Exemplo de uma tabela vinculada de registro de endereços no recurso NAT do netfilter relativa ao pré-roteamento
IP privado / porta (prerouting) IP traduzido / porta (prerouting)
origem
destino
148.32.69.47
200.140.2.45
80
1645
148.32.69.47
192.168.5.4
80
1455
origem
destino
43.68.32.15
200.140.2.45
25
1648
43.68.32.15
192.168.5.19
25
2978
origem
destino
193.242.36.54
200.140.2.45
22
1652
193.242.36.54
192.168.5.2
22
1296
origem
destino
200.187.175.70
200.140.2.45
110
1661
200.187.175.70
192.168.5.63
110
3754
origem
destino ... ... ... ...
56
APÊNDICE B
Modelo ISO/OSI
“O modelo Open System Interconnect (OSI) foi criado em 1977 pela International
Organization for Standardization (ISO) com o objetivo de criar padrões de conectividade
para a interligação de sistemas de computadores, as redes de computadores.” (ALVES,
2000, pg. 49).
De acordo com ALVES (2000), os fatores que caracterizam essa conectividade foram
divididos em 7 camadas funcionais, relacionadas às regras e aspectos essenciais do processo
de comunicação entre programas de uma rede de computadores, embora tal modelo não ter
sido inicialmente adotado para fins comerciais.
Essa divisão em camadas da estrutura funcional de um sistema de comunicação, torna
mais claro e fácil o seu entendimento. Sua utilização é muito importante para o entendimento
das diversas arquiteturas de comunicação existentes no mercado. Pode-se verificar esse
modelo na Figura B1.
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Física
Camada 7
Camada 6
Camada 5
Camada 4
Camada 3
Camada 2
Camada 1
Figura B 1: Camadas do modelo ISO/OSI
As funcionalidades representadas pelo modelo ISO/OSI foram divididas em dois
domínios; o da rede, referente à conectividade dos computadores, representado pelas camadas
1 a 3 (física, enlace e rede), e o da aplicação, relacionado à comunicação entre os programas
que utilizam a rede, representado pelas camadas 5 a 7 (sessão, apresentação e aplicação). A
57
camada 4 (transporte) é a camada responsável pela ligação entre os programas de aplicação e
os recursos das redes de computadores.
O Quadro B1 descreve cada camada do modelo ISO/OSI e suas respectivas definições.
Quadro B 1: Definição das camadas do modelo ISO/OSI
Camada física Compreende as especificações do hardware utilizado na rede,
que abrangem aspectos mecânicos, elétricos e físicos. Exemplos: Ethernet 802.3, V.35, V.22, X.21, RS-232, RS-449.
Camada de enlace Os protocolos desta camada têm como funcionalidade principal fazer com que os dados transmitidos de um computador cheguem ao outro ligado a ele com sua integridade garantida através do controle de fluxo, correção de erros, entre outros. Um exemplo de protocolo dessa camada é o High-level Data Link Control (HDLC).
Camada de rede Nesta camada, a forma como os nós estão conectados entre si (topologia) é considerada. Os protocolos desta camada fazem o encaminhamento das mensagens na rede segundo algoritmos de roteamento, disciplinas de controle de fluxo e endereçamento. Exemplo: Internet Protocol (IP).
Camada de transporte Os protocolos desta camada são responsáveis por garantir que os dados transmitidos pelo programa de um computador cheguem ao seu destino (outro programa) com integridade, por meio de mecanismos de controle de fluxo, correção de erros, entre outros.
Camada de sessão Realiza o tratamento da comunicação entre os programas que estejam sendo executados em computadores de uma rede. Detalhes como autenticação, tipo de comunicação (one-way, half-duplex ou full-duplex), definição de pontos de sincronismo na comunicação (recuperação de uma conexão de transferência de arquivos, por exemplo) são tratados nesta camada.
Camada de apresentação Trata da sintaxe e da semântica dos dados transmitidos entre os programas. Compressão e descrompressão de dados, criptografia são algumas de suas funções.
Camada de aplicação Envolve a definição dos protocolos de aplicação correspondentes à aplicação final. Ex: uma aplicação de transferência de arquivos em um computador estabelece comunicação com o usuário, com os gerenciadores de arquivos do sistema operacional e com um gerenciador de comunicação. Este último é o que implementa uma funcionalidade da camada 7 no modelo ISO/OSI, no caso, um protocolo para transferência de arquivos.
58
APÊNDICE C Script gerado para atender às necessidades da rede proposta
Nota: Para executar esse script, deve-se antes de tudo, “setar” o atributo de execução ao arquivo:
# chmod +x firewall.sh
#!/bin/bash modprobe ip_tables modprobe iptable_filter modprobe iptable_nat modprobe ipt_REJECT modprobe ipt_multiport modprobe ipt_MASQUERADE modprobe ipt_LOG iptables –t filter –F iptables –t nat –F iptables –t filter –Z iptables –t nat –Z iptables –t filter –P INPUT DROP iptables –t filter –P FORWARD DROP iptables –t filter –P OUTPUT DROP iptables –t nat –P POSTROUTING DROP iptables –t nat –P PREROUTING DROP iptables –t nat –P OUTPUT DROP iptables –t filter –N ppp-input iptables –t filter –A INPUT –i ppp0 –j ppp-input iptables –t filter –A INPUT –i lo –j ACCEPT iptables –t filter –A INPUT –p tcp –m state --state ESTABLISHED,RELATED –j ACCEPT iptables –t filter –A INPUT –p udp –m state --state ESTABLISHED,RELATED –j ACCEPT iptables –t filter –A INPUT –i eth0 –p icmp –m limit --limit 2/s –j ACCEPT echo “1” > /proc/sys/net/ipv4/ip_forward iptables –t filter –A FORWARD –p icmp –s 192.168.5.0/24 –m limit --limit 2/s –j ACCEPT iptables –t filter –A FORWARD –i eth0 –o ppp0 –p tcp –m multiport --dports 21,25,80,110,443 –j ACCEPT
59
iptables –t filter –A FORWARD –d 192.168.5.0/24 –i ppp0 –o eth0 –m state --state ESTABLISHED,RELATED –j ACCEPT iptables –t filter –A FORWARD –j LOG --log-prefix "FIREWALL: FORWARD " iptables –t filter –A FORWARD –i eth0 –p udp --dport 135 –j ACCEPT iptables –t filter –A FORWARD –p tcp –s 192.168.5.0/24 –d 192.168.5.2 --dport 21 –j ACCEPT iptables –t filter –A FORWARD –p tcp –s 192.168.5.0/24 –d 192.168.5.2 --dport 22 –j ACCEPT iptables –t filter –A OUTPUT –p tcp –m state --state NEW,ESTABLISHED,RELATED –j ACCEPT iptables –t filter –A OUTPUT –p udp –m state --state NEW,ESTABLISHED,RELATED –j ACCEPT iptables –t filter –A OUTPUT –o lo –j ACCEPT iptables –t filter –A ppp-input –p icmp –m limit --limit 2/s –j ACCEPT iptables –t filter –A ppp-input –p udp --dport 53 –j LOG --log-prefix "FIREWALL: dns " iptables –t filter –A ppp-input –p tcp --dport 113 –j LOG --log-prefix "FIREWALL: identd " iptables –t filter –A ppp-input –p udp --dport 111 –j LOG --log-prefix "FIREWALL: rpc " iptables –t filter –A ppp-input –p tcp --dport 111 –j LOG --log-prefix "FIREWALL: rpc " iptables –t filter –A ppp-input –p tcp --dport 137:139 –j LOG --log-prefix "FIREWALL: samba " iptables –t filter –A ppp-input –p udp --dport 137:139 –j LOG --log-prefix "FIREWALL: samba " iptables –t nat –A POSTROUTING –p tcp –m multiport --dports 25,80,110,443 –s 192.168.5.0/24 –o ppp0 –j MASQUERADE iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 200.150.12.5 --dport 25 –j SNAT --to 192.168.5.2:25 iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 192.168.5.2 --dport 25 –j ACCEPT iptables –t nat –A PREROUTING –i ppp0 –p cp –s 200.150.12.5 --dport 80 –j SNAT --to 192.168.5.2:80 iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 192.168.5.2 --dport 80 –j ACCEPT iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 200.150.12.5 --dport 110 –j SNAT --to 192.168.5.2:110 iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 192.168.5.2 --dport 110 –j ACCEPT iptables –t nat –A PREROUTING –i ppp0 –p cp –s 200.150.12.5 --dport 443 –j SNAT --to 192.168.5.2:21 iptables –t nat –A PREROUTING –i ppp0 –p tcp –s 192.168.5.2 --dport 443 –j ACCEPT iptables –t nat –A POSTROUTING –o eth0 –d 192.168.5.0/24 –j LOG --log-prefix "FIREWALL: SNAT unknown "
60
APÊNDICE D
Resultado dos testes 1 e 2 1: Teste (ping) da estação 2 com destino ao Firewall com ação DROP Disparando contra 10.0.0.23 com 32 bytes de dados: Esgotado o tempo limite do pedido. Esgotado o tempo limite do pedido. Esgotado o tempo limite do pedido. Esgotado o tempo limite do pedido. Esgotado o tempo limite do pedido. Esgotado o tempo limite do pedido. Esgotado o tempo limite do pedido. Esgotado o tempo limite do pedido. Estatísticas do Ping para 10.0.0.23: Pacotes: Enviados = 8, Recebidos = 0, Perdidos = 8 (100% de perda) 2: Teste (ping) da estação 2 com destino ao Firewall com ação REJECT Disparando contra 10.0.0.23 com 32 bytes de dados: Resposta de 10.0.0.23: Porta de destino inacessível. Resposta de 10.0.0.23: Porta de destino inacessível. Resposta de 10.0.0.23: Porta de destino inacessível. Resposta de 10.0.0.23: Porta de destino inacessível. Resposta de 10.0.0.23: Porta de destino inacessível. Resposta de 10.0.0.23: Porta de destino inacessível. Resposta de 10.0.0.23: Porta de destino inacessível. Resposta de 10.0.0.23: Porta de destino inacessível. Resposta de 10.0.0.23: Porta de destino inacessível. Resposta de 10.0.0.23: Porta de destino inacessível. Estatísticas do Ping para 10.0.0.23: Pacotes: Enviados = 10, Recebidos = 0, Perdidos = 10 (100% de perda)
61
APÊNDICE E Parte do arquivo de log gerado pelo Firewall iptables
Arquivo de registro de conexões criado pelo netfilter, contido no diretório (/var/log/messages). Esse caminho pode variar, estando definido pela
entrada “kern.debug” no arquivo (/etc/syslog.conf). Mar 7 20:53:39 linux kernel: FIREWALL: INPUT IN=eth1 OUT= MAC=00:0c:29:da:9a:7f:00:50:56:e8:1f:bc:08:00 SRC=10.0.0.26 DST=10.0.0.23 LEN=73 TOS=0x00 PREC=0x00 TTL=255 ID=0 DF PROTO=TCP SPT=2663 DPT=80 LEN=53 Mar 7 20:53:39 linux kernel: FIREWALL: INPUT IN=eth1 OUT= MAC=00:0c:29:da:9a:7f:00:50:56:e8:1f:bc:08:00 SRC=10.0.0.26 DST=10.0.0.23 LEN=73 TOS=0x00 PREC=0x00 TTL=255 ID=1 DF PROTO=TCP SPT=2663 DPT=80 LEN=53 Mar 7 20:53:39 linux kernel: FIREWALL: INPUT IN=eth1 OUT= MAC=00:0c:29:da:9a:7f:00:50:56:e8:1f:bc:08:00 SRC=10.0.0.26 DST=10.0.0.23 LEN=73 TOS=0x00 PREC=0x00 TTL=255 ID=2 DF PROTO=TCP SPT=2663 DPT=80 LEN=53 Mar 7 20:53:39 linux kernel: FIREWALL: INPUT IN=eth1 OUT= MAC=00:0c:29:da:9a:7f:00:50:56:e8:1f:bc:08:00 SRC=10.0.0.26 DST=10.0.0.23 LEN=106 TOS=0x00 PREC=0x00 TTL=255 ID=3 DF PROTO=TCP SPT=2663 DPT=80 LEN=86 Mar 7 20:53:40 linux kernel: FIREWALL: INPUT IN=eth1 OUT= MAC=00:0c:29:da:9a:7f:00:50:56:e8:1f:bc:08:00 SRC=10.0.0.26 DST=10.0.0.23 LEN=73 TOS=0x00 PREC=0x00 TTL=255 ID=0 DF PROTO=TCP SPT=2663 DPT=80 LEN=53 Mar 7 20:53:41 linux kernel: FIREWALL: INPUT IN=eth1 OUT= MAC=00:0c:29:da:9a:7f:00:50:56:e8:1f:bc:08:00 SRC=10.0.0.26 DST=10.0.0.23 LEN=73 TOS=0x00 PREC=0x00 TTL=255 ID=1 DF PROTO=TCP SPT=2663 DPT=80 LEN=53 Mar 7 20:53:41 linux kernel: FIREWALL: INPUT IN=eth1 OUT= MAC=00:0c:29:da:9a:7f:00:50:56:e8:1f:bc:08:00 SRC=10.0.0.26 DST=10.0.0.23 LEN=73 TOS=0x00 PREC=0x00 TTL=255 ID=2 DF PROTO=TCP SPT=2663 DPT=80 LEN=53 Mar 7 20:53:41 linux kernel: FIREWALL: INPUT IN=eth1 OUT= MAC=00:0c:29:da:9a:7f:00:50:56:e8:1f:bc:08:00 SRC=10.0.0.26 DST=10.0.0.23 LEN=106 TOS=0x00 PREC=0x00 TTL=255 ID=3 DF PROTO=TCP SPT=2663 DPT=80 LEN=86 Mar 7 20:53:42 linux kernel: FIREWALL: INPUT IN=eth1 OUT= MAC=00:0c:29:da:9a:7f:00:50:56:e8:1f:bc:08:00 SRC=10.0.0.26 DST=10.0.0.23 LEN=106 TOS=0x00 PREC=0x00 TTL=255 ID=4 DF PROTO=TCP SPT=2663 DPT=80 LEN=86
62
REFERÊNCIAS BIBLIOGRÁFICAS ALVES, Marcus Vinicius B. Guia Internet de Conectividade. 9ª edição. São Paulo: Senac,
2002. 167p.
ANÔNIMO. Segurança Máxima – Maximum Security. 2ª edição. Rio de Janeiro: Campus,
2000. 756p.
CARVALHO, José Eduardo M. de. Introdução às Redes de Micros. 1ª edição. São Paulo:
Makron Books, 1998. 189p.
CHESWICK, W. R.; BELLOVIN, S. M. Firewalls and Internet Security: repelling the wily
hacker. 2ª edição. Addison-Wesley Publishing Company, 1994. 448p.
GUIZZO, 1999 – Internet: o que é – o que oferece – como conectar-se. 1ª edição. São Paulo:
Ática, 1999. 112p.
HATCH, Brian; KURTZ, George.; LEE, James. Segurança Contra Hackers – Linux (Hacking
Linux Exposed). 2ª edição. São Paulo: Futura, 2003. 768p.
NEMETH, Evi; SNYDER, Garth; SEEBASS, Scott; HEIN, Trent R. Manual de
Administração do Sistema Unix. 3ª edição. São Paulo: Bookman, 2002. 896p.
SOARES, Luiz Fernando Gomes; LEMOS, Guido; COLCHER, Sérgio. Redes de
computadores: Das LANs, MANs e WANs às Redes ATM. 2ª edição – 12ª tiragem. Rio de
Janeiro: Campus, 1995. 705p.
SOUSA, Lindeberg Barros de. Redes de computadores: Dados, voz e imagem. 5ª edição. São
Paulo: Érica, 2002. 484p.
THOMAS, Robert M. Introdução às Redes Locais. Tradução: Altair Dias Caldas de Moraes.
1ª edição. São Paulo: Makron Books, 1997. 287p.
63
Referência eletrônica:
APLINUX, 2005 – Modelo de configuração de firewall. Fonte: APLINUX.com.br.
Disponível em: http://www.aplinux.com.br/?q=node/125. Acesso em: 15 fev. 2006.
C.E.R.T., 2005 – Cartilha de segurança para Internet. Fonte: CERT.br (Centro de Estudos,
Resposta e Tratamento de Incidentes de Segurança no Brasil). Disponível em:
http://cartilha.cert.br. Acesso em: 28 nov. 2005.
CYCLADES, 2006. Segurança da informação. Fonte: Cyclades Brasil. Disponível em:
http://www.cyclades.com.br/solutions/security.php. Acesso em: 12 dez. 2005.
DUARTE, Otto. NAT – Network Address Translation. Fonte: GTA (Grupo de Teleinformática
e Automação) da UFRJ. Disponível em: http://www.gta.ufrj.br/grad/01_2/nat/index.htm.
Acesso em: 15 mar. 2006.
ERIBERTO, 2005 – Fluxo de dados na tabela filter e nat. Fonte: ERIBERTO. Disponível
em: http://www.eriberto.pro.br/iptables/filter.jpg e http://www.eriberto.pro.br/iptables/nat.jpg.
Acesso em: 13 fev. 2006.
HOUAISS, 2001 – Dicionário Eletrônico Houaiss da Língua Portuguesa. (CD-ROM).
Objetiva, 2001.
MORIMOTO, 2004 – E-Book Entendendo e Dominando o Linux: O Linux e as distribuições.
Fonte: GUIA DO HARDWARE. Disponível em:
http://www.guiadohardware.net/ebooks/linux/0.html#toc_1. Acesso em: 21 dez 2004.
ORANGE, 2006 – Internet Workstation. Fonte: Orange County, North Carolina. Disponível
em: http://www.co.orange.nc.us/library/pictures/Internet%20workstation.jpg. Acesso em: 13
fev. 2006.
PIRES, 2005 - Internet, Software Livre e Exclusão Digital: Impasses e opções no
desenvolvimento de políticas públicas de alcance social no Brasil. Fonte: CIBERGEO.
Disponível em: http://www.cibergeo.org/espacolinux.htm. Acesso em: 08 fev. 2006.
64
PROXIM, 2005 – Create a Wireless Loop in a New Geography. Fonte: Proxim Wireless
Corporation. Disponível em: http://www.proxim.com/images/charts/man_loop_sm.gif.
Acesso em: 23 fev. 2006.
RUSSELL apud GALVÃO, 2001 – Filtrando Pacotes com Iptables. Fonte: Ricardo Kleber
Homepage. Disponível em: http://www.ufrnet.br/~rk/linux.html. Adaptado de: Linux 2.4
Packet Filtering HOWTO. Disponível em:
http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html. Acesso em:
27 fev. 2006.
SILVA, 2005 – Guia Foca GNU/Linux – Intermediário / Avançado. Fonte: GUIA FOCA
GNU/LINUX. Disponível em: http://www.guiafoca.org/download/avancado/focalinux3-
html.tar.bz2. Acesso em: 06 jan. 2006.