GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでChrootされたSFTPをセットアップする方法

このガイドでは、SSHユーザーのホームディレクトリまたは特定のディレクトリへのアクセスを制限するために、LinuxでChrootedSFTPを設定する方法について説明します。つまり、ユーザーを特定のディレクトリに移動させ、シェルを/bin/nologin または、sshログインへのアクセスを拒否するその他のシェル。 chrootされたSFTPが設定されると、ユーザーは割り当てられたホームディレクトリにのみアクセスでき、ファイルシステム全体にはアクセスできません

chrootされたSFTPアクセスを有効にすると、次の利点があります。

  • ユーザーにSFTPのみを介した接続を許可しますが、SSHを介した接続は許可しません。
  • SSHユーザーセッションをホームディレクトリまたは選択した特定のディレクトリに制限します。
  • SSHアクセスを特定のユーザーに制限し、ローカルシステムとリモートシステム間でファイルを転送できるようにします。
  • ファイルシステム全体へのユーザーアクセスを拒否します。

それでは、先に進んでChrooted SFTPをセットアップし、SSHユーザーをホームディレクトリやLinuxのChrootedjailを含むその他のディレクトリに制限しましょう。

このガイドは、Debian 11ブルズアイ、Ubuntu 20.04 LTS、およびUbuntu18.04LTSディストリビューションで公式にテストされています。ただし、以下の手順は、 openSSHをサポートするすべてのLinuxディストリビューションで機能するはずです。 。

LinuxでのChrootされたSFTPのセットアップ

バージョン4.9以降、openSSHにはinternal-sftpサブシステムと呼ばれる機能があります。 これはSFTPアクセスのみを許可し、SSHアクセスは許可しません。そのため、ユーザーはサーバーからのデータにのみアクセスできますが、SSHを使用してアクセスすることはできません。

Chrootされたディレクトリを作成する

まず、コマンドを使用してchrootされたディレクトリを作成します:

$ sudo mkdir /sftp

このディレクトリをrootが完全に所有するようにします コマンドを使用するユーザー:

$ sudo chown root:root /sftp/

このディレクトリの下に、 /sftp/user1のように、ユーザーごとに個別のディレクトリを作成します /sftp/user2 、および /sftp/user3 など。

このガイドの目的のために、 ostechnixというディレクトリを作成します。 /sftpの下 ディレクトリ。

$ sudo mkdir /sftp/ostechnix

これは、ユーザーがデータを保存できるディレクトリです。また、ユーザーはこのディレクトリを超えることはできません。それは彼らの$HOMEのようなものです ディレクトリ。

sftpグループを作成し、そのグループにユーザーを割り当てます

次に、SFTPのchrootされたディレクトリにアクセスできるようにするユーザーを作成する必要があります。

sftponlyというグループを作成します 次のコマンドに示すように:

$ sudo groupadd sftponly

次に、新しいSFTPユーザーを作成するか、既存のユーザーを"sftponly"に割り当てます。 以下に示すようにグループ化します。

新しいユーザーを作成しましょう。たとえば、 senthil 、そして彼を"sftponly"に割り当てます グループ。次に、ホームディレクトリを /sftp/ostechnixとして設定します。 デフォルトのシェルは/sbin/nologin

これは、次のオンラインコマンドを使用して実行できます。

$ sudo useradd -g sftponly -d /ostechnix -s /sbin/nologin senthil

次のコマンドを使用して、新しく作成したユーザーのパスワードを設定します:

$ sudo passwd senthil

既存のユーザーを変更するには、"usermod"を使用します "useradd"の代わりに 以下のようなコマンド:

$ sudo usermod -g sftponly -d /ostechnix -s /sbin/nologin senthil

chrootされたディレクトリに適切な権限を割り当てます

以下のようにHOMEディレクトリにアクセスするには、SFTPユーザーに適切な権限を割り当てる必要があります。

$ sudo chown senthil:sftponly /sftp/ostechnix
$ sudo chmod 700 /sftp/ostechnix/

他のSFTPユーザーはこのディレクトリにアクセスできません。

同様に、他のすべてのSFTPユーザーにも適切なアクセス許可を割り当てます。

推奨ダウンロード -無料の電子書籍:「5日間でLinuxを学ぶ」

ChrootedSFTPの構成

/etc/ssh/sshd_configを編集します ファイル:

$ sudo vi /etc/ssh/sshd_config

次の行を見つけてコメントアウトします(つまり、コメントアウトするには、その前にアスタリスク#を追加します)。

#Subsystem       sftp    /usr/libexec/openssh/sftp-server

一部のディストリビューションでは、たとえば Ubuntu 18.04 LTS 、次の行を見つけてコメントします:

#Subsystem sftp /usr/lib/openssh/sftp-server

次に、ファイルの最後に次の行を追加します。

Subsystem       sftp    internal-sftp
Match group sftponly
     ChrootDirectory /sftp/
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp

chrootされたSFTPを構成する

ユーザーを$HOMEに制限する場合 ディレクトリ、/sftpを置き換えるだけです /homeを使用 上記のコードで。 sftpディレクトリの正しいパスを指定していることを確認してください。 ESCを押して、 :wqと入力します ファイルを保存して終了します。

sshを再起動します 変更を更新するサービス。

$ sudo systemctl restart sshd

次に、sftpユーザー(この場合はsenthil)を使用して、ネットワーク上の他のシステムからこのシステムにSSHで接続してみます。

$ ssh [email protected]1

次のエラーメッセージが表示されます。

[email protected]'s password: 
This service allows sftp connections only.
Connection to 192.168.122.181 closed.

ここでは、 192.168.122.181 は、SFTPを構成したリモートDebianシステムのIPアドレスです。

sftpを使用してのみリモートシステムにアクセスできます 以下に示すように。

$ sftp [email protected]
[email protected]'s password: 
Connected to 192.168.43.2.
sftp>

見る?ユーザー「senthil」はsftp経由で接続できますが、ssh経由では接続できません。

現在の作業ディレクトリを知るには、'pwd'を使用します コマンド:

sftp> pwd
Remote working directory: /ostechnix
sftp>

LinuxでchrootされたSFTPをセットアップする

基本的なSFTPコマンド

-pを使用して代替ポートを使用して接続できます フラグ。

$ sftp -P <port_number> [email protected]_host

リモートファイルをローカルシステムに転送するには、次の手順を実行します。

sftp> get /path/remote_file

次のコマンドを使用して、ローカルファイルをリモートシステムに転送できます:

sftp> put /path/local_file

リモートフォルダをローカルシステムに再帰的に転送するには:

sftp> get -R /path/remote_folder

ローカルマシン上のファイルのリストを表示するには:

sftp> lls

リモートマシン上のファイルのリストを表示するには:

sftp> ls

sftpの使用法の詳細については、manページを参照してください。

$ man sftp

結論

このガイドでは、DebianやUbuntuなどのLinuxオペレーティングシステムでchrootされたSFTPを構成およびセットアップする方法について説明しました。

推奨される読み物:

  • FTPのデフォルトポートをカスタムポートに変更する方法
  • UbuntuにVSFTPDサーバーをインストールする
  • UbuntuでTLS/SSL暗号化を使用した安全なVSFTPDサーバー
  • CentOSでFTPサーバーを段階的にセットアップする
  • FTP_Manager:CentOSにFTPサーバーをインストールして管理するためのシンプルなスクリプト

Linux
  1. LinuxでsFTPを使用してファイル/ディレクトリをアップロードまたはダウンロードする方法

  2. Linuxでディレクトリの名前を変更する方法

  3. Linux で Chroot SFTP をセットアップする方法 (SSH ではなく SFTP のみを許可する)

  1. Linuxシンボリックリンクを更新する方法

  2. Linuxでディレクトリサイズを取得する方法

  3. Linux でパスワードなしの SSH ログインをセットアップする方法

  1. Linuxのchrootjailを設定する方法

  2. Sftpで共有ディレクトリにアクセスできるようにする方法は?

  3. Linuxでディレクトリをgzipで圧縮する方法