アンドロイド

sftp chroot jailのセットアップ方法

Setup SSH and SFTP server with chroot jail

Setup SSH and SFTP server with chroot jail

目次:

Anonim

このチュートリアルでは、ユーザーをホームディレクトリに制限する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 で始まる行を検索します。通常はファイルの最後にあります。 行がハッシュ # 始まる場合、ハッシュ # 削除し、次のように変更します。

/ etc / ssh / sshd_config

Subsystem sftp internal-sftp

ファイルの終わりに向かって、次の設定ブロック:

/ etc / ssh / sshd_config

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 です。

sudo systemctl restart 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 コマンドを使用してリモートファイルとディレクトリを一覧表示することもできます。以前に作成したディレクトリが表示されます。

sftp> ls public_html uploads

結論

このチュートリアルでは、LinuxサーバーでSFTP Chroot Jail環境をセットアップし、ユーザーのホームディレクトリへのユーザーアクセスを制限する方法を学習しました。

デフォルトでは、SSHはポート22でリッスンします。デフォルトのSSHポートを変更すると、自動化された攻撃のリスクが軽減され、サーバーのセキュリティがさらに強化されます。 SSHキーベースの認証を設定し、パスワードを入力せずにサーバーに接続することもできます。

ssh sftpセキュリティ