# Reglas del ITDR

> Decide en el Ruleset del ITDR qué es una amenaza, cuánto riesgo suma, si deniega el acceso o bloquea al usuario y a quién avisa, y pruébalo antes de guardar.

URL: https://docs.ironchip.com/identidad/administracion/itdr-reglas/

En **ITDR > Ruleset** decides qué cuenta como amenaza para tu compañía, cuánto pesa y qué hace el [ITDR](https://docs.ironchip.com/identidad/administracion/itdr/) cuando la encuentra. Esta página es para quien administra la consola: explica cómo funcionan las reglas, cómo añadirlas y editarlas, los ajustes del conjunto y cómo probarlo antes de guardarlo.

## Antes de empezar

- El ITDR tiene que estar activado en tu compañía. Con el plan Basic, la página muestra **Your license doesn't provide ITDR** y el botón **Go to billing**.
- Para ver las reglas necesitas el permiso **Read** sobre el recurso **ITDR**, y para guardar cambios, **Update**. Consulta [Roles y permisos](https://docs.ironchip.com/identidad/administracion/permisos/).

## Cómo funcionan las reglas

Cada regla tiene unas condiciones, un riesgo de 0 a 100 y, si quieres, una o dos acciones:

- **Deny the access**: deniega el acceso que se está intentando en ese momento.
- **Lock the user**: bloquea la cuenta del usuario, que pierde el acceso a todos los servicios hasta que un administrador lo desbloquee. Consulta [Bloquear o desbloquear a un usuario](https://docs.ironchip.com/identidad/administracion/itdr/#bloquear-o-desbloquear-a-un-usuario).

En cada intento de autenticación, el ITDR comprueba todas las reglas activas:

- Cada regla que se cumple queda escrita en el informe del intento (**Applied rules**), aunque su riesgo sea 0 y no tenga acciones. Las reglas de riesgo 0 sirven para dar contexto, por ejemplo que el dispositivo es conocido.
- El intento toma el riesgo más alto de las reglas que se cumplen, nunca la suma. Ese riesgo decide el nivel: **Clear**, **Low**, **High** o **Fraud**.
- Si alguna de las reglas que se cumplen pide **Deny the access**, se deniega el acceso. Si alguna pide **Lock the user**, se bloquea al usuario.

Las reglas son de toda la compañía (**Company-wide**): no se asignan a grupos ni a aplicaciones.

## La página Ruleset

Ve a **ITDR > Ruleset**. La página **ITDR - Ruleset** tiene:

- Arriba, el número de reglas activas (por ejemplo, **9 of 9 rules active**), la etiqueta **Company-wide** y, si hay cambios sin guardar, **Unsaved changes**.
- Los botones **Settings** (ajustes del conjunto), **Test ruleset** (probar), **Discard** (descartar los cambios) y **Save changes** (guardar). **Discard** y **Save changes** solo se activan cuando hay cambios.
- La tabla de reglas, con el buscador **Search rules**, el botón **Add detection** y las columnas:
  - **Status**: activa o en pausa.
  - **Rule**: el nombre. Las reglas que aún no has guardado llevan la etiqueta **new**.
  - **Detects**: las condiciones, escritas como una frase.
  - **Risk**: el nivel y el riesgo de la regla, por ejemplo **High 50**.
  - **Action**: un icono si la regla deniega el acceso (**Denies the access**) o bloquea al usuario (**Locks the user**), o **—** si no hace ninguna de las dos cosas.
  - **Manage**: el menú **Options**, con **Activate / pause**, **Duplicate** y **Delete rule**.
- A la derecha, el editor de la regla que selecciones.

[Imagen: Página ITDR - Ruleset con la tabla de reglas y una regla seleccionada en el editor de la derecha]

**Duplicate** crea una copia en pausa con el nombre `<nombre> (copy)`. **Delete rule** quita la regla al guardar; hasta entonces puedes recuperarla con **Discard**.

## Reglas por defecto

Una compañía que nunca ha configurado sus reglas empieza con este conjunto:

| Regla                               | Condición                                                                                         | Riesgo    | Acción              |
| ----------------------------------- | ------------------------------------------------------------------------------------------------- | --------- | ------------------- |
| **Malware on the phone**            | **No known malware installed** is false                                                           | High 50   | —                   |
| **Tor network**                     | **Tor exit node** is true                                                                         | Fraud 100 | **Deny the access** |
| **IPs in different countries**      | **Both IPs in the same country** is false                                                         | High 50   | **Deny the access** |
| **VPN network**                     | **VPN, proxy, relay or hosting** is true                                                          | Low 10    | **Deny the access** |
| **Tampered device**                 | **Rooted or jailbroken** is true                                                                  | Fraud 100 | —                   |
| **Known device**                    | **First time on this device** is false                                                            | Clear 0   | —                   |
| **Habitual location**               | **The attempt uses the phone app** is true y **Transactions from this location** is at least `10` | Clear 0   | —                   |
| **On a phone call**                 | **On a phone call** is true                                                                       | High 50   | —                   |
| **Location tampering: gps spoofed** | **GPS spoofed** is true                                                                           | Fraud 100 | **Deny the access** |

Ninguna de estas reglas bloquea al usuario. El conjunto por defecto empieza también con los umbrales `10`, `30` y `70`, el aviso por correo activado solo para **Fraud** y dirigido al grupo **Ironchip Administrators**, y sin zona horaria (UTC). Puedes cambiar, pausar o borrar cualquiera de estas reglas.

## Añadir una detección

La consola no tiene un botón para crear una regla en blanco: las reglas nuevas salen del catálogo de detecciones o de duplicar una regla. Para crear una regla a tu medida, añade la detección más parecida y cambia sus condiciones en el editor.

1. Haz clic en **Add detection**. Se abre **Add a detection**.
2. Busca en **Search detections** o filtra por grupo: **All**, **Time**, **Network & IP**, **Device**, **Location & GPS**, **User history** o **SIM & carrier**. Cada tarjeta muestra qué detecta, su riesgo (**Risk 50**) y si deniega el acceso (**Risk 100 · denies the access**).
3. Si la tarjeta tiene un control deslizante, ajusta el valor, por ejemplo la distancia.
4. Haz clic en **Add**. La consola confirma con **Detection added** y la regla aparece arriba de la tabla, activa y con la etiqueta **new**.

   [Imagen: Ventana Add a detection con los filtros por grupo y las tarjetas de detección]

5. Revisa la regla en el editor y haz clic en **Save changes**.

Estas son las detecciones del catálogo:

| Detección                        | Grupo          | Condición                                                                     | Riesgo | Acción              |
| -------------------------------- | -------------- | ----------------------------------------------------------------------------- | ------ | ------------------- |
| **Impossible travel**            | Network & IP   | **Distance between IPs** is greater than `500` km (de 50 a 5000 km)           | 70     | —                   |
| **Phone far from the session**   | Location & GPS | **Distance browser / phone** is greater than `100` km (de 10 a 2000 km)       | 50     | —                   |
| **Shared phone**                 | Device         | **Users on this device** is greater than `1` (de 1 a 20)                      | 30     | —                   |
| **New identities on one phone**  | Device         | **New users on this device recently** is at least `2` (de 1 a 20)             | 70     | —                   |
| **Malware on the phone**         | Device         | **No known malware installed** is false                                       | 100    | **Deny the access** |
| **SIM roaming abroad**           | SIM & carrier  | **SIM roaming** is true                                                       | 30     | —                   |
| **New SIM for this user**        | SIM & carrier  | **First time with this SIM** is true                                          | 30     | —                   |
| **Outdated location**            | Location & GPS | **GPS fix age** is greater than `300` s (de 30 a 3600 s)                      | 10     | —                   |
| **Imprecise location**           | Location & GPS | **GPS accuracy** is greater than `1000` m (de 100 a 10000 m)                  | 10     | —                   |
| **First time from this place**   | Location & GPS | **First time from this location** is true                                     | 10     | —                   |
| **Far from the usual place**     | Location & GPS | **Distance to the usual location** is greater than `200` km (de 10 a 5000 km) | 30     | —                   |
| **Many users at one place**      | Location & GPS | **Users at this location** is greater than `5` (de 1 a 100)                   | 30     | —                   |
| **Connection from a datacenter** | Network & IP   | **App IP is a hosting provider** is true                                      | 50     | —                   |
| **New operator for this user**   | Network & IP   | **First time on this ISP** is true                                            | 10     | —                   |
| **Brand new user**               | User history   | **New user** is true                                                          | 10     | —                   |

Para detectar accesos fuera del horario de la compañía, consulta [Horario laboral y zona horaria](#horario-laboral-y-zona-horaria).

## Editar una regla

Haz clic en una regla de la tabla para abrirla en el editor de la derecha:

- El interruptor de estado (**Active** o **Paused**) y **Delete**.
- **Name**: el nombre de la regla. Es obligatorio.
- **DETECTS WHEN**: la frase que resume la regla y, debajo, sus condiciones (consulta [Condiciones](#condiciones)).
- **THEN**, lo que pasa cuando se cumple:
  - **Risk it adds**: el riesgo, de 0 a 100 en pasos de 5. A 0, la regla aparece en el informe pero no sube la puntuación.
  - **Deny the access**: deniega el acceso en curso.
  - **Lock the user**: bloquea la cuenta del usuario hasta que alguien la revise y la desbloquee.
- **REPORT**, cómo aparece en el informe:
  - **Category**: **Tampering**, **Account takeover**, **Money laundering**, **New account fraud** o **Shared intelligence**.
  - **Label in the report**: el nombre corto del caso en el informe, por ejemplo `impossible travel`. Si lo dejas vacío, se usa el nombre de la regla.
  - **What the analyst reads**: la explicación que aparece en el informe cuando la regla se cumple.

Mientras una regla está en pausa, solo puedes cambiar su estado, su nombre o borrarla. Los cambios no se aplican hasta que haces clic en **Save changes** (consulta [Guardar los cambios](#guardar-los-cambios)).

### Condiciones

Las condiciones de una regla se combinan con **Match all of the following** (se tienen que cumplir todas) o **Match any of the following** (basta con una). Las filas empiezan por **when** y después por **and** o por **or**, según lo que hayas elegido.

1. En **DETECTS WHEN**, elige **all** o **any**.
2. Haz clic en **+ Condition** y elige el campo, el operador y el valor. La consola muestra la unidad del campo (km, s, m) y, en el icono de información, qué mide.
3. Para mezclar las dos formas de combinar, haz clic en **+ Group**. Un grupo nuevo empieza con la combinación contraria a la de su grupo padre: dentro de una regla **all**, un grupo **any**, y al revés. Puedes anidar hasta dos niveles de grupos.
4. Para quitar una condición, haz clic en su X (**Remove condition**).

[Imagen: Editor de una regla con dos condiciones y un grupo anidado de tipo any]

Por ejemplo, para detectar un dispositivo nuevo que se conecta por Tor o por una VPN:

- **Match all of the following**
  - **when** **First time on this device** is true
  - **and** un grupo **Match any of the following**:
    - **when** **Tor exit node** is true
    - **or** **VPN, proxy, relay or hosting** is true

Un grupo sin condiciones muestra **No conditions — this rule never matches.**: una regla así no salta nunca.

### Operadores

| Tipo de campo                        | Operadores                                                                                 |
| ------------------------------------ | ------------------------------------------------------------------------------------------ |
| Sí o no                              | **is true**, **is false**                                                                  |
| Número                               | **is greater than**, **is at least**, **is less than**, **is at most**, **is**, **is not** |
| Texto (países, sistema operativo)    | **is**, **is not**                                                                         |
| **Working hours**, **Valid between** | **is within**                                                                              |

En los campos de texto, escribe el valor tal como lo recoge el ITDR: los países con su código ISO en mayúsculas (`ES`, `FR`) y el sistema operativo en minúsculas (`android`, `ios`).

### Campos

El selector de campos los agrupa por tipo de señal.

**Time**

| Campo                     | Qué indica                                                                                                        |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Working hours**         | Si el intento cae dentro de unos días y unas horas (consulta [Horario laboral](#horario-laboral-y-zona-horaria)). |
| **Day of the month**      | El día del mes. Útil en fechas de nómina o de cierre de mes.                                                      |
| **Valid between**         | Si el intento cae dentro de una ventana de fechas (**From** y **To**). Necesita las dos fechas.                   |
| **Day of the week**       | El día de la semana como número: `1` es lunes y `7`, domingo.                                                     |
| **Time of day**           | La hora del intento en minutos desde medianoche: `480` son las 08:00.                                             |
| **Moment of the attempt** | El momento del intento en segundos Unix.                                                                          |

**Network & IP**

| Campo                                  | Qué indica                                                                                      |
| -------------------------------------- | ----------------------------------------------------------------------------------------------- |
| **Tor exit node**                      | La IP del navegador o la del teléfono es de la red Tor.                                         |
| **VPN, proxy, relay or hosting**       | Alguna de las dos IP es una VPN, un proxy, un relay o un proveedor de hosting.                  |
| **Both IPs in the same country**       | Las IP del navegador y del teléfono están en el mismo país.                                     |
| **Distance between IPs**               | La distancia en km entre las ubicaciones de las dos IP. Vale `-1` si alguna no se puede ubicar. |
| **App IP is a VPN**                    | La IP del teléfono es una VPN.                                                                  |
| **Browser IP is a VPN**                | La IP del navegador es una VPN.                                                                 |
| **App IP is a hosting provider**       | La IP del teléfono es de un centro de datos y no de una red doméstica o móvil.                  |
| **The phone connects through a proxy** | La IP del teléfono es un proxy.                                                                 |
| **App IP country**                     | El país de la IP del teléfono (código ISO).                                                     |
| **Browser IP country**                 | El país de la IP del navegador (código ISO).                                                    |
| **App IP operator (ASN name)**         | El nombre del operador (sistema autónomo) de la IP del teléfono.                                |
| **First time on this ISP**             | El usuario nunca se había conectado con este operador.                                          |

**Device**

| Campo                                 | Qué indica                                                                                                        |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Rooted or jailbroken**              | El teléfono tiene root o jailbreak. El ITDR también lo marca si la app corre en un emulador o tiene un depurador. |
| **Running on an emulator**            | La app se ejecuta en un emulador y no en un teléfono real.                                                        |
| **Debugger attached**                 | La app tiene un depurador conectado.                                                                              |
| **On a phone call**                   | El usuario está en una llamada mientras autoriza.                                                                 |
| **Operating system**                  | El sistema operativo del teléfono.                                                                                |
| **First time on this device**         | El usuario no había usado este dispositivo antes.                                                                 |
| **Users on this device**              | Cuántos usuarios distintos se han autenticado desde este dispositivo.                                             |
| **New users on this device recently** | Cuántas identidades se han visto por primera vez en este dispositivo en los últimos tiempos.                      |
| **Transactions from this device**     | Cuántos intentos ha hecho este usuario desde este dispositivo.                                                    |
| **No known malware installed**        | Ninguna app instalada coincide con la base de datos de malware.                                                   |

**Location & GPS**

| Campo                                | Qué indica                                                                                                           |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------- |
| **GPS spoofed**                      | Alguno de los detectores de falsificación del GPS (el de wifi o el electromagnético) ha saltado.                     |
| **GPS contradicted by wifi**         | Solo el detector de wifi.                                                                                            |
| **GPS contradicted by EM consensus** | Solo el detector electromagnético.                                                                                   |
| **GPS fix age**                      | La antigüedad en segundos de la lectura GPS. Vale `-1` si no se conoce.                                              |
| **GPS accuracy**                     | La precisión horizontal en metros que declara el teléfono. Exactamente `100` es un valor por defecto, no una medida. |
| **Distance browser / phone**         | La distancia en km entre el navegador y el teléfono que autoriza. Vale `-1` si alguno no tiene ubicación.            |
| **Transactions from this location**  | Cuántos intentos ha hecho el usuario desde este lugar.                                                               |
| **First time from this location**    | El usuario nunca había operado desde este lugar.                                                                     |
| **Distance to the usual location**   | La distancia en km a donde el usuario suele operar.                                                                  |
| **Users at this location**           | Cuántas identidades operan desde este lugar.                                                                         |
| **Location country**                 | El país de la ubicación (código ISO).                                                                                |
| **Anonymised connection**            | La ubicación solo se ha podido resolver a través de una conexión anonimizada.                                        |

**User history**

| Campo                              | Qué indica                                  |
| ---------------------------------- | ------------------------------------------- |
| **New user**                       | Es el primer intento de esta identidad.     |
| **Transactions by this user**      | Cuántos intentos ha hecho la identidad.     |
| **The attempt uses the phone app** | El intento se hace con la app del teléfono. |
| **The attempt uses a browser**     | El intento se hace desde un navegador.      |

**SIM & carrier**

| Campo                        | Qué indica                                            |
| ---------------------------- | ----------------------------------------------------- |
| **SIM roaming**              | La SIM está fuera de su país.                         |
| **SIM home country**         | El país al que pertenece la SIM (código ISO).         |
| **SIM current country**      | El país en el que está conectada la SIM (código ISO). |
| **First time with this SIM** | El usuario nunca se había autenticado con esta SIM.   |

## Horario laboral y zona horaria

Las condiciones de tiempo (**Working hours**, **Day of the month**, **Day of the week** y **Time of day**) se calculan en la zona horaria de la compañía, que eliges en **Settings > Company time zone**. Si no la eliges, se usa UTC y una regla de horario saltará a horas equivocadas.

Una condición **Working hours** lleva los días (de **Mon** a **Sun**) y una hora de inicio y otra de fin; al añadirla, la consola propone de lunes a viernes, de 08:00 a 20:00. Ten en cuenta que:

- La hora de inicio cuenta y la de fin no: de 08:00 a 20:00 cubre hasta las 19:59.
- Tienes que marcar al menos un día.
- Un horario que cruza la medianoche, por ejemplo de 22:00 a 06:00, no se cumple nunca. Para un turno de noche, usa dos condiciones bajo **Match any of the following**: una de 22:00 a 23:59 y otra de 00:00 a 06:00.

Para detectar accesos fuera de un horario de lunes a viernes de 08:00 a 20:00, crea una regla con **Match any of the following** y tres condiciones **Working hours** is within:

- de **Mon** a **Fri**, de 00:00 a 08:00;
- de **Mon** a **Fri**, de 20:00 a 23:59;
- **Sat** y **Sun**, de 00:00 a 23:59.

Como la hora de fin no cuenta, el minuto de las 23:59 queda fuera de estas condiciones.

## Ajustes del conjunto de reglas

Haz clic en **Settings** para abrir **Ruleset settings**. Los cambios de esta ventana pasan al borrador, como los de las reglas: guárdalos con **Save changes**.

[Imagen: Ventana Ruleset settings con Risk thresholds, Enforcement, Company time zone y Notifications]

### Umbrales de riesgo

**Risk thresholds** reparte la escala de 0 a 100 entre los cuatro niveles con tres marcadores, en pasos de 5. La leyenda indica dónde empieza cada nivel (**Clear below 10**, **Low from 10**, **High from 30**, **Fraud from 70** con los valores por defecto). Si guardas los tres a 0, se restauran los valores por defecto: `10`, `30` y `70`.

Las vistas **Realtime feed**, **Threat analysis** y el informe usan sus propios cortes fijos para mostrar el nivel. Consulta [Niveles de riesgo](https://docs.ironchip.com/identidad/administracion/itdr/#niveles-de-riesgo).

### Enforcement

Son los interruptores generales de las acciones:

- **Block authorization**: activa las reglas que piden **Deny the access**. Debajo, la consola indica cuántas hay (**Rules asking to deny the access: N**).
- **Block user**: activa las reglas que piden **Lock the user** (**Rules asking to lock the account: N**).

Mientras un interruptor está apagado, las reglas que piden esa acción no la aplican, aunque siguen sumando riesgo y apareciendo en el informe. El editor de cada regla lo avisa con **Blocking is turned off for the whole ruleset.** o **Locking is turned off for the whole ruleset.**

### Company time zone

La zona horaria en la que se leen las condiciones de tiempo. Elígela de la lista, por ejemplo `Europe/Madrid`. Si la dejas vacía, la consola avisa de que las horas se leen en UTC. Es el único ajuste de zona horaria de la compañía en la consola: el resto de fechas de la consola se muestran en la zona horaria de tu navegador.

### Notifications

Decide quién recibe un correo cuando el ITDR marca un intento:

- **Email a security contact**: activa o desactiva el aviso. Viene activado.
- **Send it for**: desde qué nivel se avisa: **Only fraud** (por defecto), **High risk and above**, **Low risk and above** o **Anything, even when nothing is flagged**, que envía un correo por cada intento evaluado.
- **Groups**: busca y añade grupos de la compañía.
- **People**: busca y añade usuarios por su correo.
- **Other addresses**: buzones que no son usuarios de la plataforma, como `seguridad@example.com`. Escribe la dirección y pulsa Intro; lo que no es una dirección válida se descarta.

Si no eliges a nadie, el aviso va al grupo **Ironchip Administrators**. A cada usuario de los grupos y personas elegidos le llega a su correo y, si lo tiene, a su correo externo, sin duplicados. El correo se envía en el idioma de la compañía.

## Probar las reglas

Antes de guardar, comprueba qué veredicto da tu conjunto de reglas a un intento concreto:

1. Haz clic en **Test ruleset**. Se abre **Test your ruleset**.
2. En **Transaction**, describe el intento. La ventana muestra un campo por cada dato que leen las reglas activas: un interruptor, un número, un texto, un día y una hora, o una fecha.
3. Revisa el resultado:
   - la puntuación sobre 100 y el nivel;
   - **Authorization blocked** o **Authorization allowed**, y **User blocked** si se bloquearía al usuario;
   - **Matching rules**: las reglas que se cumplen, con su riesgo o **clear**, y **block** si piden bloquear;
   - **Report cases**: los casos que irían al informe.

   [Imagen: Ventana Test your ruleset con un intento descrito y las reglas que se cumplen]

4. Para volver a los valores iniciales, haz clic en **Reset**.

Si ninguna regla se cumple, la ventana muestra **Nothing matches — the transaction goes through unflagged.** La prueba usa el borrador, con los cambios sin guardar, y no crea informes ni afecta a ningún usuario.

## Guardar los cambios

Todo lo que cambias en la página (reglas y ajustes) es un borrador hasta que haces clic en **Save changes**. Mientras tanto, la página muestra **Unsaved changes**. Si cambias de página dentro de la consola, el borrador sigue ahí al volver.

- **Save changes** guarda el conjunto completo y muestra **Ruleset updated**. El motor de detección aplica los cambios en menos de un minuto y solo a los intentos nuevos: no hay que desplegar nada y los intentos en curso no se vuelven a evaluar.
- **Discard** descarta el borrador después de confirmar en **Discard changes**.
- Si otro administrador ha guardado mientras editabas, la consola muestra **Someone else changed the ruleset**. Haz clic en **Reload** para cargar sus reglas y vuelve a aplicar tus cambios.
- Si alguna regla no es válida, la consola muestra el motivo y no guarda nada, ni siquiera las reglas correctas.

## Límites

- Hasta 200 reglas por compañía.
- Cada regla necesita un nombre, un riesgo de 0 a 100 y al menos una condición.
- Una regla no puede desplegarse en más de 64 combinaciones de condiciones (cada grupo **any** dentro de un grupo **all** multiplica las combinaciones). Si la regla no se guarda por eso, divídela en dos.
- **Working hours** necesita al menos un día, y **Working hours** y **Valid between** necesitan las dos horas o fechas.
- La zona horaria tiene que ser un nombre válido, como `Europe/Madrid`.
- En **Notifications**, hasta 100 grupos, 100 personas y 100 direcciones.
