はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、自宅に構築している自作Google Driveとして利用している「Nextcloud」のバックアップサーバ側で対応したことをまとめていきたいと思います。
関連記事にもある通り、自作Google Driveとして、現在、我が家では「Nextcloud」を構築し利用しています。
ただ、自宅のサーバにデータを保存するだけでは、故障時にデータがなくなる可能性があります。
そこで、冗長性、可用性を向上させるために、私と妻の実家にラズパイを設置させてもらい、4TBの外付けHDDを接続し、データのバックアップを行っています。
効率的ではないが、RAID1でバックアップを行っています。
物理的な場所も離れているので、冗長性と可用性はかなり高い状態になっています。
ただ、双方の実家とはいえ、悪意のある人間が接続されているHDDからデータを奪わない保証はないので、今回暗号化を行いました。
実家といえど何がおきるかわからないですしね
なぜHDD/SDDの暗号化が必要なのか?
そもそも「なぜHDD/SDDの暗号化が必要か?」というと、暗号化をしない場合、ラズパイに接続するHDDを他のPCやサーバに接続した際にデータの参照が可能となってしまうためです。
個人情報につながる大事なデータを保存した際に、他の人に見られてしまう状態というのはあまりよろしくないと思います。
また、自宅は問題ないと思いますが、物理的な距離が離れた実家だと、誰がいじるかわからないと思います。
暗号化を行うことでHDD/SDDが持ち去られたとしても、中身のデータを確認することができなくなります。
(高度な知識やスキルを持っている方は解読できるかもしれませんが・・さすがにそんな人が取るとは思えないのでそこまでは考慮してない)
だからHDD/SDDの暗号化は必要なのです。
実際に暗号化してみた方法
今回暗号化に利用したコマンドラインツールは「cryptsetup」です。
これはLinuxの暗号化でよく利用される「dm-crypt」をベースにしているため、セキュリティ強度も高めとなっています。
実際に暗号化した手順は全6ステップとなります。
Step1:cryptsetupのインストール
cryptsetupを利用するためにはインストールが必要となります。
インストールコマンドは「apt install cryptsetup」となります。
Step2:鍵ファイルの作成
cryptsetupでの暗号化は「パスフレーズ」と「鍵」の2種類の方法があります。
今回は、「鍵」の方が安全だと判断し、鍵方式を採用しました。
鍵ファイルの作成は以下のコマンドとなります。
dd bs=512 count=4 if=/dev/urandom of=/root/crypt.key
「if=/dev/urandom」部分は固定で問題ありませんが、「of=/root/xxxxx.key」は生成する鍵の名前になるので、各自修正が必要となります。
Step3:作成した鍵で暗号化
次に作成した鍵を用いてデバイスの暗号化を行っていきます。
コマンドは以下の通りです。
cryptsetup luksFormat /dev/md0 /root/crypt.key
「/dev/md0」部分は暗号化するデバイス名となります。
暗号化するデバイスを確認する場合は、「sudo fdisk -l」で出力される「sdxx」やデバイスの抜き差しを行った際に出力される「sudo cat /var/log/syslog | grep “sd”」で確認することができます。
また、「/root/crypt.key」は先程作成した鍵の名前となります。
Step4:デバイスへのアクセス
暗号化したデバイスにアクセスするためには、「cryptsetup open」コマンドを利用する必要があります。
その書式は以下の通りとなります。
cryptsetup open <デバイス名> cryptdata --key-file <暗号化用に作成した鍵名>
このコマンドを実行することで、Step3で暗号化したデバイスにアクセスすることが可能となります。
Step5:フォーマットの実施
以下のコマンドでデバイスのフォーマットを実施する必要があります。
フォーマットを行うことでデータの初期化とファイルシステムの作成を行うことができます。
mkfs -t ext4 (crypt mapのデバイス名)
crypt mapのデバイス名とは、「sudo fdisk -l」コマンドの出力結果に「/dev/mapper/xxxxxx」があり、その部分を指し示しています。
Step6:最後はマウントの実施
最後に実施することはデバイスのマウントになります。
マウントコマンドはネットで調べるとすぐに出てくると思いますが、以下に記載します。
mount -t ext4 (crypt mapのデバイス名) (マウント先)
以上のStep1〜Step6までの対応を実施することで外付けHDD等のデバイスを暗号化することができ、データを比較的安全に取り扱うことが可能となります。
最後に
今回の記事は、皆さんの参考になりましたでしょうか。
次回以降も私がインプット、経験したことを記事にまとめていきたいと思います。
- 【OpenVPN】VPNサーバからクライアントの先にあるLAN内に接続する方法
- 【サーバ構築・運用】自宅に余っていたRaspberrypi 3BでIPMI/KVMサーバを構築(設定編)
- 【サーバ構築・運用】自宅に余っていたRaspberrypi 3BでIPMI/KVMサーバを構築(物理構成編)
- 【サーバ構築・運用】自宅に余っていたRaspi3でIPMI/KVMサーバを構築(PiKVMインストール編)
- 【自作Google Drive】バックアップサーバの外付けHDDを暗号化してみた
- 【自作でGoogle Drive?】NextcloudのCodeサーバ(ビルトインCode)で苦戦した話
- 【自宅システム】管理するサーバにPrometheus/Grafana環境を導入してみた
- 【ESXi・トラブルシューティング】CPU Mismatch・No Network Adapterの対処方法について
- 【若手エンジニア・初心者】自宅にサーバ(組立PC)を作ってみた話(部品編)