Observação:

Instalar o Servidor FreeIPA no Oracle Linux

Introdução

FreeIPA é um sistema de gerenciamento de identidade e autenticação de código-fonte aberto para ambientes em rede do Linux. O servidor inclui o Servidor de Diretórios 389 como o armazenamento de dados central, fornecendo funcionalidade multi-master LDAPv3 completa.

Além do escopo deste tutorial, FreeIPA também fornece MIT Kerberos para autenticação de logon único, a Dogtag Certificate Authority e gerenciamento opcional de nomes de domínio por meio de um servidor ISC Bind.

Este tutorial mostra como instalar o FreeIPA e configurar o diretório LDAP incluído.

Objetivos

Do Que Você Precisa?

Para obter mais informações sobre requisitos para FreeIPA, consulte o Guia de Início Rápido upstream.

Configurar o Ambiente de Laboratório

Observação: Ao usar o ambiente de laboratório gratuito, consulte Conceitos Básicos do Oracle Linux Lab para obter informações sobre conexão e outras instruções de uso.

  1. Abra um terminal e conecte via ssh à instância freeipa-server caso ainda não esteja conectada.

    ssh oracle@<ip_address_of_instance>
    

Confirme o Servidor HostName

O servidor FreeIPA requer uma configuração de DNS em funcionamento. Os clientes inscritos usando a ferramenta de linha de comando ipa pesquisam o servidor pelos parâmetros xmlrpc_url e domain definidos no arquivo /etc/ipa/default.conf.

  1. Verifique o nome do host do servidor.

    sudo hostname
    

    A saída não deve retornar localhost ou localhost6.

Confirme o FQDN (Fully Qualified Domain Name).

FreeIPA tem uma limitação de 64 caracteres para o FQDN que ele valida durante a instalação. Se o FQDN exceder 64 caracteres, use sudo hostnamectl set-hostname NAME, em que NAME é o FQDN, para reduzi-lo.

  1. Verifique o FQDN e seu tamanho.

    hostname -f
    
    echo $(hostname -f) | wc -m
    

    Observação: O FQDN consiste em freeipa.<RND_SUBNET>.linuxvirt.oraclevcn.com, em que <RND_SUBNET> é uma string aleatória de 4 caracteres prefixada pela letra o.

Confirmar Resolução de Nome.

  1. Obter o endereço IP do servidor.

    sudo ip addr show
    

    Exemplo de Saída:

    [oracle@freeipa ~]$ sudo ip addr show
    ...
    2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:00:17:02:b3:9e brd ff:ff:ff:ff:ff:ff
        altname enp0s3
        inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute ens3
           valid_lft 85923sec preferred_lft 85923sec
        inet6 fe80::200:17ff:fe02:b39e/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    

    O endereço IPv4 é exibido na linha que começa com inet.

  2. Verifique a configuração do DNS de encaminhamento.

    host $(hostname -f)
    

    Exemplo de Saída:

    [oracle@freeipa ~]$ host $(hostname -f)
    freeipa.o6fb5.linuxvirt.oraclevcn.com has address 10.0.0.150
    

    Outra forma de verificar a configuração do DNS de encaminhamento é usar dig +short $(hostname -f) A. host e dig fazem parte do pacote bind-utils, que fornece diferentes utilitários para consulta a servidores de nomes DNS.

  3. Verifique a configuração de DNS reverso (registros PTR).

    host $(hostname -i)
    

    Exemplo de Saída:

    [oracle@freeipa ~]$ host $(hostname -i)
    150.0.0.10.in-addr.arpa domain name pointer freeipa.o6fb5.linuxvirt.oraclevcn.com.
    

    Uma alternativa é usar dig +short -x $(hostname -i).

Abra as Portas de Firewall Necessárias

O FreeIPA exige que várias portas estejam abertas e disponíveis para comunicação com seus serviços.

Serviço Portas Protocolo
HTTP/HTTPS 80.443 TCP
LDAP/LDAPs 389.636 TCP
Kerberos 88.464 TCP e UDP
DNS 53 TCP e UDP
NTP 123 UDP

O Oracle Linux fornece o serviço freeipa-4 para abrir essas portas necessárias. Para obter detalhes, consulte /usr/lib/firewalld/services/freeipa-4.xml. O serviço freeipa-4 substitui os serviços freeipa-ldap e freeipa-ldaps obsoletos.

  1. Adicione o serviço firewalld.

    sudo firewall-cmd --permanent --add-service=freeipa-4
    
    sudo firewall-cmd --reload
    

Instalar os Pacotes Necessários

  1. Instale os pacotes para um servidor FreeIPA sem os serviços DNS integrados.

    sudo dnf install ipa-server -y
    

    Observação: Os serviços de DNS integrados não são usados como parte deste tutorial. Se necessário, adicione o pacote ipa-server-dns à lista de instalação.

Instale e Configure o Servidor FreeIPA

  1. Execute o utilitário de instalação.

    sudo ipa-server-install
    

    O script é iniciado fornecendo o local do arquivo de log da instalação e um resumo do que o servidor FreeIPA inclui.

    Exemplo de Saída:

    [oracle@freeipa ~]$ sudo ipa-server-install
       
    The log file for this installation can be found in /var/log/ipaserver-install.log
    ==============================================================================
    This program will set up the IPA Server.
    Version 4.9.8
       
    This includes:
      * Configure a stand-alone CA (dogtag) for certificate management
      * Configure the NTP client (chronyd)
      * Create and configure an instance of Directory Server
      * Create and configure a Kerberos Key Distribution Center (KDC)
      * Configure Apache (httpd)
      * Configure SID generation
      * Configure the KDC to enable PKINIT
    ...
    

    O script então usa vários prompts para configurar a configuração do servidor. O terminal mostra a resposta padrão para o prompt dentro dos colchetes e pressionar Enter aceita a resposta padrão.

  2. Aceite a resposta padrão de no para configurar o serviço DNS integrado.

    Do you want to configure integrated DNS (BIND)? [no]:
    
  3. Aceite o nome do host padrão, o nome do domínio e o nome do realm.

    Estes são os valores verificados no início deste laboratório. É recomendável que o nome do realm corresponda ao nome do domínio DNS primário, com todas as letras maiúsculas.

    Enter the fully qualified domain name of the computer
    on which you're setting up server software. Using the form
    <hostname>.<domainname>
    Example: master.example.com.
    
    
    Server host name [freeipa.o6fb5.linuxvirt.oraclevcn.com]: 
    
    The domain name has been determined based on the host name.
    
    Please confirm the domain name [o6fb5.linuxvirt.oraclevcn.com]: 
    
    The kerberos protocol requires a Realm name to be defined.
    This is typically the domain name converted to uppercase.
    
    Please provide a realm name [O6FB5.linuxvirt.ORACLEVCN.COM]:
    
  4. Informe e confirme as senhas do superusuário do Servidor de Diretórios e do usuário FreeIPA admin.

    O superusuário do Servidor de Diretórios é mapeado para cn=Directory Manager no diretório.

    Certain directory server operations require an administrative user.
    This user is referred to as the Directory Manager and has full access
    to the Directory for system management tasks and will be added to the
    instance of directory server created for IPA.
    The password must be at least 8 characters long.
    
    Directory Manager password: 
    Password (confirm): 
    
    The IPA server requires an administrative user, named 'admin'.
    This user is a regular system account used for IPA server administration.
    
    IPA admin password: 
    Password (confirm): 
    
  5. Aceite os padrões de nome de domínio NETBIOS e configure cronicamente.

    NetBIOS domain name [O6FB5]: 
    
    Do you want to configure chrony with NTP server or pool address? [no]:
    
  6. O script apresenta um resumo da configuração do servidor.

  7. Informe yes para aceitar a configuração do servidor.

    Continue to configure the system with these values? [no]: yes
    
  8. O script continua a configurar o servidor.

    Esta operação poderá levar alguns minutos para ser concluída.

    ...
    Client configuration complete.
    The ipa-client-install command was successful
    
    Please add records in this file to your DNS system: /tmp/ipa.system.records.mv9i0ec2.db
    ==============================================================================
    Setup complete
    
    Next steps:
    	1. You must make sure these network ports are open:
    		TCP Ports:
    		  * 80, 443: HTTP/HTTPS
    		  * 389, 636: LDAP/LDAPS
    		  * 88, 464: kerberos
    		UDP Ports:
    		  * 88, 464: kerberos
    		  * 123: ntp
    
    	2. You can now obtain a kerberos ticket using the command: 'kinit admin'
    	   This ticket will allow you to use the IPA tools (e.g., ipa user-add)
    	   and the web user interface.
    
    Be sure to back up the CA certificates stored in /root/cacert.p12
    These files are required to create replicas. The password for these
    files is the Directory Manager password
    The ipa-server-install command was successful
    

    Após a conclusão, o script fornece:

    • Um resumo.
    • Uma lista de registros a serem adicionados ao sistema de DNS.
    • Recomendação para fazer backup dos certificados de CA gerados.

    As portas de rede necessárias já estão abertas usando o serviço freeipa-4 firewalld.

Testar o Servidor FreeIPA

A instalação FreeIPA inclui um cliente de linha de comando e um WebUI para interagir com o servidor. O uso do WebUI está fora do escopo deste tutorial.

Acessar a Interface de Linha de Comando (CLI)

  1. Autentique o usuário admin no realm do Kerberos.

    kinit admin
    

    Quando solicitado, informe a senha do usuário admin criado durante as etapas de instalação e configuração. O comando kinit gera um ticket Kerberos.

  2. Listar as informações do ticket

    klist
    

    Exemplo de Saída:

    [oracle@freeipa ~]$ sudo klist
    Ticket cache: KCM:0
    Default principal: admin@O6FB5.LINUXVIRT.ORACLEVCN.COM
    
    Valid starting       Expires              Service principal
    09/28/2022 14:05:46  09/29/2022 13:05:53  krbtgt/O6FB5.LINUXVIRT.ORACLEVCN.COM@O6FB5.LINUXVIRT.ORACLEVCN.COM
    
  3. Obtenha uma lista de todos os usuários existentes no servidor FreeIPA.

    ipa user-find
    

    Os resultados retornam o usuário admin, que é o único usuário que existe atualmente.

    Exemplo de Saída:

    [oracle@freeipa ~]$ sudo ipa user-find
    --------------
    1 user matched
    --------------
      User login: admin
      Last name: Administrator
      Home directory: /home/admin
      Login shell: /bin/bash
      Principal alias: admin@O6FB5.LINUXVIRT.ORACLEVCN.COM, root@O6FB5.LINUXVIRT.ORACLEVCN.COM
      UID: 872200000
      GID: 872200000
      Account disabled: False
    ----------------------------
    Number of entries returned 1
    ----------------------------
    

Configurações de Segurança e Proteção

Estas são algumas maneiras de usar o servidor FreeIPA com segurança.

Desativar Binds Anônimos

O servidor LDAP FreeIPA permite associações anônimas como padrão, expondo assim definições de configuração e valores de diretório específicos.

O atributo nsslapd-allow-anonymous-access controla esse comportamento. Os valores aceitáveis incluem:

A recomendação é usar rootdse em vez de off ao não permitir binds anônimos, pois o uso de off também bloqueia clientes externos de verificar a configuração do servidor. Clientes que não são de domínio, como LDAP e clientes Web, se conectam de maneira anônima lendo o arquivo DSE raiz para obter detalhes da conexão.

  1. Verifique se os binds anônimos estão ativados.

    ldapsearch -x -h $(hostname -f) -b dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
    
    • -x define autenticação simples ou anônima.
    • -h define o host do servidor LDAP.
    • -b define o dn base para pesquisa.

    As definições de chave, incluindo o dn base para o servidor FreeIPA, são armazenadas no arquivo /etc/ipa/default.conf.

    $RND_SUBNET é uma variável de ambiente definida no ambiente de laboratório livre que representa a string aleatória de 4 caracteres no FQDN.

    Exemplo de Saída:

    ...
    # Default SMB Group, groups, accounts, o6fb5.linuxvirt.oraclevcn.com
    dn: cn=Default SMB Group,cn=groups,cn=accounts,dc=o6fb5,dc=linuxvirt,dc=oraclevc
     n,dc=com
    cn: Default SMB Group
    description: Fallback group for primary group RID, do not add users to this gr
     oup
    objectClass: top
    objectClass: ipaobject
    objectClass: posixgroup
    objectClass: ipantgroupattrs
    ipaUniqueID: 0c9cf178-4324-11ed-bf0b-02001704fe22
    gidNumber: 921600001
    ipaNTSecurityIdentifier: S-1-5-21-2697967063-3375457457-2974965896-1001
      
    # search result
    search: 2
    result: 0 Success
      
    # numResponses: 110
    # numEntries: 109
    

    Os resultados da pesquisa retornam a árvore inteira do diretório LDAP.

  2. Modifique a configuração e desative os binds anônimos.

    O comando ldapmodify aceita um arquivo LDIF com as alterações a serem feitas ou lê as operações da entrada padrão.

    1. Crie o arquivo LDIF.

      cat << 'EOF' | tee ~/disable_anon_bind.ldif > /dev/null
      dn: cn=config
      changetype: modify
      replace: nsslapd-allow-anonymous-access
      nsslapd-allow-anonymous-access: rootdse
      EOF
      

      A alteração de vários atributos é possível separando-os com um caractere de traço - em uma linha por si só. Cada alteração adicional começa com o tipo de alteração do atributo e fornece os atributos necessários.

    2. Aplicar as alterações de LDIF.

      ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif
      
      • -x define autenticação simples ou anônima.
      • -D define o dn de bind.
      • -W solicita a senha admin do LDAP.
      • -H usa o URI (Uniform Resource Identifier) do LDAP para estabelecer conexão em vez do host do servidor LDAP.
      • -ZZ inicia uma solicitação TLS e força uma resposta bem-sucedida.

      Observação: O -ZZ é necessário devido ao uso de certificados autoassinados.

      Exemplo de Saída:

      [oracle@freeipa ~]$ ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif
      Enter LDAP Password: 
      modifying entry "cn=config"
      
    3. Reinicie o servidor FreeIPA.

      sudo systemctl restart ipa.service
      
  3. Verifique a modificação consultando anonimamente o diretório.

    ldapsearch -x -h $(hostname -f) -b dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
    

    Observe a resposta Anonymous access is not allowed.

    Exemplo de Saída:

    [oracle@freeipa ~]$ ldapsearch -x -h freeipa.o6fb5.linuxvirt.oraclevcn.com -b dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com
    # extended LDIF
    #
    # LDAPv3
    # base <dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    #
      
    # search result
    search: 2
    result: 48 Inappropriate authentication
    text: Anonymous access is not allowed.
      
    # numResponses: 1
    
  4. Verifique se a consulta do diretório funciona usando autenticação.

    ldapsearch -D uid=admin,cn=users,cn=accounts,dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com -W -H ldap://
    

    Exemplo de Saída:

    ...
    # freeipa.o6fb5.linuxvirt.oraclevcn.com + 389, subordinate-ids, dna, ipa, etc, 
     o6fb5.linuxvirt.oraclevcn.com
    dn: dnaHostname=freeipa.o6fb5.linuxvirt.oraclevcn.com+dnaPortNum=389,cn=subord
     inate-ids,cn=dna,cn=ipa,cn=etc,dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com
    objectClass: dnaSharedConfig
    objectClass: top
    dnaHostname: freeipa.o6fb5.linuxvirt.oraclevcn.com
    dnaPortNum: 389
    dnaSecurePortNum: 636
    dnaRemainingValues: 32766
      
    # search result
    search: 2
    result: 0 Success
      
    # numResponses: 475
    # numEntries: 474
    

Verificar se o TLS está Ativado

A partir do Oracle Linux 8, o FreeIPA usa a política de criptografia de todo o sistema. Consulte a página man crypto-policies(7) para obter mais detalhes.

  1. Liste a política de criptografia atual em todo o sistema.

    cat /etc/crypto-policies/config
    
  2. Liste os detalhes da política de criptografia.

    cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt
    

    Exemplo de Saída:

    [oracle@freeipa ~]$ cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt
    library=
    name=Policy
    NSS=flags=policyOnly,moduleDB
    config="disallow=ALL allow=HMAC-SHA256:HMAC-SHA1:HMAC-SHA384:HMAC-SHA512:CURVE25519:SECP256R1:SECP384R1:SECP521R1:aes256-gcm:chacha20-poly1305:aes256-cbc:aes128-gcm:aes128-cb   > c:SHA256:SHA384:SHA512:SHA224:ECDHE-RSA:ECDHE-ECDSA:RSA:DHE-RSA:ECDSA:RSA-PSS:RSA-PKCS:tls-version-min=tls1.2:dtls-version-min=dtls1.2:DH-MIN=2048:DSA-MIN=2048:RSA-MIN=2048"
    

    Observe que a política DEFAULT usa no mínimo TLS 1.2.

Verifique o Status do Servidor FreeIPA

O servidor FreeIPA inclui o utilitário ipactl para exibir o status dos serviços configurados. O mesmo utilitário também pode iniciar, interromper e reiniciar o servidor FreeIPA inteiro. Se você precisar start, stop ou restart componentes individuais, use systemctl COMMAND name.service.

  1. Mostra o status de todos os serviços.

    sudo ipactl status
    

    Exemplo de Saída:

    [oracle@freeipa ~]$ sudo ipactl status
    Directory Service: RUNNING
    krb5kdc Service: RUNNING
    kadmin Service: RUNNING
    httpd Service: RUNNING
    ipa-custodia Service: RUNNING
    pki-tomcatd Service: RUNNING
    ipa-otpd Service: RUNNING
    ipa: INFO: The ipactl command was successful
    

    Use sudo ipactl --help para ver opções de comando adicionais.

Criar Usuários e Grupos

Com a instalação e configuração básicas do servidor FreeIPA concluídas, a próxima etapa é tratar o gerenciamento de identidades, que consiste na criação de usuários e grupos. Antes de fazer isso, gere um token do Kerberos.

  1. Gere um token para o usuário admin.

    kinit admin
    
  2. Obtenha uma lista de tokens existentes.

    klist
    

    Por padrão, os tokens do Kerberos são válidos por 24 horas. Devido à execução anterior desses comandos na etapa intitulada "Acessar a CLI (Interface de Linha de Comando), a listagem exibe o token original em vez de criar um novo.

  3. Adicione um novo grupo de usuários.

    FreeIPA define um grupo de usuários como um conjunto de usuários com políticas de senha padrão, privilégios e outras características.

    Um grupo de usuários pode incluir:

    • usuários
    • outros grupos de usuários
    • usuários externos que existem fora de FreeIPA

   ipa group-add foo

Exemplo de Saída:

[oracle@freeipa ~]$ ipa group-add foo
-----------------
Added group "foo"
-----------------
  Group name: foo
  GID: 1326400003

O servidor FreeIPA suporta três tipos de grupo:

O grupo foo é um grupo de usuários POSIX. Para especificar um tipo de grupo diferente, use uma destas opções:

   ipa group-find

Exemplo de Saída:

[oracle@freeipa ~]$ ipa group-find
----------------
5 groups matched
----------------
  Group name: admins
  Description: Account administrators group
  GID: 1326400000
   
  Group name: editors
  Description: Limited admins who can edit other users
  GID: 1326400002
   
  Group name: foo
  GID: 1326400003
   
  Group name: ipausers
  Description: Default group for all users
  
  Group name: trust admins
  Description: Trusts administrators group
----------------------------
Number of entries returned 5
----------------------------

O servidor FreeIPA cria os grupos de usuários a seguir durante a instalação.

Advertência: Não exclua o grupo admin, pois ele contém o usuário admin padrão. O servidor FreeIPA requer que o grupo admin opere corretamente.

  1. Adicione uma nova conta de usuário.

    ipa user-add
    

    O comando executa um script interativo solicitando que o conjunto mínimo de dados FreeIPA precise criar uma conta de usuário.

    Exemplo de Saída:

    [oracle@freeipa ~]$ ipa user-add
    First name: Oracle
    Last name: User
    User login [ouser]: oracle
    -------------------
    Added user "oracle"
    -------------------
      User login: oracle
      First name: Oracle
      Last name: User
      Full name: Oracle User
      Display name: Oracle User
      Initials: OU
      Home directory: /home/oracle
      GECOS: Oracle User
      Login shell: /bin/sh
      Principal name: oracle@OD1F5.LINUXVIRT.ORACLEVCN.COM
      Principal alias: oracle@OD1F5.LINUXVIRT.ORACLEVCN.COM
      Email address: oracle@od1f5.linuxvirt.oraclevcn.com
      UID: 1326400004
      GID: 1326400004
      Password: False
      Member of groups: ipausers
      Kerberos keys available: False
    

    Como alternativa, executar o comando com várias opções permite criar uma conta de usuário em um modo não interativo. Para obter uma lista de opções disponíveis, execute ipa user-add --help.

  2. Adicione o novo usuário ao novo grupo de usuários.

    ipa group-add-member foo --users=oracle
    

    Exemplo de Saída:

    [oracle@freeipa ~]$ ipa group-add-member foo --users=oracle
      Group name: foo
      GID: 1326400003
      Member users: oracle
    -------------------------
    Number of members added 1
    -------------------------
    

O comando ipa tem mais funcionalidade do que a mostrada. Para comandos adicionais, execute ipa help commands para obter uma lista abrangente.

Resumo

Isso conclui este laboratório, que apresenta os conceitos básicos da instalação e uso do servidor FreeIPA. Explore mais usando os links abaixo ou lendo nas páginas manuais do produto, pois o FreeIPA tem muitos recursos adicionais além do que é abordado aqui.

Para Obter Mais Informações

Consulte outros recursos relacionados:

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.