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:
-
nexus-without-mac-success : o arquivo users não possuía verificações de mac e a autenticação foi bem-sucedida
-
nexus-with-mac-fail : o arquivo users tinha o endereço MAC correto e a autenticação falhou
-
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
-
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