さて前回構築したOpenSSHのchroot環境ですが、使いづらいことがわかりました。っというのも前回の設定では、すべてのユーザがchroot環境になってしまうのです。公開するユーザについては、思惑通りなのですが、我々管理者のアカウントまでもがchroot環境になってしまうのは、ちょっと。。。ってな具合です。
そこで、調べますと、OpenSSH4.6以降で、Matchディレクティブが使えるようになったようで、これを使うと特定ユーザは除外できそうです。
yumを使って更新できないので、ちょいと面倒ですが、最新版からrpmをビルドするしかなさそうです。OpenSSHを最新版に入れ替えますので、Telnetかコンソールで作業してください。
まずは、既存のOpenSSHを停止して、アンインストール。
# service sshd stop # yum remove openssh
最新版のダウンロード。こちらから。
# wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.6p1.tar.gz
展開とopenssh.specの編集。
# tar xvfz openssh-5.6p1.tar.gz # vi openssh-5.6p1/contrib/redhat/openssh.spec %define no_x11_askpass 1 ※ 0から1へ %define no_gnome_askpass 1 ※ 0から1へ %configure \ --without-zlib-version-check \ ※ 追加 --sysconfdir=%{_sysconfdir}/ssh \ # rm -rf openssh-5.6p1/contrib/aix # rm -rf openssh-5.6p1/contrib/caldera # rm -rf openssh-5.6p1/contrib/cygwin # rm -rf openssh-5.6p1/contrib/hpux # rm -rf openssh-5.6p1/contrib/solaris # rm -rf openssh-5.6p1/contrib/suse
編集が完了したら再度圧縮し、不要になったディレクトリを削除します。
# tar cvfz openssh-5.6p1.tar.gz openssh-5.6p1 # rm -rf openssh-5.6p1
ビルド!
# rpmbuild -tb --clean openssh-5.6p1.tar.gz
rpmがビルドできたら、インストールします。
# rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-5.6p1-1.i386.rpm # rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-server-5.6p1-1.i386.rpm # rpm -Uvh /usr/src/redhat/RPMS/i386/openssh-clients-5.6p1-1.i386.rpm # rm -f /usr/src/redhat/RPMS/i386/openssh-* # rm openssh-5.6p1.tar.gz
yumで不用意なアップデートが発生しないよう、除外する設定を加えます。
# vi /etc/yum.conf exclude=openssh* ※ 追加
sshd_configの編集。前回設定したChrootDirectoryを変更。
管理者アカウントは、あらかじめwheelグループに所属させておくこと。
# usermod -G wheel 管理者アカウント # vi /etc/ssh/sshd_config Match Group *,!wheel ChrootDirectory /home/%u/./
起動と自動起動の設定。
# service sshd start # chkconfig --level 2345 sshd on
これで、管理者アカウント以外でsftpした場合は、chroot環境になり、管理者は、上位のディレクトリに移動できるようになります。
参考サイト:SSHサーバー構築(OpenSSH)