Skip to content

Configuração Inicial do Ubuntu Server

INFO

Nota última atualizção: Agosto 2025

Incluindo maquina no Active Directory AD

  • No Linux
    • Configurar a rede
    • Configurar chaves do ssh
    • Configurar hostname
    • Configurar hora
    • Configurar banner de mensagem ao logar
  • No Windows
    • Criamos grupo Linux_Admins e Linux_Users
    • Criamos usuário para add maquinas no domínio

Autenticação de Usuários

Instalação e configuração do SSSD + Kerberos + AD

Informações

  • Domínio AD: pmdf.local
  • Controlador de Domínio (DC): taquari (10.95.203.40)
  • Máquina Ubuntu: IP w.x.y.z, hostname: ubuntu-server
  • Usuário AD para join: usuário do técnico no AD
  • Grupo AD para login Linux: Linux_Admins (para gerência da máquina) e Linux_Users (para quem precisar acessar com privilégios limitados)
  • Usuários AD no grupo: fulano, sicrano

Pré-requisitos na Máquina Ubuntu

Utilizando o template gerado, realizar as seguintes configurações:

Iniciando a configuração do servidor

Após a máquina iniciar realizar as configurações de rede

  1. Primeiro devemos descobrir o nome da nossa interface de rede usando o comando ip a s. Essa informação será usada na etapa seguinte:

Interface de rede

Nossa interface foi reconhecida como enp0s3.

  1. Configurar a rede manualmente, utilizando IP fixo. Editar o arquivo /etc/netplan/50-cloud-init.yaml.

Configuração de rede

  1. Configurar a rede manualmente, utilizando IP fixo. Editar o arquivo /etc/netplan/50-cloud-init.yaml.

ubuntu-02

Inserir as informações do endereçamento (de acordo com sua rede):

Endereçamento IP

As informações de endereçamento IP, roteador padrão e DNS devem ser conhecidas para configurar a rede.

  1. Em seguida aplicar as novas configurações com o comando:
shell
sudo netplan apply

Se tudo ocorreu bem, digitar o comando para verificar o endereço IP do servidor.

shell
ip -4 -br a

Verificar IP

  1. Com a configuração atualizada realizar a atualização de pacotes:
shell
sudo apt update

Configurar as chaves ssh

  1. Gerar as chaves do ssh
shell
sudo dpkg-reconfigure openssh-server

Chaves SSH

  1. Verificar se as Chaves Foram Criadas:
shell
ls -l /etc/ssh/ssh_host_*
  1. Criar o diretório para separação de privilégios:
shell
sudo mkdir -p /run/sshd
sudo chmod 0755 /run/sshd
  1. Testar a configuração:
shell
sudo sshd -t
  1. Recarregar o systemd e reiniciar o serviço:
shell
sudo systemctl daemon-reload
sudo systemctl restart ssh
  1. Verificar se o ssh iniciou:
shell
sudo systemctl status ssh
ss -nat | grep :22
  1. Editar o arquivo /etc/ssh/sshd_config e alterar a diretiva ListenAddress para o IP da máquina atual:
shell
sudo vim /etc/ssh/sshd_config
vim
ListenAddress w.x.y.z
  1. Reiniciar o SSH e verificar e a máquina escuta na porta escolhida:
shell
sudo systemctl daemon-reload
sudo systemctl restart ssh
sudo ss -nat | grep :22

Configurar o Hostname

  1. É bom que o nome da máquina Ubuntu seja único e, idealmente, um FQDN dentro do seu domínio.

Entretanto como os servidores linux serão adicionados ao domínio da PMDF e autenticados com um usuário do AD, essa é uma etapa obrigatória e o node DEVE ser único.

shell
sudo hostnamectl set-hostname NOME.pmdf.local
bash
  1. Edite /etc/hosts para refletir isso (se necessário, adicione a linha se não existir ou corrija):
shell
sudo vim /etc/hosts
vim
127.0.0.1 localhost
127.0.1.1 NOME.pmdf.local NOME
w.x.y.z NOME.pmdf.local NOME

Configurar DNS - netplan

A máquina Ubuntu PRECISA usar o seu Controlador de Domínio como o servidor DNS primário para resolver os serviços do AD (SRV records, etc.).

  1. Para Netplan (padrão do Ubuntu Server): Edite o arquivo de configuração do Netplan (geralmente em /etc/netplan/01-netcfg.yaml ou similar):
shell
sudo vim /etc/netplan/50-cloud-init.yaml
vim
network:
    ethernets:
        enp0s3:
            dhcp4: false
            addresses: [w.x.y.z/mascara]
            routes:
                - to: default
                    via: w.x.y.z
        nameservers:
            addresses: [10.95.203.40, 10.95.203.41] # IP do seu AD DC
            search: [PMDF.LOCAL] # Domínio de busca
    version: 2

Aplique a configuração:

shell
sudo netplan apply

Sincronização de tempo (NTP/Chrony)

Kerberos (usado pelo AD) é muito sensível a diferenças de tempo entre cliente e servidor, portanto os horários dos servidores devem ser sincronizados com o Domain Controller

  1. Ajustar manualmente o timezone:
  • Para listar as timezones disponíveis:
shell
sudo timedatectl list-timezones
  • Usamos America/Sao_Paulo
shell
sudo timedatectl set-timezone America/Sao_Paulo
  • E para verificar a data e hora
shell
date
  1. Instale o chrony:
shell
sudo apt update
sudo apt install chrony -y

Edite a configuração do Chrony para usar o seu DC como fonte de tempo:

shell
sudo nano /etc/chrony/chrony.conf

Comente ou remova as linhas pool ... existentes e adicione a linha do seu DC:

vim
server taquari.pmdf.local iburst

Reinicie e ative o Chrony:

shell
sudo systemctl restart chrony
sudo systemctl enable chrony

Verifique a sincronização:

shell
chronyc sources

Você deve ver taquari.pmdf.local (ou o IP) com ^* indicando que é a fonte sincronizada. Pode levar alguns minutos.

Configurar banner da máquina

  1. Editar o arquivo /etc/bash.bashrc
shell
sudo vim /etc/bash.bashrc

Inserir o nome da máquina ou sua função:

vim
figlet -w 120 -f standard AQUICOLOCARNOMEHOST | /usr/games/lolcat
echo " "
echo "########################################################"
echo " "
echo -e " * Servidor COLOCAR AQUI A FUNÇÃO OU OUTRA COISA * "
echo -e " * ACESSO RESTRITO * "
echo -e " * Todas as ações sao monitoradas * "
echo " "
echo "########################################################"
echo " "
echo "Para verificar seu IP digite [ hostname -I ] "
echo " "

Ajustar o Auditd

  1. Na geração do template apagamos todos os logs do sistema. Se faz necessário criar o diretório /var/log/audit. O serviço auditd precisa dessa pasta para funcionar, e como ela não existe, ele falha ao tentar iniciar
  2. Crie a pasta audit: Este comando vai criar a pasta que está faltando.
shell
sudo mkdir /var/log/audit
  1. Ajuste as permissões de segurança da pasta: Este comando protege a pasta, garantindo que apenas o sistema possa acessá-la.
shell
sudo chmod 700 /var/log/audit
  1. Agora, inicie o serviço auditd: Com a pasta no lugar, o serviço vai iniciar corretamente.
shell
sudo systemctl status auditd

SSSD

O SSSD é o serviço que proporcionará a autenticação dos usuários no Active Directory.

Instalar Pacotes Necessários - SSSD

shell
sudo apt update
sudo apt install -y realmd sssd sssd-tools adcli krb5-user packagekit samba-common-bin libnss-sss libpam-sss

Durante a instalação do krb5-user, ele pode perguntar pelo "Default Kerberos version 5 realm". Digite em MAIÚSCULAS: PMDF.LOCAL.

Descobrir o Domínio AD

  1. Acessar como root:
shell
sudo -i

Este comando verifica se o domínio é detectável:

shell
realm discover PMDF.LOCAL

Você deve ver informações sobre seu domínio, como:

ubuntu-06

Ingressar a Máquina no Domínio AD

Use o seu usuário da rede que tem permissão para adicionar máquinas ao domínio.

shell
realm join --user=usuario PMDF.LOCAL

Você será solicitado a digitar a senha do usuário.

Se precisar especificar a Unidade Organizacional (OU) onde o objeto computador será criado no AD:

shell
realm join --user=usuario --computer-ou="OU=LINUX,OU=SERVERS,DC=pmdf,DC=local" PMDF.LOCAL

Verifique se a máquina ingressou:

shell
realm list

Você deverá ver algo como a imagem anterior

  • Delegar permissões para grupos.
shell
sudo realm permit -g 'Linux_Admins'
sudo realm permit -g 'Linux_Users'

Obs: Esses grupos devem existir no AD.

Configurar SSSD

O comando realm join geralmente cria uma configuração básica para SSSD em /etc/sssd/sssd.conf. Vamos ajustá-la para suas necessidades

Permitir Login Apenas para o Grupo Linux_Admins

Edite o arquivo de configuração do SSSD:

shell
sudo vim /etc/sssd/sssd.conf

O arquivo final deverá ser parecido com isto (ajuste conforme necessário, especialmente a seção [domain/pmdf.local]) :

vim
[sssd]
domains = pmdf.local
config_file_version = 2
services = nss, pam

[domain/pmdf.local]
ad_domain = pmdf.local
krb5_realm = PMDF.LOCAL
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad

# Linhas importantes a adicionar/modificar:
default_shell = /bin/bash
fallback_homedir = /home/%u@%d
use_fully_qualified_names = False

# Para restringir acesso ao grupos Linux_Admins, Linux_Users
access_provider = simple
simple_allow_groups = Linux_Admins, Linux_Users

# Opções padroes
# krb5_store_password_if_offline = True
# ldap_id_mapping = True
  • Resumo das modificações importantes em [domain/pmdf.local]:

    • Adicione/Certifique-se que existe: default_shell = /bin/bash
    • Adicione/Certifique-se que existe: fallback_homedir = /home/%u@%d (ou /home/%u)
    • Considere : use_fully_qualified_names = True ( usuários serão obiwan@pmdf.local) ou False (usuários serão obiwan). Se False, use override_homedir = /home/%u.
    • Adicione: access_provider = simple
    • Adicione: simple_allow_groups = sec-linux@pmdf.local (se use_fully_qualified_names = True) ou simple_allow_groups = sec-linux (se use_fully_qualified_names = False).
  • Definir permissões Corretas para sssd.conf

shell
sudo chmod 600 /etc/sssd/sssd.conf
  • Reiniciar e Habilitar SSSD
shell
sudo systemctl restart sssd
sudo systemctl enable sssd

Configurar PAM para Criação Automática de Home Directories

Precisamos que o diretório home do usuário seja criado no primeiro login.

shell
sudo vim /etc/pam.d/common-session

Adicione a seguinte linha ANTES da linha session optional pam_sss.so: O arquivo ficará algo como:

ubuntu-07

Verificar Integração e Login de Usuários

Verificar se os usuários do AD são reconhecidos

  • Se use_fully_qualified_names = True :
shell
id obiwan@pmdf.local
id assoka@pmdf.local
getent passwd obiwan@pmdf.local
getent group Linux_Admins@pmdf.local
  • Se use_fully_qualified_names = False :
shell
id obiwan
id assoka
getent passwd obiwan
getent group Linux_Admins

Testar Login

Tente fazer login via SSH a partir de outra máquina ou em um TTY local:

shell
ssh -l obiwan w.x.y.z

Você será solicitado pela senha do obiwan do AD. No primeiro login, o diretório home /home/obiwan@pmdf.local (ou /home/obiwan) será criado.

Configurar Sudoers para Usuários/Grupos do AD

Você quer que os usuários obiwan e assoka (que estão no grupo Linux_Admins ) tenham permissões sudo específicas.

Edite o arquivo sudoers usando visudo (SEMPRE use visudo ):

shell
sudo visudo

Adicione a seguinte linha no final do arquivo para dar permissões ao grupo Linux_Admins. O formato do nome do grupo no sudoers deve corresponder ao que getent group mostra (com ou sem @pmdf.local).

Se use_fully_qualified_names = True (e getent group Linux_Admins@pmdf.local funciona):

vim
# Permissões para o grupo sec-linux do AD
%Linux_Admins@pmdf.local ALL=(ALL) /usr/bin/apt update, /usr/bin/apt upgrade, /usr/sbin/reboot

Se use_fully_qualified_names = False (e getent group Linux_Admins funciona):

vim
# Permissões para o grupo sec-linux do AD
%Linux_Admins ALL=(ALL) /usr/bin/apt update, /usr/bin/apt upgrade, /usr/sbin/reboot

Explicação da linha sudo:

  • %Linux_Admins@pmdf.local: O % indica que é um grupo.
  • ALL= : Podem executar comandos em qualquer host (relevante se você tem uma configuração centralizada de sudoers)
  • (ALL) : Podem executar comandos como qualquer usuário (geralmente root).
  • /usr/bin/apt update, /usr/bin/apt upgrade, /usr/sbin/reboot : Lista de comandos permitidos. Certifique-se de usar os caminhos completos dos executáveis.

Para verificar os caminhos corretos dos comandos:

shell
which apt
which reboot

Se preferir conceder permissões a usuários individuais (embora o grupo seja mais gerenciável):

shell
# Se use_fully_qualified_names = True
obiwan@pmdf.local ALL=(ALL) /usr/bin/apt update, /usr/bin/apt upgrade
assoka@pmdf.local ALL=(ALL) /usr/sbin/reboot
# Se use_fully_qualified_names = False
obiwan ALL=(ALL) /usr/bin/apt update, /usr/bin/apt upgrade
assoka ALL=(ALL) /usr/sbin/reboot

Salvar o arquivo.

Testar as permissões sudo: Após logar como obiwan:

shell
sudo apt update # Deve pedir a senha de obiwan e funcionar
sudo reboot # Deve pedir a senha de obiwan e funcionar (se permitido)
sudo cat /etc/shadow # Deve ser negado, pois não está na lista de comandos permitidos

Resumos e Pontos de Atenção

  1. DNS é CRUCIAL: O Ubuntu DEVE usar o DC como DNS.
  2. Tempo Sincronizado: Kerberos exige que os horários estejam próximos.
  3. sssd.conf: A configuração aqui dita como os usuários são mapeados e quem pode logar.
    • use_fully_qualified_names : Define se os nomes de usuário incluem o domínio (user@domain.com) ou não (user). Isso afeta como você especifica usuários/grupos no sudoers e como os diretórios home são nomeados.
    • access_provider = simple e simple_allow_groups: É a forma mais fácil de restringir logins a grupos específicos do AD.
  4. pam_mkhomedir.so : Garante que os diretórios home sejam criados.
  5. sudoers:
    • Use %nome_do_grupo_ad para especificar grupos.
    • Seja específico nos comandos permitidos e use caminhos completos.
  6. Logs: Se algo der errado, verifique os logs:
    • sudo journalctl -u sssd -f
    • cat /var/log/auth.log
    • cat /var/log/syslog
    • Logs específicos do SSSD em /var/log/sssd/ (pode ser necessário aumentar o nível de debug no sssd.conf).