Adicionar RADIUS ao sudo para 2FA no 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
- 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.
- Configure o servidor RADIUS e verifique conectividade (ping/telnet na porta RADIUS, geralmente 1812).
- Teste autenticação com um usuário de teste e OTP válido.
- Monitore logs: /var/log/secure (CentOS) ou /var/log/auth.log (Ubuntu) para mensagens do pam_radius.
- 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)
- Configurar e testar servidor RADIUS separadamente.
- Instalar pam_radius no host alvo (pacote ou compilação).
- Copiar configuração de RADIUS para /etc/raddb/server ou /etc/pam_radius_auth.conf.
- Editar /etc/pam.d/sudo para chamar pam_radius_auth.so antes do common-auth/system-auth.
- Testar com usuário de teste e OTP.
- 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.
Materiais semelhantes

ChatGPT e Spotify: criar playlists com IA

Instalar ONLYOFFICE com Docker (Guia rápido)

Corrigir consumo de bateria no iPhone com iOS 26

Como cortar imagens no Word, Excel e PowerPoint

Proteja Contatos e Fotos num iPhone iOS 9
