この更新履歴ファイルの最新版は、https://github.com/IPA-CyberLab/IPA-DN-ThinLib/ を参照してください。
** BETA VERSION UNDER DEVELOPMENT, INCOMPLETE AND BUGGY. USE AT YOUR OWN RISK. Ver 1.0 is scheduled to be released during November 2021. We strongly recommend that you wait until Ver 1.0 is released. ** - This Git repository contains the source code and documentation for the open source version of the Thin Telework System which is under development. 2021-10-31 by Daiyuu Nobori.
rc3 には、次の機能を追加予定です。これは、シン・テレワークシステムの一応の完成版のリリース前における、最後の重要な機能追加となる予定です。
- ZTTP (Zero Trust Tunneling Protocol) を実装する予定です。ZTTP は、最近のゼロトラスト製品として流行し始めている、クラウド型 HTTPS プロキシサーバー機能 (SSL 通信を中間者攻撃の手法を用いて復号化するもの) において、シン・テレワークシステムの通信が不正な通信であるとみなされて検出され、遮断されてしまうリスクを回避するために、通信内容を二重に SSL で暗号化することにより、外側の SSL が中間的に解読されても、内側の SSL の内容・属性が全く分からないようにするための機能です。これにより、一部の企業で利用されている HTTPS プロキシサーバーにおいて、シン・テレワークシステムの通信がうまく確立しない問題を解決することができます。ZTTP は、デフォルトで OFF になっていますが、ユーザーが選択的に ON にすることができます。
- シン・ファイアウォール機能を追加しました。シン・ファイアウォール機能は、シン・テレワークシステム サーバー機能に付属しています。シン・ファイアウォール機能に関する詳細は、シン・ファイアウォール機能の設定ファイル (サーバー設定ツールからボタンをクリックして簡単にアクセスできます。) をご参照ください。なお、シン・ファイアウォール機能は、標準状態で開始されておらず、ユーザーが明示的な操作を行い動作を開始するまでは動作しないようになっています。また、ソースコードの
src/Vars/VarsActivePatch.h
のVars_ActivePatch_AddBool("DisableThinFirewallSystem", false);
の設定値をtrue
に変更することにより、シン・ファイアウォールシステム機能を完全に無効化することができます。 - メモリのヒープ領域保護を強化しました。メモリの解放および再確保が実施される際に、メモリの前後領域にカナリアと呼ばれるランダムなセキュリティ値を書き込み、その値が変更されていた場合、メモリ領域のバッファオーバーフローであるとみなしてプロセスを安全のために終了 (再起動) します。この機能は、将来本システムに何らかのヒープ領域オーバーフローの脆弱性が発見された場合でも、その脆弱性により、機密性または完全性が侵害されることを効果的に予防することが可能であると考えられます。
- SSL 通信中にユーザーが切断操作を行おうとした場合に、稀にプロセスがクラッシュする問題を解決しました。
- (ハイパースケール版のみ) コントローラにおいて、データベースが障害により停止してしまっている場合、通常は、サーバーからの VPN 接続の処理は継続することができます。しかしながら、コントローラのコードに不具合があり、サーバーが WoL 機能を有効にしている場合、MAC アドレスの確認・登録・更新処理のためにデータベースの読み書きが試行され、DB が停止している場合は、ここで例外が発生し、接続に失敗してしまうバグが存在しました。このバグを解消し、データベース障害時においても、WoL 機能を有効化しているサーバーからの接続が問題なく可能になるように修正しました。
- (ハイパースケール版のみ) 新規サーバーがコントローラに登録をする際に、データベースへの INSERT 処理が実施されますが、この際、INSERT に先立ち、SELECT を用いて、ユニークな初期のコンピュータ ID を決定しようとする処理が作動します。この処理においては、当然、トランザクションによるロックをかける必要がありますが、SELECT でまず読み取りトランザクションがかかり、次に INSERT の段階で、これが書き込みトランザクションに変換されます。ここで、同時に大量の新規サーバーが重なり合ってコントローラに自らを登録しようとすると、デッドロックが発生します。デッドロックは自動的に検出され、ロールバックされますので、データの一貫性は保たれます。しかし、リトライに時間を要し、一部の接続はアボートされ、サーバー側が再試行するまで待たされます。この状態はあまり一般的には発生しませんので、これまで発見されませんでしたが、この度、大量の接続をシミュレーションする特殊なツールを、別途開発している最中に発見されました。そこで、この問題を一応解決するために、コントローラ側で、上記の INSERT と SELECT との間で簡易的に自主的なプロセス内ロックを用いて、この 2 つの処理を挟む処理は、単一のコントローラからは、同時に 1 本しか作動しないように改良しました。この変更による通常時のパフォーマンスの劣化は、複数のサーバーが同時に登録を試みている場合をのぞいては存在しません。複数のサーバーが同時に登録を試みている場合は、その登録処理は、単一のコントローラの視点でみると、同時に 1 本しか走らなくなりますので、その場合に限っては、パフォーマンスが犠牲になります。しかし、このことをよく考えてみると、もともと複数のサーバーが同時に登録を試みている場合は、前記のようなデッドロックが発生するおそれが高く、そのデッドロックの検出と回復のためのリトライ処理の時間ロスのほうが、ロックに伴う処理の多重化の禁止による時間ロスよりも大きいと考えることができるので、この変更は合理的です。ただ、この変更によっても、複数台のコントローラが動作していて、かつ、複数のサーバーがそれぞれ異なるコントローラに対して自らを登録しようとした場合、今回追加されたロックは、プロセス内でのみ機能し、コントローラ間にまたがったロックは行なわないので (そのロックは、まさにデータベースのトランザクション機能が担っています)、このような場合には、やはり、デッドロックが発生し、リトライが生じる可能性は残されています。ただし、それでもコントローラの台数は一般的には 2 台程度、多くて 3 台くらいであると思われますし、コントローラとデータベースサーバーとの間の遅延はそれほど大きくないと考えられますので、実用上は、これであまり問題はないということができると思います。
- (ハイパースケール版のみ) コントローラ画面において、稼働中の中継ゲートウェイ一覧ページに、「StatusMessage」という列を追加し、「CpuLatency: 0.035 ms」というような表示を追加しました。この CpuLatency は、中継ゲートウェイの処理する全 VPN セッションの内部的な遅延 (CPU 内で発生する遅延) の現在の平均値を表示します。この CpuLatency の値は、ネットワーク上の遅延とは無関係です。ネットワークの帯域幅が問題無く供給されていても、大量のセッションを中継ゲートウェイが処理しようとする場合は、この遅延が増大します。この CpuLatency が 0.1ms 以内であれば極めて優良ですが、負荷が高くなると、遅延は増大していきます。このCpuLatency が数 ms を超えた場合、ユーザーの画面操作の快適性に影響が生じます。そのため、中継ゲートウェイを運営し、かつ、大量のユーザーセッションを処理しようとする場合において、CpuLatency の値を日常的に見守り、これが増大してきた場合は、中継ゲートウェイの台数を増強することを検討することが推奨されます。注意: CpuLatency の値は、約 10 秒ごとに更新されます。また、1 本も VPN セッションが接続されていないゲートウェイの場合、その間は、CpuLatency の値は N/A となります。なぜならば、CpuLatency は内部遅延の測定結果であり、測定対象のセッションが 1 本も存在しなければ、そもそも測定する対象がないためです。
- OpenSSL のバージョンを OpenSSL 3.0.9 にバージョンアップしました。
- 本プログラムが利用している OpenSSL ライブラリ内部で使用されている RW Lock (リーダライタロック) と呼ばれるロック取得機能は、OS (libc, pthread, カーネル) の提供するロック機能を呼び出しますが、最近の Linux ディストリビューションに含まれる pthread の RW Lock にはバグがあり、単一のサーバーで数千セッションを処理する際に、突然すべての CPU がスピンロック相互待機状態に陥り、CPU 時間を極めて長時間消費して、VPN 通信セッションの通信が困難になり、また VPN セッションがタイムアウトで切断されてしまう問題を生じさせていました。この問題は、OS 側の不具合であり、少なくとも Ubuntu 20.04 またはそれ以降の Linux ディストリビューションで、かつ x64 版でのみ発生しました。この問題は OS 側の問題で、解決することが困難であるため、この問題を回避するため、RW Lock を利用せず、代わりに通常の Mutex Lock のみを利用するように、ユーザーモードプログラム側の処理を書き換えました。これにより、本問題は回避されました。
- OpenSSL の 3.0.0 から 3.0.2 までは、TLS 1.0 ~ TLS 1.2 で使用可能な暗号アルゴリズムのうち RC4-MD5 の使用時にバグがあり、正常なクライアントとの接続に失敗する問題がありました。そのため、従来のバージョンでは RC4-MD5 を選択的に無効にしていました。しかし、OpenSSL のバージョンを 3.0.9 にアップデートし、この問題が解決されたことから、RC4-MD5 の選択的無効化は解除しました。ところで、RC4-MD5 は現在では安全なアルゴリズムとはみなされていないので、通常はこれが選択されることはありません。また、TLS 1.3 を使用する場合は、そもそも RC4-MD5 が選択される余地はありません。それでは、RC4-MD5 が一応利用可能となっている意味は何でしょうか。それは、古いバージョンの Web ブラウザ (古い PC、組み込み端末、スマートフォン等) の中には、RC4-MD5 での通信を希望する者も存在するかも知れないためです。こういった古いブラウザで、かつ、HTML5 対応のブラウザが存在し得ます。そのようなブラウザが HTML5 版 Web クライアントの WebSocket 通信を行ない、シン・テレワークシステムと通信をする場合は、依然として、RC4-MD5 は重要な選択肢です。ただし、これは極端なケースですので、一般的には、この問題についてはあまり重視する必要はないといえます。
- HTTP プロキシ経由接続の時点における User Agent の値は、ユーザーが画面で設定可能ですが、以前のバージョンでは、デフォルトで
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0)
という文字列が設定されるようになっていました。これは、少し古いバージョンのブラウザの値をもらってきたものです。しかしながら、一部の先鋭的企業が運営している HTTP プロキシサーバーは、最近、User Agent の値を勝手に読み取り、これに基づき、古いブラウザを排除するような挙動を示すようになりました。これは、困ったことです。そこで、User Agent のデフォルト値をMozilla/5.0 (Windows NT 10.0; Win64; x64) like Gecko
に変更しました。これにより、HTTP プロキシサーバーによって、古いブラウザが利用されていると誤認して通信を切断するリスクが減りました。
- 使用している OpenSSL のバージョンを、バージョン情報画面やログファイル等で表示・出力するようにしました。
- Windows において、LAN カードが 2 枚以上存在し、一方にデフォルトゲートウェイが設定されており、もう一方に使用する DNS サーバーが設定されているケースで、DNS の名前解決の失敗によるリトライが発生し、接続時に長時間 (60 秒程度) 画面が固まってしまう問題を解決しました。
- 内部的に使用する暗号ライブラリを OpenSSL 3.0.7 にアップグレードしました。
- ハイカラスタンバイ機能付きノート PC がスタンバイしてしまう問題を解決しました。
- 『ビルドにあたっての重要な変更点』 (開発者およびシステム関係者の方々は必ずご一読ください)
- シン・テレワークシステムの GitHub リポジトリ https://github.com/IPA-CyberLab/IPA-DN-ThinApps-Private/ は、git のサブモジュールとして、主要なソースコードを、別の GitHub リポジトリに集約し、このサブリポジトリを参照する形で実装しています。
- [1] 背景と従来の問題点 - 『IPA-DN-Ultra』 サブリポジトリの極端な肥大化
- 1 つ前のバージョン「beta8preview9 - 2022/08/08」までは、サブリポジトリの名前は、『IPA-DN-Ultra』 という文字列でした。IPA-DN-Ultra の GitHub 上での URL は、https://github.com/IPA-CyberLab/IPA-DN-Ultra/ でした。そして、シン・テレワークシステムの GitHub リポジトリ (IPA-DN-ThinApps-Private) を、開発用のローカルマシンで再帰的 Pull した場合は、これは、『IPA-DN-ThinApps-Private/submodules/IPA-DN-Ultra/』 というローカルのサブディレクトリに、自動的にチェックアウトされていました。
- ところが、『IPA-DN-Ultra』サブモジュールは、2020 年のシン・テレワークシステムの開発時からの度重なるアップデートにより、肥大化してしまいました。肥大化の結果のサイズは、0.6GB (660MB) にも達してしまっていました。その主要な原因は、含有する OpenSSL ライブラリのコンパイル済みバイナリのサイズに、極めて詳細なデバッグ・シンボルが含まれていること、および、ほとんどの場合には不要なデバッグ・ビルドが含まれていることでした。
- これらの原因により、開発者や中継サーバー運営者の方々が、シン・テレワークシステムのソースコードを git pull される際に、『IPA-DN-Ultra』サブモジュールを GitHub からダウンロードする際に長時間 (1 分間 ~ 10 分間) を要する状態となっていました。そして、前記の肥大化の主要な原因であるファイル群のデバッグデータは、ほとんど意味のない情報で占められていました。さらに、OpenSSL の度重なるアップデートにより、過去ファイルが git 上の履歴として必ず残るという git の性質上、この肥大化の傾向は、ますます、一方的に重くなるばかりでした。
- さらに、肥大化は、単に clone (pull) の待ち時間が長くなるという快適性の面だけでなく、より深刻な、ローカルディスク消費量の増大による空き容量不足という問題を、新たに引き起こしつつありました。git で clone (pull) を行なうと、最新版のファイルだけでなく、git リポジトリの履歴を含めた全データが、ローカルディスクに保持されます。シン・テレワークシステムの大量の台数の中継サーバーを、Raspberry Pi、クラウド VM、または Docker/LXD コンテナ等で運用される場合、ローカルディスクの容量は、これらのサーバーを運用するためのコストに直結します。特に、パブリック・クラウドでは、なおさらであります。『IPA-DN-Ultra』サブモジュールの肥大化の結果のサイズは、0.6GB (660MB) に達していましたが、これは、たとえば 200 台のインスタンスを運用するとき、120GB ものデータ領域をほとんど無駄に消費することにつながるのです。
- 加えて、肥大化は、稼働させている中継サーバーのディスクのバックアップを行なう際にも、そのバックアップサイズの増大というコスト増を引き起こします。なぜならば、バックアップはディスク上にあるファイル群を忠実にバックアップしますが、『IPA-DN-Ultra』サブモジュールの肥大化されたファイル群も、その中に、含まれるためであります。
- 上記のような要因により、最近、いよいよ肥大化の問題を解消する必要がある状態に差し掛かっていました。
- [2] 解決策 - 『IPA-DN-Ultra』→『IPA-DN-ThinLib』へのリポジトリ名の変更と、古い履歴の削除による肥大化の解消
- そこで、この度、従来のサブリポジトリである『IPA-DN-Ultra』の内容をコピーして、『IPA-DN-ThinLib』 (https://github.com/IPA-CyberLab/IPA-DN-ThinLib/) という名前の新しいサブリポジトリを作成し、その際に、不要な過去の巨大な OpenSSL のファイル群を削除し、肥大化を解消して、スリム化を実現しました。
- そこで、今後は、『IPA-DN-ThinLib』が、従来の『IPA-DN-Ultra』に代わって、『IPA-DN-ThinApps-Private/submodules/IPA-DN-ThinLib/』 というローカルのサブディレクトリに、自動的にチェックアウトされるようになりました。
- 今回のスリム化の効果は、顕著なものであります。サブリポジトリの容量は、従来の 0.6GB (660MB) から、 0.05GB (52MB) に削減されました。すなわち、90% 以上も削減することに成功したということになります。
- スリム化においては、まず、git の履歴上の古い不要な OpenSSL 等の旧バージョンの肥大化されたファイルを履歴データから削除 (過去の改ざん) しました。
- 次に、現在の OpenSSL のライブラリファイルについて、デバッグビルド (最適化されていない、デバッグ用のコードが多量に含まれるビルド) およびデバッグシンボルは、OpenSSL の内部的問題に起因する不具合を解決しなければならないような極めて稀なケースにおいてのみ必要となる情報であることから、『IPA-DN-ThinLib』には、これらのデバッグ用ファイルを、今後含めないことにしました。
- ここで皆様から提起される当然の疑問は、「上記の縮小の工夫が合理的であることは理解できるけれども、なぜ、今回の縮小において、サブリポジトリ名が変更される必要があったのか?」というものであると考えられます。その理由は、次のとおりです。
- git においては、ファイルの変更履歴の内容を含めたデータを SHA-1 ハッシュとして、コミット ID が生成されます。親モジュールとサブモジュールの間の相互参照は、すべて、コミット ID に基づいて連結されていています。git による過去の改ざんにより、コミット ID が変化すると、それ以降のコミット ID に対する参照を行なう際は良いものの、それ以前のコミット ID を参照しているすべての親プロジェクトは、もはや、ビルドできなくなってしまいます。
- シン・テレワークシステムのソースコードは、これまでの開発中のバージョンについて、かなり広範囲で利用されています。過去の任意のバージョンを開発またはビル不具合の究明のためにビルドする必要性は、今後も半永久的に存続します。
- そこで、上記を満たすためには、『IPA-DN-Ultra』が含有する過去の履歴情報におけるコミット ID は、決して変更されてはならないということになります。
- したがって、『IPA-DN-Ultra』はそのまま安置した上で、『IPA-DN-ThinLib』などの、異なる名前のサブモジュール名を新たに作成する必要があるのです。
- なお、親リポジトリをローカルディスクにチェックアウトした際、サブリポジトリは、物理的には、『IPA-DN-ThinApps-Private/submodules/サブリポジトリ名/』 というディレクトリに格納され、このローカルの物理的なサブリポジトリのディレクトリ名は、GitHub 上のリポジトリ名と、必ずしも同一文字列である必要はないかも知れません。そこで、論理上は、ローカルの物理的なサブリポジトリのディレクトリ名は、『IPA-DN-Ultra』を保ったまま、GitHub 上の新しいサブリポジトリ (別名) を指し示すようにする、というような方策は、もちろん考えられるところです。
- しかし、その方法により、ローカルの物理的なサブリポジトリのディレクトリ名と、GitHub 上の新しいサブリポジトリ名とが別名となると、それは、むしろ、開発者または運営者の方々の視点において、直感性に欠け、大きな混乱を引き起こす可能性があると考えられます。
- そこで、親リポジトリをローカルディスクにチェックアウトした際のサブリポジトリのディレクトリ名も、今回、新たに、『IPA-DN-Ultra』→『IPA-DN-ThinLib』に変更することにしました。
- これにより、今後、開発者またはシステム運営者の皆様は、シン・テレワークシステムの GitHub リポジトリ https://github.com/IPA-CyberLab/IPA-DN-ThinApps-Private/ の clone (pull) に要する時間が、極めて短くなり、上記の「問題点」で述べた各種問題は、解決されました。
- [3] 副作用 - 『IPA-DN-Ultra』の内容を変更されていた開発者/運用者の方々へのローカルファイルパスの変更のお願い
- ところが、ローカルの物理的なサブリポジトリのディレクトリ名は、今回、『IPA-DN-ThinApps-Private/submodules/IPA-DN-Ultra/』 から 『IPA-DN-ThinApps-Private/submodules/IPA-DN-ThinLib/』 に変化してしまいました。そこで、次の 2 つの問題が発生します。
- 従来の beta8 またはそれ以前のビルドをローカルディスクでチェックアウト (clone, pull) されていた開発者または運営者のローカル環境におかれましては、『IPA-DN-ThinApps-Private/submodules/』に、古い『IPA-DN-Ultra』と、新しい『IPA-DN-ThinLib』の 2 つのサブリポジトリのディレクトリが存在してしまいます。この現象が発生する理由は、git がチェックアウトすべき旧サブリポジトリはサブモジュール一覧リストから消え、新たに別のサブリポジトリがサブモジュール一覧リストに追加されたのですが、git はすでに物理的にチェックアウトされた古いサブリポジトリの物理ファイルを、自動的に削除することはしないという安全策のための挙動によるものです。ただ、この問題は、それほど深刻な問題ではありません。少し紛らわしいですが、rc1 以降では、『IPA-DN-ThinApps-Private/submodules/IPA-DN-ThinLib/』のみが有効なサブモジュールの実体として利用されます。古い『IPA-DN-Ultra』のディレクトリが残存していても、それは、支障にはなりません。ただし、ローカルディスク容量をある程度無駄に消費する問題と、直感性に欠けるという問題があります。必要な場合は、古い『IPA-DN-Ultra』のディレクトリは、もし、そのディレクトリの中身を書き換えている場合、必ず、バックアップを取るなどした後、ローカルディスクから削除してしまって問題ありません。
- 次に、従来、開発者またはサーバー運営者の方が、ビルドにあたり、『IPA-DN-ThinApps-Private/submodules/IPA-DN-Ultra/』のソースコードやデータを変更されていた場合や、そのビルド時の変更手順を手順書またはスクリプト等に埋め込まれている場合は、それらの変更内容の適用先ディレクトリは、今後、新たに『IPA-DN-ThinApps-Private/submodules/IPA-DN-ThinLib/』に変更していただく必要が生じます。
- これは、上記の制約上、やむを得ないことですので、必要に応じて、既存の手順書、スクリプト、または変更履歴データ等の変更または移動をお願いいたします。
- ただし、これは、開発者または運営者の方々が作成されている既存の手順書、スクリプト等のうちのテキストデータを検索して、『submodules/IPA-DN-Ultra』(スラッシュは、バックスラッシュである可能性もあります) という文字列がある部分を、『submodules/IPA-DN-ThinLib』(同じく、スラッシュは、バックスラッシュである可能性もあります) に適切に置換いただくことで (置換される際は、バックアップの確実な保存をしていただくことを推奨します)、ほとんどコストをかけることなく、自動的・機械的に実施いただくことが可能です。
- また、以前に『IPA-DN-Ultra』を直接編集されていた場合は、編集された変更内容を、そのまま、『IPA-DN-ThinLib』に適用していただければ、変更点は、問題無く適用されます。
- そして、この変更は、(今後、『submodules/IPA-DN-ThinLib』がさらに別の名前に変更にならない限り) 1 回だけで済みます。
- ところが、ローカルの物理的なサブリポジトリのディレクトリ名は、今回、『IPA-DN-ThinApps-Private/submodules/IPA-DN-Ultra/』 から 『IPA-DN-ThinApps-Private/submodules/IPA-DN-ThinLib/』 に変化してしまいました。そこで、次の 2 つの問題が発生します。
- 上記の変更内容は、rc1 のマニュアル にも、すでに反映されています。
- 一部の環境でポリシー規制サーバーの自動検出に失敗する問題があるという報告がありました。そこで、サーバー側設定で「詳細デバッグログ」を有効にしている場合は、「server_log」ディレクトリに保存されるログにポリシー規制サーバーの自動検出の状況 (デバッグメッセージ) を記録するようにしました。
- コントローラが 2 台以上の冗長構成となっている場合で、かつ、アプリケーション側がプロキシサーバーを使用している場合に、最初の接続試行先コントローラの 1 台のコントローラに TCP レイヤでの接続不具合が生じると、他の接続試行先コントローラへの接続への試行をせずに、当該接続不具合が存在している側のコントローラへの接続をし続ける問題を解決しました。また、関係するメモリリークを解消しました。
- 内部的に使用する暗号ライブラリを OpenSSL 3.0.3 にアップグレードしました。
- TLS 1.0 / TLS 1.1 / TLS 1.2 / TLS 1.3 のそれぞれを無効にするオプションが効いていない不具合を解決しました。
- EntryPoint.dat ファイルで UTF-8 BOM が先頭に記載されていたときに無視するようにしました。
- シン・テレワークシステム 中継ゲートウェイ スタンドアロン版における SMTP による OTP メール送信機能において、SSL/TLS 通信および SMTP 認証に対応しました。
- シン・テレワークシステム 中継ゲートウェイ スタンドアロン版に Mikaka DDNS Client の組み込みを行ないました。
- ユーザーモードの場合で、かつ Windows 高速スタートアップが有効な場合は、警告メッセージを表示するようにしました。
- システムディスクの空き容量が 500MB 未満となった場合、起動時に警告メッセージを表示するようにしました。
- Win32 版のコンパイラのバージョンを Visual Studio 2019 から Visual Studio 2022 に更新しました。
- HTML5 版 Web クライアントにおいて、日本語キーボードで日本語かな入力を行なう際に、ひながなキーの「を」文字が入力できない問題を解決しました。なお、ひらがなキーの「ろ」文字を入力する場合は、Shift + 「ろ」を押す必要があります。
- 「ユーザーモード リモートデスクトップ」モードにおける重要な制限事項について: 一部のキー入力や特権を伴うキー操作ができない場合があります。日本語入力においてかな入力で一部の文字 (「を」、「ろ」等) が入力できない場合があります。「ユーザーモード リモートデスクトップ」モードでは、ローマ字入力をお使いください。
- HTML5 版 Web クライアントから、クライアントのマイクの共有が可能になりました。これにより、サーバー側 PC 上で動作している Teams や Zoom, Skype, WebEx 等のテレビ会議システムに、クライアント PC のマイクを接続することが可能になります。この機能を有効にするには、サーバーアプリケーションのバージョンを beta8preview5 以降にする必要があります。また、Web ブラウザにおけるマイクの共有機能を有効にする必要があります。Web ブラウザによっては、この機能は正常に使用できない場合があります。Google Chrome の利用を推奨します。
- HTML5 版 Web クライアントから、クライアントとサーバーとの間でクリップボードの共有が可能になりました。これにより、サーバー側のワープロソフトやテキストエディタ等と、クライアント側のワープロソフトやテキストエディタ等との間でテキストのコピー&ペーストが可能になりました。この機能を有効にするには、Web ブラウザにおけるクリップボードの共有機能を有効にする必要があります。Web ブラウザによっては、この機能は正常に使用できない場合があります。Google Chrome の利用を推奨します。
- 中継ゲートウェイの SSL 接続処理パフォーマンスを大幅に向上させました。beta8preview1 では、OpenSSL 3.0 における挙動やアーキテクチャの大規模変更が原因で、性能の劣化が発生していました。beta8preview4 では、コード全体の大幅な見直しを行ない、SSL_CTX の高速キャッシュ機構を実装することにより、この問題を解決しました。
- Win32 版クライアントアプリが Nuro 光の ZTE 社の HGW の配下の PC で利用できないという問題が報告されました。これは、Nuro 光の ZTE 社の HGW の DNS キャッシュサーバーのバグであることが判明しました。この問題を回避するためのコードを追加しました。
- Let's Encrypt のルート証明書の有効期限切れ問題 (2021/09/30 に発生) に対応するため、すべての Let's Encrypt 中間証明書チェーンに含まれる証明書をクライアントに対して強制的に Web クライアントに対して送付するようにしました。【背景】 HTML5 版 Web クライアントにおいて、SSL (HTTPS) ネゴシエーション時は、Web サーバーは、Web クライアントに対して、以前のバージョンは、Web サーバーを動作させている OS または OpenSSL が報告する証明書チェーンをそのまま送付していました。しかしながら、2021/09/30 頃に世界的に発生している現象である Let's Encrypt のルート証明書および中間証明書の有効期限切れによるエラー発生等の事象に伴い、OS または OpenSSL が報告する証明書チェーンに Let's Encrypt の有効期限が切れた古い証明書のみが含まれているか、または/および新しい Let's Encrypt のルート証明書に対する中間証明書が含まれていない場合に、新しい Let's Encrypt のルート証明書に対する中間証明書が HTTPS クラアントに送付されないことから、主に Let's Encrypt 証明書を利用する場合において、一部の HTTPS クライアントで証明書検証エラーが発生するようになりました。【解決手法】 この問題を解決するため、HTML5 版 Web クライアント用 Web サーバーは、OS または OpenSSL が報告する証明書チェーンの内容にかかわらず、強制的に、すべての中間証明書チェーンを Web クライアントに送付するようにしました。なお、この挙動は Linux 上でシン・テレワークシステム HTML5 版 Web クライアント用 Web サーバーを稼働させている場合にのみ適用されます。Windows 上でシン・テレワークシステム HTML5 版 Web クライアント用 Web サーバーを稼働させている場合は、単一の SSL 証明書信頼パスのみがクライアントに送付されます。
- Windows 11 完成版での動作確認を一通り行ないました。Windows 11 におけるすべての機能と共に動作することを検証している訳ではありませんが、一般的な Windows 11 環境において、支障なく動作することを確認しています。
- HTML5 版 Web クライアントにおいて、証明書認証を行なう際に、認証に失敗した場合にその詳細な原因とともにエラーメッセージを表示するようにしました。
- 内部的に使用する暗号ライブラリを OpenSSL 3.0.0 にアップグレードしました。
- IPv6 の DNS 名前解決が有効であるが IPv6 通信ができない環境で、クライアントアプリで RDP 接続エラーが発生する問題を修正しました。
- HTML5 版 Web クライアントに対応しました。HTML5 版 Web クライアントを使用すると、Web ブラウザから職場の「シン・テレワークシステム サーバー」端末に接続し、Windows デスクトップにリモートログインできます。自宅の Mac や ChromeBook などの端末から、職場の Windows を安全・快適に、全画面で操作できます。
- ポリシー規制サーバーの設定ファイルで、新たに「DENY_CLIENTS_APP」および「DENY_CLIENTS_HTML5」値が設定できるようになりました。DENY_CLIENTS_APP に 1 を設定すると、従来のデスクトップアプリ版のシン・テレワークシステム クライアントからの接続が禁止されます。DENY_CLIENTS_HTML5 に 1 を設定すると、HTML5 版 Web クライアントからの接続が禁止されます。DENY_CLIENTS_APP と DENY_CLIENTS_HTML5 の両方に 1 を設定することはできません。
- NTT ドコモ等の IPv6 シングルスタック (IPv6 SS) 環境 (NAT64 / DNS64) に対応しました。
- クライアント側アプリにおいて IPv6 シングルスタック (IPv6 SS) 環境でかつ NAT64 / DNS64 が有効な場合にエラーが発生する問題を解消しました。
- インストール時に言語を選択することができるようになりました。
- クライアント側アプリの設定画面で「リモート画面起動時に内部的に 127.0.0.1 を示す特殊な FQDN 名を指定せず 127.0.0.1 を直接指定 (名前解決エラー時に ON にしてみてください)」オプションを追加しました。
- Wake on LAN パケット送信機能において、ターゲットのサーバー側コンピュータが属しているすべてのサブネットのブロードキャストアドレス宛にも WoL パケットを送付するようにしました。これは、組織の LAN がルータまたはレイヤ 3 スイッチで分割されており、かつ、レイヤ 3 スイッチ等において「IP Directed Broadcast」機能が有効な場合に効果的です。IP Directed Broadcast 機能が有効な場合、異なるレイヤ 3 セグメント上のサーバーを WoL で起動することが可能な場合があります。レイヤ 3 スイッチの側の設定が必要です。例として、Cisco 社のドキュメントは以下のとおりです: https://www.cisco.com/c/ja_jp/support/docs/switches/catalyst-3750-series-switches/91672-catl3-wol-vlans.html 一般的に、他のスイッチ製品にも同様の機能があります。この機能を利用するには、「ターゲット PC」および「トリガ PC」の両方を、少なくとも beta7preview16 以降にアップデートする必要があります。
- LGWAN 版において、クライアントプログラムの設定画面で "接続先のサーバーが「行政情報システム適合モード」の場合、「完全閉域化ファイアウォール」を起動" が OFF になっている場合でも、「完全閉域化ファイアウォール」が起動してしまう問題を修正しました。
- サーバーのサイレントアンインストール機能において、設定ファイルの自動削除に対応しました。「"C:\Program Files\Local Governments Telework System for LGWAN Server\LgwanThinSetup.exe" /auto:1 /deleteconfig:1」 (パスはインストールされた環境によって異なる場合があります) を実行すると、アンインストールが無操作で完了し、設定ファイルも自動消去されます。これにより、サーバーにおけるインストール後のユーザーの設定情報 (OTP のメールアドレス、MAC アドレス等) は消去されます。その後再度サーバーをインストールすると、これらの再設定が必要になります。ただし、サーバーの固有 ID と、これに紐付けられているコンピュータ ID は変化しません。固有 ID をリセットしたい場合は、別途リセット操作が必要です。
- ハイパースケール版のコントローラのコードが .NET SDK 5.0.200 でコンパイルできなくなっていた問題を修正しました。これは、おそらく Microsoft の側の C# コンパイラのバグです。
- LGWAN 版では、サーバープログラムが、初期状態で中継システムにセッションを確立しないようにしました。プロキシサーバーの設定画面を開いて設定を行なうまで、セッションは未確立の状態となります。(プロキシサーバーを使用しない場合も、一度プロキシサーバーの設定画面を開く必要があります。)
- サイレントアンインストールに対応しました。「"C:\Program Files\Local Governments Telework System for LGWAN Server\LgwanThinSetup.exe" /auto:1」 (パスはインストールされた環境によって異なる場合があります) を実行すると、アンインストールが無操作で完了します。(通常はありませんが、万一アンインストール中にエラーが発生した場合は、エラーメッセージで停止します。)
- LGWAN 版では、これまで、完全閉域化ファイアウォールを無効にするオプションが設定されている場合でも、完全閉域化ファイアウォールが起動してしまっていました。この度、ポリシー規制サーバーで完全閉域化ファイアウォールを強制できるようにしましたので、完全閉域化ファイアウォールが強制の場合は必ず同機能が起動し、それ以外の場合は、完全閉域化ファイアウォールを無効にするオプションが設定されている場合は完全閉域化ファイアウォールが起動しないようにしました。
- インストーラで、Windows のグループポリシーでリモート接続が未構成の場合でも誤って「Windows のグループポリシーでリモート接続が禁止されています。」という注意メッセージが表示されてしまう問題を解決しました。ポリシーが「未構成」の場合を「有効」として誤って取り扱っていたことが原因でした。「未構成」の場合は「無効」として取り扱うように修正しました。
- beta7preview9 で追加された、サーバー側メモリ容量が 4GB 以下または空きメモリが 512MB 未満の場合に表示される画面には、一般的なメモリ増設の効用を啓発するメッセージが含まれています。このメッセージは、IPA においてバイナリをビルドする形態で配布する、シン・テレワークシステムのパブリック版で表示されることを目的としたものであり、コンピュータにメモリを増設することにより「生産性の向上、残業削減、余暇の増加、消費電力の削減、幸福度の増加および所得の増大」等が実現されることを IPA サイバー技術研究室より呼び掛けるメッセージです。しかしながら、プライベート版は各利用企業等が自らソースコードをビルドしてバイナリを生成し、各社社員に配布することを目的としているものであり、各利用企業の方針と IPA によるメモリ増設の効用の呼び掛けの内容が矛盾し、混乱が生じる場合があります。各利用企業等では、メモリ増設の効用を自社社員に知らせたくない場合もあります。そこで、前記の一般的なメモリ増設の効用のメッセージはパブリック版でのみ表示されるようにし、プライベート版では表示されないようにしました。なお、プライベート版でメモリ増設の効用の呼び掛けメッセージを復活したい場合は、プライベート版ソースコードの「IPA-DN-ThinApps-Private\src\bin\hamcore\strtable_ja.patch.stb」ファイルの「DS_MEMORY_MSG_1」および「DS_MEMORY_MSG_2」の行を削除してください。
- beta7preview10 で追加されたポリシー規制サーバーの設定項目の「REQUIRE_MINIMUM_CLIENT_BUILD」が、誤って「REQUIRE_MIMIMUM_CLIENT_BUILD」というスペルとなっており、正しく設定項目の読み込みができませんでした。スペルミスを修正しました。正しくは、「REQUIRE_MINIMUM_CLIENT_BUILD」です。
- beta7preview9 で追加されたアカウントロックアウト機能について、動作を改良しました。ロックアウトが発生していない状態で何度かユーザー認証に失敗し (依然としてロックアウトしきい値未満の失敗の状態で)、その後、ユーザー認証に 1 度成功した場合は、ロックアウトのカウントダウンをクリアするようにしました。また、ユーザー認証に失敗したことが契機となってアカウントロックアウトが発生した場合は、ロックアウトが発生した旨のエラーメッセージを返すようにしました。
- MAC アドレス認証が有効にされている場合、通常、サーバー設定ツールを終了する際に MAC アドレスが 1 つもローカル設定で登録されていない場合に、設定を促すメッセージボックスが表示されます。しかしながら、ポリシー設定ファイルで「SERVER_ALLOWED_MAC_LIST_URL」項目が設定されている場合、MAC アドレス一覧はポリシー規制サーバー側で管理することが可能になります。そこで、「SERVER_ALLOWED_MAC_LIST_URL」項目が設定されている場合は、上記の設定を促すメッセージボックスを表示しないようにしました。なお、ポリシー設定ファイルに「SERVER_ALLOWED_MAC_LIST_URL」項目が設定されているものの、その URL が誤っていたり、MAC アドレスを記述したテキストファイルの記載が誤っていたりしている場合でも、メッセージの表示は省略されるようになります。ポリシーファイルの「SERVER_ALLOWED_MAC_LIST_URL」項目を記載される際は、十分ご注意ください。
- サーバーおよびクライアントアプリのプロキシ設定画面に、「中継システムへの接続を無効化する」オプションを追加しました。このオプションを有効にすると、中継システムへの通信が発生しなくなります。すでにサーバーから中継システムへのセッションが確立されている場合は、セッションは切断されます。
- インストーラのビルドにおいて、クライアントアプリのみを含んだインストーラをビルドすることができるようになった。ソースコード中の「src/Vars/VarsActivePatch.h」の「ThinSetupClientOnly」項目を「true」に変更することにより、クライアントアプリのみを含むインストーラが作成される。「クライアントアプリとサーバーアプリの両方を含むインストーラ」と、「クライアントのみを含むインストーラ」の 2 種類をビルドしたい場合は、同ヘッダファイルを書換えて、2 回ビルドすること。(これは、少し手抜きの実装であるが、本機能の需要はそれほど多くないため、ご容赦いただきたい。) なお、「ThinSetupServerOnly」 と 「ThinSetupClientOnly」 はいずれか一方しか指定できなません。「ThinSetupClientOnly」と「ThinSetupServerOnly」の両方を true にすると、全く意味のないインストーラが作成されますので、ご注意ください。
- ポリシー規制サーバーの設定項目に「ENFORCE_LIMITED_FIREWALL_COMPUTERNAME_STARTWITH」を追加しました。この設定は、「ENFORCE_LIMITED_FIREWALL」設定機能 (「完全閉域化ファイアウォール」機能を強制的に有効にする機能) を有効にしたいけれども、一部の端末については無効にしたい (除外したい) というような場合に利用できます。この項目として設定されている文字列が、接続しようとしているクライアント側の Windows コンピュータの「コンピュータ名」の文字列の先頭部分に一致した場合は、当該クライアントからの接続に際しては、「ENFORCE_LIMITED_FIREWALL」が 0 であるとみなして接続処理がされます。この項目には、スペース、カンマまたはセミコロン区切りで、複数の文字列を指定できます。複数の文字列を指定した場合、いずれか 1 つと一致した場合は有効であるとみなされます。大文字・小文字は区別されません。この項目は、「ENFORCE_LIMITED_FIREWALL」設定項目が 1 に設定されている場合にのみ有効です。この機能は、シン・テレワークシステムのパブリック版では利用できません。
- シン・テレワークシステム サーバーの自動インストーラ (無人インストーラ) (「/auto:1」というコマンドラインオプションを指定することで利用可能) において、追加で「/NOAFTERRUN:1」というコマンドラインオプションにも対応しました。「/NOAFTERRUN:1」を設定すると、インストーラ完了後に「サーバー設定ツール」が自動的に起動しないようになります。
- (LGWAN 版のみ) サーバーの自動インストーラ (無人インストーラ) を利用中に、LGWAN 版のネットワーク自動検出後に次の画面に自動的に進まない問題を解決した。
- ポリシー規制サーバーの設定項目に「REQUIRE_MINIMUM_CLIENT_BUILD」を追加しました。この項目には整数値を指定できます。この項目が指定されている場合は、サーバーに接続しようとしてきたクライアントのビルド番号が、指定された番号未満の場合に、クライアント側に対してバージョンアップを促すエラーメッセージが表示され、接続が拒否されます。この機能は、古いバージョンのクライアントからの接続を拒否したい場合に利用できます。たとえば、古いバージョンのクライアントにはあるセキュリティ機能が存在しない場合、そのような古いクライアントの接続を禁止することができます。「REQUIRE_MINIMUM_CLIENT_BUILD」の値は、サーバー側のソフトウェア自身のビルド番号以下でなければなりません。(サーバー側のソフトウェアのビルド番号を超える値が設定されている場合は、サーバー側のソフトウェアのビルド番号が設定されているとみなされます。) この機能は、シン・テレワークシステムのパブリック版では利用できません。この機能は、クライアントからのプロトコル上の自己申告値を信用して動作します。クライアントが不正に改造されている場合で、実際と異なるビルド番号をクライアントが主張する場合は、サーバーはこれを見分けることができませんので、ご注意ください。本機能はあくまでも一般的なユーザーによる古いバージョンによる接続を規制するものであり、高度なユーザーによる古いバージョンのクライアントからの接続をすべて遮断できるものではありません。
- シン・テレワークシステム サーバーの自動インストーラ (無人インストーラ) に対応した。大量のコンピュータへのサーバーのインストールが快適になる。インストーラの EXE ファイルを実行する際に「/auto:1」というコマンドラインオプションを指定することにより、インストーラはデフォルトのオプションのまま、無人で最後まで進み、サーバー設定ツールが自動的に起動するところまで進むようになる。なお、このコマンドラインオプションを指定して実行する際には、Administrators 権限が必要である。権限がない場合は、UAC ポップアップが表示される。また、インストール中にデフォルトで次に進むことができないようなエラーが発生した場合は、当該エラーの表示部分で停止するので、それ以降は手動でインストールをする必要がある。
- プライベート版で完全閉域化ファイアウォール機能に対応した。アプリケーションビルド時において、ソースコード中の「src/Vars/VarsActivePatch.h」の「ThinFwMode」項目を「true」に変更することにより、「完全閉域化ファイアウォール」機能がクライアント接続時に呼び出されるようになる。「完全閉域化ファイアウォール」において通信を例外的に許可する通信先 IP アドレス (IP サブネット) のリストは、インストーラのビルド時に予め「src/bin/hamcore/WhiteListRules.txt」に列挙しておく必要がある。クライアント側も新しいバージョンが必要である。
- アプリのインストーラビルド時のソースコード中の「src/Vars/VarsActivePatch.h」の「ThinFwMode」項目が「false」の場合であっても、ポリシー規制サーバーで「ENFORCE_LIMITED_FIREWALL」項目を「1」に設定することにより、「完全閉域化ファイアウォール」機能を強制的に有効にすることができるようにした。クライアント側も新しいバージョンが必要である。プライベート版と LGWAN 版では利用できるが、パブリック版では利用できない。
- サーバー側で「tunnel_log」ディレクトリにサーバーと中継システムとの間の通信の詳細なログを出力するようにした。サーバーと中継システムとの間が頻繁に切れるような場合は、このログを確認することにより、原因を特定することが容易となる。
- インストーラのビルドにおいて、サーバーアプリのみを含んだインストーラをビルドすることができるようになった。ソースコード中の「src/Vars/VarsActivePatch.h」の「ThinSetupServerOnly」項目を「true」に変更することにより、サーバーアプリのみを含むインストーラが作成される。「クライアントアプリとサーバーアプリの両方を含むインストーラ」と、「サーバーアプリのみを含むインストーラ」の 2 種類をビルドしたい場合は、同ヘッダファイルを書換えて、2 回ビルドすること。(これは、少し手抜きの実装であるが、本機能の需要はそれほど多くないため、ご容赦いただきたい。)
- 「MAC アドレス認証における MAC アドレスのリストを、ポリシー規制サーバー側で一元管理し、ユーザーに自由に管理させたくない」という要望に対応するため、ポリシー規制サーバーの設定ファイルに「NO_LOCAL_MAC_ADDRESS_LIST」を追加した。これを「1」に設定することにより、ユーザーは MAC アドレス認証における MAC アドレスのリストを手動で設定することができなくなる。なお、「NO_LOCAL_MAC_ADDRESS_LIST」が有効となるためには、ポリシー設定ファイルの「CLIENT_ALLOWED_MAC_LIST_URL」および「ENFORCE_MACCHECK」が設定されている必要がある。
- LGWAN 版において、クライアントが Administrators または SYSTEM 権限で動作している場合は、ユーザーが指定した mstsc.exe ファイルを実行することができないようにした。
- OTP において、SMTP (メール) の代わりに AWS SNS (Amazon Simple Notification Service) を用いた SMS 送信に対応した。(ハイパースケール版のみ。) 詳細は、ハイパースケール版のドキュメントの 8-19 節「OTP を電子メールの代わりに SMS で送信する方法」を参照すること。
- インストーラの EXE ファイルと同じディレクトリに EntryPoint.dat ファイル (テキストファイル) が設置されている場合は、このファイルが、インストーラビルド時に埋め込まれる EntryPoint.dat ファイルに優先して、サーバーと共にインストールされるようにした。これは、たとえばシン・テレワークシステム中継システムを組み込んだアプライアンスを実装したとき、HTML 管理画面等から、その中継システムに接続できるインストーラの ZIP ファイルをダウンロードできるような機能を実装する際に、大変便利である。EXE ファイルそのものはすべてのシステムで共通にしておき、EntryPoint.dat ファイルのみ、システム毎に異なるファイルを自動生成して ZIP でダウンロード可能とするシステムを、容易に構築できるようになった。このことにより、ユーザーはインストーラを独自にビルドする必要がなく、当該アプライアンスの製造元が 1 回のみビルドすればよい。そして、このことは Microsoft Authenticode 署名をインストーラにアプライアンス出荷元があらかじめ付与することができることも意味するのである。
- クライアント証明書認証における OCSP (Online Certificate Status Protocol) 検証の実装。ポリシー規制サーバーの「ENABLE_OCSP」項目を「1」に設定することにより、サーバーは、クライアント証明書認証要求があった場合で、かつ認証がサーバーにあらかじめ登録されている信頼された証明書 (CA 等) による署名の検証によって実施される場合に、当該クライアント証明書の拡張フィールドに OCSP サーバーの URL が記載されている場合は、その OCSP サーバーの URL 宛に OCSP プロトコルにより証明書が有効かどうかの検証を試みます。無効であると回答された場合は、ログファイルにその旨を記載し、証明書認証は失敗します。OCSP サーバーとの通信に失敗した場合は、検証は成功したものとみなされます。
- アカウントロックアウト機能の実装。ポリシー規制サーバーの「AUTH_LOCKOUT_COUNT」および「AUTH_LOCKOUT_TIMEOUT」項目を 1 以上の整数に設定することにより、ユーザー認証 (パスワード認証) においてパスワードを誤った場合のアカウントロックアウトが可能となりました。AUTH_LOCKOUT_COUNT には、ロックアウトが発生するまでの認証失敗回数を指定します。AUTH_LOCKOUT_TIMEOUT には、ロックアウトが自動解除されるまでのタイムアウト値を秒単位で指定します。
- 無操作時のタイムアウト実装。ポリシー規制サーバーの「IDLE_TIMEOUT」項目を 300 以上の整数に設定することにより、ユーザーがクライアント側でマウスを「IDLE_TIMEOUT」で指定された秒数以上無操作であった場合は、クライアント側の接続が切断され、無操作タイムアウトが発生した旨のメッセージボックスがクライアント側の画面に表示されるようになります。この機能が有効となるには、クライアント側のバージョンも beta7preview9 以降である必要があります。それ以前のクライアントの場合は、無視されます。
- ポリシー規制サーバーの「SERVER_ALLOWED_MAC_LIST_URL」による MAC アドレス一覧テキストファイルの指定において、MAC アドレス一覧テキストファイルの先頭行に UTF-8 の BOM 文字が入っていた場合、その BOM 文字を除外して処理を行なうように改良しました。
- 空きメモリ容量が十分でない場合、「サーバー設定ツール」で警告メッセージが表示されるようにしました。
- プライベート版 (ハイパースケール版) を実装しました。
- コントローラの完全冗長に対応しました。
- サーバー版で詳細デバッグログを保存する機能を実装しました。
- (LGWAN 版のみ) インストール時に RDP がポリシーで無効になっている場合は、クリップボードおよびファイル共有をインストール時に無効化し、その代わり、毎回の接続時にはポリシーをいじらないようにした。また、インストール時に RDP がポリシーで無効になっている場合は、その旨のメッセージを表示するようにした。
- サーバー側ソフトウェアにおいて、Windows のローカルグループポリシーまたはドメイングループポリシーでリモートデスクトップが無効である場合でも接続受付時に強制的に有効にするようにしました。
- クライアント接続中はクライアント側 PC のシステムがスリープしないようにしました。
- 統計機能を実装しました。
- プライベート版 (スタンドアロン版) を実装しました。
- Windows において Admin 権限を有しているかどうかの判定を厳密化しました。
- (LGWAN 版のみ) クリップボード履歴の保存を禁止しました。Windows 標準のスクリーンショットホットキーによるスクリーンショット撮影を禁止しました。
- サーバーでリモートアクセス中におけるプロセスの起動 / 終了のログを保存できるようにしました。
- ゲートウェイで DisableDoSProtection オプションを実装しました。
- LGWAN 版を実装しました。
- ポリシーで OTP、MAC アドレス検査、クライアント検疫検査、透かし を強制的に無効化できるようにしました。
- MAC アドレスリストがマルチスレッド競合によって稀に消えてしまう問題を解決しました。
- 完全閉域 FW をオプションで OFF にもできるようにしました。
- 登録キーに対応しました。
- Proxy Protocol に対応しました。
- Windows 10 2004 クリーンインストール環境で「Windows Hello 認証」が強制されている場合は、RDP 接続ができない問題があるため、強制を解除するようにしました。
- ソースコードをサブモジュールに分離し、アクティブパッチやブランディングを可能にしました。
- Visual Studio 2019 によるビルドに対応しました。
- WhiteList Rules でプライベート IP の範囲が間違っていたのを修正しました。
- 行政モードでサーバー側が検疫 ON の場合は、必ず FW 機能を強制するようにしました。
- Wake on LAN 機能 (接続先端末の電源を自宅から ON する機能)
- 画面撮影・キャプチャ防止のための電子透かし機能
- 固有 ID 初期化機能 (VDI クローン対応)
- クライアント MAC アドレス認証のポリシーサーバーによるリスト一元管理機能
- 完全閉域化 FW 機能 (リモート利用中はユーザー自宅 PC とインターネットとの間を完全に遮断)
- ポリシーサーバーによるサーバー端末の明示的着信許可機能 (リストに登録されていないサーバー端末は動作禁止する)
- 二要素認証・ワンタイムパスワード (OTP) 機能
- マイナンバーカードを用いたユーザー認証機能
- クライアント検疫機能・MAC アドレス認証機能
- エンタープライズ環境用ポリシー規制サーバー機能
- 行政情報システム適応モード (中継システムの IP 範囲の限定)
- 「ワンタイムパスワード認証 (OTP)」 を追加しました。企業環境での既存のセキュリティポリシーに準拠するため、「二要素認証に対応してほしい」、「OTP に対応してほしい」というご要望にお応えして、新規開発をいたしました。
- 「仮想マルチディスプレイ機能」を追加しました。「職場の PC」にディスプレイが 1 枚しかない場合でも、自宅の PC にディスプレイが 2 枚以上あれば、自宅から職場の PC をリモート操作する際にマルチディスプレイ化して、大変快適に操作することができます。
- 「パスワード複雑性を満たしていなくても、警告を無視すれば簡単なパスワードを設定できるのは良くないのではないか。」というご意見をいただきましたので、パスワード複雑性を満たしていないパスワードを設定することをできなくしました。(Beta 2 までは警告メッセージは無視可能でしたが、Beta 3 では、無視可能な警告メッセージは廃止され、無視することができないエラーメッセージとなりました。)
- パスワード複雑性の規則を見直し、(1) 8 文字以上で、小文字・大文字・数字・記号のうち少なくとも 3 種類以上が使用されている。(2) 16 文字以上で、小文字・大文字・数字・記号のうち少なくとも 2 種類以上が使用されている。(3) 24 文字以上である。のいずれかを満たしていれば可としました。
- 「シン・テレワークシステム サーバー」および「シン・テレワークシステム クライアント」と、中継システムとの間の通信のセキュリティ (可用性) を向上しました。中継システムにおけるロードバランサとの間の通信が、何らかの通信障害により確立できない場合は、セカンダリロードバランサに対して接続を試みるようになりました。また、セカンダリロードバランサを、複数のドメインおよび AS に分散して配置しました。これにより、通信経路に障害があり 1 つのロードバランサと通信ができない場合でも、他のロードバランサに迂回して通信が確立できるようになりました。
- 「シン・テレワークシステム クライアント」の起動時に、より新しいバージョンが利用可能になっている場合は画面に案内を表示するようにしました。この機能は、「バージョン情報」画面から無効にできます。
- 「高度なユーザー認証」機能の証明書認証で、X.509 証明書のビット数が 1024 bit より大きい場合に認証に失敗する問題を解決しました。
- HTTP プロキシサーバーを経由する場合の User Agent の文字列をユーザーが自由に変更できるようにしました。
- グループポリシーで RDP が無効となっている場合でも、RDP を用いたシステムモードでの接続ができるようにしました。
- ユーザーのコンピュータのハードディスクが予め攻撃者により別の手段により侵害され、マルウェアのファイルが保存されている場合で、ユーザーが、当該マルウェアと同じディレクトリに本プログラムのインストーラを置いて実行すると、マルウェアも実行されてしまう場合があるセキュリティ問題を解決しました。これはいわゆる DLL プリロード問題と呼ばれる Windows の設計上の脆弱性がもとで発生する問題です。アプリケーション側での対策を施しました。日下部司氏からの報告によるものです。ありがとうございました。
- クライアントに「リラックス・モード」を追加しました。テレワークの開始前に、リラックスすることができます。デフォルトで無効になっていますが、クライアントのオプション設定から有効にできます。ぜひ、有効にしてみてください。
最初のバージョンです。