Guia de Serviços de Segurança e Diretório Windows para Unix Fernando Cima Consultor de Segurança Microsoft Objetivos • Entender os componentes do Unix que suportam a integração com Active Directory • Mostrar as formas de integrar Unix ao AD e como decidir que caminho é o mais adequado para o ambiente • Apresentar o Guia de Segurança e Serviços de Diretório Windows para Unix A Visão • Cada usuário tem somente uma identidade e uma senha para usar todos os serviços de TI, e ele somente se autentica uma vez • Toda informação de segurança do usuário é armazenado em um único local •Vários projetos ao longo de vários anos podem ser necessários para transformar essa visão em realidade. Na verdade, é possível que nenhum caminho para essa visão exista nesse momento. Mas isso não torna a visão inválida ou inatingível algum dia. Abordagens para o Problema • Convergir em um único diretório – Uma identidade, uma senha, em um único local – Requer suporte a padrões de mercado – Uso do Windows requer Active Directory • Confiança entre diretórios existentes – Somente Kerberos v5 suportado – Não mais “em um único local”, mas perto • Sincronizar, interoperar – “Uma senha”, mas não “uma identidade” – Significativamente mais complexo Cinco Soluções Válidas 1. 2. 3. 4. 5. AD/Kerberos somente para autenticação AD/Kerberos para autenticação e autorização AD/LDAP somente para autenticação AD/LDAP para autenticação e autorização Relação de confiança Kerberos entre AD e Unix somente para autenticação •Nós recomendados a Solução 2 como a melhor abordagem de arquitetura Confiança entre Estruturas Existentes • Solução 5 • Prereq: Organização já usa Kerberos em Unix – Geralmente em um único realm • Arquitetura de domínios não é complexa – UNIX Kerberos suporta relações de confiança com domínios de dentro da floresta – Confiança entre florestas não é estável • É necessário ter AD/ADAM para autorização dos usuários de Unix Porque Integrar Somente Autenticação? • • • • Soluções 1 e 3 Aumenta nível de confiança da infraestrutura Existe já uma solução robusta de autorização Metade da solução completa – Reduz o número de identidades – Mantém o mesmo número de locais de autorização • Resolve o problema do desprovisionamento Por que Autenticação LDAP? • Várias plataformas importantes não suportam Kerberos – A maior parte dos sistemas operacionais suportam Kerberos 5 – Algumas aplicações, em especial aplicações web, não suportam O que há de Errado com o LDAP? • Não projetado como sendo um protocolo de autenticação – Requer configurações extras para impedir senhas em claro na rede e ataques de man in the middle (SSL/TLS) • Limitações de performance e escabilidade – Autenticação requer bind LDAP – Única prova de identidade é uma conexão ao servidor – Não existe transitividade da identidade Melhor Prática • Solução 2 – Autenticação Kerberos – Autorização via LDAP • Consolidação de diretório, provisionamento e deprovisionamento simplificado, senha única, política comum… • Usa os protocolos e serviços como eles foram projetados Seqüência de Logon Unix • login obtém usuário e senha • login chama PAM para autenticar usuário – PAM usa vários módulos para tentar a autenticação • login chama getpwnam() para obter dados de autorização dos usuários – getpwnam() por sua vez chama o NSS – NSS usa vários módulos para tentar obter a informação pedida • login usa dados de autorização para criar o processo inicial (shell) •GINA •Aplicação •Login •Aplicação (login) •SSPI •pam_krb5 •GSSAPI •LSA •Cache de credencial (ticket) •Windows •Kerberos (MIT de-facto) •Serviço •principal key table •Cache de credencial (ticket) •Serviço default •principal key table •Linux •RFC 1510 – Kerberos V5 •AS - Authentication Service •TGS - Ticket Granting Service •KRB •MIT de-facto •CPW - Change password service •kinit •klist •kdestroy •kpasswd •(MIT de-facto) Kerberos para Autenticação LDAP para Autenticação •Aplicação •login •pam_ldap •Em claro ou SSL •LDAP API • OpenLDAP • ... • LDAP (V3) - RFC 2251 • LDAP API - RFC 1831 • LDAP search - RFC 2254 • “protocolo” de mudança de senha do AD •Linux • Conta do usuário • Senha •LDAP Autorização Integrada • Schema RFC 2307 ou SFU 3.0 para armazenar as informações de autorização Unix – SFU 3.0 somente como legado – Windows Server 2003 R2 inclui 2307 – Pequenas diferenças em relação à RFC; detalhes no Guia • Alguma política de grupo são aplicadas – Ferramentas Unix não se preocupam com isso LDAP •Aplicação •Aplicação •ADSI Active Directory Services Interface •LDAP API • LDAP (V3) • - RFC 2251 • LDAP API • - RFC 1831 • LDAP search • - RFC 2254 •getpwnam •LDAP API •nss_ldap • nscd cache daemon •Windows •Linux •Em claro, SSL ou SASL • Conta do Usuário • Grupos • Telefone • E-mail •… •login • Conta do Usuário •LDAP • UID • GID • Diretório home • Grupos •… Selecionando Componentes Unix para Solução 2 • Kerberos – MIT v 1.3.7 ou superior – Heimdal – Soluções proprietárias • LDAP – OpenLDAP 2.2 – PADL nss_ldap Configuração do Kerberos • Passo 1: Criar conta dos usuários Unix no Active Directory • Step 2: Criar contas de computador para os sistemas Unix no Active Directory • Step 3: Criar arquivos keytab para os sistemas Unix • Step 4: Transferir e instalar o aquivo keytab no sistema Unix • Step 5: Configurar o arquivo pam.conf • Step 6: Configurar o arquivo krb5.conf Criando o arquivo keytab ktpass -princ host/linuxbox.sub.microsoftdemo.com@SU B.MICROSOFTDEMO.COM -mapuser linuxbox -pass password -out linuxbox.keytab Funcionou… Targeting domain controller: msftaddemo.sub.microsoftdemo.com Successfully mapped host/linuxbox.sub.microsoftdemo.com to linuxbox. Key created. Output keytab to linuxbox.keytab: Keytab version: 0x502 keysize 79 host/ [email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x3 (DES-CBC-MD5) keylength 8 (0x0e9bd5da314f5bad) Account linuxbox has been set for DES-only encryption. Usando o Arquivo keytab • Transfira o aquivo keytab do DC para o sistema Unix – Midia removível – Use PuTTY para se conectar via SSH • Use ktutil para importar o arquivo • No prompt ktutil: digite rkt linuxbox.keytab • No prompt ktutil: digite wkt /etc/krb5/krb5.keytab Configure o Arquivo pam.conf # Greatly simplified Kerberos Setup # # Authentication for logon # other auth sufficient pam_krb5.so other auth sufficient pam_unix.so use_first_pass # # Password change mechanism # other password optional pam_krb5.so try_first_pass other password required pam_unix.so # # There are others as well # Configure o Arquivo krb5.conf [libdefaults] default_realm = SUB.MICROSOFTDEMO.COM default_tkt_enctypes = des-cbc-md5 default_tgs_enctypes = des-cbc-md5 [realms] NA.CORP.CONTOSO.COM = { kdc = msftaddemo.sub.microsoftdemo.com admin_server = msftaddemo.sub.microsoftdemo.com kpasswd_protocol = SET_CHANGE kpasswd_server = msftaddemo.sub.microsoftdemo.com } [domain_realm] .sub.microsoftdemo.com = SUB.MICROSOFTDEMO.COM sub.microsoftdemo.com = SUB.MICROSOFTDEMO.COM ... Configuração LDAP • Passo 1: Estenda o schema do AD schema para armazenar informação de autorização do Unix • Passo 2: Provisione usuários e grupos para o Unix • Passo 3: Configure o cliente ldap Unix para se conectar ao AD • Passo 4: Configure nss_ldap para usar os atributos desejados no AD Configure o Arquivo ldap.conf •# Point at DC •uri ldap://msftaddemo.sub.microsoftdemo.com •#uri ldaps://msftaddemo.sub.microsoftdemo.com •# Distinguished name and password to bind with •binddn cn=proxyuser,cn=Users,dc=sub,dc=microsoftdemo,dc=com •bindpw Password1 •rootbinddn cn=proxyadmin,cn=Users,dc=sub,dc=microsoftdemo,dc=com •# Locate base for searches •nss_base_passwd ou=Unixusers,dc=sub,dc=microsoftdemo,dc=com?sub •nss_base_shadow ou=Unixusers,dc=sub,dc=microsoftdemo,dc=com?sub •nss_base_group ou=Unixgroups,dc=sub,dc=microsoftdemo,dc=com?sub •# Map classes (SFU 3.0 schema) •nss_map_objectclass posixAccount User •nss_map_objectclass shadowAccount User •nss_map_objectclass posixGroup Group Configure o Arquivo ldap.conf (continuação) •# Map relevant attributes for authorization using SFU 3.0 schema •nss_map_attribute uid sAMAccountName •nss_map_attribute uidNumber msSFU30UidNumber •nss_map_attribute gidNumber msSFU30GidNumber •nss_map_attribute loginShell msSFU30LoginShell •nss_map_attribute uniqueMember msSFUposixMemberf •nss_map_attribute homeDirectory msSFUHomeDirectory •nss_map_attribute memberUid msSFUMemberUid •# Most stock ldap.conf files have these entries, and entries for RFC2307 Configure o Arquivo nsswitch.conf •# Set search order for authorization data •passwd: files ldap [TRYAGAIN=continue] •group: files ldap [TRYAGAIN=continue] Solução Comercial – Vintela Authentication Services • Informação de autorização Unix armazenado usando RC 2307 (compatível com 2003 R2) • Trata UIDs e GIDs não-únicos • Módulos PAM e NSS com cache para AIX, HP-UX, Solaris, RedHat, SuSe • Comunicação LDAP autenticada via Kerberos (SASL) • Snap-in MMC para gerência • Várias GPOs suportadas • http://www.vintela.com Solução Comercial: Centrify DirectControl • Informação de autorização Unix usando atributos existentes ou RFC 2307 • Trata UIDs e GIDs não-únicos • Módulos PAM e NSS com cache para AIX, HP-UX, Solaris, RedHat, SuSe, Debian, MacOS X 10.4 • Comunicação LDAP autenticada via Kerberos (SASL) • Snap-in MMC para gerência • Várias GPOs suportadas • http://www.centrify.com Solução Open Source • Informação de autorização Unix armazenada usando schema SFU 3.0 ou RFC 2307 • Não trata UIDs e GIDs não-únicos • Suporte de cache limitado para NSS – Não existe cache offline para o TGT – Não existe cache persistente para informação de autorizaçãoç – Maior carga nos DCs e na rede • Algumas implementações do pam_krb5 suportam SASL • Sem snap-in de gerência • Sem suporte a GPOs Mudanças para Solução 4 • Obtenha o pam_ldap via PADL • Configure o pam.conf para usar pam_ldap ao invés de pam_krb5 • pam_ldap necessita das informações do ldap.conf – pam_login_attribute sAMAccountName – pam_filter objectclass=User – pam_password ad • Habilite SSL/TLS para evitar senhas em claro na consulta LDAP Guia dos Serviços de Diretório e Segurança Windows para Unix • Documentação passo a passo para a integração da autenticação e autorização entre ambientes Unix e Active Directory • Organizado em quatro volumes: – Volume 1 – Descreve as tecnologias de autenticação e autorização existentes e ajuda a escolher a mais apropriada entre as cinco soluções existentes – Volume 2 – Soluções usando autenticação Kerberos (soluções 1 e 2) – Volume 3 – Soluções usando autenticação LDAP (soluções 3 e 4) – Volume 4 – Relação de confiança entre AD e Kerberos Unix (solução 5) Recursos • Guia de Serviços de Segurança e Diretório Windows para Unix – http://go.microsoft.com/?linkid=5118169 • Porta 25 – http://porta25.technetbrasil.com.br Seu potencial. Nossa inspiração. © 2006 Microsoft Corporation. Todos os direitos reservados. O propósito desta apresentação é apenas informativa. Microsoft não faz nenhuma garantia expressa ou implícita nesta apresentação. MR