2017年02月03日
Tweet
以前以下の通り記事を書いていました。
FTP の代わりに SFTP を利用する: 2016年06月21日
このとき、時間がなかったりでちゃんと検証していませんでした。
ということで、最近改めて設定したのでめも。
・要件
ログインは証明書を利用
1つのWebサイトについて、1社1名で更新する。
アカウント発行は1名ごと。
自分の担当Webサイト以外は見えないようにする
ディレクトリの移動は自分に関係のあるところだけ
こんな感じです。
chroot でも様々な方法があり、シンボリック方式もいいのですが、上下階層で関連ディレクトリをまとめる必要があります。
例) document root -> /home/www , ユーザーディレクトリ -> /home/www/chroot
これではなんとなく気持ち悪いなぁと思っていました。
参考
openssh chrootかつsftpだけ利用できる環境を構築する
特定のユーザのみSFTPでchrootする
さらに調べてみると、mount --bind という方式が便利のようでした。
そしてとても詳しく書いてあるサイトが。
参考
SFTPのchroot設定方法〜実践向け〜
SFTP chroot
日本語サイトばかり調べていたのですが、とりあえず標準的な手法はないのかと、海外サイトも含めて調べていたら、この方法を見つけました。そしてその後日本語の解説を見つけたのです。すばらしいですね。
上記の参考サイトの通りですが以下の方法で作業。
・ユーザーの作成、パスワード付与
useradd
passwd
・グループの編集
※vipwを利用して、上記で作成したユーザーのグループをSFTPグループに所属させます。usermod -g <グループ名>でも同じようです。なおその際、homeフォルダについては、デフォルトのままなので /home/です。(証明書ログインのときには、authorized_keysを参照するので、この方が都合がいいようです。)
・証明書ログインのために authorized_keys の設定
mkdir /home//.ssh
chown. /home//.ssh
chmod 600 /home//.ssh
vi /home//.ssh/authorized_keys
※上記ファイルに公開鍵を記載
所属などの確認
id
・chroot 用のユーザーディレクトリの作成
mkdir /home/chroot-home/
※/home/chroot-home/ にユーザーフォルダは集約することにしました。なお、ユーザー名のフォルダを作成しておかないと、ログイン時にエラーとなってはじかれます。
・マウント用ディレクトリの作成
mkdir /home/chroot-home//
・sshd サービスの設定
# vi /etc/ssh/sshd_config
Match User
ChrootDirectory /home/chroot-home/%u
ForceCommand internal-sftp
# service sshd restart
・まずは手動でマウント
mount --bind /var/www/ /home/chroot-home//
・SFTPクライアントからログイン
※ログインすると / ディレクトリ内に、 というフォルダがあることが確認できました。
また、上記フォルダに対して、問題無く書き込みができました。
・問題が無ければfstabに追記
# vi /etc/fstab
/var/www/ /home/chroot-home// none bind
以上で、証明書ログインを行いつつ、chroot を行うことができました。
気になる点としては、mount をするので、ユーザー数が多いときにはとんでもないマウント数になってしまうように思われます。

FTP の代わりに SFTP を利用する: 2016年06月21日
このとき、時間がなかったりでちゃんと検証していませんでした。
ということで、最近改めて設定したのでめも。
・要件
ログインは証明書を利用
1つのWebサイトについて、1社1名で更新する。
アカウント発行は1名ごと。
自分の担当Webサイト以外は見えないようにする
ディレクトリの移動は自分に関係のあるところだけ
こんな感じです。
chroot でも様々な方法があり、シンボリック方式もいいのですが、上下階層で関連ディレクトリをまとめる必要があります。
例) document root -> /home/www , ユーザーディレクトリ -> /home/www/chroot
これではなんとなく気持ち悪いなぁと思っていました。
参考
openssh chrootかつsftpだけ利用できる環境を構築する
特定のユーザのみSFTPでchrootする
さらに調べてみると、mount --bind という方式が便利のようでした。
そしてとても詳しく書いてあるサイトが。
参考
SFTPのchroot設定方法〜実践向け〜
SFTP chroot
日本語サイトばかり調べていたのですが、とりあえず標準的な手法はないのかと、海外サイトも含めて調べていたら、この方法を見つけました。そしてその後日本語の解説を見つけたのです。すばらしいですね。
上記の参考サイトの通りですが以下の方法で作業。
・ユーザーの作成、パスワード付与
useradd
passwd
・グループの編集
※vipwを利用して、上記で作成したユーザーのグループをSFTPグループに所属させます。usermod -g <グループ名>でも同じようです。なおその際、homeフォルダについては、デフォルトのままなので /home/
・証明書ログインのために authorized_keys の設定
mkdir /home/
chown
chmod 600 /home/
vi /home/
※上記ファイルに公開鍵を記載
所属などの確認
id
・chroot 用のユーザーディレクトリの作成
mkdir /home/chroot-home/
※/home/chroot-home/ にユーザーフォルダは集約することにしました。なお、ユーザー名のフォルダを作成しておかないと、ログイン時にエラーとなってはじかれます。
・マウント用ディレクトリの作成
mkdir /home/chroot-home/
・sshd サービスの設定
# vi /etc/ssh/sshd_config
Match User
ChrootDirectory /home/chroot-home/%u
ForceCommand internal-sftp
# service sshd restart
・まずは手動でマウント
mount --bind /var/www/
・SFTPクライアントからログイン
※ログインすると / ディレクトリ内に、
また、上記フォルダに対して、問題無く書き込みができました。
・問題が無ければfstabに追記
# vi /etc/fstab
/var/www/
以上で、証明書ログインを行いつつ、chroot を行うことができました。
気になる点としては、mount をするので、ユーザー数が多いときにはとんでもないマウント数になってしまうように思われます。