O firewall foi criado com regras para compartilhar a internet, lembrando que temos 2 interfaces de rede, sendo 1 para (rede local) e outra para receber a internet a (Ethernet). Nele, acrescentei as regras para redirecionamento, liberação e bloqueio de portas, liberação da rede local e loopback, bloqueio para rede externa, Nat, mascaramento da rede, redirecionamento da porta 80 para o proxy e o bloqueio do restante. Ainda estou estruturando da o firewall da melhor maneira, mas por enquanto é o necessário.
O Squid funciona como o gerente do acesso a internet, liberando o que for preciso e bloqueando o restante. Nele criei regras para o bloqueio de sites, palavras, streamings, downloads e regras para liberar os mesmos quando for preciso. Sua autenticação é feita no Active Directory via NTLM. Ele autentica pela senha do usuário logado na estação de trabalho.
Como o NTLM funciona
As etapas a seguir apresentar um esboço de autenticação NTLM não interativo. O primeiro passo fornece as credenciais NTLM do utilizador e só ocorre como parte da autenticação interativa (logon) do processo.
Autenticação Interactive apenas - um usuário acessa um computador cliente e fornece um nome de domínio, nome de usuário e senha. hash O cliente calcula a criptografia hash da senha e descarta a senha real.
plaintext - o cliente envia o nome de usuário para o servidor (no texto original).
nonce - o servidor gera um byte aleatório número 16, chamado de desafio ou nonce, e envia para o cliente. O cliente criptografa o desafio com o hash da senha do usuário e retorna o resultado para o servidor. Isso é chamado de a resposta.
O servidor envia os seguintes três itens para o controlador de domínio:
- Nome de usuário
- Desafio enviado para o cliente
- Resposta recebida do cliente
O controlador de domínio usa o nome de usuário para recuperar o hash da senha do usuário do banco de dados Security Account Manager. Ele usa este hash de senha para criptografar o desafio.
O controlador de domínio compara o desafio é criptografado computadorizada (na etapa 6) a resposta calculada pelo cliente (na etapa 4). Se forem idênticos, a autenticação é bem sucedida.
O kerberos funciona como segurança para essa autenticação, pois invés de se usar as senhas e usuários como em outros métodos de autenticação ele usa "Tickets". Vamos entender melhor.
Vejamos como o Kerberos trabalha. Usuários e serviços que utilizem o Kerberos possuem chaves armazenadas no AS. As chaves dos usuários são derivadas de senhas escolhidas por estes, e as chaves dos serviços são geradas aleatoriamente.
Para esta explicação, imaginemos que as mensagens são escritas em papel, e são criptografadas colocando-as em uma caixa-forte, associada a uma chave.
Primeiro o usuário envia uma mensagem ao AS: "Eu, J. Random User gostaria de falar com o servidor Foo".
Quando o AS recebe a mensagem, ele faz duas cópias de uma nova chave registrada. Estas chaves são chamadas de chaves de sessão. Elas serão usadas nas trocas diretas entre serviço e usuário.
Ele coloca uma das chaves de sessão na Caixa 1, junto com um pedaço de papel com o nome "Servidor Foo" escrito. A caixa é trancada com a chave do usuário (o AS conhece todas as chaves de usuário e todas as chaves de serviço).
Por que este papel aqui? Devemos nos lembra que a caixa é na realidade apenas uma mensagem criptografada, e que a chave de sessão é uma sequência randômica de bytes. Se a Caixa 1 somente contivesse a chave de sessão, o usuário não teria como reconhecer se a resposta veio do AS, ou não saberia se a decriptação teve sucesso. Pela adição da mensagem "Servidor Foo", o usuário (mais precisamente a aplicação do usuário) poderia saber se a caixa veio do AS, e se a decriptação obteve sucesso.
Ele coloca a outra chave de sessão em uma Caixa 2, junto com um pedaço de papel com o nome "J. Random User". Esta caixa é fechada com a chave do serviço.
Ele envia ambas as caixas ao usuário. Na versão 4 do Kerberos, a Caixa 2 era colocada (sem necessidade) dentro da caixa 1, mas na versão 5 isto foi corrigido. O usuário destranca a Caixa 1 com sua chave, extraindo assim a chave de sessão e o papel com o nome "Servidor Foo" escrito nele.
O usuário não consegue abrir a Caixa 2 (ela foi trancada com a chave do serviço, que só o AS e o serviço conhecem). Então ele coloca um pedaço de papel com a hora corrente numa Caixa 3, e tranca esta com chave de sessão, e envia ambas ao serviço.
O serviço abre a Caixa 2 com sua própria chave, extraindo a chave de sessão e o papel com "J. Random User" escrito nele. Ele abre a Caixa 3 com a chave de sessão para extrair o pedaço de papel com a hora corrente nele. Estes itens demonstram a identidade do usuário.
O timestamp é colocado na Caixa 3 para prevenir que alguém faça uma cópia da Caixa 2 (devemos nos lembrar que as caixas são na verdade mensagens eletrônicas) e a utilize para se passar pelo usuário mais tarde. Como os relógios da rede nunca são perfeitamente sincronizados, uma pequena margem (em geral 5 minutos) é permitida entre o timestamp e a hora atual. Além disto, o serviço mantém uma lista das autenticações recebidas recentemente para garantir que elas não foram reenviadas.
A chave de serviço é gerada aleatoriamente e armazenada em um arquivo especial chamado de SECRETE KEY FILE. O Kerberos assume que este é seguro, que ninguém pode copiá-lo e se passar pelo serviço.
No Kerberos, a Caixa 2 é chamada de ticket, e a Caixa 3 de authenticator. O authenticator tipicamente contém mais informações do que as listadas acima. Algumas destas informações são adicionadas em decorrência do fato de que as mensagens são eletrônicas (por exemplo, existem checksum). Pode existir também uma chave secreta usada para criptografar as mensagens que serão trocadas entre usuário e serviço após a autenticação, garantindo assim a privacidade.