Auth-Type: - Rejeitar no arquivo de usuários RADIUS corresponde à solicitação de encapsulamento interna, mas envia acesso aceito

3

Eu tenho a configuração de autenticação WPA2 802.11x EAP usando o FreeRADIUS 2.1.8 no Ubuntu 10.04.4 conversando com o OpenLDAP, e posso autenticar com sucesso usando PEAP / MSCHAPv2, TTLS / MSCHAPv2 e TTLS / PAP (ambos via AP e usando eapol_test ). Agora estou tentando restringir o acesso a SSIDs específicos com base nos grupos LDAP aos quais o usuário pertence.

Eu configurei a associação de membros do grupo em /etc/freeradius/modules/ldap da seguinte forma:

groupname_attribute = cn
groupmembership_filter = "(|(&(objectClass=posixGroup)(memberUid=%{User-Name}))(&(objectClass=posixGroup)(uniquemember=%{User-Name})))"

e configurei a extração do SSID de Called-Station-Id para SSID de Estação Chamada com base nas Autenticação do Mac . Em /etc/freeradius/eap.conf , ativei a cópia de atributos do túnel externo para o túnel interno e uso da resposta do túnel interno no túnel externo (para PEAP e TTLS). Eu tive o mesmo comportamento antes de mudar essas opções.

copy_request_to_tunnel = yes
use_tunneled_reply = yes

Estou a correr eapol_test desta forma para testar a configuração:

eapol_test -c peap-mschapv2.conf -a 172.16.0.16 -s testing123 -N 30:s:01-23-45-67-89-01:Example-EAP

com o seguinte arquivo peap-mschapv2.conf :

network={
    ssid="Example-EAP"
    key_mgmt=WPA-EAP
    eap=PEAP
    identity="mgorven"
    anonymous_identity="anonymous"
    password="foobar"
    phase2="autheap=MSCHAPV2"
}

Com o seguinte em /etc/freeradius/users :

DEFAULT Ldap-Group == "employees"

e executando freeradius-Xx , posso ver que a recuperação do grupo LDAP funciona e que o SSID é extraído.

Debug:   [ldap] performing search in dc=example,dc=com, with filter (&(cn=employees)(|(&(objectClass=posixGroup)(memberUid=mgorven))(&(objectClass=posixGroup)(uniquemember=mgorven))))
Debug: rlm_ldap::ldap_groupcmp: User found in group employees
...
Info:        expand: %{7} -> Example-EAP

Em seguida, tento permitir somente o acesso aos usuários no grupo employees (independentemente do SSID), portanto, coloco o seguinte em /etc/freeradius/users :

DEFAULT Ldap-Group == "employees"

DEFAULT Auth-Type := Reject

Mas isso rejeita imediatamente a solicitação de acesso no túnel externo porque o usuário anonymous não está no grupo employees . Por isso, modifico-o para corresponder apenas aos pedidos de túnel internos da seguinte forma:

DEFAULT Ldap-Group == "employees"

DEFAULT FreeRADIUS-Proxied-To == "127.0.0.1"
        Auth-Type := Reject, Reply-Message = "User does not belong to any groups which may access this SSID."

Agora os usuários que estão no grupo employees são autenticados, mas os usuários não estão no grupo employees . Eu vejo a entrada de rejeição sendo correspondida e a mensagem de resposta está definida, mas o cliente recebe uma aceitação de acesso.

Debug: rlm_ldap::ldap_groupcmp: Group employees not found or user is not a member.
Info: [files] users: Matched entry DEFAULT at line 209
Info: ++[files] returns ok
...
Auth: Login OK: [mgorven] (from client test port 0 cli 02-00-00-00-00-01 via TLS tunnel)
Info:   WARNING: Empty section.  Using default return values.
...
Info: [peap] Got tunneled reply code 2
        Auth-Type := Reject
        Reply-Message = "User does not belong to any groups which may access this SSID."
...
Info: [peap] Got tunneled reply RADIUS code 2
        Auth-Type := Reject
        Reply-Message = "User does not belong to any groups which may access this SSID."
...
Info: [peap] Tunneled authentication was successful.
Info: [peap] SUCCESS
Info: [peap] Saving tunneled attributes for later
...
Sending Access-Accept of id 11 to 172.16.2.44 port 60746
        Reply-Message = "User does not belong to any groups which may access this SSID."
        User-Name = "mgorven"

e eapol_test relatórios:

RADIUS message: code=2 (Access-Accept) identifier=11 length=233
   Attribute 18 (Reply-Message) length=64
      Value: 'User does not belong to any groups which may access this SSID.'
   Attribute 1 (User-Name) length=9
      Value: 'mgorven'
...
SUCCESS

Por que a solicitação não está sendo rejeitada e essa é a maneira correta de implementar isso?

    
por mgorven 09.06.2012 / 01:28

1 resposta

1

Por algum motivo estranho, definir Auth-Type é um item check , não um item reply e, portanto, isso deve ser feito na primeira linha da regra. O seguinte funciona corretamente:

DEFAULT FreeRADIUS-Proxied-To == "127.0.0.1", Auth-Type := Reject
    Reply-Message = "User does not belong to any groups which may access this SSID."
    
por 13.06.2012 / 00:29