Guia de tecnologias

Segurança SSH no CentOS 7 com autenticação de dois fatores WiKID

7 min read Segurança Atualizado 03 Oct 2025
SSH seguro no CentOS 7 com WiKID 2FA
SSH seguro no CentOS 7 com WiKID 2FA

Objetivo principal

Garantir que acessos SSH ao servidor CentOS 7 exijam autenticação de dois fatores (2FA) usando o WiKID Strong Authentication via RADIUS/PAM. Variantes de intenção: autenticação SSH com 2FA, integrar WiKID ao Linux, configurar pam_radius, endurecer acesso root remoto.

Pré-requisitos rápidos

  • Servidor CentOS 7 em operação com acesso root ou sudo.
  • Acesso administrativo ao servidor WiKID (ou a outro servidor RADIUS configurado para conversar com o WiKID).
  • Rede entre o servidor CentOS e o servidor WiKID (portas RADIUS abertas; por padrão UDP 1812).
  • Ferramentas básicas: wget, tar, compilador (make), editor (vim/nano).

Importante: backup das configurações PAM e sshd antes de alterar anything. Se o servidor for remoto, mantenha uma sessão de root alternativa (console KVM ou out-of-band) para rollback.

Visão geral do fluxo

  1. Criar um domínio no servidor WiKID (cada domínio é um escopo de autenticação).
  2. Criar um Network Client no WiKID para cada gateway/servidor que fará consultas RADIUS.
  3. Instalar e compilar pam_radius no CentOS 7.
  4. Configurar PAM (/etc/pam.d/sshd) e o arquivo de cliente RADIUS (/etc/pam_radius_auth.conf).
  5. Testar, ajustar e endurecer (ex.: desativar autenticação por senha se desejar).

1. Adicionar um domínio no servidor WiKID

Captura de tela da interface WiKID onde se adiciona o domínio

No painel do WiKID, crie um novo domínio. O campo “Domain Server Code” espera o endereço IP público do servidor, preenchido com zeros à esquerda e sem separadores. Exemplo: para IP 54.83.0.181 use 054083000181.

Dica: use um domínio separado para ambientes críticos (ex.: root, produção, HR) para permitir políticas e logs separados.

2. Criar um Network Client

  • Navegue até a aba “Network Client” e clique em “Create New Network Client”.
  • Informe um nome e o endereço IP do gateway/servidor que fará as consultas RADIUS.
  • Selecione RADIUS como protocolo e associe o domínio criado.

Tela de criação de Network Client no WiKID com campos de nome, IP e protocolo

Ao salvar, adicione o “shared secret” (segredo compartilhado) para este cliente.

Campo para inserir o segredo compartilhado do RADIUS

Repita para cada host ou gateway que consultará o servidor WiKID.

3. Instalar pam_radius no CentOS 7

Observação: a versão referenciada deste tutorial é a 1.3.17.

Baixe a origem (exemplo via FTP):

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

Extraia o tarball:

$ tar -xzvf pam_radius-1.3.17.tar.gz

Instale dependências de desenvolvimento (pam-devel) e compile:

$ sudo yum install pam-devel -y
$ cd pam_radius-1.3.17
$ make

Se a biblioteca .so for gerada com sucesso, copie-a para a localização apropriada conforme a arquitetura do sistema:

# Em sistemas 32-bit
$ sudo cp pam_radius_auth.so /lib/security/

# Em sistemas 64-bit
$ sudo cp pam_radius_auth.so /usr/lib64/security/

Verifique a existência do arquivo copiado:

$ ls -l /lib/security/pam_radius_auth.so /usr/lib64/security/pam_radius_auth.so

4. Configurar SSH e PAM para usar RADIUS

  1. Faça backup do arquivo SSH PAM e do SSHD config:
$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  1. Edite /etc/pam.d/sshd e adicione a linha para o pam_radius como a segunda linha (após as linhas padrão). Normalmente o caminho do módulo é /lib/security/pam_radius_auth.so ou /usr/lib64/security/pam_radius_auth.so dependendo da sua arquitetura.

Adicione (exemplo):

auth sufficient /lib/security/pam_radius_auth.so

Notas:

  • “sufficient” permite fallback para outros mecanismos (por exemplo senha local).
  • Troque para “required” para forçar exclusivamente RADIUS; faça isso somente após testes.
  1. Configure o arquivo de cliente RADIUS local. O nome padrão é /etc/pam_radius_auth.conf (ou /etc/pam_radius.conf em algumas distribuições). Se o arquivo não existir, crie-o.
$ sudo vim /etc/pam_radius_auth.conf

Formato da linha:

Exemplo:

192.0.2.10 mySharedSecret 3

Substitua 192.0.2.10 pelo IP do servidor WiKID e mySharedSecret pelo segredo compartilhado cadastrado no WiKID.

  1. Reinicie o serviço SSH para aplicar alterações (apenas depois de validar configurações PAM):
$ sudo systemctl restart sshd

5. Testes e depuração

  • Antes de finalizar, teste com um terminal de sessão e monitore logs:
$ sudo tail -f /var/log/secure
  • Tente autenticar via SSH a partir de um host cliente e observe as entradas no log.
  • Use um usuário local existente ou configure autenticação de conta via LDAP/AD integrando PAM (pam_ldap ou sssd), se desejar centralizar contas.

Se algo falhar, restaure o backup de /etc/pam.d/sshd para recuperar acesso.

6. Endurecimento e boas práticas

  • Após testes, considere tornar a linha RADIUS “required” para recusar autenticação sem 2FA.
  • Desative autenticação por senha se confiar plenamente no 2FA e no mapeamento de contas: no /etc/ssh/sshd_config defina PasswordAuthentication no.
PasswordAuthentication no
ChallengeResponseAuthentication yes
  • Considere forçar autenticidade de chave pública + 2FA combinando PublicKeyAcceptedAlgorithms e PAM, conforme sua política.
  • Mantenha logs centralizados (syslog/ELK) para auditoria.
  • Segmente domínios WiKID por função (root, ops, HR) para controles finos.

Importante: sempre valide em ambiente de homologação antes de aplicar em produção.

Mini-metodologia de rollout (passos recomendados)

  1. Planejamento: inventarie servidores e defina domínios WiKID por grupo.
  2. Homologação: aplique em 1-2 servidores não críticos.
  3. Testes: verifique login normal, falha de token, logs e rollback.
  4. Gradual: aumentar cobertura por lotes.
  5. Produção: aplicar política “required” e desativar métodos fracos.

Checklist por função

  • Administrador (implementação):

    • Backup de /etc/pam.d/sshd e /etc/ssh/sshd_config.
    • Criar domínio no WiKID.
    • Criar Network Client(s) com secret.
    • Instalar/compilar pam_radius e copiar .so.
    • Configurar /etc/pam_radius_auth.conf.
    • Testar logs e autenticação.
    • Planejar rollback.
  • Auditor / Compliance:

    • Verificar logs e trails de autenticação.
    • Confirmar que usuários receberam tokens e PINs.
    • Checar políticas de expiração/desativação de tokens no WiKID.
  • Operações (SRE):

    • Monitorar latência das respostas RADIUS.
    • Ter plano de contorno se o WiKID ficar indisponível.
    • Testar recuperação de conta e desativação rápida.

Aceitação e casos de teste (Testes mínimos)

  • Caso 1: autenticação com token válido + PIN -> sucesso.
  • Caso 2: token inválido ou expirado -> falha e log claro.
  • Caso 3: conexão ao RADIUS não disponível -> comportamento definido (se “sufficient”: fallback; se “required”: negar).
  • Caso 4: tentativa de acesso root via SSH sem token -> negar.

Critério de aceitação: todos os logins SSH registrados no /var/log/secure demonstram uso de autenticação via RADIUS/WiKID e auditoria gera relatórios de sucesso/fracasso.

Decisão rápida (fluxo) — quando usar WiKID via RADIUS

flowchart TD
  A[Precisa de 2FA para SSH?] -->|Sim| B{Tem WiKID disponível?}
  B -->|Sim| C[Configurar Network Client e pam_radius]
  B -->|Não| D[Instalar alternativa 2FA 'Google Authenticator / Duo']
  C --> E[Testar em homologação]
  E --> F{Ok nos testes?}
  F -->|Sim| G[Aplicar em produção e endurecer]
  F -->|Não| H[Corrigir e repetir testes]

Fatores de compatibilidade e migração

  • pam_radius é compatível com PAM em CentOS 7; em distribuições mais novas (CentOS 8/Stream, RHEL 8+) o caminho das bibliotecas e gerenciador de pacotes podem diferir.
  • RADIUS padrão usa UDP/1812; verifique firewalls e dispositivos intermediários.
  • Se usar servidores intermediários (ex.: FreeRADIUS entre WiKID e hosts), registre corretamente os segredos e monitore latência.

Fatos e números úteis

  • Versão do pacote referenciada: pam_radius 1.3.17.
  • Porta RADIUS típica: UDP 1812 (autenticação).
  • Timeout padrão recomendado para /etc/pam_radius_auth.conf: 3 segundos (ajustar conforme latência de rede).

Quando isso falha — casos e mitigação

  • WiKID indisponível: com linha PAM em modo “required” você bloqueará logins. Mitigação: manter uma conta de emergência local ou console out-of-band.
  • Segredo compartilhado comprometido: gere novo segredo no WiKID e atualize os clients; invalide logs e revise acessos.
  • Usuários sem conta local ou sem sincronização LDAP: configure pam_ldap/sssd ou garanta criação de contas.

Notas de segurança adicionais

  • Proteja o arquivo /etc/pam_radius_auth.conf com permissões restritas (root-only).
sudo chown root:root /etc/pam_radius_auth.conf
sudo chmod 600 /etc/pam_radius_auth.conf
  • Monitore e roteie logs para um servidor centralizado.
  • Revise política de PIN/tokens no WiKID: comprimento do PIN, bloqueios por tentativas, expiração de tokens.

Galeria de edge-cases (pontos a validar)

  • Ambientes com balanceadores de carga que NATeam IPs: cadastre o IP visível ao WiKID.
  • Hosts com múltiplas interfaces — certifique-se que a interface correta origina as requisições RADIUS.
  • Conexões via VPN que alteram MÁSCARA de rede — verifique regras de firewall.

Links úteis

Sumário

  • Integrar o WiKID via RADIUS/PAM ao SSH no CentOS 7 aumenta significativamente a segurança e melhora a postura para auditorias.
  • Faça testes em homologação, mantenha backups e prepare rollback.
  • A escolha entre “sufficient” e “required” no PAM altera o risco de bloqueio — mude para “required” somente após validação.

Principais ações: criar domínio e Network Client no WiKID; instalar pam_radius; configurar /etc/pam.d/sshd e /etc/pam_radius_auth.conf; testar e endurecer.

Resumo executivo para comunicação (1 parágrafo)

Implementar WiKID como provedor RADIUS para SSH no CentOS 7 adiciona autenticação de dois fatores centralizada, controle de domínios e capacidade de desativar rapidamente usuários. Com testes e um rollout faseado, é possível obter conformidade de auditoria e controle fino de acessos privilegiados.

Fim do guia.

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