sshfs を使ってリモートの暗号化ファイルをマウント[Security]

このエントリーをはてなブックマークに追加


2006-01-05


最近の Linux では、ユーザスペースファイルシステム FUSE が使えます。
で、sshfs は、リモートサーバのあるディレクトリをローカルのサーバへ ssh 経由でマウントさせることができたりします。

local:~# modprobe fuse
local:~$ sshfs kunitake@remotehost:/home/kunitake/sshfs /home/kunitake/remotehost


こんな感じ(/dev/fuse に書き込み権限がないと、mountできません。そのあたりは適当に調整してください)

で、サーバとリモート間は暗号化されてセキュアなのですが、結局サーバには生データが置かれるので、共有サーバ上に、メールなどのデータをバックアップする用途で使うにはちょっと抵抗があります。そこで、適当な大きさのファイルを作り、それを loopback でマウントして、それを暗号化ファイルシステムとして使えばいいのでは? といった、おそろしくバカバカ^h^h^h^h素晴らしいことを思い付いたので、試してみました。

1GB のファイルを作成

remote:~$ dd if=/dev/urandom of=/home/kunitake/sshfs/cryptfile bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 431.114 seconds, 2.4 MB/s


AES を使って暗号化

local:~# modprobe aes
local:~$ losetup -e AES256 /dev/loop/0 /home/kunitake/remotehost/cryptfile
Password:


パスワードは20文字以上である必要があります。また、ユーザから sshfs を使っていた場合は、root からもそのマウントポイント以下はみえないので、そのユーザとして作業(losetup)する必要があります。これは fuse がユーザスペースのファイルシステムとして実装されているためでしょう。

EXT3 でファイルシステムを作成

local:~$ mkfs -t ext3 /dev/loop/0


マウント

local:~# mount -t ext3 /dev/loop/0 /home/kunitake/backup/remotes


これでやっと、リモートに置いたファイルを loopback でマウントできました。

後始末はこんな感じ。

local:~# umount /dev/loop/0
local:~$ losetup -d /dev/loop/0
local:~$ fusermount -u /home/kunitake/remotehost


ちなみに参考にしたドキュメントは
Loopback Encrypted Filesystem HOWTO
http://www.linux.or.jp/JF/JFdocs/Loopback-Encrypted-Filesystem-HOWTO.html



IPv4/IPv6 meter
検索キーワードは複数指定できます
ChangeLogを検索
Google
Web www.kunitake.org
思ったより安い……時もある、Amazon

カテゴリ