Firefox 업데이트 관리

변경 정보
  • 변경 ID: 346885
  • 생성일:
  • 작성자: SuMo Bot
  • 댓글: Automatically approved because it was not reviewed within 7 days.
  • 검토완료:
  • 검토완료:
  • 검토자: SumoBot
  • 승인되었나요?
  • 현재 변경 사항입니까?
  • 지역화 준비: 아니오
변경 소스:
변경 내용

다음은 단체의 검퓨터에 Firefox를 구성하길 원하는 IT 관리자를 위한 글입니다.

모든 Firefox 배포에 대해 자동 업데이트를 활성화하여 최신 보안 패치가 적용되고 모든 기능을 사용할 수 있도록 하는 것이 좋지만, 특정 환경에서는 자동 업데이트가 금지될 수 있습니다.

Firefox Rapid Release와 Firefox Extended Support Release는 모두 기업 환경에서 사용할 수 있습니다. 빈번한 대규모 업데이트가 우려되는 경우, Firefox 업데이트 채널 선택 문서를 참조하여 Firefox Extended Support Release에 대해 자세히 알아보는 것을 권장합니다.

주요 업데이트 주기 주요 업데이트 범위 마이너 업데이트 주기 마이너 업데이트 범위
ESR 매년

달력 보기

지난 12개월 동안 제공된 새로운 기능 및 수정된 버그. 4주마다 또는 필요 시 중요한 안정성 또는 보안 버그 수정
RR 4주마다

달력 보기

지난 4주 동안 제공된 새로운 기능 및 수정된 버그 주요 릴리스 사이에 필요 시 중요한 안정성 또는 보안 버그 수정


Firefox 업데이트 비활성화

자동 업데이트는 기본적으로 활성화되어 있지만, DisableAppUpdate 정책을 사용하여 비활성화할 수 있습니다.

업데이트가 활성화된 경우, AppAutoUpdate 정책을 활성화하여 사용자 승인 없이 자동으로 설치할 수 있습니다.

Firefox 업데이트 문제 해결

워크스테이션이 Firefox 업데이트를 받지 못하는 경우, 다음 PowerShell 확인을 통해 근본 원인을 파악할 수 있습니다.

로컬 그룹 정책(GPO) 레지스트리 키 확인

다음 명령을 실행하세요:

Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Mozilla\Firefox" | 
Select-Object DisableAppUpdate, AppAutoUpdate

예상 값:

레지스트리 값 예상 값
DisableAppUpdate 0
AppAutoUpdate 1

이 값들이 예상대로 설정되지 않은 경우, 로컬 또는 도메인 그룹 정책에 의해 Firefox 업데이트가 비활성화되었을 수 있습니다.

설치된 Firefox 버전 확인

다음 PowerShell 명령을 실행하세요:

Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" |
Where-Object { $_.PSChildName -like "Mozilla Firefox*" } |
ForEach-Object {
    Get-ItemProperty $_.PsPath |
    Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
}

설치된 버전을 Mozilla 웹사이트에서 제공하는 최신 Firefox ESR 버전과 비교하세요.

예약된 작업 확인

Firefox는 백그라운드에서 예약된 작업을 통해 업데이트를 다운로드하고 적용합니다.

다음 PowerShell 명령을 실행하세요:

Get-ScheduledTask | 
Where-Object { $_.TaskName -like "*Firefox Background Update*" } | 
ForEach-Object { Get-ScheduledTaskInfo $_ }

-> 다음을 확인하세요:

  • 작업이 존재함
  • 작업이 활성화됨
  • 작업이 오류 없이 성공적으로 실행됨

Mozilla Maintenance Service 확인

Windows에서 Firefox 업데이트를 하려면 Mozilla Maintenance Service가 설치되어 실행 중이어야 할 수 있습니다. 이 서비스를 사용하면 Firefox가 관리자 권한 없이 업데이트를 적용할 수 있습니다.

서비스 존재 여부 및 상태 확인

다음 PowerShell 명령을 실행하세요:

Get-Service -Name MozillaMaintenance -ErrorAction SilentlyContinue |
Select-Object Name, DisplayName, Status, StartType

-> 예상 동작:

  • 서비스가 존재함
  • 상태가 Running(실행 중)이거나 Stopped(중지됨, 그러나 시작 가능)임
  • StartTypeAutomatic(자동) 또는 Manual(수동)으로 설정됨
  • 서비스가 없는 경우, Firefox가 자동으로 업데이트를 적용하지 못할 수 있습니다.

수동으로 서비스 시작 (필요한 경우)

서비스는 존재하지만 실행 중이 아닌 경우, 시작해 보세요. 다음 PowerShell 명령을 실행하세요:

Start-Service -Name MozillaMaintenance

서비스가 오류 없이 시작되는지 다시 확인하세요.

Mozilla Maintenance Service 재설치

서비스가 없거나 손상된 경우, Firefox 설치 프로그램을 사용하여 재설치할 수 있습니다:

  1. 배포(ESR 또는 표준 릴리스)와 일치하는 Firefox 설치 프로그램을 다운로드하세요.
  2. 관리자 권한으로 설치 프로그램을 실행하세요.
  3. Mozilla Maintenance Service 설치가 선택되었는지 확인하세요.

설치 후 서비스 상태를 다시 확인하세요.

업데이트 중 관리자 자격 증명을 요구하는 UAC 프롬프트

일부 워크스테이션에서는 Mozilla Maintenance Service가 설치되어 정상적으로 작동함에도 불구하고 업데이트 시 Firefox Updater Software라는 제목의 UAC 프롬프트가 나타나 관리자 자격 증명을 요구합니다. 일반 사용자는 업데이트를 완료할 수 없으며 Firefox를 실행할 때마다 프롬프트가 다시 나타납니다.

원인

Maintenance Service를 사용하기 전에 Firefox 업데이터는 워크스테이션의 UAC 구성을 확인합니다(업데이터 소스 코드의 IsUnpromptedElevation 테스트). UAC가 자동 상승(silent elevation)으로 구성된 경우, Firefox는 관리자에게처럼 프롬프트 없이 상승이 일어날 것이라고 가정하고 Maintenance Service를 건너뜁니다. 그러나 로그인한 사용자가 실제 관리자가 아닌 경우, 상승은 자동으로 이루어지지 않고 Windows는 대신 UAC 자격 증명 프롬프트를 표시합니다.

이 현상은 다음 세 가지 조건이 모두 충족될 때만 발생합니다:

  1. HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorAdmin0으로 설정됨 (보안 옵션 사용자 계정 컨트롤: 관리 승인 모드에서 관리자에 대한 권한 상승 프롬프트의 동작 = 프롬프트 없이 권한 상승; Windows 기본값은 5)
  2. HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktop0으로 설정됨 (보안 옵션 사용자 계정 컨트롤: 권한 상승을 요청할 때 보안 데스크톱으로 전환 = 사용 안 함; Windows 기본값은 1)
  3. 로그인한 사용자가 UAC 필터링된 토큰을 가지고 있음: 거부 전용으로 표시된 그룹을 포함한 권한 있는 그룹(Administrators, Backup Operators, Power Users 등)의 구성원이거나, 그룹 정책을 통해 부여된 민감한 권한(예: SeBackupPrivilege 또는 SeDebugPrivilege)을 보유하고 있음. 참고: 권한 기반 필터링은 whoami /groups에서 보이지 않습니다.

진단

업데이터 로그에서 다음 서명을 확인하세요:

Get-Content "C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\updates\*\updates\0\update.log"

...
After checking IsUnpromptedElevation, useService=false
Elevating via a UAC prompt
Writing status to file: failed: 9
...

IsUnpromptedElevation 확인 후의 useService=false 줄은 이 원인을 확인시켜 줍니다(오류 9는 사용자가 UAC 프롬프트를 취소했음을 의미). 참고: 첫 번째 실패 후, 이후 로그는 After checking... 줄 없이 첫 줄부터 useService=false를 표시합니다(잔여 상태, 해결 방법 참조).

그런 다음 UAC 값과 보류 중인 업데이트 상태를 확인하세요:

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop
Get-Content "C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\updates\*\updates\0\update.status"

가능한 update.status 값:

의미
pending-service 업데이트 다운로드됨, Maintenance Service가 사용될 예정 (정상)
pending Firefox가 이 업데이트에 대해 Maintenance Service 사용을 포기함 (실패 후 잔여 상태)
applied-service Maintenance Service를 통해 업데이트가 성공적으로 적용됨

해결 방법

1. Firefox를 닫습니다.

2. 관리자 권한 PowerShell에서 다음 명령을 실행합니다:

# 관리자에 대한 기본 UAC 권한 상승 프롬프트 동작 복원
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 5 /f
# 권한 상승 프롬프트에 대한 보안 데스크톱 다시 활성화
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop /t REG_DWORD /d 1 /f
# 잔여 업데이트 상태 지우기 (그렇지 않으면 프롬프트가 마지막으로 한 번 더 나타남)
Remove-Item "C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\updates\*\*" -Recurse -Force

3. Firefox를 시작하고, 도움말 > Firefox 정보로 이동하여 Firefox를 다시 시작하여 업데이트가 나타날 때까지 기다립니다.

4. Firefox를 다시 시작합니다: 업데이트는 UAC 프롬프트 없이 적용되어야 합니다.

-> 참고:

  • 두 UAC 값 중 하나만 복원해도 잘못된 조건을 깨뜨리기에 충분합니다. 둘 다 복원하면 워크스테이션이 Windows 기본값으로 돌아갑니다.
  • 이러한 UAC 값이 도메인 그룹 정책에 의해 강제되는 경우, 다음 정책 새로 고침 시 재설정됩니다(gpupdate /force로 확인). 이 경우 GPO 수준에서 수정해야 합니다.
  • 또는, 권한 있는 그룹에서 사용자를 제거한 후 로그오프했다가 다시 로그인하는 것도 문제를 해결합니다.

검증

업데이트 후, 새로운 update.log에는 After checking IsUnpromptedElevation, useService=true가 포함되고 update.statusapplied-service를 표시합니다.

BITS 전송 확인 (Background Intelligent Transfer Service)

Firefox는 BITS를 사용하여 백그라운드에서 업데이트를 다운로드합니다.

다음 PowerShell 명령을 실행하세요:

Get-BitsTransfer | 
Where-Object { $_.DisplayName -match 'mozilla' -or $_.RemoteName -match 'mozilla' } | 
ForEach-Object {
    $job = $_
    foreach ($file in $job.FileList) {
        [PSCustomObject]@{
            DisplayName        = $job.DisplayName
            JobState           = $job.JobState
            BytesTransferredMB = [math]::Round($file.BytesTransferred / 1MB, 2)
            BytesRemainingMB   = [math]::Round(($file.BytesTotal - $file.BytesTransferred) / 1MB, 2)
            ProgressPercent    = if ($file.BytesTotal -gt 0) { 
                                     [math]::Round(($file.BytesTransferred / $file.BytesTotal * 100), 2) 
                                 } else { 0 }
            RemoteURL          = $file.RemoteName
            LocalPath          = $file.LocalName
        }
    }
}

-> 확인할 사항

  • JobState는 현재 전송 상태(전송 중, 일시 중단, 완료 또는 오류)를 보여줍니다.
  • ProgressPercent는 다운로드 진행률을 나타냅니다.
  • RemoteURL은 Firefox가 업데이트를 가져오는 데 사용하는 URL을 보여줍니다.

-> 다운로드가 차단된 경우

진행률이 나아가지 않거나 작업이 실패하는 경우, RemoteURL에 표시된 URL이 네트워크, 방화벽 또는 프록시에 의해 차단되지 않았는지 확인하세요.

확인하려면, URL을 브라우저에 복사하여 붙여넣고 다운로드가 성공적으로 시작되는지 확인하세요.

C:\ProgramData의 Firefox 관련 파일 목록 보기

Firefox 업데이트 파일은 다음 위치에 다운로드 및 저장됩니다.

다음 PowerShell 명령을 실행하세요:

Get-ChildItem -Path "C:\ProgramData\Mozilla-*" -Recurse | 
Select-Object @{ Name="Path"; Expression={$_.FullName} }, 
              @{ Name="Type"; Expression={ if ($_.PSIsContainer) { "Directory" } else { "File" } } }, 
              @{ Name="Size"; Expression={$_.Length} },
              @{ Name="LastModified"; Expression={$_.LastWriteTime} 
}

이를 통해 업데이트 파일이 다운로드되었는지 확인하고 불완전하거나 중단된 파일을 식별할 수 있습니다.