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

RaspberryPiでvsFTPdを使用してFTPサーバーをセットアップする

この記事では、FTPサーバーを設定する方法を説明します。 ラズベリーパイ これは、デバイス間でファイルを共有するために使用できます。 vsFTPdを使用します 非常に安定していて安全で、非常に高速なFTPサーバーです。また、SSL / TLSを使用して接続全体を暗号化するとともに、ユーザーをHOMEディレクトリに制限するようにvsFTPdを構成する方法についても説明します。

この資料をフォローする場合は、RaspberryPiOSがRaspberryPiにインストールされている必要があります。 FTPサーバーの実行にはグラフィカルインターフェイスは必要ないため、SSHサービスを有効にしてリモートアクセスを有効にしてRaspberry PiOSLiteをインストールすることをお勧めします。

Instalar o vsFTPd no Raspberry Pi

vsftpdパッケージは、公式のRaspberry Pi OSリポジトリから入手できるため、次のコマンドでインストールできます。

sudo apt update
sudo apt install vsftpd

インストール後、FTPサーバーサービスが自動的に開始されます。このサービスのステータスを確認するには、次を実行します。

sudo systemctl status vsftpd

このコマンドからの戻り値は、「アクティブ:アクティブ(実行中)以降…」のようになります。

vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-05-23 07:02:41 BST; 14s ago
...

CentOS8からRockyLinux8 / AlmaLinux8に移行する方法

vsFTPdを使用してFTPサーバーを構成する

vsFTPdの構成は、ファイル /etc/vsftpd.confを介して行われます。 。

ほとんどの設定は、構成ファイルに英語で十分に文書化されています。利用可能なすべてのオプションを評価する場合は、公式Webサイト(VSFTPD.CONFのマンページ

)をお勧めします。

1。 FTPサーバーアクセス

ローカルオペレーティングシステムのユーザーのみがFTPサーバーにアクセスできるようにするには、構成ファイルでanonymous_enableエントリとlocal_enableエントリを探し、次のように残します。

anonymous_enable=NO
local_enable=YES

2。アップロードを有効にする

write_enable設定を見つけてコメントを外し、ファイルシステムの変更を許可して、ユーザーがファイルをアップロードおよび削除できるようにします。

write_enable=YES

3。 Chrootケージ

FTPユーザーがホームフォルダ外のファイルにアクセスできないようにするには、chroot jailを作成し、設定のコメントを解除する必要があります chroot_local_user

chroot_local_user=YES

chroot機能が有効になっている場合、ユーザーディレクトリがロックされていると、vsFTPdはファイルのアップロードを無効にします。

以下のオプションのいずれかを使用して、chrootされた環境を書き込みモードのままにします。

オプション1-ファイルのアップロードを有効にし、chrootをアクティブのままにして、FTPディレクトリを構成するための推奨される方法。次の例では、ユーザーのホームフォルダ内にftpディレクトリを作成します。このディレクトリは、chrootが使用するフォルダとして機能し、ファイルをそのフォルダにアップロードできるようにします。

user_sub_token=$USER
local_root=/home/$USER/ftp

オプション2–別の方法は、vsftpd.confファイルにallow_writeable_chroot設定を追加することです。このオプションを使用すると、ユーザーのホームフォルダに書き込むオプションが有効になります。

allow_writeable_chroot=YES

4。 FTPサーバーでのパッシブ接続

デフォルトでは、vsFTPdはアクティブモードを使用します。パッシブモードを使用するには、使用するポートの最小範囲と最大範囲を設定します。

pasv_min_port=30000
pasv_max_port=31000

vsFTPdは、パッシブモードで任意のポートを使用できます。パッシブモードが有効になっている場合、FTPクライアントは、FTPサーバーに接続するときに、構成ファイルで設定した間隔でランダムポートで接続を開きます。

5。ログインを特定のユーザーに制限する

少数のユーザーのみがログインできるようにvsFTPdを構成できます。この構成を実行するには、設定ファイルに次の行を追加します。

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO


この設定を有効にした場合、ログインできるユーザーを指定し、/ etc / vsftpd.user_listファイルにユーザー名を追加して、1行に1人のユーザーを追加する必要があります。

6。 SSL/TLSによる安全な送信

FTP送信をSSL/TLSで暗号化するには、SSL証明書を取得し、それを使用するようにFTPサーバーを構成する必要があります。認定された発行者によって署名された既存のSSL証明書を使用することも、自己署名証明書を作成することもできます。

FTPサーバーのIPを指すドメインまたはサブドメインがある場合は、Let’sEncryptを使用して無料のSSL証明書を生成できます。これまでに使用したことがない場合は、公式ドキュメントに従ってください:はじめに–暗号化しましょう–無料のSSL/TLS証明書

この記事では、opensslコマンドを使用して自己署名キーを生成します。

以下のコマンドを実行して、10年間有効な2048ビットの自己署名付き10年秘密鍵(証明書)を作成します。公開鍵と秘密鍵は同じファイルに保存されます。

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

キーを作成したら、vsFTPd設定ファイルをもう一度開きます。

sudo nano /etc/vsftpd.conf

値をpemファイルに変更してrsa_cert_fileとrsa_private_key_fileの設定を見つけ、ssl_enable設定をYESに設定します。

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

これらの設定が正しく構成されていない場合、FTPサーバーはTLSのみを使用して接続を保護します。

再起動またはFTPサーバー

上記の設定を実行すると、vsFTPd設定ファイルは次のようになります(コメントなし):

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

ファイルを保存し、vsFTPdサービスを再起動して、このファイルへの変更を有効にします。

sudo systemctl restart vsftpd

ファイアウォールを開く

ディストリビューションでUFWファイアウォールを使用する場合は、次のコマンドを使用して、FTPトラフィックを解放し、ポート20(FTPデータ)、21(FTPコマンド)、および30000-31000(パッシブモードポート)を開く必要があります。

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

次に、UFWルールを読み直し、それらを無効にしてから再度有効にします。

sudo ufw disable
sudo ufw enable

FTPのユーザーを作成する

FTPサーバーをテストするために、ユーザーを作成します。

  • 使用するユーザーが既にいて、そのユーザーにアクセス権を付与したい場合は、最初の手順をスキップしてください。
  • 構成ファイルでallow_writeable_chroot=YESを設定している場合は、3番目の手順をスキップしてください。

01. novouserftpというユーザーを作成します:

sudo adduser novouserftp

プロンプトが表示されたら、ユーザーのパスワードを設定します。

02.FTPサーバーを使用できるユーザーのリストにユーザーを追加します。

echo "novouserftp" | sudo tee -a /etc/vsftpd.user_list

03. FTPディレクトリを作成し、正しい権限を設定します。

sudo mkdir -p /home/novouserftp/ftp/upload
sudo chmod 550 /home/novouserftp/ftp
sudo chmod 750 /home/novouserftp/ftp/upload
sudo chown -R novouserftp: / home / novouserftp / ftp

前に説明したように、ユーザーはホームディレクトリのftp/uploadフォルダにファイルをアップロードできます。

この時点で、FTPサーバーは完全に機能しており、FileZillaなどのFTPクライアントを使用して接続できます。

シェルアクセスを無効にする

デフォルトでは、ユーザーが作成されたときに追加の構成が行われない場合、このユーザーはサーバーへのSSHアクセスを持ちます。このアクセスを無効にするには、このアカウントがFTPアクセスのみに制限されていることをユーザーに通知するメッセージを表示するだけの新しいシェルを作成します。

シェルを作成します/bin / ftponly 実行可能にします。

echo -e '#!/bin/sh echo "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly

ファイル/etc / shells内の有効なシェルのリストに新しいシェルを追加します :

echo "/bin/ftponly" | sudo tee -a /etc/shells

作成したユーザーシェルを/bin/ ftponlyに変更します:

sudo usermod novouserftp -s / bin / ftponly

FTPサーバーにのみアクセスできるすべてのユーザーに対してこの最後のコマンドを使用します。

結論

RaspberryPiシステムに高速で安全なFTPサーバーをインストールして構成する方法が明確になっていることを願っています。


Linux
  1. VSFTPDを使用してRockyLinux8にFTPサーバーをインストールする方法

  2. Easy vsFTPD – Debian8Jessie上の仮想ユーザーを備えたFTPサーバー

  3. vsftpd の chroot_local_user が安全でないのはなぜですか?

  1. RaspberryPiでLinuxを学ぶ

  2. VSFTPDを使用してCentOS7にFTPサーバーをインストールする方法

  3. vsftpdを使用してUbuntuにFTPサーバーをインストールする方法

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

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

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