Ceci est le manuel Français pour GNU Gatekeeper 2.2.1 (partially updated for 2.3.2).
Une version plus récente (Anglais) du manuel se trouve dans l'archive téléchargée de GnuGk.

Chapitres: Contenu · Introduction · Installation · Pour commencer · Config basique · Routage · Config RAS · Authentification · Accounting · Voisins · Config par terminal · Config avancée · Surveillance

7. Configuration de l'Authentication

La section suivante du fichier de configuration permet de configurer l'authentification.

7.1 Section [Gatekeeper::Auth]

La section définie le méchanisme d'authentification du gatekeeper.

Syntax:

authrule=actions

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

Une règle peut retourner un de ces trois codes: ok, fail, pass.
  • ok - La requête est authentifié par le module.
  • fail - L'authentification a echoué et doit être rejeté.
  • next - La règle ne permet pas d'authentifié la requête.
Il existe aussi trois façons de contrôler une règle.
  • optional - Si la règle ne peut authentifié la requête, on passe à la règle suivante.
  • required - Les requêtes doivent être authentifiées par ce module, ou elles seront rejetées. Une fois authentifiée par ce module, la requête passera à la règle suivante.
  • sufficient - Si la règle est authentifié, elle est acceptée, sinon elle est rejetée. Aucune règle ne devrait suivre une règle 'sufficient' car elle ne servira jamais.

Modules actuellement supportés:

  • SimplePasswordAuth/SQLPasswordAuth/LDAPPasswordAuth

    Ces modules vérifient les champs tokens or cryptoTokens du message RAS. Les champs doivent au moins contenir generalID and password. Le hashage simple MD5 des champs cryptoTokens, cryptoEPPwdHash et le hashage HMAC-SHA1-96 (libssl doit être installé) du champ nestedcryptoToken sont maintenant supportés. les hashages des champs par CAT (Cisco Access Token) et en texte clair (username/password) sont aussi supportés. Le ID et le password sont lus depuis la section [SimplePasswordAuth], une base de données SQL ou LDAP respectivement par les modules SimplePasswordAuth, SQLPasswordAuth et LDAPPasswordAuth. Le module MySQLPasswordAuth afin de conserver la compatibilité avec les versions précédentes.

  • AliasAuth/SQLAliasAuth/LDAPAliasAuth

    Ce module ne peut être utilisé que pour l'authentification des RegistrationRequest (RRQ). L'adresse IP d'un terminal et un alias donné doit vérifier une pattern donnée. Pour AliasAuth, la pattern est définie dans la section [RasSrv::RRQAuth]. Pour SQLAliasAuth, la pattern est rappatrier à partir d'une base de données SQL, définie dans la section [SQLAliasAuth].

  • FileIPAuth

    Ce module donne un moyen simple pour restreindre l'accès au gatekeeper selon l'addresse IP ou le réseau de l'appelant.

  • PrefixAuth

    A l'origine ce module se nommait GkAuthorize. L'adresse IP et l'alias de la requête et un préfix donné doivent vérifier une pattern donnée. Pour plus de détails voir la section [PrefixAuth]. Actuellement le module ne sait vérifier que les AdmissionRequest (ARQ) et les LocationRequest (LRQ).

  • RadAuth

    Ce module permet l'authentification suivant le schéma de sécurité username/password d'H.235. Il authentifie RRQ, ARQ, Q931 Setup grâce à des serveurs RADIUS distants. Il envoie aux serveurs RADIUS les usernames/passwords extrait du tokens CAT (Cisco Access Tokens) se trouvant dans les paquets RRQ, ARQ et Setup. Donc si votre terminal ne supporte pas les CATs ou bien you n'avez pas besoin d'un schéma d'authentification basé des usernames/password individuels - ce n'est pas le module qu'il vous faut (vous pouvez regarder du côté du RadAliasAuth). Pour plus de détails se référer à la section [RadAuth].

  • RadAliasAuth

    Ce module permet d'authentifier à partir des alias de terminals et/ou des adresses IP "call signalling" avec l'aide de serveurs RADIUS. Il ne nécessite aucun tokens H.235 dans les messages RAS, il peut donc être uilisé avec une gamme plus large de systemes contrairement au module RadAuth. Les messages RRQ, ARQ, et Q.931 Setup peuvent être authentifiés avec ce module. Pour plus de détails se référer à la section [RadAliasAuth].

  • SQLAuth

    Un module puissant pour authentifier et authoriser les messages RRQ, ARQ, LRQ et Setup. Il peut effectuer des véréfications basés sur les paramètres précédents tels que le numéro de l'appelant, le numéro du destinataire, le nom d'utilisateur et d'autres paramètres. Il supporte aussi la limitation de la durée d'un appel, la réécriture de numéros, le routage d'appels, la vérification d'alias et l'assignation. Se référer à la section [RadAliasAuth]<@@ref>sqlauth[SQLAuth] pour plus de détails.

  • CapacityControl

    Un module flexible permettant de controler le volume d'appels entrants avec la possibilité de configurer plusieurs conditions. IMPORTANT: Ceci doit être utilisé en conjonction avec le module accounting CapacityControl. Se référer à la section [CapacityControl] pour plus de détails.

Vous pouvez aussi configurer une règle afin de vérifier seulement une partie des messages RAS. L'exemple suivant montre comment vérifier uniquement les RRQ et ARQ à partir du module SimplePasswordAuth avec une règle optionnelle. Si un RRQ n'est pas vérifié (ne contient pas de champs tokens ou cryptoTokens), il est passé à la règle suivante AliasAuth. La règle par défaut est d'acepter toutes les requêtes.

Exemple 1:

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

L'exemple ci-dessous authentifie tous les appels, vérifie le détils des messages de signalisation Setup avec le module RadAliasAuth.

Exemple 2:

RadAliasAuth=required;Setup
default=allow

L'exemple suivant vérifie l'enregistrement des terminaux (RRQ) et l'admission d'appel (ARQ) soit par username/password (RadAuth) soit par alias/IP (RadAuthAlias). De plus, si l'ppel provient d'un terminal non enregistré (ET qu'aucune authentification par RRQ ou ARQ n'est été faite), le module RadAliasAuth vérifie alors le message Setup (SetupUnreg).

Exemple 3:

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

XXXXXXXXXXXXXXXXXXXX1

7.2 Section [SimplePasswordAuth]

Cette section définie la paire userid/password utilisé par le module SimplePasswordAuth. Tous les mots de passe sont cryptés avec le programme addpasswd.

Usage:

addpasswd config section userid password

Exemple:

addpasswd config.ini SimplePasswordAuth frank secret

Options:

  • KeyFilled=123
    Défaut: 0

    Valeur par défault à utiliser comme octets de remplissage pendant l'encryption/décryption du mot de passe.

  • CheckID=1
    Défautt: 0

    Vérifie si les alias correspondent aux ID dans les marques.

  • PasswordTimeout=120
    Défaut: -1

    Le module SimplePasswordAuth et tous ses descandants mettent en cache un mot de passe authentifié. Ce champ définie le durée de vie du cache en seconde. 0 signifie qu'aucun cache ne sera utilisé, alors qu'une valeur négative indique que le cache n'expirera jamais.

  • DisableAlgorithm=MD5,H.235.1
    Défaut: N/A

    Désactive les algorithmes d'authentification H.235 dans la négotiation GRQ/GCF, sinon tous les algorithmes supportés par GnuGk sont utilisés. Un algorithme désativé sera encore utilisé s'il est utilisé par un terminal sans négotiation. Cet interrupteur peut être utilisé pour éviter des incompatibilités avec des implémentations vendeur.

7.3 Section [SQLPasswordAuth]

Authentifie les terminaux compatibles H.235 à partir de mots de passe enregistrés dans une base de données SQL. Cette section définie les gestionnaires SQL à utiliser, les paramètres de connexion à la base de données SQL et la requête pour récupérer les mots de passe.

  • Driver=MySQL | PostgreSQL
    Défaut: N/A

    Gestionnaire de base de données SQL à utiliser. Actuellement seul MySQL et PostgreSQL sont implémentés.

  • Host=DNS[:PORT] | IP[:PORT]
    Défaut: localhost

    Adresse de l'hôte hébergeant la base de données SQL. Peut-être de la forme de DNS[:PORT] ou IP[:PORT]. Par exemple sql.mycompany.com ou sql.mycompany.com:3306 ou 192.168.3.100.

  • Database=billing
    Défault: billing

    Nom de la base de données à laquelle se connecter.

  • Username=gnugk

    Compte utilisé pour se connecter à la base de données.

  • Password=secret

    Mot de passe utilisé pour se connecter à la base de données. Si le mot de passe n'est pas indiqué, une connexion sans mot de passe sera tenter à la base de données. Si EncryptAllPasswords est actif, ou si la variable KeyFilled est définie dans cette section, le mot de passe sera sous une forme encrypté et doit être créé avec l'utilitaire addpasswd.

  • CacheTimeout=120
    Défaut: 0

    Ce champ définie combien de temps la paire (alias:mot de passe) récupérée de la base de données sera conservée en cache en local. L'unité de base est la seconde. 0 signifie que le cache n'est pas actif, une valeur négative désactive l'expiration du cache (seule la commande reload forcera le rafraîchissement du cache).

  • MinPoolSize=5
    Défaut: 1

    Définie le nombre de connexions SQL actives simultannées. Cela permet des performances accrues lors de charges élevées, car plusieurs requêtes concurrentes peuvent alors être exécutées en même temps. Si MinPoolSize=1 le précédent comportement est recréé, les requêtes à la base de données sont sérialisées.

  • Query=SELECT ...
    Défaut: N/A

    Définie la requête SQL utilisée pour récupérer le mot de passe H.235 de la base de données. La requête est personnalisable - avant chaque requête les nouvelles valeurs sont substituées aux paramètres de remplacement. Parameter placeholders are denoted by %1, %2, ... strings. Specify %% to embed a percent character before a digit into string (like %%1), specify %{1} to allow expansion inside complex expressions like %{1}123. For SQLPasswordAuth two parameters are defined:

    • %1 - l'alias pour lequel on demande le mot de passe
    • %2 - l'identification de la gatekeeper

    Exemples:

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

7.4 Section [RasSrv::RRQAuth]

Spécifie l'action lors de la réception d'un message RRQ (confirmation ou rejet) pour le module AliasAuth. Le premier alias (le plus souvent un H323ID) du terminal à enregistrer est recherché dans la section. Si un paramètre est trouvé la valeur sera appliquée comme une règle. Une règle est constituée de condititions séparées par des '&'. Un enregistrement est accepté si toutes les conditions sont vérifiées.

Syntax:

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

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

La notation et la signification des <authparams> dépendent de <authtype>:

  • sigaddr - expresson régulière étendue qui s'applique à ``PrintOn(ostream)'', la représentation de l'adresse du signal de la requête.

    Exemple:

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

  • sigip - forme spécialisée de `sigaddr'. Ecrire l'adresse IP de la signalisation en notation décimal: ``byteA.byteB.byteC.byteD:port''.

    Exemple:

    sigip:192.168.242.165:1720
    

  • allow - toujours accepter l'alias.
  • deny - toujours rejeter l'alias.

7.5 Section [SQLAliasAuth]

Authentifie les terminaux par des règles stockées dans base de données SQL (les règles doivent être conformes au format de la section [RasSrv::RRQAuth]). Cette section définie le gestionnaire SQL à utiliser, les paramètres de la connexion à la base de données and la requête à utiliser.

  • Driver=MySQL | PostgreSQL
    Défaut: N/A

    Gestionnaire de base de données à utiliser, les versions pour MySQL et PostgreSQL sont implémentées.

  • Host=DNS[:PORT] | IP[:PORT]
    Défaut: localhost

    Adresse de l'hôte hébergeant le serveur SQL. Peut être de la forme DNS[:PORT] ou IP[:PORT]. Par exemple sql.mycompany.com ou sql.mycompany.com:3306 ou 192.168.3.100.

  • Database=billing
    Défaut: billing

    Nom de la base de données à laquelle se connecter.

  • Username=gnugk

    Compte utilisé pour se connecter à la base de données.

  • Password=secret

    Mot de passe utilisé pour se connecter à la base de données. Si aucun mot de passe n'est spécifié, une connexion sans mot de passe sera effectuée. Si EncryptAllPasswords est selectionné, ou la variable KeyFilled est définie dans cette section, le mot de passe sera sous une forme encryptée et peut être généré par l'utilitaire addpasswd.

  • CacheTimeout=120
    Défaut: 0

    Ce champ définie combien de temps le couple (alias;authrule) récupéré depuis la base de données sera conservé dans le cache local. La valeur à pour unité la seconde. 0 signifie qu'aucune règle ne sera mise en cache, et une valeur négative indique que le cache n'expire jamais (seule la commande reload forcera le rafraîchissement du cache).

  • MinPoolSize=5
    Défaut: 1

    Définit le nombre de connexions simultanéés à la base de données SQL. Cela permet une performance accrue sous charge élevée (pusieurs requêtes sont alors exécutées en parallèle). Si MinPoolSize=1 simule le conportement des versions précédentes (les requêtes sont lancées en série, une requête à la fois).

  • Query=SELECT ...
    Défaut: N/A

    Définie la requête SQL utilisées pour récupérer la règle d'alias de la base de données. La requête est personnalisable - ce qui signifie que le remplacement des paramètres est fait à chaque nouvelle requête. Parameter placeholders are denoted by %1, %2, ... strings. Specify %% to embed a percent character before a digit into string (like %%1), specify %{1} to allow expansion inside complex expressions like %{1}123. For SQLAliasAuth two parameters are defined:

    • %1 - l'alias pour lequel on recherche la règle.
    • %2 - l'identification de la gatekeeper.

    Exemple:

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

7.6 Section [PrefixAuth]

Cette section définie les règles d'authentification pour le module PrefixAuth. Actuellement, seuls les messages ARQs et LRQs peuvent être authentifiés par ce module.

On débute par le préfix le plus spécifique du champ destinationInfo de la reqête reçue. Ensuite la requête est eccepté ou non suivant les règles dans l'ordre spécifique décroissant. Si aucune correspondance de préfix n'est trouvée, et que l'option par default est spécifié, cette dernière accepte ou non la reqête. Autrement la requête continue sont parcourt dans les modules d'authification suivant les conditions du module.

Format:

prefix=authrule[|authrule|...]

Syntax:

<authrule> :=  <result> <authrule>

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

<iprule> peut être noté en notation décimal ou CIDR, <aliasrule> est une expression régulière. Si `!' précède la règle, le sens est inversé.

Example:

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

Dans cette configuration, tous les terminaux sauf ceux du réseau 10.0.0.0/27 sont autorisés à appeler le préfix 555 (execpté le 5555). Les terminaux du réseau 192.168.1.0/24 sont autorisés à appeler le préfix 5555, sauf 192.168.1.1. Les terminaux ne provenant pas de 172.16.0.0/24 ne sont pas autorisés à appeler le préfix 86. Les terminaux ayant un alias commençant par 188884 ne sont pas autorisés à appeler le préfix 09. Toutes les autres situations sont autorisées.

7.7 Section [RadAuth]

Cette section définie les options qui permettent d'activer l'authentification RADIUS basé sur le H.235 CATs (Cisco Access Tokens) présent dans les requêtes RAS RRQ et ARQ et les messages Setup Q931.

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

    Définie les serveurs RADIUS utilisés pour l'authentification. Cette liste peut contenir un nombre arbitraire de serveurs. L'ordre des serveurs sera respecté par le module RADIUS lors du processus d'interrogation. Si aucun port UDP n'est indiqué, DefaultAuthPort sera utilisé. De même avec le secret et SharedSecret. Adresses IP ou nom DNS peuvent être utilisés comme nom pour les serveurs RADIUS.

    Exemple Servers:

    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
    Défaut: N/A

    Interface réseau que le client RADIUS doit utiliser pour communiquer avec les serveurs RADIUS. Ce paramètre peut être utile sur les machines "NATées". By défaut cette valeur est vide et c'est la table de routage de l'OS qui choisit l'adresse IP source. Si vous n'êtes pas certain de ce que vous faîtes, il est préférable de laisser cette option vide.

  • RadiusPortRange=10000-11000
    Défaut: N/A

    Par défaut (si cette option n'est pas définie), le client RADIUS alloue des ports dynamiquement comme indiqué par l'OS. Si vous désirez que le client RADIUS utilise des ports d'une plage particulière seulement - configurer ce paramètre.

  • DefaultAuthPort=PORT_NO
    Défaut: 1812

    Ports UDP à utiliser pour les requêtes d'authentification RADIUS (paquets Access-Request), l'attribut Servers est prioritaire.

  • SharedSecret=SECRET
    Défaut: N/A (chaîne vide)

    Secret utilisé pour authentifier ce GnuGK (client NAS) auprès d'un serveur RADIUS. Cela peut être un mot de passe à fort encryption. C'est la valeur par défaut, si aucun secret spécifique n'est indiqué dans la partie Servers. Si EncryptAllPasswords est selectionné, or la variable KeyFilled est définie dans cette section, alors le mot de passe est sous une forme cryptée et peut être crée à partir de l'utilitaire addpasswd.

  • RequestTimeout=TIMEOUT_MS
    Défaut: 2000 (milisecondes)

    Délai (en millisecondes) que la réponse du serveur RADIUS à une requête envoyée par GnuGK ne peut dépasser. Si il n'y a pas de réponse dans cette période, une nouvelle requête est envoyé au serveur RADIUS suivant.

  • IdCacheTimeout=TIMEOUT_MS
    Défaut: 9000 (milisecondes)

    Timeout (miliseconds) for RADIUS request 8-bit identifiers to be unique. If all 8-bit identifier range is exhausted within this period, new client socket (UDP socket) is allocation by RADIUS module. Let's take the example: we have approximatelly 60 RRQs/sec - after ca. 4 seconds 8-bit identifiers range gets exhausted - new socket allocated - after next 4 seconds the second 8-bit identifiers range gets exhauted - third socket allocated - after 9th second identifiers from the pool 1 are available again - ... . In general, too long timeout - too much resources consumed, too short timeout - RADIUS server may take incoming packets as duplicated and therefore drop it.

  • SocketDeleteTimeout=TIMEOUT_MS
    Défaut: 60000 (milisecondes) - 60 s

    Délai au bout duquel les sockets RADIUS inutilisées sont fermées. Utilisé en conjonction de IdCacheTimeout - les sockets supplémentaires créées pendant les périodes où GnuGK est fortement chargé afin de répondre aux requêtes entrantes, sont fermées pendant les périodes d'inactivités.

  • RequestRetransmissions=NUMBER
    Défaut: 2

    Combien de fois une même requête RADIUS est envoyée à chaque serveur RADIUS configurés (si aucune réponse n'est reçue). 1 signifie aucune retransmission, 2 - une seule, ... . la méthode exacte de retransmission est définie par l'attribut RoundRobinServers.

  • RoundRobinServers=BOOLEAN
    Défaut: 1

    Méthode de retransmission des requêtes RADIUS.

    Si définie à 1, la requête RADIUS est transmise de la façon suivante (jusqu'à ce qu'une réponse soit reçue):

    Serveur #1 Essai #1, Serveur #2 Essai #1, ..., Serveur #N Essai #1
    ...
    Serveur #1 Essai #RequêtesRetransmises, ..., Serveur #1 Essai #RequêtesRetransmises
    

    Si définie à 0, la séquence suivante est déroulée:

    Serveur #1 Essai #1, ..., Serveur #1 Essai #RequêtesRetransmises
    ...
    Serveur #N Essai #1, ..., Serveur #N Essai #RequêtesRetransmises
    

  • AppendCiscoAttributes=BOOLEAN
    Défaut: 0

    Si définie, les attributs RADIUS spécifiques Cisco (en anglais: VendorSpecificAttribut) sont inclus dans les requêtes RADIUS(h323-conf-id,h323-call-origin,h323-call-type).

  • IncludeTerminalAliases=BOOLEAN
    Défaut: 1

    Si définie, l'attribut VSA Cisco 'h323-ivr-out' est envoyé avec la liste d'alias avec laquelle le terminal s'est enregistré(RRQ.m_terminalAlias). Cet attribut est fourni afin de permettre un contrôle fin sur la liste d'alias du terminal sous lesquels il a le droit de s'enregistrer. Le formadt e cet attribut est:

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

  • UseDialedNumber=BOOLEAN
    Défaut: 0

    UseDialedNumber=1: renseigne le nombre Called-Station-Id avec le numéro originellement appelé par l'utilisateur. UseDialedNumber=0: le renseigne avec le numéro réécri.

[RadAuth] Access-Request Radius Attributes

For RRQs, the following RADIUS attributes are included within Access-Request packets:

  • User-Name

    H225_RegistrationRequest.tokens[CAT].m_generalID

  • CHAP-Password

    H225_RegistrationRequest.tokens[CAT].m_random + H225_RegistrationRequest.tokens[CAT].m_challenge

  • CHAP-Challenge

    H225_RegistrationRequest.tokens[CAT].m_timeStamp

  • NAS-IP-Address

    GnuGk Home or a particular local network interface set by 'LocalInterface' config parameter

  • NAS-Identifier

    GnuGk Name

  • NAS-Port-Type

    Virtual (GnuGk does not have concept of physical ports)

  • Framed-IP-Address

    An IP address of registering endpoint signaling channel

  • Service-Type

    Login-User

  • (optional) VSA: VendorId=Cisco, Cisco-AVPair, h323-ivr-out

    A list of aliases an endpoint is registering with (only if IncludeTerminalAliases config option is set)

    NOTE: The list of aliases inside h323-ivr-out is in the following form:
    h323-ivr-out="h323-ivr-out=terminal-alias:alias1,alias2,...,aliasN;"
    The h323-ivr-out attribute can be (in future) instantiated multiple times inside a single Access-Request and may also contain variables other than "terminal-alias", so a RADIUS server should be flexible enough with processing of this attribute.

For ARQ and Setup messages, the following RADIUS attributes are included inside Access-Request packets:

  • User-Name

    ARQ.tokens[CAT].m_generalID

  • CHAP-Password

    ARQ.tokens[CAT].m_random + ARQ.tokens[CAT].m_challenge

  • CHAP-Challenge

    ARQ.tokens[CAT].m_timeStamp

  • NAS-IP-Address

    GnuGk Home or a particular local network interface set by 'LocalInterface' config parameter

  • NAS-Identifier

    GnuGk Name

  • NAS-Port-Type

    Virtual (GnuGk does not have concept of physical ports)

  • Framed-IP-Address

    An IP address of registering endpoint signaling channel

  • Service-Type

    Login-User (for ARQs from originating endpoint) or Call-Check (for ARQs from answering endpoint)

  • Calling-Station-Id

    Calling party's number (if available)

  • Called-Station-Id

    Called party's number

  • (optional) VSA: VendorId=Cisco, h323-conf-id

    H.323 conference ID from ARQ

  • (optional) VSA: VendorId=Cisco, h323-call-type

    Call type (fixed value: "h323-call-type=VoIP")

  • (optional) VSA: VendorId=Cisco, h323-call-origin

    Call origin ("answer","originate")

  • (optional) VSA: VendorId=Cisco, h323-gw-id

    The same as NAS-Identifier

[RadAuth] Access-Accept Radius Attributes

For RRQs, the following RADIUS attributes are recognized inside Access-Accept packets:

  • VSA: VendorId=Cisco, h323-return-code

    If present and not 0, the request is rejected. This check is provided to allow interoperability with some poor billing systems, which send Access-Accept with non-zero h323-return-code to reject the call instead of Access-Reject. The attribute can be in the form h323-return-code="1" or h323-return-code="h323-return-code=1". Note that the return code is a string, not an integer.

  • VSA: VendorId=Cisco, h323-billing-model

    Billing mode for this account. Can be 0 (credit), 1 or 2 (debit). If an endpoint can understand H.225.0 CallCreditServiceControl messages, this information is used to build the message.

  • VSA: VendorId=Cisco, h323-credit-amount

    A string representing current user's account balance. If an endpoint can understand H.225.0 CallCreditServiceControl messages, this information is used to build the message.

  • VSA: VendorId=Cisco, Cisco-AVPair, h323-ivr-in

    If present, it is scanned for 'terminal-alias' variable that can contain a list of aliases that should be assigned to the endpoint being registered. All RRQ aliases that do not match this list are removed. The 'disable-codec' variable is also supported to disallow certain codecs for this call. The 'proxy' variable that can contain 'yes' or 'no' for enabling/disabling proxy mode for this call. The format of these attributes is as follows:

    Cisco-AVPair = "h323-ivr-in=variable:value;[variable:value;]"

    where the "variable" can be "terminal-alias":

    Cisco-AVPair = "h323-ivr-in=terminal-alias:alias1[,alias2,...];"

    Example 1:

    RRQ {
            m_terminalAlias = { "myalias", "1234" }
    }
    
    if RADIUS server returns the following h323-ivr-in:
    
    Access-Accept {
            Cisco-AVPair = "h323-ivr-in=terminal-alias:anotheralias,6789;"
    }
    
    the endpoint will get registered with aliases "anotheralias" and "6789".
    Also RCF will contain:
    
    RCF {
            m_terminalAlias = { "anotheralias", "6789" }
    }
    

    Example 2 (add E164 to an existing alias):

    RRQ {
            m_terminalAlias = { "it_s_me" }
    }
    
    if RADIUS server returns the following h323-ivr-in:
    
    Access-Accept {
            Cisco-AVPair = "h323-ivr-in=terminal-alias:it_s_me,48586259732;"
    }
    
    RCF will contain:
    
    RCF {
            m_terminalAlias = { "it_s_me", "48586259732" }
    }
    

    Example 3 (disable G.711 and G.729 codecs):

    Access-Accept {
            Cisco-AVPair = "h323-ivr-in=codec-disable:g711Ulaw64k;g729;g711Alaw64k;g729AnnexA;"
    }
    

    Example 4 (enable proxy mode):

    Access-Accept {
            Cisco-AVPair = "h323-ivr-in=proxy:yes"
    }
    

For ARQs, the following RADIUS attributes are recognized within Access-Accept packets:

  • VSA: VendorId=Cisco, h323-return-code

    If present and not 0, the request is rejected. This check is provided to allow interoperability with some poor billing systems, that send Access-Accept with non-zero h323-return-code to reject the call instead of Access-Reject. The attribute can be in form h323-return-code="1" or h323-return-code="h323-return-code=1". Note that the return code is a string, not an integer.

  • VSA: VendorId=Cisco, h323-billing-model

    Billing mode for this account. Can be 0 (credit), 1 or 2 (debit). If an endpoint can understand H.225.0 CallCreditServiceControl messages, this information is used to build the message.

  • VSA: VendorId=Cisco, h323-credit-amount

    A string representing current user account balance. If an endpoint can understand H.225.0 CallCreditServiceControl messages, this information is used to build the message.

  • VSA: VendorId=Cisco, h323-credit-time

    If present, it enforces maximum call duration (in seconds). The attribute can be in form of h323-credit-time="120" or h323-credit-time="h323-credit-time=120". Note that the return code is a string, not an integer.

  • Session-Timeout

    If present, it enforces maximum call duration (in seconds). This is a standard RADIUS attribute of integer type.

  • VSA: VendorId=Cisco, h323-redirect-ip-address

    If present, a call is sent to the IP address present in this attribute. You can put multiple destinations separated with a semicolon.

  • VSA: VendorId=Cisco, h323-redirect-number

    If present, a called station id is rewritten to this number. You can put multiple numbers separated by a semicolon. For each number you can also specify an outbound number (that is sent to a terminating gateway) by appending it with a '='.

NOTE: If both Session-Timeout and h323-credit-time are present, the smaller value is used.

NOTE: If multiple failover mechanisms are specified, eg. multiple numbers in h323-redirect-number and multiple IPs in h323-redirect-ip-address, there is no guarantee that the the first number is used for the first IP and the 2nd number for the 2nd IP. This will usually the case, but for example when a capacity limit disables one IP, the association will change.

7.8 Section [RadAliasAuth]

This section defines configuration settings that enable RADIUS authentication based on endpoint aliases and/or IP addresses present in a RRQ RAS, ARQ RAS or Q.931 Setup request. This authentication scheme is useful both for endpoints registered at the gatekeeper (ARQ, RRQ) and calls from unregistered endpoints (Setup).

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

    RADIUS servers to be used for RAS requests authentication. This list can contain an arbitrary number of servers. The order of servers is important, because servers will be queried by the RADIUS module in the given order. If no port information is specified, the port number from DefaultAuthPort will be used. If no secret is set, the default shared secret from SharedSecret is used. Servers can be IP addresses or DNS names.

    Example:

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

  • LocalInterface=IP_OR_FQDN
    Default: N/A

    Specific local network interface that GnuGk should use in order to communicate with RADIUS servers. This parameter can be useful on NAT machines to restrict number of network interfaces used for RADIUS communication. By default this value is empty and allows RADIUS requests to be sent on any (best suitable) network interface. If you are not sure what you are doing, it is better to leave this option unset.

  • RadiusPortRange=10000-11000
    Default: N/A

    By default (if this option is not set) RADIUS client allocates ports dynamically as specified by the operating system. If you want to restrict RADIUS client to use ports from a particular range only - set this parameter.

  • DefaultAuthPort=PORT_NO
    Default: 1812

    Default port number to be used for RADIUS authentication requests (Access-Request packets), if not overridden by Servers attribute.

  • SharedSecret=SECRET
    Default: N/A (empty string)

    Secret used to authenticate this GnuGk (NAS client) to RADIUS server. It should be a cryptographically strong password. This is the default value used, if no server-specific secret is set in the Servers. If EncryptAllPasswords is enabled, or a KeyFilled variable is defined in this section, the password is in encrypted form and should be created using the addpasswd utility.

  • RequestTimeout=TIMEOUT_MS
    Default: 2000 (milliseconds)

    Timeout (milliseconds) for RADIUS server response to a request sent by GnuGk. If no response is received within this time period, next RADIUS server is queried.

  • IdCacheTimeout=TIMEOUT_MS
    Default: 9000 (milliseconds)

    Timeout (milliseconds) for RADIUS request 8-bit identifiers to be unique. If all 8-bit identifier range is exhausted within this period, new client socket (UDP socket) is allocation by RADIUS module. Let's take the example: we have approximately 60 RRQs/sec - after ca. 4 seconds 8-bit identifiers range gets exhausted - new socket allocated - after next 4 seconds the second 8-bit identifiers range gets exhausted - third socket allocated - after 9th second identifiers from the pool 1 are available again - ... . In general, too long timeout - too much resources consumed, too short timeout - RADIUS server may take incoming packets as duplicated and therefore drop it.

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

    Timeout for unused RADIUS sockets to be closed. It is used in conjunction with IdCacheTimeout - additional sockets created during heavy gatekeeper load periods for serving incoming requests are closed during idle periods.

  • RequestRetransmissions=NUMBER
    Default: 2

    How many times a single RADIUS request is transmitted to every configured RADIUS server (if no response is received). 1 means no retransmission, 2 - single retransmission, ... . Exact retransmission method is defined by RoundRobinServers attribute.

  • RoundRobinServers=BOOLEAN
    Default: 1

    RADIUS requests retransmission method.

    If set to 1, RADIUS request is transmitted in the following way (until response is received):

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

    If set to 0, the following sequence is preserved:

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

  • AppendCiscoAttributes=BOOLEAN
    Default: 1

    If set, Cisco Vendor Specific RADIUS attributes are included in RADIUS requests (h323-conf-id,h323-call-origin,h323-call-type).

  • IncludeTerminalAliases=BOOLEAN
    Default: 1

    If set, Cisco VSA 'h323-ivr-out' attribute is sent with a list of aliases the endpoint is registering (RRQ.m_terminalAlias). This attribute is provided in order to provide fine control over the list of aliases the endpoint is allowed to register with. Format of this attribute is:

            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

    If this parameter is set, it overwrites a value of User-Name RADIUS attribute for outgoing RADIUS request. That means every Access-Request will be authenticated as for user FixedUsername.

  • FixedPassword
    Default: N/A

    If not set, User-Password is a copy of User-Name. For example, if User-Name is 'john' then User-Password will also be set to 'john'. Setting this parameter overrides this behavior and User-Password attribute will be always set to the value of FixedPassword. If EncryptAllPasswords is enabled, or a KeyFilled variable is defined in this section, the password is in encrypted form and should be created using the addpasswd utility.

    Example 1:

    (Neither FixedUsername nor FixedPassword set)
    
    All endpoints will be authenticated using their alias as the username and the password. That means, for example, endpoint 'EP1' will be authenticated with the username 'EP1 and the password 'EP1'.

    Example 2:

    (FixedUsername not set)
    FixedPassword=ppp
    
    All endpoints will be authenticated using their alias and the password 'ppp'.

    Example 3:

    FixedUsername=ppp
    FixedPassword=ppp
    
    All endpoints will be authenticated using the username 'ppp' and the password 'ppp'.

  • UseDialedNumber=BOOLEAN
    Default: 0

    Select Called-Station-Id number type between the original one (as dialed by the user) - UseDialedNumber=1 - and the rewritten one - UseDialedNumber=0.

[RadAliasAuth] Access-Request Radius Attributes

For RRQs, the same attributes as with RadAuth are sent, with an exception of username/password attributes (CHAP-Password, CHAP-Challenge, User-Name):

  • User-Name

    Either an endpoint alias from RRQ or a value of FixedUsername config parameter. If no alias is present, an IP address is used

  • User-Password

    Either the same as User-Name or a value of FixedPassword config parameter

For ARQ and Setup messages, the same attributes as with RadAuth are sent, with an exception of username/password attributes (CHAP-Password, CHAP-Challenge, User-Name):

  • User-Name

    Either an endpoint alias or a value of FixedUsername config parameter

  • User-Password

    Either the same as User-Name or a value of FixedPassword config parameter

[RadAliasAuth] Access-Accept Radius Attributes

Exactly the same attributes are recognized as with RadAuth module.

7.9 Section [CapacityControl]

This section contains a set of rules for controlling inbound call volume depending on various conditions. In order for this module to work, CapacityControl authentication and accounting modules have to be enabled like this:

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

A capacity rule can be matched by a caller's IP, caller's H.323 ID and/or caller's number (CLI) - in the order specified. In addition, the match can be narrowed by specifying a called number pattern. This module works by keeping lists of current call volume for each inbound route (rule) - this is done by having CapacityControl accounting module configured to add/remove active calls from matching routes. The CapacityControl authentication module checks rules and accepts/rejects a call based on current/max call volume for a matching inbound route.

Format for an inbound route rule:

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

ip:, h323id: and cli: prefixes define rule type. An inbound call will be matched either by caller's IP, H.323ID or CLI. The optional CALLED NUMBER REGEX PATTERN is a regular expression that the called number should match to apply this rule to. MAX_CAPACITY is maximum number of active calls for this route.

The rules are match in the following order:

  • IP rules
  • H.323ID rules
  • CLI rules

The longest match in the first matching category is used.

Example 1:

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

These rules tell that the 192.168.1.0/24 subnet can send up to 30 concurrent calls, while all other IPs can send up to 120 concurrent calls.

Example 2:

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

These rules limit caller with CLI 1001 to send up to 5 calls to 4850/4851 destinations and up to 30 calls to other destinations. %r1% and %r2% are special constructs to allow having the same cli:1001 config key more than once.

7.10 Section [GkH350::Settings]

WARNING: This is an experimental feature and not tested very well.

This section defines the LDAP server and standard H.350 directory operating parameters to be used.

  • ServerName
    Default: 127.0.0.1

    The LDAP server IP address.

  • ServerPort
    Default: 389

    The LDAP server's TCP port (usually 389).

  • SearchBaseDN
    Default: N/A

    Entry point into the server's H.350 directory structure. Searches are only made below this root node.

  • BindUserDN
    Default: N/A

    The distinguished name the gatekeeper uses to bind to the LDAP server. Leave empty if you want to access the LDAP server anonymously.

  • BindUserPW
    Default: N/A

    If you specified BindUserDN, then specify the corresponding password to be used for binding here. If EncryptAllPasswords is enabled, or a KeyFilled variable is defined in this section, the password is in an encrypted form and should be created using the addpasswd utility.

  • BindAuthMode
    Default: simple

    Bind Authentication method choices are simple,sasl,kerberos

  • ServiceControl=BOOLEAN
    Default: 0

    Use RRQ/RCF service control field to advise an endpoint of the H.350 directory and searchDN to use for white page lookups.

  • AssignedAliases=BOOLEAN
    Default: 0

    Use H.350.1 to advise endpoints of their assigned aliases.

  • GatekeeperDiscovery=BOOLEAN
    Default: 0

    Use H.350.1 to resolve on GRQ/GCF the registering endpoints assigned gatekeeper (h323IdentityGKDomain).


Page suivante Page précédente Table des matières

Chapitres: Contenu · Introduction · Installation · Pour commencer · Config basique · Routage · Config RAS · Authentification · Accounting · Voisins · Config par terminal · Config avancée · Surveillance



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