この記事では、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サーバーをインストールして構成する方法が明確になっていることを願っています。