opensshでchrootを動かす

「ウチとA社、ウチとB社、A社とB社は干渉させないでSFTPでファイルのやり取りをしたい」と言った用件が来た。

 

単純に所有グループ分けで、パーミッション770とかにしても、WinSCPとかで接続されると「どんなデータが存在するか?」が見えてしまう。

今回はそれすらさせたくないらしい。

 

んで、いろいろぐぐってみると、chrootを使用するのがあった。

openssh4.8まではパッチを当ててchrootを行なう必要があったらしいが、openssh4.9からは標準で組み込まれたみたい。

使っているCentOS5.2はopensshのバージョンは5.1なので、いけそう♪

 

 以下、やり方。

1.yumでrsshをインストールする。

  # yum -y install rssh

 

2.rsshのソースファイルの中にある、chroot作成の際のスクリプトを使うので、wgetなりでrsshをダウンロードする。

  ※chroot作成用のスクリプト以外は使用しないので、以下にrssh-2.3.0のスクリプトだけを置いておきます。

  mkchroot.sh

 

3.上記のmkchroot.shの引数に、chrootで作成したいディレクトリを指定して実行する。

  # ./mkchroot.sh /var/chroot/home1

 

4.chroot作成用のスクリプトは、homeディレクトリが作成されないので、手動で作成する。

  # mkdir /var/chroot/home1/home

 

5.chrootを使用するユーザを作成する。ホームディレクトリと合わせて、シェルをrsshに指定する。

  # useradd -d /var/chroot/home1/home/user -s /usr/bin/rssh user

  # passwd user

 

6./etc/passwdファイルに追加されたchrootユーザーの情報を、chrootディレクトリ内のetc/passwdファイルにコピーする。

 

7./etc/rssh.confを修正し、「allowsftp」の行のみコメントを外す。 ※scpやrsyncはコメントアウトのまま。

 

8.sshd_configを修正し、chroot用のディレクトリを作成する。

  Subsystem       sftp    internal-sftp

  Match Group home1

  PasswordAuthentication yes

  AllowAgentForwarding no

  AllowTcpForwarding no

  ChrootDirectory /var/chroot/home1

 

9.sshdを再起動して終了

 

これで、SFTPのみしか利用できない、不要なファイルを閲覧できないユーザーが作成された。

そもそもの要件である、「受け渡し」は、同様の手順で同じグループに所属するchrootユーザーを追加すれば良い。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です