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

1Vagrant.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"
5  end
6  config.vm.provider :virtualbox do |vb|
7    vb.memory = "1024"
8  end
9end

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

1$ vagrant up
2$ 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.

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

Agora vamos instalar o pacote ipa-server

1[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:

1[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

01The IPA Master Server will be configured with:
02Hostname: ipa.example.local
03IP address(es): 172.16.10.10
04Domain name: example.local
05Realm name: EXAMPLE.LOCAL
06 
07BIND DNS server will be configured to serve IPA domain with:
08Forwarders: 8.8.8.8, 8.8.4.4
09Forward policy: only
10Reverse zone(s): 10.16.172.in-addr.arpa.&amp;lt;/pre&amp;gt;
11Continue 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

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

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

1[root@ipa ~]# firewall-cmd --permanent --add-service={http,https,ldap,ldaps,kerberos,dns,kpasswd,ntp}
2[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.

1$ vim /etc/hosts
2172.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:

1[root@ipa ~]# kinit admin
2Password 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

1[root@ipa ~]# klist
2Ticket cache: KEYRING:persistent:0:0
3Default principal: admin@EXAMPLE.LOCAL</pre>
4Valid starting Expires Service principal
505/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

01[root@ipa ~]# ipa user-add ada.lovelace
02First name: Augusta Ada
03Last name: King-Noel Lovelace
04-------------------------
05Added 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
12  Initials: AK
13  Home directory: /home/ada.lovelace
14  GECOS: Augusta Ada King-Noel Lovelace
15  Login shell: /bin/sh
16  Principal name: ada.lovelace@EXAMPLE.LOCAL
17  Principal alias: ada.lovelace@EXAMPLE.LOCAL
18  Email address: ada.lovelace@example.local
19  UID: 286600006
20  GID: 286600006
21  Password: False
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

01[root@ipa ~]# ipa user-add linus.torvalds --first=Linus --last='Benedict Torvalds' --displayname='Linus Torvalds' --random
02---------------------------
03Added user "linus.torvalds"
04---------------------------
05  User login: linus.torvalds
06  First name: Linus
07  Last name: Benedict Torvalds
08  Full name: Linus Benedict Torvalds
09  Display name: Linus Torvalds
10  Initials: LB
11  Home directory: /home/linus.torvalds
12  GECOS: Linus Benedict Torvalds
13  Login shell: /bin/sh
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
19  UID: 286600007
20  GID: 286600007
21  Password: True
22  Member of groups: ipausers
23  Kerberos keys available: True

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

1[root@ipa ~]# ipa help topics
2[root@ipa ~]# ipa <TOPIC> -h
3[root@ipa ~]# ipa help commands
4[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.

1[root@ipa vagrant]# kdestroy
2[root@ipa vagrant]# klist
3klist: 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

Segurança

Proteja seu site: aprenda a identificar vulnerabilidades com WhatWeb

Todos nós temos contato direto ou indireto a sites e aplicações web. E, como bem sabemos, essas aplicações são alvos de ataques massivos de hackers e pessoas mau intencionadas. Por

Infraestrutura TI

Introdução ao MongoDB: aprenda sobre JSON, BSON e primeiros passos

Dando continuidade na série de MongoDB, nesse post farei uma Introdução ao formato “Javascript Object Notation” (JSON), ao BSON e aos primeiros passos com o MongoDB. Compartilhe este post: Share

Infraestrutura TI

Guia passo a passo para configurar o FreeIPA em CentOS e Ubuntu

Este post é o Segundo de uma série de posts sobre o FreeIPA. Se ainda não leu a Parte #1, onde instalamos e configuramos o servidor do FreeIPA , é