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 a interação entre MySQL e o cache de sistema de arquivos do Linux
Neste post veremos a interação entre o MySQL e o cache de sistema de arquivos do Linux, principalmente a respeito da configuração do buffer pool do InnoDB. Utilizamos o MySQL
5 Dicas Cruciais para Aumentar sua Segurança Online e Evitar Hackers
Embora estejamos cada vez mais dependentes da tecnologia e armazenarmos nossas informações on-line, essa tendência aumenta a quantidade e o desejo dos hackers de tentar adquirir suas informações confidenciais, como
Criando imagens personalizadas com Packer para Google Cloud Platform
Olá pessoal, hoje no blog da 4Linux, vamos falar dessa ferramenta sensacional que é o Packer da HashiCorp. Bora lá. O que é o Packer O Packer é uma ferramenta