Proteger X2Go no Ubuntu Precise com autenticação WiKID de dois fatores
Visão geral rápida
Definição curta: WiKID é um sistema de autenticação forte de dois fatores; X2Go é um cliente/servidor de desktop remoto baseado em NX. Neste fluxo, o WiKID valida o token (posse) e o PIN (conhecimento) do usuário. O objetivo é exigir um código OTP além da senha do Linux para sessões remotas X2Go.
Importante: Presuma que o servidor WiKID já está instalado e funcional. Este guia foca na integração e na configuração do servidor X2Go/Ubuntu com pam-radius.
Principais passos
- Criar um domínio no servidor WiKID.
- Criar um Network Client no WiKID apontando para o servidor X2Go.
- Instalar e configurar X2Go no Ubuntu Precise.
- Instalar e configurar libpam-radius-auth no X2Go para encaminhar autenticações ao WiKID.
- Testar e validar com token WiKID e PIN.
Adicionando um domínio ao servidor WiKID
Siga a interface web do WiKID para criar um domínio que represente o conjunto de usuários e políticas que usarão X2Go. O domínio organiza os tokens e permite separar ambientes (por exemplo, produção vs teste).
![/files/3334f43e-80d2-4035-82c9-72fcd307ec25.jpg]
Alt: Página de administração do WiKID mostrando a criação de um novo domínio e opções relacionadas.
Criar um Network Client
Depois de salvar as informações do domínio, acesse a aba Network Client e clique em Create New Network Client. Informe um nome identificável e o endereço IP do servidor X2Go na rede interna. Escolha RADIUS como protocolo e selecione o domínio criado.
![/files/4d4dcb46-39ef-4318-ba20-d753896c8c5b.jpg]
Alt: Formulário de criação de Network Client no painel WiKID com campos para nome, IP e protocolo.
Clique em Add. Na página seguinte insira o shared secret (segredo compartilhado) para RADIUS. Guarde este segredo: ele será colocado no arquivo de configuração do PAM RADIUS do servidor X2Go.
![/files/434d1b1f-43f1-4c88-84ef-ef9ed05e723c.jpg]
Alt: Configuração do segredo compartilhado (shared secret) para o cliente RADIUS no WiKID.
Instalar e configurar X2Go no Ubuntu (Precise)
Instalar repositórios e pacotes do X2Go:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goserver x2goserver-xsession x2gobroker x2gobroker-daemon x2gobroker-authservice
Instale um ambiente de desktop se necessário (exemplo: Unity/GNOME):
sudo apt-get install ubuntu-desktop gnome
Ou instale o desktop leve de sua preferência (XFCE, MATE, LXDE) para reduzir uso de recursos.
Recomendo testar a autenticação local do X2Go antes de integrar o RADIUS. No cliente, instale o x2goclient e crie uma sessão apontando ao IP do servidor X2Go. Verifique login com usuário e senha locais:
apt-get install x2goclient
Configurar PAM RADIUS no servidor X2Go
Cada distribuição trata PAM de forma ligeiramente diferente. Este passo descreve Ubuntu/ Debian.
Instale o pacote de autenticação RADIUS para PAM:
$ sudo apt-get install libpam-radius-auth
A seguir, edite o arquivo de configuração do libpam-radius-auth para apontar ao seu servidor WiKID:
$ sudo vim /etc/pam_radius_auth.conf
No arquivo, substitua a linha de exemplo:
other-server; other-secret 3
por uma linha com o endereço IP (ou hostname) do seu servidor WiKID e o segredo compartilhado criado no Network Client:
192.0.2.10 my-shared-secret 3
Nota: o arquivo instrui copiar para /etc/raddb/server — NÃO faça isso; mantenha /etc/pam_radius_auth.conf conforme o pacote espera.
Agora configure o serviço SSH (e/ou outros serviços PAM-aware) para usar pam_radius_auth. Edite:
$ sudo vim /etc/pam.d/sshd
Adicione a linha seguinte antes de incluir common-auth:
auth sufficient pam_radius_auth.so
O trecho final deverá ficar semelhante a:
auth sufficient pam_radius_auth.so
# Standard Un*x authentication.
@include common-auth
Significado curto: ‘sufficient’ permite que, se o RADIUS autenticar com sucesso, o PAM aceite a autenticação sem continuar as outras pilhas.
Testes e validação
Abra um terminal com logs de autenticação:
tail -f /var/log/auth.log
No cliente X2Go, inicie seu token WiKID e selecione o domínio apropriado. Digite seu PIN e gere o código OTP (one-time passcode). Tente autenticar no X2Go usando o nome de usuário Linux e o OTP. Observe os logs para eventos de acesso e erros.
Dicas de teste:
- O nome de usuário no Linux deve corresponder ao nome no WiKID.
- Se usar diretório central (LDAP/AD), certifique-se que o usuário exista localmente ou configure pam_ldap antes do pam_radius, conforme sua política.
Critérios de aceitação
- O usuário A consegue autenticar via X2Go usando PIN+OTP gerado pelo token WiKID.
- Tentativas sem OTP falham quando o RADIUS é obrigatório.
- Logout, encerramento e múltiplas sessões funcionam sem perda de sessão do X2Go.
- A administração consegue desabilitar um token no WiKID e bloquear o acesso imediatamente.
Checklist rápido para implantação (roles)
Administrador de sistema:
- Confirmar servidor WiKID operacional.
- Criar domínio e Network Client com IP do servidor X2Go.
- Guardar shared secret do Network Client.
- Instalar X2Go e desktop no Ubuntu Precise.
- Instalar libpam-radius-auth e configurar /etc/pam_radius_auth.conf.
- Editar /etc/pam.d/sshd para incluir pam_radius_auth.
- Testar logs e autenticação com token.
Administrador de segurança/Identidade:
- Garantir políticas de PIN e bloqueio no WiKID.
- Planejar processos de provisionamento e revogação de tokens.
Usuário final:
- Receber token e instruções de uso.
- Testar login X2Go com OTP.
Troubleshooting comum
Problema: autenticação falha com o RADIUS.
- Verifique /var/log/auth.log e os logs do servidor WiKID.
- Confirme IP/hostname e shared secret em /etc/pam_radius_auth.conf.
- Teste conectividade UDP/TCP entre servidor X2Go e WiKID (porta RADIUS 1812 UDP normalmente).
Problema: usuário não existe no Linux.
- Garanta que haja conta local com mesmo nome de usuário ou configure pam_ldap/pam_sss para consultar seu diretório antes do pam_radius.
Problema: atraso ou sincronização de tokens.
- Tokens WiKID não dependem de tempo (algoritmos baseados em evento) na maioria dos casos, mas verifique a documentação do seu tipo de token.
Decisão rápida (fluxo) — quando usar esse modelo
flowchart TD
A[Precisa de 2FA para X2Go?] -->|Sim| B[Servidor WiKID disponível?]
B -->|Sim| C[Criar domínio e Network Client]
B -->|Não| D[Instalar/configurar WiKID]
C --> E[Configurar X2Go no Ubuntu]
E --> F[Instalar libpam-radius-auth e apontar para WiKID]
F --> G[Testar autenticação com token]
G --> H{Autenticação OK?}
H -->|Sim| I[Produção]
H -->|Não| J[Depurar logs e regras PAM]
Boas práticas de segurança e endurecimento
- Restrinja o acesso à porta RADIUS (UDP 1812) apenas entre o servidor X2Go e o WiKID.
- Use segredos RADIUS fortes e rotacione-os conforme política.
- Monitore logs de autenticação e alerte tentativas repetidas.
- Desabilite tokens imediatamente quando houver suspeita de comprometimento.
- Se usar diretório (AD/LDAP), mantenha autorização centralizada: o RADIUS deve delegar apenas autenticação, não autorização, quando apropriado.
Compatibilidade e notas de migração
- Este guia foi testado para Ubuntu 12.04 (Precise). Em versões mais recentes do Ubuntu, nomes de pacotes e métodos de gestão de PAM podem variar. Verifique pacotes equivalentes e caminhos de configuração.
- Em distribuições RHEL/CentOS, o pacote PAM RADIUS e o caminho de configuração podem diferir — consulte a documentação específica da sua distro.
Quando esse método falha (contraexemplos)
- Em ambientes sem infraestrutura de tokens ou quando o WiKID não pode ser acessado por rede.
- Quando é necessário SSO (single sign-on) completo com Kerberos; nesse caso combine métodos ou escolha um gateway SSH central com RADIUS.
- Em cenários de alta latência entre o X2Go e o WiKID que causem timeouts frequentes.
Testes de aceitação (exemplos)
- Caso de teste 1: Usuário válido, token válido -> autenticação sucedida.
- Caso de teste 2: Usuário válido, token inválido -> autenticação negada e registrada no log.
- Caso de teste 3: Token desabilitado no WiKID -> autenticação negada imediatamente.
Plano de rollback / runbook de incidente breve
- Se a autenticação RADIUS falhar amplamente, comente a linha pam_radius_auth em /etc/pam.d/sshd para restaurar login local (se aplicável).
- Reinicie o serviço SSH se necessário.
- Investigue conectividade e logs do WiKID antes de reverter permanentemente.
Sumário
A integração de X2Go com o WiKID via pam-radius oferece autenticação de dois fatores que combina posse do token e conhecimento do PIN. O procedimento envolve criar um domínio e cliente no WiKID, instalar/configurar X2Go no Ubuntu, apontar libpam-radius-auth para o WiKID, e testar com tokens. Siga o checklist e as boas práticas de segurança para implantação segura.
Observação final: mantenha documentados os procedimentos de provisão e revogação de tokens. Isso minimizará janela de risco quando for necessário desabilitar acessos.