mikolaboのブログ

パソコンからくり研究室

自作テレワークシステム

テレワークシステム

今年後半は、このところ仕事でお世話になっている元同僚と病院システム構築のお仕事することになっているが、あまり工数をかけずにテレワークシステムになるものを付けましょう、ということになり、お金をかけずにプロトタイプを作成した。

 

  • ラズパイにSoftEtherVPNクライアント、もしくはブリッジを仕掛けた端末
  • SoftEtherVPNブリッジを仕掛けたWindowsパソコン
  • クラウド(Amazon Web Services)に用意したSoftetherVPNサーバ

 

パソコンは性能的にも少し前の使っていないパソコンでも良いし、最新ラズパイの4でも1万円以内で組み込めるし、AWSはネットワーク中継点だけなので、1年無料枠でお金がかからないようにした。 システム構成図としては以下の感じ。

テレワークシステム構成イメージ テレワークシステム構成イメージ クラウド上の SoftEtherVPNサーバには 仮想Hubがあり、 各拠点ごとに ネットワークが わけられています。 これによって、 セキュリティ境界の設定ができる上に、 個別の仮想Hubへの接続を切り替えるだけで 簡単に拠点間の境界を越えて、 端末どおしを接続する ことができます。

 

  SoftetherVPNの機能を使って、まずはベースのネットワーク機能を作り込みました。

 

  • VPN接続して、拠点間は同一ネットワークとなるので、ラズパイからWakeOnLanを使うことで、遠隔地のサーバを自動起動できます。
    ラズパイであれば常時起動でも、消費電力がほぼゼロですし、サーバも操作が終われば電源断できるので、セキュリティ的にも安心です。

  • 匿名認証、パスワード認証から、セキュリティを高めたデジタル証明書に、管理者がツールを使って、短い時間で設定変更できます。
    SoftEther提供ツールで、セキュリテイのグレードを管理者がコントロールできます)

  • LANの接続口にあるルータやファイアーウォールでアドレス変換がされていても、これを通過してVPNを確立することが簡単にできます。
    新たにネットワーク機器を追加する必要もなく、ネットワークの設定を変更することもなく、数分の操作で、拠点間接続が簡単にできます。

    また、Amazon Web Servicesは、中継点としてだけ使うので、万が一セキュリティを破られることがあっても、基本的にからっぽシステムなので、侵略者にとって面白いことが何一つできるものではありません。その意味でとってもセキュアです。

  • ネットワーク要件によっては、既存LANとはまったく違うネットワーク(セグメントの違うIPアドレスを配る)にしたり、同一LANにブリッジした上で、レイヤ3レベルでアクセス制御して、既存LANの通信をコントロールするなど、幅広くネットワークをデザインできます。

 

テレワーク環境をより良いものにするために、色々試してみました。 そして「からくり」追加によって、オープンソースであるNextCloudを使って、オンラインストレージ機能とWeb会議を組み込めました。

 

  • NextCloudは自分のプライベート領域に、自分の好きなようにデザインして、機密データであっても安全に配置して、しかも管理権限を適切に設定してセキュア―に使用できます。
    Webブラウザからの管理画面で、簡単な操作で管理業務も把握できるので、運用面でもスマートです。

  • Dropbox、GoogleDriveなど、ちまたのオンラインストレージサービスでは、世界のどの国のクラウド領域に管理されているのか分からないし、最近はやりの「ZOOM」などWeb会議システムでは、プロトコル上での公表の強度よりも弱い設定で通信がされていたとか、実は中国国内の中継サーバを経由していたとか、その仕組みが公開されているわけではないので、完全に安心して運用できない問題があります。
    そこで、SoftEthetVPN、NextCloudを使って、自分でシステム構成をデザインして完全に自分が掌握した環境内で便利に利用できる仕組みを考えました。

  • 仕組み作り込みでひらめいたのが、SoftEtherの拠点ごと仮想HUB以外に、NextCloud Talk:Web会議用の仮想Hubを生成して、そこに接続した上で、Web会議を利用する方法です。
    これであれば間違いなく悪意のある外部接続をガードできますので、ZOOMの代替案になると思います。実際に試すと、SoftEtherVPNの接続を切ると、遠隔通信は操作時点で即通信不可になりました。
    また、重要ではない大人数の会議はZOOMなどで行い、重要な意思決定の会議はVPN内のWeb会議という切り替え運用もできそうです。

  • NextCloudを使ったプライベートストレージでは、ストレージの調達の仕方にも色々バリエーションがありそうです。
    今回、モニタシステムでは、NextCloudサーバはAWSクラウド上に置きましたが、自分の事業所内にストレージを置いても良いし、自分の事業所内の余っているサーバにNextCloudサーバを構築しても構いません。さらに、ラズパイ用のデストリビューションとして、「NextCloudPi」というものがあります。
    ラズパイ4上でこれを動かしてみましたが、ほぼ同じ操作で運用できました。ラズパイであれば最新のラズパイ4でもアクセサリ込み1万円以内で追加できます。

  • NextCloudについては、試した範囲で、ベースのデータ管理周りの機能以外にも、WebDAVやらWeb会議やらありましたが、さらにプラグイン機能によって、2段階認証機能やらグループウエア機能やら、いっぱいありました。
    アプリメニューには使えるアプリがてんこ盛りで、「注目のアプリ」メニューに並んでいる機能を数えてみると、61個もありました。さらに、Talkでもスマホ用のクライアントアプリが利用できましたし、その画面メニューにも、アプリのボタンが並んでいました。
    アプリケーション環境としても魅力的だと思いました。

運用のイメージ

 

自宅からオフィスに接続

自宅からオフィスに接続して、サーバを起動

自宅からオフィスに接続して、サーバを起動

オフィスにSoftErtherVPNクライアントから接続する
②オフィスのラズパイにUlrtaVNCで接続する
ラズパイのデスクトップアイコンクリックし、WakeOnLanでオフィスのサーバを起こす
④ラズパイのリモートデスクトップソフトからサーバに接続する

オフィスサーバのメールチェックとEXCELを操作

オフィスサーバのメールチェックとEXCELを操作


オフィスのサーバで、会社のメールアカウントをチェックします。
EXCELを直接、操作もできますし、ファイル転送して、自宅で操作することもできます。
また、これにNextCloudを使ったWeb会議などを使えば、直接会話するなどのコミュニケーションも取れます。


  オフィスから自宅に接続

オフィスから自宅にリモート接続

オフィスから自宅にリモート接続


こちらは、オフィスのパソコンから自宅にSoftEtheVPNクライアントを使って、VPN接続したところです。
オフィスに居ながら、自宅パソコンを操作できます。
同一LANになるので、Chromeブラウザから自宅1Fの状況と、2Fから前の家の状況をWebカメラで見ています。

(前の家から、不審者を心配しての相談があった)


テレワークシステムにWebカメラシステムの要素も組み込めます。

自宅2FのWeb画面
これまでの撮影状況を
確認するために
画面をクリックします。
設定で映像については
一週間の保存データが
蓄積されています。

動態検知設定によって、
状況に変化があった時に
撮影されて残っています。

※ 保存時間はラズパイの
MicroSDカードの
保存容量と相談
ライブビュアーを使って、
その時の内容をその場で
確認できます。

また、過去の映像、画像も
蓄積していて、その場で
確認できます。
不審者も確認できます。
リモートソフト UltraVNC
のファイル転送機能を使って
自宅のノートのデータを
オフィスのパソコンに
転送しました。

 

仮想システムについて

このブログ技術ネタでは、すべて実際に構築して動作したものを載せます。

このブログ大体のネタは、TeraTermのログで記録を取ってあります。

 

このブログのカテゴリ「仮想システム」について

 

仮想システムとして扱っているのは、現在は、ほぼVirtualBoxです。
ですが、Dockerコンテナであるとか、OpenStackとか、AmazonWebServicesも仮想システムとして、見ることもできると思います。

 

昔、ISDNが電話網を仮想化して、電話サービスとデータ通信とを切り出して動かしてみたのと同じように、そういう視点で仮想化したものをこのカテゴリーに含めようと思います。

 

クラウド上の仮想システム

クラウドサービスの Amazon Web Service を使って、Linux環境、Windows環境をクラウド上に作ったり、作成したコンピュータ環境を保存したり、破棄したりが、簡単にできます。 使い方によっては課金されますが、基本、1年間は無料枠が使えます。

AWS上で動かせるサーバ種類 AWS上で動かせるサーバ種類
WebブラウザからAWS上のサーバを操作できます WebブラウザからAWS上のサーバを操作できます
AWSのイメージ Amazon Web Services のイメージ

フリーソフトウェアの仮想システム: VirtualBox

Windowsパソコンで、VirtualBoxを使って、Win7、Win10のWindows環境や、UbuntuCentosなどのサーバ環境を用意できます

 VirtualBoxを起動
VirtualBox 上で CentOS(画面右のウィンドウ)を立ち上げました
 WebブラウザからVirtualBox上で起動したWordpressサイトにアクセスしました WebブラウザからVirtualBox上で起動したWordpressサイトにアクセスしました

VirtualBoxイメージ

VirtualBoxイメージ

                     

 

Linuxの中に組み込まれた仮想システム:Dockerコンテナ

Linuxシステムの中にDockerを使った仮想環境を作れます。 また、Dockerは起動時のシステム負荷が軽いので、たとえば、Webサーバ機能を持つ コンテナを何十個も同時に起動するようなこともできます

Dockerコンテナの構造 Dockerコンテナの構造

VirtualBox上にNethSewrverのデモ環境を作成

既存ネットワーク(下記・緑破線)に影響を与えずに、NethServer(セキュリティの項で説明しているセキュリティ機器・UTM)を組み込んだ場合の運用イメージを、VirtualBox上に作ったテスト環境のネットワーク(下記・黄破線)で試してみる。

 

まず、既存ネットワークLAN

既存ネットワーク 既存ネットワーク

 

 

LANの中の1台のコンピュータ上で、VirtualBoxによるNethServerのテスト環境を作成します。

テスト用ネットワーク環境をVirtualBox上のHethServerの機能によって、作成する テスト用ネットワーク環境をVirtualBox上のHethServerの機能によって、作成する
 

既存ネットワーク「192.168.0.XXX」と新規ネットワーク「10.0.0.XXX」とはネットワークのセグメント(範囲)が違うので、お互いの通信が影響しあうことがないために、既存ネットワーク、新しいネットワークはまったく独立した状態で運用できます。また、既存ネットワークに新たに設定の追加は必要ありません。

さまざまなLinuxデストリビューションについて

さまざまなLinuxディストリビューション

CentOS

CentOS起動画面 CentOS起動画面 CentOSメニュー画面 CentOSメニュー画面

(サーバ用途に優れたLinuxです)

 

Ubuntu

Ubuntu起動 Ubuntu起動 Ubuntuメニュー Ubuntuメニュー

(デスクトップ用途に優れたLinuxです)

 

LinuxMint

LinuxMint起動 LinuxMint起動 LinuxMintメニュー LinuxMintメニュー

(Ubuntuの次に広く使われている。難しい設定が不要で、簡単に使えることが特長。)

 

Xubuntu

Xbuntu起動 Xbuntu起動 [cXubuntuメニュー Xubuntuメニュー

Ubuntuより軽量のLinuxです) 

 

Lubuntu

Lubuntu起動 Lubuntu起動 Lubuntuメニュー Lubuntuメニュー

Xubuntuより軽量のLinuxです)

 

Rasbian(Raspberry Pi Desktop)

Rasbian起動 Rasbianメニュー Rasbianメニュー

(Raspbianは正式にRaspberry Piに対応したOSです)

 

NethServer

GUI画面ではなく、Webブラウザから調整する

NethServer:「Security」の「Network Services」でアクセス制御

 

NethServer:「Security」の「Network Services」でアクセス制御

NethServer:IPSのルール設定画面

NethServer:IPSのルール設定画面

CentOSベースのLinux。小規模オフィスや中規模企業向けのUTMとして、セキュリティを担保します。)

 

VOLUMIO

GUI画面ではなく、Webブラウザから操作する

VOLUMIO VOLUMIO

(オーディオ再生に特化したRaspberry PiLinuxで、ハイレゾ音楽を聴くことができる)

 

MOTIONEYEOS

GUI画面ではなく、Webブラウザから設定する

MOTIONEYEOS:設定画面 MOTIONEYEOS:設定画面 MOTIONEYEOS:モニタ画面 MOTIONEYEOS:モニタ画面

(ネットワークカメラに特化したRaspberry PiLinuxで、防犯監視カメラシステムなどに利用できる)

 

最近人気のLinuxデストリビューションです

私はLinuxMintの操作性が好きですが、このどちらのニューフェイスとも触った感じは使いやすそうでした

MX Linux

MX Linux:最近の人気ランキングでは1位です
Manjaro
Manjaro:Arch Linuxベースですが、
もっと初心者向けです

他にもいろいろと試したいデストリビューションがいっぱいあります。

 

USBメモリLinux

通常使用しているWindowsパソコンに、USBメモリを挿して、起動デバイスの設定を変更した状態で立ち上げることで、Linuxとして起動することができます。 Linuxとして作業した内容はUSBメモリの作業域に、作業内容を残すことができます。 さらに、起動デバイスの設定を元に戻せば、いつもの通りのWindowsパソコンとして使用できます。

 

【使用用途】

  • Windowsパソコンの動作がおかしい時に、データのレスキュー(復旧用)に使えます。
  • ウィルスの被害があったパソコンについて、ネットワークを切断した状態で、データのレスキュー(復旧用)に使えます。
  • 出張した先にある他人のパソコンを間借りして、Linuxで自分の作業ができます。
  • Windowsパソコンとして動作に問題がある場合に、Linux環境であれば動く場合がありますので、問題の切り分けに使えます

 

パソコンの再利用

昨今、どこの家庭でも主にWindowsOSのバージョンが上がっていく中で、買い替えが難しく中途半端な状態で古いパソコンが残っていることが多いです。パソコン以外のスマホタブレットもあるので台数だけは多くなり、サイフ事情で新しいパソコンが買いづらいことも多々あります。使わないパソコンが余っているが、古くなったパソコンを再利用できないか?

 

【対策】

古いパソコンのデータバックアップを取った上で、Linuxディストリビューションを適用して、Windowsパソコンの代わりに使用する。

 

【使用用途】

 

このブログ技術ネタでは、すべて実際に構築して動作したものを載せます。

このブログ大体のネタは、TeraTermのログで記録を取ってあります。

このブログのカテゴリ「無敵のソクラテス」は雑記です。

ラズパイについて

RaspberryPiこのブログ技術ネタでは、すべて実際に構築して動作したものを載せます。

このブログ大体のネタは、TeraTermのログで記録を取ってあります。

 

このブログのカテゴリ「ラズパイ」について

 

最近では国の対策で、コロナ禍対応のテレワーク構築ソフトが、NTT 東日本、IPA、つくば大学共同で、「シン・テレワークシステム」として公開されている。
(2020/09/21現在で、76,894人のユーザが活用している)

 

シン・テレワークシステムをホームページから確認すると、中継システムにラズパイを使用しています。

 

これで国からのお金は、ラズパイ50台を65万円だけで済ませて、試算によると、3万人の利用に対して、実質1ユーザあたり、5円から14円で済ませられているみたいです。

 

【 国の施策に使われても問題のないパフォーマンスとコストメリット 】

 

(現在、無償提供ですが、とりあえず10月31日までの実証実験の予定を延ばすことにしたみたいです。今後、どうなるかわかりませんが、皆さんアカウントは作っておいたほうが良いのでは・・・)

 

元々ラズパイに搭載されているRasbian(最近名前が変わってRaspberry Piデスクトップになっている)にはLinuxが採用されている。
同じLinuxコアを持つLinuxデストリビューションであるScientific Linuxが、NASAアメリカ航空宇宙局)やCERN(欧州原子核研究機構:宇宙の秘密を解き明かす研究をやっているところ)でも使われている。


人類最先端の研究に使われているのは、それだ【 長い年月の信頼性 】があるのだと思います。

 

1000円そこらのラズパイで、NASACERNが使っているOSと同じコアが動いているのです。さらに、コロナ禍から人類を救う救世主になりそうなすごいものなのです。 

 

Raspberry Pi=ラズパイ

ラズベリーパイは、英ラズベリーパイ財団が開発した超小型コンピューターです。 (略して「ラズパイ」)
名刺サイズの小さな基板に、CPUにARMプロセッサを搭載、ハードディスクの代わりにスマホで使うmicroSDメモリーカードを装着して、データを保存します。
パソコンを構成するハードウェアの大半が詰め込まれていて、

 

  • USB/LAN/BluetoothWifi等のインターフェイスが付いていて、家庭内ネットワークに接続できます。

  • 電源は、スマートフォンスマートデバイス用の電源直結の充電ケーブル(microUSBタイプA)から取ります。

  • ラズパイにはHDMI端子がついているので、ディスプレイにHDMIケーブルでつなげます。最近のHDMI端子付きのテレビに映せます

  • キーボード、マウスは普通のパソコンのようにラズパイ本体に接続します。

  • インターネットからLinuxOS(Centos,Ubuntu等色々あります)をダウンロードして、microSDメモリーカードにインストールすれば、普通のパソコンと同じように、Windowsとおなじようなデスクトップ環境ができます。

  • 標準オフィス統合環境「Microsoft Office」と操作性やデータの互換性を持ち、「Word」や「Excel」などのファイルを読み書きできるLibreOfficeが使えます。

  • LibreOfficeには、ワープロソフトの「Writer」、表計算ソフトの「Calc」、プレゼンソフトの「Impress」、ドローソフトの「Draw」、データベースソフトの「Base」、数式エディターの「Math」の6つのソフトが含まれます。

  • メールソフト、Webブラウザーもたくさんのフリーソフトの中から、好みのソフトを使えます。

 

ラズパイModelB設置

ラズパイModelB設置

ラズパイModelB大きさ

ラズパイModelB大きさ


ラズパイModelB構成
値段は、プロセッサ速度が高く、
有線LANのほかに、
802.11b/g/n/ac無線LAN
Bluetooth 4.2 (BLE) の
接続を備えた
Raspberry Pi3ModelB+に、

ケース、接続ケーブル、
microSDメモリーカード
電源アダプタなどの必要なものを
全て揃えた場合で 8000円程です。

 



ラズパイZeroWセット
ラズパイZeroW大きさ

ラズパイZeroW大きさ


Raspberry Pi ZeroW で、WiFi, Bluetooth のみで安くあげると、

必要な周辺小物込みで、2700円程です。

 

ラズパイの使用用途

 

  • フリーのオフィスソフト、メール、Webブラウザが使えるので、自宅のパソコンの代わりになります。
  • ネットワークソフトを入れて、遠隔地を簡単につなぐ、ネットワーク接続装置
  • ラズパイにUSBカメラを付けて、監視カメラネットワークシステム
  • 筐体が小さく、HDMI端子でテレビにつなげるので、出張に持っていって、インターネットにつなげば簡易オフィスになります
  • LinuxはAIと相性が良いので、AIの実行環境になります。(多くの技術者がフリーのAIソフトをインターネット上で公開しています)
  • 市販のロボットとラズパイとモニタを使って、ラズパイからロボットをコントロールしての店頭販売

 

ラズパイの操作はこんな感じになります

 

 

 

 

 

Google_AIY_VoiceKit を購入し、ラズパイを埋め込んで、AIスピーカにしました

 

  • AIスピーカーGoogle_AIY_VoiceKitは、ラズパイからPYTHONを使って制御します。
  • ラズパイからインターネットにつながります。
  • インターネットから、グーグルのAIデータベースであるGoogle Cloud Platformに接続します。
  • その結果、GoogleHomeと同じように動かすことができます。
  • 更に、ラズパイから色々なインターネット上のシステムと連携できます。

 

送られてきた製品

送られてきた製品
製品の裏

製品の裏

箱を開けたところ


箱を開けたところ

 

 

VoiceKit に質問して、色々答えてもらいました。 

 






 VoiceKit にしゃべって、メールで送ってもらいました。

 

ラズパイにVOLUMIOを入れて、ハイレゾシステムにしました

 

  • VOLUMIOは音楽専用のLinuxデストリビーションです
  • LAN上のPCにあるハイレゾ音楽ファイルを鳴らせます
  • USBメモリに用意したハイレゾ音楽ファイルを鳴らせます
  • 自分のパソコンのWebブラウザから操作できます
  • Raspberry Pi Zero WH 1,800円
  • JustBoom Amp pHAT 3,800円
  • JustBoom Amp Zero Case Black 2,160円
  • スピーカーは自宅にあったものを使いました

 

ロボット

 

  • ロボットをインターネットに接続して、インターネットと連携して動かすことができます。
  • ロボットを動かすコントローラとして、ラズパイを接続します。
  • ラズパイのLinuxからPythonプログラムを動かして、ロボットに対して、色々なことを指示できます。(色々なロボットでロボットを動かすための開発環境が提供されています)
  • ロボットとモニタとラズパイを使って、PowerPointに用意したプレゼンテーションをロボットに喋らせながら、店頭販売などできます。

 


BOCCO

 

ラズパイには、初期状態でプログラミング言語「Scratch」が開発できる環境が用意されています

2020年から小学校でプログラミング教育が必修化するのを受けて、子どもの習い事として、プログラミング教室の人気が急上昇し、そのプログラミング教室の教材として、子どもだけでなく、大人も一緒に学べるScratchが注目されています。

 

以下は「スクラッチ本」を参照して、プログラムを動かしてみました。

 

 

スクラッチキャットが歩きます 緑の旗をクリックして、プログラムを動かすとスクラッチキャットが左右に早歩き始めます。スクラッチキャットをクリックすると、そのたびに「Hello!」と吹き出しがでます。

 

コンピュータ演奏器を作りました キーボードのスペースキー、右矢印キー、1から9のテンキー に対して、楽器の音を割り当てて、コンピュータ演奏器を作りました。

 

レーシングカーを動かすゲームを作りました 緑色の旗をクリックしてプログラムを動かすとレーシングカーがコースからはずれないように道に沿って走り出します

 

妨害される迷路ゲームを作りました 蝶々を茶色い道路上で動かして、道路外の緑色部分にはみ出ないように注意して、
旗までたどり着けばゲームオーバーとなり、蝶々が 「クリア!!!」と叫びます。

 

Scratchの開発環境です Scratchの開発環境です。
中央にビジュアルなプログラミング部品を並べて、プログラミングしていきます。

セキュリティについて

Securityこのブログ技術ネタでは、すべて実際に構築して動作したものを載せます。

このブログ大体のネタは、TeraTermのログで記録を取ってあります。

 

このブログのカテゴリ「セキュリティ」について

f:id:mikolabo:20201001181928p:plain

 

■その1:WordPressサイト■

 

知り合いのWordPressでできたホームページをちょこっと手直しをしたときに、「世の中のWeb制作会社さまは、メンテナンスはやらないところが多いんだあ!!」と初めて知ったことから、手をつけるようになりました。

 

WordPress自体は、全世界各国でCMS所有率の実に60%とも言われ、身の回りのホームページの作り込みに使われていますが、IPAが啓蒙しているように WordPress脆弱性バージョンアップがあったら、すぐ適用し、同時にプラグインも適用しなければなりません。

 

ですが、WordPress自体のバージョンアップとプラグインのバージョンアップのタイミングが必ずしも合わないので(プラグインは10個も20個も使っている場合もあるし)作業自体が難しいという運用の弱点を抱えています。

 

メンテナンスが行われていないプラグインがあれば、代わりのプラグインを探したり、使用を止めて、代替案を提案しなければならないこともあるし、調査だけでも大変。

 

更にバージョンアップの結果、画面が真っ白になるなどの不具合が発生することもあり、問題を難しくしています。

 

そのような状況があり、ホームページ制作を真面目に対応していると利益が上げられないので、作るだけ作って、メンテナンス作業をまったく行わないところが多いようです。

 

リスクをかかえたまま、ずっと運転していて、そのリスクの意識もなく、へたすると WordPress自体にメンテナンスの機能があり、バージョンアップも管理画面からユーザが作業できることも知らないことも多いみたい・・・

 

当時、2017年頃は世界中のWordPress利用サイト150万件以上が改ざん被害を受けて、大問題になっていました。

 

その時には、DockerコンテナやVirtualBoxUSBメモリ機能のOS環境などに、WordPressのテスト環境を構築しました。あと、セキュリティデモなんかもやってみました。

 

■その2:セキュリティ監査のための資料作り■

 

この時、セキュリティを勉強し直したのですが、ちょうどその時、ベンダー事業部のセキュリティ監査の面倒を見て欲しいとの話を受けることがありました。

 

食いぶちもなかったので、その趣旨に乗っかって、セキュリティ施策を行うための教育資料の作成を行いました。

 

ちょうど、その頃、Webセキュリティのバイブル的教本の「体系的に学ぶ 安全なWebアプリケーションの作り方」出版社: ソフトバンククリエイティブ、著者: 徳丸浩 が改訂2版として、出版されました。

 

この本では、VirtualBoxのテストイメージファイルがインターネット上に掲載され、実際のPHPのWebアプリを教材に、インターネット上のHTTPプロトコルの電文やり取りイメージをアナライザーで採取して勉強できる環境が用意されていましたので、実際に環境を構築し、作成資料に反映していました。

 

この教本で指摘させているWebアプリケーションの脆弱性の種類は、以下のようにすごく多い。(文頭の番号は、章立て番号)

 

  • 4.3 クロスサイト・スクリプティング
  • 4.4 SQL呼び出しに伴う脆弱性
  • 4.5.1 クロスサイト・リクエストフォージェリ(CSRF
  • 4.5.2 クリックジャッキング
  • 4.6 セッション管理の不備
  • 4.7 リダイレクト処理にまつわる脆弱性
  • 4.7 HTTPヘッダインジェクションの脆弱性
  • 4.8 クッキー出力にまつわる脆弱性
  • 4.9 メール送信の問題
  • 4.10 ファイルアクセスにまつわる問題
  • 4.11 OSコマンド呼び出しの際に発生する脆弱性
  • 4.12 ファイルアップロードにまつわる問題
  • 4.12.4 PDFのFormCalcによるコンテンツハイジャック
  • 4.13 インクルードにまつわる問題
  • 4.14 evalインジェクション
  • 4.14.3 XML外部実体参照(XXE)
  • 4.14.3 XML外部実体参照(Java)
  • 4.15 共有資源やキャッシュに関する問題
  • 4.16 Web APIにまつわる問題1
  • 4.16 Web APIにまつわる問題2(CSRF)
  • 4.17 JavaScriptの問題
  • 4.17.3 postMessage呼び出しの不備
  • 4.17.4 オープンリダイレクト

 

これらのパターンの脆弱性があることを、Web開発メンバに教育し、実際にソースレビューなどでリスクを評価し、不安なところはツールよる脆弱性検査と脆弱性診断を実施する。

 

これが安心できる開発手順となるのだろうが、これを実際にできているのは何%ぐらいになるのだろうか?とりあえず、これから修行するとしても、私の能力ではできそうにない。

 

■その3:Webサイト構築■

 

以前にいた会社で、メンタルヘルスのWebサイトを自社で立てた時に、プロジェクトリーダーであったのと、最近も知り合いのWebサイトの環境周りを一部構築したが、Webサイト制作で感じたことが・・・

 

Webサイトの構築を制作会社に頼むときにも、発注者側の責任を知っている必要がある

 

というのも・・・

経済産業省が発行している「情報システム・モデル取引・契約書(モデル契約書)」にはシステム仕様書に明確に記載していないものに対しては瑕疵にならないと明記されています。

 

発注者の立場で考えれば、自衛のために契約書と仕様書にセキュリティ上の要求を明記する必要があるということ。

 

2014年、東京地裁の判決で、受注者がSQLインジェクション脆弱性対策を怠ったために、債務不履行で損害賠償が命じられた判決がありました。

 

アプリケーションのセキュリティ施策の責任は全体として発注者が負うが、発注者の指示がない場合でも、自明な脆弱性対策は受注者にも責任が生じると思われます。

(「体系的に学ぶ 安全なWebアプリケーションの作り方」より)

 

Webサイト作成を頼む側も、作り込む側も、社会的な責任があり、仕様をはっきり決めておく必要があります。

 

また、特に最近では、中小企業でも結果的に、大企業のインフラに一部接続することになっており、責任が増してきているとのこと。

 

ということで、関わらないようにしていたとしても、結局、関わらないわけにはいかないことが多く、ネタも溜まっているので、少し公開しようと思います。

ネットワークについて

このブログ技術ネタでは、すべて実際に構築して動作したものを載せます。

このブログ大体のネタは、TeraTermのログで記録を取ってあります。

 

このブログのカテゴリ「ネットワーク」について

 

私がイメージするところのネットワークは、どちらかというとネットワーク機器のコンフィグとか、LAN内のVLAN設計・セグメント設計とか、VirtualBox内でのネットワークの扱いとかのコア寄りにあります。ですが、そちら寄りの仕事は関わりがなく、そのままリタイアして現在は個人事業主になっています。

 

その方向性から行くと、SNSとか、Webアプリとか、アプリケーションであって、ネットワークネタとは違うイメージです。

 

ですが、そうはいってもコア寄りの仕事に関わってこなかったので、ネタ出ししてみたら、アプリネタばかりだった、となるかも知れません。

 

これまで、パソコンからくり研究室のネットネタとして、内々で作り込んできたものは

以下のようなものになります。

 

  • 防犯カメラ・ネットワークシステム

     

    mikolabo.hateblo.jp

     

  • Amazon Web Services を中継点としたネットワーク中継システム
  • Linuxデストリビューションによるセキュリティ機器(UTM)を設置した検疫ネットワーク
  • コロナ禍対応のテレワークシステム(ネットワークストレージ&Web会議&遠隔接続ツール)

     

    mikolabo.hateblo.jp

     

 

扱っているものは、なるべく自分で作り込みをしないで、著名なフリーソフトなどを使って、その適用方法を工夫して便利なシステムにしていこうと思っています。

 

これまで、以下のようなツールを使ってきました。

 

  • 2003年頃からプロジェクトが開始されたつくば大学発祥のSoftEtherVPN
  • クラウドサービスであるAmazon Web Servicesのネットワーク部分
  • パソコンシステム内のネットワークとしての仮想システム(具体的にはVirtualBox

 

SoftEtherVPNを使うことで、仮想通信網VPNを手軽に生成できますが、それだけではなく、高度な認証システム、細かいアクセス制御、SecureNATという高度なネットワーク機器仮想化など、私のイメージにあるネットワークのコアな部分を扱えます

 

クラウドであるAmazon Web Services は、ネットワークの中継ポイントとして置いておくことで、ネットワークシステムのエンドポイントである自宅、実家、レンタルオフィスから簡単に、今まで存在しなかった別セグメントのネットワークを出現させることができます。

 

f:id:mikolabo:20201001181219p:plain

AWS上の中継点を経由したSoftetherVPN を使ったネットワーク

この時、自宅、実家、オフィスといったエンドポイントにはネットワーク機器の設定変更をなんら行うことなく、クライアントソフトの接続操作だけで新しいネットワークを出現させます。

 

また、Amazon Web Servicesは、中継点としてだけ使うので、万が一セキュリティを破られることがあっても、基本的にからっぽシステムなので、侵略者にとって面白いことが何一つできるものではありません。その意味でとってもセキュアです。

 

仮想システムとしてVirtualBoxですが、元のシステムの中に、仮想のネットワークを生成しますので、これもネットワークの一要素として、便利に使えます。

 

セキュリティネタで載せるつもりですが、UTMになるLinuxデストリビューション「NethServer」をVirtualBox上で動かして、LANカード2枚挿しから家庭LAN内に別セグメントのネットワークを出現させ、検疫ネットワークと出来ました。

 

つまり、家庭LAN内にまったく別ネットワークの検疫セグメントを出現させるのに、VirtualBoxのネットワーク機能を利用したわけです。

 

以上のようなシステムは、すでに1年ぐらいはモニタシステムを動かしているので、資料もまとまっているので、随時紹介していこうと思います。

 

また、Linuxコアに採用されることになっている「WireGuard」、調べてみるとすごく便利そうな「NextCloud」など、面白そうなものは実験君して、便利に使えそうなものも載せていこうと思っています。