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:
- 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
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.&lt;/pre&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á !
About author
Você pode gostar também
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
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
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