Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Antecedentes

Configurar

Verificación

Introducción

Este documento describe cómo configurar y validar una regla de control de acceso basado en tiempo con API Rest en el FTD administrado por FDM.

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- Firepower Threat Defense (FTD)

- Administración de dispositivos Firepower (FDM)

- Conocimiento de la interfaz de programación de aplicaciones de transferencia de estado representacional (API REST)

- Lista de control de acceso (ACL)

Componentes Utilizados

La información de este documento se basa en la versión 7.1.0 del FTD.

La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.

Antecedentes

La versión 6.6.0 y posteriores de la API de FTD admiten reglas de control de acceso que están limitadas en función del tiempo.

Mediante la API de FTD, puede crear objetos de rango de tiempo, que especifican rangos de tiempo únicos o recurrentes, y aplicar estos objetos a las reglas de control de acceso. Mediante el uso de intervalos de tiempo, puede aplicar una regla de control de acceso al tráfico durante determinadas horas del día o durante determinados períodos de tiempo, con el fin de proporcionar flexibilidad al uso de la red. No puede utilizar FDM para crear o aplicar rangos de tiempo, ni FDM muestra si una regla de control de acceso tiene un rango de tiempo aplicado.

Configurar

Paso 1. Haga clic en las opciones avanzadas (menú Kebab) para abrir el explorador de la API de FDM.

Imagen 1. Interfaz de usuario web de FDM.

Paso 2. Elija la categoría AccessPolicy para mostrar las diferentes llamadas de API.

Imagen 2. Interfaz de usuario web del Explorador de API.

Paso 3. Ejecute el GET para obtener el ID de política de acceso.

Imagen 3. Categoría de directiva de acceso.

Paso 4. Debes seguir adelante TRY IT OUT!  para recuperar la respuesta API.

Imagen 4. TRY IT OUT! que ejecuta la llamada API.

Paso 5. Copie el JSON datos del cuerpo de la respuesta a un bloc de notas. Posteriormente, debe utilizar el ID de política de control de acceso.

Imagen 5. Respuesta GET de política de acceso.

Paso 6. Busque y abra la categoría TimeRange en el Explorador de API para mostrar las diferentes llamadas de API.

Imagen 6. Categoría Intervalo de tiempo.

Paso 7. Cree tantos objetos TimeRange como desee mediante la llamada a la API POST.

Imagen 7. Intervalo de tiempo tras la llamada.

Encuentra aquí un par de JSON ejemplos de formato para crear dos objetos TimeRange diferentes.

Objeto 1:

{

"name": "range-obj-1",

"recurrenceList": [

{

"days": [

"MON",

"TUE",

"WED",

"THU",

"FRI"

],

"recurrenceType": "DAILY_INTERVAL",

"dailyStartTime": "00:00",

"dailyEndTime": "23:50",

"type": "recurrence"

}

],

"type": "timerangeobject"

}

Objeto 2:

{

"name": "range-obj-2",

"recurrenceList": [

{

"days": [

"MON"

],

"recurrenceType": "DAILY_INTERVAL",

"dailyStartTime": "12:00",

"dailyEndTime": "13:00",

"type": "recurrence"

}

],

"type": "timerangeobject",

}

Nota: Recuerde que debe acertar TRY IT OUT!  para ejecutar las llamadas de API.

Paso 8. Ejecute el GET  para obtener los identificadores de objeto TimeRange.

Imagen 8. Respuesta GET de Intervalo de tiempo.

Paso 9. Haga clic en el Deploy  para validar y aplicar los cambios.

Imagen 9. Botón de implementación disponible en el explorador de API.

Paso 10. Valide la configuración recién creada y haga clic en DEPLOY NOW.

Imagen 10. Ventana Cambios pendientes de FDM.

Paso 11. Encuentre el AccessPolicy y abra la llamada POST para crear una regla de control de acceso basado en tiempo.

Imagen 1. Política de acceso POST llamada.

Encuentre aquí un JSON ejemplo de formato para crear la ACL basada en tiempo que permite el tráfico desde la zona interna a la zona externa.

Asegúrese de utilizar el ID de objeto de intervalo de tiempo correcto.

{

"name": "test_time_range_2",

"sourceZones": [

{

"name": "inside_zone",

"id": "90c377e0-b3e5-11e5-8db8-651556da7898",

"type": "securityzone"

}

],

"destinationZones": [

{

"name": "outside_zone",

"id": "b1af33e1-b3e5-11e5-8db8-afdc0be5453e",

"type": "securityzone"

}

],

"ruleAction": "PERMIT",

"eventLogAction": "LOG_FLOW_END",

"timeRangeObjects": [

{

"id": "718e6b5c-2697-11ee-a5a7-57e37203b186",

"type": "timerangeobject",

"name": "Time-test2"

}

],

"type": "accessrule"

}

Nota: eventLogAction debe ser LOG_FlOW_END para registrar el evento al final del flujo; de lo contrario, genera un error.

Paso 12. Implemente los cambios para aplicar la nueva ACL basada en tiempo. El mensaje Cambios pendientes debe mostrar el objeto de intervalo de tiempo utilizado en el paso 10.

Imagen 12. La ventana Cambios pendientes de FDM muestra la nueva regla.

Paso 13 (opcional). Si desea editar la ACL, puede utilizar el PUT llame y edite el identificador del rango de tiempo.

Imagen 13. Política de acceso llamada PUT.

Encuentre aquí el JSON ejemplo de formato para editar el rango de tiempo, estos ID de rango de tiempo se pueden recopilar mediante el uso de laGET llamada.

{

"version": "flya3jw7wvqg7",

"name": "test_time_range",

"ruleId": 268435460,

"sourceZones": [

{

"version": "lypkhscmwq4bq",

"name": "inside_zone",

"id": "90c377e0-b3e5-11e5-8db8-651556da7898",

"type": "securityzone"

}

],

"destinationZones": [

{

"version": "pytctz6vvfb3i",

"name": "outside_zone",

"id": "b1af33e1-b3e5-11e5-8db8-afdc0be5453e",

"type": "securityzone"

}

],

"sourceNetworks": [],

"destinationNetworks": [],

"sourcePorts": [],

"destinationPorts": [],

"ruleAction": "PERMIT",

"eventLogAction": "LOG_FLOW_END",

"identitySources": [],

"users": [],

"embeddedAppFilter": null,

"urlFilter": null,

"intrusionPolicy": null,

"filePolicy": null,

"logFiles": false,

"syslogServer": null,

"destinationDynamicObjects": [],

"sourceDynamicObjects": [],

"timeRangeObjects": [

{

"version": "i3iohbd5iufol",

"name": "range-obj-1",

"id": "718e6b5c-2697-11ee-a5a7-57e37203b186",

"type": "timerangeobject"

}

],

"id": "0f2e8f56-269b-11ee-a5a7-6f90451d6efd",

"type": "accessrule"

}

Paso 14. Implemente y valide los cambios.

Imagen 14. La ventana Cambios pendientes de FDM muestra el cambio del objeto.

Verificación

1. Ejecute el show time-range para validar el estado de sus objetos de rango de tiempo.

> show time-range

time-range entry: range-obj-1 (active)

periodic weekdays 0:00 to 23:50

time-range entry: range-obj-2 (inactive)

periodic Monday 12:00 to 13:00

2. Utilice el show access-control-config  para validar la configuración de la regla de control de acceso.

> show access-control-config

===============[ NGFW-Access-Policy ]===============

Description :

=================[ Default Action ]=================

Default Action : Block

Logging Configuration

DC : Enabled

Beginning : Disabled

End : Disabled

Rule Hits : 0

Variable Set : Object missing: 76fa83ea-c972-11e2-8be8-8e45bb1343c0

===[ Security Intelligence - Network Whitelist ]====

===[ Security Intelligence - Network Blacklist ]====

Logging Configuration : Disabled

DC : Disabled

=====[ Security Intelligence - URL Whitelist ]======

=====[ Security Intelligence - URL Blacklist ]======

Logging Configuration : Disabled

DC : Disabled

======[ Rule Set: admin_category (Built-in) ]=======

=====[ Rule Set: standard_category (Built-in) ]=====

-------------[ Rule: test_time_range ]--------------

Action : Allow

Source ISE Metadata :

Source Zones : inside_zone

Destination Zones : outside_zone

Users

URLs

Logging Configuration

DC : Enabled

Beginning : Disabled

End : Enabled

Files : Disabled

Safe Search : No

Rule Hits : 0

Variable Set : Object missing: 76fa83ea-c972-11e2-8be8-8e45bb1343c0

Time Range : range-obj-1

Daily Interval

StartTime : 00:00

EndTime : 23:50

Days : Monday,Tuesday,Wednesday,Thursday,Friday

3. Ejecute un System Support Trace  debug para confirmar que el tráfico está alcanzando la regla correcta.

> system support trace

Enable firewall-engine-debug too? [n]: y

Please specify an IP protocol: tcp

Please specify a client IP address:

Please specify a client port:

Please specify a server IP address:

Please specify a server port: 443

Monitoring packet tracer and firewall debug messages

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 New firewall session

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 app event with app id no change, url no change, tls host no change, bits 0x1

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 Starting with minimum 1, 'test_time_range', and SrcZone first with zones 2 -> 1, geo 0 -> 0, vlan 0, src sgt: 0, src sgt type: unknown, dst sgt: 0, dst sgt type: unknown, svc 0, payload 0, client 0, misc 0, user 9999997

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 match rule order 1, 'test_time_range', action Allow

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 MidRecovery data sent for rule id: 268435460, rule_action:2, rev id:2116550259, rule_match flag:0x1

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 allow action

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 Packet 1930048: TCP ******S*, 07/20-18:05:06.790013, seq 4109528346, dsize 0

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 Session: new snort session

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 AppID: service: (0), client: (0), payload: (0), misc: (0)

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 Firewall: starting rule matching, zone 2 -> 1, geo 0(0) -> 0, vlan 0, src sgt: 0, src sgt type: unknown, dst sgt: 0, dst sgt type: unknown, user 9999997, no url or host, no xff

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 Firewall: allow rule, 'test_time_range', allow

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 Policies: Network 0, Inspection 0, Detection 0

10.10.10.3 62360 -> Destination IP 443 6 AS=0 ID=3 GR=1-1 Verdict: pass