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
1 | Vagrant.configure( "2" ) do |config| |
2 | config.vm.define "ipaserver" do |server| |
3 | server.vm.box = "centos/7" |
4 | server.vm.network "private_network" , ip: "172.16.10.10" |
6 | config.vm.provider :virtualbox do |vb| |
Para conectar na máquina e começar a configuração, executaremos o comando:
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.
1 | [vagrant@localhost ~]$ sudo hostnamectl set - hostname ipa.example. local |
2 | [vagrant@localhost ~]$ sudo su - |
Agora vamos instalar o pacote ipa-server
Após isto, podemos prosseguir com a configuração do nosso servidor FreeIPA através do seguinte comando:
Após isto serão feitas algumas perguntas na seguinte ordem, utilizaremos as respostas em negrito:
- Do you want to configure integrated DNS (BIND)? [no]: yes
- Server host name [ipa.example.local]: <ENTER>
- Please confirm the domain name [example.local]: <ENTER>
- Please provide a realm name [EXAMPLE.LOCAL]: <ENTER>
- Directory Manager password: directory4linux
- Password (confirm): directory4linux
- IPA admin password: ipa4linux
- Password (confirm): ipa4linux
- Do you want to configure DNS forwarders? [yes]: yes
- Do you want to configure these servers as DNS forwarders? [yes]: no
- Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.8.8
- Enter an IP address for a DNS forwarder, or press Enter to skip: 8.8.4.4
- Enter an IP address for a DNS forwarder, or press Enter to skip: <ENTER>
- Do you want to search for missing reverse zones? [yes]: yes
- Do you want to create reverse zone for IP 172.16.10.10 [yes]: yes
- Please specify the reverse zone name [10.16.172.in-addr.arpa.]: <ENTER>
- 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
01 | The IPA Master Server will be configured with: |
02 | Hostname: ipa.example. local |
03 | IP address(es): 172.16.10.10 |
04 | Domain name: example. local |
05 | Realm name: EXAMPLE.LOCAL |
07 | BIND DNS server will be configured to serve IPA domain with: |
08 | Forwarders: 8.8.8.8, 8.8.4.4 |
10 | Reverse zone(s): 10.16.172. in -addr.arpa.& lt ;/pre& gt ; |
11 | 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
Agora precisamos liberar no firewall as portas que este servidor esta utilizando.
É 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.
2 | 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:
2 | 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
2 | Ticket cache: KEYRING:persistent:0:0 |
3 | Default principal: admin@EXAMPLE.LOCAL</pre> |
4 | Valid starting Expires Service principal |
5 | 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
02 | First name: Augusta Ada |
03 | Last name: King-Noel Lovelace |
04 | ------------------------- |
05 | Added user "ada.lovelace" |
06 | ------------------------- |
07 | User login: ada.lovelace |
08 | First name: Augusta Ada |
09 | Last name: King-Noel Lovelace |
10 | Full name: Augusta Ada King-Noel Lovelace |
11 | Display name: Augusta Ada King-Noel Lovelace |
13 | Home directory: /home/ada.lovelace |
14 | GECOS: Augusta Ada King-Noel Lovelace |
16 | Principal name: ada.lovelace@EXAMPLE.LOCAL |
17 | Principal alias : ada.lovelace@EXAMPLE.LOCAL |
18 | Email address: ada.lovelace@example. local |
22 | Member of groups : ipausers |
23 | Kerberos keys available: False |
Também é possível adicionar o usuário passando as informações na mesma linha de comando
02 | --------------------------- |
03 | Added user "linus.torvalds" |
04 | --------------------------- |
05 | User login: linus.torvalds |
07 | Last name: Benedict Torvalds |
08 | Full name: Linus Benedict Torvalds |
09 | Display name: Linus Torvalds |
11 | Home directory: /home/linus.torvalds |
12 | GECOS: Linus Benedict Torvalds |
14 | Principal name: linus.torvalds@EXAMPLE.LOCAL |
15 | Principal alias : linus.torvalds@EXAMPLE.LOCAL |
16 | User password expiration: 20190517194841Z |
17 | Email address: linus.torvalds@example. local |
18 | Random password: 5Ps:pQ)vP>eo@p5>-0a7{I |
22 | Member of groups : ipausers |
23 | Kerberos keys available: True |
Para uma lista completa de comandos disponíveis utilize os seguintes comandos:
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.
3 | 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