カテゴリー: Windows

PC構成一覧(2020/08/13現在)

メイン機

OpenWrtサポート作業ほかデスクワーク全般、ゲームなど通常使用用途

CPU Core i5 10500
RAM DDR4-2666 16GB x2
MB B460M Pro4
GPU GTX1660 Super
SSD
(System)
WesternDigital WDS500G2B0C (NVMe, 500GB)
SSD
(Data)
WesternDigital WDS500G2B0A (SATA, 500GB)
HDD
(Data)
WesternDigital WD10EZEX (1TB)
OS Windows 10 Pro

大破鯖

Web, Mastodon, Jenkins(Web部分), Minecraft, Wikiの各サーバのVMホスト、録画関連
メモリ不足気味
常時稼働
録画関係の為WS12R2を継続使用

CPU Core i7 6700
RAM DDR4-2666 8GB x2
MB H170M Pro4
SSD
(Host System)
Samsung MZ-V6E250 (NVMe, 250GB)
SSD
(Guest System)
CFD CSSD-S6B240CG3VX (SATA, 240GB)
SSD
(Guest System)
KLEVV D120GAA-N500 (SATA, 120GB)
HDD
(Guest Data)
WesternDigital WD10EZEX (1TB)
HDD
(Rec)
WesternDigital WD20EZRZ (2TB)
NIC I350-T4
OS
(Host)
Windows Server 2012 R2 Standard

ビルド鯖

VMがJenkinsのスレーブとして稼働(ごくたまに直接使用)
ホストごと必要時のみ稼働

CPU Ryzen 5 3400G
RAM DDR4-2133 4GB x2
MB TUF B450M-Pro GAMING
SSD
(Host System)
SanDisk SD8SBAT128G (SATA, 128GB)
SSD
(Guest System)
A-DATA ASP900S3-128GM-C (SATA, 128GB)
SSD
(Guest Data)
Crucial CT525MX300SSD1 (SATA, 525GB)
HDD
(Guest Data)
Samsung HD251HJ (250GB)
HDD
(Host Data)
Samsung HD502HI (500GB)
OS
(Host)
Hyper-V Server 2019

予備鯖

大破鯖メンテナンス時の代替稼働用、その他検証用
必要時のみ稼働

CPU Pentium G3240
RAM DDR3 8GB x2
MB GA-H81M-D3V
SSD
(Host System)
KLEVV D120GAA-N500 (SATA, 120GB)
SSD
(Guest System)
KLEVV D240GAA-N500 (SATA, 240GB)
HDD
(Guest Data)
Hitachi HDP725050GLA360 (500GB)
OS
(Host)
Hyper-V Server 2019

IISからWiki.jsにリーバスプロキシするメモ

とある事情から自宅サーバ環境下にWiki.jsを構築し、IISからリバースプロキシでアクセスするようにした。その際、トラブルでド嵌りしたのでメモ。

構成

IIS側

  • Windows Server 2012 R2
  • IIS 8.5

Wiki.js側

  • Ubuntu Server 18.04.3 LTS
  • node server (port: 3000)

症状

GitHub Authenticationを各種情報を設定の上有効化し、ログインからGitHubボタンを押すとリダイレクトが発生、この際正しいURLにリダイレクトされず404になる。
具体的には、リダイレクト先のURLに以下の違いが発生する。

https://github.com/login/oauth/authorize?response_type=code&redirect_uri=...
https://wiki.taiha.net/login/oauth/authorize?response_type=code&redirect_uri=...

本来URLのドメインはgithub.comになるが、何故かWikiのドメインが使用されてしまう。なお、Wiki.js側のローカルIPアドレスでアクセスした状態からリダイレクトを発生させた場合、正しくGitHubのログインへリダイレクトされた。このため、IISが原因であることが予想された。

どこを探しても対処法が見つからず、またいくつかそれらしき症状が報告されている質問はあるにはあったものの、いずれも回答が付いていなかった。
例:

対処

検索しつつ色々なサイトをボーっと眺めていると、 preserveHostHeader というのを見かけた。ただしこれ自体はログへの記録方法を設定するものであり、無関係。しかし構成エディタで同じ階層を眺めていると、 reverseRewriteHostInResponseHeaders なる項目を見つけた。検索してみると情報は少ないものの、どうもホスト名の書き換えに関わっている様に思え、デフォルトの True から False へ変更してみたところビンゴ。GitHubへのリダイレクトが正常に行われるようになった。

2019/11/07 追記: IIS Managerのサーバホーム(各バーチャルホストではない)-> “Application Request Routing Cache” -> “Server Proxy Settings…” -> “Reverse rewrite host in response headers” でも設定できた。

その他

メインのブログに置いている “ルータ関連メモ” 等非時系列的なコンテンツは、そのうち今回構築したWikiへの移行を考えています。

git-bashから起動したVSCodeでもWindowsのssh.exeを使うメモ

git-bashから起動したVSCodeでもWindowsのssh.exeを使うメモ

2019/07/04 12:14 追記

Remote拡張で新たなウィンドウが起動された場合、そのウィンドウ内ではsettings.jsonの ${env: <var>} が展開されず、この文字列のままPATHに設定されてしまうことが判明。この結果、ウィンドウ内でSSHが使用できず接続に失敗する。
どうにもできないので、この記事のやり方は非推奨。2019/07/04現在、VSCode Insiders (バージョン: 1.36.0-insider) ではRemote拡張の設定でSSHコマンドへのパス指定が実装されているため、これを利用してしまうのが手っ取り早そう。リリース版 (バージョン: 1.35.1) にはこの設定は無し。
追記: リリース版 (バージョン: 1.36.0) からssh.exeへのパス指定が追加されていることを確認。

Windows 10にて、普段git-bashからVisual Studio Codeを起動して作業しているが、その際VSCodeへgit-bashからPATHが渡され、VSCode側の認識するssh.exeがgit-bash側のものとWindows側のもの2種類が存在してしまっていた。

PS C:\Users\tofu\git\musashino205\openwrt> cmd
Microsoft Windows [Version 10.0.18362.175]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\tofu\git\musashino205\openwrt>path
PATH=C:\Users\tofu\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\local\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\tofu\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\dotnet;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn;C:\Program Files\Microsoft VS Code\bin;C:\Program Files (x86)\Poedit;D:\Compiler\go\bin;D:\Compiler\GOPATH\bin;C:\Users\tofu\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Git\usr\bin\vendor_perl;C:\Program Files\Git\usr\bin\core_perl

C:\Users\tofu\git\musashino205\openwrt>where ssh.exe
C:\Program Files\Git\usr\bin\ssh.exe
C:\Windows\System32\OpenSSH\ssh.exe

C:\Users\tofu\git\musashino205\openwrt>

この結果、Remoting (SSH)などでgit-bash側のssh.exeが使用され、Windows側のssh-agentに登録した認証情報を使用して自動的にログインできず、毎回パスワードを聞かれて非常に面倒だった。

大体対処できたのでメモ。

Windowsの環境変数を追加登録
Windowsの環境変数を登録。ユーザー環境変数で問題ない。
名前は VSCPATH などとし、値は %PATH%
settings.jsonを編集
VSCodeのsettings.jsonを開き、以下を追加して保存(環境変数名は適宜合わせること)

    "terminal.integrated.env.windows": {
        "PATH": "${env:VSCPATH}"
    }

${env:<variable>} は環境変数を読み取って代入するもの。

以上。

PS C:\Users\tofu\git\musashino205\openwrt> cmd
Microsoft Windows [Version 10.0.18362.175]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\tofu\git\musashino205\openwrt>path
PATH=C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\Microsoft VS Code\bin;C:\Program Files (x86)\Poedit;D:\Compiler\go\bin;D:\Compiler\GOPATH\bin;C:\Users\tofu\AppData\Local\Microsoft\WindowsApps;

C:\Users\tofu\git\musashino205\openwrt>where ssh.exe
C:\Windows\System32\OpenSSH\ssh.exe

C:\Users\tofu\git\musashino205\openwrt>

Hyper-V Server 2016 + Windows 10 1809でのVM設定メモ (PowerShell)

Windows Hyper-V Server 2016上に、Windows 10 1809のHyper-V マネージャーからVMを作成した際、嵌ったのでメモ。

通常通りVMを作成したところ、セキュアブートの有効/無効切り替えがVM設定画面のどこにも無く、Linuxをブートするのに必要なセキュアブートの無効化ができなかった。
代替として、PowerShellにより設定できた。

  • VM名を取得する。Hyper-V マネージャーから対象のVM名を確認するか、PowerShellで Get-VM を実行して確認する。
    [tofu-h81whs16]: PS C:\Users\Administrator\Documents> Get-VM
    
    Name      State   CPUUsage(%) MemoryAssigned(M) Uptime           Status Version
    ----      -----   ----------- ----------------- ------           ------ -------
    XU18_test Running 11          1024              00:12:54.6510000 正常稼働中  8.0    
    
  • VMのセキュアブート設定を確認する。PowerShellから
    Get-VMFirmware -VMName "(VM名)"
    を実行し、 “SecureBoot” 列を確認する。

    [tofu-h81whs16]: PS C:\Users\Administrator\Documents> Get-VMFirmware -VMName "XU18_test"
    
    VMName    SecureBoot SecureBootTemplate PreferredNetworkBootProtocol BootOrder              
    ------    ---------- ------------------ ---------------------------- ---------              
    XU18_test On         MicrosoftWindows   IPv4                         {Drive, Drive, Network}
    
  • セキュアブートを無効化する。PowerShellで
    Set-VMFirmware -VMName "(VM名)" -EnableSecureBoot Off
    を実行する。

    [tofu-h81whs16]: PS C:\Users\Administrator\Documents> Set-VMFirmware -VMName "XU18_test" -EnableSecureBoot Off
    

    VMが起動している状態ではエラーが出て変更できない。シャットダウンまたは停止してから実行する。
    実行後、再度セキュアブートの状態を確認する。

    [tofu-h81whs16]: PS C:\Users\Administrator\Documents> Get-VMFirmware -VMName "XU18_test"
    
    VMName    SecureBoot SecureBootTemplate PreferredNetworkBootProtocol BootOrder              
    ------    ---------- ------------------ ---------------------------- ---------              
    XU18_test Off        MicrosoftWindows   IPv4                         {Drive, Drive, Network}
    

Windows Hyper-V Server 2016でのファイアウォールグループ有効化

現在ビルド鯖で仮想マシンのホストOSとして稼働しているWindows Server 2012 R2のサポート終了に備えて、Windows Hyper-V Server 2016を試していた際に気になったのでメモ。
従来使用されていた(らしい)netsh advfirewall は既に非推奨らしいメッセージが表示されるため

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\WINDOWS\system32> netsh
netsh>advfirewall
Windows の将来のバージョンで、Windows Firewall with Advanced Security の Netsh 機能が削除される可能性が
あります。

現在 Windows Firewall with Advanced Security の構成および管理に netsh を使用している場合は、Windows PowerShell に
移行することをお勧めします。

Windows Firewall with Advanced Security を管理するためのコマンドの一覧を表示するには、Windows PowerShell プロンプト
に「Get-Command -Module NetSecurity」と入力してください。

Windows Firewall with Advanced Security 用の PowerShell コマンドの詳細については、
https://go.microsoft.com/fwlink/?LinkId=217627 を参照してください。
netsh advfirewall>

、移行先として推奨されているPowerShellで行えないか色々探し、それらしきものを見つけた。

Hyper-V Server 2016のリモート管理環境構築-(3)サーバー側設定 | Yu’n Craft
で紹介されている下記

netsh
advfirewall
firewall
set rule group="リモート デスクトップ" new enable=yes
set rule group="ファイルとプリンターの共有" new enable=yes
set rule group="Windows リモート管理" new enable=yes
set rule group="リモート イベントのログ管理" new enable=yes
set rule group="リモート ボリューム管理" new enable=yes
exit

の場合、PowerShellでは以下で代用できた。

Enable-NetFirewallRule -DisplayGroup "リモート デスクトップ"
Enable-NetFirewallRule -DisplayGroup "ファイルとプリンターの共有"
Enable-NetFirewallRule -DisplayGroup "Windows リモート管理"
Enable-NetFirewallRule -DisplayGroup "リモート イベントのログ管理"
Enable-NetFirewallRule -DisplayGroup "リモート ボリューム管理"

これでWindows Hyper-V Server 2016に対するリモートデスクトップと “Hyper-V マネージャー” 、 “コンピューターの管理(一部)” が通るようになった。サーバのAdministratorは予めクライアント側 (Windows 10 1809) でcmdkeyを用いて認証情報を追加し、TrustedHostsも追加済み。

WindowsでのLet’s EncryptとIDN(Manual Plugin)

  • 大破.net, 側転.大破.net などがもうすぐ期限切れるよとメール来る
  • letsencrypt-win-simpleでrenew実行してみる
  • “unable to renew”
  • v1.9.3までマニュアルプラグインでのrenewは非サポート

    letsencrypt-win-simpleではIISプラグインを利用してIDNを読み取れないため、マニュアルプラグインにてドメイン名のpunycodeを手動で入力する必要がある

  • v1.9.4からスクリプトでマニュアルプラグインでのrenewをサポート
  • 失敗によりレジストリの更新タイミングを10月に書き換えられてしまっているので、今日よりも前の日付に書き換え
    \HKCU\Software\letsencrypt-win-simple\https://acme-v01.api.letsencrypt.org/\Renewals
  • v1.9.4をダウンロードしてrenew
  • OK

Windows Server 2012 R2 + IIS で SSL/TLS Session Tickets を無効化する

発端

  • SSL Labsで、「5月1日以降 Session Tickets 脆弱性 (Ticketbleed) が残っている場合、それまでの評価にかかわらず F に叩き落すぞ」(大幅に盛った意訳)と言われた
    • 設定詰めてやっと取れた A+ 評価から F に叩き落されたらたまったもんじゃない
    • とりあえず対策、もしくは対策できないならこの機能を無効化したい
      • Session Tickets は、あくまでSSL / TLSの高速化に関する機能(らしい)
      • 無効化してもセキュリティの強度には影響無しと判断

対策

  • とにかく情報が無い。全くと言っていいほど無い。
    • F5製品に関しての情報しか出てこない…
    • 世の中のIISを利用してるWebサイトは一体どうなってるんだろう、というのが正直な気持ち
  • あった(1サイトだけ)

これで5月1日以降もSSL Labsの評価を叩き落されることは無いはず…