مدت زمان مطالعه:
0

پنل مدیریتی FortiGate بخشی از Management Plane دستگاه است؛ یعنی همان بخشی که Administrator از طریق HTTPS، SSH، API، FortiManager یا Console برای تغییر Policy، Route، VPN، Security Profile و تنظیمات سیستم به آن دسترسی پیدا میکند. اگر این بخش در معرض اینترنت باشد یا حساب مدیریتی بهدرستی محدود نشده باشد، مهاجم ممکن است بدون عبور از Firewall Policyهای عادی مستقیماً خود FortiGate را هدف قرار دهد.
حملاتی مانند Brute Force، Credential Stuffing، سرقت Token یا Password، سوءاستفاده از حسابهای قدیمی، دسترسی از Source IP غیرمجاز و بهرهبرداری از آسیبپذیریهای مدیریتی میتوانند به تصاحب کامل Device منجر شوند. به همین دلیل، تغییر پورت HTTPS یا انتخاب Password پیچیده بهتنهایی کافی نیست و باید چند لایه کنترلی همزمان اجرا شود.
این مقاله یک Baseline عملیاتی از سطح مقدماتی تا پیشرفته ارائه میکند. علاوه بر مسیرهای GUI و CLI، ترتیب امن اعمال تغییرات، جلوگیری از Lockout، Trusted Host، MFA، Local-in Policy، TLS، Certificate، Password Policy، REST API Admin، Logging، HA و روش تست نیز با جزئیات بررسی میشوند.
این مقاله بر اساس FortiOS 7.4.12، آخرین Patch فعلی شاخه FortiOS 7.4 نوشته شده است. مسیرهای اصلی در Patchهای دیگر 7.4 مشابهاند، اما بعضی گزینهها به مدل، VDOM Mode، HA و Build وابستهاند. در FortiOS 7.6 امکان ایجاد Local-in Policy از GUI اضافه شده است؛ در FortiOS 7.4، Local-in Policy سفارشی از CLI ساخته و ویرایش میشود. از FortiOS 7.4.8 نیز PBKDF2 به الگوریتم پیشفرض ذخیره Password Administratorهای جدید تبدیل شده است و حسابهای قدیمی ممکن است تا زمان Login یا Reset Password همچنان Hash قدیمی داشته باشند.
مروری بر این مقاله
ترافیک مدیریتی با ترافیک عبوری متفاوت است. ممکن است یک FortiGate هیچ Firewall Policy ورودی از اینترنت نداشته باشد، اما چون HTTPS روی WAN فعال است، خود Device همچنان از اینترنت قابل دسترسی باشد. برای حفاظت باید هم Interface، هم Administrator و هم Local-in Traffic کنترل شوند.
| تهدید | نشانه یا سناریو | کنترل اصلی | کنترل تکمیلی |
|---|---|---|---|
| Brute Force | تعداد زیاد Failed Login از یک یا چند Source | MFA، Lockout و Trusted Host | Local-in Policy و Alert در FortiAnalyzer |
| Credential Stuffing | استفاده از Username و Password افشاشده | MFA و حساب اختصاصی | Password Rotation و عدم استفاده مجدد |
| Public Exposure | GUI یا SSH روی WAN از همه اینترنت قابل دسترسی است. | حذف HTTPS/SSH از WAN | VPN، Jump Host و OOB Management |
| Privilege Abuse | حساب روزمره دارای super_admin است. | Access Profile سفارشی | Change Approval و Audit Log |
| MITM | Certificate Self-signed یا TLS ضعیف | Certificate معتبر و TLS 1.2/1.3 | FQDN مدیریتی و شبکه کنترلشده |
| Exploitation | FortiOS قدیمی یا CVE اصلاحنشده | Patch Management | عدم انتشار Management روی Internet |
| API Token Theft | Token در Script، Ticket یا Repository قرار گرفته است. | API Admin محدود و Trusted Host | Rotation، Secret Vault و Least Privilege |
قبل از تغییر، وضعیت فعلی را مستند کنید. بدون Baseline مشخص نیست تغییر جدید باعث اختلال شده یا مشکل از قبل وجود داشته است.
get system status get system ha status show system interface show system admin show system api-user show system global show system password-policy show firewall local-in-policy show firewall local-in-policy6 show log fortianalyzer setting show log syslogd setting
ترتیب تغییرات اهمیت زیادی دارد. برای مثال اگر ابتدا HTTPS را از Interface حذف کنید و سپس بخواهید حساب جدید را آزمایش کنید، ممکن است دسترسی خود را از دست بدهید.
Administrator از همان شبکهای به FortiGate متصل میشود که ترافیک عملیاتی از آن عبور میکند. پیادهسازی سادهتر است، اما خرابی Routing، VLAN یا Policy میتواند مدیریت را نیز قطع کند.
یک Interface، Switch و مسیر مستقل برای Management وجود دارد. این طراحی برای Datacenter و محیطهای حساس ترجیح داده میشود، زیرا مشکل Data Plane الزاماً مسیر مدیریت را قطع نمیکند.
| طرح | مزیت | ریسک |
|---|---|---|
| GUI روی WAN | سادگی دسترسی | بالاترین سطح حمله؛ توصیه نمیشود. |
| GUI روی LAN کاربران | پیادهسازی آسان | هر Endpoint آلوده میتواند Management Plane را Scan کند. |
| Management VLAN | تفکیک مناسب | به امنیت Switch و Routing وابسته است. |
| OOB + Jump Host | کمترین وابستگی به Data Plane | هزینه و پیچیدگی بیشتر |
Fortinet توصیه میکند Release Notes، Resolved Issues، Known Issues و PSIRT Advisoryها بررسی شوند. انتخاب Firmware باید با سیاست سازمان، Featureهای موردنیاز و Upgrade Path رسمی هماهنگ باشد.
PBKDF2 برای Hash کردن Password حسابهای Administrator جدید یا Passwordهای بهروزشده استفاده میشود. حسابهایی که از نسخه قدیمی ارتقا یافتهاند ممکن است تا Login یا Reset Password با Hash قدیمی باقی بمانند.
# بررسی فرمت Hash: show system admin # نمونه جدید: set password ENC PB2... # نمونه قدیمی: set password ENC SH2...
هر شخص باید حساب اختصاصی داشته باشد. حساب مشترک مانند admin امکان تشخیص فرد انجامدهنده تغییر را از بین میبرد.
| نقش | نمونه مجوز | موارد ممنوع |
|---|---|---|
| NOC Read-only | Dashboard، Interface، Route و Log بهصورت Read | Policy Change، Firmware و Admin Management |
| Network Admin | Interface، Routing، SD-WAN و VPN | Administrator و System Firmware مگر با نیاز |
| Security Admin | Firewall Policy، Security Profile و Objects | System Global و HA مگر با نیاز |
| Auditor | Read-only و Log Access | تمام Write Permissionها |
| Break-glass | super_admin | استفاده روزمره |
Password Policy در FortiOS 7.4 برای Local Administrator Passwordها قابل فعالسازی است. مقدار مناسب باید با سیاست سازمان و PAM هماهنگ باشد.
config system password-policy
set status enable
set apply-to admin-password
set minimum-length 14
set min-lower-case-letter 1
set min-upper-case-letter 1
set min-number 1
set min-non-alphanumeric 1
set min-change-characters 4
set reuse-password disable
set expire-status enable
set expire-day 90
end
set apply-to ? روی Device بررسی کنید.
MFA احتمال موفقیت حمله با Password سرقتشده را کاهش میدهد. Fortinet توصیه میکند قبل از فعالکردن MFA یک حساب Administrator دوم برای Recovery ایجاد شود.
Trusted Hosts روی هر Administrator تعیین میکند Login فقط از کدام Source IP یا Subnet مجاز باشد. اگر برای تمام Administratorهای Local تعریف شده باشد، دسترسی مدیریتی Interfaceها به Sourceهای تعریفشده محدود میشود؛ PING از این رفتار مستثنا است.
| Source | Subnet | کاربرد |
|---|---|---|
| Jump Host اصلی | 10.20.30.50/32 | مدیریت روزمره |
| Jump Host پشتیبان | 10.20.30.51/32 | Recovery |
| VPN Admin Pool | 10.99.10.0/28 | مدیریت Remote |
این تنظیم اولین لایه است. اگر HTTPS روی یک Interface فعال نباشد، FortiGate روی آن Interface GUI ارائه نمیدهد؛ حتی اگر Local-in Policy Allow وجود داشته باشد.
| سرویس | توصیه | توضیح |
|---|---|---|
| HTTPS | فقط Management Interface | روش اصلی GUI |
| SSH | فقط در صورت نیاز | برای CLI؛ ترجیحاً با Key یا شبکه محدود |
| HTTP | غیرفعال | رمزنگاری ندارد. |
| TELNET | غیرفعال | Username و Password رمزنگاری نمیشوند. |
| SNMP | فقط Monitoring Network | با SNMPv3 و Trusted Manager |
| PING | در صورت نیاز | برای Health Check؛ با Local-in قابل محدودسازی است. |
| FMG-Access | فقط مسیر FortiManager | برای Central Management |
Certificate باید برای FQDN مدیریت صادر شده باشد؛ برای مثال fgt01-mgmt.example.local. استفاده از IP در URL زمانی بدون Warning است که IP داخل SAN Certificate باشد.
در شاخه 7.4، TLS 1.2 و TLS 1.3 برای Web Administration قابل انتخاباند. Clientهای بسیار قدیمی ممکن است بعد از حذف TLS قدیمی دیگر متصل نشوند؛ این رفتار مطلوب امنیتی است اما باید Jump Hostها تست شوند.
Fortinet توصیه میکند HTTP Redirect غیرفعال باشد. اگر Redirect لازم است، admin-host را روی FQDN ثابت تنظیم کنید تا Redirect از Host Header ارسالشده توسط Client استفاده نکند.
HSTS باعث میشود Browser برای مدت مشخص فقط HTTPS استفاده کند. قبل از فعالسازی بلندمدت، Certificate و FQDN را درست کنید؛ اشتباه در HSTS میتواند دسترسی Browser را تا پایان Max-Age دشوار کند.
config system global
set admin-ssh-v1 disable
set admin-ssh-grace-time 30
set admin-ssh-password enable
end
Local-in Policy ترافیکی را کنترل میکند که مقصد آن خود FortiGate است. این Policy با Firewall Policy عبوری متفاوت است و برای HTTPS، SSH، PING، SNMP، IPsec، BGP و سایر سرویسهای Local کاربرد دارد.
Trusted Host به حساب Administrator مربوط است. Local-in Policy میتواند قبل از مرحله Authentication کل Traffic یک Service را بر اساس Interface و Source محدود کند و همچنین برای سرویسهای غیرAdmin مانند PING یا SNMP استفاده شود.
RADIUS، LDAP، TACACS+ و SAML میتوانند مدیریت حسابها را مرکزی کنند. با این حال، خرابی Identity Provider نباید سازمان را بدون دسترسی بگذارد.
REST API Admin برای Automation، Backup و Monitoring استفاده میشود. Token آن باید مانند Password سطح بالا محافظت شود.
config system api-user
edit "backup-automation"
set accprofile "API-Backup-ReadOnly"
set vdom "root"
config trusthost
edit 1
set ipv4-trusthost 10.20.40.25 255.255.255.255
next
end
next
end
Backup را با Password قوی Encrypt کنید. Console Login را جداگانه آزمایش کنید.
HTTPS و SSH را فقط روی Management Interface نگه دارید. تغییر را ابتدا از Source مجاز آزمایش و سپس از WAN حذف کنید.
Feature Visibility برای مشاهده مفید است، اما Rule سفارشی در 7.4 از CLI ساخته میشود. بعد از ساخت، اثر Rule را از Source مجاز و غیرمجاز تست کنید.
config system interface
edit "mgmt"
set ip 10.20.30.1 255.255.255.0
set allowaccess ping https ssh
set role lan
set description "Dedicated management interface"
next
end
config system global
set hostname "FGT-HQ-EDGE-01"
set admin-sport 10443
set admin-ssh-port 10022
set admin-server-cert "FGT-MGMT-CERT"
set admin-https-ssl-versions tlsv1-2 tlsv1-3
set admin-https-redirect disable
set admin-lockout-threshold 3
set admin-lockout-duration 900
set admintimeout 10
set admin-ssh-v1 disable
set admin-ssh-grace-time 30
set cli-audit-log enable
set revision-backup-on-logout enable
end
config system password-policy
set status enable
set apply-to admin-password
set minimum-length 14
set min-lower-case-letter 1
set min-upper-case-letter 1
set min-number 1
set min-non-alphanumeric 1
set min-change-characters 4
set reuse-password disable
set expire-status enable
set expire-day 90
end
config system admin
edit "netadmin"
set accprofile "Network_Admin_Limited"
set vdom "root"
set trusthost1 10.20.30.50 255.255.255.255
set trusthost2 10.20.30.51 255.255.255.255
set trusthost3 10.99.10.0 255.255.255.240
set two-factor fortitoken
set fortitoken "FTKMOBXXXXXXXXXX"
set comments "Named administrator - daily operations"
next
end
config firewall address
edit "MGMT-JUMP-HOSTS"
set type iprange
set start-ip 10.20.30.50
set end-ip 10.20.30.51
next
edit "NMS-SERVER"
set subnet 10.20.40.10 255.255.255.255
next
end
config firewall service custom
edit "FGT-HTTPS-10443"
set tcp-portrange 10443
next
edit "FGT-SSH-10022"
set tcp-portrange 10022
next
end
config firewall local-in-policy
edit 10
set intf "mgmt"
set srcaddr "MGMT-JUMP-HOSTS"
set dstaddr "all"
set action accept
set service "FGT-HTTPS-10443" "FGT-SSH-10022"
set schedule "always"
set comments "Allow management from jump hosts"
next
edit 20
set intf "mgmt"
set srcaddr "NMS-SERVER"
set dstaddr "all"
set action accept
set service "PING" "SNMP"
set schedule "always"
next
edit 90
set intf "mgmt"
set srcaddr "all"
set dstaddr "all"
set action deny
set service "FGT-HTTPS-10443" "FGT-SSH-10022" "PING" "SNMP"
set schedule "always"
next
end
config firewall address6
edit "MGMT-IPV6-SUBNET"
set ip6 2001:db8:100:20::/64
next
end
config firewall local-in-policy6
edit 10
set intf "mgmt"
set srcaddr "MGMT-IPV6-SUBNET"
set dstaddr "all"
set action accept
set service "FGT-HTTPS-10443" "FGT-SSH-10022"
set schedule "always"
next
end
get system status show system global show system interface mgmt show system password-policy show system admin show system api-user show firewall local-in-policy show firewall local-in-policy6
| رویداد | اهمیت | اقدام |
|---|---|---|
| Failed Login متوالی | Brute Force یا Password اشتباه | بررسی Source و Account |
| Login از Source جدید | احتمال Credential Theft | تأیید با Administrator |
| ایجاد API Admin | ایجاد دسترسی Automation | بررسی Change Ticket |
| Disable شدن Logging | نشانه فعالیت مشکوک | Incident فوری |
| تغییر Local-in Policy | تغییر سطح دسترسی Management | Peer Review |
| نشانه | علت محتمل | روش بررسی | راهحل |
|---|---|---|---|
| GUI باز نمیشود. | allowaccess، پورت، Local-in یا Route | Console و Configuration | Rule یا Interface را اصلاح کنید. |
| Certificate Warning | SAN یا Chain اشتباه | Browser Certificate | Certificate صحیح Import کنید. |
| MFA Fail | NTP، Token یا Connectivity | Time و Token Status | NTP و Token را اصلاح کنید. |
| Trusted Host Block | Source بعد از NAT متفاوت است. | Packet Sniffer یا Log | IP واقعی دیدهشده را وارد کنید. |
| Local-in Allow Hit نمیخورد. | Service Port یا Interface اشتباه | Rule Order و Admin Port | Object و Rule را اصلاح کنید. |
| API خطای 403 | Profile یا Trusted Host محدود | API User و Source | Permission لازم را اضافه کنید. |
diagnose debug reset diagnose debug flow filter addr 10.20.30.50 diagnose debug flow show function-name enable diagnose debug flow trace start 50 diagnose debug enable # پس از تست: diagnose debug disable diagnose debug reset