特定のユーザーのみSFTP接続させてみる


概要

特定のユーザーでのみSFTP接続可能にする設定する必要があったので実施してみた。
備忘がてら、流れをメモする。

前提

Webサーバー(今回はさくらインターネットの専用サーバーを使用)
vsftpがインストールされている
SSHでアクセスできる環境

手順

1.サーバー側でユーザーの設定

SSHでアクセスし、ユーザーを作成する

$ ssh -i {key情報} [email protected] -p xx
Last login: xxxxx from xxxx.jp

SAKURA Internet [Virtual Private Server SERVICE]


# 管理者権限に昇格
[sample@xxxx ~]$ sudo su
[sudo] password for sample:

 # test_userを追加
[root@xxxx sample]# useradd -s /sbin/nologin -d /home/test_user test_user

# パスワード設定
[root@xxxx sample]# passwd test_user
ユーザー test_user のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。

# ユーザーが作成されているか確認
[root@xxxx sample]# /home/
sample/   test_user/

# ディレクトリのパーミッションを設定
[root@xxxx sample]# chmod 755 /home/test_user

# パーミッションの確認
[root@xxxx sample]# cd /home/
[root@xxxx home]# ls -la
合計 xx
drwxr-xr-x.  7 root       root        4096  6月 20 09:20 2021 .
dr-xr-xr-x. 22 sample     sample      4096  8月  7 11:01 2019 ..
drwxr-xr-x   2 test_user  test_user   4096  6月 20 09:20 2021 test_user

2.sshd_configでSFTP設定

PasswordAuthentication yesにして、SFTPユーザーのみパスワード認証を許可する。

/etc/ssh/sshd_config

:
:
#Subsystem      sftp    /usr/libexec/openssh/sftp-server ← コメントアウトする
Subsystem sftp internal-sftp

Match User test_user
    ChrootDirectory /home
    PasswordAuthentication yes
    X11Forwarding no
    AllowTcpForwarding no

設定が完了したら、設定情報のチェックをする

[root@xxxx home]# sshd -t

問題がなければsshdを再起動する。

[root@xxxx home]# /etc/rc.d/init.d/sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]

3.SFTPクライアントから接続する

今回はFileZillaを使用してSFTP設定をする。

接続確認

  • プロトコル:SFTP
  • ホスト:サーバーのIPアドレス
  • ポート:SSH接続ポート
  • ログオンタイプ:通常
  • ユーザー:手順1で作成したユーザー:test_user
  • ユーザー:手順1で作成したパスワード:*****

接続ログ

接続完了

リモートサイト側にtest_userが表示された

これで一旦接続完了した。

その他

グループを使った指定方法

今回はユーザー指定でSFTP設定をしたが、複数のアカウントでSFTP接続できるようにしたい場合は、sshd_configに設定をすれば可能みたい。

Match Group {グループ名}
    ChrootDirectory /home
    PasswordAuthentication yes
    X11Forwarding no
    AllowTcpForwarding no

特定ユーザーをグループに設定すればよさそう。

[root@xxxx home]# usermod -G {グループ名} {ユーザー名}

アクセス制限

ホームフォルダはroot所有にしているため、ファイルのダウンロードはできてもファイルのアップロードはできない。
これは、userフォルダのroot所有にすると、userフォルダ直下にファイルを置くことが原因らしい。

さいごに

個人的にセキュリティ面が気になるが、今回の操作でOS周りの設定に関して少し知識が蓄積された気がする。

参考URL