====== セキュリティパッチ ======
===== WindowsUpdate未適用ダウンロード =====
WindowsUpdate未適用リストについて、下記サイトを参考にリストを作成する。\\
また、パッチのダウンロードも一括で取得でき、更新プログラムのスキャンも可能。
※ダウンロードURLがx64が必要なのにx86になっていることがあるため別途x64でダウンロードする。
==== MBSA ====
※MBSAはWindows Server 2016以降対応しなくなった。
* [[https://automationlabo.com/wat/?p=973|MBSAを利用してオフライン環境下でWindowsUpdateを行う方法]]
* [[http://www.alt-plus.jp/archives/1316|windowsUpdateのサイレントインストールをしてみる。]]
\\nfs\common\3.システム導入・保守・運用\078.WH構成表システム\3-2 システム保守\3-2-3 サービスデスク\08.構成表開発チーム\050_WHツール\MBSA
wsusscn2.cabを最新にした後に「01_MBSA の一括セットアップ.bat」を実施するか、「%USERPROFILE%\AppData\Local\Microsoft\MBSA\Cache」フォルダにコピーする。
==== MBSAの代替 ====
Windows Server 2016以降はこっちを使用する。
* [[https://mitsushima.work/archives/17968931.html|[Windows10]MBSAが終了しているようなので後継スクリプトを試してみた 〜オフラインPCのパッチ適用状況の確認〜]]
※wsusscn2.cabだけは、常に最新のカタログを下記サイトからダウンロードすること\\
http://go.microsoft.com/fwlink/?LinkId=76054
「wsusscn2.cab」は毎月リリースされるセキュリティ関連の更新プログラムに関する情報が含まれているファイルです。この情報から足りないセキュリティパッチを洗い出してくれます。
wsusscn2.cabを最新にした後に「StartScanWUA.bat」を実施する必要がある。
WindowsUpdate未適用リストとして「ScanWUAResult.txt」が出力される。
---WindowsUpdate未適用リスト---
1> 2022-05 .NET 5.0.17 Security Update for x64 Server (KB5014329)
重要度:Important
サポートURL:https://go.microsoft.com/fwlink/?linkid=2147044&clcid=0x409
MicrosoftUpdateカタログ:https://www.catalog.update.microsoft.com/Search.aspx?q=KB5014329
2> 悪意のあるソフトウェアの削除ツール x64 - v5.104 (KB890830)
重要度:
サポートURL:http://support.microsoft.com
MicrosoftUpdateカタログ:https://www.catalog.update.microsoft.com/Search.aspx?q=KB890830
3> 2022-08x64 ベース システム用 Windows Server 2016 サービス スタック更新プログラム (KB5017095)
重要度:Critical
サポートURL:https://support.microsoft.com/help/5017095
MicrosoftUpdateカタログ:https://www.catalog.update.microsoft.com/Search.aspx?q=KB5017095
4> 2022-08 x64 ベース システム用 Windows Server 2016 の累積更新プログラム (KB5016622)
重要度:Critical
サポートURL:https://support.microsoft.com/help/5016622
MicrosoftUpdateカタログ:https://www.catalog.update.microsoft.com/Search.aspx?q=KB5016622
---ここまで---
Microsoft®Update カタログからWindows Server 2016の対象KBをダウンロードする。.NET 5.0系は除外する\\
https://www.catalog.update.microsoft.com/Home.aspx
==== サービススタック更新プログラム ====
サービススタック更新プログラム(Servicing Stack Updates(SSU))をインストールすると、オペレーティングシステムが最新の累積更新プログラムを受信できるようになります。サービススタック更新プログラムが欠落している場合、誤った検出結果を受け取る可能性があります。
サービススタック更新プログラムを当てないと、新規の累積更新プログラムが検出対象外となる。
※セキュリティパッチの更新調査をする上で、先にサービススタック更新プログラムだけは更新させた上で再度検出する。そうしないと累積更新プログラムが検出されない
サービススタック更新プログラムは、コントロールパネルのプログラムと機能にある「インスールされた更新プログラム」上では、「セキュリティ更新プログラム」という名前で表示される。
==== プログラムと機能のインストールされた更新プログラムとの違い ====
KB番号によっては、新しいKB番号に内包されてしまっており、既にwsusscn2.cab内から除外されていると思われる。その為、スキャン結果でインスール済として出て来ない。
2021年8月のwsusscn2.cabのサイズが850MB、2022年8月のサイズが645MBで少なくなっていることから古いものは除外してしまっている。
==== MBSA と Microsoft Update との相違点 ====
Microsoft Update は「重要な更新」および「追加で選択できる更新プログラム」など、セキュリティ以外の更新プログラムもユーザーに提供します。MBSA は、これらのセキュリティ以外の更新プログラムを提供しません。よってWindowsUpdateのファイル数が少ない
上位互換となるKBがでてそちらが先に当たり、後続がインストールできない(インストール不要)といったことはあります。\\
[[https://social.technet.microsoft.com/Forums/office/ja-JP/e4608504-b949-444c-a752-375afd51a9fc/windowsupdate1239812458125011252112452125313696929992123951238812356?forum=winserver8|WindowsUpdateのオフライン適用について(WindowServer 2012 R2) ]]
==== MBSAで実行エラー ====
AddScanPackageService("Offline Sync Service" でエラーになるのは、Windows Updateサービスが無効になっているため
===== セキュリティパッチ適用 =====
Wusa.exe等に「/quiet /norestart」オプションによりコンピューターが再起動されないようにしている。\\
[[https://support.microsoft.com/ja-jp/help/934307/description-of-the-windows-update-standalone-installer-in-windows|Windows の Windows Update スタンドアロン インストーラーについて]]
==== 重大度評価(Severity) ====
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/bb294979(v=vs.85)
^値^項目名^説明^
|4|Critical \\ 致命的|このアップデートは、その悪用によりユーザーの操作なしにインターネットワームの伝播を可能にする可能性がある脆弱性を修正します。|
|3|Important \\ 重要|この更新プログラムは、悪用によりユーザーのデータの機密性、整合性、可用性、または処理リソースの整合性や可用性が損なわれる可能性がある脆弱性を修正します。|
|2|Moderate \\ 適度|この更新プログラムは、デフォルトの構成、監査、または悪用の難しさなどの要因によって悪用が大幅に軽減される脆弱性を修正します。|
|1|Low \\ 低い|このアップデートにより、悪用が非常に困難な脆弱性、または影響が最小限の脆弱性が修正されます。|
|0|Unspecified \\ 詳細不明|アップデートには重大度の評価はありません。|
==== 累積更新プログラム ====
「累積的な」と書かれている更新プログラムには、同じ製品に対する過去の全ての更新プログラムの修正内容が含まれています。\\
例外がある場合は、サポート技術情報やセキュリティ情報で明示されます。
[[https://answers.microsoft.com/ja-jp/windows/forum/all/%E6%9C%80%E6%96%B0%E3%81%AE%E7%B4%AF%E7%A9%8D/d2b1d305-5337-4aae-8b04-b520f3c573bf|最新の累積的なセキュリティ更新プログラムに、以前の更新分は含まれていますか?]]
==== サービスパック上位適用 ====
サービスパックの上位を適用したなら下位のパッチの適用は不要となる。\\
ただ、サービスパックの上位を適用したことで新規のパッチが出現する場合がある。
例えば、SQLServer 2014 SP3がまだ未適用の場合にSP2用のパッチがあったとしても、サービスパックのSP3を適用すればSP2用のパッチは適用する必要がない。SP3になったことでSP3用のパッチが出現する。
===== エラー一覧 =====
==== Windows Updateエラー ====
[[https://support.microsoft.com/ja-jp/help/938205/windows-update-error-code-list|Windows Update error code list]]
^エラー10進^エラー16進^エラー内容^
|0|0|正常|
|740|2E4|実行するには管理者権限に昇格する必要がある|
|1603|643|インストール時の致命的なエラー|
|1642|66A|.NET Framwork 4のインストールまたはアップデートに失敗した時に発生する。|
|3010|BC2|再起動が必要 ※インストールは行われる|
|4096|1000|ライセンス認証の同意が必要なので、ウィザード形式でインストールする。|
|2359302|240006|インストールする更新は既にインストールされています。|
|-2145124329|80240017|該当する更新がないため、インストールは不要です。|
|-2068578301|84B40003|SQLServer2008のアップデートに失敗した時に発生する。|
|-2146885628|80092004|原因不明|
|-2146498302|800F0902|原因不明|
==== Cabファイルインストールエラー ====
[[http://www.geocities.jp/fjtkt/download/2003_0011/SysError_xps2.html|Windowsシステムエラーコード一覧]]
^エラー^エラー内容^
|14005|マニフェスト ファイルに、1 つ以上の構文エラーが含まれています。|
==== 参照 ====
* [[https://technet.microsoft.com/en-us/library/cc720432(WS.10).aspx|Additional Resources for Windows Server Update Services]]
* [[https://support.microsoft.com/ja-jp/help/938205/windows-update-error-code-list|Windows Update error code list]]
* [[http://www.geocities.jp/fjtkt/download/2003_0011/SysError_xps2.html|Windowsシステムエラーコード一覧]]
* [[http://freesoft.tvbok.com/tips/update_error_code/643_66a.html|Windows Updateのエラー「コード643」「コード66A」の対処方法]]
* [[http://tooljp.com/qa/6214A3410DF0767B49257E3D0054DBCC.html|80092004 エラーがWindows Updateで表示される原因と対処]]
* [[http://freesoft.tvbok.com/tips/update_error_code/80244019_800705B4_800F0902.html|Windows Updateのエラー 80244019、800705B4、800F0902の対処方法]]
* [[http://ascii.jp/elem/000/001/436/1436691/|Windowsの具体的なエラーコードからその意味を探る]]
===== システム関連 =====
==== Windows Update更新一覧取得 ====
@echo OFF
cd /d %~dp0
wmic qfe > updatelist.txt
exit /b
* [[http://blog.putise.com/windows%E3%81%AE%E3%83%91%E3%83%83%E3%83%81kb%E3%81%AE%E9%81%A9%E7%94%A8%E4%B8%80%E8%A6%A7%E3%81%A8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%97%A5%E3%82%92%E7%9F%A5%E3%82%8B%E6%96%B9/|Windowsのパッチ(KB)の適用一覧とインストール日を知る方法。コマンドで]]
* [[http://blog.treedown.net/entry/2016/04/26/010000|Windowsのアップデート適用を一覧表示したい]]
==== パッチ適用バッチ ====
予め年毎またはIEや.NETなどのシステム単位にパッチを分けてフォルダに格納しておく。
@echo OFF
cd /d %~dp0
SETLOCAL enabledelayedexpansion
SET LOG=%cd%\PACHLOG.log
SET ERRLOG=%cd%\ERRLOG.log
SET returnCode=
rem パッチ適用開始
echo パッチ適用開始:%date% %time% >>%LOG%
rem 2013年分パッチ適用
call :subPatch 2013
rem 2014年分パッチ適用
call :subPatch 2014
rem 2015年分パッチ適用
call :subPatch 2015
rem 2016年分パッチ適用
call :subPatch 2016
rem 2017年分パッチ適用
call :subPatch 2017
rem パッチ適用完了
echo パッチ適用完了:%date% %time% >>%LOG%
echo サーバーの再起動をしてから、パッチ一括リトライ適用.batを実行してください >>%LOG%
rem pause
ENDLOCAL
exit
:subPatch
CD %1
SET PachDir=%CD%
for %%i in (%PachDir%\*.msu) do (
echo 適用バッチ:%%i
echo パッチ実行:%%i >>%LOG%
SET fileN=%%i
C:\Windows\System32\wusa.exe !fileN! /quiet /Norestart
echo 実行結果:!ERRORLEVEL! !fileN! >>%LOG%
)
for %%i in (%PachDir%\*.exe) do (
echo 適用バッチ:%%i
echo パッチ実行:%%i >>%LOG%
SET fileN=%%i
!fileN! /quiet /Norestart
echo 実行結果:!ERRORLEVEL! !fileN! >>%LOG%
)
for %%i in (%PachDir%\*.msi) do (
echo 適用バッチ:%%i
echo パッチ実行:%%i >>%LOG%
SET fileN=%%i
C:\Windows\System32\msiexec /i !fileN!
echo 実行結果:!ERRORLEVEL! !fileN! >>%LOG%
)
for %%i in (%PachDir%\*.cab) do (
echo 適用バッチ:%%i
echo パッチ実行:%%i >>%LOG%
SET fileN=%%i
C:\Windows\System32\dism /online /add-package=!fileN! /Norestart
echo 実行結果:!ERRORLEVEL! !fileN! >>%LOG%
)
CD ..
exit /b
■.msu
forfiles /p . /m *.msu /c "cmd /c wusa @path /quiet /norestart"
■.exe
forfiles /p . /m *.exe /c "cmd /c @path /quiet /norestart"
■.msi
forfiles /p . /m *.msi /c "cmd /c msiexec @path /i"
■.cab
forfiles /p . /m *.cab /c "cmd /c dism /online /add-package=@path /norestart"
==== SQL Server 2008がインストール済み確認 ====
[[http://prog.rulez.jp/system_sqlserverisinstalled.html|SQL Serverがすでにインストールされているか確認するには?]]
REM ----- SQLServer2008のレジストリを参照
call :DetectSQL "%RemoteName%HKLM\SOFTWARE\Microsoft\Microsoft SQL Server"
if %returnCode%==1 (
REM ----- SQL Server 2008のパッチ適用
call :subPatch SQLServer2008
)
REM -------------------------------------------------
REM ----- SQL Sever の検出
REM -------------------------------------------------
:DetectSQL
REM ----- インストールの確認
echo.
echo SQL Severのインストール確認
reg query "%~1" >nul
set sql=%errorlevel%
echo %sql%
if %sql%==1 (
echo.
echo SQL Sever 2008未インストール
set returnCode=1
) else (
echo.
echo SQL Sever 2008インストール済み
set returnCode=2
)
exit /b
==== .NET Framework4.xがインストール済み確認 ====
[[http://www.atmarkit.co.jp/ait/articles/1210/26/news086.html|.NET Frameworkのバージョンを確認する方法 ]]
REM ----- .NET Frameworkのレジストリを参照
SET RegKey11=%RemoteName%HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP
REM ----- .NET Framework4.0/4.5の確認
call :Detect11_4 ".NET Framework 4" "%RegKey11%\v4"
if %returnCode%==1 (
REM ----- .NET Framework4.xのパッチ適用
call :subPatch NET4
)
REM -------------------------------------------------
REM ----- .NET Framework 4.x の検出
REM -------------------------------------------------
:Detect11_4
REM ----- インストールの確認
echo.
echo NET Framework4.xのインストール確認
reg query "%~2\Full" /v "Install" 2>nul | find /I "Install" 2>nul | find /I "0x1" 1>nul 2>nul
set nf4=%errorlevel%
echo %nf4%
if %nf4%==1 (
echo.
echo NETFramework4/4.5未インストール
set returnCode=1
) else (
echo.
echo NET Framework4/4.5インストール済み
set returnCode=2
)
exit /b