# Firewall

Em informática, um firewall (em português: parede de fogo), raramente traduzido como corta-fogo ou corta-fogos, é um dispositivo de uma rede de computadores, na forma de um programa (software) ou de equipamento físico (hardware), que tem por objetivo aplicar uma política de segurança a um determinado ponto da rede, geralmente associados a redes TCP/IP. O firewall pode ser do tipo filtros de pacotes, proxy de aplicações, etc.
A combinação do software e de hardware de proteção, é chamado tecnicamente de "appliance". A complexidade de instalação depende do tamanho da rede, da política de segurança, da quantidade de regras que controlam o fluxo de entrada e saída de informações e do grau de segurança desejado.

## História

Os sistemas firewall nasceram no final dos anos 80, fruto da necessidade de criar restrição de acesso entre as redes existentes, com políticas de segurança no conjunto de protocolos TCP/IP. Nesta época a expansão das redes acadêmicas e militares, que culminou com a formação da ARPANET e, posteriormente, a Internet e a popularização dos primeiros computadores tornando-se alvos fáceis para a incipiente comunidade hacker.
Casos de invasões de redes e fraudes em sistemas de telefonia começaram a surgir, e foram retratados no filme Jogos de Guerra ("War Games"), de 1983. Em 1988, administradores de rede identificaram o que se tornou a primeira grande infestação de vírus de computador e que ficou conhecido como Internet Worm. Em menos de 24 horas, o worm escrito por Robert T. Morris Jr disseminou-se por todos os sistemas da então existente Internet (formado exclusivamente por redes governamentais e de ensino), provocando um verdadeiro "apagão" na rede.
O termo em inglês firewall faz alusão comparativa da função que este desempenha para evitar o alastramento de acessos nocivos dentro de uma rede de computadores a uma parede anti-chamas, que evita o alastramento de incêndios pelos cômodos de uma edificação.

### Primeira Geração - Filtros de Pacotes

* A tecnologia foi disseminada em 1988 através de pesquisa sustentada pela DEC;
* Bill Cheswick e Steve Bellovin da AT&T desenvolvem o primeiro modelo para Prova de Conceito;
** O modelo tratava-se de um filtro de pacotes responsável pela avaliação de pacotes do conjunto de protocolos TCP/IP;
** Apesar do principal protocolo de transporte TCP orientar-se a um estado de conexões, o filtro de pacotes não tinha este objetivo inicialmente (uma possível vulnerabilidade);
Até hoje, este tipo de tecnologia é adotada em equipamentos de rede para permitir configurações de acesso simples (as chamadas "listas de acesso"). O ipchains é um exemplo recente de um firewall que utiliza a tecnologia desta geração. Hoje o "ipchains" foi substituído pelo iptables que é nativo do Linux e com maiores recursos.

#### Regras Típicas na 1ª Geração

* Restringir tráfego baseado no endereço IP de origem ou destino;
* Restringir tráfego através da porta (TCP ou UDP) do serviço.

### Segunda Geração - Filtros de Estado de Sessão

* A tecnologia foi disseminada a partir de estudo desenvolvido no começo dos anos 90 pelo Bell Labs;
* Pelo fato de o principal protocolo de transporte TCP orientar-se por uma tabela de estado nas conexões, os filtros de pacotes não eram suficientemente efetivos se não observassem estas características;
* Foram chamados também de firewall de circuito.

#### Regras Típicas na 2ª Geração

* Todas as regras da 1ª Geração;
* Restringir o tráfego para início de conexões (NEW);
* Restringir o tráfego de pacotes que tenham sido iniciados a partir da rede protegida (ESTABLISHED);
* Restringir o tráfego de pacotes que não tenham número de sequência corretos.
Firewall Statefull: Armazena o estado das conexões e filtra com base nesse estado. Existem três estados para uma conexão:
* NEW: Novas conexões;
* ESTABLISHED: Conexões já estabelecidas, e;
* RELATED: Conexões relacionadas a outras existentes.

### Terceira Geração - Gateway de Aplicação

* Baseado nos trabalhos de Gene Spafford (co-autor do livro Practical Unix and Internet Security), Marcos Ranum (fundador da empresa TIS), e Bill Cheswick;
* Também são conhecidos como "Firewall de Aplicação" ou "Firewall Proxy";
* Foi nesta geração que se lançou o primeiro produto comercial em 13 de Junho de 1991—o SEAL da DEC;
* Diversos produtos comerciais surgiram e se popularizaram na década de 90, como os firewalls Raptor, Gauntlet (que tinha sua versão gratuita batizada de TIS) e Sidewinder, entre outros;
* Não confundir com o conceito atual de ''Firewall'' de Aplicação: firewalls de camada de Aplicação eram conhecidos desta forma por implementarem o conceito de Proxy e de controle de acesso em um único dispositivo (o Proxy Firewall), ou seja, um sistema capaz de receber uma conexão, decodificar protocolos na camada de aplicação e interceptar a comunicação entre cliente/servidor para aplicar regras de acesso;

#### Regras Típicas na 3ª Geração

* Todas as regras das gerações anteriores;
* Restringir acesso FTP a usuários anônimos;
* Restringir acesso HTTP para portais de entretenimento;
* Restringir acesso a protocolos desconhecidos na porta 443 (HTTPS).

### Quarta Geração e subsequentes

* O firewall consolida-se como uma solução comercial para redes de comunicação TCP/IP;
** Stateful Inspection para inspecionar pacotes e tráfego de dados baseado nas características de cada aplicação, nas informações associadas a todas as camadas do modelo OSI (e não apenas na camada de rede ou de aplicação) e no estado das conexões e sessões ativas;
** Prevenção de Intrusão para fins de identificar o abuso do protocolo TCP/IP mesmo em conexões aparentemente legítimas;
** Deep Packet Inspection associando as funcionalidades do Stateful Inspection com as técnicas dos dispositivos IPS;
* A partir do início dos anos 2000, a tecnologia de Firewall foi aperfeiçoada para ser aplicada também em estações de trabalho e computadores domésticos (o chamado "Firewall Pessoal"), além do surgimento de soluções de firewall dedicado a servidores e aplicações específicas (como servidores Web e banco de dados), ou mesmo usuários.

## Classificação

Os sistemas firewall podem ser classificados da seguinte forma:

### Filtros de Pacotes

Estes sistemas analisam individualmente os pacotes à medida que estes são transmitidos, verificando apenas o cabeçalho das camadas de rede (camada 3 do modelo ISO/OSI) e de transporte (camada 4 do modelo ISO/OSI).
As regras podem ser formadas indicando os endereços de rede (de origem e/ou destino) e as portas TCP/IP envolvidas na conexão. A principal desvantagem desse tipo de tecnologia para a segurança reside na falta de controle de estado do pacote, o que permite que agentes maliciosos possam produzir pacotes simulados (com endereço IP falsificado, técnica conhecida como IP Spoofing), fora de contexto ou ainda para serem injetados em uma sessão válida. Esta tecnologia foi amplamente utilizada nos equipamentos de 1a.Geração (incluindo roteadores), não realizando nenhum tipo de decodificação do protocolo ou análise na camada de aplicação.

### Proxy Firewall ou Gateways de Aplicação

Os conceitos de gateways de aplicação (application-level gateways) e "bastion hosts" foram introduzidos por Marcus Ranum em 1995. Trabalhando como uma espécie de eclusa, o firewall de proxy trabalha recebendo o fluxo de conexão, tratando as requisições como se fossem uma aplicação e originando um novo pedido sob a responsabilidade do mesmo firewall (non-transparent proxy) para o servidor de destino. A resposta para o pedido é recebida pelo firewall e analisada antes de ser entregue para o solicitante original.
Os gateways de aplicações conectam as redes corporativas à Internet através de estações seguras (chamadas de bastion hosts) rodando aplicativos especializados para tratar e filtrar os dados (os proxy firewalls). Estes gateways, ao receberem as requisições de acesso dos usuários e realizarem uma segunda conexão externa para receber estes dados, acabam por esconder a identidade dos usuários nestas requisições externas, oferecendo uma proteção adicional contra a ação dos crackers.

#### Desvantagens

* Para cada novo serviço que aparece na Internet, o fabricante deve desenvolver o seu correspondente agente de Proxy. Isto pode demorar meses, tornando o cliente vulnerável enquanto o fabricante não libera o agente específico. A instalação, manutenção e atualização dos agentes do Proxy requerem serviços especializados e podem ser bastante complexos e caros;
* Os proxy's introduzem perda de desempenho na rede, já que as mensagens devem ser processadas pelo agente do Proxy. Por exemplo, o serviço FTP manda um pedido ao agente do Proxy para FTP, que por sua vez interpreta a solicitação e fala com o servidor FTP externo para completar o pedido;
* A tecnologia atual permite que o custo de implementação seja bastante reduzido ao utilizar CPUs de alto desempenho e baixo custo, bem como sistemas operacionais abertos (Linux), porém, exige-se manutenção específica para assegurar que seja mantido nível de segurança adequado (ex.: aplicação de correções e configuração adequada dos servidores).

### Stateful Firewall (ou Firewall de Estado de Sessão)

Os firewalls de estado foram introduzidos originalmente em 1991 pela empresa DEC com o produto SEAL, porém foi só em 1994, com os israelenses da Checkpoint, que a tecnologia ganharia maturidade suficiente. O produto Firewall-1 utilizava a tecnologia patenteada chamada de Stateful Inspection, que tinha capacidade para identificar o protocolo dos pacotes transitados e "prever" as respostas legítimas. Na verdade, o firewall guardava o estado de todas as últimas transações efetuadas e inspecionava o tráfego para evitar pacotes ilegítimos.
Posteriormente surgiram vários aperfeiçoamentos, que introduziram o Deep Packet Inspection, também conhecido como tecnologia SMLI (Stateful Multi-Layer Inspection), ou seja Inspeção de Total de todas as camadas do modelo ISO/OSI (7 camadas). Esta tecnologia permite que o firewall decodifique o pacote, interpretando o tráfego sob a perspectiva do cliente/servidor, ou seja, do protocolo propriamente dito e inclui técnicas específicas de identificação de ataques.
Com a tecnologia SMLI/Deep Packet Inspection, o firewall utiliza mecanismos otimizados de verificação de tráfego para analisá-los sob a perspectiva da tabela de estado de conexões legítimas. Simultaneamente, os pacotes também vão sendo comparados a padrões legítimos de tráfego para identificar possíveis ataques ou anomalias. A combinação permite que novos padrões de tráfegos sejam entendidos como serviços e possam ser adicionados às regras válidas em poucos minutos.
Supostamente a manutenção e instalação são mais eficientes (em termos de custo e tempo de execução), pois a solução se concentra no modelo conceitual do TCP/IP. Porém, com o avançar da tecnologia e dos padrões de tráfego da Internet, projetos complexos de firewall para grandes redes de serviço podem ser tão custosos e demorados quanto uma implementação tradicional.

### Firewall de Aplicação

Com a explosão do comércio eletrônico, percebeu-se que mesmo a última tecnologia em filtragem de pacotes para TCP/IP poderia não ser tão efetiva quanto se esperava. Com todos os investimentos dispendidos em tecnologia de stateful firewalls, os ataques continuavam a prosperar de forma avassaladora. Somente a filtragem dos pacotes de rede não era mais suficiente. Os ataques passaram a se concentrar nas características (e vulnerabilidades) específicas de cada aplicação. Percebeu-se que havia a necessidade de desenvolver um novo método que pudesse analisar as particularidades de cada protocolo e tomar decisões que pudessem evitar ataques maliciosos contra uma rede.
Apesar de o projeto original do TIS Firewall concebido por Marcos Ranum já se orientar a verificação dos métodos de protocolos de comunicação, o conceito atual de Firewall de Aplicação nasceu principalmente pelo fato de se exigir a concentração de esforços de análise em protocolos específicos, tais como servidores Web e suas conexões de hipertexto HTTP. A primeira implementação comercial nasceu em 2000 com a empresa israelense Sanctum, porém, o conceito ainda não havia sido amplamente difundido para justificar uma adoção prática.
Se comparado com o modelo tradicional de Firewall -- orientado a redes de dados, o Firewall de Aplicação é frequentemente instalado junto à plataforma da aplicação, atuando como uma espécie de procurador para o acesso ao servidor (Proxy).
Alguns projetos de código-aberto, como por exemplo o ModSecurity para servidores Apache, IIS e Nginx, têm por objetivo facilitar a disseminação do conceito para as aplicações Web.

#### Vantagens

* Pode suprir a deficiência dos modelos tradicionais e mapear todas as transações específicas que acontecem na camada da aplicação Web proprietária;
* Por ser um terminador do tráfego SSL, pode avaliar hipertextos criptografadas (HTTPS) que originalmente passariam despercebidos ou não analisados por firewalls tradicionais de rede;

#### Desvantagens

* Pelo fato de embutir uma grande capacidade de avaliação técnica dos métodos disponibilizados por uma aplicação (Web), este tipo de firewall exige um grande poder computacional—geralmente traduzido para um grande custo de investimento;
* Ao interceptar aplicações Web e suas interações com o cliente (o navegador de Web), pode acabar por provocar alguma incompatibilidade no padrão de transações (fato que exigirá, sem sombra de dúvidas, um profundo trabalho de avaliação por parte dos implementadores);
* Alguns especialistas ou engenheiros de tecnologia refutam o firewall de aplicação baseando-se nas seguintes argumentações:
** A tecnologia introduz mais um ponto de falha sem adicionar significativos avanços na tecnologia de proteção;
** O firewall e o IDS/IPS já seriam suficientes para cobrir grande parte dos riscos associados à aplicação Web;
** A tecnologia ainda precisa amadurecer o suficiente para ser considerada um componente indispensável de uma arquitetura de segurança;
Certamente esses argumentos serão bastante discutidos ao longo dos próximos anos como um imperativo para determinar a existência desta tecnologia no futuro.