これは何
SFTP専用ユーザーを作成し、特定directoryのみ更新できるよう制限してみたので、メモをここに残します。
FTPソフトはCyberduckを使ってます。
要件
sftp-userを作成する
/home/sftp-user配下のファイルしか操作できない様にする(chrootする)
ただし、/var/www/html/hogeだけは更新できる様にしたい
やってみた
ユーザー作成
useradd sftp-user
httpd install
yum -y install httpd
sftp-userがアップロードしたファイルをApacheが動かせるようにする
gpasswd -a apache sftp-user
SSH directory 作成
cd /home/sftp-user
mkdir .ssh
chmod 700 .ssh
鍵作成
sudo su - sftp-user
cd .ssh
ssh-keygen
key name : sftp-user
rootに戻る
exit
公開鍵の名称とパーミッションの変更
mv sftp-user.pub authorized_keys
chmod 600 authorized_keys
コピペで保存
cat sftp-user
(pemファイル)
sftp-user でログイン可能か確認する
(bastionにて)
vi sftp-user.pem
コピペ内容貼り付け
ssh -i sftp-user.pem sftp-user @Private IP
sftp-userを、ファイル転送専用ユーザーにする
vi /etc/ssh/sshd_config
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
↓
# override default of no subsystems
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
ファイルの末尾に、以下を追記。
Match User sftp-user
ChrootDirectory /home/sftp-user
ForceCommand internal-sftp
特定のディレクトリを別のディレクトリにマウントする
/var/www/htmlディレクトリの内容は、2つの 場所、 /var/www/html と /home/sftp-user/hoge/で利用できるようになる。
mount -B /var/www/html /home/sftp-user/hoge/
/home/sftp-userディレクトリの所有者とパーミッションを変更
chown root:root /home/sftp-user
chmod 755 /home/sftp-user
ユーザーディレクトリ内にディレクトリを作成し、ユーザーに所有させる
mkdir /home/sftp-user/hoge
chown sftp-user:sftp-user /home/sftp-user/hoge
chmod 775 /home/sftp-user/hoge
sshdを再起動し、設定を反映
sshd -t
エラーがなければ再起動
service sshd restart
sftpコマンドで転送する。
(hoge directoryにcdしなければ、putは失敗した。)
sftp -i sftp-user.pem sftp-user@踏み台の先のEC2 Private IP
Connected to XXX
sftp> cd /hoge/
sftp> put XXX.jpeg
Uploading XXX.jpeg to /hoge/XXX.jpeg
XXX.jpeg 100% 11KB 20.3MB/s 00:00
sftp> exit
/var/www/html配下に移動できているか確認
ls -la /var/www/html/XXX.jpeg
-rwx------. 1 sftp-user sftp-user 11136 Sep 13 09:56 /var/www/html/XXX.jpeg
一応、ポートフォワーディングを行い、ファイル転送できるか確認
ポートフォワーディング
ssh -f -N -L 10220(任意):踏み台の先のEC2 Private IP:22 -i 秘密鍵 踏み台OSユーザー@踏み台Public IP
FTPソフトで接続し、ファイル転送。
総括
なかなかセキュアな環境ができたのではないでしょうか。(konami)
参考
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/5/html/global_file_system_2/s1-manage-pathnames
https://lab.taf-jp.com/sftp%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%A6%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%BB%A2%E9%80%81%E7%94%A8%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B/
https://cloudpack.media/14365
参考にさせていただきました。ありがとうございます。