Можно ли создать брандмауэр, который разрешает только законный трафик веб-сервера через порт 443, а не какой-либо другой сервис?

19

Я всегда использовал простой трюк, чтобы обойти большинство брандмауэров, которые мешали мне использовать любые порты. Я просто открыл ssh на одном из моих серверов через порт 443 и направил туда весь трафик.

Однако сейчас я нахожусь в сети, в которой есть брандмауэр, который я никогда раньше не видел, и я даже не знал, что это возможно.

В этой сети вы можете использовать порт 443 только для законного трафика веб-сервера. Если я открою ssh или что-нибудь еще на порту 443 и попытаюсь подключиться туда из этой сети, он сразу же прекратит работу. Если я запускаю apache на этом сервере, он работает.

Как это вообще возможно? Существуют ли какие-нибудь сверхсложные брандмауэры, которые даже способны анализировать зашифрованный трафик, чтобы убедиться, что это законный трафик https? Как?

Petr
источник
4
Оно называется SPI, оборудование более высокого класса может выполнять более сложные проверки и прерывать нежелательные соединения.
Linef4ult
Вы можете создать белый список и разрешить только этот трафик. Проблема в том, что законный трафик веб-сервера может измениться, ip-адреса могут быть переназначены, так что сегодня Microsoft может быть Google. Вам лучше использовать безопасный туннель для связи с вашими серверами и создать белый список разрешенных клиентов, а затем определить процедуру добавления дополнительных клиентов в будущем (поскольку этот список изменится).
Ramhound
Вы можете использовать, например, Obfsproxy, чтобы скрыть трафик SSH как безвредный трафик HTTP (S).
Майкл

Ответы:

26

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

Такая проверка уровней над TCP обычно относится к "Deep Packet Inspection", относительно распространенной функции.

Один очевидный способ обойти это - туннелировать SSH внутри TLS - например, используя stunnel, haproxy или sniproxy. (В дополнение к обычному туннелированию, где порт 443 выделен для SSH-over-TLS, они также могут мультиплексировать SSH / HTTP / другие протоколы через один и тот же порт на основе SNI и ALPN.)

Хотя это не всегда будет препятствовать действительно сложному анализу трафика, оно все равно будет игнорировать большинство фильтров, которые просто проверяют, «выглядит ли это как заголовок TLS».


И еще есть надоедливые межсетевые экраны - те, которые перехватывают TLS для расшифровки и повторного шифрования всего трафика. Они действительно могут видеть внутри TLS и могут передавать HTTP-запросы, блокируя все остальное. (Обратите внимание, что некоторые антивирусные программы также делают то же самое.) Вы можете распознать этот вид, посмотрев сертификаты сервера; все сгенерированные прокси сертификаты выглядят одинаково и часто не проходят проверку, тогда как реальные сертификаты выдаются различными ЦС.

grawity
источник
1
Таким образом, SSH имеет собственную защиту на уровне приложений, а не просто протокол по протоколу TLS (который по умолчанию не используется)?
Medinoc
2
@Medinoc: Да, он реализует аналогичные функции (в «транспорте» SSHv2 и «аутентификация» слои ) и не нуждается в TLS для чего - либо.
Гравитация
Есть ли надежный способ распознать эти брандмауэры? Мне не нравится идея, что кто-то перехватывает мои пароли при использовании https. Я даже не знал, что это возможно до сих пор.
Петр
2
POST / HTTP / 1.0 base64garbage HTTP / 200 200 OK base64garbage создает транспортный протокол
Джошуа
3
@Petr Расширяя замечания Гравити, если это компьютер, принадлежащий работодателю, сертификаты, вероятно, были установлены до того, как они дали его вам; и брандмауэр MITM будет настроен таким образом, чтобы, если вы не используете их сертификат, трафик https не был разрешен, поэтому ваш выбор соответствовал политике или не имел https. OTOH в этом случае проверка сертификата, вероятно, скажет что-то вроде «проверено по имени работодателя» и что-то похожее в имени CA, если вы будете углубляться. например, на моем рабочем компьютере это bluecoat.companyname.com (где bluecoat - это марка используемого брандмауэра).
Дэн Нили