Windows Updateフィルタ

English article is available here.

この記事のWindows Updateフィルタの対象はWindows10(Home/Pro)が通信するMicrosoftの更新系サーバ。

Windows UpdateといえばMicrosoftのOS/アプリのセキュリティ対策の面で非常に重要なので、新しいアップデートが公開されたら他の人を押し退けてでも一秒でも早く我先にくらいの意気込みで適用したいところなのだが、まぁここ暫くのMicrosoftさんはやらかし放題なので正直アップデートがリリースされても数日は様子見をしてからでないと怖くて当てられたものじゃない。

それと、何をお考えなのかユーザーの都合お構いなし実行中のプログラム無視でOSの再起動を勝手にやからしてくれるとか、集計中のデータふっとんじゃったりして

もう事故じゃなく人災じゃね?コレ

そんな気持ちのユーザーを更に煽ってくれるのが、これまでの月例更新をやめて今後は日付決めないで自動更新するという発表。

いつ再起動するかわからない。PC点けっぱの人には毎日黒ひげ危機一髪以上の緊張感を味あわせてくれるらしい。

なのでユーザー側としてはWindowsUpdate関係のサービスを停めたりとかするのだが、Microsoftさんの方も対策してくるだろうから「がとらぼ」的には「WindowsUpdateのサーバに繋がらなくさせる」。これでしょ。

この記事は単にずっとWindowsUpdateサービスを利用しないことを勧めるものではなく、勝手なタイミングでの自動更新やMicrosoftのミスによる更新トラブルを避けようというもの。WindowsUpdate更新ファイル提供から2日程度様子を見てトラブルが発生していないようであれば都合の良いタイミングで早々に更新するべき。

先ずは基本としてWindows Updateサービスを停止する。

WindowsUpdate Service停止 1
「コントロールパネル」から「管理ツール」を開き、「サービス」をクリック。
サービスの一覧から「Windows Update」を探す。

WindowsUpdate Service停止 2
「Windows Update」の行を右クリックして「プロパティ」を左クリック。

WindowsUpdate Service停止 3
「Windows Updateのプロパティ」が開くので「サービスの状態」が「実行中」であれば「停止」を押す。「スータトアップの種類」を「無効」にする。[適用][OK]を押す。

ただし、Windows Updateサービスを停止していたつもりがいつの間にか動くようになっていることが往々にしてあるのでこの方法は全く当てにならない。

ここからが本題

更新しようとしてもWindows Updateのサーバに繋がらなければ確実じゃない?
だったらWindowsUpdate用サーバのIPアドレスをリストしてファイアウォールで通信を止めれば良いじゃんということで始めたのがこの記事。
でも、Microsoftの方ではサーバはホスト名だけ公開してIPアドレスは動的に変わるから出さないよ的なスタンス。
そこで、判っているホスト名から毎日定期的にIPアドレスを引きまくってIPアドレスを蓄積。これをIPアドレスリストやファイアウォール用のスクリプトとして公開(毎日更新)。2015年7月現在では予想に反してホスト数はあまり多くない。
フィルタルールが数十数百程度ならファイアウォールも殆ど速度低下などの影響なく使える筈。

IPアドレスリストおよびFireWallルールファイル

いつからか以下みたいなのが追加になっているが、存在が判明している分以外にもベラボーに存在する可能性があるのでIPアドレスを引かずhostsファイル対応とする。(正直扱いに困る)
c:\windows\system32\drivers\etc\hostsファイルの末尾に以下を追記。

0.0.0.0 0001c5-1.l.windowsupdate.com
0.0.0.0 000292-1.l.windowsupdate.com
0.0.0.0 00095f-1.l.windowsupdate.com
0.0.0.0 000c4f-1.l.windowsupdate.com
0.0.0.0 000f0b-1.l.windowsupdate.com
0.0.0.0 001930-1.l.windowsupdate.com
0.0.0.0 001d81-1.l.windowsupdate.com
0.0.0.0 00211f-1.l.windowsupdate.com

download.windowsupdate.comのIPアドレスを全て拒否するとMSN系のウェブサイトにアクセスできない場合があるので注意。

2016年3月29日変更: IPアドレスを整理してCIDRにしたリストを提供していたが、IPアドレスが含まれるCIDR全体をリストアップという手法にしたら通常のWindows利用にさえ差し障るようなので公開中止にした。

取り敢えずこの記事を書いている2015年7月下旬現在はWindows7, Windows8.1でWindows Updateのサーバーに繋がらないことを確認している。Windows8.1以下やWindows Server、Officeなどのアプリはもはや確認していない。

2016年3月29日追記:
Windows Defenderの定義ファイルの更新の際にgo.microsoft.comとwww.microsoft.comを見に行ってるみたいだけどこの2つは通信をブロックしなくても定義ファイルの更新自体は阻止できるようなのでIPアドレスリストから外した。「Windows Defenderの定義ファイルが更新されてしもうたやんけ」という事態になるようだったらまたリストに入れる予定。

Windowsのhostsファイル(c:\windows\system32\drivers\etc\hosts)にIPアドレス127.0.0.1 & Windows Update関係のホスト名を書いてipconfig /flushdnsを行ってもfe2.update.microsoft.comあたりはハードコーティングされてるらしく強制的にdnsを使って名前解決するみたい。だから広告ブロックと同じようにhostsファイルを使って名前解決を妨害する手法でWindows Updateを阻止しようとしてもダメみたい。

2016年5月6日追記:
もともとWindows7用から始まったこの記事だがWindows10 (Home/Pro)用とする。
一部のIPアドレスが完全に重複するホストについては省略することにした。
これまで一部情報収集系のホストがWindows Updateフィルタに(わざとだけど)混ざってたのをはっきり分離した(つもり)。更新だけ止めたいとか情報収集だけ止めたいとかに対応。
情報収集系ホストについてはWindows Privacyフィルタに別建てしたのでどうぞ。
この記事の題名からMicrosoftの文字を外した。
これまでpf用テーブルのみの提供だったがLinuxでよく利用されるiptablesを設定するためのBourne ShellスクリプトとWindows FirewallをPowerShellで設定するためのスクリプトの提供を開始した。

2016年5月26日追記:
外国のサーバでIPアドレス収集したら違う結果が得られるのでリージョン分けしているのが確定。予想はしてたけど。
その分ける範囲がどのくらい細かいのかがわからないのが困る。

2016年5月27日追記:
アメリカとドイツのサーバでIPアドレスを収集し始めたのでそれらも公開対象に。
アメリカのは太平洋側に近い側にあるサーバで米国全土がこれでいけるのかは不明。
もっとサーバが欲しい。

2016年6月24日追記:
Windows Firewall用スクリプトを作成するSQLクエリに誤りがあり旧プライバシーフィルタ用に取得したIPリストが誤って入り込んでいることが判明。SQLクエリを修正すると共にデータベースのゴミを除去。

Windows Defenderの定義ファイル更新時に見に行くwww.microsoft.com, go.microsoft.comについては無視することにしているが時々見に行くdefinitionupdates.microsoft.comの扱いに悩む。

2016年9月14日追記:
Instagramのウェブが表示されない場合はctldl.windowsupdate.comとdownload.windowsupdate.comに含まれる110.232.152.51~110.232.152.64辺りのIPアドレスをフィルタから消してあげると正常になる場合があります。時期によって変わるかもしれない。

2016年11月5日追記:
ドイツのレンタルサーバが停められていたのでIPアドレス取得ができていなかった。
レンタルサーバでやると面倒なのでそれぞれの国の公開リゾルバを利用して名前解決することに。

2017年4月18日追記:
Windows 10 Creators Update提供開始後に追加されたであろうホストを追加した。

2017年4月19日追記:
PF用についてIPv6ホストリストの提供を開始した。iptables用とWindows用は準備中。

関連記事:


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です