Особливості налаштування DPI

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

Особливості налаштування DPI

Попередження №1: дана стаття несе дослідницький характер, не спонукає нікого щось робити та використовувати. Ідея ґрунтується на особистому досвіді, а будь-які збіги випадкові.

Попередження №2: у статті не розкриваються таємниці Атлантиди, пошуку Святого Грааля та інші загадки всесвіту, весь матеріал знаходиться у вільному доступі і можливо неодноразово був описаний на Хабрі. (я не знайшов, за посилання буду вдячний)

Для тих, хто прочитав попередження, почнемо.

Що таке DPI?

DPI або Deep Packet Inspection — технологія накопичення статистичних даних, перевірки та фільтрації мережевих пакетів, аналізуючи не тільки заголовки пакетів, але й повний вміст трафіку на рівнях моделі OSI з другого та вище, що дозволяє виявляти та блокувати віруси, фільтрувати інформацію, що не задовольняє заданим критеріям. .

Існує два типи підключення DPI, які описані ValdikSS на github:

Пасивний DPI

DPI, підключений в провайдерську мережу паралельно (не в розріз) або через пасивний оптичний спліттер, або з використанням дзеркалювання трафіку, що виходить від користувачів. Таке підключення не уповільнює швидкість роботи мережі провайдера у разі недостатньої продуктивності DPI, через що застосовується у великих провайдерів. DPI з таким типом підключення технічно може виявляти спробу запиту забороненого контенту, але не припиняти її. Щоб обійти це обмеження і заблокувати доступ на заборонений сайт, DPI відправляє користувачеві, що запитує заблокований URL, спеціально сформований HTTP-пакет з перенаправленням на сторінку-заглушку провайдера, немов така відповідь надіслав сам запитуваний ресурс (підробляється IP-адреса відправника і TCP sequence). Через те, що DPI фізично розташований ближче до користувача, ніж запитуваний сайт, підроблена відповідь сягає пристрою користувача швидше, ніж справжня відповідь від сайту.

Активний DPI

Активний DPI — DPI, підключений до мережі провайдера звичним чином, як і будь-який інший мережний пристрій. Провайдер налаштовує маршрутизацію так, щоб DPI отримував трафік від користувачів до заблокованих IP-адрес або доменів, а DPI вже приймає рішення про пропуск або блокування трафіку. Активний DPI може перевіряти як вихідний, так і вхідний трафік, однак якщо провайдер застосовує DPI тільки для блокування сайтів з реєстру, найчастіше його налаштовують на перевірку тільки вихідного трафіку.

Від типу підключення залежить не тільки ефективність блокування трафіку, але й навантаження на DPI, тому існує можливість не перевіряти весь трафік, а лише:

"Звичайний" DPI

Під «звичайним» DPI розуміється такий DPI, який фільтрує певний тип трафіку лише з найпоширеніших портах цього типу. Наприклад, «звичайний» DPI виявляє та блокує заборонений HTTP-трафік лише на порту 80, HTTPS-трафік на порту 443. Даний тип DPI не відстежуватиме заборонений контент, якщо ви відправите запит із заблокованою URL-адресою на незаблокований IP або нестандартний порт.

"Повний" DPI

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

Використання DPI

Щоб не знижувати швидкість передачі даних, потрібно використовувати «Звичайний» пасивний DPI, який дозволяє ефективно? блокувати будь-які? ресурси, за умовчанням конфігурація виглядає так:

  • HTTP фільтрувати лише на 80 портах
  • HTTPS лише на 443 порту
  • BitTorrent тільки на 6881-6889 портах

Але проблеми починаються, якщо ресурс буде використовувати інший порт, щоб не втрачати користувачівтоді доведеться перевіряти кожен пакет, для прикладу можна навести:

  • HTTP працює на 80 та 8080 порту
  • HTTPS на 443 та 8443 порту
  • BitTorrent на будь-якому іншому діапазоні

Через це доведеться або перейти на активний DPI, або використовувати блокування за допомогою додаткового DNS-сервера.

Блокування за допомогою DNS

Одним із способів заблокувати доступ до ресурсу є перехоплення DNS-запиту за допомогою локального DNS-сервера та повернення користувачеві IP-адреси заглушки, а не необхідного ресурсу. Але це не дає гарантований результат, оскільки існує можливість запобігти заміні адреси:

Варіант 1: Редагування файлу hosts (для робочого столу)

Файл hosts є невід'ємною частиною будь-якої операційної системи, що дозволяє використовувати його. Для доступу до ресурсу користувачеві потрібно:

  1. Дізнатися IP-адресу потрібного ресурсу
  2. Відкрити для редагування файл hosts (потрібні права адміністратора), розташований в:
    • Linux: /etc/hosts
    • Windows: %WinDir%System32driversetchosts
  3. Додати рядок у форматі: <ім'я ресурсу>
  4. зберегти зміни

Перевага даного методу – його складність та вимоги наявність прав адміністратора.

Варіант 2: DoH (DNS over HTTPS) або DoT (DNS over TLS)

Дані методи дозволяють захистити від заміни DNS-запиту за допомогою шифрування, але реалізація підтримується не всіма додатками. Розглянемо простоту налаштування DoH для Mozilla Firefox версії 66 з боку користувача:

  1. Перейти на адресу про: конфігурації у Firefox
  2. Підтвердити, що користувач бере на себе ризик
  3. Змінити значення параметра network.trr.mode на:
    • 0 - вимкнути TRR
    • 1 — автоматичний вибір
    • 2 — увімкнути DoH за замовчуванням
  4. Змінити параметр network.trr.uri обравши DNS-сервер
    • Cloudflare DNS: mozilla.cloudflare-dns.com/dns-query
    • GoogleDNS: dns.google.com/experimental
  5. Змінити параметр network.trr.boostrapAddress на:
    • Якщо вибрано Cloudflare DNS: 1.1.1.1
    • Якщо вибрано Google DNS: 8.8.8.8
  6. Змінити значення параметра network.security.esni.enabled на правда
  7. Перевірити правильність налаштування за допомогою сервісу Cloudflare

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

Варіант 3 (для мобільних пристроїв):

Використання програми від Cloudflare для Android и IOS.

Тестування

Для перевірки відсутності доступу до ресурсів було тимчасово викуплено домен, заблокований біля РФ:

Висновок

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

Корисні посилання

Доповнення поза статтеюТест на Cloudflare неможливо пройти в мережі оператора Tele2, а правильно налаштований DPI блокує доступ до тестового майданчика.
PS Поки що це перший провайдер, який правильно блокує ресурси.

Джерело: habr.com

Додати коментар або відгук