Guia Completo: Como Configurar o FreeIPA para Gerenciamento de Identidade

Guia Completo: Como Configurar o FreeIPA para Gerenciamento de Identidade

Este post é o Primeiro de uma série de posts sobre o FreeIPA

O que é o FreeIPA ?

O FreeIPA (Free Identity, Policy and Audit) é um sistema FOSS (Free and Open Source Software) para gerenciamento de identidade e políticas. É também o projeto open-source para o núcleo do sistema de gerenciamento de identidade da Red Hat (IdM).

O objetivo do FreeIPA é fornecer um ambiente centralizado de Gerenciamento de Identidade, Políticas e Auditoria, ele usa uma combinação de vários componentes FOSS como por exemplo:

  • Linux (RHEL Based Linux)
  • 389 Directory Server
  • MIT Kerberos
  • NTP
  • DNS
  • Dogtag Certificate System
  • SSSD

A partir da versão 3.0, o FreeIPA utiliza o Samba para conexão com o Active Directory da Microsoft como maneira de integração e segurança entre florestas.

FreeIPA fornece suporte a Linux, Unix, Windows e Mac OS X / MacOS.

Preparando nosso Lab

Para nosso laboratório iremos utilizar uma máquina virtual no Virtualbox 6.0 sendo provisionada através do Vagrant.

Nossa estrutura de diretórios será:

.
└── freeipa
    └── Vagrantfile

Primeiramente criaremos um arquivo Vagrantfile com o seguinte conteúdo

Vagrant.configure("2") do |config|
  config.vm.define "ipaserver" do |server|
    server.vm.box = "centos/7"
    server.vm.network "private_network", ip: "172.16.10.10"
  end
  config.vm.provider :virtualbox do |vb|
    vb.memory = "1024"
  end
end

Para conectar na máquina e começar a configuração, executaremos o comando:

$ vagrant up
$ vagrant ssh ipaserver

Já conectado via SSH no ipaserver vamos primeiramente configurar o hostname e o FQDN para o nosso domínio e em seguida instalar o pacote que configura o repositório epel-release e atualizar os pacotes.

 
[vagrant@localhost ~]$ sudo hostnamectl set-hostname ipa.example.local
[vagrant@localhost ~]$ sudo su -
[root@ipa ~]# echo -e "172.16.10.10\tipa.example.local\t ipa" >> /etc/hosts
[root@ipa ~]# yum install epel-release -y
[root@ipa ~]# yum update -y

Agora vamos instalar o pacote ipa-server

 
[root@ipa ~]# yum install ipa-server ipa-server-dns -y

Após isto, podemos prosseguir com a configuração do nosso servidor FreeIPA através do seguinte comando:

 
[root@ipa ~]# ipa-server-install 

Após isto serão feitas algumas perguntas na seguinte ordem, utilizaremos as respostas em negrito:

  1. Do you want to configure integrated DNS (BIND)? [no]: yes
  2. Server host name [ipa.example.local]:  <ENTER>
  3. Please confirm the domain name [example.local]: <ENTER>
  4. Please provide a realm name [EXAMPLE.LOCAL]: <ENTER>
  5. Directory Manager password: directory4linux
  6. Password (confirm): directory4linux
  7. IPA admin password: ipa4linux 
  8. Password (confirm): ipa4linux
  9. Do you want to configure DNS forwarders? [yes]: yes
  10. Do you want to configure these servers as DNS forwarders? [yes]: no
  11. Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8
  12. Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.4.4
  13. Enter an IP address for a DNS forwarder, or press Enter to skip: <ENTER>
  14. Do you want to search for missing reverse zones? [yes]: yes
  15. Do you want to create reverse zone for IP 172.16.10.10 [yes]: yes
  16. Please specify the reverse zone name [10.16.172.in-addr.arpa.]:   <ENTER>
  17. Continue to configure the system with these values? [no]: yes

Será exibida uma mensagem com os dados do servidor pedindo para você confirmar, digite yes e aguarde o processo de instalação que deve durar por volta de 10 a 15 minutos

The IPA Master Server will be configured with:
Hostname: ipa.example.local
IP address(es): 172.16.10.10
Domain name: example.local
Realm name: EXAMPLE.LOCAL

BIND DNS server will be configured to serve IPA domain with:
Forwarders: 8.8.8.8, 8.8.4.4
Forward policy: only
Reverse zone(s): 10.16.172.in-addr.arpa.&amp;lt;/pre&amp;gt;
Continue to configure the system with these values? [no]: yes

Ao finalizar serão exibidas as informações das portas que serão utilizadas pelo nosso servidor para fornecer os serviços:

Execute o comando abaixo para que sempre que um usuário fizer login seja criado sua pasta home e garantir que o serviço será habilitado

 
[root@ipa ~]# systemctl enable ipa
[root@ipa ~]# authconfig --enablemkhomedir --update

Agora precisamos liberar no firewall as portas que este servidor esta utilizando.

 
[root@ipa ~]# firewall-cmd --permanent --add-service={http,https,ldap,ldaps,kerberos,dns,kpasswd,ntp}
[root@ipa ~]# firewall-cmd --reload

É preciso também em sua máquina local fazer o apontamento do nameserver para o servidor do FreeIPA ou podemos apenas adicionar uma entrada no hosts.

 
$ vim /etc/hosts
172.16.10.10 ipa.example.local ipa

Agora podemos acessar o painel de administração através da pagina http://ipa.example.local com usuário admin e senha ipa4linux

Ao efetuar o login o painel de administração é exibido, com isso podemos gerenciar usuários, grupos, políticas de sudo, OTP (One-Time-Password)

Vamos adicionar nosso primeiro usuário, clique em + ADD

 

Em seguida preencha os dados do usuário e clique em ADD

O usuário será adicionado e você pode editar as informações do mesmo no painel web

 

Também é possível criar grupos ou adicionar usuários a grupos no menu Groups > User Groups



Estes usuários e grupos serão criados dentro do seu LDAP, é possível utilizar os comandos do ldap-utils para verificar ou fazer pesquisas na sua base de dados, bem como adicionar a autenticação de sistemas apontando para o LDAP na porta 389 do nosso servidor FreeIPA

 



Também é possível adicionar usuários utilizando os comandos do OpenLDAP, porém não é recomendado, o IPA tem sua própria ferramenta para adicionar novos usuários, grupos, políticas, etc.

Ao utilizar a ferramenta nativa do IPA ou o console web conseguimos garantir que uid‘s e gid‘s não sejam duplicados e os usuários sejam criados em compliance.

Para executar comandos no shell é necessário primeiramente se autenticar via kerberos, faça isso com o comando:

 
[root@ipa ~]# kinit admin
Password for admin@EXAMPLE.LOCAL: ipa4linux

Caso não seja exibido nenhum erro, quer dizer que o comando foi executado com sucesso, caso contrário será exibida uma mensagem de erro.

É possível verificar sua sessão através do comando klist

 
[root@ipa ~]# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: admin@EXAMPLE.LOCAL</pre>
Valid starting Expires Service principal
05/17/2019 19:29:09 05/18/2019 19:29:05 krbtgt/EXAMPLE.LOCAL@EXAMPLE.LOCAL

Para adicionar um usuário execute o comando ipa user-add <nome do usuário> e preencha os dados solicitados

 
[root@ipa ~]# ipa user-add ada.lovelace
First name: Augusta Ada
Last name: King-Noel Lovelace
-------------------------
Added user "ada.lovelace"
-------------------------
  User login: ada.lovelace
  First name: Augusta Ada
  Last name: King-Noel Lovelace
  Full name: Augusta Ada King-Noel Lovelace
  Display name: Augusta Ada King-Noel Lovelace
  Initials: AK
  Home directory: /home/ada.lovelace
  GECOS: Augusta Ada King-Noel Lovelace
  Login shell: /bin/sh
  Principal name: ada.lovelace@EXAMPLE.LOCAL
  Principal alias: ada.lovelace@EXAMPLE.LOCAL
  Email address: ada.lovelace@example.local
  UID: 286600006
  GID: 286600006
  Password: False
  Member of groups: ipausers
  Kerberos keys available: False

Também é possível adicionar o usuário passando as informações na mesma linha de comando

 
[root@ipa ~]# ipa user-add linus.torvalds --first=Linus --last='Benedict Torvalds' --displayname='Linus Torvalds' --random
---------------------------
Added user "linus.torvalds"
---------------------------
  User login: linus.torvalds
  First name: Linus
  Last name: Benedict Torvalds
  Full name: Linus Benedict Torvalds
  Display name: Linus Torvalds
  Initials: LB
  Home directory: /home/linus.torvalds
  GECOS: Linus Benedict Torvalds
  Login shell: /bin/sh
  Principal name: linus.torvalds@EXAMPLE.LOCAL
  Principal alias: linus.torvalds@EXAMPLE.LOCAL
  User password expiration: 20190517194841Z
  Email address: linus.torvalds@example.local
  Random password: 5Ps:pQ)vP>eo@p5>-0a7{I
  UID: 286600007
  GID: 286600007
  Password: True
  Member of groups: ipausers
  Kerberos keys available: True

Para uma lista completa de comandos disponíveis utilize os seguintes comandos:

 
[root@ipa ~]# ipa help topics
[root@ipa ~]# ipa <TOPIC> -h
[root@ipa ~]# ipa help commands
[root@ipa ~]# ipa <COMMAND> -h

Após efetuar as alterações lembre-se de invalidar sua sessão kerberos com o comando kdestroy e verificar se a sessão foi removida com o klist.

 
[root@ipa vagrant]# kdestroy
[root@ipa vagrant]# klist
klist: Credentials cache keyring 'persistent:0:0' not found

No próximo post [Parte #2] veremos como incluir servidores e desktops dentro do nosso domínio example.local bem como controlar o acesso centralizando as chaves SSH e políticas de Sudo.

 

Até lá !

 

CURSOSCONSULTORIA    CONTATO

 

Anterior MoodleMoot 2019: Novidades e atualizações do Ambiente Virtual de Ensino Moodle
Próxima Guia passo a passo para configurar o FreeIPA em CentOS e Ubuntu

About author

Caio Delgado
Caio Delgado 4 posts

Caio Delgado atua como Analista de Infraestrutura Linux e soluções FOSS (Free and Open Source Software) com foco em DevOps, formado em Engenharia da Computação no Centro Universitário UBM e pós graduado em Engenharia de Redes no Instituto INFNET, possui as Certificações Docker DCA, LPIC-1, ITCerts Cloud Security Foundation, DevOps Lead, DevOps Security, Lean IT Essentials, Scrum Essentials, EXIN Information Security Foundation e EXIN Green IT Citizen.

View all posts by this author →

Você pode gostar também

Infraestrutura TI

Entenda o Log Binário do MySQL e suas aplicações práticas

O log binário do MySQL é, por vezes, mal compreendido, principalmente por usuários de outros bancos de dados. Nesta postagem pretendo abordar alguns aspectos desse importante mecanismo. Write-ahead logging? Também

Infraestrutura TI

Implantação simplificada do WordPress com Docker e Ansible: Guia passo a passo

A implantação do WordPress pode ser uma tarefa um pouco demorada, desde a configuração do servidor web até a instalação do banco de dados, há vários passos envolvidos. Mas e

Infraestrutura TI

Segurança em Acesso: Entenda a Importância do Controle de Acesso

O controle de acesso é uma prática voltada para segurança do ambiente e que visa garantir que somente pessoas autorizadas tenham permissão para visualizar e realizar operações dentro de uma