share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.09.16 THU

SFTP専用ユーザーを作成し、特定directoryのみ更新できるよう制限する

Shimpei Chiba

WRITTEN BY Shimpei Chiba

これは何

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

参考にさせていただきました。ありがとうございます。

元記事はこちら

https://qiita.com/namely_/items/e2d436c054d7f6641ab3


アイレットなら、AWS で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業をすべて一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。AWS プレミアコンサルティングパートナーであるアイレットに、ぜひお任せください。

AWS 運用・保守サービスページ:
https://cloudpack.jp/service/aws/maintenance.html

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://cloudpack.jp/contact/form/

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。