3.2.3.1 Servidores de Nomes (DNS e NIS(+))

    A Internet usa o Domain Name System (DNS) para realizar resolução de endereço para nomes de host e rede. O Sistema de Informação de Rede (NIS) e NIS+ não são usados na Internet, mas estão sujeitos aos mesmos riscos que o servidor DNS. Resolução nome-endereço é crítica para a operação segura de qualquer rede. Um atacante que pode controlar ou personificar um servidor DNS pode alterar o tráfego para subverter proteções de segurança. Por exemplo, tráfego normal pode ser desviado para um sistema comprometido para ser monitorado; ou, usuários podem ser enganados e fornecer segredos de autenticação. Uma organização deveria criar sites protegidos, bem conhecidos, para atuar como servidores de nomes secundário e proteger seu DNS mestre de ataques por bloqueio de serviço usando roteadores filtradores.

    Tradicionalmente, DNS não tem nenhuma capacidade de segurança. Em particular, a informação retornada de  uma consulta não pode ser conferida para verificar eventual modificação ou se ela originou-se do servidor de nome solicitado. Trabalho tem sido feito para incorporar assinaturas digitais no protocolo que, quando utilizado, permitirá que a integridade da informação seja verificada criptograficamente (veja RFC 2065).

3.2.3.2 Servidores de Senha/Chave (NIS(+) e KDC)

    Servidores de senha e chave geralmente protegem suas informações vitais (i.e., as senhas e chaves) com algoritmos de encriptação. Porém, mesmo uma senha encriptada em uma única via pode ser determinada por um ataque do dicionário (em que são encriptadas palavras comuns para ver se elas correspondem à encriptação armazenada). É então necessário garantir que esses servidores não sejam acessíveis por hosts que não planejam usá-los para o serviço, e mesmo estes hosts deveriam somente estar aptos a acessar o serviço (i.e., serviços gerais, tais como Telnet e FTP, não deveriam ser permitidos por ninguém além dos administradores).

3.2.3.3 Servidores de Autenticação/Proxy (SOCKS, FWTK)

    Um servidor procurador fornece vários aprimoramentos de segurança. Ele permite aos sites concentrar serviços através de um host específico para permitir monitoração, esconder a estrutura interna, etc. Esta concentração dos serviços cria um alvo atraente para um intruso potencial. O tipo de proteção necessário para um servidor de procuração depende muito do protocolo em uso pelo proxy e os serviços sendo fornecidos através dele. A regra geral de limitar o acesso somente a estes hosts que precisam dos serviços, e limitar acesso para estes hosts somente para aqueles serviços, é um bom ponto de partida.

3.2.3.4 Correio Eletrônico

    Sistemas de correio eletrônico (email) foram, por um longo tempo, uma fonte para intrusos arrombadores porque os protocolos de email estão entre os mais antigos e os serviços mais amplamente utilizados. Também, por sua natureza, um servidor de email requer acesso ao mundo externo; a maioria dos servidores de email aceitam entrada de qualquer origem. Um servidor de email geralmente consiste de duas partes: um agente receptor/emissor e um agente de processamento. Desde que email é entregue a todos os usuários, e é normalmente privado, o agente de processamento tipicamente requer privilégios (root) do sistema pra entregar o mail. A maioria das implementações de email executam ambas porções do serviço, o que significa que o agente receptor também tem privilégios do sistema. Isto abre vários furos de segurança que este documento não descreverá. Existem algumas implementações disponíveis que permitem uma separação dos dois agentes. Tais implementações são geralmente consideradas mais seguras, mas ainda exigem instalação cuidadosa para evitar a criação de um problema de segurança.

3.2.3.5 World Wide Web (WWW)

    A Web está crescendo exponencialmente em popularidade devido a sua facilidade de uso e a poderosa habilidade de concentrar serviços de informação. A maioria dos servidores WWW aceitam algum tipo de direção e ação de pessoas acessando seus serviços. O exemplo mais comum é enviar um pedido de um usuário remoto e passar a informação fornecida para um programa executando no servidor para processar o pedido. Alguns desses programas não são escritos com segurança em mente e podem criar furos de segurança. Se um servidor Web está disponível para a comunidade Internet, é especialmente importante que informações confidenciais não sejam colocadas no mesmo host que o servidor. De fato, é recomendado que o servidor tenha um host dedicado que não é confiável pelos outros hosts internos.

    Muitos sites podem querer colocar serviço FTP com seu serviço WWW. Mas isto deveria ocorrer somente para servidores de ftp-anônimo que apenas fornecem informações (ftp-get). Operação put no ftp-anônimo, em combinação com WWW, pode ser perigoso (por exemplo, elas poderiam resultar em modificações para as informações que seu site está publicando para a rede) e eles mesmos fazem as considerações de segurança para cada serviço diferente.

3.2.3.6 Transferência de Arquivo (FTP, TFTP)

    FTP e TFTP permitem aos usuários receber e enviar arquivos eletrônicos em modo ponto-a-ponto. Porém, FTP requer autenticação, enquanto o TFP não necessita. Por esta razão, TFTP deveria ser evitado tanto quanto possível.

    Servidores FTP configurados inadequadamente podem permiter podem permitir aos intrusos copiar, substituir e apagar arquivos à vontade, em qualquer lugar de um host, então é muito importante configurar este serviço corretamente. Acesso a senhas encriptadas e dados proprietários e a introdução de cavalos de Tróia são apenas alguns dos potenciais furos de segurança que podem ocorrer quando o serviço é configurado incorretamente. Servidores FTP deveriam ter seu próprio host. Alguns sites decidem colocar FTP com servidor Web, uma vez que os dois protocolos compartilham considerações de segurança comuns. Porém, na prática não é recomendado, especialmente quando o serviço FTP permite o depósito de arquivos (veja seção em WWW acima). Como mencionado nos parágrafos de abertura da seção 3.2.3, serviços fornecidos internamente para seu site não deveriam ser colocados com serviços oferecidos externamente. Cada um deveria ter seu próprio host.

    TFTP não suporta o mesmo conjunto de funções que o FTP e não tem qualquer segurança. Este serviço deveria somente ser considerado para uso interno, e então ele deveria ser configurado de maneira restrita tal que o servidor tem acesso somente a um conjunto pré-determinado de arquivos (ao invés de todos os os arquivos com permissão de leitura para todos). Provavelmente o uso mais comum do TFTP é para downloading de arquivos de configuração para um roteador. TFTP deveria residir em seu próprio host, e não deveria ser instalado em hosts suportado FTP externo ou acesso Web.

3.2.3.7 NFS

    O Serviço de Arquivo de Rede (Network File System) permite aos hosts compartilhar discos comuns. NFS é freqüentemente usado por hosts sem disco que dependem de um servidor de disco para todas as suas necessidades de armazenamento. Infelizmente, NFS não tem nenhuma segurança embutida. É então necessário que o servidor NFS seja acessível somente pelos hosts que estão usando-o para serviço. Isto é obtido especificando para quais hosts o sistema de arquivos está sendo exportado e de que modo (por exemplo, somente leitura, somente escrita, etc.). Sistemas de arquivos não deveriam ser exportados para qualquer host externo à rede local, uma vez que isso irá necessitar que o serviço NFS seja acessível externamente. Idealmente, o acesso externo ao serviço NFS deveria ser bloqueado por um firewall.

3.2.4 Protegendo a Proteção

    É surpreendente a freqüencia com que um site negligenciará os cuidados mais óbvias na sua segurança deixando o próprio servidor de segurança aberto para ataques. Baseado nas considerações discutidas previamente deve estar claro que: o servidor de segurança não deveria ser acessível fora do site; deveria fornecer mínimo acesso, exceto para a função de autenticação, para usuários no site; e não deveria ser localizado com quaisquer outros servidores. Além disso, todo acesso ao nodo, incluindo acesso ao próprio serviço, deveria ser "anotado" (registrando em logs) para fornecer um "rastro" em caso de uma quebra de segurança.

3.3 Firewalls

    Uma das medidas de segurança mais amplamente empregada e publicada em uso na Internet é um "firewall". Firewalls tem recebido a reputação de serem 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 para 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 é 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 (de modo a otimizar a filtragem, 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 do 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 hosts, 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), e 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 benefícios de segurança significantes 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 interligadas via Internet.

    Firewalls são pensados como uma maneira de manter intrusos do lado de fora, mas eles também 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: discos (Write Once Read Many); logs em papel; e logs centralizados através do utilitário "syslog". Outra técnica é usar um impressora serial falsa, mas ter uma porta serial 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 U$10,000 e alcançam mais de U$250,000. Firewalls desenvolvidos pelo próprio site podem ser construídos a menor custo. 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 significativa habilidade e conhecimento do TCP/IP. Isto não deveria ser tentado trivialmente pois a sensação de segurança (não preenchida apropriadamente) é pior a longo prazo 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.