FTPは、サーバーとクライアント間でファイルを転送するために広く使用されているプロトコルです。 FTPD、VSFTPD、PROFTPD、pureftpdなど、現在利用可能なオープンソースFTPサーバーはたくさんあります。その中でも、VSFTPDは、世界中で安全で高速かつ最も広く使用されているプロトコルです。 「非常に安全なファイル転送プロトコルデーモン」とも呼ばれます。また、SSL、IPv6、明示的および暗黙的なFTPSもサポートしています。
このチュートリアルでは、CentOS 8サーバーにVSFTPDをインストールし、SSL/TLSで保護する方法を示します。
- CentOS8を実行しているサーバー。
- ルートパスワードはサーバーで構成されています。
VSFTPDをインストール
デフォルトでは、VSFTPDはCentOS8のデフォルトリポジトリで利用できます。次のコマンドを実行してインストールできます:
dnf install vsftpd -y
インストールが完了したら、VSFTPDサービスを開始し、次のコマンドを使用してシステムの再起動後にサービスを開始できるようにします。
systemctl start vsftpd
systemctl enable vsftpd
この時点で、VSFTPDサーバーがインストールされて実行されています。これで、次のステップに進むことができます。
VSFTPDのユーザーを作成する
次に、VSFTPDの新しいユーザーを作成する必要があります。したがって、このユーザーを使用してFTPサーバーにアクセスできます。
次のコマンドを実行して、以下に示すようにvyomという新しいユーザーを作成します。
adduser vyom
次に、次のコマンドを使用してユーザーvyomのパスワードを設定します。
passwd vyom
完了したら、次のステップに進むことができます。
VSFTPDを構成する
次に、以下に示すように、/ etc/vsftpdディレクトリにあるVSFTPDのデフォルト設定ファイルを開きます。
nano /etc/vsftpd/vsftpd.conf
次の行を変更します:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=NO
終了したら、ファイルを保存して閉じます。次に、VSFTPDサービスを再起動し、次のコマンドを使用してサービスのステータスを確認します。
systemctl restart vsftpd
systemctl status vsftpd
次の出力が表示されます。
? vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2020-02-21 00:43:57 EST; 6s ago Process: 2698 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) Main PID: 2699 (vsftpd) Tasks: 1 (limit: 6102) Memory: 1020.0K CGroup: /system.slice/vsftpd.service ??2699 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf Feb 21 00:43:57 centos8 systemd[1]: Stopped Vsftpd ftp daemon. Feb 21 00:43:57 centos8 systemd[1]: Starting Vsftpd ftp daemon... Feb 21 00:43:57 centos8 systemd[1]: Started Vsftpd ftp daemon.
この時点で、VSFTPDサーバーが構成されています。これで、SELinuxとファイアウォールを介してすべてのVSFTPDに進むことができます。
デフォルトでは、SELinuxはCentOS 8で有効になっているため、VSFTPD用にSELinuxを構成する必要があります。
次のコマンドを使用して、FTPアクセスを許可するようにSELinuxを構成できます。
setsebool -P allow_ftpd_full_access=1
次に、firewalldを介したFTPサービスを許可する必要があります。次のコマンドで許可できます:
firewall-cmd --zone=public --permanent --add-service=ftp
次に、firewalldサービスをリロードして、ファイアウォール構成の変更を適用します。
firewall-cmd --reload
この時点で、ファイアウォールとSELinuxは、リモートシステムからの着信FTP接続を許可するように構成されています。これで、FTP接続のテストに進むことができます。
VSFTPDサーバーに接続
これで、VSFTPDサーバーがインストールおよび構成されました。次に、クライアントシステムからFTPサーバーに接続します。
これを行うには、クライアントシステムに移動し、次のコマンドを実行してFTPサーバーに接続します。
ftp 172.20.10.3
以下に示すように、FTPユーザーとパスワードを入力するように求められます。
Connected to 172.20.10.3. 220 (vsFTPd 3.0.3) Name (172.20.10.3:root): vyom 331 Please specify the password. Password: 230 Login successful.
接続が正常に確立されると、次の出力が表示されます。
Remote system type is UNIX. Using binary mode to transfer files. ftp>
ここで、exitと入力し、Enterボタンを押してFTPセッションを終了します。
TLSサポートを使用してVSFTPDを構成する
セキュリティ上の理由から、FTP送信をSSL/TLSで暗号化することをお勧めします。そのためには、SSL証明書を生成し、それを使用するようにVSFTPDサーバーを構成する必要があります。
まず、システムにOpenSSLパッケージをインストールする必要があります。次のコマンドでインストールできます:
dnf install openssl -y
インストールしたら、SSL証明書を保存するための新しいディレクトリを作成します。
mkdir /etc/ssl/private
次に、次のコマンドを使用して自己署名証明書を生成します。
openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/private/vsftpd.key -x509 -days 365 -out /etc/ssl/private/vsftpd.crt
以下に示すように、必要なすべての情報を提供します。
Generating a RSA private key ...+++++ ...........+++++ writing new private key to '/etc/ssl/private/vsftpd.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:IN State or Province Name (full name) []:GUJ Locality Name (eg, city) [Default City]:JUN Organization Name (eg, company) [Default Company Ltd]:IT Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:ftpserver Email Address []:[email protected]
SSL証明書を生成した後、この証明書を使用するようにVSFTPDを構成する必要があります。
以下に示すように、VSFTPDのデフォルト構成ファイルを開きます。
nano /etc/vsftpd/vsftpd.conf
ファイルの最後に次の行を追加します。
#Path of the SSL certificate rsa_cert_file=/etc/ssl/private/vsftpd.crt rsa_private_key_file=/etc/ssl/private/vsftpd.key #Enable the SSL ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES #TSL is more secure than SSL so enable ssl_tlsv1_2. ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH #Enable SSL debugging to store all VSFTPD log. debug_ssl=YES
終了したら、ファイルを保存して閉じます。次に、VSFTPDサービスを再起動して、変更を適用します。
systemctl restart vsftpd
この時点で、VSFTPDサーバーはSSL証明書を使用するように構成されています。これで、次のステップに進むことができます。
VSFTPDTLS接続を確認する
これで、VSFTPDサーバーがSSL/TLSサポートで保護されました。次に、以下に示すように、コマンドラインからFTPサーバーに接続してみます。
ftp 172.20.10.3
次の出力にエラーが表示されるはずです:
Connected to 172.20.10.3. 220 (vsFTPd 3.0.2) Name (172.20.10.3:root): vyom 530 Non-anonymous sessions must use encryption. Login failed. 421 Service not available, remote server has closed connection ftp>
コマンドラインクライアントからVSFTPサーバーに接続することはできません。 SSL/TLSサポートをサポートしていないためです。
そのため、TLS接続をサポートするFTPクライアントを使用してVSFTPD接続をダウンロードしてテストする必要があります。
これを行うには、クライアントシステムに移動し、FileZillaクライアントパッケージをインストールします。
FileZillaをインストールした後、以下に示すようにFileZillaソフトウェアを開きます。
次に、以下に示すようにサイトマネージャを開きます。
新しいサイトをクリックします 以下に示すように、ボタンをクリックして新しいFTP接続を追加します。
FTPサーバーのIPを入力し、FTPプロトコルを選択し、[TLSを介した明示的なFTPを使用する]を選択し、パスワードの要求を選択し、FTPサーバーのユーザー名を入力して、接続をクリックします。 ボタン。以下に示すように、FTPユーザーのパスワードを入力するように求められます。
FTPパスワードを入力し、 OKをクリックします ボタン。以下に示すように、SSL/TLS接続に使用されている証明書を確認するように求められます。
OKをクリックします ボタンをクリックして証明書を確認します。接続が正常に確立されると、次の画面が表示されます。
上記のガイドでは、CentOS8にVSFTPDサーバーをインストールしました。SSL/TLS証明書を使用するようにVSFTPDサーバーも構成しました。これで、FTPサーバーが保護されました。ご不明な点がございましたら、お気軽にお問い合わせください。