26 сентября 2013 в 18:46

Добавляем безопасности браузеру Firefox

image

В современном Интернете мы всё чаще сталкиваемся с различными опасностями, исходящими с Web-страниц. Уязвимые плагины, XSS на сайтах, эксплуатирование уязвимостей с помощью JavaScript, Clickjacking — и это далеко не полный список радостей жизни, которые могут встретиться на сайтах.

Даже если у Вас Linux или Mac OS X, нельзя быть полностью спокойными — в таком случае гадость просто не выйдет за пределы браузера, а вот cookies или LocalStorage извлечь вредоносный код вполне в состоянии. Также мощности компьютера могут быть использованы в совершенно неожиданных целях, вплоть до майнинга биткойнов на компьютере жертвы.

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


Полезные расширения



NoScript

NoScript Мне кажется, начать нужно именно с этого расширения, потому что оно, как мне кажется, необходимо сегодня каждому пользователю браузера — после Adblock Plus, разумеется. Если посмотреть на название, становится понятно, что основная задача данного расширения — блокировка JavaScript. И оно выполняет свою задачу прекрасно, причём намного удобнее, чем просто кнопка в настройках «Отключить JavaScript» (особенно, учитывая что в последних версиях лисы этой кнопки уже нет). Есть возможность разрешения посайтово, ведения белого и чёрного списков, а также наличествует поддержка временного разрешения для того или иного сайта.

Однако на этом возможности его не заканчиваются — ещё он отлично умеет блокировать плагины (любые), форсировать HTTPS на страничках, защищает от XSS-атак и ClickJacking (с помощью технологии ClearClick, позволяющей при обнаружении опасности посмотреть реальный вид элемента). Также имеется реализация интересной технологии ABE — своего рода firewall для Web, позволяющего ограничить доступ одних сайтов к другим.

Сайт NoScript

Adblock Plus

image Наверное, самое известное расширение для браузера. И правда, те, кто его установили уже не могут пользоваться браузером без блокировщика рекламы — таким чистым и светлым становится Интернет.

Однако не слишком очевидно, как он может помочь с безопасностью. Ответ — в его подписках. Они могут быть совершенно различными — собственно антирекламные (а вместе с ней вырезается и много если не вредоносного, то просто хламового контента), защита от слежки со стороны различных сайтов статистики (тут скорее приватность, чем безопасность), блокирование доменов, замеченных в распространении malware и многое другое. Из подписок я рекомендую использовать — EasyList, RuAdlist, EasyPrivacy, Fanboy Enchanced Trackers и Malware Domains. Это также поможет сделать браузер безопаснее.

Сайт AdBlock Plus

RequestPolicy

imageОчередной аддон, созданный для посайтового управления разрешения. RequestPolicy даёт вам возможность управлять межсайтовыми запросами.

Пример — сайт habrahabr.ru запрашивает картинки с habrastorage.org и скрипт с mc.yandex.ru. Habrastorage можно разрешить, а Яндекс.Метрику — оставить блокированной. Таким образом этот аддон поможет защититься от следящих сайтов, собирающих статистику по пользователю.

Ещё он точно защитит от XSS и всякой ерунды, которая Вам не понравится — вроде кнопок социальных сетей и части рекламы. Таким образом, данное расширение действительно даёт весьма хорошую защиту, но имеет один важный минус — необходимость активного взаимодействия с ним и ручного выбора разрешений — блокироваться будет действительно много и значительная его часть может оказаться необходимой для просмотра сайта. Так что решать Вам. Кстати, в версии 1.0 (имеет статус разрабатываемой) были добавлены подписки и возможность использования в режиме чёрного списка.

Сайт RequestPolicy

Cookie Monster

image Одни из тех расширений, функции которого, в общем, покрывает браузер, но с которым несравненно удобнее, чем без него. Cookie Monster позволяет управлять вашими Cookies, разрешая их только для тех сайтов, для которых вы это явно прописали. Также имеется возможность разрешать хранить Cookies только до закрытия браузера или запрещать только сторонние печеньки.

Очень удобное расширение, практически не требует взаимодействия, так как сайтов, на которых действительно нужны Cookies на деле очень мало — в основном это сайты, на которых вы зарегистрированы. Крайне рекомендуется всем.

Страничка расширения на Addons.Mozilla.Org

HTTPS Everywhere

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

Расширение очень полезно, особенно в тех случаях, когда приходится подключаться к Wi-Fi-сети где-нибудь в кафе или на вокзале, потому что позволяет вам не ошибиться в наборе именно https адреса или при переходе по ссылке. Также, он при возможности переписывает небезопасные запросы со странички на безопасные.

Страничка расширения на сайте EFF

WOT — Web Of Trust

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

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

Сайт WOT

RefControl и UaControl

image
Аддоны, предназначенные для контроля за HTTP-заголовками Referer (адрес странички, с которой плльзователь попал на сайт) и User Agent (неуникальный идентификатор браузера). Позволяют притворяться другими браузерами, или даже поисковыми роботами, не отсылать сайту информацию, как Вы на него попали или даже вписать в эти поля то, что вам хочется. Я вот одно время ходил по Интернету с User Agent'ом, сформированным как браузер IE 10 под Linux. Интересно, вебмастеры читают подобные логи?

image В принципе, RefControl позволяет запретить сайтам узнавать, по какому поисковому запросу вы пришли, особенно учитывая сколько всего в это поле впихивает Google. Ну а UAControl — притвориться популярным браузером и «скрыться в толпе» с целью избежать всё того же сбора статистики. Кстати, тут ниже посоветовали менять User Agent на Linux'овый (если у вас и так не Linux), так как благодаря этому некоторая малварь к вам просто не будет посылаться. Странный, конечно, способ, но есть такое мнение.

Страничка RefControl на AMO
Страничка UaControl на AMO

Заключение


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

P.S.: Прошу прощения за стиль изложения. Это мой первый пост на Хабре, так что прошу конструктивной критики.
Falcon peregrinus @Falcon_peregrinus
карма
1,0
рейтинг 0,0
Пользователь
Самое читаемое Разработка

Комментарии (65)

  • 0
    Ещё он точно защитит от XSS

    Если рассматривать XSS как взаимодействие с другими сайтами — то да, но если evil js выполняется в контексте того же домена (меняет пароль, рассылает сообщения и т.п.) — то нет.
    • 0
      Если evil js выполняется в контексте того же домена, то это уже не XSS) Уже обсуждали у Егора здесь (http://homakov.blogspot.ru/2013/07/xss-defense-in-depth-with-rackrails-demo.html)
      • +3
        Same Site Scrtipting — SSS
        ок :]
  • +4
    Сюда еще можно добавить Ghostery и Self-Destructing Cookies
    • 0
      Это проприетарщина и непригодна для других целей. Я же назвал расширения общего применения.
      • 0
        Это сейчас про Ghostery было, про Self-Destructing Cookies я просто не слышал.
        • +2
          Что там не так, только лицензия не нравится?
          Код не обфусцирован, бинарных модулей нет. Фактически, xpi-файл это архив с js-исходниками.
        • 0
          Ghostery умеет тоже самое, что и RequestPolicy.
          • 0
            Ога, но запрещает только следилки. А всё остальное — не сможет.
            • –1
              Что «все остальное»?

              Виджеты комментирования соцсетей, социальные закладки и т.д. — прекрасно может.
              • +1
                Вообще всё. Без разделения по типу, работать по вайтлисту.
              • +1
                Что «все остальное»?

                Имеется в виду ручная настройка пользователем.

                И ещё, когда снёс ghostery, у меня браузер перестал падать на случайных сайтах, а также с Ghostery при закрытии он пару минут висел в процессах — теперь нет. Я думал, это нормально, потому что в сессии 500 табов (некогда всё прочитать), однако чистый firefox хорошо оптимизирован.
  • +2
    Топик про расширения из категории «Безопасность», «Отвалите от меня и не следите», и вы забыли упомянуть www.ghostery.com/, ай-яй-яй.
  • 0
    > Я вот одно время ходил по Интернету с User Agent'ом, сформированным как браузер IE 10 под Linux.
    Кстати, советую менять UserAgent под linux-версию браузера. Многие сайты, которые пытаются впихнуть какую-нибудь хрень с сертификатом mail.ru — перестают это делать, и отдают напрямую запрашиваемый файл.
    • 0
      У меня и так Linux'овая версия. И вообще Linux, так что неактуально для меня. Но добавил в пост.
      • 0
        Так сложилось, что я таки не перешёл на Linux (под C# писал), так что приходится извращаться )
  • +1
    Вместо Cookie Monster использую Selective Cookie Delete — вроде то же самое (однако, localstorage не очищает, при входе на mega.co.nz попадаю в свой авто-созданный профиль).

    Крайне рекомендую Ghostery. Возможно, она слабее RequestPolicy, но преднастроена для чайников.

    И ещё google-no-tracking-url — очищает страницы выдачи гугла от redirect-ссылок, при клике попадаешь сразу на нужный сайт, а не на редирект, учитывающий кто что выбрал в результатах поиска.
    • 0
      Крайне рекомендую Ghostery.

      Про Ghostery помимо проприетарности ещё можно сказать, что она была основана компанией, изначально имевшей название Better Advertising. Можно делать выводы.
      И ещё google-no-tracking-url — очищает страницы выдачи гугла от redirect-ссылок, при клике попадаешь сразу на нужный сайт, а не на редирект, учитывающий кто что выбрал в результатах поиска.

      NoScript имеет подобную функциональность.
      • 0
        Спасибо, заменил Ghostery на RequestPolicy. Пока доволен. Белый список всё-таки надёжнее чёрного.
        Разве что широким массам рекомендовать её нельзя — требует внимания и понимания тонкостей web.
        • 0
          Ну, это да. Я упоминал в посте.
  • 0
    А как же FlashBlock?
    • +3
      NoScript покрывает его функциональность.
      • 0
        Неа.
        Взять тот же ютуб. Там у меня местные и нужные скрипты разрешены. Если ФлешБлок активирован, то при заходе на страницу видео не воспроизводиться сразу. А если деактивирован, то видео сразу воспроизводиться.
        Если попадаешь на сервис, где куча видео на страницы, то без ФлешБлока все флешки подгружаются, создавая лишний процесс ПлугинКонтейнер.
    • 0
      С некоторых пор файрфокс из коробки умеет это. В списке плагинов можно отключить ненужные или перевести их в режим «включать по запросу (клику)». На нужных сайтах можно изменить режим на «включен постоянно».
      • 0
        Да, читал обещания, но «реализацию» не видел. Буду благодарен, если поделитесь инструкцией.
        На данный момент подобную опцию найти не получилось (FF 24), а через гугл получилось найти только
        about:config => plugins.click_to_play
        Но это не работает.
        • 0
          Меню Firefox — Дополнения — Плагины (слева). Справа от каждого плагина можно поставить «включать по запросу».
          • 0
            Появилось там после включенияопции
            about:config => plugins.click_to_play
            Спасибо.
            • 0
              Негодный способ однако. Не получается в один клик как у флэшблока, только в два, да и ответ куда-то кэшируется и следующая вкладка ютуба внезапно оказывается с включенным флэшом
              • 0
                Установите addons.mozilla.org/ru/firefox/addon/click-to-play-per-element/
                Поможет.

                Если ютуб все равно весь грузится, то нужно отменить временное разрешение флеша при помощи кнопки слева от адресной строки.
      • 0
        Испробовал. Не сравнится это с плагином.
        Если ФлешБлок активирован, то при заходе на страницу видео не воспроизводиться сразу. А если деактивирован, то видео сразу воспроизводиться.
        Если попадаешь на сервис, где куча видео на страницы, то без ФлешБлока все флешки подгружаются, создавая лишний процесс ПлугинКонтейнер.

        Чтобы понять о чем я говорю — можно открыть десяток вкладок ютуб и будет приготовлен известный рецепт уши в трубочку.
        • 0
          Поможет установка аддона addons.mozilla.org/ru/firefox/addon/click-to-play-per-element/
          В фф 24 изменился алгоритм работы встроенной click to play функции.
          • 0
            А смысл менять шило на мыло?
            • 0
              Так указанный мной аддон не является блокировщиком флеша. Он лишь корректирует поведение встроенной в фф функции click to play.
  • 0
    Пользовался NoScript наверное лет 5, удалил, надоели проблемы почти после каждого апдейта. К примеру, на последнем апдейте фокса (24) видео на флеше то не загружалось то браузер дико тормозил, удалив данное расширение браузер как будто подменили! :) Профилю от силы год. Врядли когда-нибудь еще поставлю.
    • +5
      Мне всегда казалось, что он наоборот ускоряет работу, отключая туеву хучу скриптов, особенно всякие слайдеры навороченные с эффектами. А когда ещё и пару десятков вкладок открыто…

      Взять хотя бы Яплакал, который не самый плохой вариант — бывает и хуже:
      скрин
      • 0
        Я тоже так думал, комп то не слабый — i7 3770k (ит.д.) и все это на ссд. Всё остальное летает тока в путь ну и любимый фокс сейчас тоже :)
        • 0
          Пользовался NoScript наверное лет 5

          i7 3770k (ит.д.) и все это на ссд

          Привет из будущего?
          • 0
            Железо на данный момент такое конечно же.
    • 0
      У меня такой же опыт, из-за неоправданных задержек в загрузке, отказался от него.
  • +2
    Владельцам слабых машин следует помнить, что каждый такой дополнительный аддон негативно влияет на производительность браузера, особенно noscript.
    И еще, подписка adblock'а fanboy's social blocking list хорошо заменяет ghostery.
    • +3
      noscript
      С ним всё наоборот. Особенно с тяжёлыми страничками с кучей скриптов. Затраты на NoScript ничто по сравнению с затратами на выполнения всех скриптов тяжёлых страниц.
    • +2
      При этом каждый невыполненный скрипт, каждый невыполненный flash-объект и каждый незагруженный баннер ускоряют работу браузера.

      Тут интересно будет найти баланс.

      Flashblock, вероятно, сильно ускоряет браузер. Noscript — тоже.

      Adblock и Ghostery ускоряют браузер, одновременно замедляя его, сканируя страницу для каждого своего правила. Писали, что Adblock при подключении некоторых особо жирных подписок здорово тормозит систему.

      Особенно это интересно в контексте Firefox для Android: на ARM-системах вычислительной мощи гораздо меньше.
      • 0
        Flashblock ускоряет в разы. А вот носкрипт как то плохо справляется с флэшем/сильверлайтом. А Flashblockу кликнул на картинку и флэш подгрузится, да еще и белый список есть.
      • 0
        Вы правы, к выбору подписок надо подходить внимательнее и не выбирать много и пересекающиеся по содержанию. Плюс я для ускорения браузера обновляю их вручную.
        Самое грустное, что на маленьком экране нетбука chrome почему-то удобнее… (
  • +1
    У браузерных расширений есть один большой минус - низкая гранулярность политики безопасности. Зачастую расширению требуются права на все элементы всех страниц и вообще ко всему, о чем можно подумать, что позволяет перехватывать и изменять что угодно. Пусть расширение изначально не содержало вредоносного кода, но чем больше их стоит, тем больше шанс, что репозиторий одного из расширений взломают и добавят скрытую проблему.
  • 0
    Надо ещё добавить дополнений, да побольше побольше…
  • 0
    Кто-нить, подскажите, существует ли плагин, который позволяет открывать ссылки в выдачи поисковиков сразу прямые ссылки, а не через всякие анализаторы кликов соответствующих поисковиков?
    Это же тоже относится к категории «отстаньте от меня».
      • 0
        NoScript когда-то давно стоял, но был снесён.
        Потому что он стал громоздким комбайном, каждую неделю обновлялся и тратил моё внимание на страницу с what's new, а чем он мне помогает, я не так и не понял. Куча настроек, куча неявного поведения (например, что он поисковые ссылки google очищает, я только что узнал).

        Лучше заменить на несколько простых и понятных инструментов.
  • 0
    RequestPolicy+YesScript гораздо лучше NoScript, imo.
  • 0
    MaskMe + DoNotTrackMe — неплохая связка, имитирующая шапку-«невидимку».
  • +1
    Кстати, тут ниже посоветовали менять User Agent на Linux'овый (если у вас и так не Linux), так как благодаря этому некоторая малварь к вам просто не будет посылаться. Странный, конечно, способ, но есть такое мнение.

    Ничего не странный способ. Простой и сердитый — против многих экспсплоит паков (связок с эксплоитами) работает. Т.к. они часто по User-Agent и определяют ОС и версию браузера под который подсовывают жертве сплоит. Не панацея, конечно, но в ряде случаев работает.

    Похожий способ предложили тут. Суть — заставить вирус «думать», что он попал на комп к вирусному аналитику и тем самым заставить сработать его же собственный код для предотсращения дальнейшего заражения компа (а-ля самоудалиться с этого компа). Такая вот полезная мимикрия.
  • +1
    Need Help, please!

    Часто замечаю в Request policy, что многие сайты ссылаются на jquery с google или yandex.
    Существует ли add-on для подмены файлов этих библиотек на локальные копии?
    Тупо чтобы после загруки страницы заменял в ней всякие script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" на script src="file://c:/jslib/jquery.min.js"
    • +1
      Юзерскрипт попробуйте поискать, должно быть.
      • +1
        Написал такой greasemonkey скрипт

        var tags = document.getElementsByTagName('script');
        for (var i = 0; i < tags.length; i++) {
          var src = tags[i].src;
          var dst = null;
          if (src == 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js' ||
              src == 'https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js')
            dst = 'file://c:/jslib/ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js';
          if (src == 'http://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js' ||
              src == 'https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js')
            dst = 'file://с:/jslib/ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js';
          if (dst) tags[i].src = dst;
        }


        Сайты работают.
        Но есть проблемы:
        1. View Page Source показывает исходник со старым URL (хотя Inspect Element — с новым)
        2. Сайт googleapis.com не исчезает из списка заблокированных у Request Policy (из-за этого трудно понять, все ли файлы я подменил на локальные).
        • 0
          1. Это нормально.
          2. Это тоже может быть нормальным.

          Но вот file://с:/jslib/ это как-то… Странно. Не лучше прифигачить его к юзерскрипту нормальным способом? (чтобы не только у вас работало)
          • 0
            Так всё равно скачивать файлы и размещать в файловой системе приходится вручную.

            Хотя, может это быть хорошей идеей: проверять, есть ли файл
            http://<site>/<path> где-то в $(FirefoxProfile)/<site>/<path> и, если есть, подменять.
            Вот только непонятно, как это скажется на производительности браузера — перелопачивать большую страницу и обращаться к файловой системе каждый раз…
            • 0
              Неправильно ты дядя Федор бутерброд ешь (с)


              Блокируете NoScript'ом или чем там блокируете, не важно. Чтобы запросы вообще не шли на гугл.

              Ставите Scriptish, у которого отсутствует sandbox, как у GM и просто копипастите туда исходник JQ, можно так же обернуть в условия.

              Если надо GM, то в хедере указываем
              // ==UserScript== // ... // @resource jq http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js // ... // ==/UserScript==
              и потом уже подключаем его в условиях
              ..src="'+GM_getResourceURL("jq")+'"...

              Профит. Не надо отдельно качать.

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

              Он это делает в любом случае, как ни крути. Не из сырости же он берет скрипты и файлы (код) :D
              • 0
                Поломался код
                // ==UserScript==
                // ...
                // @resource jq http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
                // ...
                // ==/UserScript==
                
              • 0
                resource — интересная команда.
                Добавил в скрипт, файл скачивается, но при попытке обратится к GM_getResourceURL (или GM_getResourceText) скрипт прекращает работу без видимых причин. Например, этот скрипт

                Скрытый текст
                // ==UserScript==
                // @name        Local Files
                // @namespace   http://www.example.com/home
                // @version     1
                // @grant       none
                // @resource jq101 http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js
                // @resource jq132 http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
                // @resource proto1700 http://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js
                // ==/UserScript==
                
                var img = document.createElement('img');
                img.src = 'http://habr.habrastorage.org/avatars/d8d/d12/0b6/d8dd120b6352e39753b9976c1bcce3de_small.png';
                document.body.appendChild(img);
                var z = GM_getResourceURL("proto1700");
                var img2 = document.createElement('img');
                img2.src = 'http://habr.habrastorage.org/avatars/a73/b42/1a2/a73b421a2032952b85813b10077a6e01_small.png';
                document.body.appendChild(img2);
                


                Добавляет первый img на любую страницу, но не добавляет второй. Вероятно, какая-то несовместимость моей версии FF (24.0) и GM (1.12)
                • 0
                  Разобрался, нужен @grant GM_getResourceURL.
                  Спасибо, BaNru. Узнал немного интересного о user-скриптах.
                  • 0
                    Да, забыл про grant )
              • 0
                Он это делает в любом случае, как ни крути. Не из сырости же он берет скрипты и файлы (код) :D

                Это я к тому, что обращаться к диску на любом теге <script> может быть накладно.
        • 0
          if (src == 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js' ||

          Тут лучше воспользоваться регуляркой, типа
          "~https?://ajax.googleapis.com/ajax/libs/jquery/(1|2)(.+[0-9]+)?/jquery.(min.)?js~"

          Работоспособность гарантирую на 98% :D
  • 0
    Дошли руки допилить selectivecookiedelete.
    Описание изменений — addons.mozilla.org/en-US/firefox/addon/selectivecookiedelete/reviews/590636/
    Там же — ссылка на pastebin с файлом FirefoxPortable\Data\profile\extensions\selectivecookiedelete@siju.mathew\chrome\selectivecookiedelete.jar\content\selectivecookiedelete.js, которым надо заменить оригинал.

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