This is the Spanish manual for GNU Gatekeeper 2.2.5.
A more recent (English) manual is in your GnuGk download archive.

Capítulos: Índice · Introducción · Instalacion · Empezando · Configuración Básica · Enrutado · RAS Config · Autenticación · Accounting · Vecinos · Configuración Por-Terminal · Configuración Avanzada · Monitoreando

8. Configuración de la Autenticación

Las siguientes secciones en el Archivo de Configuración pueden ser utilizadas para configurar la Autentificación.

8.1 Sección [Gatekeeper::Auth]

Esta sección define el mecanismo de autenticación para el gatekeeper.

Sintaxis:

authrule=acciones

 <authrule> := SimplePasswordAuth | AliasAuth | FileIPAuth | PrefixAuth | RadAuth | RadAliasAuth | SQLAuth | SQLAliasAuth | SQLPasswordAuth | CapacityControl | ...
 <acciones>  := <control>[;<ras>|<q931>,<ras>|<q931>,...]
 <control>  := optional | required | sufficient
 <ras>      := GRQ | RRQ | URQ | ARQ | BRQ | DRQ | LRQ | IRQ
 <q931>     := Setup | SetupUnreg

Una regla puede resultar en uno de los siguientes tres códigos: ok, fail, pass.
  • ok - La petición es autenticada por este módulo.
  • fail - La autenticación falla y debe ser rechazada.
  • next - La regla no puede determinar la petición.
También hay tres maneras de controlar una regla:
  • optional - Si la regla no puede determinar la petición, ésta es enviada a la siguiente regla.
  • required - La petición debe ser autenticada por este módulo, de lo contrario sería rechazada. La petición autenticada entonces sería enviada hacia la siguiente regla.
  • sufficient - Si la petición es autenticada, ésta es aceptada, de lo contrario sería rechazada. Es decir, la regla determina la suerte de la petición. Ninguna regla debe ser ubicada después de una regla sufficient, puesto que no tendrá ningún efecto.

Módulos soportados actualmente:

  • SimplePasswordAuth/SQLPasswordAuth

    Estos módulos revisan los campos tokens o cryptoTokens de un mensaje RAS. Los tokens deben contener al menos un generalID y un password. Para aquellos tokens cryptoTokens, cryptoEPPwdHash separados (hashed) por MD5 simple y aquellos tokens nestedcryptoToken separados (hashed) por HMAC-SHA1-96 (libssl debe ser instalada) hay soporte actualmente. Para tokens separados (hashed) por CAT (Cisco Access Token) y un username/password en texto claro son soportados actualmente. El ID y password son leídos desde la sección [SimplePasswordAuth], y desde una base de datos SQL para los módulos SimplePasswordAuth y SQLPasswordAuth. El módulo MySQLPasswordAuth también es soportado para compatibilidades con versiones anteriores.

  • AliasAuth/SQLAliasAuth

    Este módulo puede ser utilizado solamente para auntenticar RegistrationRequest (RRQ). La dirección IP de un endpoint con un alias dado deben corresponderse con un patrón específico. Para AliasAuth el patrón está definido en la sección [RasSrv::RRQAuth]. Para SQLAliasAuth, el patrón es recuperado desde una base de datos SQL, que está definida en la sección [SQLAliasAuth].

  • FileIPAuth

    Este módulo provee una manera simple de restringir el acceso al gatekeeper basándose en la dirección IP o red del emisor (caller).

  • PrefixAuth

    La dirección IP o alias de una petición con un prefijo dado deben corresponderse o emparejarse con un patrón específico. Revisar la sección [PrefixAuth] para más detalle. Actualmente el módulo puede autorizar solamente AdmissionRequest (ARQ) y LocationRequest (LRQ).

  • RadAuth

    Provee autenticación basada en el esquema de seguridad H.235 username/password. Autentica RRQ, ARQ y Q.931 Setup mediante servidores RADIUS remotos. Envía al Servidor RADIUS los usernames y passwords extraídos desde los tokens CAT (Cisco Access Tokens) que viajan dentro de los paquetes RRQ, ARQ o Setup. Por consiguiente si sus endpoints no soportan CATs o usted no necesita el esquema de autenticación basado en usernames/password asignados individualmente - este módulo no le servirá (pero puede chequear además el módulo RadAliasAuth). Revisar la sección [RadAuth] para más detalle.

  • RadAliasAuth

    Provee autenticación basada en alias de endpoints y/o señalización de llamada IP dirigida con servidores remotos RADIUS. Esto no necesita ningún tokens H.235 dentro de los mensajes RAS, de esta manera esto puede ser utilizado sobre una amplia variedad de sistemas de igual manera como RadAuth. Los mensajes RRQ, ARQ y Q.931 Setup pueden ser autentificados utilizando este módulo. Revisar la sección [RadAliasAuth] para más detalle.

  • SQLAuth

    Un potente módulo para autenticar y autorizar mensajes RRQ, ARQ, LRQ y Setup Con este módulo se podrá realizar verificación basada en varios parámetros, como número de emisor (caller's number), número destino (destination number), username y más. Además tiene soporte para forzar el límite de duración de llamada, reescritura de números, ruteo de llamada, verificación y asignación de alias. Revisar la sección [SQLAuth] para más detalle.

  • CapacityControl

    Un módulo flexible para controlar el volúmen de llamadas entrantes con la capacidad de configurar varias condiciones. IMPORTANTE: Este módulo tiene que ser utilizado conjuntamente con el módulo de accounting CapacityControl. Revisar la sección [CapacityControl] para más detalle.

Usted puede además configurar una regla para chequear solamente algunos mensajes RAS particulares. El siguiente ejemplo configura SimplePasswordAuth como regla opcional para chequear mensajes RRQ y ARQ. Si un mensaje RRQ no es chequeado (no contiene campos tokens o cryptoTokens), éste es chequeado por AliasAuth. La regla por defecto es aceptar todas las peticiones.

Ejemplo 1:

SimplePasswordAuth=optional;RRQ,ARQ
AliasAuth=sufficient;RRQ

El ejemplo mostrado más abajo autentica todas las llamadas, chequeando los mensajes de señalización Setup de una manera detallada, utilizando el módulo RadAliasAuth.

Ejemplo 2:

RadAliasAuth=required;Setup
default=allow

Este ejemplo chequea los mensajes de registro de endpoints (RRQ) y mensajes de admission de llamadas (ARQ) por cualquiera de estos dos medios: por medio de un username/password (RadAuth) o mediante alias/IP (RadAliasAuth). Adicionalmente, si la llamada es desde un endpoint no registrado (y por consiguiente ninguna de las autenticaciones RRQ o ARQ ha sido realizada), La autenticación con mensajes Setup usando RadAliasAuth toma lugar (SetupUnreg).

Ejemplo 3:

RadAuth=optional;RRQ,ARQ
RadAliasAuth=required;RRQ,ARQ,SetupUnreg
default=allow

8.2 Sección [FileIPAuth]

Esta sección define una lista de direcciones IP o redes que están permitidas acceder a los recursos del gatekeeper. Puede especificarse una lista de prefijos permitidos junto con una dirección IP. Los eventos que soportan Gatekeeper::Auth son: GRQ, RRQ, LRQ, Setup and SetupUnreg. El formato de una entrada simple es:

IP=[allow | reject][;prefix[,prefix...]]

Donde IP es una dirección IP simple, una dirección de red (en formato A.B.C.D/M.M.M.M o A.B.C.D/LONGITUD) o una cadena 'any' o '*' para emparejar cualquier dirección. La lista de acceso puede además ser cargada desde un archivo externo empleando la directiva include. Durante la autenticación, la longitud de la máscara de red define una prioridad para cada entrada, de esta manera la regla 192.168.1.1=allow se antepone sobre la regla 192.168.1.0/24=reject.

Ejemplo #1:

[Gatekeeper::Auth]
FileIPAuth=required;RRQ,LRQ,Setup

[FileIPAuth]
192.168.1.240=reject
192.168.1.0/24=allow
192.168.2.0/255.255.255.0=allow;48,49,44
any=reject

Ejemplo #2:

[Gatekeeper::Auth]
FileIPAuth=required;Setup

[FileIPAuth]
include=/etc/gnugk/accesslist.ini

(EOF)

Contenido del archivo /etc/gnugk/accesslist.ini:

[FileIPAuth]
192.168.1.1=allow
192.168.1.100=allow
any=reject

8.3 Sección [SimplePasswordAuth]

Esta sección define el par de "userid" y "password" utilizados por el módulo SimplePasswordAuth. Todos los passwords están encriptados utilizando la herramienta addpasswd.

Modo de uso:

addpasswd config section userid password

Ejemplo:

addpasswd config.ini SimplePasswordAuth frank secret

Opciones:

  • KeyFilled=123
    Default: 0

    Valor por defecto para utilizar un byte de relleno durante la encriptación/desencriptación de passwords.

  • CheckID=1
    Default: 0

    Verifica si el alias se corresponde con el ID en los tokens.

  • PasswordTimeout=120
    Default: -1

    El módulo SimplePasswordAuth y todos sus descendientes mantendrán en caché los passwords autenticados. Este campo define el valor del tiempo de caché en segundos 0 significa que no se utilizará caché para passwords, mientras que un valor negativo significa que la caché nunca expira.

8.4 Sección [SQLPasswordAuth]

Autentica endpoints habilitados con H.235 utilizando passwords almacenadas en una base de datos SQL. Esta sección define el driver SQL a utilizar, los parámetros de connexion a la base de datos y las consultas a utilizar para recuperar los passwords.

  • Driver=MySQL | PostgreSQL| Firebird
    Default: N/A

    El driver de la base de datos SQL a utilizar. Actualmente, drivers para tt/MySQL/, PostgreSQL y Firebird están implementados.

  • Host=DNS[:PORT] | IP[:PORT]
    Default: localhost

    Dirección del host servidor SQL. Puede estar en la forma de DNS[:PORT] o IP[:PORT]. Como sql.mycompany.com o sql.mycompany.com:3306 o 192.168.3.100.

  • Database=billing
    Default: billing

    El nombre de la base de datos a la cual se realiza la conexión.

  • Username=gnugk

    El nombre de usuario utilizado para conectarse a la base de datos.

  • Password=secret

    El password utilizado para conectarse a la base de datos. Si el password no está especificado, se realiza un intento de conexión a la base de datos sin un password. Si EncryptAllPasswords está habilitada, o la variable KeyFilled esta definida en esta sección, el password esta en forma encriptada y puede ser creado utilizando la herramienta addpasswd.

  • CacheTimeout=120
    Default: 0

    Este campo define el tiempo en que el par (alias;password) recuperados desde la base de datos estarán cacheados en la memoria local. Este valor es expresado en segundos. 0 significa no cachear las passwords, mientras que un valor negativo significa que la caché nunca expira (solamente el comando reload refrescará la caché).

  • MinPoolSize=5
    Default: 1

    Define el número de conexiones activas SQL. Esto permite un mejor rendimiento, puesto que más de una consulta puede ser ejecutada al mismo tiempo. MinPoolSize=1 simula un viejo comportamiento, cuando el acceso a la base de datos es serializada (una consulta a la vez).

  • Query=SELECT ...
    Default: N/A

    Define la consulta SQL utilizada para recuperar passwords H.235 desde la base de datos. La consulta es parametrizada, esto significa que el reemplazo de parámetros es realizado antes de que cada consulta es ejecutada. Los parámetros están denotados por cadenas %1, %2, ... Especifique %% para insertar un caracter de porcentaje antes de un dígito dentro de un string (así %%1), especifique %{1} para permitir expansión dentro de expresiones complejas como %{1}123. Para SQLPasswordAuth se han definido dos parámetros:

    • %1 - El alias actual para el cual se consultará el password.
    • %2 - El identificador del gatekeeper.

    Aquí algunas cadenas de ejemplo:

    SELECT h235password FROM users WHERE alias = '%1' AND active
    SELECT h235password FROM users WHERE alias = '%1' AND gk = '%2'
    

8.5 Sección [RasSrv::RRQAuth]

Especifica la acción realizada sobre los mensajes de recepción RRQ (confirm or deny) para el módulo AliasAuth. El primer alias (éste será principalmente un H323ID) del endpoint a ser registrado es buscado en esta sección. Si un parámetro es encontrado, el valor sera aplicado por regla general. Una regla consiste de condiciones separadas por "&". Un registro es aceptado cuando todas las condiciones coinciden.

Sintaxis:

<authrules> :=  empty  |  <authrule> "&" <authrules>

  <authrule>  := <authtype> ":" <authparams>
  <authtype>  := "sigaddr" | "sigip"
  <autparams> := [!&]*

La notación y significado de <authparams> depende de <authtype>:

  • sigaddr - Expresión regular extendida que tiene que corresponderse contra la representación ''PrintOn(ostream)'' de la petición.

    Ejemplo

    sigaddr:.*ipAddress .* ip = .* c0 a8 e2 a5 .*port = 1720.*
    

  • sigip - Forma especializada de 'sigaddr'. Escribe la dirección ip señalizada utilizando la notación decimal (comunmente utilizada): ''byteA.byteB.byteC.byteD:port''.

    Ejemplo:

    sigip:192.168.242.165:1720
    

  • allow - Siempre aceptar el alias.
  • deny - Siempre rechazar el alias.

8.6 Sección [SQLAliasAuth]

Autentica endpoints utilizando reglas almacenadas en una base de datos (Las reglas tienen el mismo formato definido en la sección [RasSrv::RRQAuth]). Esta sección define el driver SQL a ser utilizado, los parámetros de conexión a la base de datos y las consultas a utilizar para recuperar los patroneS.

  • Driver=MySQL | PostgreSQL | Firebird
    Default: N/A

    El driver SQL a utilizar. Actualmente, drivers MySQL, PostgreSQL y Firebird están implementados.

  • Host=DNS[:PORT] | IP[:PORT]
    Default: localhost

    Dirección del host servidor SQL. Puede estar en la forma de DNS[:PORT] o IP[:PORT]. Como sql.mycompany.com o sql.mycompany.com:3306 o 192.168.3.100.

  • Database=billing
    Default: billing

    El nombre de la base de datos a la cual se realiza la conexión.

  • Username=gnugk

    El nombre de usuario utilizado para conectarse a la base de datos.

  • Password=secret

    El password utilizado para conectarse a la base de datos. Si el password no está especificado, se realiza un intento de conexión a la base de datos sin un password. Si EncryptAllPasswords está habilitada, o una variable KeyFilled esta definida en esta sección, el password está en forma encriptada y puede ser creado utilizando la herramienta addpasswd.

  • CacheTimeout=120
    Default: 0

    Este campo define el tiempo en que el par (alias;authrule) recuperados desde la base de datos estarán cacheados en la memoria local. Este valor es expresado en segundos. 0 significa no cachear las passwords, mientras que un valor negativo significa que la caché nunca expira (solamente el comando reload refrescará la caché).

  • MinPoolSize=5
    Default: 1

    Define el número de conexiones activas SQL. Esto permite un mejor rendimiento, puesto que más de una consulta puede ser ejecutada al mismo tiempo. MinPoolSize=1 simula un viejo comportamiento, cuando el acceso a la base de datos es serializada (una consulta a la vez).

  • Query=SELECT ...
    Default: N/A

    Define la consulta SQL utilizada para recuperar alias desde la base de datos. La consulta es parametrizada, esto significa que el reemplazo de parámetros es realizado antes de que cada consulta es ejecutada. Los parámetros están denotados por cadenas %1, %2, ... Especifique %% para insertar un caracter de porcentaje antes de un dígito dentro de un string (así %%1), especifique %{1} para permitir expansión dentro de expresiones complejas como %{1}123. Para SQLAliasAuth se han definido dos parámetros:

    • %1 - El alias actual para el cual se consultará el password.
    • %2 - El identificador del gatekeeper.

    Aquí algunas consultas de ejemplo:

    SELECT authrule FROM users WHERE alias = '%1' AND active
    SELECT 'sigip:' || host(ip) || port FROM users WHERE alias = '%1'
    

8.7 Sección [SQLAuth]

Autentica y autoriza endpoints o llamadas utilizando una base de datos SQL. Permite soporte para eventos RRQ, ARQ, LRQ y Setup.

  • Driver=MySQL | PostgreSQL | Firebird
    Default: N/A

    El driver de base de datos SQL a utilizar. Actualmente, drivers MySQL, PostgreSQL y Firebird están implementados.

  • Host=DNS[:PORT] | IP[:PORT]
    Default: localhost

    Dirección del host servidor SQL. Puede estar en la forma de DNS[:PORT] o IP[:PORT]. Como sql.mycompany.com o sql.mycompany.com:3306 o 192.168.3.100.

  • Database=billing
    Default: billing

    El nombre de la base de datos a la cual se realiza la conexión.

  • Username=gnugk

    El nombre de usuario utilizado para conectarse a la base de datos.

  • Password=secret

    El password utilizado para conectarse a la base de datos. Si el password no está especificado, se realiza un intento de conexión a la base de datos sin un password. Si EncryptAllPasswords está habilitada, o una variable KeyFilled esta definida en esta sección, el password está en forma encriptada y puede ser creado utilizando la herramienta addpasswd.

  • MinPoolSize=5
    Default: 1

    Define el número de conexiones activas SQL. Esto permite un mejor rendimiento, puesto que más de una consulta puede ser ejecutada al mismo tiempo. MinPoolSize=1 simula un viejo comportamiento, cuando el acceso a la base de datos es serializada (una consulta a la vez).

  • RegQuery=SELECT ...
    Default: N/A

    Aquí se puede definir una consulta SQL y utilizarla para realizar autenticación y autorización de registro de enpoints. La consulta es parametrizada, lo que quiere decir que se puede realizar reemplazo de parámetros antes de que cada consulta se ejecute. Se han definido los siguientes parámetros:

    • %g - El identificador del gatekeeper.
    • %{gkip} - IP del gatekeeper en el que se recibió la petición.
    • %u - Username (nombre del usuario) asociado con un endpoint (usualmente un ID H.323)
    • %{callerip} - IP del emisor (caller) (desde donde se ha recibido la petición - NAT IP para endpoints nateados)
    • %{aliases} - Una lista de alias del endpoitn separados por una coma.

    Si la consulta no devuelve filas (rows), el resultado no está definido, lo que básicamente significa "Fallo" (failure) para aquellas reglas de tipo required y "Pruebe la siguiente regla" para aquellas reglas de tipo optional. En el caso de que la consulta devuelva información, la primera fila (row) resultante es examinada para determinar el resultado de la autenticación y obtener información adicional:

    1. Se convierte a la primera columna en un valor de tipo boolean (1, T, TRUE, allow, y, yes significan true) y es un resultado de autenticación (aceptar/rechazar).
    2. Si el registro del endpoint se autentica satisfactoriamente, se examinan las columnas restantes:
      1. Si existe una columna llamada 'aliases', reemplazar el alias del endpoint original con los alias nuevos.
      2. Si existe una columna llamada 'billingmode', establezca un modo de billing asociado con el endpoint (0 - credit,
      3. 0 - debit)
      4. Si existe una columna llamada 'creditamount', establezca el balance de cuenta asociado con el endpoint (Ésta es una cadena arbritaria)

    Algunas consultas de ejemplo:

    SELECT 1, 0 AS billingmode, '12.00 USD' AS creditamount
    SELECT NOT disabled, assignaliases AS aliases, balance FROM users WHERE h323id = '%u'
    SELECT * FROM get_registration_auth('%g', '%u', '%{callerip}', '%{aliases}') AS result(accept, aliases, billingmode, creditamount)
    

  • NbQuery=SELECT ...
    Default: N/A

    Aqui se puede definir una consulta SQL para realizar la autenticación y autorización de las peticiones de ubicación (location requests) enviadas por los vecinos. La consulta es parametrizada, lo que quiere decir que se puede realizar el reemplazo de parámetros antes de que cada consulta se ejecute. Se han definido los siguientes parámetros:

    • %g - El identificador del gatekeeper.
    • %{gkip} - IP del gatekeeper en el que se recibió la petición.
    • %{nbid - El identificador del vecino.
    • %{nbip} - IP del vecino (desde donde se recibió la petición).
    • %{Calling-Station-Id} - Número del emisor (caller), si está disponible.
    • %{src-info} - Contenido del campo sourceInfo LRQ, si está disponible.
    • %{Called-Station-Id} - Número de destino.
    • %{dest-info} - Contenido del campo destinationInfo LRQ.
    • %{bandwidth} - Ancho de banda pedido, si se encuentra en el LRQ.

    Si la consulta no devuelve filas (rows), el resultado no está definido, lo que básicamente significa "Fallo" (failure) para aquellas reglas de tipo required y "Pruebe la siguiente regla" para aquellas reglas de tipo optional. En el caso de que la consulta devuelva información, la primera fila (row) resultante es examinada para determinar el resultado de la autenticación y obtener información adicional:

    1. Se convierte a la primera columna en un valor de tipo boolean (1, T, TRUE, allow, y, yes significan true) y es un resultado de autenticación (aceptar/rechazar).
    2. Si la pétición se autentica satisfactoriamente, se examinan las columnas restantes:
      1. Si existe una columna con el nombre 'destination', llenar el campo original destinationInfo con éstos alias nuevos - ésto afectará las desiciones de ruteo, la misma que se realiza después del paso "auth".

    Alguna consultas de ejemplo:

    SELECT active FROM neighbors WHERE name = '%{nbid}' AND ip = '%{nbip}' UNION SELECT 0
    

  • CallQuery=SELECT ...
    Default: N/A

    Aqui se puede definir una consulta SQL para realizar autenticación y autorización de llamadas(ARQ y Setup). La consulta es parametrizada, lo que quiere decir que se puede realizar el reemplazo de parámetros antes de que cada consulta se ejecute. Se han definido los siguientes parámetros:

    • %g - El identificador del gatekeeper.
    • %{gkip} - IP del gatekeeper en el que se recibió la petición.
    • %u - Un nombre de usuario (username) asociado con el emisor (caller).
    • %{callerip} - IP del emisor (calle) (desde donde la petición ha sido recibida - NAT IP para endpoints nateados).
    • %{Calling-Station-Id} - Número del emisor (caller), si está disponible.
    • %{Called-Station-Id} - Número destino.
    • %{Dialed-Number} - Número de destino original (antes de la reescritura).
    • %{bandwidth} - Ancho de banda pedido, si está presente en los mensajes ARQ.
    • %{answer} - 1, Si la petición es una respuesta ARQ.
    • %{arq} - 1 para consulta ARQ activada, 0 para consulta Setup activada.

    Si la consulta no devuelve filas (rows), el resultado no está definido, lo que básicamente significa "Fallo" (failure) para aquellas reglas de tipo required y "Pruebe la siguiente regla" para aquellas reglas de tipo optional. En el caso de que la consulta devuelva información, la primera fila (row) resultante es examinada para determinar el resultado de la autenticación y obtener información adicional:

    1. Se convierte a la primera columna en un valor de tipo boolean (1, T, TRUE, allow, y, yes significan true) y es un resultado de autenticación (aceptar/rechazar).
    2. Si el registro del endpoint se autentica satisfactoriamente, se examinan las columnas restantes:
      1. Si existe una columna con el nombre 'billingmode', establecer un modo de billing asociado con el endpoint (0 - credit,
      2. 0 - debit).
      3. Si existe una columna con el nombre 'creditamount', establecer el balance de cuenta asociado con el endpoint (Ésta es una cadena arbitraria).
      4. Si existe una columna con el nombre 'credittime', utilizar su valor entero para establecer el límite de duración de llamada.
      5. Si existe una columna con el nombre 'redirectnumber', reemplazar el número destino original con éste valor.
      6. Si existe una columna con el nombre 'redirectip', forzar a que la llamada sea enviada hacia una IP específica (aqui puede poner múltiples destinos separados por un punto y coma).
      7. Si existe una columna con el nombre 'proxy', forzar a que el gatekeeper habilite o deshabilite (dependiendo del valor de la columna 'proxy') el Proxy RTP para esta llamada.

    Algunas consultas de ejemlo:

    SELECT 1, 360 AS credittime, 0 AS proxy
    SELECT * FROM auth_call('%g', '%u', '%{Calling-Station-Id}', '%{callerip}', '%{Called-Station-Id}') AS result(accept, credittime)
    SELECT 1, '1234' AS redirectnumber, '192.168.1.1' AS redirectip
    

8.8 Sección [PrefixAuth]

La sección define la regla de autenticación para el módulo PrefixAuth. Actualmente, solamente ARQs y LRQs pueden ser autorizados por éste módulo.

Primero, se selecciona un prefijo muy específico de acuerdo al campo destinationInfo de la petición recibida. Entonces la petición es aceptada o rechazada de acuerdo al emparejamiento de reglas con la máscara de red más específica. Si no se emparejaron los prefijos y la opción default está especificada, la petición es aceptada o rechazada de acuerdo a eso. De lo contrario ésta es rechazada o pasada al siguiente módulo de autenticación de acuerdo a los requerimientos del módulo.

Formato:

prefix=authrule[|authrule|...]

Syntaxis:

<authrule> :=  <result> <authrule>

  <result>    := deny | allow
  <authrule>  := [!]ipv4:<iprule> | [!]alias:<aliasrule>

Donde <iprule> puede ser específicada en notación decimal punteada o en la notación CIDR, <aliasrule> está expresada en espreción regular. Si el signo '!' precede la regla, el sigificado es inverso.

Ejemplo:

555=deny ipv4:10.0.0.0/27|allow ipv4:0/0
5555=allow ipv4:192.168.1.1|deny ipv4:192.168.1.0/255.255.255.0
86=deny !ipv4:172.16.0.0/24
09=deny alias:^188884.*
ALL=allow ipv4:ALL

En esta configuración, todos los endpoints excepto los de la red 10.0.0.0/27 están permitidos llamar al prefijo 555 (excepto 5555). A los endpoints de la red 192.168.1.0/24 no se les permite llamar al prefijo 5555, excepto 192.168.1.1. Endpoints queno pertenecen a 172.16.0.0/24 no se les permite llamar al prefijo 86. Endpoints que tienen un alias que empieza con 188884 no se les permite llamar al prefijo 09. Todas las otras situaciones están permitidas.

8.9 Sección [RadAuth]

Esta sección define la configuración que posibilita la autenticación RADIUS basada en H.235 CATs (Cisco Access Tokens) presentes en las peticiones RAS: RRQ, ARQ y mensajes Q.931 Setup.

  • Servers=SERVER1[:AUTH_PORT[:ACCT_PORT[:SECRET]]];SERVER2[:AUTH_PORT[:ACCT_PORT[:SECRET]]];...
    Default: N/A

    Aquí se definen los servidores RADIUS que van a ser utilizados para la autenticación. Esta lista puede contener un número arbitrario de servidores. El órden de los servidores es importante, porque los servidores serán interrogados por el módulo RADIUS en el órden dado. Si no se indica información del puerto, el número de puerto especificado en DefaultAuthPort será utilizado. Si tampoco se especifica el secret, el shared secret por defecto especificado en SharedSecret es utilizado. Los nombres de los servidores pueden ser direcciones IP o nombres DNS.

    Ejemplos de Servidores:

    Servers=192.168.1.1
    Servers=192.168.1.1:1645
    Servers=192.168.1.1:1645:1646:secret1
    Servers=radius1.mycompany.com:1812
    Servers=radius1.mycompany.com;radius2.mycompany.com
    Servers=radius1.mycompany.com:1812:1813:secret1;radius2.mycompany.com:1812:1813:secret2

  • LocalInterface=IP_OR_FQDN
    Default: N/A

    Interfaz de red local particular que el cliente RADIUS debe utilizar para comunicarse con los servidores RADIUS. Este parámetro puede ser útil en máquinas NAT para restringir números de interfaces de red utilizados para la comunicación RADIUS. Por defecto este valor está vacío y permite a las peticiones RADIUS ser enviadas a cualquier (la que mejor conviene) interfaz de red. Si usted no está seguro de lo que está haciendo, es mejor dejar esta opción sin establecer.

  • RadiusPortRange=10000-11000
    Default: N/A

    Por defecto (si esta opción no está establecida) el cliente RADIUS asigna puertos dinámicamente según lo especificado por el sistema operativo. Si usted desea restringir para que un cliente RADIUS utilice solamente puertos de un rango particular, utilice este parámetro.

  • DefaultAuthPort=PORT_NO
    Default: 1812

    Número de puerto por defecto que será utilizado para las peticiones de autenticacion RADIUS (Access-Request packets), si no se ha superpuesto por el atributo Servers.

  • SharedSecret=SECRET
    Default: N/A (cadena vacía)

    Secret utilizada para autenticar este GnuGk (cliente NAS) con el servidor RADIUS. Éste debe ser un password criptográficamente fuerte. Éste es el valor por defecto utilizado, si no se colocó un secret específico en el parámetro Servers. Si EncryptAllPasswords está habilitada, o la variable KeyFilled está definida en esta sección, el password está en forma encriptada y debería ser creado utilizando la herramienta addpasswd.

  • RequestTimeout=TIMEOUT_MS
    Default: 2000 (milisegundos)

    Tiempo en milisegundos que se debe esperar para que el servidor RADIUS responda a una petición enviada por el GnuGk. Si no se recibe ninguna respuesta dentro de este período de tiempo, se consultará al siguiente servidor RADIUS.

  • IdCacheTimeout=TIMEOUT_MS
    Default: 9000 (milisegundos)

    Tiempo en milisegundos que se debe esperar para que identificadores de petición RADIUS de 8-bits sean únicos. Si el rango de identificadores de 8-bits se agota dentro de este período de tiempo un nuevo socket cliente (socket UDP) es asignado por el módulo RADIUS. Tomemos el ejemplo: Tenemos aproximadamente 60 RRQs/segundo; después de 4 segundos el rango de identificadores de 8-bits se agota; se asigna un nuevo socket; después de los siguientes 4 segundos, el segundo rango de identificadores de 8-bits se agota; un tercer socket es asignado; después del noveno segundo, identificadores del pool 1 estan disponibles otra vez - ... . En general, descanso demasiado largo significa demasiados recursos consumidos, descanso demasiado corto significa que el servidor RADIUS puede tomar los paquetes entrantes como duplicados y por lo tanto borrarlos.

  • SocketDeleteTimeout=TIMEOUT_MS
    Default: 60000 (milisegundos) - 60 s

    Tiempo en milisegundos que se debe esperar para que aquellos sockets RADIUS no utilizados se cierren. Éste parámetro es utilizado conjuntamente con IdCacheTimeout - sockets adicionales creados durante los períodos pesados de carga del GK para atender peticiones entrantes. Estos sockets son cerrados durante los períodos ociosos.

  • RequestRetransmissions=NUMBER
    Default: 2

    El número de veces en que una simple petición RADIUS es transmitida a cada servidor RADIUS configurado (si no se recibe respuesta). 1 (uno) significa no retransmisión, 2 (dos) significa retransmisión simple, ... . El método exácto de retransmisión se define en el atributo RoundRobinServers.

  • RoundRobinServers=BOOLEAN
    Default: 1

    Método de retransmisión de peticiones RADIUS.

    Si se fija en 1 (uno), la petición RADIUS es transmitida de la siguiente manera (Hasta que se recibe respuesta):

    Server #1 Attempt #1, Server #2 Attempt #1, ..., Server #N Attempt #1
    ...
    Server #1 Attempt #RequestRetransmissions, ..., Server #1 Attempt #RequestRetransmissions
    

    Si se fija en 0 (cero), se mantiene la siguiente secuencia:

    Server #1 Attempt #1, ..., Server #1 Attempt #RequestRetransmissions
    ...
    Server #N Attempt #1, ..., Server #N Attempt #RequestRetransmissions
    

  • AppendCiscoAttributes=BOOLEAN
    Default: 0

    En el caso de que se utilice este parámetro, se debe incluir un atributo Cisco Vendor Specific RADIUS en la petición RADIUS (h323-conf-id,h323-call-origin,h323-call-type).

  • IncludeTerminalAliases=BOOLEAN
    Default: 1

    En el caso de que se utilice, se debe enviar un atributo Cisco VSA 'h323-ivr-out' con una lista de alias con las que el endpoint se está registrando (RRQ.m_terminalAlias). Este atributo se utiliza para proveer un control detallado sobre la lista de alias con los cuales el endpoint es pemitido registrarse. El formato de este atributo es el siguiente:

            Cisco-AV-Pair = "h323-ivr-out=terminal-alias:" alias [,alias] [;]
    Example:
            Cisco-AV-Pair = "h323-ivr-out=terminal-alias:helpdesk,support,77771;"
    

  • UseDialedNumber=BOOLEAN
    Default: 0

    Seleccione el tipo de número Called-Station-Id entre el original (según lo marcado por el usuario) - UseDialedNumber=1 - y el reescrito - UseDialedNumber=0.

8.10 Sección [RadAliasAuth]

En esta sección se definen parámetros de configuración que permiten la autenticación RADIUS basada en alias de endpoints y/o direcciones IP presentes en las peticiones RAS: RRQ o en las peticiones Setup: Q.931. Este esquema de autenticación es muy utilizado tanto para endpoints registrados en el gatekeeper (ARQ,RRQ) como para llamadas que vienen desde endpoints no registrados(Setup).

  • Servers=SERVER1[:AUTH_PORT[:ACCT_PORT[:SECRET]]];SERVER2[:AUTH_PORT[:ACCT_PORT[:SECRET]]];...
    Default: N/A

    Servidores RADIUS que van a ser utilizados para autenticación de peticiones RAS. Esta lista puede contener un número arbitrario de servidores. El órden de los servidores es importante, porque los servidores serán interrogados por el módulo RADIUS en el órden dado. Si no se indica información del puerto, el número de puerto especificado en DefaultAuthPort será utilizado. Si tampoco se especifica el secret, el shared secret por defecto especificado en SharedSecret es utilizado. Los nombres de los servidores pueden ser direcciones IP o nombres DNS.

    Example:

    Servers=192.168.3.1:1645;192.168.3.2:1812:1813:mysecret;radius.mycompany.com

  • LocalInterface=IP_OR_FQDN
    Default: N/A

    Interfaz de red local particular que el cliente RADIUS debe utilizar para comunicarse con los servidores RADIUS. Este parámetro puede ser útil en máquinas NAT para restringir números de interfaces de red utilizados para la comunicación RADIUS. Por defecto este valor está vacío y permite a las peticiones RADIUS ser enviadas a cualquier (la que mejor conviene) interfaz de red. Si usted no está seguro de lo que está haciendo, es mejor dejar esta opción sin establecer.

  • RadiusPortRange=10000-11000
    Default: N/A

    Por defecto (si esta opción no está establecida) el cliente RADIUS asigna puertos dinámicamente según lo especificado por el sistema operativo. Si usted desea restringir a cliente RADIUS a utilizar solamente puertos de un rango particular, utilice este parámetro.

  • DefaultAuthPort=PORT_NO
    Default: 1812

    Número de puerto por defecto que será utilizado para las peticiones de autenticacion RADIUS (Access-Request packets), si no se ha suerpuesto por el parámetro Servers.

  • SharedSecret=SECRET
    Default: N/A (cadena vacía)

    Secret utilizada para autenticar éste GnuGk (cliente NAS) con el servidor RADIUS. Este debe ser un password criptográficamente fuerte. Este es el valor por defecto utilizado, si no se colocó un secret específico en el parámetro Servers. Si EncryptAllPasswords está habilitada, o la variable KeyFilled está definida en esta sección, el password está en forma encriptada y debería ser creado utilizando la herramienta addpasswd.

  • RequestTimeout=TIMEOUT_MS
    Default: 2000 (milisegundos)

    Tiempo en milisegundos para que el servidor RADIUS responda a una petición enviada por el GnuGk. Si no se recibe ninguna respuesta dentro de este período de tiempo, se consultará al siguiente servidor RADIUS.

  • IdCacheTimeout=TIMEOUT_MS
    Default: 9000 (milisegundos)

    Tiempo en milisegundos para que identificadores de petición RADIUS de 8-bits sean únicos. Si el rango de identificadores de 8-bits se agota dentro de este período de tiempo un nuevo socket cliente (socket UDP) es asignado por el módulo RADIUS. Tomemos el ejemplo: Tenemos aproximadamente 60 RRQs/segundo; después de 4 segundos el rango de identificadores de 8-bits se agota; se asigna un nuevo socket; después de los siguientes 4 segundos, el segundo rango de identificadores de 8-bits se agota; un tercer socket es asignado; después del noveno segundo, identificadores del pool 1 estan disponibles otra vez - ... . En general, descanso demasiado largo significa demasiados recursos consumidos, descanso demasiado corto significa que el servidor RADIUS puede tomar los paquetes entrantes como duplicados y por lo tanto borrarlos.

  • SocketDeleteTimeout=TIMEOUT_MS
    Default: 60000 (miliseconds) - 60 s

    Tiempo en milisegundos para que sockets RADIUS no utilizados sean cerrados. Éste parámetro es utilizado conjuntamente con IdCacheTimeout - sockets adicionales creados durante los períodos pesados de carga del GK para atender peticiones entrantes. Estos sockets se cierran durante los períodos ociosos.

  • RequestRetransmissions=NUMBER
    Default: 2

    El número de veces en que una simple petición RADIUS es transmitida a cada servidor RADIUS configurado (si no se recibe respuesta). 1 (uno) significa no retransmisión, 2 (dos) significa retransmisión simple, ... . El método exácto de retransmisión es definido por el atributo RoundRobinServers.

  • RoundRobinServers=BOOLEAN
    Default: 1

    Método de retransmisión de peticiones RADIUS.

    Si se fija en 1 (uno), la petición RADIUS es transmitida de la siguiente manera (Hasta que se recibe respuesta):

    Server #1 Attempt #1, Server #2 Attempt #1, ..., Server #N Attempt #1
    ...
    Server #1 Attempt #RequestRetransmissions, ..., Server #1 Attempt #RequestRetransmissions
    

    Si se fija en 0 (cero), se mantiene la siguiente secuencia:

    Server #1 Attempt #1, ..., Server #1 Attempt #RequestRetransmissions
    ...
    Server #N Attempt #1, ..., Server #N Attempt #RequestRetransmissions
    

  • AppendCiscoAttributes=BOOLEAN
    Default: 1

    En el caso de que se utilice este parámetro, se debe incluir un atributo Cisco Vendor Specific RADIUS en la petición RADIUS (h323-conf-id,h323-call-origin,h323-call-type).

  • IncludeTerminalAliases=BOOLEAN
    Default: 1

    En el caso de que se utilice este parámetro, se debe enviar un atributo Cisco VSA 'h323-ivr-out' con una lista de alias con los que el endpoint se está registrando (RRQ.m_terminalAlias). Este atributo se utiliza para proveer un control detallado sobre la lista de alias con los cuales el endpoint es pemitido registrarse. El formato de este atributo es el siguiente:

            Cisco-AV-Pair = "h323-ivr-out=terminal-alias:" alias [,alias] [;]
    Example:
            Cisco-AV-Pair = "h323-ivr-out=terminal-alias:helpdesk,support,77771;"
    

  • FixedUsername
    Default: N/A

    Si se establece este parámetro, éste se superpone sobre el valor del atributo User-Name RADIUS para peticiones RADIUS salientes. Esto significa que cada petición de acceso (Access-Request) se autenticará en cuanto al usuario FixedUsername.

  • FixedPassword
    Default: N/A

    Si no esta activada esta opción, User-Password es una copia de User-Name. Por ejemplo, si User-Name es 'john' entonces el valor de User-Password será también 'john'. Activar este parámetro sustituye este comportamiento y el atributo User-Password será siempre establecido al valor de FixedPassword. Si EncryptAllPasswords está habilitada, o la variable KeyFilled está definida en esta sección, el password está en forma encriptada y debe ser creada utilizando la herramienta addpasswd.

    Ejemplo 1:

    (Neither FixedUsername nor FixedPassword set)
    
    Todos los endpoints se autenticarán utilizando sus alias como username y el password. Esto significa, por ejemplo que el endpoint 'EP1' se autenticará con el username 'EP1' y el password 'EP1'.

    Ejemplo 2:

    (FixedUsername not set)
    FixedPassword=ppp
    
    Todos los endpoints se autenticarán utilizando como alias y passwords la palabra 'ppp'.

    Ejemplo 3:

    FixedUsername=ppp
    FixedPassword=ppp
    
    Todos los endpoints se autenticarán utilizando como username la palabra 'ppp' y como password la palabra 'ppp'.

  • UseDialedNumber=BOOLEAN
    Default: 0

    Seleccione el número Called-Station-Id entre el original (como marcado por el usuario) - UseDialedNumber=1 - y el y el reescrito - UseDialedNumber=0.

8.11 Sección [CapacityControl]

Esta sección contiene un conjunto de reglas que permiten controlar el volumen de llamadas entrantes dependiendo de varias condiciones. Para que este módulo funcione, los módulos de autenticación y de accounting CapacityControl deben estar habilitados como se muestra acontinuación:

[Gatekeeper::Auth]
CapacityControl=required;Setup
 
[Gatekeeper::Acct]
CapacityControl=required;start,stop

Una regla de capacidad (capacity rule) puede corresponderse con una IP de emisor (caller), ID H.323 del emisor (caller) y/o un número CLI de emisor (caller) - en el órden especificado. Adicionalmente, la correspondencia puede ser reducida especificando un patrón de número llamado (called number). Este módulo funciona manteniendo listas de llamadas actuales para cada ruta entrante (regla) - ésto se consigue teniendo configurado el módulo de accounting CapacityControl para que agregue o elimine llamadas activas de las rutas que coincidan. El módulo de autenticación CapacityControl revisa las reglas y acepta o rechaza una llamada tomando en cuenta el volumen de llamadas actual o máximo para una ruta entrante que coincida.

Formato para una regla de ruta entrante:

[ip:CALLER_IP|h323id:CALLER_H323ID|cli:CALLER_NUMBER]=[CALLED NUMBER REGEX PATTERN] MAX_CAPACITY

ip:, h323id: y cli: son prefijos que definen el tipo de regla. Una llamada entrante será emparejada con la IP del emisor (caller), H.323ID o por el CLI. El valor opcional CALLED NUMBER REGEX PATTERN es una expresión regular que el número llamado (called number) debe emparejar para aplicar esta regla. MAX_CAPACITY Es un número máximo de llamadas activas para esta ruta.

Ejemplo 1:

[CapacityControl]
ip:192.168.1.0/24=30
ip:any=120

Estas reglas indican que la subred 192.168.1.0/24 puede enviar hasta 30 llamadas concurrentes, mientras que otras IPs pueden enviar hasta 120 llamadas concurrentes.

Ejemplo 2:

[RewriteCLI]
%r1% cli:1001=30
%r2% cli:1001=^48(50|51) 5

Estas reglas limitan al emisor (caller) con un CLI de 1001 a realizar hasta 5 llamadas hacia los destinos 4850/4851 y hasta 30 llamadas hacia otros destinos. %r1% y %r2% son constructores especiales que permiten tener la misma clave de configuración cli:1001 mas de una vez.


Página siguiente Página anterior Índice general

Capítulos: Índice · Introducción · Instalacion · Empezando · Configuración Básica · Enrutado · RAS Config · Autenticación · Accounting · Vecinos · Configuración Por-Terminal · Configuración Avanzada · Monitoreando



Last updated: 20. Aug 2017
Page maintained by Jan Willamowius