SFTPアクセスを特定のディレクトリパスに制限する方法


  1. chrootを使用する方法: chrootは、ユーザーを特定のディレクトリ以下に制限するための一般的な手法です。以下は、chrootを使用してSFTPアクセスを特定のディレクトリパスに制限する例です。

    # /etc/ssh/sshd_config ファイルを編集する
    Subsystem sftp internal-sftp
    Match Group sftpusers
    ChrootDirectory /path/to/directory
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

    上記の例では、ChrootDirectory ディレクティブを使用して /path/to/directory にアクセスを制限しています。Match Group ディレクティブを使用して、特定のグループ(例: sftpusers)に属するユーザーにのみ制限を適用します。

  2. 許可リストを使用する方法: 制限をかけるディレクトリパスの許可リストを作成し、それ以外のディレクトリへのアクセスを拒否する方法もあります。以下は、許可リストを使用してSFTPアクセスを制限する例です。

    # /etc/ssh/sshd_config ファイルを編集する
    Subsystem sftp internal-sftp
    Match Group sftpusers
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no
    AuthorizedKeysFile /etc/ssh/sftp_allowlist/%u
    # /etc/ssh/sftp_allowlist/ ディレクトリに許可リストを作成する
    # 例: /etc/ssh/sftp_allowlist/user1
    /path/to/directory

    上記の例では、AuthorizedKeysFile ディレクティブを使用して許可リストのディレクトリパスを指定しています。Match Group ディレクティブを使用して、特定のグループに属するユーザーにのみ制限を適用します。

  3. パーミッションを使用する方法: 制限をかけるディレクトリパスのパーミッションを設定することで、アクセスを制限することも可能です。以下は、パーミッションを使用してSFTPアクセスを制限する例です。

    # 制限をかけるディレクトリ以下のパーミッションを設定する
    chmod 700 /path/to/directory

    上記の例では、chmod コマンドを使用してディレクトリのパーミッションを 700 に設定し、所有者以外のユーザーからのアクセスを制限しています。

上記の方法を使用することで、SFTPアクセスを特定のディレクトリパスに制限することができます。適切な方法を選択し、セキュリティ要件に合わせて設定してください。