OPENSSHでchroot環境を作る

2022-12-01

SFTPを利用して特定のユーザーでchroot環境作成

OpenSSHを利用してSFTP接続で、特定のユーザーでchroot環境を作成してみました。ネットの情報だと簡単に作れると思ったけど手間取りました。

chrootできるディレクトリの制限が、所有者をroot:root、パーミッションを755 となっているので作ってみた感じは微妙って感じです

※OpenSSHのchroot機能はOpenSSH4.2.9以降から使用できるようになっています。
http://www.openssh.com/txt/release-4.9

SFTPを利用したchroot環境作成 (失敗)

OpenSSHを利用するので、chroot環境を利用するユーザーを作成してsshdの設定ファイルを変更して再起動するとSFTPを利用したchroot環境は設定できます

【環境】
OS:CentOS 7
chrootユーザー:scptest
chrootディレクトリ:/home/scptest/www

・chroot環境で利用するユーザー作成します

# useradd scptest
# passwd scptest

・chrootで利用するディレクトリを作成します

# mkdir /home/scptest/www

・sshd_configを編集してsshdを再起動するとchroot環境が構築できます

# vim /etc/ssh/sshd_config
# override default of no subsystems
#Subsystem sftp /usr/libexec/openssh/sftp-server #コメントアウトします。
Subsystem sftp internal-sftp
 
Match User scptest
ChrootDirectory /home/scptest/www
ForceCommand internal-sftp

# sshdを再起動します
# systemctl  restart sshd

 

再起動しましたが、SFTPで接続しましたが、「fatal: bad ownership or modes for chroot directory “/home/scptest"」で接続できません。

sshdの設定でchrootのディレクトリの「/home/scptest/www」の所有者はrootとなっているけど、SCP接続した際のホームディレクトリの「/home/scptest/」がrootになっていないのでエラーとなり接続できないようです。

「/home/scptest/」の所有者をrootにするのは抵抗があるので違う方法で試します

 3月 03 10:28:46 host1 sshd[15824]: pam_unix(sshd:session): session opened for user scptest by (uid=0)
 3月 03 10:28:46 host1 sshd[15824]: fatal: bad ownership or modes for chroot directory "/home/scptest" [postauth]
 3月 03 10:28:46 host1 sshd[15824]: pam_unix(sshd:session): session closed for user scptest

SFTPを利用したchroot環境作成 (成功)

先程失敗したSFTPのchrootですが、chrootするディレクトリはrootで作成してユーザーディレクトリはその配下するって感じ変更します

【環境】
OS:CentOS 7
chrootユーザー:scptest2
chrootディレクトリ:/scphome/
scptestのユーザーディレクトリ:/scphome/home/scptest2

・chrootで利用するディレクトリを作成します

# mkdir /scphome
# mkdir /scphome/home

・chroot環境で利用するユーザー作成します。ユーザーディレクトリは「/scphome/home/scptest2」に指定します

# useradd scptest2 -d /scphome/home/scptest2 -s /sbin/nologin
# passwd scptest2

・sshd_configを編集してsshdを再起動するとchroot環境が構築できました。この設定だとchrootディレクトリがrootで、ホームディレクトリは/scphome/home/scptest2」となっているのでSFTPでの接続ができます。

# vim /etc/ssh/sshd_config
# override default of no subsystems
#Subsystem sftp /usr/libexec/openssh/sftp-server #コメントアウトします。
Subsystem sftp internal-sftp
 
Match User scptest
ChrootDirectory /home/scptest/scptest2
ForceCommand internal-sftp

# sshdを再起動します
# systemctl  restart sshd

本来はWEBのコンテンツの一部をchroot環境にしてその場所に業者さんがファイル置いたりしたかったのですが、この方法をだと無理があったのでvsftpでFTPサーバーを構築しました

LinuxCentOS 7,Linux

Posted by admin