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

Guia completo: Como instalar e configurar o OCS Inventory

O OCS Inventory é um software de gerência para inventários de dispositivos em rede, com ele é possível registrar todas as características de um computador incluindo: Versão do sistema operacional;

Infraestrutura TI

Guia prático: Configurando a fila Dead Letter Queue no Logstash

O Logstash é um pipeline de processamento de dados do lado do servidor de código aberto que ingere dados de várias fontes, transforma-os simultaneamente e os envia para seu “stash”

Infraestrutura TI

12 Práticas Eficazes para Combater Ataques DDoS em Seu Servidor

Muito bem… como primeiro post por aqui… eu pensei em abordar um assunto que constantemente me abordam nos treinamentos e palestras e bate papos que tenho, que e sobre ataque