
Estou tentando limitar cada usuário a um pequeno conjunto de Mac-IDs no RADIUS, incluindo diretamente as informações apropriadas no users
arquivo. 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 Ubuntu 13.10. A autenticação utilizada é PEAP e MSCHAPv2.
Quando um cliente físico (Nexus 5) tenta se conectar através do ponto de acesso (Netgear WG-102) então o FreeRADIUS parece identificar os Mac-id's na solicitação de acesso, mas não os utiliza 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 users
arquivo são configuradas como:
testuser NT-Password := "<hash>", Calling-Station-Id == "a1b2c3d4e5f6"
O policy.conf
arquivo possui uma rewrite.calling_station_id
função que normaliza os ids do Mac para o formato acima e é chamada available-sites/default
logo após preprocess
. Os mac-id formatados corretamente aparecem no log de execução freeradius -X
. No entanto, os pedidos são rejeitados. Mesmo que a verificação seja substituída por Calling-Station-Id =* "a1b2c3d4e5f6"
, que deveria passar sempre que o atributo simplesmente existir, as solicitações serão rejeitadas. Se, no entanto, for substituído por Calling-Station-Id !* "a1b2c3d4e5f6"
, que deverá passar apenas se o atributo fornãopresente na solicitação, as solicitações são aceitas.
Por outro lado, se eu usar radclient
, o comportamento esperado será observado. Os arquivos de configuração e logs relevantes estão vinculados abaixo. A /etc/freeradius
pasta inteira está vinculada e também contém os logs dos quatro casos a seguir. Observe que o número 2 é o único comportamento inesperado:
nexus-without-mac-success
: Ousers
arquivo não teve verificações mac e a autenticação foi bem-sucedidanexus-with-mac-fail
: Ousers
arquivo tinha o endereço MAC correto e a autenticação falhouradclient-with-mac-expected-behaviour-fail-with-wrong
: radclient é executado com endereço MAC errado 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 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
desta forma? Contrário ahttp://wiki.freeradius.org/guide/Mac-Auth, quero que os Mac-Ids sejam limitados por usuário; portanto, se você tiver um método alternativo para fazer isso, isso também será bem-vindo.
http://portmasters.com/tech/docs/radius/userinfo.html#1004825parece dizer que esta é a maneira correta de fazer isso, embora tenha sido escrito em 1999.
http://www.cmi.ac.in/~ronno/freeradius-testcontém o seguinte:
freeradius
- conteúdo de/etc/freeradius
logs
- os quatro logs descritos acimawg102.cfg
- a configuração do ponto de acessosnapshot.tar.gz
- tarball contendo todos os itens acima
Responder1
Você não alimentou os atributos da solicitação externa para o servidor interno.
Definido copy_tunnel_request = yes
em eap{peap{}}
(em eap.conf ou mods-available/eap).
https://github.com/FreeRADIUS/freeradius-server/blob/master/raddb/mods-available/eap#L594
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 configura o atributo de controle NT-Password.