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

Debian10でChrootを使用してSFTPサーバーを構成する方法

SFTP Secure File Transfer Protocol / SSH File Transfer Protocolの略で、ローカルシステムからリモートサーバーへ、またはその逆にssh経由でファイルを安全に転送するために使用される最も一般的な方法の1つです。 sftpの主な利点は、「 openssh-server」以外の追加パッケージをインストールする必要がないことです。 」、ほとんどのLinuxディストリビューションでは、「openssh-server」パッケージがデフォルトのインストールの一部です。 sftpのその他の利点は、ユーザーがsshではなくsftpのみを使用できるようにすることです。

最近、Debian 10、コードネーム「Buster」がリリースされました。この記事では、Debian10システムでChroot「Jail」のような環境でsftpを構成する方法を示します。ここで、Chroot Jailのような環境とは、ユーザーがそれぞれのホームディレクトリを超えたり、ホームディレクトリからディレクトリを変更したりできないことを意味します。ラボの詳細は次のとおりです。

  • OS =Debian 10
  • IPアドレス=192.168.56.151

SFTP構成の手順に進みましょう

ステップ:1)groupaddコマンドを使用してsftpのグループを作成します

ターミナルを開き、「 sftp_users」という名前のグループを作成します 」以下のgroupaddコマンドを使用して

[email protected]:~# groupadd sftp_users

手順:2)ユーザーをグループ「sftp_users」に追加し、権限を設定します

新しいユーザーを作成し、そのユーザーを「sftp_users」グループに追加する場合は、次のコマンドを実行します。

構文: #useradd -m -G sftp_users

ユーザー名が「ジョナサン」だとします

[email protected]:~# useradd -m -G sftp_users jonathan

次のchpasswdコマンドを使用してパスワードを設定します

[email protected]:~# echo "jonathan:<enter_password>" | chpasswd

既存のユーザーを「sftp_users」グループに追加してからusermodコマンドの下で実行する場合は、既存のユーザー名が「chris」であると仮定します。

[email protected]:~# usermod -G sftp_users chris

次に、ユーザーに必要な権限を設定します。

[email protected]:~# chown root /home/jonathan /home/chris/

ユーザーのホームディレクトリと正しい所有権の両方にアップロードフォルダを作成します。

[email protected]:~# mkdir /home/jonathan/upload
[email protected]:~# mkdir /home/chris/upload
[email protected]:~# chown jonathan /home/jonathan/upload
[email protected]:~# chown chris /home/chris/upload

注: JonathanやChrisのようなユーザーは、ファイルやディレクトリをアップロードして、ローカルシステムからフォルダをアップロードできます。

手順:3)sftp構成ファイル(/ etc / ssh / sshd_config)を編集します

sftp操作はsshを介して実行されることをすでに述べたように、その構成ファイルは「 / etc / ssh / sshd_config 」です。 「、変更を加える前に、まずバックアップを取り、次にこのファイルを編集して、次のコンテンツを追加することをお勧めします。

[email protected]:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config-org
[email protected]:~# vim /etc/ssh/sshd_config
………
#Subsystem      sftp    /usr/lib/openssh/sftp-server
Subsystem       sftp    internal-sftp

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory %h
  ForceCommand internal-sftp
…………

ファイルを保存して終了します。

上記の変更を有効にするには、次のsystemctlコマンドを使用してsshサービスを再起動します

[email protected]:~# systemctl restart sshd

上記の「sshd_config」ファイルでは、「Subsystem」で始まる行をコメントアウトし、新しいエントリ「Subsystemsftpinternal-sftp」と次のような新しい行を追加しました。

MatchGroupsftp_users」 –>これは、ユーザーが「sftp_users」グループの一部である場合、このエントリに以下に記載されているルールを適用することを意味します。

ChrootDierctory%h 」–>これは、ユーザーがそれぞれのホームディレクトリ内のディレクトリのみを変更できること、ホームディレクトリを超えることはできないこと、つまり、ユーザーがディレクトリを変更することを許可されていないことを意味します。他のユーザーやシステムのディレクトリにはアクセスしないでください。

ForceCommandinternal-sftp 」–>これは、ユーザーがsftpコマンドのみに制限されていることを意味します。

ステップ:4)sftpのテストと検証

sftpサーバーと同じネットワーク上にある他のLinuxシステムにログインし、「sftp_users」グループにマップしたユーザーを介してsshsftpサーバーを試してください。

[[email protected] ~]# ssh [email protected]
[email protected]'s password:
Write failed: Broken pipe
[[email protected] ~]# ssh [email protected]
[email protected]'s password:
Write failed: Broken pipe
[[email protected] ~]#

上記は、ユーザーがSSHを許可されていないことを確認しています。次に、次のコマンドを使用してsftpを試してください。

[[email protected] ~]# sftp [email protected]
[email protected]'s password:
Connected to 192.168.56.151.
sftp> ls -l
drwxr-xr-x    2 root     1001         4096 Sep 14 07:52 debian10-pkgs
-rw-r--r--    1 root     1001          155 Sep 14 07:52 devops-actions.txt
drwxr-xr-x    2 1001     1002         4096 Sep 14 08:29 upload

sftp‘ getを使用してファイルをダウンロードしてみましょう ‘コマンド

sftp> get devops-actions.txt
Fetching /devops-actions.txt to devops-actions.txt
/devops-actions.txt                                                                               100%  155     0.2KB/s   00:00
sftp>
sftp> cd /etc
Couldn't stat remote file: No such file or directory
sftp> cd /root
Couldn't stat remote file: No such file or directory
sftp>

上記の出力は、sftpサーバーからローカルマシンにファイルをダウンロードできることを確認し、これとは別に、ユーザーがディレクトリを変更できないこともテストしました。

アップロード」の下にファイルをアップロードしてみましょう 」フォルダ、

sftp> cd upload/
sftp> put metricbeat-7.3.1-amd64.deb
Uploading metricbeat-7.3.1-amd64.deb to /upload/metricbeat-7.3.1-amd64.deb
metricbeat-7.3.1-amd64.deb                                                                        100%   38MB  38.4MB/s   00:01
sftp> ls -l
-rw-r--r--    1 1001     1002     40275654 Sep 14 09:18 metricbeat-7.3.1-amd64.deb
sftp>

これにより、ローカルシステムからsftpサーバーにファイルが正常にアップロードされたことを確認できます。

次に、winscpツールを使用してSFTPサーバーをテストし、ユーザーの資格情報に沿ってsftpサーバーのIPアドレスを入力します。

[ログイン]をクリックして、ファイルのダウンロードとアップロードを試してください

次に、アップロードフォルダにファイルをアップロードしてみます

上のウィンドウは、アップロードも正常に機能していることを確認しています。これはすべてこの記事からのものです。これらの手順がDebian10でchroot環境を使用してSFTPサーバーを構成するのに役立つ場合は、フィードバックとコメントを共有してください。


Debian
  1. Debian11サーバーでSFTPサーバーをセットアップする方法

  2. Debian9でCSFを使用してファイアウォールを構成する方法

  3. Debian9でUFWを使用してファイアウォールを設定する方法

  1. Debian9にVNCをインストールして設定する方法

  2. Debian9でVSFTPDを使用してFTPサーバーをセットアップする方法

  3. LinuxでChrootSFTPサーバーを構成する方法

  1. Debian 9 /Ubuntu16.04サーバーにForeman1.16をインストールして設定する方法

  2. Debian 9 /Ubuntu16.04サーバーでHAProxyを設定する方法

  3. Debian 10(Buster)にKVMをインストールして設定する方法