Guia de tecnologias

Adicionar RADIUS ao sudo para 2FA no CentOS 7 e Ubuntu 14.04

5 min read Segurança Atualizado 19 Oct 2025
RADIUS no sudo para 2FA em CentOS 7 e Ubuntu 14.04
RADIUS no sudo para 2FA em CentOS 7 e Ubuntu 14.04

Introdução

Atacantes costumam usar credenciais perdidas, roubadas, fracas ou padrão para escalar privilégios após infiltrar uma rede. A autenticação em dois fatores reduz muito esse risco, mas outras vias de entrada, como malware, podem existir. Integrar RADIUS ao PAM permite separar autorização (diretório central) e autenticação 2FA (servidor dedicado), o que é uma boa prática de segurança.

Nota: como estamos usando RADIUS, essa configuração básica funciona com sistemas empresariais de 2FA que suportem RADIUS.

O que você precisa saber

  • Definição rápida: RADIUS é um protocolo de rede para autenticar e autorizar usuários em serviços, frequentemente usado com tokens/OTP para 2FA.
  • Este guia cobre CentOS/RHEL 7 e Ubuntu 14.04.
  • Preserva gerenciamento central de usuários (Active Directory, LDAP) + autenticação 2FA externa.

Pré-requisitos

  • Acesso root ou sudo no servidor CentOS/RHEL ou Ubuntu.
  • Um servidor RADIUS acessível (FreeRADIUS, NPS do Windows ou WiKID).
  • Conhecimento básico de PAM e arquivos em /etc/pam.d.

Configurar sudo no CentOS/RHEL para autenticação em dois fatores

Vamos começar no RHEL/CentOS 7.

Instale pré-requisitos:

sudo yum -y install make gcc pam pam-devel

Baixe o código PAM RADIUS (1.4 foi referência na época deste tutorial):

wget ftp://ftp.freeradius.org/pub/radius/pam_radius-x.x.x.tar.gz

Compile a biblioteca:

tar -xzvf pam-radius-x.x.x.tar.gz
cd pam-radius-x.x.x
sudo ./configure
sudo make

Copie a biblioteca para o local correto:

cp pam_radius_auth.so /lib/security/

Ou, em sistemas 64 bits:

cp pam_radius_auth.so /lib64/security/

Crie o diretório de configuração e copie o arquivo de configuração com o nome ‘server’:

sudo mkdir /etc/raddb
cp pam_radius_auth.conf /etc/raddb/server

Edite /etc/raddb/server e adicione o IP do servidor RADIUS e o segredo compartilhado:

# server[:port] shared_secret      timeout (s)
127.0.0.1       secret             1
radius_server_IP    secret           3
#
# ter localhost na configuração RADIUS é uma boa prática para testes

Observação: você pode apontar diretamente para o servidor WiKID como servidor RADIUS para testar; adicione esta máquina CentOS como cliente de rede no WiKID e reinicie o WiKID para validar.

Agora diga ao sudo para usar o RADIUS. Edite /etc/pam.d/sudo e substitua a linha que aponta para system-auth por:

auth       required      pam_radius_auth.so

Isso é suficiente para o CentOS/RHEL 7. A mesma abordagem funciona em 5 e 6 com ajustes mínimos de paths.

Configurar sudo no Ubuntu para autenticação em dois fatores

No Ubuntu 14.04, instale o pacote pronto:

sudo apt-get install libpam-radius-auth

Edite /etc/pam_radius_auth.conf para apontar ao seu servidor RADIUS, igual ao exemplo acima:

# server[:port] shared_secret      timeout (s)
127.0.0.1       secret             1
radius_server_IP   secret           3
#
# ter localhost na configuração RADIUS é uma boa prática para testes

Edite /etc/pam.d/sudo e adicione a linha que ativa o pam_radius acima da inclusão das configurações comuns:

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth sufficient pam_radius_auth.so
@include common-auth
@include common-account
@include common-session-noninteractive

A partir de agora, quando um administrador usar sudo, o PAM encaminhará nome de usuário e OTP ao servidor RADIUS/WiKID para validação.

Testes mínimos e mini-metodologia

  1. Antes de alterar /etc/pam.d/sudo, abra outra sessão ou consolide um método de recuperação (ex.: acesso direto via console) para evitar lockout.
  2. Configure o servidor RADIUS e verifique conectividade (ping/telnet na porta RADIUS, geralmente 1812).
  3. Teste autenticação com um usuário de teste e OTP válido.
  4. Monitore logs: /var/log/secure (CentOS) ou /var/log/auth.log (Ubuntu) para mensagens do pam_radius.
  5. Reverter: restaure o arquivo /etc/pam.d/sudo original se houver problemas.

Critérios de aceitação

  • Um usuário administrador autenticado por sudo precisa fornecer OTP válido e receber permissão.
  • Logs do servidor RADIUS mostram o pedido de autenticação e resposta bem-sucedida.
  • Usuários não configurados no RADIUS não obtêm elevação via sudo.

Quando isso pode falhar (contraexemplos)

  • Falha de rede entre o host e o servidor RADIUS: sudo pode bloquear se o tempo limite for curto.
  • Configuração incorreta do segredo compartilhado ou IP do servidor RADIUS impede validação.
  • Dependência excessiva de RADIUS sem fallback pode causar indisponibilidade para administradores.
  • Aplicações automatizadas que usam sudo sem interação humana podem quebrar ao exigir OTP.

Abordagens alternativas

  • Usar autenticação de dois fatores diretamente com PAM (por exemplo, Google Authenticator PAM) sem RADIUS.
  • Usar soluções PAM multifator que integram AD/LDAP e 2FA em um único módulo.
  • Implementar sudoers com NOPASSWD para scripts controlados e mover ações perigosas para contas específicas com auditoria.

Checklists por função

Administrador de sistema:

  • Verificar conectividade RADIUS (porta 1812/udp).
  • Confirmar mapeamento de usuários entre diretório central e RADIUS.
  • Testar fallback para console físico.

Equipe de segurança:

  • Auditar logs de autenticação e alertar tentativas suspeitas.
  • Verificar rotação de segredos compartilhados e políticas de token.

Caixa de fatos chave

  • Porta RADIUS padrão: 1812/udp.
  • Local de configuração PAM sudo: /etc/pam.d/sudo.
  • Arquivo de configuração do pam_radius no exemplo: /etc/raddb/server ou /etc/pam_radius_auth.conf.

Compatibilidade e migração

  • FreeRADIUS, NPS (Windows) e WiKID falam RADIUS e funcionam com este módulo PAM.
  • Em distribuições diferentes, paths de bibliotecas podem variar (/lib vs /lib64). Ajuste conforme arquitetura.
  • Em versões modernas do Ubuntu/CentOS, prefira pacotes empacotados (libpam-radius-auth ou equivalente) em vez de compilar manualmente.

Procedimento rápido de implantação (playbook)

  1. Configurar e testar servidor RADIUS separadamente.
  2. Instalar pam_radius no host alvo (pacote ou compilação).
  3. Copiar configuração de RADIUS para /etc/raddb/server ou /etc/pam_radius_auth.conf.
  4. Editar /etc/pam.d/sudo para chamar pam_radius_auth.so antes do common-auth/system-auth.
  5. Testar com usuário de teste e OTP.
  6. Monitorar logs e ajustar timeouts/segredos.

Riscos e mitigação

  • Risco: perda de acesso administrativo por erro de configuração. Mitigação: mantenha sessão root ativa ou acesso via console antes de alterar PAM.
  • Risco: indisponibilidade do servidor RADIUS. Mitigação: configurar múltiplos servidores RADIUS e timeouts razoáveis.

Notas de segurança e privacidade

  • Não armazene segredos compartilhados em repositórios públicos.
  • Audite periodicamente os logs de autenticação para detectar abusos.
  • Verifique requisitos de conformidade (ex.: PCI DSS) da sua organização.

Resumo e próximos passos

Integração de RADIUS com PAM para sudo aumenta substancialmente a proteção das contas administrativas ao exigir 2FA. Depois de implantar, sopese: adicionar múltiplos servidores RADIUS para redundância, automatizar testes de autenticação e documentar recuperação de acesso.

Importante: faça testes em um ambiente controlado antes de aplicar em produção.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE