regular expressions in proxy.conf

Ana Gallardo ana.gallardo.77 at gmail.com
Fri Oct 30 12:09:18 CET 2009


Hello, I'm using Debian and Freeradius 2.0.4-3.

I want to use a regular expression in proxy.conf file to match any request
that contain the word "domain" in the realm (suffix mode).


### /etc/freeradius/proxy.conf
realm "~(domain)+" {
#      authhost = LOCAL      # not strictly necessary
#      accthost = LOCAL      # not strictly necessary
}

Then, in authorize section I have:

### /etc/freeradius/sites-available/default
authorize {
    preprocess
    mschap
    suffix
    eap {
        ok = return
    }
    if ("%{Realm}" =~ /(temp\.)?domain\.es$/){
        update control {
            Intentos-Reject = ...
        }
    }
    files

    switch "%{Realm}" {
        case "temp.domain.es" {
            sql
        }
        case "domain.es" {
            redundant {
                    ldap2
                    ldap1
                    ldap3
            }
        }
        case {
            update control {
                Auth-Type := Reject
            }
        }
    }

   expiration
    pap
}

And, in users file:

### /etc/freeradius/proxy.conf
DEFAULT Intentos-Reject > 10, Auth-Type := Reject
        Reply-Message = "NUMERO DE INTENTOS FALLIDOS(%{Intentos-Reject})
EXCEDIDO PARA %{%{Stripped-User-Name}:-%{User-Name}}"

My problem is: the Realm that Freeradius add to the request is the regular
expression... Here is my debug information:

rad_recv: Access-Request packet from host 127.0.0.1 port 60112, id=208,
length=68
    User-Name = "XXX at domain.es"
    User-Password = "YYY"
    NAS-IP-Address = 127.0.1.1
    NAS-Port = 0
+- entering group authorize
++[preprocess] returns ok
++[mschap] returns noop
    rlm_realm: Looking up realm "domain.es" for User-Name = "XXX at domain.es"
    rlm_realm: Found realm "~(domain)+"
    rlm_realm: Adding Stripped-User-Name = "XXX"
    rlm_realm: Adding Realm = "~(domain)+"
    rlm_realm: Authentication realm is LOCAL.
++[suffix] returns noop
  rlm_eap: No EAP-Message, not doing EAP
++[eap] returns noop
++? if ("%{Realm}" =~ /(temp\.)?domain\.es$/)
    expand: %{Realm} -> ~(domain)+
? Evaluating ("%{Realm}" =~ /(temp\.)?domain\.es$/) -> FALSE
++? if ("%{Realm}" =~ /(temp\.)?domain\.es$/) -> FALSE
++[files] returns noop
    expand: %{Realm} -> ~(domain)+
++- entering switch %{Realm}
+++- entering case
++++[control] returns noop
+++- case  returns noop
++- switch %{Realm} returns noop

I can resolve this adding this to proxy.conf:

### /etc/freeradius/proxy.conf

realm "domain.es" {
      authhost = LOCAL      # not strictly necessary
      accthost = LOCAL      # not strictly necessary
}

realm "temp.domain.es" {
      authhost = LOCAL      # not strictly necessary
      accthost = LOCAL      # not strictly necessary
}

realm "~(domain)+" {
      authhost = LOCAL      # not strictly necessary
      accthost = LOCAL      # not strictly necessary
}


But I don't know if that is the best way to resolve my problem, so I would
like to reinforce my decision.

Thanks in advance and sorry for my english.


-- 
____________________

 Ana Gallardo Gómez
____________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20091030/df1738c5/attachment.html>


More information about the Freeradius-Users mailing list