ファイル転送プロトコルまたはFTPは非常に古く、最もよく知られているネットワークプロトコルの1つです。最近のSFTPやSCPと比較すると安全ではありませんが、サーバーとクライアント間でファイルを転送するための多くのユーザーの最初の選択肢です。 FTPは、暗号化を行わずにユーザーの資格情報とともにデータを転送するため、安全ではないことで知られています。
FTPD、VSFTPD、PROFTPD、pureftpdなどのオープンソースFTPサーバーが現在利用可能です。それらすべての中で、VSFTPDは、2つのシステム間でファイルを転送するための非常に安全で高速な、最も広く使用されているプロトコルです。
VSFTPDは、SSLをサポートする「非常に安全なファイル転送プロトコルデーモン」としても知られています。 、IPv6、明示的および暗黙的なFTPS。
このガイドでは、Debian11にvsftpdFTPサーバーをインストールする方法を示します。
Debian11を実行しているサーバー。
sudo権限を持つroot以外のユーザー。
1。 Vsftpdをインストールする
インストールを開始する前に、ターミナルで次のコマンドを実行してDebian11サーバーを更新します。
sudo apt update -y
sudo apt upgrade -y
Debianには非常に大きなリポジトリがあり、vsftpdパッケージは公式リポジトリで利用できるため、次のコマンドを実行してvsftpdを簡単にインストールできます。
sudo apt install vsftpd -y
パッケージのインストール後、Vsftpdサービスを開始し、サービスステータスを確認して、起動時にサービスを有効にします。
sudo systemctl start vsftpd
sudo systemctl status vsftpd
systemctl enable vsftpd.service
2。 FTPユーザーを作成し、FTPログイン用に構成します
次に、FTP用の新しいユーザーアカウントを作成します。このユーザーを使用して、後でFTPサーバーにログインします。
sudo adduser sohan
vsftpd.userlistファイルに追加されたユーザーには、FTPサーバーにアクセスする権限があります。
次に、vsftpdユーザーリストにsohanユーザーを追加する必要があります。ファイルを開き、次のコマンドを実行してユーザーを追加します。
echo "sohan" | sudo tee -a /etc/vsftpd.userlist
3。 FTPユーザーディレクトリを作成する
次に、FTPユーザー用のFTPディレクトリを作成し、次のコマンドで所有権を設定する必要があります。
sudo mkdir -p /home/sohan/ftp_directory
sudo chown nobody:nogroup /home/sohan/ftp_directory
sudo chmod a-w /home/sohan/ftp_directory
次に、ファイルをアップロードできるディレクトリを作成し、次のコマンドを実行してsohanユーザーに所有権を付与します。
sudo mkdir -p /home/sohan/ftp_directory/ftp_data
sudo chown sohan:sohan /home/sohan/ftp_directory/ftp_data
cd /home/sohan/ftp_directory/
chmod -R 777 ftp_data
4。 Vsftpdを構成する
次に、FTPサーバーを設定するために、いくつかのデフォルトパラメータを変更する必要があります。
まず、元のvsftpd構成ファイルのバックアップコピーを作成します。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
FTPサーバーでは、匿名ユーザーはデフォルトでアクセスを許可されます。 FTPサーバーをより安全にするために、匿名ユーザーのログインを無効にし、特定のユーザーにのみアクセスを許可します。
次に、vsftpd.confファイルを開き、以下のように変更します。
vim /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
構成で行う必要のある他の変更がいくつかあります。FirstOpenvsftpd.conf
sudo vim /etc/vsftpd.conf
次に、vsftpd.confに次の行が含まれていることを確認します。
listen=NO
listen_ipv6=YES
anonymous_enable=NO
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
user_sub_token=$USER
local_root=/home/$USER/ftp_directory
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
ファイルを保存して閉じます。必要に応じて上記の設定を変更できます。
次に、vsftpdサービスを再起動し、次のコマンドを実行してサービスのステータスを確認します。
sudo systemctl restart vsftpd
次に、ターミナルで次のコマンドを実行して、vsftpdサービスが実行状態になっていることを確認します。
sudo systemctl status vsftpd
5。ファイアウォールでvsftpdを許可し、vsftpdサーバーにアクセスします
次に、ファイアウォールを使用している場合は、次のコマンドを実行して、ポート21とポート22を許可します。
sudo ufw allow 21/tcp
sudo ufw allow 22/tcp
次に、ファイアウォールをリロードして変更を適用します。
sudo ufw reload
次に、FileZillaなどのFTPクライアントを開き、プロトコル、ホスト、ユーザーなどのサーバーの詳細を入力します:
次に、[接続]をクリックして、パスワードを入力します。
次に、以下のような詳細が表示されます。[OK]をクリックします。
この時点で、FTPサーバーに接続され、ファイル/フォルダーをアップロードおよびダウンロードできます。
6。 SSL/TLSを使用してVsftpdを保護する
FTP経由で暗号化されたデータを転送するとします。そのためには、SSL証明書を作成し、SSL/TLS接続を有効にする必要があります。
次のコマンドを使用して、OpenSSLを使用して証明書を作成できます。
sudo mkdir /etc/cert
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/cert/vsftpd.pem -out /etc/cert/vsftpd.pem
次に、vsftpd.confファイルを編集して、いくつかの変更を加える必要があります。
sudo vim /etc/vsftpd.conf
最後に次の行を追加します:
rsa_cert_file=/etc/cert/vsftpd.pem
rsa_private_key_file=/etc/cert/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
ファイルを保存して終了し、次のコマンドを使用してVsftpdを再起動します。
sudo systemctl restart vsftpd
7。 SSL/TLSを介してFTPにアクセスする
FileZilla FTPクライアントを開き、[ファイル]>[サイトマネージャー]に移動します。ここで、[新しいサイトの追加]をクリックして、ホスト/サイト名を入力し、IPアドレスを追加し、使用するプロトコルを定義します。暗号化:FTPoverTLSとログオンタイプを説明する必要があります。次に、[接続]ボタンをクリックします。次の画像が表示されます。
次に、パスワードを入力します:
次に、SSL証明書が表示され、証明書の詳細を確認して、[OK]をクリックします。
最後に、FTPサーバーの内容が表示され、1つのシステムからデータを安全に転送できます。別の人に。
上記のガイドでは、Debian 11にVSFTPDサーバーをインストールしました。また、SSL証明書を使用して、暗号化されていない接続と暗号化された接続を介して接続する方法についても学習します。