kerberos: conceitos, melhores práticas e particularidades vladimir michel bacurau magalhães...

Post on 18-Apr-2015

113 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Kerberos: conceitos, melhores práticas e particularidades

Vladimir Michel Bacurau Magalhãestwitter | Blog | LinkedIn

Instrutor | Consultor | Administrador de Bancos de Dados MCT | MCITP | MOS | MCTS | MMI | ITIL V3 | COBIT V4.1 | ISO 27002

2

Sobre PASS:

PASS Chapter & Virtual ChapterMais de 260 Organizações no nível Mundial + 20 Organizações Virtuais

SQLSaturday~200 Eventos no Mundo, um dia inteiro de treinamento livre sobre SQL Server

24 Hours of PASSEventos online, gratuítos. Existem edições locais (Português, Espanhol, Russo, … )

SQLRallyEventos regionais, pagos. (European Nordic, Rússia, …)

PASS SummitEvento pago de 3 dias + 2 dias de Workshops, conta com as equipas da Microsoft e

dos melhores Profissionais.

3

Agenda

Formas de Autenticação

NTLM x Kerberos

Vantagens do Kerberos

Implementação

Troubleshooting e Ferramentas

4

Formas de autenticação

SQL (Mixed-Mode) Windows (Trusted)

5

Formas de autenticação

6

Formas de autenticação

SQL (Mixed-Mode) Windows (Trusted)

Controle de acessos extra

Envia senha pela rede

Usuário admin (SA) conhecido

Acessos de domínios não confiáveis

Acesso customizado em aplicações

web

Controle unificado de acessos na rede

Não envia senha pela rede

Permite o controle por grupos

Acessa apenas domínios com

confiança

Maior número de políticas de controle

(ex: não permitir alterar senha)

7

Formas de autenticação

Autenticação Windows, (Windows 2000 em diante):

Utiliza algoritmo Negotiate (SPNEGO)

SPNEGO permite que cliente e servidor negociem protocolo

de autenticação que será utilizado

Tenta por padrão Kerberos

Caso não consiga, utiliza NTLM (NTLM fallback)

8

NTLM x Kerberos

NTLM

• Cliente envia nome de usuário para o servidor

• Servidor gera e envia um “desafio” para o cliente

• Cliente encripta o “desafio” utilizando a senha do usuário

• Cliente envia o “desafio” encriptado para o servidor

• Servidor envia resposta do cliente para o Controlador de

domínio

• Controlador de domínio valida resposta e envia resultado

para servidor

9

10

NTLM x Kerberos

Kerberos• Usuário se autentica com o KDC

• O Authentication Service (AS), um componente do KDC, recebe requisição de

autenticação e a valida

• KDC envia um ticket para o cliente

• Cliente recebe o ticket e o coloca em cache

• Ao tentar utilizar um recurso da rede o cliente envia o ticket recebido ao

componente TGS do KDC

• KDC retorna um ticket de sessão para o cliente

• Cliente envia ticket de sessão para recurso de rede que deseja acessar

• Servidor avalia o ticket

• Servidor libera ou bloqueia acesso do cliente

11

12

NTLM x Kerberos

Cérbero/Cerberus Mitologia Grega Cão que guardava a entrada do

Hades, reino subterrâneo dos mortos

As 3 cabeças do Kerberos representam o cliente, servidor e o KDC .

13

Vantagens do Kerberos

Problemas do NTLM Vantagens do Kerberos

Permite “ataques de replay”

Assume que o servidor é confiável

Requer mais tráfego de autenticação

do que o Kerberos

Autenticação Mutua – cliente

autentica o serviço e o serviço

autentica o cliente

Padrão aberto

Permite delegação

14

Vantagens do Kerberos

Pré-autenticação

15

Vantagens do Kerberos

Evitando ataques de replay

Se pré-autenticação estiver habilitada:

Time stamp encriptado utilizando o hash da senha do usuário

KDC desencripta o time stamp e o valida

Cuidado com o horário de verão!

16

Implementação

Security Support Provider Interface (SSPI)

• Permite que uma aplicação use vários modelos de segurança disponíveis sem alterar a interface para o sistema de segurança.

• Provê uma camada de abstração entre protocolos de nível de aplicação e protocolos de segurança.

17

Implementação

18

Implementação

19

Implementação

20

Implementação

Pré-requisitos:

• Cliente e servidor devem fazer parte do mesmo domínio do

windows ou domínios com confiança entre eles

• O SPN deve estar registrado no Active Directory

• Cliente deve conectar ao servidor utilizando TCP/IP (ou seja,

named pipes, shared memory não permitem utilizar o

Kerberos!)

21

Implementação

O que é um SPN?

• Service Principal Name informa o cliente sobre o serviço • Formado de 3 ou 4 das partes abaixo (porta do serviço é

opcional)• Tipo/Classe do serviço

• Database Engine (MSSQLSvc)• Analysis Services (MSOLAPSvc.3)• SQL Browser (MSOLAPDisco.3)

• Nome do servidor• A porta (se necessária)• A conta com a qual o serviço está executando• Precisaremos de TODOS estes itens corretos

22

Implementação

Como configuro o SPN?

• Administrador do domínio, conta de sistema do computador ou uma conta como a Network Service.

• Como normalmente não configuramos (boas práticas!) o SQL Server com nenhum desses tipos de contas o mesmo não será capaz de configurar o SPN por conta própria.

23

Implementação

• SQL Server até tentará registrar o SPN automaticamente se o protocolo TCP/IP estiver ativo

• Irá gerar mensagens no log como a seguinte:

The SQL Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service. Error: 0×2098. Failure to register an SPN may cause integrated authentication to fall back to NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies.

24

Implementação

25

Implementação

SETSPN -? Classe/<Nome do Servidor>:<porta> <Conta de Serviço>

Onde “?” pode ser:

A – adiciona o SPN

S – adiciona o SPN, após verificar se ele já não existe*

X – Pesquisa por duplicidade

F – Pesquisa por duplicidade, em toda a floresta

Q – Consulta a existência de um SPN

D – remove SPN

R – resetar SPN

L – Listar SPN

26

Implementação

SELECT s.session_id , c.connect_time , s.login_time , s.login_name , c.protocol_type , c.auth_scheme , s.HOST_NAME , s.program_name

FROM sys.dm_exec_sessions s INNER JOIN sys.dm_exec_connections c

ON s.session_id = c.session_id

27

Implementação

28

Implementação

SETSPN –S MSSQLSvc/<servername.domainname> accountname

SETSPN –D MSSQLSvc/<servername.domainname> accountname

SETSPN –L domain\accountname

SETSPN -X

29

Implementação

Domínio: exemplo.localServidor: banco01Conta: exemplo\SQL

SETSPN –S MSSQLSvc/banco01.exemplo.local exemplo\SQLSETSPN –S MSSQLSvc/banco01 exemplo\SQL

SETSPN –S MSSQLSvc/banco01.exemplo.local:1433 exemplo\SQLSETSPN –S MSSQLSvc/banco01:1433 exemplo\SQL

30

Implementação

Domínio: exemplo.localServidor: banco01Conta: exemplo\SSRS

SETSPN -S http/banco01 exemplo\SSRS SETSPN -S http/banco01.exemplo.local exemplo\SSRS

Com host header

SETSPN -S http/www.relatorios.com.br exemplo\SSRS

31

Implementação

Domínio: exemplo.localServidor: banco01Conta: exemplo\SSAS | exemplo\browser

SETSPN -S msolapsvc.3/banco01 Domain\SSAS

-SQL Browser (pode ser necessário com instâncias nomeadas do SSAS!)

SETSPN –S MSOLAPDisco.3/banco01SETSPN –S MSOLAPDisco.3/banco01.exemplo.local

SETSPN –S MSOLAPDisco.3/banco01 exemplo\browserSETSPN –S MSOLAPDisco.3/banco01.exemplo.local exemplo\browser

32

Implementação

Domínio: exemplo.localServidor: banco01Conta: exemplo\SQL

SETSPN –D MSSQLSvc/banco01.exemplo.local exemplo\SQL

SETSPN –L exemplo\SQL

SETSPN -X

33

Implementação

Domínio: exemplo.localServidor: banco01Conta: exemplo\SQL

SETSPN –F –S MSSQLSvc/banco01.exemplo.local exemplo\SQL

34

Troubleshooting e Ferramentas

35

Troubleshooting e Ferramentas

36

Troubleshooting e Ferramentas

37

Troubleshooting e Ferramentas

38

Troubleshooting e Ferramentas

39

Troubleshooting e Ferramentas

40

Troubleshooting e Ferramentas

41

Troubleshooting e Ferramentas

RSReportServer.config

<Authentication> <AuthenticationTypes>           <RSWindowsNegotiate/> </AuthenticationTypes> <EnableAuthPersistence>true</EnableAuthPersistence> </Authentication>

42

Troubleshooting e Ferramentas

• Klist – lista os tickets do usuário• cuidado com o UAC• Mostrará apenas tickets daquela sessão

• Disponível no WS 2008 em diante

• Até o WS 2003 estava disponível no resource kit tools

43

Troubleshooting e Ferramentas

44

Troubleshooting e Ferramentas

• Klist purge – remove todos os tickets do usuário atual

45

Troubleshooting e Ferramentas

46

Troubleshooting e Ferramentas

• klist –li 0x3e7• klist –li 0x3e7 purge

• 0x3e7 é a sessão da máquina (“Local System”)

• Com a opção purge você pode “reiniciar” o group membership sem ter de realizar um reboot

47

Troubleshooting e Ferramentas

48

Troubleshooting e Ferramentas

• Kerbtray – Lista tickets do usuário através de uma GUI

• Apenas exibe os tickets

• Disponível no resource kit tools do WS 2003

49

Troubleshooting e Ferramentas

50

Troubleshooting e Ferramentas

• Utilize portas estaticas para a database engine!

• Há programas que não permitem especificar a porta!

• Tente utilizar:• SERVIDOR\INSTANCIA,PORTA• SERVIDOR\INSTANCIA:PORTA

51

Troubleshooting e Ferramentas

52

Troubleshooting e Ferramentas

SQL Native Client

• Permite especificar o SPN que será utilizado pelo cliente para autenticação

53

Troubleshooting e Ferramentas

54

Troubleshooting e Ferramentas

Kerberos event loggingCrie a chave:

HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters Registry Value: LogLevel 

Value Type: REG_DWORD Value Data: 0x1

• Para desabilitar, remova a chave de registro• A partir do WS 2008 não requer reboot

• Utilize em conjunto:• KerbDebugLevel e LogToFile (também em HKLM\...\Parameters)• Cuidado com o impacto na performence

55

Troubleshooting e Ferramentas

Kerberos UDP Fragmentation

• Kerberos executa por padrão na porta UDP 88 até WS 2003

• Pacotes podem ser perdidos por componentes da rede

• Realiza fallback para TCP em caso de Tickets muito grandes

• TCP a partir do WS 2008

• Como forçar o Kerberos a utilizar TCP em vez de UDP no Windows

56

Troubleshooting e Ferramentas

Problemas com navegadores

• IE6, IE7, IE8 ignoram portas digitadas na URL

• Alguns navegadores tentam Kerberos por padrão (IE) outros NTLM

57

Troubleshooting e Ferramentas

CNAME x ANAME

• Resolução do nome ocorre erroneamente com CNAME

• Sempre utilize ANAMEs!

58

Troubleshooting e Ferramentas

59

Troubleshooting e Ferramentas

Monitoramento de pacotes:

• Wireshark

• Netmon

• Message analyser

“Uma ferramenta utilizada para visualizar o conteúdo de pacotes de rede que estão sendo enviados e recebidos em uma

conexão de rede ativa ou de um arquivo de dados capturado previamente. Ela provê opções de filtro para análises

complexas de dados de rede.”

60

Troubleshooting e Ferramentas

61

Troubleshooting e Ferramentas

62

Troubleshooting e Ferramentas

63

Troubleshooting e Ferramentas

64

Troubleshooting e Ferramentas

65

Troubleshooting e Ferramentas

KDC_ERR_PREAUTH_REQUIRED 

• Em geral não é um erro, mas sim um “problema” na forma que algumas aplicações implementam o Kerberos

• Aplicações que não realizam a pré-autenticação

• Provavelmente a aplicação fará o processo correto em seguida

66

Troubleshooting e Ferramentas

KDC_ERR_PRINCIPAL_UNKNOWN

• SPN não registrado

• Serviço está sendo consultado com o nome errado• klist purge?

67

Troubleshooting e Ferramentas

KDC_ERR_PREAUTH_FAILED

• Em geral, usuário não existe ou a senha está errada/desatualizada

68

Troubleshooting e Ferramentas

KRB_AP_ER_MODIFIED

• Ticket apresentando pelo serviço foi encriptado com conta diferente da que o serviço utiliza

• Autenticação falha e não há NTLM fallback

69

Troubleshooting e Ferramentas

HOSTS/LMHOSTS

• Cuidado com dados inválidos!

70

Troubleshooting e Ferramentas

71

Troubleshooting e Ferramentas

Constrained Delegation

• Quando trabalhando em cluster, deve ser configurado em cada nó do cluster!

72

Troubleshooting e Ferramentas

Reboot

• Em várias situações um reboot não é necessário

• De qualquer forma, caso a solução não funcione, é sempre bom tentar um reboot!

Perguntas?

Obrigado pela presença!

top related