SFTP用ユーザのchroot環境の構築【Amazon Linux 2】

セキュリティ向上のため、SFTP用ユーザが上位ディレクトリにアクセスできないchroot環境を構築します。
ここでは、「www_user」というユーザが「/var/www」より上にアクセスできない環境を構築してみます。
※ユーザ名、所属グループは任意に指定して下さい。

1. ユーザの作成

ここでは「www_user」を作成します。
$ sudo groupadd www_user
$ sudo useradd -g www_user -G apache -d /var/www -s /sbin/nologin www_user
$ sudo passwd www_user

2. ディレクトリの設定

(1) /var/wwwのオーナーの設定
上位ディレクトリのオーナーは必ず「root」でなければなりません。
$ sudo chown root:root /var/www

(2) /var/www/htmlの設定
このオーナーを「www_user」とします。
$ cd /var/www
$ sudo chown -R www_user:apache html

このディレクトリのパーミッションを「775」にします。(apacheユーザでも書き込めるように)
$ cd /var/www
$ sudo chmod -R 775 html

3. sshdの設定

「/etc/ssh/sshd_config」の設定を行います。
$ sudo vi /etc/ssh/sshd_config

Subsystemの行を以下のように書き換えます。
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

最終行に以下を追加します。
Match User www_user
        PasswordAuthentication yes
        ChrootDirectory /var/www
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp -u 002        

また、例えばid01、id02というようにユーザ名の一部を可変にしたい場合は、以下のように指定します。
Match User id*
        PasswordAuthentication yes
        ChrootDirectory /var/www/%u
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp -u 002        


sshdサービスを再起動します。
$ sudo systemctl restart sshd.service



最終更新:2019年08月22日 13:43