2017年6月26日月曜日

SSLプロキシとして動作中のSquid内ネットワークでwindows機にwindows updateさせたい

もう透過プロキシなんて全く考えなくなってしまった僕です。
SSL対応させて分かったことは、もう透過させて何とかしようっていうのが無意味に感じたこと。
証明書読ませる時点で何やってるか自明ですやん・・・。

で、表題の件。
SSL bumpでSSL対応プロキシとして動作しているSquidを頂点としたネットワーク内から、windows updateさせようとしてはまった。
構成は

インターネット - Squid入りゲートウェイ - ハブで分かれたPC群(ほぼwindows10)

まず、Squid公式で、windows updateの項目を見る
http://wiki.squid-cache.org/SquidFaq/WindowsUpdate#Squid_with_SSL-Bump_and_Windows_Updates
To pass WU check through Squid splice, you only need to splice next MS servers:

update.microsoft.com
update.microsoft.com.akadns.net

For use in real setups, write file url.nobump:

# WU (Squid 3.5.x and above with SSL Bump)
# Only this sites must be spliced.
update\.microsoft\.com
update\.microsoft\.com\.akadns\.net

Just add this file as Squid ACL as follows:

acl DiscoverSNIHost at_step SslBump1
acl NoSSLIntercept ssl::server_name_regex -i "/usr/local/squid/etc/url.nobump"
ssl_bump splice NoSSLIntercept
ssl_bump peek DiscoverSNIHost
ssl_bump bump all

どうやらurl.nobumpに正規表現で書いたドメインをプロキシから除くということらしい。



centos7のrpmインストールなので、/usr/local/squidは/etc/squidに読み替え。
update.microsoft.com
update.microsoft.com.akadns.net
だけ接いでやればいいから!と読めるが、実はそうでも無かった。
実行すると、
一部の署名ファイルが正しく署名されていません。
エラー コード: (0x800b0109)
とでる。
恐らくオレオレ証明書を参照しているからだろうと推測できるが、となると全く接げてないじゃん。
で、更にgoogle先生にお伺いを立てると
https://blogs.technet.microsoft.com/jpwsus/2017/02/27/wu-mu-list/
結構あるぞ・・・。
全部上記に追加して、Squidを再起動してみるが、駄目。
割り切って
windows\.com
windowsupdate\.com
microsoft\.com
とすると、繋がった。がばがばである。
ただ、アップデータをダウンロードするところまで見られていないので、もしかしたらダウンロードに失敗するかもしれない。
等と思っていたら、

が出た。
Squidログを見ていると、
live.net
live.com
宛てにも接続しようとしている。
なので
live\.net
live\.com
を追加して、事なきを得た。
筈だった。
たまたまonenoteを立ち上げたら、onedriveと同期できない。
で、google先生に再度お伺いを立てると、
https://support.microsoft.com/ja-jp/help/2894304
という、winhttpという機構にもプロキシを噛まさなければならないことが判明。
どういう理屈なんだろう・・・・・・・。
プロキシを通せば良いので、
netsh winhttp set proxy proxy-server="server-domain-or-ip-address:12345"  bypass-list=""
としてあげると繋がった。必ず管理者権限で動かすこと。バイパスは多分ローカルだけで良いと思う。
※12345はポート番号。
winhttpについては
http://www.maruko2.com/mw/WinHTTP%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95

さて、SSLゲートウェイを通すためにユーザに配布するものを整理しよう・・・。
・自己署名証明書ファイル(.derファイル。ブラウザに読ませる)
・winhttpを設定するバッチファイル(管理者権限で動かすこと)
・windowsのプロキシ設定ファイル(設定のネットワークとインターネットから設定するシステムのプロキシをレジストリ直で書くもの。)
この3つかな。
多分透過で上手く動くのであれば、下2つは要らない。
最後の一つのレジストリ上プロキシの場所は
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]

0 件のコメント:

コメントを投稿