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

Proteger servidores Debian/Ubuntu contra Logjam
Segurança

Proteger servidores Debian/Ubuntu contra Logjam

Dark Sky — previsões hiperlocais de chuva
Tempo

Dark Sky — previsões hiperlocais de chuva

SSH seguro no CentOS 7 com WiKID 2FA
Segurança

SSH seguro no CentOS 7 com WiKID 2FA

Impedir atualizações automáticas no Windows 10
Windows

Impedir atualizações automáticas no Windows 10

Como contratar Stay Dry Roofing Indianapolis
Reparos em Telhado

Como contratar Stay Dry Roofing Indianapolis

Corrigir DNS não responde no Windows 11
Windows 11

Corrigir DNS não responde no Windows 11