Autenticação · 6 min read · Dec 28, 2025

Configurando SSH Para Usar Freeradius E WiKID Para Autenticação De Dois Fatores

Configurando SSH Para Usar Freeradius E WiKID Para Autenticação De Dois Fatores

Radius é um ótimo padrão. É poderoso o suficiente para realizar uma grande quantidade de tarefas e simples o suficiente para ser fácil de manusear. Freeradius é um excelente servidor radius de código aberto que vem com muitas variantes do Linux. É bem documentado e bem suportado. O servidor de Autenticação Forte WiKID é um sistema comercial/de código aberto de autenticação de dois fatores que usa criptografia de chave pública para transmitir PINs e senhas de uso único de forma segura para tokens de software que rodam em Blackberries, celulares, Palms, PocketPCs ou, usando o cliente J2SE, Linux, Macs e PCs com Windows. Você pode pensar no WiKID como certificados, mas sem as complicações de listas brancas/listas negras e mais seguro - porque o PIN é validado no servidor, prevenindo ataques de força bruta offline.

Empresas que precisam atender a requisitos, como PCI-DSS ou HIPAA, podem precisar proteger suas redes com autenticação de dois fatores e acesso rigidamente controlado. Combinar Freeradius e WiKID é uma maneira altamente econômica de conseguir isso.

Neste exemplo, estou instalando Freeradius no Fedora Core 7 e executando os rpms 3.0RC2 do WiKID no Centos5 (no entanto, as mesmas instruções funcionarão para a versão 2.0 do WiKID.) Estaremos testando com SSH, no entanto, a mesma configuração deve funcionar para Apache, WebDAV, OpenVPN e qualquer outro aplicativo que suporte PAM.

Instalando e Configurando Freeradius

Não importa qual variante do Linux você esteja executando, provavelmente há um pacote para Freeradius. Para Fedora, instalar via Yum é simples:

yum install freeradius

Configurar Freeradius é bastante direto. Existem muitas opções, no entanto. A chave é mudar apenas os itens mínimos que você entende. As configurações padrão funcionam, então faça pequenas alterações e teste-as. Vamos modificar três arquivos. O arquivo /etc/raddb/clients.conf informa ao Freeradius quais clientes aceitar. O arquivo proxy.conf informa ao Freeradius para enviar os pacotes de autenticação para o servidor WiKID e o arquivo radiusd.conf configura o servidor Freeradius principal.

Primeiro, edite o arquivo /etc/raddb/clients.conf:

vi /etc/raddb/clients.conf

client 127.0.0.1 {
        secret          = shared_secret
        shortname       = localhost
        nastype     = other
}

Tudo que você precisa mudar por enquanto é o segredo compartilhado, pois faremos login no servidor Freeradius via SSH como nosso teste.

Em seguida, valide que os pedidos podem ser proxy no arquivo radiusd.conf. Este foi o caso no Fedora:

vi /etc/raddb/radiusd.conf

proxy_requests  = yes
$INCLUDE  ${confdir}/proxy.conf

Finalmente, adicione o servidor de Autenticação Forte WiKID como um proxy válido em proxy.conf:

vi /etc/raddb/proxy.conf

#  Este reino é para pedidos que não têm um reino explícito
#  prefixo ou sufixo.  Nomes de usuário como "bob" corresponderão a este.
#
realm NULL {
        type            = radius
        authhost        = WIKIDSERVER_IP:1812
#       accthost        = WIKIDSERVER_IP:1813
        secret          = shared_secret
}

Desnecessário dizer, mude WIKIDSERVER_IP e shared_secret para o IP do seu servidor WiKID e segredo compartilhado. Provavelmente deve ser diferente do segredo compartilhado usado para o cliente.

Para segurança adicional, você deve restringir a propriedade desses arquivos:

chmod a-rwx,u+r /etc/raddb/proxy.conf

chmod a-rwx,u+r /etc/raddb/clients.conf

Agora inicie o Freeradius:

service radiusd start

Configurando PAM SSH

Primeiro, você precisa instalar o PAM Radius. Há uma excelente documentação sobre isso na página inicial do PAM Radius. Dependendo da sua distribuição, você também pode encontrar um binário adequado. Não tive problemas em compilar isso no Fedora 7:

Edite /etc/pam.d/sshd para permitir autenticação Radius:

vi /etc/pam.d/sshd

Vá para a segunda linha do arquivo, pressione a tecla Insert ou a tecla i e insira esta linha:

auth     sufficient   /lib/security/pam_radius_auth.so 

logo acima desta linha:

auth     required     pam_stack.so service=system-auth

A tag “sufficient” indica que se a autenticação Radius for bem-sucedida, nenhuma autenticação adicional será necessária. No entanto, se a autenticação Radius falhar, um nome de usuário e senha do sistema funcionarão. Use “Required” para exigir autenticação forte. Como estamos apenas editando o arquivo sshd, isso não afetará os logins de terminal. O PAM pode ser muito diferente em diferentes variantes do linux. Consulte a documentação específica para o seu SO.

Edite ou crie seu arquivo /etc/raddb/server:

vi /etc/raddb/server

Abaixo da linha:

127.0.0.1   secret        1

Adicione esta linha:

localhost   shared_secret     1

Finalmente, certifique-se de que a autenticação de chave pública esteja desativada em /etc/sshd/sshd_config:

PubkeyAuthentication no

Configurando o Servidor WiKID

Agora, vamos configurar o servidor WiKID para processar as senhas de uso único do Freeradius. Assumimos que você também precisa configurar um novo domínio WiKID. Se você já tiver um, pode pular esta parte. Documentação adicional de instalação do WiKID está disponível aqui.

Faça login no servidor WiKID e clique na guia Domínios.

Clique em Criar um Novo Domínio.

Insira as informações solicitadas. O código do Servidor de Domínio é o endereço IP do servidor WiKID com zeros à esquerda. Portanto, se o endereço IP externo for 216.239.51.99, o código do servidor WiKID seria 216239051099. Clique em “Criar”. (Obviamente, se você já tiver um domínio configurado, pode pular esta etapa.)

Clique na guia Clientes de Rede e em “Criar um novo Cliente de Rede”.

Insira as informações solicitadas. Para o Endereço IP, use o endereço IP do servidor Freeradius. Selecione Radius e o domínio que você acabou de criar. Clique em “Adicionar” quando terminar.

Na próxima página, insira o segredo compartilhado que você inseriu no arquivo /etc/raddb/proxy.conf do servidor Freeradius. Não é necessário inserir nenhuma informação sob “Atributos de Retorno”.

Importante: A partir do terminal WiKID ou via SSH, você precisará executar “wikidctl stop” e depois “wikidcl start” para carregar a nova configuração no servidor Radius WiKID. (Usuários do WiKID 2.0 apenas executam “stop” e “start”.)

Testando Freeradius com senhas de uso único

Baixe e instale um cliente Token WiKID. Você pode validar manualmente como um usuário a partir da interface web do WiKIDAdmin. Uma vez validado, selecione o Domínio associado ao recurso Freeradius:

token1.jpg

Insira o PIN:

token2.jpg

E você receberá de volta a senha de uso único. O OTP é limitado no tempo, mas o tempo pode ser definido no servidor WiKID para o que você quiser:

token3.jpg

Agora, ssh para sua caixa Freeradius:

ssh user@freeradius_server

Quando solicitado, insira a senha de uso único do WiKID - ela deve ter sido colada automaticamente na sua área de transferência, então ctrl-c ou shift-ins deve funcionar. Você deve ter acesso. Se não, há vários logs para consultar. Primeiro, verifique /var/log/secure em seu servidor Freeradius para ver por que o usuário foi rejeitado. Se você ver “Todos os servidores RADIUS falharam em responder.” certifique-se de que o radiusd está rodando na porta 1812. Verifique os logs do Freeradius em /var/log/radius/radius.log e o log radius do WiKID em /opt/WiKID/log/radius.log no servidor WiKID.

Uma Configuração Alternativa: Freeradius como backup

Um dos benefícios de usar PAM Radius é que os servidores podem ser encadeados no arquivo /etc/raddb/server. Se os servidores principais falharem em responder, o próximo servidor tentará autenticar o usuário. Para esclarecer: se o primeiro servidor responder com uma falha de autenticação, o usuário é rejeitado. Somente se não houver resposta é que o segundo servidor radius será verificado. Essa capacidade de backup pode ser especialmente útil se o seu servidor WiKID estiver localizado em um datacenter remoto. Ao configurar o PAM para se comunicar diretamente com o WiKID e falhar de volta para o Freeradius, você cria uma solução de failover no caso de uma falha de hardware.

Primeiro, altere o arquivo /etc/raddb/server para apontar para o servidor WiKID primeiro, depois para o servidor Freeradius rodando no localhost:

# server[:port] shared_secret      timeout (s)
127.0.0.1:1812        shared_secret        1
WIKIDSERVER_IP:1812   shared_secret      3
localhost:1812        shared_secret          2

Tive que fazer algumas pequenas alterações para fazer o Freeradius funcionar com /etc/passwd. Primeiro, tive que mudar o grupo do radiusd no /etc/raddb/radiusd.conf para shadow:

user = radiusd
group = shadow

Então eu tive que dar permissões de shadow para /etc/passwd:

chgrp shadow /etc/shadow

chmod g+r /etc/shadow

Agora, se o servidor WiKID falhar por algum motivo, você terá um fallback automático para o seu arquivo /etc/passwd.

Conclusão

Radius é um excelente padrão para autenticação de usuários remotos. Combinar Freeradius com a Autenticação Forte WiKID cria uma solução poderosa, flexível e segura.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.