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

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
- Criar um domínio no servidor WiKID (cada domínio é um escopo de autenticação).
- Criar um Network Client no WiKID para cada gateway/servidor que fará consultas RADIUS.
- Instalar e compilar pam_radius no CentOS 7.
- Configurar PAM (/etc/pam.d/sshd) e o arquivo de cliente RADIUS (/etc/pam_radius_auth.conf).
- Testar, ajustar e endurecer (ex.: desativar autenticação por senha se desejar).
1. Adicionar um domínio no servidor WiKID
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.
Ao salvar, adicione o “shared secret” (segredo compartilhado) para este cliente.
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
- 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
- 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.
- 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.
- 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)
- Planejamento: inventarie servidores e defina domínios WiKID por grupo.
- Homologação: aplique em 1-2 servidores não críticos.
- Testes: verifique login normal, falha de token, logs e rollback.
- Gradual: aumentar cobertura por lotes.
- 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
- CentOS: http://www.centos.org
- PAM RADIUS: http://freeradius.org/pam_radius_auth/
- WiKID Two-factor authentication: https://www.wikidsystems.com
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.
Materiais semelhantes
Proteger servidores Debian/Ubuntu contra Logjam

Dark Sky — previsões hiperlocais de chuva

SSH seguro no CentOS 7 com WiKID 2FA

Impedir atualizações automáticas no Windows 10

Como contratar Stay Dry Roofing Indianapolis
