Como usar o Calling-Station-Id por usuário no freeRADIUS?

2

Estou tentando limitar cada usuário a um pequeno conjunto de Mac-IDs no RADIUS, incluindo diretamente as informações apropriadas no arquivo users . Seria aceitável mesmo que cada usuário estivesse limitado a um mac. O servidor está executando o FreeRADIUS versão 2.1.12 dos repositórios do Ubuntu 13.10. A autenticação usada é PEAP e MSCHAPv2.

Quando um cliente físico (Nexus 5) tenta se conectar através do ponto de acesso (Netgear WG-102), o FreeRADIUS parece identificar os IDs dos Macs na solicitação de acesso, mas não os usa nas verificações. Os únicos dispositivos na rede na minha configuração de teste atual são o servidor radius, o ponto de acesso e um cliente de teste. As entradas no arquivo users estão configuradas como:

testuser   NT-Password := "<hash>", Calling-Station-Id == "a1b2c3d4e5f6"

O arquivo policy.conf tem uma função rewrite.calling_station_id que normaliza os IDs do Mac para o formato acima e isso é chamado em available-sites/default logo após preprocess . Os mac-ids devidamente formatados aparecem no log em execução freeradius -X . No entanto, as solicitações são rejeitadas. Mesmo se a verificação for substituída por Calling-Station-Id =* "a1b2c3d4e5f6" , que deve passar sempre que o atributo existir, as solicitações serão rejeitadas. Se, no entanto, ele for substituído por Calling-Station-Id !* "a1b2c3d4e5f6" , que deve ser transmitido apenas se o atributo não estiver presente presente na solicitação, as solicitações serão aceitas.

Em contraste, se eu usar radclient , o comportamento esperado será observado. Os arquivos de configuração e logs relevantes estão vinculados abaixo. A pasta /etc/freeradius inteira está vinculada e também contém os logs para os quatro casos a seguir. Observe que o número 2 é o único comportamento inesperado:

  1. nexus-without-mac-success : o arquivo users não possuía verificações de mac e a autenticação foi bem-sucedida
  2. nexus-with-mac-fail : o arquivo users tinha o endereço MAC correto e a autenticação falhou
  3. radclient-with-mac-expected-behaviour-fail-with-wrong : radclient é executado com endereço mac incorreto e é rejeitado: echo "User-Name=testuser,User-Password=test,Calling-Station-Id=8c:3a:e3:19:70:0e" | radclient localhost auth testing123
  4. radclient-with-mac-expected-behaviour-success-with-correct : radclient é executado com o endereço MAC correto e é aceito: echo "User-Name=testuser,User-Password=test,Calling-Station-Id=8c:3a:e3:19:70:0f" | radclient localhost auth testing123

Não é possível usar Calling-Station-Id dessa maneira? Ao contrário do link , eu quero que o Mac-Id seja limitado por usuário, então se você tiver um método alternativo de fazer isso, que também seria bem-vindo.

link parece dizer que essa é a maneira correta de fazer isso, embora esteja escrito em 1999.

link contém o seguinte:

  • freeradius - conteúdo de /etc/freeradius
  • logs - os quatro logs descritos acima
  • wg102.cfg - a configuração do ponto de acesso
  • snapshot.tar.gz - tarball contendo todos os itens acima
por ronno 14.01.2014 / 13:28

1 resposta

3

Você não passou pelos atributos da solicitação externa para o servidor interno.

Defina copy_tunnel_request = yes em eap{peap{}} (em eap.conf ou mods-available / eap).

link

A chamada de arquivos no servidor interno não tem acesso ao atributo Calling-Station-ID na solicitação externa, não corresponde a nenhuma entrada e, portanto, não define o atributo de controle NT-Password.

    
por 15.01.2014 / 18:39