このチュートリアルでは、SFTPユーザーをホームディレクトリまたは特定のディレクトリに制限する方法について説明します。これは、ユーザーが自分のホームディレクトリにのみアクセスできることを意味し、全ファイルシステムにアクセスできないことを意味します。
ユーザーのホームディレクトリを制限することは重要です、特に共有サーバー環境では、不正なユーザーが他のユーザーのファイルやフォルダを覗き見できないようにするためです。
重要: この記事の目的はSFTPアクセスのみを提供することであり、SSHログインではないことにも注意してください。この記事に従うと、ファイル転送を行う権限がありますが、リモートSSHセッションを行うことは許可されません。
関連記事: Chrooted Jailを使用して特定のディレクトリへのSSHユーザーアクセスを制限する
これを行う最も簡単な方法は、SFTPアクセス用のchrooted jail環境を作成することです。この方法はすべてのUnix/Linuxオペレーティングシステムで同じです。chrooted環境を使用することで、ユーザーをホームディレクトリまたは特定のディレクトリに制限することができます。
ユーザーをホームディレクトリに制限する
このセクションでは、sftpgroupという新しいグループを作成し、ユーザーアカウントに正しい所有権とアクセス許可を割り当てます。ユーザーをホームディレクトリまたは特定のディレクトリに制限する2つの選択肢がありますが、この記事では両方の方法を見ていきます。
ユーザーとグループの作成または変更
既存のユーザー、例えばtecmint
をホームディレクトリ/home/tecmint
に制限しましょう。そのために、次のようにして新しいsftpgroupグループを作成する必要があります。
# groupadd sftpgroup
次に、ユーザー‘tecmint’をsftpgroupグループに割り当てます。
# usermod -G sftpgroup tecmint
また、useraddコマンドを使用して新しいユーザー、例えばsenthil
を作成し、ユーザーをsftpusersグループに割り当てます。
# adduser senthil -g sftpgroup -s /sbin/nologin # passwd tecmint
SSHの構成ファイルを変更します
以下の行を/etc/ssh/sshd_config
構成ファイルに追加して開きます。
Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /home ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
ファイルを保存して終了し、新しい変更を有効にするためにsshdサービスを再起動します。
# systemctl restart sshd OR # service sshd restart
複数のユーザーを同じディレクトリにchrootする場合は、各ユーザーのホームディレクトリの権限を変更して、他のすべてのユーザーが他のユーザーのホームディレクトリを閲覧できないようにする必要があります。
# chmod 700 /home/tecmint
SSHとSFTPユーザーのログインを確認します
今度は、ローカルシステムからリモートシステムへのログインを確認してみましょう。
# ssh [email protected]
ここで、
- tecmint – リモートシステムのユーザー名。
- 192.168.1.150 – リモートシステムのIPアドレス。
サンプル出力:
[email protected]'s password: Could not chdir to home directory /home/tecmint: No such file or directory This service allows sftp connections only. Connection to 192.168.1.150 closed.
次に、SFTPを使用してリモートシステムにアクセスします。
# sftp [email protected]
サンプル出力:
[email protected]'s password: Connected to 192.168.1.150. sftp>
現在の作業ディレクトリを確認しましょう:
sftp> pwd Remote working directory: / sftp> ls tecmint
ここでは、tecmint
がホームディレクトリです。 tecmint ディレクトリに移動し、お好きなファイルやフォルダを作成してください。
sftp> cd tecmint Remote working directory: / sftp> mkdir test tecmint
特定のディレクトリへのユーザーの制限
前の例では、既存のユーザーをホームディレクトリに制限しました。これから、新しいユーザーをカスタムディレクトリに制限する方法を見ていきます。
グループと新規ユーザーの作成
新しいグループ sftpgroup
を作成します。
# groupadd sftpgroup
次に、SFTPグループ用のディレクトリを作成し、rootユーザーに権限を割り当てます。
# mkdir -p /sftpusers/chroot # chown root:root /sftpusers/chroot/
その後、各ユーザーのために新しいディレクトリを作成し、それぞれが完全なアクセス権を持つようにします。例えば、以下の一連のコマンドを使用して、tecmint
ユーザーとその新しいホームディレクトリを正しいグループ権限で作成します。
# adduser tecmint -g sftpgroup -s /sbin/nologin # passwd tecmint # mkdir /sftpusers/chroot/tecmint # chown tecmint:sftpgroup /sftpusers/chroot/tecmint/ # chmod 700 /sftpusers/chroot/tecmint/
SFTPアクセスのためのSSHの構成
ファイルの最後に以下の行を変更または追加します。
#Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /sftpusers/chroot/ ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
ファイルを保存して終了します。保存した変更を有効にするために、sshdサービスを再起動します。
# systemctl restart sshd OR # service sshd restart
以上です。上記の手順を使用してリモートSSHおよびSFTPサーバーにログインして確認できます。SSHおよびSFTPログインの確認。
この方法ではシェルアクセスが無効になることに注意してください。つまり、SSHを使用してリモートシステムのシェルセッションにアクセスすることはできません。ローカルシステムとリモートシステム間でのファイルの転送を行うためにのみ、リモートシステムにアクセスできます。
結論
今、LinuxでChroot環境を使用してユーザーのホームディレクトリを制限する方法を知っています。これが役立つと思ったら、この記事をソーシャルネットワークで共有して、ユーザーのホームディレクトリを制限する他の方法があるかどうかコメント欄でお知らせください。
Source:
https://www.tecmint.com/restrict-sftp-user-home-directories-using-chroot/