المقدمة
يوضح هذا المستند كيفية تكوين قاعدة تحكم في الوصول المستندة إلى الوقت والتحقق من صحتها على 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