3.3 Firewalls
Uma das medidas de segurança mais amplamente empregada e publicada em uso na Internet é um "firewall". Firewalls tem sido determinados a reputação de uma panacéia geral para muitas, senão todas, questões de segurança da Internet. Eles não são. Firewalls são apenas outra ferramenta em questão pra segurança de sistema. Eles fornecem um certo nível de proteção e são, em geral, uma maneira de implementar a política de segurança no nível de rede. O nível de segurança que um firewall fornece pode variar tanto quanto o nível de segurança em uma máquina particular. Existe o tradicional "trade-off" entre segurança, facilidade de uso, custo, complexidade, etc.
Um firewall é qualquer um dos vários mecanismos usados para controlar e observar o acesso de e para uma rede com a finalidade de protegê-la. Um firewall atua como um gateway através do qual todo o tráfego de e para a rede ou sistemas protegidos passa. Firewalls ajudam a colocar limitações na quantidade e tipo de comunicação que ocorre entre a rede protegida e a outra rede (por exemplo, a Internet, ou outra parte da rede de um site).
Um firewall geralmente é uma maneira de construir uma parede entre uma parte de uma rede, uma rede interna de uma empresa, por exemplo, e outra parte, a Internet global, por exemplo. A única característica sobre esta parede é que precisam existir maneiras para algum tráfego com características particulares passarem através de portas cuidadosamente monitoradas ("gateways"). A parte difícil é estabelecer o critério pelo qual os pacotes são permitidos ou negados acesso pelas portas. Livros escritos sobre firewall usam terminologia diferente para descrever as várias formas de firewalls. Isto pode ser confuso para administradores de sistemas que não são familiares com firewalls. O ponto a observar aqui é que não existe nenhuma terminologia fixa para a descrição de firewalls.
Firewalls não são sempre, ou mesmo
tipicamente, uma única máquina. Preferivelmente, firewalls
são freqüentemente uma combinação de roteadores,
segmentos de rede, e computadores host. Portanto, para o propósito
desta discussão, o termo "firewall" pode consistir em mais de um
dispositivo físico. Firewalls são tipicamente construídos
usando dois diferentes componentes, roteadores de filtragem e servidores
proxy.
Roteadores de filtragem são o componente
mais fácil de conceituar em um firewall. Um roteador move dados
de um lado para outro entre duas (ou mais) redes diferentes. Um roteador
"normal" pega um pacote da rede A e encaminha-o para seu destino na rede
B. Um roteador de filtragem faz a mesma coisa mas decide não apenas
como rotear o pacote mas se deveria rotear o pacote. Isto é feito
instalando uma série de filtros pelos quais o roteador decide o
que fazer com qualquer pacote de dados.
Uma discussão referente a capacidades de uma marca particular de roteador, executando uma versão de software específica está fora do escopo deste documento. Porém, quando avaliando um roteador para ser usado para filtragem de pacotes , o seguinte critério pode ser importante quando da implementação de uma política de filtragem: endereço IP origem e destino, números de porta TCP origem e destino, estado do bit "ACK" no pacote TCP, números de porta UDP origem e destino, e direção do fluxo de pacotes (i.e., A->B ou B->A). Outra informação necessária para construir um esquema de filtragem seguro é se o roteador reordena instruções de filtro (projetada para otimizar filtros, isto algumas vezes pode mudar o significado e causar acesso não pretendido), e se é possível aplicar filtros para pacotes que chegam e que saem em cada interface (se o roteador filtra somente pacotes que saem então o roteador é externo aos seus filtros e pode ser mais vulnerável para atacar). Além do roteador ser vulnerável, esta distinção entre aplicar filtros em pacotes que chegam ou que saem é especialmente relevante para roteadores com mais de duas interfaces. Outras questões importantes são a capacidade de criar filtros baseado nas opções do cabeçalho IP e o fragmento de estado do pacote. Construir um bom filtro pode ser muito difícil e requer um bom entendimento do tipo de serviços (protocolos) que serão filtrados.
Para melhor segurança, os filtros geralmente restringem acesso entre as duas redes conectadas a apenas um host, o bastion host. Só é possível ter acesso para a outra rede através deste bastion host. Como somente este host, em lugar de algumas centenas de hostos, pode ser atacado, é mais fácil manter um certo nível de segurança pois somente este host tem que ser muito cuidadosamente protegido. Para tornar disponível recursos para legitimar usuários através deste firewall, serviços tem que ser passados adiante pelo bastion host. Alguns servidores tem esta capacidade embutida (como servidores DNS ou servidores SMTP), para outros serviços (por exemplo, Telnet, FTP, etc.), servidores proxy podem ser usados para permitir acesso aos recursos através do firewall de modo seguro.
Um servidore proxy é um modo para concentrar serviços de aplicação através de uma única máquina. Tipicamente existe uma única máquina (o bastion host) que atua como um servidor proxy para uma variedade de protocolos (Telnet, SMTP, TFP, HTTP, etc.) mas podem existir computadores host individuais para cada serviço. Ao invés de conectar diretamente um servidor externo, o cliente conecta para o servidor proxy que em troca inicia uma conexão para o servidor externo solicitado. Dependendo do tipo de servidor proxy usado, é possível configurar clientes internos para realizar este redirecionamento automaticamente, sem conhecimento para o usuário, outros podem requerer que o usuário conecte diretamente para o servidor proxy e entao iniciar a conexão através de um formato específico.
Existem significantes benefícios de segurança que podem ser obtidos pelo uso de servidores proxy. É possível adicionar listas de controle de acesso para protocolos, exigir que usuários ou sistemas forneçam algum nível de autenticação antes do acesso ser concedido. Servidores proxy mais espertos, algumas vezes chamados Gateways da Camada de Aplicação, podem ser escritos de modo que entendam protocolos específicos e podem ser configurados para bloquear somente subseções do protocolo. Por exemplo, um Gateway de Aplicação para FTP pode reconhecer a diferença entre o comando "put" e o comando "get"; uma organização pode desejar permitir aos usuários realizar "get" de arquivos da Internet, mas não permitir "put" de arquivos internos no servidor remoto. Em contraste, um roteador de filtragem poderia ou bloquear todo acesso ao FTP, ou não, mas não um subconjunto.
Servidores proxy também podem ser configurados para encriptar fluxos de dados baseado em uma variedade de parâmetros. Uma organização pode usar esta característica para permitir conexões encriptadas entre duas localizações cujos únicos pontos de acesso estão na Internet.
Firewalls são pensados como uma maneira de manter intrusos do lado de fora, mas eles são usados geralmente como uma maneira de legitimar usuários em um site. Existem muitos exemplos onde um usuário válido poderia precisar acessar regularmente o site "home" durante viagens para apresentações e conferências, etc. Acesso à Internet geralmente é disponível mas pode ser através de uma máquina ou rede não confiável. Um servidor proxy configurado corretamente pode permitir os usuários corretos no site enquanto bloqueia acesso para outros usuários.
O maior esforço atual em técnicas de firewall é encontrar uma combinação de um par de roteadores de filtragem com um ou mais servidores proxy na rede entre os dois roteadores. Esta configuração permite ao roteador externo bloquear qualquer tentativa de usar a camada IP subjacente para quebrar a segurança (IP spoofing, roteamento pela origem, fragmentos de pacotes), enquanto permite ao servidor proxy tratar potenciais furos de segurança nos protocolo das camadas superiores. A finalidade do roteador interno é bloquear todo tráfego exceto para o servidor proxy. Se esta configuração é implementada rigorosamente, pode ser obtido um alto nível de segurança.
Muitos firewalls fornecem capacidade de log que pode ser adequado para fazer administração mais conveniente da segurança da rede. A função de log pode ser centralizada e o sistema pode ser configurado para enviar alertas para condições anormais. É importante monitorar regularmente estes logs para qualquer sinal de intrusões ou tentativas de arrombamento. Desde que alguns intrusos tentarão encobrir seus ataques pela edição dos logs, é desejável proteger esses logs. Uma variedade de métodos está disponível, incluindo: escreva uma vez, leia muitos (WORM) drives; logs em papel; e logs centralizados através do utilitário "syslog". Outra técnica é usar um impressora serial falsa, mas ter uma porta srial conectada para uma máquina isolada ou PC que mantêm os logs.
Firewalls estão disponíveis em uma ampla faixa de qualidade e intensidade. Pacotes comerciais iniciam em aproximadamente $10,000US e alcançam mais de $250,000US. Firewalls desenvolvidos pelo próprio site podem ser construídos para quantias menores de capital. Deve-se lembrar que a configuração correta de um firewall (comercial ou "caseiro") requer uma significante habilidade e conhecimento do TCP/IP. Ambos os tipos requerem manutenção regular, instalação de patches de softwares e atualizações, e monitoração regular. Quando realiza-se o orçamento de um firewall, estes custos adicionais deveriam ser considerados além do custo dos elementos físicos do firewall.
Como um aparte, construir uma solução "caseira" para um firewall requer significante habilidade e conhecimento do TCP/IP. Isto não deveria ser tentado trivialmente pois a sensação de segurança percebida é pior ao longo da execução do que saber que não existe nenhuma segurança. Como com todas as medidas de segurança, é importante decidir na ameaça, o valor do recurso a ser protegido, e os custos para implementar segurança.
Uma nota final sobre firewalls. Eles podem ser uma
grande ajuda quando implementando segurança para um site e protegem
contra uma grande variedade de ataques. Mas é importante ter em
mente que eles são apenas uma parte da solução. Eles
não podem proteger seu site contra todos os tipos de ataque.