- PVSM.RU - https://www.pvsm.ru -
Я устал от того, что власть имущие упыри делают с нашим интернетом:
Нас лишают доступа в интернет, когда им удобно
Ресурсы лишают статуса СМИ
Ресурсы блокируют
Ресурсы называют экстремистскими за освещение реального положения дел
Журналисты, выполняющие свою работу, получают реальные тюремные сроки
Увы, я не могу решать все эти проблемы. Но попробую сдвинуться с мёртвой точки в решении хотя бы части из них
Я планирую небольшой цикл статей, и это первая из них. Тут я расскажу, что можно сделать только браузером
В протоколах TCP и UDP [1], поверх которых работает семейство протоколов HTTP, нет понятия «имя хоста» / «имя ресурса». Вместо этого они оперируют IP-адресами. Для того, чтобы преобразовать имя хоста в IP-адрес (или «отрезолвить имя хоста»), применяются DNS-сервера. Только после успешного преобразования имени хоста в IP-адрес происходит соединение с ресурсом
Цензура нарушает ход вещей. Механизмы цензуры атакуют инфраструктуру сети Интернет и нарушают доступность и работоспособность ресурсов
Некоторые вектора атаки:
DNS-сервер может вернуть совсем не то, что вы бы хотели. Это называется подменой DNS
Допустим, мы смогли отрезолвить хост верно (или получили правильный IP-адрес целевого хоста). Далее происходит попытка подключения. На этом этапе ваш запрос может быть отфильтрован провайдером. Это называется фильтрацией по IP-адресу
Допустим, соединение установлено. Провайдер может принять решение его оборвать на основании анализа вашего трафика
Классика — прописать вручную DNS-сервера google 8.8.8.8 и cloudflare 1.1.1.1. Но я отказался от такой конфигурации в пользу DoH — DNS-over-HTTPS, так как протокол DNS не защищён ни от прослушивания, ни от подмены, ни от фильтрации трафика по протоколу. Для DoH такое сделать сложнее — без cloudflare солидная часть интернета ляжет
Наконец, за реализацию механизма DNS-over-HTTPS в Британии компанию Mozilla назвали «злодеем года [2]» — это о чём-то говорит
Технология DNS-over-HTTPS впервые [3] появилась в Firefox 73 в 2018 году. Убедитесь, что версия Вашего браузера Firefox не ниже 73
Со значением всех настроек можно подробнее ознакомиться в документации на support.mozilla.org [4] и wiki.mozilla.org [5]. Совет — обязательно проверяйте, какие именно настройки вы устанавливаете в соответствии с документацией. Я могу ошибиться, школьник Петя может накрутить отсебятины, работающей только в его богатом воображении, а товарищ майор Василий Мусоров может и вовсе написать крайне убедительную статью про настройку браузера, с предсказуемым для Вас финалом
В адресной строке браузера набираем about:config
В открывшемся окне в строке поиска настроек набираем network.trr
Находим настройку network.trr.mode. Я её установил в значение 2
Находим настройку network.trr.excluded-domains, и там указываем onion,i2p
Тут идея достаточно простая — пустить трафик не на заблокированный узел, а куда-нибудь в обход — через proxy-сервер. Хотелось бы сделать это по-умному, минимизировав объём трафика через дохлый proxy-сервер. Какой смысл гонять через proxy тот же youtube? Объём трафика просто положит proxy-сервер
Хорошая новость для тех, кто пользуется Chrome: SmartProxy доступен как для Firefox [6], так и для Chrome [7]
Устанавливаем SmartProxy. Разрешаем его работу в приватном режиме
Открываем панельку дополнения и активируем. После кликаем «Settings», и там находим «Прокси Сервера»
Чуть дальше [8] я расскажу об автоматическом добавлении серверов. Не торопитесь бросаться добавлять сервера руками. Понимание процесса Вам потребуется, а вот ручная работа — нет
Списки proxy-серверов можно найти, например, на hidemy.name [9] или на free-proxy.cz [10]. Это ни в коем случае не все сайты, где можно найти списки proxy-серверов
Обращаю Ваше внимание — если Вы включили DNS-over-HTTPS, вам хватит SOCKS4, которых очень много. В противном случае Вам остаётся использовать только SOCKS5, которые поддерживают резолв имени хоста на стороне proxy, а найти быстрый рабочий SOCKS5-прокси — квест
Следует понимать, что наличие proxy-сервера не гарантирует его работоспособность. Адрес можно просто добавить в список proxy и попытаться зайти на интересующий ресурс через него. Это работает. Но все эти манипуляции занимают кучу времени. Намного быстрее проверить proxy-сервер через curl:
$ curl --socks4 111.22.33.44:5555 api.ipify.org
Важно: после нажатия на кнопку «Save» / «Сохранить» вы попадаете обратно к списку proxy-серверов. В самом низу нужно нажать синюю кнопку «Save Changes» / «Сохранить изменения». Если этого не сделать — изменения применены НЕ будут, и добавленные сервера исчезнут при закрытии вкладки
Очень скоро ручное добавление proxy-серверов надоест. Я остановился на варианте, когда вручную добавлены только proxy-сервера специального назначения, а остальное я выгребаю через подписку
Гугление по запросу «socks4 txt» вывело меня на репозиторий [11]. Это ни в коем случае не единственный список proxy-серверов в интернете
Почему именно такие значения? URL написаны в README вот тут [12]. 10080 минут для периода обновления — это раз в неделю. Я посчитал это достаточным, но это не значит, что это единственно правильное значение. Протокол — в имени файла со списком серверов
После добавления можно нажать кнопку «Test». Если всё настроено правильно — SmartProxy скажет, сколько серверов было добавлено. После сохранения не забываем нажать синюю кнопку «Save Changes» / «Сохранить изменения». Если этого не сделать — вы повторите мой подвиг «Так, а куда они пропали? Только что ж были»
Мы добавили сервера, но без правил проксирования эти сервера лежат просто мёртвым грузом. Перейдём на вкладку «Proxy Rules» / «Правила проксирования»
Давайте попробуем добавить lurkmore.to [13] — он точно заблокирован
Немного объясню, почему правило именно такое. Поле «Rule Type» / «Тип Правила» определяет, что правило будет применяться для всех URL указанного сайта и всех его поддоменов. «Rule Source Domain» указывает, что правило действует только для домена lurkmore.to и его поддоменов, и ни на что больше. Поле «Proxy Server» имеет значение [General] — это значит, что для текущего ресурса lurkmore.to будет применён текущий активный proxy-сервер. О выборе активного сервера следующий раздел. Можно также указать конкретный proxy-сервер из списка proxy-серверов, который мы наполняли ранее руками или по подписке
После сохранения правила не забываем нажать синюю кнопку «Save Changes» / «Сохранить изменения». Иначе ну вы поняли
Тут немного нетривиальной магии. Я просто тыкаю рандомный IP из списка и пытаюсь зайти на сайт. Не удалось — следующий IP
Магии тут немного. Автор дополнения хотел разместить флаг страны [14], где располагается proxy-сервер, но столкнулся с некоторыми трудностями. Я попросил его разместить хотя бы трёхбуквенный код страны для каждого proxy-сервера. Математика проста — чем ближе страна, тем меньше задержка. Также будет очень глупо попасть на proxy-сервер страны, где ресурс заблокирован
Шифрование сильно усложняет анализ трафика, но не делает его невозможным. По возможности, следите, чтобы использовался протокол https. Воспользуйтесь дополнением HTTPS Everywhere для Chrome [15] и Firefox [16], который позволяет определить правила автомагического редиректа с протокола HTTP на протокол HTTPS
Для шифрования HTTP-трафика и таким образом преобразования его в HTTPS применяется протокол TLS. Проблема протокола TLS в том, что он позволяет на одном сервере запустить лишь один HTTPS-сервер — прямо как старый добрый HTTP 1.0. Для решения этой проблемы разработан протокол SNI [17]. И вот тут была допущена ошибка — имя хоста передаётся в открытом виде. Это имя хоста перехватывает DPI [18] провайдера и принимает решение о разрыве соединения. Идея ESNI [19] проста — зашифровать SNI
Firefox — первый браузер, реализовавший поддержку ESNI. Включаем:
В адресной строке браузера набираем about:config
В открывшемся окне в строке поиска настроек набираем network.security.esni.enabled
Двойным кликом мышки устанавливаем в значение true
Проверить, работает ли ESNI в браузере, можно тут [20]
ESNI очень не понравился власть имущим упырям, и его полностью блокируют в России [21] и Китае — прям знак качества
Автор: kai3341
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/setevy-e-tehnologii/361869
Ссылки в тексте:
[1] UDP: https://en.wikipedia.org/wiki/HTTP/3
[2] злодеем года: https://habr.com/ru/company/globalsign/blog/459739/
[3] впервые: https://en.wikipedia.org/wiki/DNS_over_HTTPS#Mozilla_Firefox
[4] support.mozilla.org: https://support.mozilla.org/ru/kb/dns-cherez-https-v-firefox
[5] wiki.mozilla.org: https://wiki.mozilla.org/Trusted_Recursive_Resolver#DNS-over-HTTPS_Prefs_in_Firefox
[6] Firefox: https://addons.mozilla.org/ru/firefox/addon/smartproxy/
[7] Chrome: https://chrome.google.com/webstore/detail/smartproxy/jogcnplbkgkfdakgdenhlpcfhjioidoj
[8] Чуть дальше: #smartproxy-add-server-subscription
[9] hidemy.name: https://hidemy.name/ru/proxy-list/?country=BGCZFIDEGRLVLTPLRO&type=4#list
[10] free-proxy.cz: http://free-proxy.cz/ru/proxylist/country/all/socks4/ping/all
[11] репозиторий: https://github.com/TheSpeedX/PROXY-List
[12] тут: https://github.com/TheSpeedX/PROXY-List#direct-link
[13] lurkmore.to: https://lurkmore.to/
[14] флаг страны: https://github.com/salarcode/SmartProxy/issues/19
[15] Chrome: https://chrome.google.com/webstore/detail/https-everywhere/gcbommkclmclpchllfjekcdonpmejbdp
[16] Firefox: https://addons.mozilla.org/ru/firefox/addon/https-everywhere/
[17] SNI: https://ru.wikipedia.org/wiki/Server_Name_Indication
[18] DPI: https://ru.wikipedia.org/wiki/Deep_packet_inspection
[19] ESNI: https://habr.com/ru/company/globalsign/blog/427563/
[20] тут: https://www.cloudflare.com/ssl/encrypted-sni/
[21] России: https://qna.habr.com/q/862669
[22] Источник: https://habr.com/ru/post/543202/?utm_source=habrahabr&utm_medium=rss&utm_campaign=543202
Нажмите здесь для печати.