chrootssh 入れました

社外の方から職場に 10Mbytes のファイルを送ってもらう必要ができたのですが、メールに添付するには大き過ぎます。
一昔前なら、anonymous ftp サーバを立てて転送してもらうのが普通ですが、細切れのパケット内容を読まれる恐れがあります。
セキュリティにうるさい最近は ssh の暗号化を用いて転送する scp がポピュラーなようです。

最近の Linux/*BSD サーバには標準で OpenSSH が動いているので、うちのサーバにも社外の方用のアカウント作れば終わり…と思ったのですが、これだとホームディレクトリの外側、システムディレクトリや社内ユーザーのファイルを読まれる可能性がある、という問題があります。
ファイル/ディレクトリの permission で制御しようにも、other readable/executable になってないと動かないものがあるような気がします。(ほんとかどうかは未確認ですが…)

そこで、ホームディレクトリをルートとして見せて、外側を参照できないようにする chroot に対応させた ssh をインストールしました。(こちらのページが参考になります)

面白いのは、chroot されるアカウントで ssh ログインすると、ホームの外側にある /bin や /lib, /usr/bin などが見えなくなるので ls などの基本的なシェルコマンドも使えなくなります。
scp (WinSCPでした…2004/4/19 訂正) はサーバ側でもシェルコマンドを実行するそうなので、ホームディレクトリ以下に ./bin や ./usr/bin を作成して必要なコマンドをコピー、またそのコマンドの実行に必要な共有ライブラリもコピーしてやる必要があります。
chroot されたユーザーとして login し各コマンドが実行できるかどうかをチェックしたりと設定は面倒でしたが、仕組みを少しだけ垣間見ることができ、なかなか面白いです。
(sftp-server がまだ動いてませんが…)