Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Arbitraż filtru to logika wbudowana w platformę filtrowania systemu Windows (WFP), która służy do określania sposobu interakcji filtrów ze sobą podczas podejmowania decyzji dotyczących filtrowania ruchu sieciowego.
Filtrowanie zachowań arbitrażowych
Następujące zachowania scharakteryzują system arbitrażu filtrów:
- Cały ruch można sprawdzić. Żaden ruch nie może pomijać filtrów w danej warstwie.
- Ruch może być blokowany przez filtr objaśnienie za pośrednictwem veto nawet wtedy, gdy filtr o wyższym priorytcie go zezwolił.
- Wielu dostawców może sprawdzać ruch w tej samej warstwie. Na przykład zapora, po której następuje filtry systemu wykrywania włamań (IDS) lub protokół IPsec, a następnie filtry jakości usług (QoS) mogą przeanalizować ruch w tej samej warstwie.
Model filtrowania
Każda warstwa filtru jest podzielona na warstwy podrzędne uporządkowane według priorytetu (nazywanego również wagą). Ruch sieciowy przechodzi przez warstwy podrzędne z najwyższego priorytetu do najniższego priorytetu. Warstwy podrzędne są tworzone i zarządzane przez deweloperów przy użyciu interfejsu API WFP.
W każdej warstwie podrzędnej filtry są uporządkowane według wagi. Ruch sieciowy jest wskazywany na dopasowywanie filtrów z najwyższej wagi do najniższej wagi.
Algorytm arbitrażu filtru jest stosowany do wszystkich warstw podrzędnych w warstwie, a ostateczna decyzja dotycząca filtrowania jest podjęta po ocenie wszystkich warstw podrzędnych. Zapewnia to wiele pasujących możliwości.
W podwarstwowej warstwie arbitraż filtru jest wykonywany w następujący sposób:
- Oblicz listę pasujących filtrów uporządkowanych według wagi od najwyższej do najniższej.
- Ocenianie pasujących filtrów w kolejności do momentu zwrócenia wartości "Zezwól" lub "Blokuj" (filtry mogą również zwracać wartość "Kontynuuj") lub do momentu wyczerpania listy.
- Pomiń pozostałe filtry i zwróć akcję z ostatniego ocenianego filtru.
W obrębie warstwy arbitraż filtru jest wykonywany w następujący sposób:
- Wykonaj arbitraż filtru w każdej warstwie podrzędnej w kolejności od najwyższego priorytetu do najniższego priorytetu.
- Oceń wszystkie warstwy podrzędne, nawet jeśli podwarstwowa o wyższym priorytcie zdecydowała się zablokować ruch.
- Zwróć wynikową akcję na podstawie reguł zasad opisanych w poniższej sekcji.
Na poniższym diagramie przedstawiono przykładową konfigurację warstwy podrzędnej. Zewnętrzne pola reprezentują warstwy. Pola wewnętrzne reprezentują warstwy podrzędne zawierające filtry. Symbol wieloznaczny (*) w filtrze oznacza, że cały ruch jest zgodny z filtrem.
Jedynym sposobem obejścia filtru jest to, że większy filtr wagi zezwolił lub zablokował ruch w tej samej warstwie podrzędnej. Z drugiej strony jednym ze sposobów zapewnienia, że filtr zawsze widzi cały ruch w warstwie, jest dodanie podwarstwowej warstwy zawierającej jeden filtr zgodny ze wszystkim ruchem.
Konfigurowalne zasady zastępowania
Zasady opisane poniżej określają decyzje arbitrażowe w obrębie warstwy. Te reguły są używane przez aparat filtrów, aby zdecydować, które akcje warstwy podrzędnej są stosowane do ruchu sieciowego.
Podstawowe zasady są następujące.
- Akcje są oceniane w kolejności priorytetu warstw podrzędnych z najwyższego priorytetu do najniższego priorytetu.
- "Blokuj" zastępuje "Zezwól".
- Wartość "Blokuj" jest ostateczna (nie można jej zastąpić) i zatrzymuje ocenę. Pakiet zostanie odrzucony.
Podstawowe zasady nie obsługują scenariusza wyjątku, który nie jest zastępowany przez zaporę. Typowe przykłady tego typu scenariusza to:
- Port administracji zdalnej wymagany do otwarcia nawet w obecności zapory innej firmy.
- Składniki, które wymagają otwarcia portów w celu działania (na przykład Universal Plug and Play UPnP). Jeśli administrator jawnie włączył składnik, zapora nie powinna dyskretnie blokować ruchu.
Aby zapewnić obsługę powyższych scenariuszy, decyzja o filtrowaniu musi być trudniejsza do zastąpienia niż inna decyzja filtrowania przez zarządzanie uprawnieniem zastąpienia akcji. To uprawnienie jest implementowane jako flaga FWPS_RIGHT_ACTION_WRITE i jest ustawiana dla poszczególnych filtrów.
Algorytm oceny obsługuje bieżącą akcję ("Zezwól" lub "Blokuj") wraz z flagą FWPS_RIGHT_ACTION_WRITE. Flaga określa, czy warstwa podrzędna o niższym priorytcie może zastąpić akcję. Ustawiając lub resetując flagę FWPS_RIGHT_ACTION_WRITE w strukturze FWPS_CLASSIFY_OUT0, dostawca określa, w jaki sposób akcje mogą lub nie mogą być zastępowane. Jeśli flaga jest ustawiona, oznacza to, że można zastąpić akcję. Jeśli flaga jest nieobecna, nie można zastąpić akcji.
| Akcja | Zezwalaj na przesłonięcia (ustawiono FWPS_RIGHT_ACTION_WRITE) | Opis |
|---|---|---|
| Pozwalać | Tak | Ruch można zablokować w innej warstwie podrzędnej. Jest to nazywane zezwoleniem miękkim. |
| Pozwalać | Nie | Ruch może być blokowany tylko w innej warstwie podrzędnej przez objaśnienie veto. Jest to nazywane twardym zezwoleniem. |
| Blok | Tak | Ruch może być dozwolony w innej warstwie podrzędnej. Jest to nazywany blokiem miękkim. |
| Blok | Nie | Ruch nie może być dozwolony w innej warstwie podrzędnej. Jest to nazywany twardym blokiem. |
Akcję filtru można ustawić, ustawiając typ elementu członkowskiego w strukturze FWPM_ACTION0 na wartość FWP_ACTION_BLOCK lub FWP_ACTION_PERMIT. Wraz z typem akcji filtr uwidacznia również flagę FWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT. Jeśli ta flaga zostanie wyczyszczone, typ akcji jest twardy i nie można go zastąpić, z wyjątkiem sytuacji, gdy twarde zezwolenie jest zastępowane przez veto, jak wyjaśniono później, inne jest miękkie, które można zastąpić przez akcję o wysokim priorytcie.
W poniższej tabeli wymieniono domyślne zachowanie akcji filtrowania i objaśniania.
| Akcja | Zachowanie domyślne |
|---|---|
| Zezwolenie na filtrowanie | Zezwolenie nietrwałe |
| Zezwolenie na objaśnienie | Zezwolenie nietrwałe |
| Blok filtru | Blok twardy |
| Blok objaśnienie | Blok nietrwały |
Veto jest akcją "Blokuj" zwróconą przez filtr, gdy flaga FWPS_RIGHT_ACTION_WRITE została zresetowana przed wywołaniem filtru. Veto zablokuje ruch, który był dozwolony z twardym zezwoleniem.
Po wydaniu Veto jest to wskazanie konfliktu w konfiguracji. Następujące działania są podejmowane w celu wyeliminowania konfliktu.
Ruch jest blokowany.
Generowane jest zdarzenie inspekcji.
Zostanie wygenerowane powiadomienie.
Nuta
Powiadomienie jest odbierane przez wszystkie jednostki, które je zasubskrybowały. Zazwyczaj obejmuje to zaporę (w celu wykrywania błędów konfiguracji) lub aplikacji (w celu wykrycia, czy dany filtr jest zastępowany).
Nuta
Nie ma obowiązkowego wystąpienia interfejsu użytkownika (UI), gdy filtr "Twarde zezwolenie" jest zastępowany. Powiadomienia o przesłonięć są wysyłane do dowolnego dostawcy zarejestrowanego w celu ich odbierania, co umożliwia zaporom lub aplikacjom, które utworzyły filtry "Zezwól" na wyświetlanie interfejsu użytkownika z prośbą o akcję użytkownika. Nie ma żadnej wartości w przypadku powiadomienia interfejsu użytkownika platformy dla tych zdarzeń przesłonięcia, ponieważ dostawcy niezależnych dostawców oprogramowania, które nie chcą blokować dyskretnie, mogą to zrobić, rejestrując się w innym miejscu w programie WFP lub (mniej preferowane) obsłużyć całą logikę w sterowniku wywołującym. Niezależnych dostawców oprogramowania, które myślą, że monitowanie użytkowników jest dobrym pomysłem, będzie chciał posiadać środowisko użytkownika i utworzyć własny interfejs użytkownika.
Zachowanie ograniczania ryzyka opisane powyżej gwarantuje, że filtr "Zezwalanie na twarde" nie jest dyskretnie zastępowany przez filtr "Blokuj" i obejmuje scenariusz, w którym port administracji zdalnej nie może być blokowany przez zaporę. Aby dyskretnie zastąpić filtry "Twarde zezwolenie" zapora musi dodać filtry w warstwie podrzędnej o wyższym priorytcie.
Nuta
Ponieważ nie ma arbitrażu między warstwami, ruch dozwolony za pomocą "twardego zezwolenia" może być nadal blokowany w innej warstwie. Autor zasad jest odpowiedzialny za zapewnienie, że ruch jest dozwolony w każdej warstwie w razie potrzeby.
Aplikacje użytkowników żądające otwarcia portów dodaj przesłonięcia filtry do warstwy podrzędnej o niskim priorytcie. Zapora może subskrybować filtr dodawania zdarzeń powiadomień i dodawać pasujący filtr po weryfikacji użytkownika (lub zasad).