Neste projeto foi usado um micro para agir na rede como firewall de filtragem de pacotes e proxy. Para filtragem de pacotes recebidos da internet usamos o iptables v1. 4.2, Squid versão 2.5 STABLE14 e sistema operacional Debian Etch
GNU/Linux com o kernel 2.6.18-6-k7. Para controle de relatórios de acesso usei o Sarg 2.2.5 e para controle de pacotes usei o Iptraf 3.0.0. Como método de segurança na autenticação de senhas usei o Kerberos v5.
Descrição dos softwares:
Firewall Iptables
Firewall pode ser definido como uma barreira de proteção, que controla o tráfego de dados entre seu computador e a Internet (ou entre a rede onde seu computador está instalado e a Internet). Seu objetivo é permitir somente a transmissão e a recepção de dados autorizados. Existem firewalls baseados na combinação de hardware e software e firewalls baseados somente em software. Este último é o tipo recomendado ao uso doméstico e também é o mais comum.
Explicando de maneira mais precisa, o firewall é um mecanismo que atua como "defesa" de um computador ou de uma rede, controlando o acesso ao sistema por meio de regras e a filtragem de dados. A vantagem do uso de firewalls em redes, é que somente um computador pode atuar como firewall, não sendo necessário instalá-lo em cada máquina conectada.
Como funciona: Há mais de uma forma de funcionamento de um firewall, que varia de acordo com o sistema, aplicação ou do desenvolvedor do programa. No entanto, existem dois tipos básicos de conceitos de firewalls: o que é baseado em filtragem de pacotes e o que é baseado em controle de aplicações. Ambos não devem ser comparados para se saber qual o melhor, uma vez que cada um trabalha para um determinado fim, fazendo que a comparação não seja aplicável. Conheça cada tipo a seguir. No nosso caso usamos o modo FILTRAGEM DE PACOTES.
Filtragem de pacotes: O firewall que trabalha na filtragem de pacotes é muito utilizado em redes pequenas ou de porte médio. Por meio de um conjunto de regras estabelecidas, esse tipo de firewall determina que endereços IPs e dados possam estabelecer comunicação e/ou transmitir/receber dados. Alguns sistemas ou serviços podem ser liberados completamente (por exemplo, o serviço de e-mail da rede), enquanto outros são bloqueados por padrão, por terem riscos elevados (como softwares de mensagens instantâneas, tal como o ICQ). O grande problema desse tipo de firewall, é que as regras aplicadas podem ser muito complexas e causar perda de desempenho da rede ou não ser eficaz o suficiente.
Este tipo se restringe a trabalhar nas camadas TCP/IP, decidindo quais pacotes de dados podem passar e quais não. Tais escolhas são regras baseadas nas informações endereço IP remoto, endereço IP do destinatário, além da porta TCP usada.
Quando devidamente configurado, esse tipo de firewall permite que somente "computadores conhecidos troquem determinadas informações entre si e tenham acesso a determinados recursos". Um firewall assim, também é capaz de analisar informações sobre a conexão e notar alterações suspeitas, além de ter a capacidade de analisar o conteúdo dos pacotes, o que permite um controle ainda maior do que pode ou não ser acessível.
Iptraf
Iptraf é um programa que possui a função de monitorar a rede a qual o seu computador está conectado, através de dados transmitidos sobre os protocolos IP/TCP e UDP/IP, entre outros. O aplicativo tem a capacidade de exibir diversas estatísticas, como número de pacotes e seus respectivos tamanhos, além da velocidade de suas transmissões. O programa funciona em modo texto, em algum terminal de sistema, como o Konsole.
A princípio é possível aplicar IPTRAF em diversas tecnologias de rede físicas distintas, entre elas: Ethernet, FDDI, SLIPP e interfaces de loopback. Além das várias redes, é possível também utilizar o programa para monitorar diversos protocolos distintos.
Squid
O Squid é um servidor proxy que suporta HTTP, HTTPS, FTP e outros. Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições frequentes de páginas web numa rede de computadores. Ele pode também ser usado como um proxy reverso. No cache são armazenados os objetos da Internet (ex. dados de páginas web) disponíveis via protocolo HTTP, FTP e Gopher num sistema mais próximo ao do cliente.
Os navegadores podem então usar o Squid local como um servidor Proxy HTTP, reduzindo o tempo de acesso aos objetos e reduzindo a utilização da conexão. Isto é muito usado por provedores no mundo todo para melhorar a velocidade de navegação para seus clientes e também em LAN que compartilham a mesma conexão à Internet.
Ele pode fornecer anonimato e segurança dado ser um intermediário no acesso aos objetos. No entanto a sua utilização pode gerar preocupações a respeito da privacidade pois o Squid é capaz de armazenar registos sobre os acessos, incluindo URLs acedidas, a data e hora exatas, e quem acedeu. Isto é usado frequentemente nas empresas para controlarem o acesso à Internet dos seus funcionários.
A aplicação cliente (ex.navegador) deverá especificar explicitamente o servidor proxy que quer utilizar (típico para os clientes de provedores), ou poderá utilizar uma proxy sem qualquer configuração extra: caching transparente, em que todos os pedidos HTTP para fora, são interceptados pelo Squid e todas as respostas são armazenadas em cache. Este é uma típica configuração em corporações (todos os clientes na mesma rede local) e introduz as preocupações com privacidade mencionadas acima.
Squid tem algumas funcionalidades que permitem tornar as conexões anônimas, tais como desabilitar ou alterar campos específicos do cabeçalho dos pedidos HTTP do cliente. Se isto é feito e como, é controlado pela pessoa que administra a máquina que corre o Squid. As pessoas que requisitam páginas numa rede que usa Squid de forma transparente podem não saber que esta informação está a ser registada. Em determinados países, os utilizadores devem ser informados sobre a possível monitorização e registo das ligações internet.
Sarg
O Sarg é um interpretador de logs para o Squid, assim como o Webalizer e o Apache. Sempre que executado ele cria um conjunto de páginas, divididas por dia, com uma lista de todas as máquinas que foram acessadas e a partir de cada máquina da rede veio cada acesso. Ele também mostra os usuários, caso o Squid esteja configurado para exigir autenticação.
A partir daí você pode acompanhar as páginas que estão sendo acessadas, mesmo que não exista nenhum filtro de conteúdo e tomar as medidas cabíveis em casos de abuso. Todos sabem que os filtros de conteúdo nunca são completamente eficazes, eles sempre bloqueiam algumas páginas úteis e deixam passar muitas páginas impróprias. Se você tiver algum tempo para ir acompanhando os logs, a inspeção manual é sempre o método mais eficiente.
Kerberos
Kerberos é um protocolo de autenticação de rede que oferece um método extremamente seguro para autenticar clientes e servidores (entidades de segurança) de uma rede. Essas entidades de segurança usam uma autenticação baseada em chaves mestras e permissões criptografadas.
No modelo de protocolo Kerberos, todas as conexões de cliente/servidor começam com a autenticação. Por sua vez, cliente e servidor seguem uma sequência de ações que se destinam a verificar em uma ponta da conexão se a outra ponta é verdadeira. Se a autenticação tiver êxito, a configuração da sessão será concluída e uma sessão cliente/servidor segura será estabelecida.
Entre os principais benefícios da autenticação Kerberos estão:
- Autenticação mútua. O cliente pode validar a identidade da entidade de servidor e o servidor pode validar o cliente. Com essa documentação, as duas entidades são denominadas "cliente" e "servidor" mesmo que seja possível estabelecer conexões seguras de rede entre servidores.
- Permissões de autenticação seguras. São utilizadas somente permissões criptografadas, e as senhas nunca são incluídas na permissão.
- Autenticação integrada. Uma vez que o usuário faça logon, ele não precisa efetuar logon novamente para acessar algum serviço que suporte a autenticação Kerberos, pois a permissão do cliente não expira. Todas as permissões têm um prazo de validade determinado pelas diretivas do Kerberos que geram a permissão.
O Kerberos oferece um mecanismo para autenticação mútua entre entidades antes do estabelecimento de uma conexão de rede segura. Kerberos usa terceiros confiáveis, o KDC (Key Distribution Center), para facilitar a geração e a distribuição segura de permissões de autenticação e chaves de sessões simétricas. O KDC é executado como um serviço em um servidor seguro e mantém um banco de dados para todas as entidades de segurança de seu território. No contexto de Kerberos, um território é o equivalente a um domínio do Windows.
Mas também temos as desvantagens que precisam ser mostradas:
- Migrar senhas de usuário de um banco de dados UNIX padrão, como o /etc/passwd ou o /etc/shadow, para um banco de dados de senhas Kerberos pode ser entediante, pois não há um mecanismo automatizado para executar esta tarefa.
- O Kerberos tem apenas compatibilidade parcial com os Módulos de Autenticação Plugáveis (PAM), sistema usado pela maioria dos servidores Red Hat Enterprise Linux.
- O Kerberos presume que cada usuário é confiável e está usando uma máquina não confiável em uma rede não confiável. Seu objetivo principal é evitar que senhas não criptografadas sejam enviadas pela rede. No entanto, se alguém além do usuário legítimo tiver acesso à máquina que emite tickets usados para autenticação - chamada de centro de distribuição de chave (KDC) - o sistema de autenticação inteiro do Kerberos estará em risco.
- Para que um aplicativo use o Kerberos, sua fonte deve ser alterada para fazer as chamadas apropriadas às bibliotecas do Kerberos. Os aplicativos modificados desta maneira são considerados kerberizados. Para alguns aplicativos, isto pode ser bastante problemático devido ao tamanho ou design do aplicativo. Para outros aplicativos incompatíveis, as alterações devem ser feitas na maneira como o lado servidor e clientes se comunicam. Vale frisar que isto pode requerer uma programação extensiva. Aplicativos de código fechado que não têm suporte ao Kerberos por padrão são geralmente os mais problemáticos.
- O Kerberos é uma solução 'tudo ou nada'. Se ele for utilizado na rede, quaisquer senhas não criptografadas transferidas a um serviço não-kerberizado estão em risco. Portanto, a rede não se beneficia do uso do Kerberos. Para proteger uma rede com o Kerberos, devem-se utilizar versões kerberizadas de todos os aplicativos cliente/servidor que enviam senhas não criptografadas ou não usar nenhum aplicativo do tipo cliente/servidor.