Чи можливо створити брандмауер, який дозволяє лише законний трафік веб-сервера через порт 443, а не будь-який інший сервіс?


19

Я завжди використовував простий трюк, щоб обійти більшість брандмауерів, що заважало мені використовувати будь-які порти. Я просто відкрив ssh на одному з моїх серверів на порту 443 і тунелював увесь трафік туди.

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

У цій мережі ви можете використовувати порт 443 лише для законного трафіку веб-сервера. Якщо я відкрию ssh або що-небудь інше на порту 443 і спробую підключитися до нього з цієї мережі, він вбивається негайно. Якщо я запускаю apache на цьому сервері, він працює.

Як це можливо навіть? Чи є кілька надзвичайно складних брандмауерів, які навіть здатні проаналізувати зашифрований трафік, щоб переконатися, що трафік https законний? Як?


4
Його називається SPI, обладнання більш високого класу може зробити більш досконалий огляд і припинити небажані з'єднання.
Linef4ult

Ви можете створити білий список і дозволити тільки трафік. Проблема полягає в тому, що законний трафік веб-сервера може змінитися в цьому, ip адреси можуть бути перепризначені, тож, що може бути Microsoft сьогодні, може бути Google завтра. Вам краще використовувати захищений тунель для спілкування з вашими серверами та створити список дозволених клієнтів, а потім визначити процедуру додавання додаткових клієнтів у майбутнє (оскільки цей список зміниться).
Рамхаунд

Ви можете використовувати, наприклад, Obfsproxy, щоб приховати трафік SSH як нешкідливий трафік HTTP (S).
Майкл

Відповіді:


26

Так, і їм тут не потрібна ніяка магія, лише тривіальне узгодження вмісту пакету TCP. Незважаючи на те, що SSH та TLS (SSL) шифрують свої корисні навантаження , самі заголовки протоколу все ще відрізняються та сильно відрізняються один від одного. Наприклад, з'єднання SSHv2 завжди починається з відправки клієнта SSH-2.0-(client name and version). Аналогічно, навіть якщо ваш брандмауер не може насправді знати, чи несе TLS-з'єднання всередині HTTP, він може розпізнавати TLS .

Така перевірка шарів вище TCP, як правило, підпадає під "Огляд глибоких пакетів", що є відносно поширеною ознакою.

Один очевидний спосіб обійти це - тунель SSH всередині TLS - наприклад, за допомогою оглушення, гапрокси або сніпрокси. (На додаток до простого тунелювання, де порт 443 призначений для SSH-над-TLS, вони також можуть мультиплексувати протоколи SSH / HTTP / інші протоколи через той же порт на основі SNI та ALPN.)

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


А потім з'являються набридливі види брандмауерів - ті, які перехоплюють TLS для дешифрування та повторного шифрування всього трафіку. Вони насправді можна побачити всередині TLS і можуть передавати HTTP-запити, блокуючи все інше. (Зверніть увагу, що деякі антивірусні програми теж роблять те саме.) Ви можете розпізнати цей вид, переглянувши серверні сертифікати; всі сертифіковані проксі сертифікати виглядають однаково і часто не проходять перевірку, тоді як реальні сертифікати видаються різними ЦА.


1
Отже, SSH робить свою власну безпеку на рівні додатків, а не просто один протокол через TLS (який за замовчуванням він не використовує)?
Медінок

2
@Medinoc: Так, він реалізує аналогічні функції (в «транспорті» SSHv2 і «аутентифікація» шари ) і не потребує в TLS для чого - або.
grawity

Чи є якийсь надійний спосіб розпізнати ці нюхаючі брандмауери? Мені не подобається думка, що хтось перехоплює мої паролі під час використання https. Я навіть не знав, що це можливо досі.
Петро

2
POST / HTTP / 1.0 base64garbage HTTP / 200 200 OK base64garbage складає транспортний протокол
Джошуа

3
@Petr Поширюючи зауваження щодо власної грамоти, якщо це комп'ютер, який належить роботодавцю, сертифікати, ймовірно, були встановлені ще до того, як вони вам його дали; і брандмауер MITM буде налаштований так, що якщо ви не використовуєте їх серт, не буде дозволено https-трафік, щоб ваш вибір відповідав політиці або не мав https. OTOH у такому випадку перевірка cert, ймовірно, скаже щось на кшталт "перевірено ім'ям роботодавця" і щось подібне у назві CA, якщо ви просвердлите глибше. наприклад, на моєму робочому комп'ютері це bluecoat.companyname.com (де bluecoat - це марка брандмауера, що використовується).
Дан Нелі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.