Этой статьей я постараюсь описать процесс управления конфигурацией современных версий Mozilla Firefox в среде предприятия (доменной среде на базе Microsoft Active Directory).
Проблемы централизованного управления параметрами браузера Firefox
Ранее, управление настройками Firefox, в среде предприятия не представляло особой сложности, так как, как и любое правильное Windows приложение, Firefox хранил все свои настройки в реестре. Можно было найти или написать самому, необходимые административные шаблоны групповых политик, чтобы упростить администраторам весь процесс (к примеру, для того же Chrome, Google разработала и поддерживает набор adm/admx шаблонов). Однако, компания Mozilla решила этому правилу изменить и теперь Firefox хранит свои настройки в файлах, находящиеся в профиле пользователя.
Покопавшись довольно длительное время в Интернете, я нашел некоторое количество «решений» данной проблемы. Но … все они не работоспособны по разным причинам. Общая идея этих решений – создать GPO, заполнить ветку реестра, а затем, с помощью скрипта на Visual Basic, прописать необходимые параметры в файлы конфигурации Firefox. На первый взгляд, все удобно и логично, но … всегда есть это «но». Разработчики Mozilla меняют как места расположения файлов конфигурации, так и название файлов и т.д.
Метод описанный в данной статье был протестирован на современных версиях Firefox (Firefox 45.0.1).
Особенности управления Firefox на предприятии
Есть целый ряд настроек, которые могут быть рассмотрены как для предварительной настройки, так и для отключения или блокировки в корпоративной среде, где пользователи, как правило, не будут иметь прав администратора и ИТ специалистам необходимо самим определять, какие параметры разрешить менять, а какие оставить предопределенными и неизменяемыми в среде предприятия.
Это может, например, включать:
- Import Wizard (Мастер импорта) – Firefox запускает этот Мастер при первом запуске для импорта настроек из других установленных браузеров. Вам может понадобиться отключить запуск данного Мастера настройки.
- Automatic updates for Firefox (Автоматические обновления) – Options / Advanced / Update / Firefox updates. Обновления Firefox лучше делать централизованно, а не отдельно, на каждом пользовательском компьютере. Авто обновление для расширений, можно оставить, так как они хранятся на компьютере пользователя.
- Mozilla Maintenance Service –(Сервис обслуживания) Firefox устанавливает службу обновления, которая позволяет обновлять Firefox автоматически, не запрашивая разрешений UAC. Эта возможность должна быть отключена или выключена в корпоративной среде.
- Default browser check (Проверка браузера по умолчанию) – Options / Advanced / General – Always check to see if Firefox is the default browser on startup. Если в корпоративной среде установлено, например, что браузером по умолчанию является Microsoft Internet Explorer, то такую проверку необходимо выключить, а возможность, для пользователя, установить Firefox в качестве браузера по умолчанию, заблокировать.
- Отключить загрузку, при первом запуске, вкладки ‘Welcome to Firefox’, и оповещений ‘Know your rights’ и ‘Improve Firefox’.
Управление и блокировка настроек Firefox
Firefox может быть настроен со значениями по умолчанию и с заблокированными настройками для каждого нового профиля пользователя. Таким образом, настройки будут содержать все необходимые вам параметры. Mozilla упростили (да, ладно! щазз!) процедуру развертывания с предустановленными настройками путем добавления некоторых специальных файлов во время инсталляции (или, например, в момент подключения компьютера в сеть домена)/ Предполагается, что Firefox установлен в папку по умолчанию:
- %ProgramFiles%\Mozilla Firefox\defaults\pref\all-settings.js
- %ProgramFiles%\Mozilla Firefox\Mozilla.cfg
Сам Firefox, будет сконфигурирован с настройками по умолчанию и с блокировкой изменения необходимых параметров.
Более подробно об этом можно прочитать в статье http://kb.mozillazine.org/Locking_preferences. Следует учесть, что статья уже успела слегка устареть, но основные принципы все еще работают.
Для назначения пользовательских установок надо использовать возможность блокировки пользовательских предпочтений.
Файл all-settings.js
Файл all-settings.js нужен для того, чтобы «сказать» Firefox, что необходимо считать из файла Mozilla.cfg ряд настроек конфигурации. Просто добавьте в файл all-settings.js две строки:
pref("general.config.obscure_value", 0);
pref("general.config.filename", "mozilla.cfg");
Файл Mozilla.cfg
Вот здесь мы можем определить и заблокировать необходимые нам настройки Firefox. В примере ниже, например, отключили и заблокировали функцию автоматического обновления, вкладку «Добро пожаловать в Firefox» и уведомления «Знай свои права», и «Улучшение Firefox. Последняя строка отключает возможность установить Firefox в качестве браузера по умолчанию.
ВАЖНО:
- Все параметры, в файле Mozillacfg, следует начинать писать со второй строки. Не спрашивайте меня почему. Например, вставьте комментарий // в первую строку.
- Параметры и все настройки учитывают регистр написания букв (case-sensitive). При ошибке написания, Firefox попросту не запустится.
lockPref("app.update.auto", false);
lockPref("app.update.enabled", false);
lockPref("app.update.service.enabled", false);
lockPref("toolkit.telemetry.prompted", true);
lockPref("browser.rights.override", true);
lockPref("browser.startup.homepage_override.mstone", "ignore");
lockPref("browser.shell.checkDefaultBrowser", false);
Ниже приведен пример файла Mozilla.cfg, который используется в реальной корпоративной среде.
Комментарии на английском, надеюсь не сложно, для понимания.
// Parameters keywords.
// pref
// sets the preference as if a user had set it, every time you start the browser.
// So users can make changes, but they will be erased on restart. If you set a
// particular preference this way, it shows up in about:config as "user set".
// defaultPref
// is used to alter the default value, though users can set it normally and their
// changes will be saved between sessions. If preferences are reset to default
// through the GUI or some other method, this is what they will go back to.
// Appears in about:config as "default".
// lockPref
// is used to lock preferences so they cannot be changed through the GUI or about:config.
// In many cases the GUI will change to reflect this, graying out or removing options.
// Appears in about:config as "locked". Some config items require lockPref to be set,
// such as app.update.enabled. It will not work if it set with just pref.
// clearPref
// can be used to "blank" certain preferences. This can be useful e.g. to disable functions
// that rely on comparing version numbers.
// Set browser custom home-page
pref("browser.startup.homepage","http://www.yourdomain.ru");
pref("browser.startup.page",1);
// Proxy settings
pref("network.proxy.ftp", "xxx.xxx.xxx.xxx"); // можно написать доменное имя
pref("network.proxy.ftp_port", 3128); // номер порта proxy-сервера
pref("network.proxy.http", "xxx.xxx.xxx.xxx"); // можно написать доменное имя
pref("network.proxy.http_port", 3128); // номер порта proxy-сервера
pref("network.proxy.share_proxy_settings", true);
pref("network.proxy.socks", "xxx.xxx.xxx.xxx"); // можно написать доменное имя
pref("network.proxy.socks_port", 3128); // номер порта proxy-сервера
pref("network.proxy.ssl", "xxx.xxx.xxx.xxx"); // можно написать доменное имя
pref("network.proxy.ssl_port", 3128); // номер порта proxy-сервера
pref("network.proxy.type", 1);
// Check default browser
pref("browser.shell.checkDefaultBrowser", false);
// Disable updater
pref("app.update.enabled", false);
// Make absolutely sure it is really off
pref("app.update.auto", false);
pref("app.update.mode", 0);
pref("app.update.service.enabled", false);
// Disable Add-ons compatibility checking
clearPref("extensions.lastAppVersion");
// Don't show 'know your rights' on first run
pref("browser.rights.3.shown", true);
// Don't show WhatsNew on first run after every update
pref("browser.startup.homepage_override.mstone","ignore");
// Disable the internal PDF viewer
pref("pdfjs.disabled", true);
// Disable the flash to javascript converter
pref("shumway.disabled", true);
// Don't ask to install the Flash plugin
pref("plugins.notifyMissingFlash", false);
//Disable plugin checking
pref("plugins.hide_infobar_for_outdated_plugin", true);
clearPref("plugins.update.url");
// Disable health reporter
pref("datareporting.healthreport.service.enabled", false);
// Disable all data upload (Telemetry and FHR)
pref("datareporting.policy.dataSubmissionEnabled", false);
// Disable telemetry
pref("toolkit.telemetry.enabled",false);
pref("toolkit.telemetry.rejected",true);
pref("toolkit.telemetry.prompted",2);
// Disable Health report
pref("datareporting.healthreport.uploadEnabled", false);
// Disable warning OnClose multiple tabs
pref("browser.tabs.warnOnClose", false);
Другие параметры, на свой вкус, можно выбрать на странице about:config Firefox 🙂
Копирование файлов с настройками Firefox на компьютеры пользователей с помощью GPP
А дальше, необходимо скопировать эти файл на компьютеры пользователей. Для этого средствами GPP надо создать правила удаления/копирования файлов.
ВАЖНО: Не забыть, что файлы с конфигурациями надо разместить там, где Domain Computers смогут их прочитать. Возможны, как минимум, два варианта:
- Разместить файлы в папке NETLOGON – но это моветон 🙂
- Разместить файлы на общем сетевом ресурсе и дать право чтения файлов для Domain Computers. Напоминаю: все происходит во время запуска компьютера и входа в домен, то есть во время StartUp, когда пользователя еще нет, запускаемся с правами SYSTEM)
У меня эти файлы хранятся в папке Firefox на общем сетевом ресурсе.
Пара моментов:
- Используется “Enforced” политика, которая применяется каждый раз при подключении компьютера к сети.
- Каждый раз файлы удаляются и копируются заново. Зачем? Мне, пока, так удобнее. Не более того.
Копирование/удаления файлов делаем через GPP: Computer Configuration –> Preferences –> Windows Settings -> Files
Окончательно это будет выглядеть примерно так:
Что в итоге?
Да, собственно, и все. Мы настроили файл Mozilla.cfg и раздали его на пользовательские компьютеры. Теперь вы можете создать свой Mozilla.cfg, определить необходимые настройки, зафиксировать, без возможности изменения пользователем настройки, которые считаете нужными.
Все в ваших руках.
Коллеги, а как централизованно обновляете Firefox? Для Chome msi пакет есть, а тут получается самому делать постоянно нужно, что напрягает, учитывая частоту обновлений.
Скачиваете файл фулл установки (с ФТП можно) и ставите через LUP\WPP с параметром -ms
параметра -ms достаточно для тихой автоматической установки? Как потмо после установки LUP будет определять что на данном компе firefox уже развернут?
Достаточно. Посмотрите ссылку в моем комментарии.
Версия Firefox естественно esr! А обновлять можно через GPO, поменял в config- pref(«app.update.auto», true); и указал канал обновления esr. Он сам обновиться, потом вернул настройку обратно.
Хорошая статья. Но у всех своя специфика. У меня другая ситуация с массовкой. Необходимость редиректа у всех юзеров темпа на рам-диск. Т.е. по сути добавление строки вида
user_pref("browser.cache.disk.parent_directory", "R:\\Юзер\\Firefox");
Это уже другая история из категории массовой замены текста в файлах (в виде скрипта). Никак не дойду до этого.
как раз занимался этим вопросом, привожу скрипт по PS по данному направлению
$File_Name = get-childitem -Path $env:AppData\Mozilla\Firefox\Profiles -include prefs.js -recurse
foreach ($File in $File_Name)
{
# Write-Host «Обрабатывается файл «$File
if (-not (Select-String -Pattern ‘network.automatic-ntlm-auth.trusted-uris’ -Path $File -Quiet))
{
# Write-Host » Нужно изменить файл «$File
$Content_Original = Get-Content $File
$Content_Modified = @()
$Content_Head = @()
foreach ($Line in $Content_Original)
{
if ($Line -match «^user_pref») # строка начинается с команды
{
$Content_Modified += $Line
}
else
{
$Content_Head += $Line # заголовок
}
}
$Content_Modified += ‘user_pref(«browser.fixup.domainwhitelist.uc-srv02», true);’
$Content_Modified += ‘user_pref(«network.automatic-ntlm-auth.trusted-uris», «uc-srv02″);’
$Content_Modified = $Content_Modified.GetEnumerator() | Sort-Object -Unique
$Content_Modified = $Content_Head + $Content_Modified
Set-Content -Path ($File) -Value $Content_Modified -Force
}
else
{
# Write-Host » Не нужно изменять файл «$File
}
}
Спасисибо, шикарный сайт.
Возился с применением правил , не мог понять почему не применяются.
Потом заметил что стоит %ProgramFiles%\Mozilla Firefox\browser \defaults\pref\all-settings.js а на скрине %ProgramFiles%\Mozilla Firefox\defaults\pref\all-settings.js
после удаления browser все стало работать.
Привет.
Не знаю, слышал ли про этот сайт. Но,в общем есть такой сайт: http://www.frontmotion.com/fmfirefoxce/
Несколько лет назад я успешно развернул и управлял Firefox в своих AD инфраструктурах.
Видел этот сайт. «Несколько лет назад» это и работало. А сейчас FireFox не хранит больше своих настроек в реестре и не читает его. Поэтому и было предложено «альтернативное» решение.
Не знаю, насколько это еще актуально для вас, но в firefox с сайта frontmotion.com встроена поддержка групповой политики. На сайта даже доступен шаблон групповой политики. В настоящее время мы развернули этот вариант Firefox ESR на 4000 компах в своей сети.
Спасибо. Посмотрел. Тема, кончно же, актуальна.
Не отключать же интернет пользователям наглухо.
Я не мазохист всех пересаживать на MS IE. 🙂
FrontMotion — хорошая штука, но у них нет 64-разрядных MSI-пакетов.
Добрый вечер! Спасибо за статью! Все отлично работает в Firefox и Thunderbird!
В данном случае для деления компьютеров на x86 и x64 хватит элементов нацеливания GPP файлов на переменную среды PROCESSOR_ARCHITECTURE со значениями x86 и AMD64, соответственно.
Если юзер без прав админа сам поставил firefox то он будет не в ProgramFiles, а в его AppData
Если «юзер без прав админа» ставит программы на рабочую станцию, то это не корпоративная среда, а бардак.
Это точно 🙂
Сейчас много софта ставится в профиль пользователя и работает не требуя прав. Все подряд не запретишь.
Всё и не нужно. Разрешаешь запуск только из папок Windows и Program Files.
почему?
Подскажите какими параметрами установить корневой сертификат организации, и разрешить его валиднось ?
Сейчас есть корпоративная поддержка для Firefox. Шаблоны GPO и MSI-установщики.
Привет
Может есть какой либо понятный мануал, чтобы настроить свой сервер обновлений в корпоративний сети?
Адрес сервера можно указать в GPO, а вот как замутить сервер, инфы не могу найти
Ко WSUS можно прикрутить WSUS Package Publisher или Local Update Publisher чтобы ставить сторонии обновления для любых программ. Постараюсь описать в следующих статьях.
О! Ждем-с.
Как обещал 🙂
Установка и обновление сторонних программ с помощью WSUS
https://winitpro.ru/index.php/2024/01/30/ustanovka-obnovlenie-storonnix-programm-wsus/