Segurança no mundo Apple: Kerberos

Kerberos

No artigo de hoje convidei o meu amigo e sócio Patrick Tracanelli (especialista em Unix pela Universidade da Califórnia – Berkeley, Certificado CISSP, Security+, professor MBA Gestão de SI Universidade FUMEC) para complementar a parte teórica sobre o assunto Segurança da Informação e onde o Kerberos se encaixa nesse cenário. Os fundamentos e conceitos apresentados até então são de extrema importância para a compreensão e o aprendizado, uma preparação para os próximos artigos nos quais escreverei sobre dicas “faça-você-mesmo”, do tipo “hands-on”.

Não seja um script kiddie, busque conhecimento! 😉

·   ·   ·

por Patrick Tracanelli

A segurança da informação trata, historicamente, das abordagens de segurança e das boas práticas fundamentadas em três pilares. Os pilares mais conhecidos são os apresentados em sua forma mais conhecida, pela primeira vez, na série de livros de melhores práticas de segurança da informação do governo britânico, a norma BS7799, composta (abrangida em três partes: BS7799-1, BS7799-2, BS7799-3), que por sua vez evoluiu ao longo dos anos para a Norma Internacional de Segurança da Informação, a ISO 17799 (hoje em dia renumerada na série ISO 27002 e ISO 27001). Essa norma internacional é adotada no Brasil pela ABNT, dando origem a NBR ISO/IEC 27002 e NBR ISO/IEC 27001. Ou seja a norma internacional é também a Norma Brasileira de Segurança de Informação. E, como toda norma — ou melhor, prática —, tem sua relevância no ordenamento jurídico brasileiro (a ordem/prioridade com as regras que constituem o estado de direito são aplicadas).

Os três pilares trabalhados pela Norma (em maiúsculas) são:

  • Confidencialidade: a garantia que apenas quem tem o direito ou a necessidade de ter acesso a informação, o terá;
  • Integridade: a garantia que a informação acessada/manipulada não foi inadequadamente modificada e encontra-se em seu estado original desejado;
  • Disponibilidade: a garantia que a informação estará disponível para quem precisar, quando precisar.

Como pode-se observar, estes três pilares são amplamente genéricos e aplicam-se a cenários diversos; portanto, a partir de cada um, inicia-se uma jornada na segurança de informação a fim de explorar recursos técnicos e aprimorar o entendimento cultural de como tratar a informação de maneira a satisfazer essas necessidades de garantias. Na prática, a Norma de SI é aplicada para gestores de SI. A Norma sugere o que deve ser feito, que cuidados devem ser tomados, quais validações devem ser testadas, mas não diz como fazer. É nesse ponto que ela se alinha com frameworks de controle de qualidade de TI como CobIT, ITILv3, e com outras normas e melhores práticas.

Tanto a Norma de Segurança da Informação quanto o outrora citado padrão de computação segura do departamento de defesa dos EUA (TCSEC, o Trusted Computer Systems Evaluation Criteria) buscam através de diversas práticas consolidades e uniformes conseguir os objetivos da tríade CID (Confidencialidade, Integridade, Disponibilidade), invariavelmente chegando em uma segunda tríade, os chamados pilares técnicos da segurança da informação.

Os pilares técnicos da SI são o AAA:

  • Autenticação: a comprovação técnica que o usuário é quem ele afirma ser;
  • Autorização: a validação da permissão que aquele usuário autenticado pode ou não fazer o que ele quer fazer;
  • Auditoria ou Contabilidade (Accounting): a possibilidade de avaliar o que foi feito, quando, e por quem, ou ainda o quanto.

Estes pilares técnicos que formam a tríade AAA são amplamente discutidos em documentos com as NIST Special Publications, Defesa em Profundidade, entre outros adotados amplamente.

Existem diversos subsistemas técnicos capazes de implementar cada um desses três pilares individualmente, por exemplo:

  • Autenticação: é essencialmente dividida em três princípios básicos: saber alguma coisa (senha), ser alguma coisa (biometria), ter alguma coisa (cartões, tokens); hoje no entanto tem-se estudado autenticação baseada em estar em algum lugar (endereço IP, porta do switch, posicionamento GPS, etc), fazer de uma maneira (escrever, desenhar) ou ainda saber quando fazer (senha por momento, ou sequencial); na prática o uso de apenas uma técnica, é chamada autenticação simples, a combinação de duas ou mais, autenticação forte: por isso bancos tendem a usar senha (saber) com cartões (ter) e algumas vezes token (saber agora), etc. Aqui você pode imaginar como as opções técnicas são amplas.
  • Autorização: aqui o mundo Unix explora desde as simples permissões e propriedade (permissões POSIX), a permissões extendidas (ACLs), dividindo os métodos de autorização em sistemas operacionais em DAC (Discretionary Access Control): discricional, ou seja, explicitamente declarado, descrito, associado ao objeto no qual a permissão precisa ser testada (arquivos, processos, páginas de memória, portas e sockets de rede, etc), MAC (Mandatory Access Control): imperativo, o kernel decide o que e como, o kernel tem uma tabela do que é permitido ou não e ele força, as permissões não existem associadas a arquivos ou usuários mas sim regras em tabelas do sistema, existem inúmeras regras, que são as chamadas MAC Policy (como Seatbelt, Sandbox e Gatekeeping no OS X), RBAC (Role Based Access Control): usuários e objetos são marcados com papéis (roles) e artefatos e as regras de acesso são aplicadas aos artefatos com base aos papéis (ex.: vendedor, gerente, técnico, consultor, diretor…); existem ainda diversas variações. Você pode imaginar técnicamente a miríade de formas de exercer cada possibilidade.
  • Auditoria/Accounting: vão desde os mais simples logs, a técnicas de informar quanto de recurso tem sido utilizado por quem, ou logs avançados como do subsistema de trails do POSIX.1e implementados no OS X, ou um mero System Accounting que permite saber que usuário estava consumindo mais memória ou CPU em uma data específica.

Aqui o assunto é amplo, as opções são vastas, para implantação de soluções técnicas que almejam oferecer um desses pilares. No entanto existem subsistemas capazes de combinar mais de um desses pilares, oferecendo tecnologia para implantar dois (AA) ou até três (AAA) dos pilares, como por exemplo:

  1. TACACS (Terminal Access Controller Access-Control System);
  2. RADIUS (Remote Authentication Dial In User Service);
  3. Kerberos.

Conheceremos um pouco mais do terceiro, o Kerberos, e como ele é implementado no OS X (e iOS, a partir da versão 5.0).

Kerberos

Kerberos é um protocolo de Autenticação e Autorização que pode transportar também informações posteriormente utilizadas para Auditoria de atividades, portanto, implementa AA e apoia o terceiro A da tríade. É um protocolo criado pelo Instituto de Tecnologia de Massachusetts (MIT) e usa o conceito de autenticação segura intermediada por um servidor centralizado. A segurança é implementada por meio do protocolo simétrico Needham-Schroeder.

É portanto um protocolo de autenticação, que tem como principal característica prática a possibilidade de oferecer recursos de autenticação única (Single Sign-On), permitindo que os usuários de autentiquem em múltiplos serviços sem a necessidade de digitar sua senha ou retransmiti-las pela rede múltiplas vezes. Cada sistema que suporta Kerberos gera seus próprios requisitos, oferecendo serviços seguros plenamente compatíveis com outras implementações Kerberos.

O OS X faz uso do Kerberos para tornar mais fácil o compartilhamento de recursos e serviços com outros computadores. Implementa o conceito de KDC, um Centro de Distribuição de Chaves, que apesar de não ser necessário na comunicação simples entre apenas dois computadores Apple, é utilizado em um ambiente mais complexo de rede, com um servidor e múltiplos clientes (KDC é implementado no OS X Server).

Quando você se conecta em um computador que suporta Kerberos, você recebe um ticket, e esse ticket é outro ponto fudamental no conceito do Kerberos. Um ticket é uma permissão especial para fazer alguma coisa, e essa permissão é válida por um tempo determinado — como se fosse um voucher com prazo de validade. Enquanto seu ticket for válido você pode fazer qualquer coisa que ele autorize, sem a necessidade de uma nova autenticação a cada autorização, mesmo de serviços distintos. Quando seu ticket expira, é necessário nova autenticação para revalidá-lo.

Por exemplo, ao se conectar no Mac de seu amigo através do recurso de Screen Sharing por exemplo, é possível se logar na mesma máquina do amigo no serviço de AFP (pasta compartilhada) sem uma nova autenticação, pois o ticket que autoriza o compartilhamento de tela também autoriza o acesso ao compartilhamento de arquivos, e você já está autenticado no primeiro, com o ticket válido portanto.

No OS X a comunicação e troca de tickets Kerberos acontece primariamente em serviços que utilizam o protocolo Bonjour e que possam ser acessados pelo Finder, através do menu Go por exemplo. No OS X a gestão dos certificados Kerberos e certificados KDC são realizadas através do utilitário Acesso às Chaves (Keychain Access).

Na linha de comando, o ambiente é tipicamente BSD Unix: o comando knit é utilizado para obter e fazer cache dos tickets de autorização; o kpasswd permite a troca e definição da senha utilizada na comunicação entre você e o servidor KDC. O kdestroy permite que você antecipadamente destrua os tickets válidos, invalidando-os antes de sua expiração. O comando klist permite que você liste todos os tickets em uso no momento.

Portanto o Kerberos permite de forma segura, de acordo com a segurança oferecido pelo protocolo de desafio/resposta simétrico Needham-Schroeder, e também transporta detalhes da autenticação provida. Esses detalhes do que foi permitido pra quem e quando podem ser utilizados em logs e eventos de auditoria posteriormente.

O legal é que o processo de expiração ou destruição de uma coleção de tickets Kerberos pode ainda carregar detalhes quantitativos sobre o que foi feito enquanto o usuário estava logado (e o ticket válido), oferecendo recursos que podem ser utilizados para Accounting portanto.

Subsistemas e tecnologias como Kerberos são alguns dos exemplos em que a tecnologia de segurança da informação não precisa necessariamente “engessar” o usuário ou criar mais trabalho/dificuldades para aumentar a segurança. Ao contrário, permite aumento de facilidade, ao ponto de oferecer autenticação única, ao mesmo tempo que eleva a segurança do ambiente, como a segurança deveria (mas nem sempre consegue) ser: transparente, simples… às vezes, imperceptível.

Posts relacionados

Comentários