Upload
internet
View
110
Download
5
Tags:
Embed Size (px)
Citation preview
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!
73
Material complementar
• Troubleshooting Kerberos Errors
• https://magalhaesv.wordpress.com/
• http://blogs.msdn.com/b/psssql/
• https://twitter.com/awsaxton
• Troubleshooting Kerberos Delegation Using DelegConfig
• Kerberos Authentication Tester
Perguntas?
Obrigado pela presença!