Настройки Mozilla Firefox для параноиков и тест Mullvad Browser

Mozilla Firefox - настоящий долгожитель, этот браузер, разрабатываемый условно-независимой некоммерческой организацией (донатит им в основном Google) остается предпоследней надеждой на приватность. Во всяком случае, так нам говорят его разработчики. На самом же деле он нафарширован всякими механизмами слежки за пользователем, НО: их можно выключить. И я таки расскажу вам как это сделать.

Эта статья - гибрид двух тем. С одной стороны, это полноценный гайд по тому как привлечь Firefox на сторону анонимуса, изменив настройки. С другой, это еще и анализ того, какие из этих настроек “из коробки” правильно проставлены в новом браузере, претендующем на анонимность и приватность без допиливания.

Браузер Mullvad - новинка от разработчиков Mullvad VPN и команды Tor Project. Ничего себе кроссовер, да? Вот и я так подумал, и решил протестировать браузер. У меня на канале сегодня будет (или уже) опубликован видеообзор нового претендента на роль "приватного и защищенного браузера". Здесь же я пройдусь по настройкам, которые рекомендуется внести в Firefox для оптимальной защиты от фингерпринтинга, чтобы посмотреть, какие из них уже выставлены нужным образов в Mullvad Browser.

В качестве "эталона" по настройкам я буду отталкиваться от гайда https://brainfucksec.github.io/firefox-hardening-guide#firefox-preferences (англ), и для моих не владеющих языком и не понимающих некоторых настроек читателей я дам комментарии к некоторым пунктам. Да, это будет чертов лонгрид.

Поиск

Первым делом рекомендуется начать использовать поисковый движок, который не собирает огромную кучу данных про пользователя. Рекомендуется использовать DuckDuckGo

В MullvadBrowser по умолчанию он и стоит.

В любом браузере на базе Firefox эта опция переключается так:

  • вводим в строку браузера about:preferences#search

  • выбираем DuckDuckGo

Тонкая настройка -about:config

То, какие настройки мы можем лицезреть и всячески менять, выбрав в меню браузера Settings или введя about:preferences в строку браузера - это всего лишь верхушка айсберга. Настоящая, тонкая настройка осуществляется в специальном интерфейсе, который открывается введением в строку браузера about:config

Опции в этом разделе это не кнопочки и переключалочки, а значения option = value, и когда вы заходите в этот раздел браузер вас предупреждает, что тут серьезные дяди и тети работают, если ты не уверен в своей серьезности, то руки в карманы и иди смотри лучше мультики. Проще говоря, вам показывают ворнинг что тут можно поломать браузер кривой настройкой.

Дальше, чтобы вы не запутались, будет идти настройка и значение, которое ей нужно задать. Если рядом с настройкой стоит символ 🟢 значит в Mullvad Browser настройка совпадает с оптимальной и менять ничего не надо. Если стоит символ 🔴 значит нужно поменять эту настройку.

Настройки запуска

Настраиваем домашнюю страницу и поведение при запуске

🔴 browser.aboutConfig.showWarning = false

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

🟢 browser.startup.page = 1

Этот параметр определяет, что будет открыто после запуска браузера. Значение 1 означает, что будет открыта пустая вкладка.

🟢 browser.startup.homepage = "about:home"

Значение в Mullvad: about:mullvad-browser

Определяет домашнюю страницу, то есть открываемую браузером по умолчанию или по нажатию на "домашняя страница". В случае с mullvad-browser выставленный в нем параметр это и есть home, если ввести about:mullvad-browser или about:home поведение абсолютно одинаковое.

Результаты: 2 из 3

Запрещаем Activity Stream

Activity Stream - это показ на пустой вкладке страниц, которые вы недавно посещали или куда заходили часто. Настройки ниже отключают все, связанное с этой удобной для отслеживания пользователя функциональностью браузера.

🟢 browser.newtabpage.enabled = false

Если значение выставлено как true, браузер будет при открытии новой вкладки показывать вам историю и часто посещаемые страницы

🔴 browser.newtab.preload = false

Если этот параметр указан как true, браузер начнет загружать домашнюю страницу в фоновом режиме при запуске браузера, до того как вы вообще хоть что-то нажмете или введете адрес. Переводя значение в false мы снижаем нагрузку на оперативную память.

🟢 browser.newtabpage.activity-stream.feeds.telemetry = false

Если этот параметр выставлен как true, браузер будет отправлять разработчикам сведения о том, как у вас используется функция вывода истории и часто посещаемых страниц

🟢 browser.newtabpage.activity-stream.telemetry = false

Если этот параметр выставлен как true, браузер будет отправлять разработчикам сведения о том, как у вас используется функция вывода истории и часто посещаемых страниц

🔴 browser.newtabpage.activity-stream.feeds.snippets = false

Если этот параметр выставлен как true, то при включенном фиде посещенных сайтов браузер будет загружать и отображать сниппет страницы (краткую текстовую выжимку и картинку), то есть будет отправлять запросы туда, куда мы его не просили.

🟢 browser.newtabpage.activity-stream.feeds.section.topstories = false

В положении true этот параметр выводит на пустую вкладку контент от партнеров (рекламодателей) Firefox. Это дополнительные запросы которых мы не хотели, дополнительная нагрузка на систему и взаимодействие с трекерами на сайтах, куда мы не имели намерения заходить.

🔴 browser.newtabpage.activity-stream.section.highlights.includePocket = false

Если выставлен как true, этот параметр позволит браузеру выводить на пустую вкладку контент из Firefox Pocket, облачного сервиса куда вы можете (но не рекомендуется) сохранять всякие находки в сети.

🔴 browser.newtabpage.activity-stream.feeds.discoverystreamfeed = false

Этот параметр требуется создать, если он выставлен в положение true, позволяет браузеру, основываясь на ваших интересах (слежке за вашим серфингом) подсказывать вам рекомендации контента. Нам такого не надо.

🟢 browser.newtabpage.activity-stream.showSponsored = false

Если значение true, браузер будет показывать вам "контент от спонсоров", то есть рекламу. Что мы говорим богу интернет-рекламы?

🟢 browser.newtabpage.activity-stream.showSponsoredTopSites = false

Браузер будет показывать в рекомендациях спонсорские сайты, если значение true.

🟢 browser.newtabpage.activity-stream.default.sites = ""

Еще одна попытка показать вам "топ сайтов", теперь уже по параметру их общей популярности. Покажет гугл, ютуб и тому подобное. **Параметр удален из Mullvad Browser.

**Результаты: 9 из 14 пунктов настроены как надо.

Геолокация

Наш любимый раздел, про то как браузер может отслеживать наше местоположение. И конечно же про то, что мы ему на это скажем.

🟢 geo.provider.network.url = "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"

Этот параметр определит, какой службой воспользуется браузер если мы дадим разрешение на определение геопозиции. Параметр удален из Mullvad Browser

Ниже параметры, которые запрещают браузеру пользоваться вшитыми в ОС службами геолокации. Для разных ОС параметры разные.

🟢 geo.provider.ms-windows-location = false (Windows)

🟢 geo.provider.use_corelocation = false (macOS)

🟢 geo.provider.use_gpsd = false (Linux)

🟢 geo.provider.use_geoclue = false (Linux)

Два параметра ниже определяют возможность браузера определять ваш регион

🟢 browser.region.network.url = ""

Параметр выпилен из Mullvad Browser, а так он определяет URL по которому браузер будет обращаться к службе определения региона

🟢 browser.region.update.enabled = false

В целом определяет, включена ли функция определения региона. Если true - значит включена.

За настройки геолокации Mullvad Browser получает 7 из 7.

Язык и локаль

🟢 intl.accept_languages = "en-US, en"

Указываем, что по умолчанию мы хотим видеть сайты на английском языке. Английский это "универсальный язык", он есть во всех ОС. А вот предпочтение смотреть контент на русском, например, четко указывает что вы вероятнее всего носитель языка, и тем самым "палите" свою национальность.

🔴 javascript.use_us_english_locale = true

Параметр требуется создать и указать тип значения Boolean, и установить как True. Этот параметр задает значение по умолчанию для javascript-кода, относительно того как требуется форматировать строки применительно к числам и датам. Если параметр задан как true, браузер будет использовать форматирование, принятое в US English: запятые как разделитель в дробном числе, даты в американском формате. Если он не создан или указан как false, то будет использован тип форматирования из вашей ОС.

Результат Mullvad Browser: 1 из 2

Автоматические обновления и рекомендации

Здесь мы ступаем на тонкий лёд. Если это ваш "боевой" браузер для OSINT и прочих шалостей, обновления рекомендуется отключить, и устанавливать их строго вручную, предварительно изучив что нового напридумывали разработчики. Это нужно сделать для того, чтобы не оказалось, что в обновленной версии браузера появился новый замечательный параметр, который позволяет нейросети, масонам или рептилоидам смотреть за вашими сетевыми похождениями, а вы его не отключили просто потому что ни вы, ни кто-то еще не мог предугадать появление такого параметра.

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

🔴 app.update.background.scheduling.enabled = false

Параметр требуется создать

🔴 app.update.auto = false

В целом включает (true) или выключает (false) автообновления

Параметры ниже используют Google Analytics, а также историю посещенных сайтов и список уже установленных у нас в браузере дополнений чтобы посоветовать нам какие дополнения поставить.

🟢 extensions.getAddons.showPane = false

🟢 extensions.htmlaboutaddons.recommendations.enabled = false

🟢 browser.discovery.enabled = false

Результат: 3 из 5

Телеметрия

Ну а это уже прям слежка-слежка, телеметрия это всякие разные показатели того, как же вы пользуетесь браузером. Служба телеметрии регулярно формирует отчет и отправляет его разработчикам, если мы это не выключим.

🟢 datareporting.policy.dataSubmissionEnabled = false

🟢 datareporting.healthreport.uploadEnabled = false

🟢 toolkit.telemetry.enabled = false

🟢 toolkit.telemetry.unified = false

🟢 toolkit.telemetry.server = "data:,"

🟢 toolkit.telemetry.archive.enabled = false

🔴 toolkit.telemetry.newProfilePing.enabled = false

Ну вот, так хорошо все начиналось. Но разработчики Mullvad Browser не смогли себе отказать в самой базовой телеметрии. Этот параметр отсылает им "пинг" каждый раз, когда вы создаете новый профиль браузера.

🔴 toolkit.telemetry.shutdownPingSender.enabled = false

Этот параметр, будучи включенным, позволит браузеру отправлять на сервера разработчиков сведения о закрытии браузера, о причине закрытия (пользователь закрыл или браузер сам упал), а также дату и время события.

🟢 toolkit.telemetry.updatePing.enabled = false

🟢 toolkit.telemetry.bhrPing.enabled = false

🔴toolkit.telemetry.firstShutdownPing.enabled = false

Тот же пинг при выключении, но отправляемый только один раз, при первом закрытии браузера. Видимо по мнению разрабов один раз не ....

🟢 toolkit.telemetry.coverage.opt-out = true

🟢 toolkit.coverage.opt-out = true

🔴toolkit.coverage.endpoint.base = ""

Параметр нужно создать и оставить значение пустым. Вообще же параметр содержит URL по которому браузер отправлял бы некоторые отчеты.

🟢 browser.ping-centre.telemetry = false

🟢beacon.enabled = false

Результат по телеметрии: 10 из 16

Исследования

Это тоже вид слежки, но немного другой. Телеметрия - это данные, которые (предположительно) собираются, чтобы оценивать работоспособность браузера и отлавливать ошибки. А вот исследования (studies) изучают поведение пользователей.

🟢 app.shield.optoutstudies.enabled = false

Если этот параметр включен (true), браузер будет собирать о вас данные, если вы отдельно не запретите это.

🟢 app.normandy.enabled = false

🟢 app.normandy.api_url = ""

Normandy это как поправки к конституции: снаружи красивый фантик, а внутри сюрприз. Эта служба вроде как делает ценную работу - позволяет разрабам особо важные обновления, закрывающие какие-то уязвимости браузера, устанавливать без необходимости обновлять браузер целиком. Однако, еще эта служба используется и для того, чтобы собирать данные в рамках тех самых исследований вашего поведения.

Результат: 3 из 3

Сообщения о падении браузера

В crash report-ах все так же на сервера разработчиков браузера может утекать инфа о нашем устройстве, просто повод для отправки другой.

🔴 breakpad.reportURL = ""

🟢 browser.tabs.crashReporting.sendReport = false

В целом хорошо что служба отключена, но URL не удалили. 1 из 2

Captive portal detection - страница авторизации WiFi

Когда вы подключаетесь к какой-то WiFi точке впервые, браузер по умолчанию делает проверку на наличие страницы авторизации. На тот случай, если нужно осуществить вход через СМС или как-то еще. Браузер делает это пытаясь загрузить файл http://detectportal.firefox.com/success.txt. Если файл удалось загрузить - значит интернет есть, а значит искать и показывать страницу авторизации не нужно. Но такое поведение означает, что когда вы подключитесь к WiFi, браузер совершенно вас об этом не спрашивая сделает HTTP-запрос к серверу разработчиков.

🔴 captivedetect.canonicalURL = ""

🟢 network.captive-portal-service.enabled = false

Как видите, такой функционал в целом в Mullvad Browser отключен, но лучше в целом устранить его, удалив из браузера URL для таких запросов.

В целом хорошо что служба отключена, но URL не удалили. 1 из 2

Проверка сети средствами ОС

Если нижеуказанный пункт настроек включен (true), браузер будет проверять статус и параметри сетевого соединения, запрашивая его у ОС. А ОС на свое усмотрение будет использовать те механизмы, которые в ней имеются.

🟢network.connectivity-service.enabled = false

Безопасный просмотр

Служба безопасного просмотра использует Google Safe Browsing - набор служб понятно от кого. Ее задача - защищать пользователя от вредоносов и фишинговых сайтов. Если сайт помечен как распространяющий вредоносное ПО или как фишинговый, браузер откажется его загружать. Для рядового пользователя это действительно защита. Для нас же - еще один слой слежки и цензуры, поэтому мы это отключаем. Делайте это осознавая риски, желательно в защищенной ОС.

🟢 browser.safebrowsing.malware.enabled = false

🟢 browser.safebrowsing.phishing.enabled = false

🟢 browser.safebrowsing.blockedURIs.enabled = false

🟢 browser.safebrowsing.provider.google4.gethashURL = ""

🟢 browser.safebrowsing.provider.google4.updateURL = ""

🟢 browser.safebrowsing.provider.google.gethashURL = ""

🟢 browser.safebrowsing.provider.google.updateURL = ""

🔴 browser.safebrowsing.provider.google4.dataSharingURL = ""

🟢 browser.safebrowsing.downloads.enabled = false

🟢 browser.safebrowsing.downloads.remote.enabled = false

🟢 browser.safebrowsing.downloads.remote.url = ""

🔴 browser.safebrowsing.downloads.remote.block_potentially_unwanted = false

🔴 browser.safebrowsing.downloads.remote.block_uncommon = false

🔴 browser.safebrowsing.allowOverride = false

Результат: 10 из 14

Сеть, DNS, прокси и IPv6

Готовьтесь, в этом разделе вас ждет реальное дерьмо - целый рассадник разных компонентов браузера, которые анализируют ваше поведение и создают кучу "левых" сетевых запросов.

🟢 network.prefetch-next = false

Если настройка включена (true), то браузер будет заранее запрашивать и загружать страницы, ссылки на которые есть на той страницы, которую вы просматриваете. Это сделано для ускорения, чтобы когда вы ходите по сайту было ощущение "мгновенной загрузки".

🟢 network.dns.disablePrefetch = true

Если настройка выключена (false), то в дополнение к предзагрузке самих веб-страниц из пункта выше, браузер будет также предзагружать инфу из DNS по доменам, на которые ссылается страница.

🟢 network.predictor.enabled = false

Этот пункт управляет тем, включен ли "предиктор", или предсказатель браузера. Эта штуковина пытается предсказать, какие ссылки вы скорее всего нажмете на загруженном сайте, и заранее подгружает документы по этим ссылкам в кэш браузера. И делает браузер это (если функция включена) анализируя: историю вашего браузера, закладки, частоту посещения тех или иных сайтов, clickstream - паттерны того как вы кликаете мышкой, а также сетевую информацию.

🟢 network.http.speculative-parallel-limit = 0

В этом пункте устанавливается лимит на то, сколько таких "предсказанных" страниц браузеру позволено предзагрузить в кэш.

🟢 browser.places.speculativeConnect.enabled = false

Этот пункт настроек, если включен, позволяет браузеру предзагружать сайты из ваших закладок (bookmarks а не то что вы подумали).

🔴 network.dns.disableIPv6 = true

IPv6 на текущем этапе в целом внедрен слабо, но он может создавать серезные проблемы анонимности. Все дело в том, что в IPv6 такое большое пространство адресов, что использовать NAT который красиво маскирует IP адрес вашего устройства, подменяя его публичным адресом провайдера нет необходимости. Более того, у IPv6 другая структура сетевого пакета, и привычные нам VPN-решения требуют донастройки для того, чтобы они еще и IPv6 трафик туннелировали. В итоге это может привести к утечке вашего реального IPv6 адреса, который четко укажет на ваше устройство. Так что если к угрозе "я тебя по IP вычислю" добавить "v6", звучит куда более реалистично. Во избежание таких проблем лучше в целом запретить браузеру работать с IPv6.

🟢 network.gio.supported-protocols = ""

Настройка актуальная для пользователей Linux, GIO = GNOME Input/Output и управляет разными протоколами, которые, будучи перечисленными в настройке, разрешены к использованию браузером (помимо его базового функционала).

🟢 network.file.disable_unc_paths = true

Эта настройка, будучи отключенной (false), позволяет использовать пути UNC (Universal Naming Convention) вида \\servername\sharename\path\to\file для доступа к файлам по сети. Проблема в том, что UNC частенько используется как вектор загрузки вредоносного ПО, поэтому если вы не уверены, что оно вам надо - лучше вырубить.

🔴 permissions.manager.defaultsUrl = ""

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

🔴 network.IDN_show_punycode = true

Эта настройка, будучи включенной, будет отображать не-латинские домены в формате punycode. Это могут быть домены в зоне .рф или любые другие, где используются non-latin символы. Если мы включаем ее, сайт résumé.com будет отображен как xn--rsum-bpad.com. Зачем? Чтобы снизить риски фишинга и обфускации, с этими хитрыми юникод-символами, наподобие é вообще связано много проблем в безопасности.

Результат: 7 из 10, но отмечу что самые пакостные компоненты слежки выключены по умолчанию

Настройки поиска

Из-за того, что адресная строка браузера интегрирована с поиском, браузер по умолчанию всячески пытается предсказать, что же мы от него хотим, когда начинаем что-то туда вводить. Вводимые нами символы отправляются в сеть еще до того как мы нажмем Enter, чтобы показать нам всякие поисковые подсказки, что создает угрозу анонимности и приватности.

🟢 browser.search.suggest.enabled = false

Отключаем поисковые подсказки в поиске

🟢 browser.urlbar.suggest.searches = false

Отключаем поисковые подсказки в строке адреса

🟢 browser.fixup.alternate.enabled = false

Отключаем попытки угадать и автоматически закончить за нас ввод домена который мы вводим

🔴 browser.urlbar.trimURLs = false

Отключаем "обрезку" URL, заставляя браузер показать весь путь полностью

🟢 browser.urlbar.speculativeConnect.enabled = false

Отключаем предзагрузку введенного адреса. Если параметр включен, то еще до того как мы нажмем enter браузер начнет подгружать сайт в кэш

Далее отключаем настройки автозаполнения всяких форм

🟢 browser.formfill.enable = false

🔴 extensions.formautofill.addresses.enabled = false

🔴 extensions.formautofill.available = "off"

🔴 extensions.formautofill.creditCards.available = false

🔴 extensions.formautofill.creditCards.enabled = false

🔴 extensions.formautofill.heuristics.enabled = false

Четыре настройки ниже отключают контекстуальные подсказки в строке адреса. Очередная попытка проанализировав ввод или контекст (содержание документа) предугадать, чего мы могли бы хотеть ввести в адресную строку.

🔴 browser.urlbar.quicksuggest.scenario = "history"

🟢 browser.urlbar.quicksuggest.enabled = false

🟢 browser.urlbar.suggest.quicksuggest.nonsponsored = false

🟢 browser.urlbar.suggest.quicksuggest.sponsored = false

Результат: 8 из 15

Пароли

🟢 signon.rememberSignons = false

Запрещаем сохранять вводимые пароли

🟢 signon.autofillForms = false

Запрещаем автозаполнение логинов и паролей

🔴 signon.formlessCapture.enabled = false

Запрещаем перехват браузером паролей вне форм

🟢 network.auth.subresource-http-auth-allow = 1

Выставив этот параметр в положение 1, мы запрещаем открывать диалоги входа с cross-origin документов. Проще говоря, если мы зашли на foo.com браузер не разрешит в рамках этого сайта загрузить форму входа с сайта bar.com

Результат: 3 из 4

Кэш и память

🟢 browser.cache.disk.enable = false

Запрещаем браузеру хранить что-то в кэше

🟢 browser.sessionstore.privacy_level = 2

Запрещаем хранить данные любых сессий

🟢 browser.sessionstore.resume_from_crash = false

Запрещаем восстанавливать сессии, прерванные аварийным выходом из браузера (crash)

🟢 browser.pagethumbnails.capturing_disabled = true

Запрещаем создавать мини-скриншоты (thumbnails) посещаемых страниц

🔴 browser.shell.shortcutFavicons = false

Запрещаем хранить в папке профиля фавиконки посещенных страниц

🟢 browser.helperApps.deleteTempFileOnExit = true

Удаляем временные файлы, открытые сторонними приложениями (если вы загружая файл выбрали "открыть" вместо "сохранить") после закрытия этих приложений

Результат: 5 из 6

HTTPS / SSL/TLS / OSCP / CERTS - сертификаты безопасности

🟢 dom.security.https_only_mode = true

Запрещаем открывать ссылки без шифрования HTTPS

🔴 dom.security.https_only_mode_send_http_background_request = false

Запрещаем отправлять HTTP-запросы для проверки поддерживает ли сервер HTTPS

🔴 browser.xul.error_pages.expert_bad_cert = true

Выводим подробную информацию о плохих сертификатах (небезопасное соединение)

🔴 security.tls.enable_0rtt_data = false

В TLS 1.3 ввели фичу для ускорения Интернета, которая позволяет отправить зашифрованные данные на сервер до того, как будет полноценно установлено зашифрованное соединение. Это сделано для того, чтобы уменьшить задержку от хэндшейка. Проблема в том, что в этом случае данные отправляются до того, как браузер убедится что сертификат сервера подлинный. Нам такого не надо.

🔴 security.OCSP.require = true

Online Certificate Status Protocol (OCSP) позволяет проверить сертификат на действительность, не отозван ли он, например, из-за его компрометации злоумышленниками. Включая эту настройку мы говорим браузеру, что он обязан проводить такую проверку для всех URL и не позволять загружать документы с недействительными сертификатами

🟢 security.pki.sha1_enforcement_level = 1

Запрещаем использовать сертификаты SHA-1

🟢 security.cert_pinning.enforcement_level = 2

Запрещаем со стороны ОС загружать в браузер (инжектить) сертификаты для сайтов, применительно к которым используется SSL-pinning.

🔴 security.remote_settings.crlite_filters.enabled = true

Включаем CRLite (Certificate Revocation List Lite), альтернативный механизм проверки сертификатов на валидность и действительность, в дополнение к OCSP

🔴 security.pki.crlite_mode = 2

Позволяем браузеру блокировать запросы на основании проверки CRLite

Результат: 3 из 9

Заголовки и реферреры

🔴 network.http.referer.XOriginPolicy = 2

Тут мы запрещаем браузеру добавлять к cross-origin запросам (когда мы с сайта foo.com переходим на bar.com) заголовок с указанием источника перехода. Эти заголовки используются для отслеживания поведения пользователей.

🟢 network.http.referer.XOriginTrimmingPolicy = 2

В дополнение к предыдущему пункту, мы запрещаем в принципе отправлять в X-origin заголовках подробную информацию, оставляем только протокол, домен и порт. По умолчанию браузер занес бы туда полный URL.

Результат: 1 из 2

Аудио и видео: WebRTC, WebGL, DRM

🔴 media.peerconnection.enabled = false

Запрещаем WebRTC - одноранговую передачу данных, которая может выдать наш реальный IP удаленному серверу или пользователю

🔴 media.peerconnection.ice.proxy_only_if_behind_proxy = true

Запрещаем браузеру устанавливать p2p соединения WebRTC вне прокси, если мы используем прокси и разрешили WebRTC

🔴 media.peerconnection.ice.default_address_only = true

Запрещаем браузеру для WebRTC соединений использовать все сетевые интерфейсы, кроме используемого по умолчанию. В противном случае браузер использует все доступные интерфейсы, что может привести к утечке IP-адреса даже если вы используете VPN.

🔴 media.peerconnection.ice.no_host = true

Запрещаем браузеру использовать IP из диапазонов приватных сетей (например 192.168.x.x или 10.x.x.x) для WebRTC соединений.

🔴 webgl.disabled = true

Запрещаем WebGL, javascript API которое используя мощности видеокарты вашего устройства рендерит 3D-графику на веб-страницах. WebGL используется для фингерпринтинга вашей системы, т.к. разные комбинации ОС, драйвера и чипа видеокарты дают разный хэш рендера одной и той же графики.

🔴 media.autoplay.default = 5

Запрещаем любым сайтам автоматически воспроизводить любые медиафайлы (аудио и видео)

Результат: 0 из 6

Загрузки

🟢 browser.download.useDownloadDir = false

Делаем так, чтобы браузер всегда спрашивал нас, куда сохранить файл

🟢 browser.download.manager.addToRecentDocs = false

Запрещаем браузеру добавлять скачанные файлы в список "недавних загрузок" в ОС

Результат: 2 из 2

Куки

🔴 browser.contentblocking.category = "strict"

Включаем функцию улучшенной защиты от трекеров

🟢 privacy.partition.serviceWorkers = true

Включаем изоляцию процессов разных сайтов внутри браузера. Если опция включена, браузер будет кушать больше системных ресурсов, но зато он изолирует процессы выполнения кода разных страниц друг от друга, снижая риски cross-site атак.

🔴 privacy.partition.always_partition_third_party_non_cookie_storage = true

🔴 privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage = true

Два параметра выше включают изолированное хранение данных разных сайтов. Это снижает риски отслеживания нас через доступ к кросс-сайтовым кукам для трекеров.

Результат: 1 из 4

Интерфейс

🟢 dom.disable_open_during_load = true

Запрещаем открытие всплывающих окон до полной загрузки страницы

🔴 dom.popup_allowed_events = click dblclick mousedown pointerdown

Задаем белый список событий, которые могут вызвать открытие всплывающего окна

🟢 extensions.pocket.enabled = false

Отключаем pocket - интерфейс для облачной синхронизации закладок и другой найденной нами и сложенной в это хранилище инфы

🟢 extensions.Screenshots.disabled = true

Отключаем встроенное дополнение для создания скриншотов веб-страниц

🟢 pdfjs.enableScripting = false

Запрещаем выполнять JS-код, если он находится внутри PDF-файла, который открыт в браузере

🟢 privacy.userContext.enabled = true

Включаем возможность создавать "контейнеры" внутри браузера. Контейнер - это изолированное от других вкладок пространство, которое позволяет, например, зайти в рамках одного окна браузера в несколько аккаунтов одного и того же ресурса.

Результаты: 5 из 6

Дополнения

🟢 extensions.enabledScopes = 5

Включаем дополнения для всех профилей браузера

🟢 extensions.webextensions.restrictedDomains = ""

Этот параметр позволяет задать список доменов, в контексте которых браузерные дополнения будут выключены. Если вы добавите сюда google.com то при посещении гугла браузерные дополнения будут отключены для этой вкладки.

🟢 extensions.postDownloadThirdPartyPrompt = false

Отключаем дополнительный вопрос "А вы точно-преточно уверены что хотите установить это дополнение" при его установке.

Результаты: 3 из 3

Параметры выключения

Настраиваем автоматическую очистку истории, кук, кэша и т.п.

🟢 network.cookie.lifetimePolicy = 2

🔴 privacy.sanitize.sanitizeOnShutdown = true

🟢 privacy.clearOnShutdown.cache = true

🟢 privacy.clearOnShutdown.cookies = true

🟢 privacy.clearOnShutdown.downloads = true

🟢 privacy.clearOnShutdown.formdata = true

🟢 privacy.clearOnShutdown.history = true

🔴 privacy.clearOnShutdown.offlineApps = true

🟢 privacy.clearOnShutdown.sessions = true

🔴 privacy.clearOnShutdown.sitesettings = false

🔴 privacy.sanitize.timeSpan = 0

Результат: 7 из 11

Фингерпринтинг

🟢 privacy.resistFingerprinting = true

🔴 privacy.window.maxInnerWidth = 1600

🔴 privacy.window.maxInnerHeight = 900

Два пункта выше задают лимит для всплывающих окон, которые могут быть открыты через javascript-функцию window.open(). Это сделано для того, чтобы сайт не мог открыть окно больше, чем ваш экран.

🟢 privacy.resistFingerprinting.block_mozAddonManager = true

Настройка при включении блокирует посещаемым сайтом доступ к списку установленных в браузере дополнений

🟢 browser.display.use_system_colors = false

Этот параметр, будучи отключенным, запрещает сайтам доступ к вашей цветовой схеме, которая используется в вашей ОС. Многие сайты подстраиваются под тему вашего рабочего интерфейса (темная или светлая). Но отдавая такой параметр удаленному серверу вы даете ему еще один кусочек пазла от вашего уникального отпечатка.

Результат: 3 из 5

Итоги

95 из 150 параметров, которые требуется изменить в браузере Mozilla Firefox, в случае с Mullvad Browser имеют рекомендованное значение и не требуют вмешательства. Можно сказать, что это очень неплохой результат, потому что почти все эти 95 параметров относятся к тем, которые максимально критичны для приватности и анонимности, а многие из требующих ручного вмешательства 55 параметров нужны чтобы "докрутить" браузер до максимально возможной защиты наших данных, порой в ущерб функциональности.

Больше контента о информационной безопасности, анонимности, OSINT и онлайн-расследованиях ты найдешь в телеграм-канале:

Поддержать автора звонкой криптомонетой можно тут:

Subscribe to zerodaily
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.