Изображение: Unsplash
Сегодня значительная часть всего контента в интернете распространяется с использованием CDN-сетей. При этом исследований того, как различные цензоры распространяют свое влияние на такие сети. Ученые из университета Массачусетса проанализировали возможные методы блокировки CDN-контента на примере практик властей Китая, а также разработали инструмент обхода таких блокировок.
Мы подготовили обзорный материал с главными выводами и результатами этого эксперимента.
Введение
Цензура – глобальная угроза свободе слова в интернете и свободному доступу к информации. Во многом это возможно из-за того, что интернет позаимствовал модель «end-to-end коммуникации» из телефонных сетей 70-х годов прошлого века. Это позволяет заблокировать доступ к контенту или коммуникацию пользователей без серьезных усилий или затрат просто на основе IP-адреса. Здесь несколько способов от блокировки самого адреса с запрещенным контентом до блокировки возможности пользователям даже узнать его с помощью манипуляции с DNS.
Однако развитие интернета привело и к появлению новых способов распространения информации. Один из них – использование кешированного контента для улучшения производительности и ускорения коммуникаций. Сегодня CDN-провайдеры обрабатывают значительный объем всего трафика в мире – лишь на долю лидирующего в этом сегменте Akamai приходится до 30% глобального статического веб трафика.
CDN-сеть – это распределенная система для доставки интернет-контента с максимальной скоростью. Типичная CDN-сеть состоит из серверов в различных географических точках, которые кешируют контент, чтобы «отдавать» его тем пользователям, которые находятся ближе всего к этому серверу. Это позволяет значительно повысить скорость онлайн-коммуникации.
Помимо улучшения качества обслуживания для конечных пользователей, CDN-хостинг помогает создателям контента масштабировать свои проекты, снижая нагрузку на инфраструктуру.
Цензурирование CDN-контента
Несмотря на то, что CDN-трафик составляет уже значительную долю всей передаваемой через интернет информации, до сих пор почти нет исследований того, как цензоры в реальном мире подходят к его контролю.
Авторы исследования начали с исследования техник цензурирования, которые могут применяться к CDN. Затем они изучили реальные механизмы, которые применяют власти Китая.
Сначала поговорим о возможных методах цензурирования и возможности их применения для контроля CDN.
Фильтрация по IP
Это самая простая и недорогая техника цензурирования интернета. Применяя этот подход цензор определяет и вносит в черный список IP-адреса ресурсов, размещающих запрещенный контент. Затем подконтрольные интернет-провайдеры перестают доставлять пакеты, отправляемые на такие адреса.
Блокировка на основе IP – один из наиболее распространенных методов цензурирования интернета. Большинство коммерческих сетевых устройств оснащаются функциями для осуществления таких блокировок без серьезных вычислительных затрат.
Однако, этот метод не очень подходит для блокировки CDN-трафика из-за некоторых свойств самой технологии:
- Распределенное кеширование – для обеспечения наилучшей доступности контентат и оптимизации производительности, CDN-сети кешируют пользовательский контент на большом количестве edge-серверов, расположенных в географически распределенных локациях. Чтобы фильтровать такой контент на основе IP, цензору нужно будет узнать адреса всех edge-серверов и внести их в черный список. Это ударит по главным свойствам метода, ведь главный его плюс в том, что в обычной схеме блокировка одного сервера позволяет «обрубить» доступ к запрещенному контенту сразу для большого количества людей.
- Разделяемые IP – коммерческие CDN-провайдеры разделяют свою инфраструктуру (то есть edge-серверы, систему маппинга и т.п.) между множеством клиентов. В итоге запрещенный CDN-контент загружается с тех же IP-адресов, что и не запрещенный контент. В итоге любая попытка IP-фильтрации приведет к тому, что под блокировкой окажется и огромное количество сайтов и контента, которые не интересуют цензоров.
- Высокодинамичное присваивание IP – для оптимизации балансировки нагрузки и повышения качества сервиса, маппинг edge-серверов и конечных пользователей выполняется очень быстро и динамически. К примеру, Akamai обновляет возвращаемые IP-адреса каждую минуту. Это сделает почти невозможным процесс связи адресов с запрещенным контентом.
DNS-интерференция
Помимо фильтрации IP, еще одним популярным способом цензурирования является интерференция DNS. Этот подход подразумевает действия цензоров, направленные на то, чтобы пользователи вообще не узнали IP-адреса ресурсов с запрещенным контентом. То есть вмешательство идет на уровне разрешения доменных имен. Существует несколько способов сделать это, включая взом DNS-соединений, использование техники DNS poisoning, блокировка DNS-запросов к запрещенным сайтам.
Это очень эффективный способ блокировки, однако его можно обойти, если использовать нестандартные способы разрешения DNS, например, out-of-band каналы. Поэтому обычно цензоры комбинируют блокировки DNS с использованием IP-фильтрации. Но, как сказано выше, IP-фильтрация не является эффективной для цензурирования CDN-контента.
Фильтрация по URL/Ключевым словам с помощью DPI
Современное оборудование для мониторинга сетевой активности может быть использовано для анализа конкретных URL и ключевых слов в передаваемых пакетах данных. Эта технология получила название DPI (deep packet inspection). Такие системы находят упоминания запрещенных слов и ресурсов, после чего происходит вмешательство в онлайн-коммуникацию. В итоге пакеты просто сбрасываются.
Этот метод эффективен, но более сложный и ресурсоемкий, поскольку требует дефрагментации всех пакетов данных, отправляемых в рамках определенных потоков.
CDN-контент можно защитить от подобной фильтрации также, как и «обычный» контент – в обоих случаях помогает использование шифрования (то есть HTTPS).
Помимо использования DPI для поиска ключевых слов или URL запрещенных ресурсов, эти инструменты могут быть использованы для более продвинутого анализа. К таким способам относятся статистический анализ онлайн/офлайн-трафика и анализ протоколов идентификации. Эти способы крайне ресурсоемки и в настоящий момент доказательств их использования цензорами в достаточно серьезном объеме просто не существует.
Самоцензура CDN-провайдеров
Если цензор – это государство, то у него есть все возможности запретить работу в стране тем CDN-провайдерам, которые не подчиняются местным законам, регулирующих доступ к контенту. Противостоять самоцензуре нельзя никак – поэтому если компания-провайдер CDN заинтересована в работе в какой-то стране, то она будет вынуждена соблюдать местные законы, даже если они ограничивают свободу слова.
Как Китай цензурирует CDN-контент
Великий китайский фаервол небезосновательно считается самой эффективной и продвинутой системой для обеспечения интернет-цензуры.
Методология исследования
Ученые производили эксперименты с помощью Linux-ноды расположенной внутри Китая. Также у них был доступ к нескольким компьютерам за границей страны. Сначала исследователи проверили, что из нода подвергается цензуре, аналогичной той, которая применяется к другим китайским пользователям – для этого они пробовали открывать с этой машины различные запрещенные сайты. Так наличие того же уровня цензуры было подтверждено.
Список заблокированных в Китае сайтов, использующих CDN, был взят с сайта GreatFire.org. Затем осуществлялся анализ способа блокировки в каждом случае.
Согласно открытым данным, единственным крупным игроком рынка CDN с собственной инфраструктурой в Китае является Akamai. Другие провайдеры, участвовавшие в исследовании: CloudFlare, Amazon CloudFront, EdgeCast, Fastly и SoftLayer.
В ходе экспериментов исследователи выяснили адреса edge-серверов Akamai внутри страны, а затем попробовали получить через них кешированный разрешенный контент. Получить доступ к запрещенному контенту не удалось (возвращалась ошибка HTTP 403 Forbidden) – очевидно, компания проводит самоцензуру, чтобы сохранить возможность работы в стране. При этом, вне страны доступ к этим ресурсам оставался открытым.
Провайдеры без инфраструктуры в Китае не используют самоцензуру для местных пользователей.
В случае остальных провайдеров самым часто используемым способом блокировки стала фильтрация DNS – запросы к заблокированным сайтам разрешаются в неверные IP-адреса. При этом, фаервол не блокирует сами edge-серверы CDN, поскольку они хранят как запрещенную, так и разрешенную информацию.
И если в случае незашифрованного трафика у властей есть возможность блокировать отдельные страницы сайтов с помощью DPI, то при использовании HTTPS они могут только запретить доступ к всему домену в целом. Это приводит в том числе и к блокировке разрешенного контента.
Кроме того, в Китае есть и собственные провайдеры CDN, среди них такие сети как ChinaCache, ChinaNetCenter и CDNetworks. Все эти компании полностью исполняют законодательство страны и блокируют запрещенный контент.
CacheBrowser: инструмент обхода блокировок с помощью CDN
Как показал анализ, цензорам достаточно трудно блокировать CDN-контент. Поэтому исследователи решили пойти дальше и разработать инструмент обхода онлайн-блокировок, который не будет использовать технологию прокси.
Основная идея инструмента заключается в том, что цензорам для блокировки CDN приходится вмешиваться в работу DNS, однако для загрузки CDN-контента на самом деле не обязательность использовать разрешение доменных имен. Таким образом, пользователь может получить нужный ему контент, напрямую обратившись к edge-серверу, на котором он уже закеширован.
На диаграмме ниже представлено устройство системы.
На компьютер пользователя устанавливается клиентский софт, для доступа к контенту используется обычный браузер.
При запросе URL или части уже запрашивавшегося контента, браузер отправляет запрос к локальной системе DNS (LocalDNS), чтобы получить IP-адрес хостинга. Обычный DNS запрашивается только для доменов, которые еще не содержатся в базе LocalDNS. Модуль Scraper постоянно проходит по запрошенных URL и ищет в списке потенциально заблокированные доменные имена. Затем Scraper обращается к модулю Resolver, чтобы разрешить вновь обнаруженные заблокированные домены, этот модуль выполняет задачу и добавляет запись в LocalDNS. Затем DNS-кеш браузера очищается, чтобы из него удалились существующие DNS-записи для заблокированного домена.
Если модуль Resolver не может понять, к какому CDN-провайдеру относится домен, то он попросит помощи у модуля Bootstrapper.
Как это работает на практике
Клиентский софт продукта был реализован для Linux, но его можно легко портировать в том числе и для Windows. В качестве браузера используется обычный Mozilla
Firefox. Модули Scraper и Resolver написаны на Python, а базы данных Customer-to-CDN и CDN-toIP хранятся в .txt-файлах. В качестве базы данных LocalDNS выступает обычный файл /etc/hosts в Linux.
В итоге для заблокированного URL вида blocked.com скрипт будет получать IP-адрес edge-сервера из файла /etc/hosts и отправлять запрос HTTP GET для доступа к BlockedURL.html с полями HTTP-заголовка Host:
blocked.com/ and User-Agent: Mozilla/5.0 (Windows
NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Модуль Bootstrapper реализован с помощью бесплатного инструмента digwebinterface.com. Этот DNS-резолвер нельзя заблокировать и он отвечает на DNS-запросы от лица множества географически распределенных DNS-серверов в различных сетевых регионах.
С помощью этого инструмента исследователям удалось со своей китайской ноды получить доступ к Facebook – хотя соцсеть давно заблокирована в Китае.
Заключение
Эксперимент показал, что использование проблем, которые цензоры испытывают при попытке блокировать CDN-контент, можно использовать для создания системы обхода блокировок. Такой инструмент позволяет обходить блокировки даже в Китае, где действует одна из самых мощных систем онлайн-цензуры.
dmitryredkin
Я правильно понимаю, что для того, чтобы отдать контент пользователю за файрволом, он должен быть УЖЕ предварительно закеширован на CDN (т.е. запрошен) кем-то, кто находится снаружи файрвола?
qw1
Нет. Кеширующая нода CDN работает так, что если запрошенный контент на ней отсутствует, она загружает контент из источника, кеширует и отдаёт клиенту. При этом, CDN-нода находится в стране, где источник не заблокирован (т.к. клиент специально выбирает не ближайшую к нему ноду).