Налаштування фільтрації трафіку на mikrotik

Використання власних ланцюжків обробки трафіку (Custom Chain)

У минулих частинах статті ми ознайомилися з базовими настройками файрволла, з яких ми, в тому числі, дізналися, що міжмережевий екран маршрутизатора послідовно перевіряє пакет на відповідність правилам фільтрації зверху-вниз. Перевірка припиняється в той момент, коли пакет буде або пропущений на наступний етап обробки трафіку (Action = Accept), або проходження пакета буде заборонено (Action = reject, drop, tarpit).

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

Налаштування фільтрації трафіку на mikrotik

При цьому, якщо пакет відповідає тільки правилом номер 25, він все одно буде перевірений на відповідність правилам з номера 1 по номер 24, на що будуть витрачені ресурси маршрутизатора.

Ситуація ускладнюється тим, що є «дуже дорогі», з точки зору процесорного часу, правила фільтрації. У цих випадках приходить на виручку можливість писати власні ланцюжки (Chain) обробки правила.

Якщо ви коли-небудь займалися програмуванням, то власна ланцюжок дуже схожа на процедуру, виклик якої здійснюється зазначенням в полі Action команди Jump з ім'ям ланцюжка, повернення ж відбувається на наступне правило за викликом ланцюжка, після закінчення обробки трафіку в ланцюжку, або якщо в якомусь -або правилі власної ланцюжка було використано Action = Return, що перервало подальшу обробку ланцюжки.

Графічно це можна
відобразити так

Налаштування фільтрації трафіку на mikrotik

При цьому треба звернути увагу, що пакет потрапить в ланцюжок Custom-Chain-1, тільки якщо він буде відповідати умовам, зазначеним у правилі 3a, а в ланцюжок Custom-Chain-2, тільки якщо він відповідає правилу 15a.

В результаті очевидно, що середня кількість правил, на які перевіряється пакет, зменшується, що збільшує продуктивність маршрутизатора.

Так само хочеться звернути увагу що одну і ту ж ланцюжок можна викликати з різних ланцюжків (в тому числі і своїх) фільтрації трафіку. Наприклад, ви можете написати ланцюжок із захистом ssh-сервера від підбору пароля і звертатися до неї як з ланцюжка input (підбір пароля на маршрутизатор), так і з ланцюжка forward, захищаючи один або кілька внутрішніх серверів.

Для прикладу обговоримо, як проводиться настройка роутера Мікротік, що має кілька WAN-інтерфейсів. В цьому випадку у вас виникає необхідність або написання досить великої кількості однакових правил для кожного WAN-інтерфейсу, або створення власної ланцюжка обробки трафіку, і виклик її при попаданні пакета ззовні на будь-який з WAN-інтерфейсів.

створюємо демілітарізо-
ванну зону (DMZ)

Тепер, після невеликого теоретичного відступу про власні ланцюжки, які ми з вами будемо використовувати, ми переходимо до обіцяного створення DMZ. Виходячи з другої частини статті. у нас є 3 інтерфейсу:

  • WAN (Вихід в інтернет);
  • DMZ (Демілітаризована зона);
  • LAN (Локальна мережа).

Розділимо їх за рівнем довіри.

LAN - сама довірена мережу. З неї можна ходити як в WAN, так і в DMZ без обмежень. Щоб з інших мереж потрапити в LAN, потрібне окреме правило на файрволла.

DMZ - мережа з проміжним рівнем довіри. З неї можна ходити в WAN, проте в LAN без спеціального дозволу доступ закритий.

WAN - сама небезпечна мережу. З неї за замовчуванням закритий доступ як в LAN, так і в DMZ.

Графічно це можна уявити так:

Налаштування фільтрації трафіку на mikrotik

Налаштування маршрутизатора

Так як в цій частині статті ми працюємо з трафіком, що йде через маршрутизатор, основний ланцюжком (Chain) для такого трафіку є forward.

Спочатку вирішимо всі з'єднання з станами з'єднання рівними established і related, і заборонимо зі станом з'єднання рівним invalid, незалежно від інтерфейсів. Так як ми вже знаємо, що фільтрувати трафік логічно тільки на нових сполуках (connection-state = new).

Крім того, найбільша кількість пакетів якраз відносяться до вже встановлених з'єднань, і вказівка ​​цього правила на початку списку кілька збільшить продуктивність.