Как я заставил Windows Server 2003 выйти в современный интернет (и что из этого вышло)
Привет, Хабр! Недавно я поднимал в VirtualBox старую Windows Server 2003 R2. Кто-то скажет: «Зачем?». А мне было интересно, как поведет себя система, которая перестала получать обновления много лет...
Привет, Хабр! Недавно я поднимал в VirtualBox старую Windows Server 2003 R2. Кто-то скажет: «Зачем?». А мне было интересно, как поведет себя система, которая перестала получать обновления много лет назад, если её попробовать «подружить» с современной сетью.
Эпоха Windows Server 2003 и Windows XP — это время, когда интернет был другим. Тогда не было повсеместного HTTPS, сайты весили по 50 килобайт, а основным браузером был Internet Explorer 6. С тех пор веб-стандарты ушли далеко вперед, а протоколы безопасности (TLS) были переписаны с нуля. И если старую систему можно запустить в виртуалке ради ностальгии, то выйти с её помощью в современный интернет — это настоящий вызов.
Главная проблема, с которой я столкнулся — это отсутствие современных протоколов безопасности. Internet Explorer 8 (максимальная версия для Server 2003) физически не может открыть ни один современный сайт, так как он не понимает новые шифры.
Чтобы понять суть проблемы, нужно заглянуть в то, как работает защищенное соединение. Современный веб использует протокол TLS, и сегодня актуальной версией является TLS 1.3 (и TLS 1.2 с большими оговорками).
Процесс установки соединения выглядит так: клиент и сервер обмениваются приветствиями, договариваются о поддерживаемых версиях шифрования и обмениваются ключами. Проблема в том, что IE8 поддерживает только устаревшие и небезопасные версии: SSL 3.0, TLS 1.0 и иногда TLS 1.1. Современные серверы (например, Cloudflare или крупные хостинги) уже давно отключили поддержку этих старых протоколов из-за уязвимостей (таких как POODLE или BEAST). Когда IE8 пытается постучаться на современный сайт, сервер просто обрывает соединение, так как не может договориться с ним о безопасном шифре.
Решать это переустановкой системы или поиском старых патчей было неинтересно (к тому же, это небезопасно). Я решил пойти путем написания промежуточного звена — «моста» между древним гостем и современным хостом.
Я отбросил несколько альтернатив. Например, установку старых версий браузеров с ручным включением TLS 1.2 (это ломает систему и оставляет дыры в безопасности), или поднятие локального reverse-proxy на Nginx (слишком громоздко для одной виртуалки).
Мой выбор — написать собственный HTTP-прокси на Python. Архитектура предельно простая:
Прокси принимает запрос от IE8, сам скачивает контент современными методами, и отдает его обратно в браузер.
В VirtualBox есть несколько режимов сети. Если использовать «Сетевой мост», виртуалка получит реальный IP-адрес от вашего роутера и станет видимой для всей локальной сети. Это плохо, потому что старая необновляемая система сразу же станет целью для сетевых червей.
Пользователи Windows 11 преждевременно обрадовались новому редактору реестра — Microsoft внесла ясность
Microsoft опровергла сообщения о подготовке нового редактора реестра для Windows 11. Обнаруженное приложение с современным интерфейсом оказалось демонстрационным образцом, созданным для пока…
В Греции начали соединять острова электросетью стоимостью €1,48 млрд
Проект финансируется за счет кредита Европейского инвестиционного банка, сообщила компания - оператор энергосистемы ADMIE
Путь из кодера в спек‑драйвера
2026 год изменил мой подход к разработке и отношение к ИИ-инструментам на 180 градусов. Хочешь этого или нет, постоянно прорываются сюжеты про использование искусственного интеллекта и попад…
Во имя безопасности: как обновление Ubuntu 26.04 может положить вам прод
Добрый день, меня зовут Петр. Обычно я не пишу статьи про баги и инциденты из практики, но сегодня хотелось бы описать изменение в ядре Ubuntu, которое внезапно вызвало проблемы на пустом ме…