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]

2017年6月24日土曜日

AMD APUのA10-7890Kで、D-SUB出力しようとしたら解像度ではまる

windows10をインストールした表題のA10-7890Kマシンで、何故か上限が1600×1200ピクセル止まりになって悩んでしまった。
そもそもモニタが非pnpディスプレイとして認識され、削除しようが結局同じ。
モニタのプロファイルを導入しても変わらず。
グラフィック側のプロパティで上げようとすると、インターレース扱いになる。
その解決法は、実は未だ分かっていないのだけれども、何故かDVI接続すると、DVIは1920出せる。
うちの環境だと、DVI一本だと表示さえされず、D-SUBとDVIの二本繋ぎでデュアルディスプレイとして認識し、ミラーリングしたらしっかり認識した(そしてその後はDVIのみで繋がっている)。
解決という解決ではないが、不思議。

2017年6月23日金曜日

squidをSSLに対応させたい。https通信なんて大っ嫌いだ・・・。

今回何をやったかというと、SquidのSSL対応である。その備忘録。やり方は後日ここにも書きます。ひとまずわかりやすいpslaboさんの記事の方へ

元々
http://pslabo.hatenablog.com/entry/20150703/p1
で、https通信、しかも透過型で噛ませられることは認識していた。
ただ二の足を踏んでいたのは、
・作っている暇が無かった。
 作るならゲートウェイサーバをすげ替えることになるので、何より面倒くさかった。
・透過型なのだけれども、証明書をクライアントにインストールしなければならなかった。
 実は結構これが大きくて、今はプロキシが噛んでいることをユーザは認識せずに使っているのだけれども、証明書を入れなければいけない時点で認識されてしまう。
 また、ゲストネットワークをどう認識させるかという問題もあった。ゲストがネットワークに繋ごうとすると、証明書のインストール必須だと、まあ誰も接続しないだろうし、接続したいと言い張られてサポートに人手が必要とか、切ないことになりそうだったので。

でももう背に腹は代えられなくなってしまった。
どうも社内ファイルがgoogleドライブで作業されているようなのである。
せめてoffice onlineなら分かる。お漏らし回数で考えると、圧倒的にまだマイクロソフトに分があるから。
googleはあくまでも自己責任ツールの集合体で、信用しても信頼してはならない。
大企業だからって信頼してはならないことを知っているはずなのに。
また、銀行系マルウェアに感染した人が居て、大騒ぎになった。愚かとしか言い様がないが、いとも簡単に感染してしまっているのが現実。
で、そのマルウェア、誘導にSSL使っていやがります。
今のままだと、まず間違いなくやられる。
ということで、以下を実行。
pslaboさん本当にありがとうございます。。。見ず知らずなのに即行エントリ書いてもらいました・・・。
http://pslabo.hatenablog.com/entry/2017/06/18/CentOS7%E3%81%A7squid%E3%81%A7SSL%E3%82%92%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8Bproxy%E3%82%92forward_proxy%E3%81%A7%E8%A8%AD%E5%AE%9A%E3%81%97%E3%80%81

はまったところは、透過プロキシとフォワードプロキシで動作が違うらしく、google「だけ」HSTS通信と見なされ、証明書エラーで通らないこと。facebookもtwitterもHSTS通信でも大丈夫だったのに。
透過プロキシだとどうしても通らなかったのが、通常のプロキシだと通るという・・・。
ここからカスタムしていくことになるのだけれども、まずはOK/NGという初期段階まではいけたということで。
#検証前だけど、googleがリダイレクト動作をしているので、そこで引っかけている可能性が高そう。どう回避するかなあ・・・。

2017年6月21日水曜日

WannaCry対策をする(SMB1からの決別)

WannaCryという米NSAの悪意あるお土産のせいで、世間が阿鼻叫喚になったのは記憶に新しいが、
まともに対策を書いていない感じがあるので、対策。
WannaCryの概要は
https://syobon.jp/2017/05/15/wanacrypt0r-spread-of-infection-around-the-world/
を拝見しました。

ファイルサーバがSMB1を使わないようにする。
sambaだと、SMB1で通信出来るようになっているので、明示的にSMB2以上で接続するようにsmb.confのglobal部分に以下を書く。
server min protocol = SMB2
もしくは
min protocol = SMB2

で、設定の再読込
service smb reload

クライアント側は、windows7以前のOSを排除する。
SMB2.0以降を使うOSだけにする。
その場合、古いAndroidも恐らく対象になる。具体的には、AndroidOS2.Xは全滅じゃ無いかな・・・。

また、win10でもSMB1通信が出来るので、出来ないようにする。
「Windowsの機能の有効化または無効化」の「SMB 1.0/CIFSファイル共有のサポート」チェックボックスを「外す」
http://news.mynavi.jp/column/win10tips/047/
URLは真逆のことをやっていることに注意。

ゲートウェイ上の対応は、とりあえずbotネットワークに組み込まれないように、torネットワークへの接続をしないようにする。
https://dist.torproject.org/への接続をSquidで切ったり、IPを引いてiptablesで遮断する。
http://roserogue.blogspot.jp/2014/01/toriptables.html

あと出来れば、脅威の主体国が保持するIPアドレスに対してアクセスしないようにするのが適当だけど、仕事上そうも行かない可能性が高い。
ロシア、中国、イラン、北朝鮮、パキスタン、シリアへのアクセスは本音では切りたい。
個人的にはスプートニクが見られなくなることが残念だけど。

https://www.osstech.co.jp/support/2017-05-16
は眉唾だなあ・・・XPがある環境だとSMB1に対応せざるをえないからなあ・・・。
まさかとは思いますが、「サーバが感染しない(暗号化されないとは言っていない)」というだけだったりして・・・。

Windowsタブレットの有意義な使い方を発見

みんながやりたかったあの機能が、windowsタブレットなら出来ることを発見した。
androidとVNCを組み合わせて、遠隔PCとして使用するには、androidの場合、タップした位置にマウスカーソルが来ないという、
まあある意味必然的な結果があるのだけれども、なんとwindowsタブレットならばそれが無い。
タップ位置がままマウスカーソル位置になる。
使ったソフトウェアはtight-vnc
タブレットには勿論client、デスクトップPCにはserverをインストールする。
タブレットのtight vncは全画面設定にした。
まさに快適。
こんな使い方があるなら早く誰か紹介してくれれば良いのに。
と小躍りしていたら、
http://www.atmarkit.co.jp/ait/articles/1311/06/news111.html

マイクロソフト純正でリモートデスクトップか・・・。
無印だから該当しなかったけれども、pro持っていたらこっちかな・・・。

http://blog2.k05.biz/2016/05/win10home-rdp.html
も発見。RDP Wrapperだと・・・。
せっかくの発見が薄れていく・・・。

2017年6月20日火曜日

DHCPサーバを立てたくてraspberry piを買う。そして御作法に泣かされる

ラズベリーパイ、それは苦行・・・。

基本的にサーバは仮想化せず、全て別サーバとして立てている。
仮想化したり統合することのメリットはよく分かっているのだけれども、パフォーマンス分析やら不具合やらに付き合うとろくでもなかった経験がある。
よっていつも通り別サーバを組んでいこうと思ったのだけれども、予算が無い。
なので今流行の(いや遅い・・・)ラズベリーパイで組んでみようと思い立った。
DHCPサーバは、基本設定を流し込めば終了なので、なんとでもなるだろうと思っていたのが運の尽き。

前提として、僕が付き合ってきたのはcentosである(≒RHEL)。
なので、centosの「御作法」は分かっているつもりである。が、Rasberryはdebian(Rasbianなら)である。御作法が違う。

ログインユーザが「pi」


・・・このユーザは何なのだ。
あと、キー配列が英。コンフィギュレーションを出して編集。
おかしいだろ・・。

気を取り直して少し弄る。
sudoは通る。ただ、ログアウトしてpiで入ろうとするとパスワードが分からない。
・・・とりあえず、rootパスワードを設定する。
sudo passwd root
その次に、得体の知れないpiから離れるために、自分のユーザを作る。
useradd foobar
よく分からない住所やらが求められるが、気にせずエンターで済ませる。
ここではまったのが、なんとsudoerでなければGUIログイン出来ない・・・。
sudoerに追加する。
sudo gpasswd -a foobar sudo
で、piを消す。
sudo userdel -rf pi

次にネットワークだ。

NICに一意の固定IPを持たせるために、/etc/network-scr...と探そうとすると、無い。
ググると/etc/network/interfacesがネットワーク情報とのこと。
ううむ・・・とりあえず編集する。
sudo vi /etc/network/interfaces
ここで驚愕の事実。
ラズパイのviは、viだった・・・。
使い慣れているのはvimである。もう泣きたい。
カーソルの動かし方だけなんとなく思い出して必死に編集。
HJKLでキー移動。カーソルはそれぞれ←↓↑→に対応。
注:192.168.xxx.1はゲートウェイサーバ
eth0のところを
iface eth0 inet static
address 192.168.xxx.xxx
netmask 255.255.255.0
gateway 192.168.xxx.1
とするが、繋がらない。
ifconfigでeth0を見ると、169.254...が出る。
本当に泣きたい。
更にググると、dhcpcd.confに書き込めとのこと。
http://qiita.com/MarieKawasuji/items/b088ffb252a92eee8f5d
・・・どういうことかさっぱり分からない・・・自分自身にDHCP機能を使っているということ?
と思っていたら、dhcp「c」d.confだった。
・・・もう何も気にせず書くことにする。
sudo vi /etc/dhcpcd.conf
interface eth0
static ip_address=192.168.xxx.xxx/24
static routers=192.168.xxx.1
static domain_name_servers=192.168.xxx.1

・・・繋がった・・・。

sudo apt-get update
sudo apt-get upgrade
更に、digを入れたいが無いと言われる。
ググると
http://d.hatena.ne.jp/rx7/20080306/p1
dnsutilか・・・。

sudo apt-get install dnsutils
vimも入れる。
sudo apt-get install vim

・・・次。DHCPサーバ。

sudo apt-get install isc-dhcp-server
centosもそうだけど、linuxは少しはパッケージ名とか気を遣ってほしい。
これが入ってるパッケージはこれ!みたいなのがさっぱり分からない。

vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
#クラスBで立てるので、IPアドレスは172.16.X.X。
subnet 172.16.16.0 netmask 255.255.254.0 {
        option routers          172.16.16.1;
        option subnet-mask           255.255.254.0;

        option domain-name           "ufotable.net.local";
        option domain-name-servers      172.16.16.1;

        option time-offset           -18000; # Eastern Standard Time
        default-lease-time 65530;
        max-lease-time 65535;
        }#EOS

        host insert_client_name {
               hardware ethernet HO:ST:MA:CA:DD:RE;#SS
               fixed-address 172.16.16.XXX;
               }
                                            }#EOT

やっと書けたが、次はサービス追加が分からない。弄っているとsystemdな事が判明するが、dhcpdを立ち上げようとし続けてはまる。
そう、isc-dhcp-server(名前が違うんだ・・・)。

sudo systemctl start isc-dhcp-server
エラーで止まる。
ううむ・・・。
http://www.mugbot.com/2016/08/21/raspberry-pi%E3%81%ABisc-dhcp-server%E3%82%92%E8%A8%AD%E7%BD%AE%E3%80%81%E8%87%AA%E5%8B%95%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%82%8B/


/etc/default/isc-dhcp-serverの編集

・・・はあ?
もう本当によく分からない。
INTERFACES=""

の””の中にeth0を挿入
 ・・・。
sudo vim /etc/default/isc-dhcp-server
でINTERFACEにeth0を指定。
クラスCで指定した固定IPアドレスは、走らせる前にクラスBに指定し直さないと走らないので注意。
しかもその時、interfacesも弄らなきゃいけなくて、全く直感的じゃないし面倒なだけという・・・。
とりあえず諸々で、再度sudo systemctl start isc-dhcp-serverで走った。
自動化は
sudo systemctl enable isc-dhcp-server

御作法、恐るべし・・・。

個人的にはデスクトップ用途でしかdebian≒ubuntu≒mintを弄っていなかったので、良い勉強になった。
嘘です。もうCUIで正直弄りたくありません・・・。
慣れって大事。本当に・・・。

2017年6月10日土曜日

中国製で唯一「信頼」しているブランドはNillkin

Made in ChinaもしくはMade in PRCは結構あるが、大抵は日本のメーカーや商社が製造元や輸入代理店として立っている。
その場合、大抵は責任がそれらのメーカーに行くので、そこそこのクオリティを保っていることが多い。
じゃあ中国ブランドで中国製のものはどうかと言えば、大企業になっているところ(たとえばLenovoやHuaweiでもやらかすし、それ以下のものだと正直使えないものが多い。というか多すぎる。
そんな中で、唯一「信頼」しているのが、Nillkin。但し、スマホ用の保護ガラスで。
Shenzhen Nillkin Technology Co.,Ltdが正式名称らしい。
何故信頼しているかというと、時速70kmで携帯落としても割れなかったから。
悲しいことに傷は入ってしまったのだけれども、流石に仕方が無い。
安い海外製液晶保護ガラスは数あれど、実証できたのはこれだけ。
で、ガラスというものは、衝撃を加えて割れなかったとしても、衝撃を中に蓄積していって、結局割れてしまう代物。
なので、新しい保護ガラスを購入して貼り替えようと、古いガラスを剥がそうとしたところ、パキッという音と共に、割れた。
流石に限界だったらしい。ああ、ちゃんと飛散防止フィルムが入っているので飛び散ることは無い。
飛散防止フィルムの名前が格好良くて、中国語(と英語)が格好良くて、「anti-burst=防爆」。流石爆発の国。いや、実は飛散防止フィルムの名前じゃなくて、本当に「防爆」なのかもしれない。
で、実験してみたのだけれども、平滑な机に割れた保護ガラスを貼って、マイナスドライバーでゴリゴリしたり、ゴンゴン突いてみたり。
結果、やはり傷は付かないし、穴も開かなかった。ただ、ダメージを与えたところをゆっくり曲げると、ぱきりといった。

パッケージクオリティも高い。ちゃんと商品を売ろうという姿勢(ガラスなのに簡易包装だったりみたいな手抜きが無い)が感じられる。Wet&dryクリーナに、埃取りフィルム、マイクロファイバーシート、シール類がちゃんと入っている。

他のポストでも書いたけど、Shinezoneという名前で商品が結構出ているけど、あれこそ輸入代理店みたいな奴で、Shinezone名義で色んな会社の商品が送られてくる。
Nillkinを知ったのも、実はShinezoneという名前で出ていた物を買って、中身がNillkinだったから。
じゃあShinezone=Nillkinかというと、そうでもなかったりする。

一応Nillkinの公式を貼っておく。
http://www.nillkin.com