Observação:
- Este tutorial está disponível em um ambiente de laboratório gratuito fornecido pela Oracle.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
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:
- Instalar o Servidor FreeIPA
- Desativar binds anônimos
- Adicionar Usuários e Grupos
Pré-requisitos
-
Mínimo de um único sistema Oracle Linux
-
Cada sistema deve ter o Oracle Linux instalado e configurado com:
- Uma conta de usuário não raiz com acesso sudo (sudo)
- Acesso à Internet
- Um FQDN (Nome de Domínio Totalmente Qualificado) apontando para o endereço IP do seu servidor
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.
-
Abra um terminal no Luna Desktop.
-
Clone o projeto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Altere para o diretório de trabalho.
cd linux-virt-labs/ol
-
Instale as coleções necessárias.
ansible-galaxy collection install -r requirements.yml
-
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
-
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 defineansible_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
.
-
Abra um terminal e conecte-se via SSH à instância freeipa.
ssh oracle@<ip_address_of_instance>
-
Verifique o nome do host do servidor.
sudo hostname
A saída não deve retornar
localhost
oulocalhost6
.
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.
-
Verifique o FQDN. e seu comprimento.
hostname -f
-
Obter o tamanho do FQDN
echo $(hostname -f) | wc -m
Confirmar Resolução de Nome.
-
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. -
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
. Tantohost
quantodig
fazem parte do pacotebind-utils
, que fornece diferentes utilitários para consultar servidores de nomes DNS. -
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.
-
Adicione o serviço
firewalld
.sudo firewall-cmd --permanent --add-service=freeipa-4
-
Recarregue o serviço firewalld para que as alterações entrem em vigor.
sudo firewall-cmd --reload
Instale os Pacotes Necessários
-
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.
-
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
-
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. -
Aceite a resposta padrão de
no
para configurar o serviço DNS integrado.Do you want to configure integrated DNS (BIND)? [no]:
-
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]:
-
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):
-
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]:
-
O script apresenta um resumo da configuração do servidor.
-
Informe
yes
para aceitar a configuração do servidor.Continue to configure the system with these values? [no]: yes
-
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)
-
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 comandokinit
gera um ticket Kerberos. -
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
-
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:
on
: permite todas as associações anônimas (padrão)rootdse
: permite binds anônimos somente para informações do DSE raizoff
: não permite qualquer bind anônimo
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.
-
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.
-
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.-
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. -
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 senhaadmin
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"
-
Reinicie o servidor FreeIPA.
sudo systemctl restart ipa.service
-
-
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
-
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.
-
Liste a política de criptografia atual em todo o sistema.
cat /etc/crypto-policies/config
-
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 deTLS 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
.
-
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.
-
Gere um token para o usuário
admin
.kinit admin
-
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.
-
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:
- POSIX (padrão)
- Não POSIX
- Externo
O grupo foo
é um grupo de usuários POSIX. Para especificar outro tipo de grupo, utilize uma destas opções:
--nonposix
para criar um grupo não POSIX--external
para criar um grupo externo
-
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árioadmin
padrão. O servidor FreeIPA requer que o grupoadmin
opere corretamente. -
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
. -
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.
Links Relacionados
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.
Install FreeIPA Server on Oracle Linux
F71553-02