Linuxデータセンターサーバーで、ユーザーがSFTP経由でファイルを送受信する必要がある場合は、chroot jailによるシステムのセキュリティ保護を検討することをお勧めします。これにより、SFTPを使用する必要があるユーザーは特定のディレクトリに閉じ込められ、サーバーのディレクトリ構造にアクセスできなくなります。
どうやってやるんですか?chroot jailを使います。やり方を説明しましょう。
参照: Windows 10 セキュリティ: ビジネス リーダー向けガイド (Tech Pro Research)
必要なもの
必要なのは、稼働中のLinuxサーバーとsudo権限を持つユーザーだけです。これで準備完了です。
新しいグループを作成する
まず最初に、SFTPユーザー用の新しいグループを作成します。ターミナルウィンドウを開き、次のコマンドを実行します。
sudo groupadd sftponly
ユーザーの追加と変更
次に、この新しいグループにユーザーを追加する必要があります。新しいユーザーを作成してグループに追加する必要がある場合は、useraddコマンドを使用して次のように実行できます。
sudo useradd -g sftponly -s /bin/false -m -d /home/USERNAME USERNAME
ここで、USERNAME は追加するユーザーの名前です。
上記のコマンドは、ユーザーのシェルとして/bin/falseを割り当てるため、SSH経由でのログインを不可能にします。新しいユーザーを追加したら、次のコマンドでパスワードを設定してください。
sudo passwd USERNAME
ここで、USERNAME は追加したユーザーの名前です。
グループに追加したいユーザーがすでにいる場合は、次のコマンドで追加できます。
sudo usermod -aG sftponly -s /bin/false USERNAME
USERNAME は追加するユーザーで、シェルが変更されます。ただし、ユーザーがSSHログインを必要とする場合、変更後はSSHログインができなくなりますのでご注意ください。その場合は、SFTP専用の新しいユーザーを作成することを検討してください。
ユーザーのホームディレクトリの権限を変更する必要があります。これを行うには、以下のコマンドを実行します。
sudo chown root: /home/USERNAME
sudo chmod 755 /home/USERNAME
ユーザーのディレクトリがrootの所有になったため、ファイルやディレクトリを作成できなくなります。これを回避し(ファイルのアップロードとダウンロードを可能にするため)、以下のコマンドで、ユーザーがアクセスできる新しいサブディレクトリを(ホームディレクトリ内に)作成してください。
sudo mkdir /home/USERNAME/{ftp_up,ftp_down}
sudo chmod 755 /home/USERNAME/{ftp_up,ftp_down}
sudo chown USERNAME:sftponly /home/USERNAME/{ftp_up,ftp_down}
注: ftp_up と ftp_down には任意の名前を付けることができます。
SSHの設定
次にSSHを設定する必要があります。以下のコマンドを実行します。
sudo nano /etc/ssh/sshd_config
そのファイルで、次の行を探します。
Subsystem sftp /usr/lib/openssh/sftp-server
その行を次のように変更します。
Subsystem sftp internal-sftp
ファイルの一番下までスクロールして、次の内容を追加します。
Match Group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
ファイルを保存して閉じます。以下のコマンドでSSHデーモンを再起動します。
sudo systemctl restart sshd
テスト
これで、新しい設定を実際にテストできます。新しく作成したユーザー(または既存のユーザー)のいずれかで次のコマンドを使用してログインします。
sftp USERNAME@SERVER_IP
ここで、USERNAMEはユーザー名、SERVER_IPはホスティングサーバーのIPアドレスです。認証に成功したら、pwdコマンドを実行して現在の作業ディレクトリを確認します。/(図A)が表示され、そのユーザーはそのディレクトリ外のいかなる場所へのアクセスも許可されません。
次に、 ls コマンドを発行して、ユーザーがアクセスできる新しく作成されたディレクトリを確認します (図 B )。
これで完了です。これで、ユーザーが特定のディレクトリにのみアクセスできるようにするSFTPの設定が完了しました。そのサーバー上でSFTPを使用する必要があるすべてのユーザーをロックダウンすれば、準備完了です。