المحتويات

المقدمة

المتطلبات الأساسية

المتطلبات

المكونات المستخدمة

معلومات أساسية

التكوين

التحقق من الصحة

المقدمة

يوضح هذا المستند كيفية تكوين قاعدة تحكم في الوصول المستندة إلى الوقت والتحقق من صحتها على FTD المدارة بواسطة FDM مع REST API.

المتطلبات الأساسية

المتطلبات

توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:

- الدفاع الآمن عن تهديد جدار الحماية (FTD)

- إدارة جهاز Firepower (FDM)

- معرفة واجهة برمجة تطبيقات نقل الدول التمثيلية (REST API)

- قائمة التحكم في الوصول (ACL)

المكونات المستخدمة

تستند المعلومات الواردة في هذا المستند إلى الإصدار 7.1.0 من FTD.

تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.

معلومات أساسية

الإصدار 6.6.0 من واجهة برمجة تطبيقات FTD والإصدارات الأحدث من قواعد التحكم في الوصول التي تكون محدودة حسب الوقت.

باستخدام واجهة برمجة تطبيقات FTD، يمكنك إنشاء كائنات نطاق زمني، والتي تحدد نطاقات زمنية متكررة أو مرة واحدة، وتطبيق هذه الكائنات على قواعد التحكم بالوصول. باستخدام نطاقات الوقت، يمكنك تطبيق قاعدة التحكم في الوصول على حركة المرور خلال أوقات معينة من اليوم، أو لفترات زمنية معينة، من أجل توفير المرونة لاستخدام الشبكة. لا يمكنك إستخدام FDM لإنشاء نطاقات زمنية أو تطبيقها، ولا يبدي لك FDM ما إذا كانت قاعدة التحكم في الوصول تحتوي على نطاق زمني مطبق عليها.

التكوين

الخطوة 1. انقر فوق الخيارات المتقدمة (قائمة Kebab) لفتح مستكشف واجهة برمجة التطبيقات (FDM).

الصورة 1. واجهة مستخدم ويب FDM.

الخطوة 2. أختر الفئة AccessPolicy لعرض إستدعاءات API المختلفة.

الصورة 2. واجهة مستخدم ويب API Explorer.

الخطوة 3. قم بتشغيل GET المكالمة للحصول على معرف نهج الوصول.

الصورة 3. فئة نهج الوصول.

الخطوة 4. يجب عليك الضغطTRY IT OUT!لاسترداد إستجابة واجهة برمجة التطبيقات (API).

الصورة 4. جرب! الزر الذي يقوم بتشغيل إستدعاء واجهة برمجة التطبيقات (API).

الخطوة 5. انسخ JSON البيانات من جهة الاستجابة إلى مفكرة. لاحقا، يجب إستخدام معرف نهج التحكم بالوصول.

الصورة 5. الحصول على إستجابة من نهج الوصول.

الخطوة 6. ابحث عن فئة TimeRange وفتحها على مستكشف واجهة برمجة التطبيقات لعرض إستدعاءات واجهة برمجة التطبيقات (API) المختلفة.

الصورة 6. فئة نطاق الوقت.

الخطوة 7. قم بإنشاء عدد كائنات TimeRange الذي تريده باستخدام إستدعاء POST API.

الصورة 7. إستدعاء مادة النشر لنطاق الوقت.

ابحث هنا عن مثالين JSON للتنسيق لإنشاء كائنين TimeRange مختلفين.

الكائن 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"

}

الكائن 2:

{

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

"recurrenceList": [

{

"days": [

"MON"

],

"recurrenceType": "DAILY_INTERVAL",

"dailyStartTime": "12:00",

"dailyEndTime": "13:00",

"type": "recurrence"

}

],

"type": "timerangeobject",

}

ملاحظة: تذكر الضغط TRY IT OUT!  لتشغيل مكالمات API.

الخطوة 8. قم بتشغيلGET المكالمة للحصول على معرفات كائن TimeRange.

الصورة 8. الحصول على إستجابة من النطاق الزمني.

الخطوة 9. انقر فوقDeployالزر للتحقق من صحة التغييرات التي قمت بها وتطبيقها.

الصورة 9. زر النشر المتوفر من مستكشف واجهة برمجة التطبيقات.

الخطوة 10. تحقق من صحة التكوين الذي قمت بإنشائه الآن وانقر فوق DEPLOY NOW.

الصورة 10. نافذة تغييرات FDM المعلقة.

الخطوة 11. ابحث عنAccessPolicyالفئة وافتح إستدعاء POST لإنشاء قاعدة تحكم في الوصول تستند إلى الوقت.

الصورة 11. الاتصال المنشور لنهج الوصول.

ابحث هنا عن مثال JSON تنسيق لإنشاء قائمة التحكم في الوصول (ACL) المستندة إلى الوقت والتي تتيح حركة المرور من الداخل إلى المنطقة الخارجية.

تأكد من إستخدام معرف كائن نطاق الوقت الصحيح.

{

"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"

}

ملاحظة: eventLogAction يجب أن يكون LOG_FlOW_END من أجل تسجيل الحدث في نهاية التدفق، وإلا فإنه يعطي خطأ.

الخطوة 12. قم بنشر التغييرات لتطبيق قائمة التحكم في الوصول (ACL) الجديدة المستندة إلى الوقت. يجب أن تعرض مطالبة التغييرات المعلقة كائن النطاق الزمني المستخدم في الخطوة 10.

الصورة 12. يعرض نافذة FDM Pending Changes القاعدة الجديدة.

الخطوة 13 (اختيارية). إذا كنت ترغب في تحرير قائمة التحكم في الوصول (ACL)، فيمكنك إستخدامPUTالمكالمة وتحرير معرف نطاق الوقت.

الصورة 13. إستدعاء PUT لنهج الوصول.

ابحث هنا عن مثال JSON التنسيق لتحرير النطاق الزمني، ويمكن تجميع معرفات نطاق الوقت هذه باستخدامGET الاستدعاء.

{

"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"

}

الخطوة 14. نشر التغييرات والتحقق منها.

الصورة 14. يعرض نافذة FDM Pending Changes تغيير الكائن.

التحقق من الصحة

1. قم بتشغيلshow time-rangeالأمر للتحقق من حالة كائنات النطاق الزمني لديك.

> 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. أستخدمshow access-control-configالأمر للتحقق من صحة تكوين قاعدة التحكم في الوصول.

> 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. قم بتشغيل تصحيح الأخطاءSystem Support Traceللتأكد من أن حركة المرور تصل إلى القاعدة الصحيحة.

> 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