Умеренный Hardening для Firefox

  • Tutorial


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


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


Тем не менее, для усиления защиты браузера можно много чего сделать. Есть пара хороших (англоязычных) проектов, которые предлагают комплексные подходы к дополнительной защите Firefox: статья Firefox Configuration Guide for Privacy Freaks and Performance Buffs (или её вариант для обычных пользователей The Firefox Privacy Guide For Dummies!) от 12bytes.org и ghacks-user.js от Thorin-Oakenpants, earthlng и claustromaniac. Они делают упор на максимальную защиту, но пользоваться таким браузером для обычных ежедневных задач становится крайне проблематично и неудобно. На мой взгляд, стоит ограничиться умеренной защитой Firefox, чтобы соблюсти баланс между усилением защиты, сохранением работоспособности нужных нам сайтов, и затрачиваемыми на всё это усилиями.


Содержание:


Модель угроз
    Безопасность (Security)
    Конфиденциальность (Privacy)
    Отпечатки (Fingerprinting)
    Отслеживание (Tracking)
    Анонимность (Anonymity)
Доступные способы усиления защиты
Расширения
    CanvasBlocker
    CSS Exfil Protection
    Decentraleyes
    ETag Stoppa
    Header Editor
    HTTPS Everywhere
    Neat URL
    uBlock Origin
    uMatrix
ghacks user.js
Мне мало умеренного Hardening, хочу всё по-максимуму!
Сайт не работает — кто виноват, где чинить?
Забавные факты



Модель угроз


Для начала, давайте проанализируем модель угроз, что именно мы защищаем и от чего.



Безопасность (Security)


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


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



Конфиденциальность (Privacy)


Никто кроме отправителя и получателя не должен иметь возможность прочитать переданную информацию.


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



Отпечатки (Fingerprinting)


У пользователя должна быть возможность помешать веб-сайту определить, что прошлый и текущий просмотры сайта выполнялись одним и тем же пользователем.


Здесь начинается ад. Забудьте те благословенные времена, когда достаточно было почистить куки и зайти на сайт с другого IP, чтобы он в принципе не мог связать между собой эти два посещения. Сейчас сайты имеют доступ к такому количеству разнообразных и уникальных данных о браузере, ОС и железе пользователя, что помешать им стало невозможно. Скажу честно, в процессе подготовки этой статьи я узнал много такого, что мне теперь хотелось бы "развидеть" — хотя я и до этого знал немало о происходящем в данной области, но масштабов бедствия я и близко себе не представлял.


Неполный список того, что о вашей системе могут узнать веб-сайты:
  • На сервере:
    • Детали сетевого подключения (IP, MTU).
    • SSL Session ID. Обычно изменяется раз в сутки. А это значит, что, например, если вы сегодня уже заходили на https://gmail.com под одним аккаунтом, а потом почистили куки etc. и сменили VPN чтобы зайти на https://gmail.com с другого IP — гугл всё-равно сможет определить, что оба посещения сделали из одного браузера.
    • Всё, что разглашают HTTP-заголовки: версию браузера, ОС, язык.
  • Через CSS:
    • Размеры окна браузера. Причём это одна из самых уникальных характеристик браузера.
    • DPI/масштаб.
    • Установленные шрифты. Через CSS можно проверить наличие только заранее известных шрифтов (JS позволяет получить все шрифты), но и этого более чем достаточно — в конце концов, список всех существующих шрифтов конечен и общеизвестен.
    • OS (по типичным для неё шрифтам).
  • Через JS:
    • Железо:
      • Количество параллельных процессов браузера (concurrency).
      • Производитель и модель видеокарты (через WebGL).
    • Браузер:
      • Название и версия.
      • ОС.
      • Локаль.
      • Язык.
      • Таймзона.
      • Настройки прав доступа (доступ к местоположению, микрофону, etc.) — какие разрешены, какие запрещены, какие спросят пользователя (что тоже формирует довольно уникальный набор в соответствии с настройками пользователя).
      • Используется ли режим приватного просмотра.
    • Экран:
      • Размеры (разрешение) экрана, доступное, внешнего окна, внутреннего окна, viewport.
      • Включен ли полноэкранный режим.
      • Ориентация экрана.
      • Глубина цвета.
      • DPI.
      • Используется ли HiDPI.
      • Текущий масштаб (zoom) страницы.
      • devicePixelRatio.
    • Хранилища данных (способы запомнить идентификатор пользователя):
      • Куки.
      • localStorage.
      • sessionStorage.
      • indexedDB.
      • appCache.
      • Web Worker.
      • Shared Worker.
      • Service Worker.
      • Кэш Service Worker.
      • Уведомления (notifications).
      • Обычный кэш (включая фокусы с ETag, etc.).
    • Fonts (ещё один из самых уникальных факторов).
    • Canvas (можно получить уникальный отпечаток чтением результата отрисовки браузером).
    • DOMRect.
    • Intersection Observer API.
    • WebGL (помимо прочего можно узнать название видеокарты).
    • Audio API.
    • Список разрешённых алгоритмов шифрования и версий TLS.

После взгляда на этот список требуемое законом от веб-сайтов уведомление пользователей об использовании кук выглядит форменным издевательством.


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


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



Отслеживание (Tracking)


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


Обычно отслеживание осуществляется через подключение ресурсов (JS/CSS/image) одного и того же стороннего сайта на множестве других сайтов. Казалось бы, использование расширений для блокирования трекеров и рекламы должно решить эту проблему… но, увы, это не так. Да, это помогает, но суровая правда в том, что сайты торгуют этими данными, так что даже если вы посетили два сайта на которых заблокированы все сторонние ресурсы, то эти сайты всё-равно могут продать данные о ваших посещениях одной и той же рекламной сети, что позволит ей связать эти посещения между собой (учитывая вышеупомянутые возможности получения уникального отпечатка пользователя — это не составит проблемы).


Тем не менее, блокировать сторонние ресурсы всё-равно стоит — это ускоряет загрузку сайтов, избавляет от рекламы, затрудняет и удорожает отслеживание, а так же сокращает источники атак на браузер.



Анонимность (Anonymity)


Не должно быть возможности связать просмотр веб-сайта с реальной личностью пользователя, если он не регистрировался на этом сайте под своим настоящим именем и не заходил на него с IP-адреса, зарегистрированного на него провайдером.


Учитывая возможности получения отпечатков и отслеживания — анонимность пользователя, который хоть одному из посещённых сайтов позволил узнать его реальную личность, превращается в фикцию.


Усиление анонимности выходит за рамки нашей задачи. Вкратце, имейте в виду: никакой анонимности при использовании вашего основного браузера нет, и никогда не будет. Нужна анонимность — смотрите в сторону специализированных виртуалок (с настройками по умолчанию и без сохранения результатов на диске после выключения виртуалки), VPN+Tor и Tor-браузера вместо обычного Firefox.



Доступные способы усиления защиты


Итак, что же мы можем предпринять? В порядке возрастания сложности использования:


  • Можно использовать встроенные возможности браузера по контролю и изоляции веб-сайтов на индивидуальной основе:
    • Контейнеры.
    • Приватное окно.
    • Управление правами доступа для веб-сайтов.
    • Блокирование сторонних кук и известных трекеров.
    • Удаление сохранённых веб-сайтами данных/кэша.
  • Можно установить разнообразные расширения.
  • Можно поковыряться среди нескольких тысяч доступных настроек браузера в about:config и изменить некоторые из них.

С первым пунктом всё тривиально, но хотелось бы особо отметить контейнеры. Это относительно новая фича Firefox, которая позволяет изолировать группу сайтов в одном контейнере от группы сайтов в другом. По сути, использование разных контейнеров в одном браузере должно работать так же, как одновременное использование нескольких разных браузеров — но сделать это более удобным для пользователя. Изоляция контейнеров всё-таки немного слабее, чем при использовании разных браузеров, но она достаточно хороша и контейнерами вполне можно пользоваться. Тем не менее, контейнеры сами по себе не усиливают защиту ни одного из пунктов, рассмотренных в нашей модели угроз — максимум, они незначительно препятствуют получению отпечатка пользователя за счёт изоляции хранилищ данных (куки, кэш, etc.).


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


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



Расширения


Подумайте, стоит ли использовать автоматическое обновление расширений (его можно выключить на about:addons). Есть множество причин, почему его стоит отключить (но обновлять их всё-равно необходимо, просто вручную и внимательно отслеживая изменения, в т.ч. политики приватности):


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

Некоторые расширения используют CSP для реализации отдельных фич. К сожалению, в данный момент архитектура Firefox такова, что модифицировать CSP при загрузке веб-сайта сможет только одно из расширений — и вы не можете заранее быть уверены, которое из них. Поскольку очень критично гарантировать корректную работу uMatrix, то необходимо внимательно проконтролировать настройки других расширений, чтобы убедиться что в них отключены все фичи, которые используют CSP:


  • uBlock Origin: Выключить Панель управления → Настройки → Поведение по умолчанию → [ ] Блокировать сторонние шрифты (точно не уверен, но логично предположить что для индивидуальных сайтов это тоже лучше не включать).
  • HTTPS Everywhere: Выключить Иконка → [ ] Шифровать все подходящие сайты (EASE).
  • CanvasBlocker: Выключить Настройки → Прочие → [ ] Block data URL pages (чтобы этот пункт увидеть необходимо включить Настройки → [✓] Экспертный режим).

Если вы решите не ограничиваться установкой расширений, и поставите описанный ниже user.js, то учтите дополнительные нюансы:


  • Рекомендуемый вариант настроек user.js требует использования расширения uMatrix.
  • Некоторые настройки в user-overrides.js нужны для того, чтобы не сломать работу некоторых расширений — подкорректируйте их в соответствии с тем, какие расширения установлены у вас.


CanvasBlocker


  • Ссылка
  • Защищает: Отпечатки.
  • Описание: Мешает снимать отпечатки через разные API: Canvas, WebGL, Audio, History, Window (по умолчанию отключено — может ломать сайты), DOMRect.
  • Использование: Работает автоматически, внимания не требует. Показывает отдельную иконку в конце адресной строки на сайтах, которые пытаются использовать защищаемые API (через неё можно отключить блокирование на конкретном сайте).
  • Иконка: Можно скрыть в расширенное меню.
  • Настройка:
    [✓] Экспертный режим
    [✓] Block data URL pages` (конфликт по CSP с uMatrix)


CSS Exfil Protection


  • Ссылка
  • Защищает: Конфиденциальность.
  • Описание: Блокирует атаки типа CSS data exfiltration (кража данных со страницы через использование специфических CSS-селекторов).
  • Использование: Работает автоматически, внимания не требует.
  • Иконка: Можно скрыть в расширенное меню.
  • Настройка: Не требуется.


Decentraleyes


  • Ссылка
  • Защищает: Отслеживание.
  • Описание: Защищает от отслеживания «бесплатными» CDN. Содержит популярные файлы, которые обычно запрашиваются через CDN, и отдаёт их браузеру без выполнения реального сетевого запроса на CDN. Побочный эффект — немного ускоряет загрузку сайтов.
  • Использование: Работает автоматически, внимания не требует.
  • Иконка: Можно скрыть в расширенное меню.
  • Настройка: Не требуется.

К сожалению, у меня он подвешивает интерфейс Firefox пока в фоне грузятся некоторые сайты, так что пришлось его пока выключить.



ETag Stoppa


  • Ссылка
  • Защищает: Отпечатки.
  • Описание: Удаляет заголовок ETag: из ответа сервера.
  • Использование: Работает автоматически, внимания не требует.
  • Иконка: Отсутствует.
  • Настройка: Не требуется.

Вместо использования этого расширения можно добавить правило в Header Editor (имеет смысл если он используется и для других правил):


  • Rule type: Modify response header
  • Match type: All
  • Execute type: Custom function
  • Custom function:
    for (const a in val) {
        if (val[a].name.toLowerCase() === 'etag') {
            val[a].value = '';
        }
    }


Header Editor


  • Ссылка
  • Защищает: Зависит от того, как им пользоваться.
  • Описание: Позволяет задать собственные правила для блокирования или перенаправления запросов, а так же изменения заголовков запроса или ответа.
  • Использование: Работает автоматически, внимания не требует.
  • Иконка: Можно скрыть в расширенное меню.
  • Настройка: Сам по себе он не делает вообще ничего — вы должны сами определить для него правила.

Один из примеров правил упомянут выше, в описании ETag Stoppa. Но если других правил нет, то проще использовать ETag Stoppa вместо этого расширения.


Другой пример: я обнаружил, что расширение ImTranslator зачем-то отправляет на все сайты две куки: BL_D_PROV=undefined; BL_T_PROV=undefined. Может это просто баг, но мне не нравится, что он сообщает всем сайтам, что я использую это расширение. Проблема решается вот таким правилом:


  • Rule type: Modify request header
  • Match type: All
  • Execute type: Custom function
  • Custom function:
    for (const a in val) {
        if (val[a].name.toLowerCase() === 'cookie') {
            val[a].value = val[a].value.split(/;\s*/).filter((kv)=>{ return !kv.match(/^BL_[DT]_PROV=/) }).join('; ');
            if (val[a].value === '') {
                delete val[a];
            }
        }
    }


HTTPS Everywhere


  • Ссылка
  • Защищает: Конфиденциальность.
  • Описание: Автоматически переключает на https там, где возможно.
  • Использование: Работает автоматически, внимания почти не требует (последний раз у меня ломался какой-то сайт из-за этого расширения года полтора назад).
  • Иконка: Используется для индивидуальной настройки сайтов.
  • Настройка: Не требуется.


Neat URL


  • Ссылка
  • Защищает: Отслеживание.
  • Описание: Удаляет мусорные параметры из URL.
  • Использование: Работает автоматически, внимания не требует.
  • Иконка: Можно скрыть в расширенное меню.
  • Настройка: Не требуется.


uBlock Origin


  • Ссылка
  • Защищает: Безопасность, Отпечатки, Отслеживание.
  • Описание: Автоматический блокировщик (на базе сторонних списков) всякого мусора по типу и/или url, а так же отдельных элементов страницы: от рекламы и уведомлений об использовании сайтом кук до трекеров и малвари.
  • Использование: Изредка необходимо настраивать новый сайт.
  • Иконка: Необходима для настройки текущего сайта, включая ручную блокировку отдельных элементов страницы.
  • Настройка: (списки фильтров — вопрос личных предпочтений)
    Настройки
        [✓] Я опытный пользователь
    Настройки → Приватность
        [✓] Предотвратить утечку локального IP-адреса через WebRTC
        [✓] Блокировать CSP-отчёты
    Списки фильтров → Встроенные
        [✓] uBlock filters – Annoyances
    Списки фильтров → Реклама
        [✓] Adblock Warning Removal List
    Списки фильтров → Приватность
        [✓] Fanboy’s Enhanced Tracking List
    Списки фильтров → Вредоносные домены
        [✓] Malvertising filter list by Disconnect
        [✓] Spam404
    Списки фильтров → Раздражающие элементы
        [✓] AdGuard Annoyances filter
        [✓] Fanboy's Cookie List
        [✓] Fanboy’s Annoyance List
    Списки фильтров → Многоцелевые
        [✓] Dan Pollock’s hosts file
        [✓] hpHosts’ Ad and tracking servers
    Списки фильтров → Регионы, языки
        [✓] RUS: RU AdList


uMatrix


  • Ссылка
  • Защищает: Безопасность, Отпечатки, Отслеживание.
  • Описание: Ручной блокировщик отдельных ресурсов по типу и домену.
  • Использование: Регулярно необходимо настраивать новый сайт.
  • Иконка: Необходима для настройки текущего сайта.
  • Настройка:


    Настройки → Удобство
        [✓] Скрывать заполнитель заблокированных элементов
    Настройки → Приватность
        [✓] Удалять незаблокированные сессионные куки через [1440] минут после последнего использования
        [✓] Удалять содержимое локального хранилища заблокированных сайтов
        [✓] Очищать кэш браузера каждые [1440] минут
        # Стоит отключить referer если uMatrix используется совместно с user.js:
        [ ] Подменять строку HTTP referrer в запросах к сторонним источникам
        [✓] Только HTTPS: запретить смешанное содержимое
    # Отредактируйте "Временные правила", а потом нажмите "Сохранить" и "Утвердить":
    Настройки → Мои правила
    
        * * script block


Это расширение обеспечивает самую серьёзную защиту, но у этого есть цена: многие сайты будут сломаны, и их потребуется чинить вручную. Например, только что добавленное правило "* * script block" отключило выполнение JS на всех сайтах — что, разумеется, многие из них сломало. Но не торопитесь удалять это правило: во-первых, это не сильно поможет, т.к. загрузка многих типов ресурсов включая JS со сторонних сайтов всё-равно отключена (что так же ломает многие сайты); а во-вторых подход "белый список: запрещено всё, что не было явно разрешено" в современном вебе единственно приемлемый, раз уж вы хотите усилить защиту Firefox.


Хорошая новость в том, что чинить сайты не сложно — обычно достаточно двух-трёх кликов в матрице, которую показывает иконка расширения, и последующего перечитывания текущей страницы. Главное, не забывать в той же матрице сохранять изменения, после того, как вы почините сайт.


И готовьтесь морально, что первое время придётся чинить почти каждый сайт из тех, которые вы часто посещаете — это связано с тем, что на активно используемых сайтах вам, почти наверняка, понадобится как минимум включить JS самого сайта, плюс, возможно, некоторые ресурсы со сторонних сайтов. Потерпите первые дни, потом станет намного легче, честно! :)


Надо отметить, что интерфейс uMatrix очень ясный и удобный — после того, как вы с ним разберётесь. Иными словами, интуитивно понятным его назвать нельзя. Поэтому крайне желательно почитать документацию! Как минимум — раздел uMatrix basic usage (с картинками) из вышеупомянутой статьи Firefox Configuration Guide for Privacy Freaks and Performance Buffs. А вообще я очень рекомендую почитать wiki uMatrix — там много всего, но информация очень нужная и полезная.


Есть ещё один дополнительный набор правил, которые может иметь смысл добавить в Настройки → Мои правила — он поможет заблокировать доступ сайтам из интернета к ресурсам в локальной сети (это не защита от атаки DNS rebinding). Если вы установили uMatrix достаточно давно, то сначала нужно удалить правило "matrix-off: localhost true" (новые версии uMatrix его не устанавливают).


Добавьте вот эти правила:
* localhost * block
* 127       * block
* 10        * block
* 192.168   * block
* 169.254   * block
* 172.16    * block
* 172.17    * block
* 172.18    * block
* 172.19    * block
* 172.20    * block
* 172.21    * block
* 172.22    * block
* 172.23    * block
* 172.24    * block
* 172.25    * block
* 172.26    * block
* 172.27    * block
* 172.28    * block
* 172.29    * block
* 172.30    * block
* 172.31    * block
* [::1]     * block
* [fc00::]  * block
* [fd00::]  * block
* [fe80::]  * block
* [fe80::1%lo0] * block
* [ff02::1] * block
* [ff02::2] * block
localhost localhost * allow
127       127       * allow
10        10        * allow
192.168   192.168   * allow
169.254   169.254   * allow
172.16    172.16    * allow
172.17    172.17    * allow
172.18    172.18    * allow
172.19    172.19    * allow
172.20    172.20    * allow
172.21    172.21    * allow
172.22    172.22    * allow
172.23    172.23    * allow
172.24    172.24    * allow
172.25    172.25    * allow
172.26    172.26    * allow
172.27    172.27    * allow
172.28    172.28    * allow
172.29    172.29    * allow
172.30    172.30    * allow
172.31    172.31    * allow
[::1]     [::1]     * allow
[fc00::]  [fc00::]  * allow
[fd00::]  [fd00::]  * allow
[fe80::]  [fe80::]  * allow
[fe80::1%lo0] [fe80::1%lo0] * allow
[ff02::1] [ff02::1] * allow
[ff02::2] [ff02::2] * allow


ghacks user.js


С расширениями было всё просто (да, и даже с uMatrix — он хоть и усложняет использование браузера, но и основную защиту даёт тоже он), а сейчас мы добрались до сложной части.


Проект ghacks user.js предоставляет нам базовый файл user.js, плюс скрипты для его обновления и сброса удалённых настроек. Данный файл содержит (на данный момент) изменение 488 настроек в about:config! И его считают базовым не без причины: использование его as is, без внесения нужных вам изменений — практически гарантированно приведёт к катастрофе (например, его настройки по умолчанию регулярно удаляют всю историю браузера, блокируют русификацию Firefox, ломают множество сайтов и расширений).


Этот проект предпринимает очень серьёзные усилия для защиты Отпечатков и Отслеживания… настолько серьёзные, что пользоваться браузером становится до такой степени неудобно, что честнее сказать "невозможно". И при этом всё-равно заметно проигрывает в защите Tor-браузеру в виртуалке. Это никоим образом не означает, что проект бесполезен для пользователей — просто, чтобы им пользоваться, необходимо потратить немало времени на создание собственного user-overrides.js.


По этой причине перед его использованием необходимо:


  • Внимательно прочитать сам user.js (порядка 2300 строк).
  • Внимательно прочитать все страницы wiki проекта.
  • Создать собственный файл user-overrides.js со всеми изменениями относительно user.js, которые нужны лично вам.
  • Сделать бэкап своего профайла Firefox!!!
  • И только потом активировать user.js.

Это требует времени, и немало. Стоит ли оно того? Сложный вопрос.


Чтобы на него ответить я составил (неполный) список того, что он улучшает помимо Отпечатков и Отслеживания — посмотрите, и сами решайте:


  • Безопасность:
    • Отключает cross-origin HTTP Auth (фишинг учётных записей).
    • Усиливает защиту при использовании запомненных паролей.
    • Усиливает защиту при использовании TLS и сертификатов.
    • Ограничивает поддержку шрифтов (высокая вероятность уязвимостей).
    • Отключает DRM-плагины.
    • Отключает WebGL (высокая вероятность уязвимостей).
    • Ограничивает фичи WebGL если его включить (высокая вероятность уязвимостей).
    • Отключает всяческие варианты workers (майнеры, Meltdown/Spectre).
    • Отключает asm.js (высокая вероятность уязвимостей).
    • Отключает WebAssembly.
    • Отключает Shared Memory (Spectre).
    • Добавляет rel=noopener для ссылок с target=_blank (безопасность).
    • Усиливает защиту при взаимодействии со сторонними локальными приложениями.
    • Отключает MathML (уменьшение поверхности атаки).
    • Форсирует Punycode для IDN (анти-спуфинг).
    • Активирует экспериментальную поддержку CSP 1.1.
    • Включает first party isolation.
  • Утечки, управляемость:
    • Отключает телеметрию Firefox и завязанные на неё фичи (рекомендации, etc.).
    • Отключает сторонние сервисы вроде Pocket.
    • Блокирует выкачивание ссылок, на которых не нажимали (ping, pre-fetch, etc.).
    • Отключает сетевые фичи, через которые можно обойти прокси/VPN и узнать IP (включая IPv6 и WebRTC).
    • Ограничивает утечку истории предыдущих страниц в текущей вкладке.
    • Отключает :visited (утечка истории).
    • Блокирует утечку в процессе набора в строке адреса/поиска текста через подсказки поисковика.
    • Отключает screen sharing.
    • Запрещает доступ к clipboard.
    • Отключает Intersection Observer API (стабильность, определение блокировщика рекламы).

Чтобы упростить подготовку своего user-overrides.js автор вышеупомянутых статей на 12bytes.org выложил собственный user-overrides.js. Мне он категорически не подошёл, потому что мне нужна умеренная защита, при которой сохраняется удобство использования браузера, пусть даже ценой ослабления защиты от Отпечатков и Отслеживания.


Я так же выложил свой user-overrides.js, возможно он упростит вам использование ghacks user.js.


Итак, чтобы начать использовать ghacks user.js нужно сделать следующее:


  • ОБЯЗАТЕЛЬНО! Сделайте бэкап своего текущего профайла Firefox.
  • Скачайте в каталог своего текущего профайла следующие файлы из проекта ghacks user.js:
    • user.js
    • updater.sh (и сделайте его выполнимым) или updater.bat
    • prefsCleaner.sh (и сделайте его выполнимым) или prefsCleaner.bat
  • Создайте в каталоге своего текущего профайла файл user-overrides.js.
    • Можете просто скачать мой user-overrides.js, после чего вписать в него своё текущее значение dom.push.userAgentID и внести нужные вам изменения.
  • Запустите ./updater.sh или updater.bat. Он обновит user.js и допишет ему в конец содержимое user-overrides.js.
  • Выйдите из Firefox и запустите ./prefsCleaner.sh или prefsCleaner.bat. Он удалит из файла prefs.js (содержащего ваши текущие настройки about:config) все настройки, которые упоминаются в user.js (включая закомментированные).
  • Запустите Firefox. Нажмите Ctrl-Shift-Del и удалите (за всё время):
    • Куки.
    • Кэш.
    • Данные автономных веб-сайтов.
  • Загляните в about:config, параметр _user.js.parrot должен иметь значение "SUCCESS" — иначе где-то в вашем user.js синтаксическая ошибка.

Имейте в виду, что все настройки, указанные в user.js, будут применяться при каждом запуске Firefox. Так что если вы измените какие-то из них через about:config, и захотите сохранить эти изменения при перезапуске Firefox, то их необходимо продублировать в user-overrides.js, после чего запустить ./updater.sh или updater.bat.


Не забывайте периодически запускать ./updater.sh или updater.bat для обновления user.js (хотя бы после выхода новой версии Firefox). Более детально процесс обновления описан в wiki проекта.



Мне мало умеренного Hardening, хочу всё по-максимуму!


Ну, в этом случае вот, что стоит делать дальше:


  • Отменить ослабляющие защиту изменения в user-overrides.js.
    • Вместо отмены блокировки Workers заблокировать их глобально в uMatrix.
  • Скрыть IP через Tor и/или публичный VPN сервис.
  • Поставить расширение Privacy-Oriented Origin Policy.
  • Поставить расширение Skip Redirect.
  • Поставить расширение Temporary Containers.
  • Почитать Firefox Search Engine Cautions, Recommendations и подчистить настройки поисковых систем в Firefox.
  • Удалить встроенные расширения из /usr/lib/firefox/browser/features/.
  • Включить глобальную подмену Referer для сторонних сайтов в uMatrix.


Сайт не работает — кто виноват, где чинить?


Я составил список изменений, которые могут нарушить работу сайта, чтобы можно было быстрее найти виноватого. Пометка "(Перекрыто)" означает, что данное изменение есть в оригинальном user.js, но оно отключено моим user-overrides.js.


  • Расширение: CanvasBlocker
    • Может подделывать чтение Canvas 2D.
    • Может подделывать чтение WebGL.
    • Может подделывать чтение Audio API.
    • Может подделывать чтение history.length.
    • Может защищать window.name и window.opener.
    • Может подделывать чтение DOMRect API.
    • Может блокировать data://.
  • Расширение: CSS Exfil Protection
    • Чистит/блокирует опасные правила CSS.
  • Расширение: ETag Stoppa
    • Удаляет из ответа сервера заголовок ETag:.
  • Расширение: Firefox Multi-Account Containers
    • Изолирует вкладки (куки, localStorage, etc.) относящиеся к разным контейнерам.
  • Расширение: HTTPS Everywhere
    • Подменяет http:// запросы на https:// на известных ему сайтах.
  • Расширение: Neat URL
    • Удаляет из url необязательные параметры.
  • Расширение: uBlock Origin
    • Удаляет со страниц отдельные элементы DOM.
    • Блокирует загрузку отдельных ресурсов по типу и/или url.
    • Может блокировать все popup на сайте.
    • Может блокировать нестандартные шрифты на сайте.
    • Может блокировать pre-fetching.
    • Может блокировать <a ping> и sendBeacon.
    • Может блокировать отчёты CSP.
  • Расширение: uMatrix
    • Блокирует загрузку отдельных ресурсов по типу и домену.
    • Может блокировать mixed content по домену.
    • Может блокировать workers по домену.
    • Может подменять Referer: по домену.
    • Может подменять <noscript> по домену.
    • Может блокировать <a ping> и sendBeacon.
  • ghacks user.js
    • (Перекрыто) Установка локали в en-US.
    • Отключает pre-fetching всего (ссылок, DNS, onMouseOver, etc.).
    • Отключает <a ping>.
    • Отключает IPv6 (утечка MAC, в т.ч. через некоторые VPN).
    • (Перекрыто) Отключает HTTP/2 и Alt-Svc: (fingerprinting).
    • (Перекрыто) Отключает /etc/hosts и локальный DNS при использовании SOCKS.
    • (Перекрыто) Отключает :visited (утечка истории).
    • (Перекрыто) Отключает date/time picker (утечка локали).
    • Отключает cross-origin HTTP Auth (фишинг учётных записей).
    • (Перекрыто) Делает обязательной проверку https-сертификата через OCSP.
    • Запрещает SHA1 https-сертификаты (может ломать локальный антивирус/MITM).
    • Ужесточает Public Key Pinning (может ломать локальный антивирус/MITM).
    • (Перекрыто) Блокирует пассивный mixed content.
    • Блокирует mixed content запросы из Flash.
    • (Перекрыто) Отключает нестандартные шрифты (fingerprinting).
    • Ограничивает поддержку шрифтов (высокая вероятность уязвимостей).
    • Отключает cross-origin Referer: если не совпадает базовый домен.
    • Отключает DRM-плагины.
    • (Перекрыто) Отключает OpenH264 Video Codec для видео-чата WebRTC.
    • (Перекрыто) Отключает WebRTC (утечка IP, в т.ч. через VPN).
    • Отключает WebGL (высокая вероятность уязвимостей).
    • (Перекрыто) Ограничивает фичи WebGL если его включить (высокая вероятность уязвимостей).
    • Отключает screen sharing.
    • Отключает чтение из canvas (fingerprinting).
    • (Перекрыто) Отключает авто-проигрывание HTML5 media.
    • Запрещает блокировать новые фичи window.open.
    • Запрещает контроль положения и размера при открытии нового окна.
    • Ограничивает возможность открыть popup событиями click и dblclick.
    • (Перекрыто) Отключает workers (майнеры, Meltdown/Spectre).
    • Запрещает доступ к clipboard.
    • Блокирует событие beforeunload.
    • Отключает asm.js (высокая вероятность уязвимостей).
    • Отключает WebAssembly.
    • Отключает Intersection Observer API (стабильность, определение блокировщика рекламы).
    • Отключает Shared Memory (Spectre).
    • Добавляет rel=noopener для ссылок с target=_blank (безопасность).
    • Отключает hardware acceleration (fingerprinting).
    • Отключает Web Audio API (fingerprinting).
    • Отключает sendBeacon.
    • Блокирует встроенное веб-содержимое на страницах file://.
    • Отключает MathML (уменьшение поверхности атаки).
    • (Перекрыто) Блокирует сторонние куки.
    • Отключает offline cache.
    • (Перекрыто) Включает first party isolation (может сломать кросс-доменный логин).
    • (Перекрыто) Включает resist fingerprinting (подделывает размеры/ориентацию экрана, таймзону, данные о сети, железе, версии и настройках браузера; огрубляет точность времени; блокирует доступ к сенсорам, геолокации; скрывает нажатия Shift и Alt; etc.).
  • Мой user-overrides.js
    • Блокирует сторонние куки известных трекеров.
    • Отключает TLS 1.0, 1.1.
    • Отключает слабые алгоритмы TLS.


Забавные факты


Отключение телеметрии Firefox, которое делает большинство продвинутых пользователей, внезапно, имеет неприятный побочный эффект: наше мнение перестаёт интересовать разработчиков Mozilla. Например, отказ от ALSA в пользу PulseAudio они объяснили тем фактом, что по данным телеметрии практически все пользователи используют PulseAudio. Аргумент "продвинутые пользователи, избегающие PulseAudio, обычно отключают телеметрию" ими не принимался, не смотря на то, что на этом настаивало много разных людей (я, кстати, тоже так работаю — ни PulseAudio, ни телеметрии).


В Firefox есть три большие фичи, которые должны усиливать безопасность: контейнеры, FPI (first party isolation) и RFP (resist fingerprinting). На данный момент какой-то толк в этом смысле от контейнеров можно получить только при использовании расширения Temporary Containers (упомянутого выше, в разделе "Мне мало умеренного Hardening") — но я слабо представляю себе юзабилити браузера, который притворяется что каждая новая вкладка открывается в отдельном браузере. Остальные две фичи всё ещё ломают множество сайтов и важные расширения, поэтому использовать их нельзя. Получается, что фичи вроде бы есть, а толку от них пока что нет.


Согласно https://html5test.com после реализации описанного в этой статье поддержка фич HTML5 уменьшается с 508 из 555 (только расширения, без user.js) до 493 (с user.js и моим user-overrides.js).

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

А Вы собираетесь усилить защиту своего Firefox?

Поделиться публикацией

Комментарии 35

    0
    Спасибо за интересную публикацию!
      0
      «продвинутые пользователи, избегающие PulseAudio, обычно отключают телеметрию»

      А что не так с PulseAudio?
        0

        Почитайте по той ссылке комментарии — все причины избегать PulseAudio там упомянули. Здесь это обсуждать смысла нет — начнётся холивар, как всегда.

          0
          Если не изменяет память, ещё была проблема в том, что соответствующий код, отвечающий за работу с пульсой, просто стало некому поддерживать. Ну а следом, да, логически вытекает, что если нет желающих делать это добровольно, то придётся сажать на это оплачиваемого программиста, а раз оно вообще нужно полутора пользователям (по данным телеметрии), то и в топку.
            +2
            код, отвечающий за работу с пульсой, просто стало некому поддерживать
            Наверное, опечатка и хотели написать «с альсой».
              0
              Да, именно так.
          0
          А что такое PulseAudio?
            0
            От автора systemd…
              +2

              Спорим, такой ответ не сильно поможет REPISOT? :) Теперь придётся таки ему ответить нормально.


              Про автора PulseAudio (англ.).


              Формальный ответ на "что такое PulseAudio" — это отдельное приложение-демон, звуковой сервис, работающий поверх ALSA (сама ALSA реализована в ядре, поэтому работает у всех и ничего отдельно устанавливать и запускать не требует).


              На подразумевающийся вопрос "а что не так с PulseAudio" я отвечать не хотел, потому что обсуждение обычно сваливается в холивар из-за субъективного опыта с PulseAudio у разных людей. Скажем так, у некоторых людей возникают самые разные проблемы при попытке использования PulseAudio. А учитывая, что ALSA у них уже работает, причём без каких-либо проблем, эти люди предпочитают PulseAudio не устанавливать вообще. Обычно почему-то получается так, что эти "некоторые люди" — либо продвинутые IT-шники (которые любят всё аккуратно настраивать, и в т.ч. отключают телеметрию Firefox), либо музыканты (которых просто слишком мало, чтобы повлиять на результаты телеметрии). При этом у большинства обычных юзеров PulseAudio устанавливается вместе с дистрибутивом и работает без особых проблем (или они эти проблемы просто не замечают/игнорируют, точно не знаю).

                –1
                продвинутые IT-шники (которые любят всё аккуратно настраивать, и в т.ч. отключают телеметрию Firefox)
                Отключение телеметрии — не признак продвинутости. Это скорее признак наличия паранойи.
                  +1

                  Вы не хотите расставить по своей квартире веб-камеры, с беспарольным доступом к трансляции через интернет? Нет? Странно, похоже, у Вас паранойя!


                  Определение:


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

                  Слежка через телеметрию — это факт, а не бредовая идея. Что именно отслеживается, насколько подробно, насколько эти данные анонимизируются перед передачей на сервера мозиллы, насколько можно доверять тому, что они анонимизируются уже на этих серверах (вне зависимости от доверия самой мозилле регулярно открываются факты вроде сохранения паролей пользователей "для отладки" разработчиками фейсбука — кто гарантирует, что разработчики мозиллы тоже не сохраняют "для отладки" не анонимизированные данные?)… простых и очевидных ответов на эти вопросы нет. Да, есть about:telemetry — но там такая туча данных, которые могут со временем изменяться, что анализировать их на предмет "готов ли я передать эти данные" у меня нет ни времени, ни желания.


                  Так что речь вовсе не о паранойе, а о том, что продвинутые IT-шники более адекватно оценивают объём передаваемых данных и практическую невозможность оценить насколько эти данные анонимизированы — т.е. невозможность гарантировать, что передача этих данных не приведёт к нанесению ущерба нам самим, если они попадут "не в те руки". А в отсутствие такой гарантии добровольная передача этих данных не сильно отличается от примера с веб-камерами, с которого я начал.

                    –1
                    Вы сейчас занимаетесь рационализацией. Уже очевидно, что обсуждать с вами это дальше нет смысла.

                    Минус за нелепую аналогию с веб-камерами, и за попытку поставить знак равенства между «телеметрия» и «слежка». Это проявление либо невежества (отсутствие понимания характера собираемой статистики, и для чего она вообще нужна), либо паранойи (от нелепого «Mozilla узнает, что за последний месяц я 15 раз кликнул по кнопке “добавить в закладки” в адресной строке — какой кошмар!» до более общего «они наверняка собирают что-то кроме того что заявлено» из разряда теорий заговоров).

                    Если вы используете софт от Mozilla — значит вы доверяете этой компании. Даже когда вы меняете какие-то настройки для отключения телеметрии — вы доверяете тому, что они работают именно так, как заявлено. Если вы заходите в about:telemetry для проверки что за данные собираются — вы доверяете тому, что там отражено действительно всё, что собирается. Если вы не доверяете Mozilla — то логично либо отказаться от её кода вообще, либо самостоятельно проверить весь код браузера, собрать его, и только после этого использовать.

                    Если вы доверяете Mozilla достаточно, чтобы выполнять её на своей машине без полной его проверки — тогда у вас по идее нет оснований для подозрений в сборе статистики выше разумного в случае включённой телеметрии. Переключение каких-то настроек, конечно, может немного успокоить вашу паранойю, но по факту вы всё равно выполняете чужой код, и вы точно не знаете что он делает. Может он при выключении телеметрии начинает каждые 15 секунд снимать скриншоты экрана и отсылать их заинтересованным лицам, которым просто любопытно, чем вы там таким занимаетесь, раз уж паранойя заставила потратить время на отключение телеметрии.
                      +1

                      Вот как раз те примеры недоверия, которые описали Вы, являются типичным примером паранойи, соответствующим описанию этого термина.


                      Это проявление либо невежества (отсутствие понимания характера собираемой статистики, и для чего она вообще нужна)

                      Так я это и не скрываю: я открыто заявил, что времени анализировать весь объём данных на about:telemetry у меня просто нет, равно как и нет возможности постоянно контролировать какие данные туда добавляются каждой новой версией или при переключении какой-нибудь настройки.


                      Был бы там десяток очевидных значений — я бы телеметрию не выключал. А так — сами виноваты, слишком много всего хотят знать, что сильно испортило юзабилити списка собираемых данных, и привело к тому, что проще выключить телеметрию, чем оценить её адекватность.


                      попытку поставить знак равенства между «телеметрия» и «слежка»

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


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

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

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

                        Но это ничего не говорит о «продвинутости» пользователя. Ничто не мешает обывателю выклюить «слежку» (это слово производит большее впечатление на обывателя, нежели «телеметрия»), просто пользуясь инструкциями «для чайников». При этом он не будет толком понимать что именно он собственно делает.
                          0
                          Эта степень доверия уже подразумевает под собой некую уверенность в том, что Mozilla не станет собирать данные больше разумного.

                          Я не уверен, что я и мозилла одинаково оцениваем масштабы "разумного". Доверие — это не бинарный переключатель, доверие распространяется до определённой степени и на определённые вещи. Я доверяю что в коде опенсорс проектов не делают совсем уж неприемлемых вещей (хотя исключения периодически случаются, но обычно их относительно оперативно выявляют — ну или мы знаем только о тех, которые выявили :)), по крайней мере не сообщив об этом открыто. Но это не подразумевает автоматического доверия разработчикам этих проектов стоять за моей спиной и наблюдать, как я работаю в инете.

          0
          Стоит отметить, что приватность вредит анонимности и наоборот.

          Простой пример: если у подавляющего большинства пользователей браузер посылает Referer всегда, а у вас нет, то вы раскрываете сайтам меньше сведений о себе (о том, откуда вы пришли, плюс к приватности), но начинаете выделяться (минус к анонимности).

          Проблема решается очень просто: не скрещивать ужа с ежом, а чётко разделять свою повседневную деятельность в сети (которую легко связать с вашей реальной личностью) и анонимную. Разные браузеры, разные физические машины. Вот там вы Вася Иванов, а вот тут вы Ужасный Пират Робертс, и эти личности как можно сильнее не должны пересекаться.
            +1

            Поздно начинать выделяться — все уже так выделились, что обратно не спрятаться. Почитайте в статье про отпечатки, там та-акой кошмар творится, волосы дыбом. :(

            +1
            В целом, без мелочей типа :visited, шрифтов и прочего повседненый сёрфинг превращается в такую боль, что я со временем плюнул и просто блокирую самые базовые вещи типа трекеров и рекламы, которые дают видимое ускорение работы. Настолько надоедает выяснять, почему же не работает очередной сайт (а не работает он из-за запрета сторонних кук, либо используется mixed content и т.р.), что забиваешь на то, что попадёшь в какую-то там обезличенную статистику. В конце концов, я и на улицу в паранже/маске ведь не выхожу…

            Допускаю, что кто-то может презрительно сказать «ещё один променял приватность на удобство», но я правда, не вижу причин негодовать от того, что, допустим, разработчики Firefox через телеметрию узнают мою операционную систему или то, сколько за сутки я открыл вкладок. Но это не значит, что я готов выложить в интернет, скажем, скан паспорта.

            P.S. В копилку любителям приватности. Позиционируется, правда, как браузер, ориентированный на обход антифрода (в частности, массовую регистрацию аккаунтов Amazon, Google, Ebay и т.д.), но может оказаться полезным и для людей, озабоченных тем, что за ними следят.
              0
              Плюс поставить не удостоин, поэтому соглашаюсь в устной форме :)

              Дополню, что достаточно совершенную защиту нельзя обеспечить даже ценой существенной потери юзабилити. В основном, цель всего этого — моральное удовлетворение, что таргетированную рекламу покажут не десять сетей, а две. Так как неминуемо начинаешь добавлять исключения для всех этих CDN и прочих облаков (пусть даже в рамках отдельных ресурсов). В итоге — куча лишних нажатий просто для того, чтобы прочитать статью на новом для себя сайте, каждое исключение — потенциальная «дыра».

              Вот уже несколько месяцев сидел на новом компьютере с усиленным харденингом браузера схожим с описанным в статье. В итоге, по рекламе и прочим признакам вижу, что харденинг начал протекать. На другом компьютере, где Firefox стоит в обычном режиме, по граждански (пара блокеров, основные настройки безопасности и всё), картина принципиально не отличается — так же чисто, так же быстро и по косвенным признакам видно, что следят за мной примерно так же. Но всё работает с первого раза :)

              А паранджу при необходимости можно и надеть именно тогда, когда это нужно. Всё равно там одним браузером дело не ограничивается.
              0
              Очень крутая публа — респект автору просто хотя бы за систематизацию полезной инфы в одном месте.
              Понятно, что каждому понадобится только какая-то часть этого материала — возможно небольшая. Но понадобится.

              Спасибо!
                0
                Отличная компиляция, спасибо!

                Особенно заинтересовала та часть «ghacks user.js», которая про Meltdown/Spectre.
                Было бы отлично иметь сборку или форк файла только с этими параметрами, для браузеров в организациях. С каждым падающим по этому поводу сайтом разбираться отдельно (и есть подозрение, что подавляющий процент составят не-рабочие сайты).
                  +1

                  Если я ничего не забыл, то Meltdown/Spectre "блокируются" (достаточно условно) путём запрета на все Workers. А Workers можно с тем же успехом глобально запретить в uMatrix, и потом включать индивидуально избранным сайтам, которые без них никак.

                  0
                  Простите, а все эти мероприятия по увеличению безопасности Firefox делаются руками?
                  Существует ли возможность автоматизировать сей процесс?
                  Я лично ограничиваюсь установкой расширения Ublockorigin на все проходящие мимо компьютеры, но делать это руками становится лень…
                    0
                    Еще не упомянули расширение Cookie AutoDelete, которое очень удобно удаляет все ненужные куки по таймауту, с возможностью удобного внесения доменов в вайтлист.
                      +1

                      А зачем нужны ненужные куки? Ненужные я блокирую uMatrix. А нужные удалять вроде как нет необходимости.

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

                          Чистить куки раз в час/сутки в надежде, что их за этот час/сутки не украдут — так себе стратегия. Тем более, что на основных сервисах, на которых мы постоянно сидим, куки чистить не получится — иначе мы будем вынуждены постоянно перелогиниваться, и, в результате, всё-равно куки будут доступны практически 100% времени. В общем, если кто-то имеет возможность украсть куки — он их получит, периодическая чистка тут не спасёт.

                            0
                            Согласен, поэтому сам не чищу :)

                            Но некоторым кажется, что эта мера безопасности оправдана. Опять таки, сценарии бывают разные, например, компьютер на работе. Чистить не обязательно по расписанию, можно ещё и по закрытию вкладки. Залогинлся в личный/одноразовый сервис, что-то там быстро сделал, просто закрыл окно — авторизация стёрлась. К тому же, это не обязательно авторизация, могут быть ещё параметры просмотра какие-то.

                            В общем, сам не практикую, но идею понимаю.
                              0
                              Чистить не обязательно по расписанию, можно ещё и по закрытию вкладки.

                              Ну так для этого контейнеры теперь есть. Включая плагин Temporary Containers, который доводит эту идею до предела — он как раз почистит все куки при закрытии вкладки.

                      0
                      Главное при этом понимать, что профессиональный слесарь/взломщик так же может рассказать про любые замки.
                      Но это не значит, что запертая и отпертая двери не отличаются :)

                      А за статью спасибо
                        +1
                        Радует, что в свете ужесточения законов, начали появляться статьи о реальной безопасности пользователя в сети. Плохо, что их вынуждены писать, по сути, сами пользователи. Конечно, глупо ожидать подобные статьи от российских ИБ-компаний, плотно сидящих на госконтрактах. Тот же fingerprint на волне антитеррористической истерии позволил незаметно для большинства пользователей создать базу «цифровых слепков» значительной части компьютеров рунета. Зайдите на любой сайт из топ-100 в домене .ru с включенным детектором fingerprint — убедитесь. 9 из 10 айтишников, даже здесь на хабре, не понимают, что такое fingerprint, неся бред про файрволы и разрешение экрана. На данный момент, возможно считывание более 2 тысяч параметров canvas это даже больше чем даст отпечаток сетчатки глаза. Владеющий подобной базой уже не просто игрок на рынке, это реальная власть.
                        Выполняют эти контракты по «учету населения сети» вовсе не случайные Петя и Вася, а те самые ИБ-шники столь широкопредставленные, в том числе, и на хабре. Мое оценочное суждение: не осталось в России ИБ-компаний, незамаранных в проекте «цифровой лагерь». Помните об этом когда будете хлопать спикерам того же phd.

                        Что дальше?! Ну вы же слышали об «изоляции», очевидно, запретят ipv4 и NAT.
                        Запрет на самозащиту дефакто уже давно существует, почему «элита» общества, проповедующая уголовную мораль должна ограничивать себя в применении данного подхода и в отношении сети?

                          +1

                          Комментарий Ваш я одобрил, просто чтобы не превращать модерирование комментариев read-only аккаунтов в цензуру. Но не думаю, что стоит тянуть политику и в эту статью. Отпечатки и отслеживание — это глобальная проблема, она слабо связана с политикой (пока, по крайней мере, в основном отпечатками интересуется рекламный бизнес), и уж с локальной политикой РФ она связана ещё слабее.

                          0
                          Размеры окна браузера. Причём это одна из самых уникальных характеристик браузера.

                          Уникальная, но изменяемая с помощью параметра layout.css.devPixelsPerPx.
                          Разрешение экрана тоже изменяемо, с помощью расширения Chameleon, возможно с помощью Trace (в версии для chrome можно). Специального расширения для изменения расширения экрана не нашёл.

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

                          Навскидку,
                          Первоочередно меняю: ip, user agent, screen resolution, timezone, набор шрифтов.
                          Второстепенно: Canvas, WebGL, Audio API,…. (Canvas уникален, но изменчив, зависит от версий ПО, использование WebGL запрашивается сайтами не часто, ...)

                          Для серфинга использую Tor браузер с расширениями и отключенным TorLauncher.
                            0

                            Вы ведь понимаете, что чем больше всего Вы меняете, тем уникальнее получается результат, да?

                              0
                              Понимаю.

                              Порядок значимости ip адреса выше других параметров профиля браузера, так браузер не связан с моим физическим лицом.

                              Уникальность — изменчивость: другие параметры — другой профиль браузера.
                              Например, 14 мая, privacy.resistFingerprinting в новой версии Firefox станет защищать от генерации идентификаторов на основе разрешения экрана, MIME-типов, параметров в заголовках, плагинов, шрофтов, WebGL, Canvas, CSS, особенностей работы с мышью и клавиатурой.

                              По-видимому, стандартизация параметров TorBrowser, в первую очередь, позволила отделить параметры TorBrowser от реальных параметров ОС пользователя, использующихся в его остальных браузерах, во вторую, объединить профили пользователей в одну группу.

                              При использовании vpn после Tor, при изменении настроек, TorBrowser становится значительно удобнее и не менее уникальным среди других браузеров.

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

                          Самое читаемое