Setup SSH and SFTP server with chroot jail
目次:
このチュートリアルでは、ユーザーをホームディレクトリに制限するSFTP Chroot Jail環境をセットアップする方法を説明します。 ユーザーにはSFTPアクセスのみが許可され、SSHアクセスは無効になります。 これらの手順は、Ubuntu、CentOS、Debian、Fedoraなどの最新のLinuxディストリビューションで機能します。
SFTPグループの作成
ユーザーごとにOpenSSHサーバーを個別に構成する代わりに、新しいグループを作成し、このグループにすべてのchrootユーザーを追加します。
次の
groupadd
コマンドを実行して、
sftponly
ユーザーグループを作成します。
sudo groupadd sftponly
必要に応じてグループに名前を付けることができます。
SFTPグループへのユーザーの追加
次のステップは、制限したいユーザーを
sftponly
グループに追加することです。
これが新しいセットアップであり、ユーザーが存在しない場合は、次のように入力して新しいユーザーアカウントを作成できます。
sudo useradd -g sftponly -s /bin/false -m -d /home/username username
-
-g sftponly
オプションは、ユーザーをsftponlyグループに追加します。--s /bin/false
オプションは、ユーザーのログインシェルを設定します。 ログインシェルを/bin/false
に設定すると、ユーザーはSSH経由でサーバーにログインできなくなります。--m -d /home/username
オプションは、useraddにユーザーのホームディレクトリを作成するように指示します。
新しく作成したユーザーに強力なパスワードを設定します。
sudo passwd username
それ以外の場合、制限したいユーザーが既に存在する場合、そのユーザーを
sftponly
グループに追加し、ユーザーのシェルを変更します。
sudo usermod -G sftponly -s /bin/false username2
ユーザーのホームディレクトリはルートが所有し、
755
アクセス許可が必要です。
sudo chown root: /home/username
sudo chmod 755 /home/username
ユーザーのホームディレクトリはルートユーザーが所有しているため、これらのユーザーはホームディレクトリにファイルやディレクトリを作成できません。 ユーザーのホームにディレクトリがない場合は、ユーザーがフルアクセスできる新しいディレクトリを作成する必要があります。 たとえば、次のディレクトリを作成できます。
sudo mkdir /home/username/{public_html, uploads}
sudo chmod 755 /home/username/{public_html, uploads}
sudo chown username:sftponly /home/username/{public_html, uploads}
Webアプリケーションがユーザーの
public_html
ディレクトリをドキュメントルートとして使用している場合、これらの変更により権限の問題が発生する可能性があります。 たとえば、WordPressを実行している場合、ファイルを所有するユーザーとして実行するPHPプールを作成し、
sftponly
グループに追加する必要があります。
SSHの構成
SFTPはSSHのサブシステムであり、すべてのSSH認証メカニズムをサポートしています。
テキストエディタでSSH設定ファイル
/etc/ssh/sshd_config
を
/etc/ssh/sshd_config
ます。
sudo nano /etc/ssh/sshd_config
Subsystem sftp
で始まる行を検索します。通常はファイルの最後にあります。 行がハッシュ
#
始まる場合、ハッシュ
#
削除し、次のように変更します。
Subsystem sftp internal-sftp
ファイルの終わりに向かって、次の設定ブロック:
Match Group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
ChrootDirectory
ディレクティブは、chrootディレクトリへのパスを指定します。
%h
はユーザーのホームディレクトリを意味します。 このディレクトリは、ルートユーザーが所有し、他のユーザーまたはグループが書き込み可能ではない必要があります。
SSH構成ファイルを変更するときは、特に注意してください。 誤った構成により、SSHサービスの開始に失敗する場合があります。
完了したら、ファイルを保存し、SSHサービスを再起動して変更を適用します。
sudo systemctl restart ssh
CentOSおよびFedoraでは、sshサービスの名前は
sshd
です。
構成のテスト
SFTP chrootを構成したので、chrootされたユーザーの資格情報を使用して、SFTPを介してリモートマシンへのログインを試みることができます。 ほとんどの場合、FileZillaなどのデスクトップSFTPクライアントを使用しますが、この例では、sftpコマンドを使用します。
sftpコマンドの後にリモートサーバーのユーザー名とサーバーのIPアドレスまたはドメイン名を指定して、SFTP接続を開きます。
sftp [email protected]
ユーザーパスワードの入力を求められます。 接続されると、リモートサーバーは確認メッセージと
sftp>
プロンプトを表示します。
[email protected]'s password: sftp>
以下に示すように
pwd
コマンドを実行します。すべてが期待どおりに機能している場合、コマンドは
/
を返します。
sftp> pwd Remote working directory: /
ls
コマンドを使用してリモートファイルとディレクトリを一覧表示することもできます。以前に作成したディレクトリが表示されます。
結論
このチュートリアルでは、LinuxサーバーでSFTP Chroot Jail環境をセットアップし、ユーザーのホームディレクトリへのユーザーアクセスを制限する方法を学習しました。
デフォルトでは、SSHはポート22でリッスンします。デフォルトのSSHポートを変更すると、自動化された攻撃のリスクが軽減され、サーバーのセキュリティがさらに強化されます。 SSHキーベースの認証を設定し、パスワードを入力せずにサーバーに接続することもできます。
ssh sftpセキュリティCyberduckは安全なFTP、SFTP、 WebDAV、Googleドライブ、Amazon S3、Backblaze B2、Azure、OpenStack Windows PC用のSwiftクライアントブラウザ、管理されていないホスティングユーザーの場合

自己ホスティングWebサイトを持ち、ファイルをコンピュータにアップロードまたはダウンロードしたい場合は、 2つのことをする。まず、cPanelを直接開いて、アーカイブを作成してダウンロードすることができます。または、FTPクライアントを使用してすべてのファイルをダウンロードできます。第1の方法はあらゆるタイプのホスティングには適用できませんが、第2の方法は、マネージド、セミ管理、アンマネージドホスティングなどのホスティングにも利用できます。 FileZillaは一般的な無料のFTPクライアントですが、