Преминете към основното съдържание

Настройка на FortiGate

Matrix комуникира с REST API на FortiGate (/api/v2/cmdb/…) с ключа на REST API администратор. Тази страница е за администратора на FortiGate. Примерите използват CLI на FortiOS 7.4; имената на менютата и групите права може да се различават между версиите на FortiOS, затова проверете резултата с проверката по-долу.

Правила за зали​

Matrix управлява правила, които вие създавате и именувате; той никога не създава и не изтрива правила.

  • По едно IPv4 правило за всяка зала, всички със същото направление: от един входящ интерфейс или зона (например зоната на учениците Students) към един изходящ интерфейс или зона (например SD-WAN зоната INTERNET). Точно един запис в srcintf и един в dstintf.
  • Имена, които следват един шаблон с кода на залата в него, например Internet Access for SB3-401, Internet Access for FB-102, Internet Access for HAC-202. Шаблонът за имената на правилата на защитната стена трябва да съвпада точно с тези имена и с нищо друго.
  • Източникът (srcaddr) на всяко правило за зала посочва адресната група на залата; нейните членове са /32 адресни обекти, по един за компютър (ipmask, маска 255.255.255.255). За да може Matrix да ги променя, групата трябва да се използва само от правилото на своята зала, без изключения или вложени групи, а обектът на всеки компютър трябва да е само в тази група (Адреси и групи → Какво може да се редактира).
  • Новите правила за зали се откриват при следващото изпращане на данни; нищо не трябва да се рестартира. Използва се истинският policyid на правилото, какъвто и да е номерът на залата.
По-късни правила ACCEPT обезсмислят изключването на зала

Ако включено правило ACCEPT след правилата за зали, със същото направление, също съвпада с компютрите на залите (източник all или мрежа или група, която ги съдържа), трафикът на изключена зала попада в него и пак достига до интернет. Извадете управляваните адреси от такива общи правила или добавете подходящо блокиращо правило след залите. Matrix отчита такива правила (later_accept_policy), но никога не ги променя. Помислете също за IPv6 и други пътища навън, както и за това, че учениците може да сменят IP адреса на компютъра си.

Проверете firewall-session-dirty (глобално, config system settings, или за отделно правило): с check-all установените сесии се преоценяват след промяна на правило, което не гарантира, че ще бъдат прекъснати.

Разрешени сайтове​

Разрешените сайтове са домейни, които една зала достига и когато интернетът ѝ е спрян. Matrix никога не създава правила или групи: създавате ги еднократно, а след това Matrix променя само членовете на групите. Разрешени сайтове → Настройка на FortiGate (администратори на тенанта) показва CLI командите за всичко, което липсва, с интерфейсите и групите на залите на тази защитна стена:

КаквоАдресна групаACCEPT правило
Общ списък (всички зали)Matrix allowed sitessrcaddr: адресните групи на всички зали; dstaddr: Matrix allowed sites
Собствен списък на зала (по избор)Matrix allowed sites <зала>srcaddr: групите на тази зала; dstaddr: нейната група

Пример (общ списък и собствен списък на SB1-102; редовете с # са коментари, които CLI на FortiGate пренебрегва):

# Entrosity Matrix: allowed sites setup.
# Run as a super_admin in the FortiGate CLI, in VDOM "root". When VDOMs are enabled, enter it first:
# config vdom
# edit "root"
# New policies are appended at the end of the policy list: move each one above any DENY policy of
# "Students" -> "INTERNET" (config firewall policy / move <new id> before <deny id> / end).
# Check that "set nat" matches the room policies (change it when they do not use NAT).
# Wildcard domains (*.example.com) only work when the FortiGate sees the clients' DNS queries.
config firewall addrgrp
edit "Matrix allowed sites"
set member "none"
set comment "Entrosity Matrix: allowed sites of every room"
next
edit "Matrix allowed sites SB1-102"
set member "none"
set comment "Entrosity Matrix: allowed sites of SB1-102"
next
end
config firewall policy
edit 0
set name "Matrix allowed sites"
set srcintf "Students"
set dstintf "INTERNET"
set action accept
set srcaddr "SB1-102-Students address" "SB1-108-Students address"
set dstaddr "Matrix allowed sites"
set schedule "always"
set service "ALL"
set nat enable
set logtraffic all
set comments "Entrosity Matrix: allowed sites while a room's internet is off"
next
edit 0
set name "Matrix allowed sites SB1-102"
set srcintf "Students"
set dstintf "INTERNET"
set action accept
set srcaddr "SB1-102-Students address"
set dstaddr "Matrix allowed sites SB1-102"
set schedule "always"
set service "ALL"
set nat enable
set logtraffic all
set comments "Entrosity Matrix: allowed sites of SB1-102"
next
end
  • Адресна група не може да е празна: празният списък съдържа вградения във FortiGate адрес none, който не съвпада с нищо. Matrix го заменя с първия домейн и го връща, когато бъде премахнат последният.
  • edit 0 добавя правилата в края на списъка с правила. Редът спрямо правилата за зали няма значение (включеното правило за зала съвпада първо; изключеното пропуска трафика надолу към тези), но те трябва да са над всяко DENY правило със същите интерфейси, което би хванало трафика: move <id> before <id>.
  • Настройте nat като при правилата за зали. service може да се стесни до HTTP HTTPS DNS; Matrix намира правилата по групата в местоназначението им, а не по името, така че можете да ги преименувате.
  • Командите покриват само липсващото. Зали без известна адресна група се пропускат с предупреждение, а имената на правилата се съкращават до 35 знака (ограничението на FortiOS).
  • FortiGate, настроени с по-ранна версия, имат и групата Matrix Entrosity services като второ местоназначение на общото правило. Matrix вече не я използва; администратор може да я премахне (Отстраняване на проблеми → Премахване на старата група с услугите на Entrosity).
  • Зала, добавена по-късно, трябва да се добави и към източниците на общото правило; проверката предупреждава, когато правило не обхваща всички зали (sites_policy_not_covering).
  • Домейните със звездичка (*.example.com) работят само когато FortiGate вижда DNS заявките на компютрите: FortiGate е техният DNS сървър или DNS трафикът им минава през него.
  • Профилът на API администратора вече го покрива (Firewall → Address read/write): Matrix създава fqdn обекти matrix-site:<домейн>, задава членовете на групите и изтрива само собствените си обекти, които вече не се използват никъде.

REST API администратор​

Профил за достъп​

Дайте на администратора само това, което Matrix използва:

Какво прави MatrixAPI на FortiGateПраво
Проверява направлениетоsystem/interface, system/zone, system/sdwan (GET)Network configuration: read
Чете и включва/изключва правилата за залиfirewall/policy (GET, PUT само на status)Firewall → Policy: read/write
Чете компютрите, променя IP адреси, добавя компютри; разрешени сайтовеfirewall/address (GET, PUT, POST, DELETE на неизползвани FQDN обекти на Matrix), firewall/addrgrp (GET, PUT на member)Firewall → Address: read/write
Всичко останало–none

Без промени на адреси (Разреши промяна и добавяне на компютри е изключено) Firewall → Address може да е само read; Matrix пак трябва да чете всеки адрес, група и правило, за да реши какво може да се редактира и да предупреди за по-късни правила ACCEPT.

config system accprofile
edit "entrosity-matrix"
set netgrp read
set fwgrp custom
config fwgrp-permission
set policy read-write
set address read-write
end
next
end
Ключът не може да се ограничи до определени правила

FortiGate не може да ограничи API ключ до отделни номера на правила: ключът може да промени всяко правило, което профилът позволява. Matrix прилага свой собствен строг списък на разрешеното (шаблон, точно направление, VDOM, повторно четене преди всеки запис, само полето status, локалната защита). Поддържайте профила минимален, а ключа – само на компютъра с конектора.

Администраторът​

  • Доверени хостове: само IP адресът на компютъра с конектора, както го вижда FortiGate (след NAT, ако има такъв). Нищо друго.
  • VDOM: само VDOM на залите (например root).
  • PKI група / CORS: не са нужни.
config system api-user
edit "entrosity-matrix"
set comments "Entrosity Matrix connector"
set accprofile "entrosity-matrix"
set vdom "root"
config trusthost
edit 1
set ipv4-trusthost 192.0.2.50 255.255.255.255
next
end
next
end
execute api-user generate-key entrosity-matrix

192.0.2.50 е пример: използвайте адреса на компютъра с конектора. Последната команда отпечатва ключа веднъж: запазете го в Matrix (Защитни стени → API ключ) и не пазете други копия. За да го смените, изпълнете отново execute api-user generate-key и запазете новия ключ.

Достъп за управление​

  • Конекторът достига HTTPS порта за управление на FortiGate от административната мрежа. Ученическите VLAN мрежи не трябва да достигат нито порта за управление на FortiGate, нито компютъра с конектора: проверете го от истинска ученическа мрежа.
  • Сертификат: по подразбиране Matrix проверява TLS сертификата на FortiGate. Дайте на Matrix CA, който го е издал (CA сертификат (PEM)), или инсталирайте сертификат, на който компютърът с конектора има доверие. Изключвайте проверката само ако все още нямате CA; връзката пак е криптирана, но самоличността на FortiGate не се проверява.

Проверка​

Преди да включите промените:

  1. Изпълнете Провери на страницата на защитната стена (Защитни стени → Проверка) или на компютъра с конектора matrix-connector check --config local.json, която изпраща само GET заявки (Конектор на Matrix → Проверка без връзка). Тя трябва да покаже версията, Направление … намерено, очакваните зали и групи и никакви предупреждения, които не сте взели предвид.
  2. auth_failed при проверката означава, че ключът е грешен, профилът няма право за четене или IP адресът на конектора не е доверен хост.
  3. Дали профилът наистина позволява записите, показва само запис. Уговорете тестова зала (а за адресите – тестов компютър и група), включете промените и изключете и включете тази зала, след това променете този компютър. Запис, който профилът отказва, се изпраща и получава отговор HTTP 403, затова се показва като Непотвърдено (конекторът не приема, че нищо не се е случило); след Обнови залата е непроменена, а подробностите в историята посочват auth_failed. Разширете профила и опитайте отново.