"política":[]

Esta seção é opcional. Permite a adição condicional de atributos ao pacote de resposta Access-Accept enviado pelo servidor RADIUS IBM aos clientes RADIUS (NAS). Além disso, permite a aceitação ou rejeição imediata e condicional de um pedido de autorização de acesso. As políticas são avaliadas na ordem em que são definidas.

Formato

“policy”:[
  {
    “name”:”policy1”,
    “match”:{
      “client-ip”:”???”,
      “attr”:{
        “compare”:”??”,
        “name”:”???”,
         …
      },
      “user-group”:{
        “compare”:”??”,
        “name”: “???”
      },
      “apply-before-authenticate”:????
    },
    “return-attrs”:[
      {
        “name”:”???”,
        “value”:”???”,
        …
      },
      …
    ],
    “action”:”???”,
  },
  {
    “name”:”policy2”,
    …
  },
  …
]

Values

"match":{}
Esta subseção é opcional e, caso não esteja presente, a política corresponderá a todos os pacotes Access-Request.

Nessa seção, há os seguintes subitens:

"client-ip":"192.168.0.129"
Corresponde ao endereço do cliente RADIUS (NAS) que enviou o pacote.
"apply-before-authenticate":"false"
Desaprovado. Assume false como padrão. Se true, a política será correspondida e aplicada antes da validação da senha do usuário ou do OTP. Isso equivale a "apply": "before_mfa".
"apply": "before-mfa" | "after-mfa-success" | "after-pwd-success" | "before-each-response"
Esta opção é preferível à opção de configuração obsoleta "apply-before-authenticate" .
"before-mfa"
A política verifica isso antes de validar o 1FA (senha) ou o 2FA.
"after-mfa-success"
A política é aplicada após a validação bem-sucedida de 2FA.
"after-pwd-success"
A política é aplicada após a validação bem-sucedida de " 1FA " (senha), antes de " 2FA ".
"before-each-response"
A política verifica isso antes de enviar cada resposta.
Exemplos de uso "apply" em políticas podem ser:
  1. Para ignorar a regra " 2FA " para qualquer usuário do grupo chamado "risky":
     {
                "name": "risk_policy",
                "match": {
                    "apply": "after-pwd-success",
                    "user-group": { "compare": "=", "name": "risky" }
                },
                "return-attrs":[
                    {
                        "name": "Reply-Message",
                        "value": "Success: Bypassed 2FA"
                    }
                ],
                "action": "accept"
            }, 
  2. Para configurar um proxy RADIUS entre o cliente/NAS e o servidor RADIUS, de modo que o atributo Proxy-State recebido pelo servidor RADIUS seja reenviado ao proxy RADIUS:
     {
                "name":"proxy_policy",
                "match":{
                    "apply": "before-each-response"
                },
                "return-attrs":[
                    {
                        "name":"Proxy-State",
                        "value":"{{reflect}}",
                        "value-type":"text"
                    }
                ],
                "action":"continue"
            } 
"attr":{}

Esta seção permite a correspondência de um único valor de atributos no Access-Request. Nessa seção, há os seguintes subitens:

"compare":"="
O valor padrão é "=". Este item deve ser ou "=" "!=".
"case-ignore":false
Assume false como padrão. Os valores são comparados com base em uma comparação byte a byte em relação ao valor do atributo RADIUS. A exceção é quando "case-ignore" é configurado como true. Para esse caso, é feita uma comparação de sequência de caracteres sem distinção entre maiúsculas e minúsculas de UTF-8, o que pode ser útil para a comparação do valor do atributo "User-Name".
"regex":false
Padronizado como false. Quando definido como true , o "valor" é interpretado como uma expressão regular estendida ao corresponder ao valor do atributo. Por exemplo,
"value": ".*ibm\\.com"
corresponde a qualquer valor que termine com ibm.com , como testibm.com. Para obter uma definição de expressões regulares estendidas, consulte https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html,
"name":"User-Name"

O atributo em Access-Request ao qual fazer a comparação. Esse valor pode ser uma sequência, como um nome para o atributo RADIUS, ou o número do atributo. Por exemplo, o nome de usuário é o número 1. Consulte a saída do IbmRadius.exe -attributes comando para obter uma lista dos atributos RADIUS.

"value":"Administrator"
O valor de atributo com o qual fazer a comparação. Consulte a tabela "value-type" a seguir para obter o formato JSON do valor. O tipo de valor padrão do atributo depende do próprio atributo. A saída do comando
"IbmRadius.exe
      -attributes"
mostra o tipo de valor de cada atributo RADIUS.
"value-type":"text"
Substitui a forma de conversão de “value” em um valor de atributo RADIUS. O padrão depende do atributo RADIUS, uma vez que cada um tem seu próprio tipo de valor padrão. Consulte a saída do comando IbmRadius.exe -attributes para er o tipo de valor de cada atributo RADIUS. Esse parâmetro permite a substituição do tipo para facilitar a entrada. Por exemplo, uma sequência de caracteres de texto pode ser colocada em um atributo de sequência binária.
Tabela 1. Mapeamento de valores
Nome Formato de valor JSON Valor de RADIUS
número inteiro
  • número: por exemplo, 1234.
  • string: número hexadecimal, por exemplo "0xa2b3ff".
4 bytes, MSB primeiro
enum
  • string: sequência de nomes de enumeração adequada para o atributo. Por exemplo, "Login" para o atributo "Service-Type". Consulte a saída do comando IbmRadius.exe -attributes para obter uma lista de sequências de valores numéricos aceitáveis.
  • número: por exemplo, 5.
4 bytes, MSB primeiro
horário
  • number: número de segundos desde 1970-01-01 00:00:00 UTC
  • string: "YYYYMMDDHHMMSS" UTC
4 bytes, MSB primeiro
Texto
  • string: caracteres UTF-8
Bytes UTF-8 não terminados por 0x00
integer64
  • number: por exemplo, 12345
  • string: número hexadecimal, por exemplo."0xdeadbeaf"
8 bytes, MSB primeiro
ipv4addr
  • string: uma string formatada com o sintaxe IPv4, por exemplo. ,"192.168.0.1"
4 bytes, ordem de rede, MSB primeiro
ipv6addr
  • string: uma string formatada com o sintaxe IPv6, por exemplo. "192.168.0.fe80::df3c:99dd:8a4a:16f1"
8 bytes, ordem de rede, MSB primeiro

sequência

ifid

ipv6prefix

ipv4prefix

tlv

vsa

extended

long_extended

evs

  • sequência: dados binários codificados em Base64.
Bytes.
Observação: o formato varia de acordo com cada tipo; consulte os RFCs do RADIUS.
"user-group":{}
Esta seção permite a correspondência de um único grupo com a lista de grupos aos quais um usuário pertence. Este parâmetro só pode ser usado quando "apply-before-authenticate" == false. Nessa seção, há os seguintes subitens:
compare":"="

Padronizado como "=". "=" Este item deve ser ou "!=".

"name":"{{group-name}}"
O grupo indicado "{{group-name}}" é comparado com as associações do usuário a grupos.
"return-attrs":[]
Se isso não estiver presente, nenhum atributo será adicionado ao pacote RADIUS retornado. Os "return-attrs" serão incluídos apenas se a correspondência de política for true.
Cada elemento da matriz "return-attrs" é formatado:
{
  "name":"xxxx",
  "value":"xxxx",
  "value-type":"xxxx"
},
As descrições de "name", "value" e "value-type" estão definidas na seção anterior "match":{} > "attr":{}. Uma exceção é que "value" pode ser um dos atributos a seguir.
  • "{{group-name}}" : insira o atributo várias vezes, uma vez para cada grupo ao qual o usuário pertence.
  • "{{group-list}}" : insira o atributo uma vez, com todos os grupos aos quais o usuário pertence, separados por vírgulas.
Em ambas as exceções, o "value-type" é forçado a "text".
Um "valor" de "{{group-name:vsa:<vendorid>:<vendortype>}}" pode ser usado para adicionar cada grupo como um Atributo Específico do Fornecedor (VSA). O tipo de valor padrão do VSA (binário) deve ser substituído para que a string de formatação seja interpretada como texto. Substitua <vendorid> pelo ID do fornecedor, expresso como um número decimal, e substitua o <vendortype> pelo tipo de valor do fornecedor, expresso como um número decimal. Por exemplo,
     "return-attrs":[
        {
            "name": "Vendor-Specific",
            "value": "{{group-name:vsa:12356:1}}",
            "value-type": "text"
        }
     ],

Um "valor" de "{{reflect}}" copia o valor da solicitação com o mesmo nome para a resposta. Normalmente, é usado para retornar o valor do Proxy-State que foi recebido. Além disso, especifique a "value-type": "text" configuração desse atributo.

"action":"continue"
Padronizado como "continue". "action" se aplica apenas se a correspondência de política for true. O item "action" pode ser um destes três valores:
  • "continue": inclua qualquer "return-attrs" e continue com o processamento.
  • "reject": inclua qualquer "return-attrs" , envie de volta um pacote RADIUS Access-Reject e termine o processamento dessa solicitação do cliente RADIUS (NAS).
  • "accept": inclua qualquer "return-attrs" , envie de volta um pacote RADIUS Access-Accept e termine o processamento dessa solicitação do cliente RADIUS (NAS).