Raspberry PiでセキュアなNASを作ろう


みなさんこんにちは。
先輩からRaspberry Pi 3B+を御馳走して頂いたので、自宅で使うためのセキュアなNASを調理していきます。

環境と目標

  • Raspberry Pi 3B+
  • Raspberry Pi OS (Debian 10.4ベース)
  • 500GB USB-HDD
  • ファイル暗号化にはVeraCrypt
  • ファイル共有にはSamba

LAN内にはWin10マシンとラズパイ、Androidスマートフォンがあり、各デバイスでNASにアクセス可能にする

やってみよう

Raspberry Pi OSをインストールし、SSHでデフォルトユーザにログインした直後から話を進めていきます。

前準備

まずはSambaをインストールします。
sudo apt install samba
Sambaを使用すると、WindowsやSMBプロトコルに対応したAndroidファイルマネージャなどでNASにアクセスできるようになります。

USB-HDDをマウントするためのディレクトリを作成します。
mkdir /home/pi/share
デバイス名はlsblkで確認できます。

マウントしましょう。
sudo mount /dev/sda1 /home/pi/share

Sambaの設定

続いてSambaの設定をしていきましょう。
/etc/samba/smb.conf がSambaの設定ファイルです。(念のためホームディレクトリ等にバックアップしておくことをお勧めします。)

Vimなどのテキストエディタで開くと、

smb.conf
workgroup = WORKGROUP

という行があるので
各自のワークグループ名を入力してください。
(LAN内のWindowsマシンでWin+Rキーを押して名前を指定して実行にてsysdm.cpl

で、確認できます。)

そして共有したいディレクトリを指定します。
smb.confの末尾に書きましょう。

[share] #表示名
  path = /home/pi/share  #共有したいディレクトリを入力
  writable = yes
  read only = no
  force create mode = 777
  create mask = 777
  force directory mode = 777
  directory mask = 777

以上でSambaの設定は終了です。

Windowsマシンのエクスプローラー > ネットワーク > RASPBERRYPIからNAS内に読み書き可能なことを確認しましょう。

Veracryptとは

AES等の暗号化アルゴリズムで暗号化されたボリュームを作成できるソフトウエアです。
パーティション自体も暗号化することができるという優れものです。

実際にやってみましょう

Veracrypt自体はGUI、CLIどちらでも利用可能ですが、暗号化ボリュームの作成はGUIの方が分かりやすいと思うのでWindows側で進めていきます。

Veracryptを起動します。

左上の「ボリューム」より、新規ボリュームの作成を選択します。

暗号化されたファイルコンテナの作成を選択し、次へをクリック

ここでは隠しボリュームを使用しないので、このまま次へをクリックします


ボリュームを作成する位置は、先程構築したNAS内にしましょう。


こちらもそのまま次へをクリックしてください。

あまり大きな容量を指定するとRaspberryPiは非力なのでマウントする際に時間がかかるので容量は小さめにすることをおすすめします。


パスワードは複雑で長いものを使用することをおすすめします。

次のウィンドウで暗号化作業が始まり、完了するとNAS内に暗号化されたボリュームができていると思います。

SSHでの作業へ移ります。

実は

Veracryptは標準のリポジトリには存在しません。(ソースコードの一部がオープンソースでないため)

なので、マウントにはZulucryptを使用します。(いちいち公式サイトに取りに行くのがめんどい)
sudo apt install zulucrypt-cli

インストールが終了したら、暗号化ボリュームをマウントするディレクトリも作成しておきましょう。
mkdir ~/volume

オープンとマウントを別々に行います。

sudo zuluCrypt-cli -O -d /(共有フォルダ)/(ボリューム名) -t vcrypt

パスワードを入力し、オープン終了までしばらく待ちます。
オープンが終了し、lsblkで確認するとzuluCryptから始まるデバイス名が確認できると思います。

sudo mount -o uid=(uid) -o gid=(gid) /dev/mapper/(デバイス名) /home/pi/volumeでマウントします。

uidとgidはidコマンドで確認できます。

最後に

マウントした暗号化ボリュームをLAN上に共有してみましょう。

smb.confを開き、末尾に新しく設定を追加していきましょう。

[volume] #表示名
  path = /home/pi/volume  #共有したいディレクトリを入力
  writable = yes
  read only = no
  force create mode = 777
  create mask = 777
  force directory mode = 777
  directory mask = 777

sudo systemctl smbd nmbdでSambaを再起動し、確認してみましょう。