Фільтрація за групами інтерфейсів

                                     Ваша мережа має бути має кілька підмереж, які можуть ніколи не взаємодіяти з вашою локальною мережею за винятком кількох загальних сервісів, таких як пошта, веб, файловий і друк Як ви справляєтеся з трафіком з таких підмереж залежить від того, для чого ваша мережа призначена Одним з корисних підходів ставиться до кожної менш привілейованої мережі як до окремої локальної мережі, до якої привязаний свій окремий інтерфейс на загальному фильтрующем шлюзі, а потім дати йому набір правил, який дозволяє тільки потрібні напрямки

взаємодії з сусідніми мережами доданими до основного шлюзу

Ви можете зробити вашу PF конфігурацію більш керованою і читабельною згрупувавши логічно схожі інтерфейси в групи інтерфейсів і застосувати правила фільтрації до груп більш переважно ніж до окремих інтерфейсів Групи інтерфейсів, як це реалізовано за допомогою опції групи ifconfig, спочатку зявилися в OpenBSD 36 і були прийняті надалі в FreeBSD 70

Всі сконфігуровані мережеві інтерфейси можуть бути налаштовані належать одній або більше групам Деякі інтерфейси автоматично

належать до однієї з груп за замовчуванням Для прикладу, все IEEE 80211 бездротові

мережеві інтерфейси належать до wlan групі, поки інтерфейси не асоціюються з маршрутом за замовчуванням приналежному egress групі На щастя, інтерфейс може бути членом декількох груп, і ви можете додати інтерфейси до групи інтерфейсів через відповідну команду ifconfig, як у цьому прикладі:

# ifconfig sis2 group untrusted

Еквівалентно під OpenBSD могло б у hostnamesis2 файлі або ifconfig_sis2 = рядку в

rcconf файлі на FreeBSD 70 або пізніших версіях

Там, де це має сенс, ви можете ставитися до групи інтерфейсів так само, як якщо б ви обробляли єдиний інтерфейс в правилах фільтрації:

pass in on untrusted to any port $webports pass out on egress to any port $webports

Якщо тепер ви думаєте, що в більшості, якщо не всі, набори правил до цього моменту можна буде фільтрувати по групі gress замість макросу $ ext_if, ви вхопили важливий момент Це має бути корисне вправа для проходження через існуючі набори правил, які у вас є, щоб побачити як використання групи інтерфейсів може допомогти зробити ще більш читабельним Памятайте, що група інтерфейсів може мати одного або більше членів

Зауважте, що фільтрація на групах інтерфейсів дозволяє писати по суті апаратно-незалежні набори правил Поки ваш hostnameif файли або ifconfig_if = вставлені рядки з інтерфейсами в правильні групи, набір правил для постійної фільтрації на групах інтерфейсів будуть повністю переносяться між машинами, які можуть або не можуть мати однакові апаратні конфігурації На системах де функція група інтерфейсів недоступна, ви можете бути в змозі досягти деяких

з тих же ефектів через створення використання макросів, ось так:

untrusted = &quot{ ath0 ath1 wi0 ep0 }&quot egress = &quotsk0&quot

Сила тегівУ деяких мережах, рішення про те, де пакету повинен бути дозволений прохід не може бути зроблено легко картою критеріїв, таких як підмережі і сервіси Дрібнозернисті політики контролю сайту вимагають створення складних наборів правил і потенційно важко підтримуваних

На щастя, PF пропонує ще один механізм для класифікації та фільтрації у вигляді

тегірованія пакета Корисний спосіб представлення тегірованія пакета це тегованих вхідні пакети для відповідності конкретним дозволяючими правила, а потім дозволяти пакетам проходити десь ще на основі конкретного ідентифікатора тегованих пакета У OpenBSD 46 і пізніших версіях, це навіть можливо мати окремі відповідні правила для відповідних тегів з відповідним критерієм, залишає рішення про проходження, перенаправлення, або прийняття іншої дії в правилах далі в наборі правил

Одним із прикладів може бути бездротові точки доступу, які ми створили в розділі 4, які ми могли б очікувати, щоб передати трафік в локальну мережу з очевидним

адресою джерела рівним точці доступу $ ext_if При такому сценарії, корисним

доповненням до Набр правил шлюзу з кількома з цих точок доступу може бути наступне (за умови, звичайно, що визначення макросів wifi_allowed і wifi_ports відповідають вимогам сайту)

wifi = &quot{ 1000115, 1000125, 1000135, 1000145 }&quot

pass in on $int_if from $wifi to $wifi_allowed port $wifi_ports tag wifigood pass out on $ext_if tagged wifigood

Так як складність набору правил росте, розгляньте використання тегів у відповідному вхідному й проходять правилах, щоб зробити набір правил читабельним і легким в обслуговуванні Теги «липки», і як тільки пакет був позначений відповідним правилом, тег залишається, це означає, що пакет може мати тег, навіть якщо не було застосовано останнє відповідне правило Однак, пакет може мати тільки один тег в будь-який час Якщо пакет відповідає кільком правилам, до яких застосовується тегування, тег буде перезаписаний з кожним новим правилом відповідно з тегом для правила

Для прикладу, ви могли б встановити кілька тегів на вхідний трафік через установку відповідних або проходять правил, доповнені набором проходження правил, які визначають, де пакети обробляються на підставі тегів, встановлених на вхідний трафік

Джерело: Книга про PF, by Peter NM Hansteen, Переклад виконав Михайлов Олексій aka iboxjo

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*