SFTP(SSHファイル転送プロトコル)は、暗号化されたSSHトランスポートセッションを介してファイルにアクセス、管理、および転送するために使用される安全なファイルプロトコルです。セキュリティファーストは、システム管理者の経験則です。場合によっては、リモートユーザーがシステム上のファイルシステムにアクセスできるようにする必要がありますが、シェルの取得を許可したくない場合があります。これにより、セキュリティで保護されたチャネルを使用して、特定のファイルやディレクトリへのアクセスを制限できます。
このチュートリアルは、Debian 11システムでSFTPのみのアクセス(シェルアクセスなし)を設定するのに役立ちます。システム上にchroot環境を作成し、SFTPユーザーを特定のディレクトリのみに制限します。また、ユーザーへのSSHアクセスなしでSFTPのみのアクセスを許可します。
前提条件
- 実行中のDebian11BullseyeLinuxシステム
- シェルアクセス権を持つsudo特権アカウントが必要です
ステップ1–新しいユーザーを作成する
まず、sftpサーバーに接続するための新しいユーザーを作成します。次のコマンドは、 sftpuserという名前の新しいアカウントを作成します シェルアクセスなし。任意の名前または要件を使用できます。
sudo adduser --shell /bin/false sftpuser
ステップ2–SFTPアクセス用のディレクトリを作成する
sftpのユーザーを作成しました。次に、sftpのchrootとして設定するディレクトリを作成します。この例では、 / var / sftpを作成します ディレクトリ。 chrootディレクトリとして設定するには、ディレクトリにroot所有権が必要です。そのため、sftpアカウントへの書き込みアクセス権を持つサブディレクトリを/ var/sftpの下に作成します。
次のコマンドを使用してディレクトリ構造を作成します。
sudo mkdir -p /var/sftp/files
次に、ユーザーへの書き込みアクセス権を持つchrootアクセスとして構成するために、ディレクトリに適切なアクセス許可を設定する必要があります。ここで、/ var / sftpには、適切な権限を持つルート所有権とグループが必要です。その権限を設定するには、次のように入力します。
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
ここで、"files"
の権限を変更します sftpuserへの書き込みアクセスを許可するディレクトリ。その権限を設定するには、次のように入力します。
sudo chown sftpuser:sftpuser /var/sftp/files
sftpuserがサーバーに接続すると、ルートディレクトリとして/ var/sftpを取得します。彼はその外部のファイルシステムにアクセスできません。また、ユーザーは「files」ディレクトリの下でのみファイルの読み取り/書き込みを行うことができます。
ステップ3–SFTP専用のsshdを構成する
次に、SSHサーバーを構成して、「sftpuser」がシェルアクセスなしでのみサーバーをsFTPに接続できるようにする必要があります。必要な変更を加えるには、SSH構成ファイルを編集します。
sudo nano /etc/ssh/sshd_config
ファイルの最後に次の設定を追加します。
Match User sftpuser ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
すべての設定が正しいことを再確認してください。次に、変更を保存し、SSHサービスを再起動して変更を適用します。
sudo systemctl restart ssh
これで、DebianシステムでSFTPのみの使用が正常に作成されました。次に、新しいユーザーの資格情報を使用してリモートシステムにログインし、すべてが正しく機能しているかどうかを確認します。
ステップ4–SFTPに接続する
コマンドラインまたはFilezillaやWinSCPなどのグラフィカルアプリケーションを使用して、リモートSFTPサーバーに接続できます。このチュートリアルでは、SFTPサーバーに接続する両方の方法を紹介します。
Linuxユーザーは、sftpコマンドラインユーティリティを使用して、リモートのsftpインスタンスに接続できます。
sftp [email protected]
[email protected]'s password:
sftp>
GUIインターフェイスまたはWindowsユーザーは、グラフィカルsftpクライアントを使用できます。たとえば、Filezillaクライアントを使用して、リモートシステム上のリモートsftpのみのアカウントに接続します。
シェルアクセスがないことを確認します:
このアカウントはSFTPのみの接続用に構成されているため。したがって、SSH経由で接続しようとしたユーザーは、認証が成功するとすぐに切断されます。ユーザーには以下のメッセージが表示されます:
ssh [email protected]
[email protected]'s password:
This service allows sftp connections only.
Connection to sftp.tecadmin.net closed.
結論
このハウツーガイドでは、サーバーへのシェルアクセスなしでSFTPユーザー用のchrootjail環境を作成する方法を学びました。 Chroot環境は、ユーザーが定義されたディレクトリ外のファイルにアクセスできないようにすることで、ファイルシステムを保護します。このチュートリアルはDebian11Bullseyeシステムで作成およびテストされていますが、これは他のDebianバージョンでも機能します。