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