نكمل سلسلة شرح كورس فورتي جيت فايروول بالعربي، شرح عملي خطوة بخطوة على FortiOS 7.4 و 7.6.
فيما سبق تم شرح
- مقدمة عن فورتي جيت FortiGate
- طريقة تنزيل وضبط اعدادات ال VM FortiGate
- ضبط اعدادات كرت الشبكة على جهاز الكلاينت (Client)
- طريقة عمل reset لعدد الأيام (14) للـ VM FortiGate
- مشكلة انتهاء الـ License للفورتي جيت
- باك اب لإعدادات الـ FortiGate واستعادتها
- شرح مكونات وواجهات الفورتي جيت
- طريقة تغيير باسورد الأدمن في FortiGate
- طريقة توصيل الانترنت لجهاز الفورتي جيت
- ترقية الـ Firmware لجهاز الفورتي جيت
- إنشاء يوزر جديد و Administration profiles
- ما هو الفورتي جارد FortiGuard
- شرح SD-WAN في الفورتي جيت لخطّي إنترنت مع Performance SLA “
الـ Firewall Policy هي قلب الفورتي جيت. فالجهاز بطبيعته يمنع أي ترافيك يمر بين واجهتين ما لم توجد Policy تسمح به صراحة. كل ما يخص الأمان من NAT وفحص الفيروسات وWeb Filter والـ IPS يُطبق من خلال الـ Policy. في هذا الدرس سنفهم كيف يطابق الفورتي جيت الترافيك مع الـ Policies، ومكونات الـ Policy، ثم ننشئ Policies عملية ونتعلم كيف نكتشف أي Policy تطبق على اتصال معين ولماذا يُرفض.
كيف يطابق الفورتي جيت الـ Policies؟
- الترتيب من الأعلى للأسفل (Top-Down): يفحص الجهاز الـ Policies بالترتيب الظاهر في القائمة، وأول Policy تطابق الاتصال تُطبق ويتوقف البحث. لذلك تُوضع القواعد الأكثر تحديدًا في الأعلى والعامة في الأسفل.
- رقم الـ Policy ليس ترتيبها: الـ Policy ID رقم تعريفي ثابت، أما الترتيب الفعلي فهو مكانها في القائمة. يمكن أن تكون Policy رقم 7 فوق Policy رقم 2.
- Implicit Deny: في آخر القائمة توجد Policy ضمنية رقمها 0 تمنع كل ما لم يطابق أي Policy. لا يمكن حذفها، ولا تُسجل في الـ Log افتراضيًا.
- المطابقة على أول Packet: القرار يُتخذ عند بداية الـ Session، وبعدها تمر بقية الحزم حسب الـ Session Table. لذلك تعديل Policy قد لا يؤثر على Sessions قائمة حتى تنتهي.
تعرض صفحة Policy & Objects > Firewall Policy القواعد بطريقتين: Interface Pair View التي تجمعها حسب زوج الواجهات، وBy Sequence التي تعرض الترتيب الفعلي. ويمكنك إظهار عمود ID لمعرفة رقم كل Policy.
مكونات الـ Firewall Policy
| الحقل | الوظيفة |
|---|---|
| Incoming / Outgoing Interface | الواجهة التي يدخل منها الاتصال والواجهة التي يخرج منها (حسب جدول التوجيه). يمكن أن تكون واجهة أو Zone أو SD-WAN Zone. |
| Source / Destination | Address Objects أو Address Groups، ويمكن إضافة Users أو Groups في الـ Source. |
| Schedule | متى تكون الـ Policy فعالة؛ الافتراضي always. |
| Service | البروتوكولات والمنافذ مثل HTTP وHTTPS وDNS أو ALL. |
| Action | ACCEPT أو DENY. |
| NAT | ترجمة عنوان المصدر إلى عنوان الواجهة الخارجة (Use Outgoing Interface Address) أو إلى IP Pool. |
| Security Profiles | AntiVirus وWeb Filter وDNS Filter وApplication Control وIPS وSSL Inspection. |
| Logging Options | Log Allowed Traffic بخيار Security Events أو All Sessions. |
سيناريو المثال
الشبكة الداخلية 192.168.10.0/24 على port2 والإنترنت على port1. المطلوب: السماح لكل الموظفين بتصفح الإنترنت مع Web Filter، والسماح لسيرفر 192.168.10.50 فقط بإرسال البريد عبر SMTP، ومنع قسم الضيوف 192.168.10.192/26 من الإنترنت خارج أوقات العمل.
الخطوة الأولى: إنشاء الـ Objects
- من
Policy & Objects > Addressesاضغط Create New > Address، الاسم LAN_Net، Type = Subnet، القيمة 192.168.10.0/24، ويمكن تحديد port2 في Interface أو تركها any. - بالطريقة نفسها أنشئ Mail_Server = 192.168.10.50/32 وGuest_Net = 192.168.10.192/26.
- إذا احتجت منفذًا غير موجود، فمن
Policy & Objects > Servicesاضغط Create New > Service وحدد البروتوكول ونطاق المنافذ (مثلًا TCP 8080). - من
Policy & Objects > Schedulesأنشئ Recurring Schedule باسم Work_Hours لأيام العمل من 08:00 إلى 17:00.
الخطوة الثانية: إنشاء الـ Policies من الواجهة الرسومية
- اذهب إلى
Policy & Objects > Firewall Policyواضغط Create New. - Name = Guest-Work-Hours، Incoming Interface = port2، Outgoing Interface = port1.
- Source = Guest_Net، Destination = all، Schedule = Work_Hours، Service = HTTP وHTTPS وDNS، Action = ACCEPT.
- في قسم Firewall/Network Options فعّل NAT واترك IP Pool Configuration على Use Outgoing Interface Address.
- في Security Profiles فعّل Web Filter واختر الملف المناسب، وSSL Inspection = certificate-inspection.
- في Logging Options فعّل Log Allowed Traffic واختر All Sessions، ثم OK.
- أنشئ Policy ثانية Guest-Deny من Guest_Net إلى all بـ Action = DENY وفعّل Log Violation Traffic. هذه تمنع الضيوف خارج أوقات العمل.
- أنشئ Policy ثالثة Mail-Out من Mail_Server بـ Service = SMTP وACCEPT مع NAT.
- أنشئ Policy رابعة LAN-Internet من LAN_Net إلى all بخدمات HTTP وHTTPS وDNS مع Web Filter.
- تأكد من الترتيب في عرض By Sequence: Guest-Work-Hours ثم Guest-Deny ثم Mail-Out ثم LAN-Internet. وإذا احتجت لتغيير الترتيب اسحب الـ Policy بالماوس إلى مكانها.
لماذا هذا الترتيب؟ لأن شبكة الضيوف جزء من LAN_Net. لو جاءت LAN-Internet أولًا لطابقها الضيوف في كل الأوقات ولن تصل المطابقة أبدًا إلى Guest-Deny.
الإعداد المكافئ من CLI
config firewall address
edit "LAN_Net"
set subnet 192.168.10.0 255.255.255.0
next
edit "Guest_Net"
set subnet 192.168.10.192 255.255.255.192
next
edit "Mail_Server"
set subnet 192.168.10.50 255.255.255.255
next
end
config firewall service custom
edit "TCP-8080"
set tcp-portrange 8080
next
end
config firewall schedule recurring
edit "Work_Hours"
set start 08:00
set end 17:00
set day sunday monday tuesday wednesday thursday
next
end
config firewall policy
edit 10
set name "Guest-Work-Hours"
set srcintf "port2"
set dstintf "port1"
set srcaddr "Guest_Net"
set dstaddr "all"
set action accept
set schedule "Work_Hours"
set service "HTTP" "HTTPS" "DNS"
set utm-status enable
set ssl-ssh-profile "certificate-inspection"
set webfilter-profile "default"
set logtraffic all
set nat enable
next
edit 11
set name "Guest-Deny"
set srcintf "port2"
set dstintf "port1"
set srcaddr "Guest_Net"
set dstaddr "all"
set action deny
set schedule "always"
set service "ALL"
set logtraffic all
next
edit 12
set name "Mail-Out"
set srcintf "port2"
set dstintf "port1"
set srcaddr "Mail_Server"
set dstaddr "all"
set action accept
set schedule "always"
set service "SMTP"
set logtraffic all
set nat enable
next
edit 13
set name "LAN-Internet"
set srcintf "port2"
set dstintf "port1"
set srcaddr "LAN_Net"
set dstaddr "all"
set action accept
set schedule "always"
set service "HTTP" "HTTPS" "DNS"
set utm-status enable
set ssl-ssh-profile "certificate-inspection"
set webfilter-profile "default"
set logtraffic all
set nat enable
next
end
config firewall policy
move 11 after 10
end
config log setting
set fwpolicy-implicit-log enable
end
عند إنشاء Policy جديدة من CLI تُضاف في آخر القائمة (فوق الـ Implicit Deny)، لذلك استخدم move لوضعها في مكانها الصحيح. وفي حالة الـ DENY يكفي set logtraffic all لتسجيل المحاولات المرفوضة.
معرفة الـ Policy المطابقة: Policy Lookup
في صفحة Policy & Objects > Firewall Policy يوجد زر Policy Lookup (أعيدت تسميته إلى Policy Match بدءًا من 7.4.1). تدخل فيه Incoming Interface وSource IP وDestination IP والبروتوكول والمنفذ، فيظلل الجهاز الـ Policy التي سيطابقها هذا الاتصال. والمكافئ في CLI:
diagnose firewall iprope lookup 192.168.10.200 12345 8.8.8.8 443 tcp port2
إذا ظهر matches policy id: 0 فمعناه أن الاتصال سيقع على الـ Implicit Deny. تذكر أن الـ Lookup يحتاج Route صالحًا للوجهة، وقد لا يطابق Policies تعتمد على مصادقة المستخدمين.
استكشاف الأخطاء بـ diagnose debug flow
عندما يشتكي مستخدم من أن اتصالًا لا يعمل، فأداة debug flow تتتبع الحزمة داخل الجهاز وتخبرك بالـ Route المختار والـ Policy المطابقة وهل طُبق NAT أو رُفضت الحزمة:
diagnose debug reset
diagnose debug flow filter clear
diagnose debug flow filter addr 192.168.10.200
diagnose debug flow filter proto 1
diagnose debug flow show function-name enable
diagnose debug flow trace start 20
diagnose debug enable
diagnose debug disable
diagnose debug reset
ابحث في الناتج عن رسائل مثل Allowed by Policy-13 التي تؤكد الـ Policy المطابقة، أو Denied by forward policy check (policy 0) التي تعني أن الاتصال وقع على الـ Implicit Deny، أو SNAT للتأكد من الـ NAT. ويمكن أيضًا مراجعة السجلات من Log & Report > Forward Traffic حيث يظهر رقم الـ Policy لكل Session.
أخطاء شائعة
- ترتيب خاطئ: Policy عامة فوق Policy خاصة تجعل الخاصة لا تُطابق أبدًا. راجع عرض By Sequence دائمًا.
- نسيان NAT: الترافيك يخرج إلى الإنترنت بعنوان خاص فلا يعود الرد. فعّل NAT في Policies الإنترنت.
- Outgoing Interface لا يطابق التوجيه: الـ Policy تعتمد على الواجهة التي يختارها جدول التوجيه، فإذا كان الـ Route يخرج من واجهة أخرى لن تطابق الـ Policy.
- استخدام all و ALL في كل شيء: يسهل الإعداد لكنه يفتح أكثر مما تحتاج. حدد العناوين والخدمات بدقة.
- عدم تفعيل الـ Logging: بدون Log لن تعرف أي Policy استُخدمت عند حدوث مشكلة أو حادث أمني.
- تعديل Policy وتوقع أثر فوري: الـ Sessions القائمة تبقى على قرارها السابق؛ يمكن مسحها بعد ضبط فلتر مناسب لـ
diagnose sys session filterثمdiagnose sys session clear(بدون فلتر سيمسح كل الـ Sessions).
الخلاصة
الفورتي جيت يرفض كل شيء افتراضيًا عبر الـ Implicit Deny، ويسمح فقط بما تحدده الـ Firewall Policies التي تُطابق من الأعلى للأسفل وتتوقف عند أول تطابق. كل Policy تتكون من واجهات دخول وخروج وعناوين وخدمات وجدول زمني وAction، ويُضاف لها NAT والـ Security Profiles والـ Logging. ابنِ الـ Objects أولًا، ورتّب القواعد من الأخص إلى الأعم، وتحقق دائمًا بـ Policy Lookup وdiagnose debug flow قبل أن تفترض أن المشكلة في مكان آخر.



