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 Linux. O servidor inclui o 389 Directory Server como o armazenamento de dados central, fornecendo funcionalidade LDAPv3 multimestre completa.

Além do escopo deste tutorial, o FreeIPA também fornece o MIT Kerberos para autenticação de Logon Único, a Autoridade de Certificação Dogtag e o 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

Neste tutorial, você aprenderá a:

Pré-requisitos

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

Implantar o Oracle Linux

Observação: Se estiver em execução na sua própria tenancy, leia o projeto linux-virt-labs GitHub README.md e conclua os pré-requisitos antes de implantar o ambiente de laboratório.

  1. Abra um terminal no Luna Desktop.

  2. Clone o projeto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Altere para o diretório de trabalho.

    cd linux-virt-labs/ol
    
  4. Instale as coleções necessárias.

    ansible-galaxy collection install -r requirements.yml
    
  5. Atualize a configuração da instância do Oracle Linux.

    cat << EOF | tee instances.yml > /dev/null
    compute_instances:
      1:
        instance_name: "freeipa"
        type: "server"
    EOF
    
  6. Implante o ambiente de laboratório.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml" 
    

    O ambiente de laboratório gratuito requer a variável extra local_python_interpreter, que define ansible_python_interpreter para reproduções em execução no localhost. Essa variável é necessária porque o ambiente instala o pacote RPM do Oracle Cloud Infrastructure SDK para Python, localizado nos módulos python3.6.

    A forma de implantação padrão usa a CPU AMD e o Oracle Linux 8. Para usar uma CPU Intel ou um Oracle Linux 9, adicione -e instance_shape="VM.Standard3.Flex" ou -e os_version="9" ao comando de implantação.

    Importante: Aguarde a execução bem-sucedida do playbook e atinja a tarefa de pausa. Neste estágio do playbook, a instalação do Oracle Linux está concluída e as instâncias estão prontas. Anote o jogo anterior, que imprime os endereços IP públicos e privados dos nós que ele implanta e quaisquer outras informações de implantação necessárias durante a execução do laboratório.

Confirmar a configuração do DNS do servidor

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. Abra um terminal e conecte-se via SSH à instância freeipa.

    ssh oracle@<ip_address_of_instance>
    
  2. 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, Nome do domínio totalmente qualificado).

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 encurtá-lo.

  1. Verifique o FQDN. e seu comprimento.

    hostname -f
    
  2. Obter o tamanho do FQDN

    echo $(hostname -f) | wc -m
    

Confirmar Resolução de Nome.

  1. Obtenha o endereço IP do servidor.

    ip -4 -o addr show ens3 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
    

    Em que ens3 é o nome da interface de rede no sistema.

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

    host $(hostname -f)
    

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

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

    host $(hostname -i)
    

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

Abrir 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/LDAP 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
    
  2. Recarregue o serviço firewalld para que as alterações entrem em vigor.

    sudo firewall-cmd --reload
    

Instale os Pacotes Necessários

  1. Ative o perfil e o fluxo do módulo FreeIPA.

    Oracle Linux 8:

    sudo dnf module enable -y idm:DL1
    

    Oracle Linux 9 e Oracle Linux 10:

    Não há nada a fazer no Oracle Linux 9, pois os pacotes FreeIPA fazem parte do repositório AppStream.

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

    sudo dnf install -y ipa-server
    

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

Instalar e Configurar o Servidor FreeIPA

  1. Execute o recurso de instalação.

    sudo ipa-server-install
    

    O script começa fornecendo o local do arquivo de log de 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 definir a configuração do servidor. O terminal mostra a resposta padrão ao prompt entre 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 os nomes de host, domínio e realm padrão.

    Estes são os valores verificados no início deste laboratório. A configuração recomendada é que o nome do realm corresponda ao nome do domínio DNS principal 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.lv.vcn.oraclevcn.com]: 
       
    The domain name has been determined based on the host name.
       
    Please confirm the domain name [lv.vcn.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 [LV.VCN.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 para definir o nome de domínio NETBIOS e no para configurar o chrony.

    NetBIOS domain name [LV]: 
       
    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 para adicionar ao sistema 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 de 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 CLI (Interface de Linha de Comando)

  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@LV.VCN.ORACLEVCN.COM
    
    Valid starting       Expires              Service principal
    09/28/2022 14:05:46  09/29/2022 13:05:53  krbtgt/LV.VCN.ORACLEVCN.COM@LV.VCN.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 existente no momento.

    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@LV.VCN.ORACLEVCN.COM, root@LV.VCN.ORACLEVCN.COM
      UID: 872200000
      GID: 872200000
      Account disabled: False
    ----------------------------
    Number of entries returned 1
    ----------------------------
    

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

Aqui estão algumas maneiras de usar o servidor FreeIPA com segurança.

Desativar Binds Anônimos

O servidor LDAP FreeIPA ativa binds anônimos como um padrão, expondo 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 Web se conectam anonimamente 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=lv,dc=vcn,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 do servidor FreeIPA, são armazenadas no arquivo /etc/ipa/default.conf.

    Exemplo de Saída:

    ...
    # Default SMB Group, groups, accounts, lv.vcn.oraclevcn.com
    dn: cn=Default SMB Group,cn=groups,cn=accounts,dc=lv,dc=vcn,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 para o diretório LDAP.

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

    O comando ldapmodify aceita um arquivo LDIF com as alterações para fazer ou lê 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 sozinha. Cada alteração adicional começa com o tipo de alteração de atributo e fornece os atributos necessários.

    2. Aplicar as alterações 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 é obrigató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 o diretório anonimamente.

    ldapsearch -x -h $(hostname -f) -b dc=lv,dc=vcn,dc=oraclevcn,dc=com
    

    Observe a resposta Anonymous access is not allowed.

    Exemplo de Saída:

    [oracle@freeipa ~]$ ldapsearch -x -h freeipa.lv.vcn.oraclevcn.com -b dc=lv,dc=vcn,dc=oraclevcn,dc=com
    # extended LDIF
    #
    # LDAPv3
    # base <dc=lv,dc=vcn,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=lv,dc=vcn,dc=oraclevcn,dc=com -W -H ldap://
    

    Exemplo de Saída:

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

Verificar se TLS está Ativado

A partir do Oracle Linux 8, o FreeIPA usa a política de criptografia em todo o sistema. Consulte a página do manual 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 um mínimo de 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 todo o servidor FreeIPA. Se você precisar de start, stop ou restart componentes individuais, use systemctl COMMAND name.service.

  1. Mostrar 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 a 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 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 Interface de Linha de Comando (CLI)", a listagem exibe o token original em vez de criar um novo.

  3. Adiciona um novo grupo de usuário.

    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 do 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 outro tipo de grupo, utilize uma destas opções:

  1. Obtenha uma lista de todos os grupos de usuários existentes.

    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 seguintes grupos de usuários durante a instalação.

    • admins
    • ipausers
    • trust admins

    Aviso: 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.

  2. Adicionar uma nova conta de usuário.

    ipa user-add
    

    O comando executa um script interativo solicitando o conjunto mínimo de dados que FreeIPA precisa para 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@LV.VCN.ORACLEVCN.COM
      Principal alias: oracle@LV.VCN.ORACLEVCN.COM
      Email address: oracle@lv.vcn.oraclevcn.com
      UID: 1326400004
      GID: 1326400004
      Password: False
      Member of groups: ipausers
      Kerberos keys available: False
    

    Alternativamente, a execução do 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.

  3. 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.

Próximas Etapas

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

Mais Recursos de Aprendizagem

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

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