🦔
SFTP chroot 設定をする
はじめに
任意のディレクトリにのみにSFTPできるようにする必要があったので、手順を残しておく。
環境
OS: 5.10.144-127.601.amzn2.x86_64
openssl: 1.0.2k-24
openssh: 7.4p1-22
apache: 2.4.54-1
手順
準備
$ sudo chown -R apache /var/www
$ sudo chgrp -R apache /var/www
$ sudo chmod 2775 /var/www
$ find /var/www -type d -exec sudo chmod 2775 {} \;
$ sudo mkdir -p /var/www/html/example
SFTPユーザ作成
$ sudo useradd sftp-user
$ sudo usermod -aG apache sftp-user
ユーザ切り替え
$ sudo su - sftp-user
.ssh ディレクトリ作成
$ mkdir .ssh
$ chmod 700 .ssh
authorized_keys作成
$ cd ~/.ssh
$ touch authorized_keys
$ chmod 600 authorized_keys
keypair作成
$ ssh-keygen -b 4096
$ cat id_rsa.pub >> authorized_keys
$ exit
sftp設定
$ sudo vim /etc/ssh/sshd_config
-------------
############
sshd_config
############
# override default of no subsystems
# Subsystem sftp /usr/libexec/openssh/sftp-server
# chroot の場合
Subsystem sftp internal-sftp
Match User sftp-user
ChrootDirectory /home/%u
ForceCommand internal-sftp -u 002
------------
$ systemctl restart sshd
パーミッション変更
$ sudo chown root:root /home/sftp-user/
$ sudo chmod 755 /home/sftp-user/
特定ディレクトリをマウント
$ sudo mkdir -p /home/sftp-user/workdir/mountdir/
$ sudo chown sftp-user:sftp-user /home/sftp-user/workdir
$ sudo mount -B /var/www/html/only-sftp /home/sftp-user/workdir/mountdir/
$ sudo vim /etc/fstab
------------
# 追加
/var/www/html/example /home/sftp-user/workdir/mountdir/ none bind 0 0
------------
まとめ
chroot のルートディレクトリは、root:rootにする必要があり所有者以外には書き込み権限を付与してはいけない。
/var/www/html/example に対してシンボリックリンク作成してもアクセスはできないため
mountにて対応する必要があった。
Discussion