CentOS8でVsftpdを使用してFTPサーバーを構成する方法

FTP(File Transfer Protocol)は、ユーザーがローカルクライアントとリモートサーバー間でファイルを転送できるようにするクライアントサーバーネットワークプロトコルです。

Linuxで利用できる多くのオープンソースFTPサーバーがあります。最も人気があり、頻繁に使用されるサーバーには、[PureFTPd](https://www.pureftpd.org/project/pure-ftpd)、[ProFTPD](http://www.proftpd.org/)、および[vsftpd](https://security.appspot.com/vsftpd.html)があります。

このガイドでは、CentOS 8にvsftpd(Very Secure Ftp Daemon)をインストールします。これは、安定した、安全で、高速なFTPサーバーです。ユーザーがホームディレクトリにアクセスできないようにvsftpdを構成し、SSL / TLSを使用してデータ送信を暗号化する方法を示します。

1. CentOS8にvsftpdをインストールします##

vsftpdパッケージは、デフォルトのCentOSソースリポジトリで利用できます。これをインストールするには、rootまたはsudo権限を持つ別のユーザーとして次のコマンドを実行します。

sudo dnf install vsftpd

パッケージがインストールされたら、vsftpdデーモンを起動し、起動時に自動起動を有効にします。

sudo systemctl enable vsftpd --now

サーバーのステータスを確認します。

sudo systemctl status vsftpd

出力は次のようになり、vsftpdサービスがアクティブ化されて実行されていることを示しています。

● vsftpd.service - Vsftpd ftp daemon
 Loaded:loaded(/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
 Active:active(running) since Mon 2020-03-3015:16:51 EDT; 10s ago
 Process:2880 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf(code=exited, status=0/SUCCESS)...

2つ目は、vsftpdを構成する##

vsftpd設定は、 / etc / vsftpd / vsftpd.conf構成ファイルに保存されます。ファイル内のほとんどの設定は、ドキュメントで詳しく説明されています。すべてのオプションを表示するには、[vsftpd公式Webサイトページ](http://vsftpd.beasts.org/vsftpd_conf.html)を参照してください。

次の章では、vsftpdセキュリティの構成に関連するいくつかの重要な設定について説明します。

vsftpd構成ファイルを開きます。

sudo nano /etc/vsftpd/vsftpd.conf

2.1 FTP Access

ローカルユーザーにのみFTPサーバーへのアクセスを許可し、 anonymous_enableおよび local_enableディレクティブを見つけて、構成が次のようになっていることを確認します。

anonymous_enable=NO
local_enable=YES

2.2 アップロードを許可する###

write_enableのコメントを解除して、ファイルのアップロードや削除などのファイルシステムの変更を許可します。

write_enable=YES

2.3 Chroot Jail

chrootコマンドのコメントを解除することにより、FTPユーザーはホームディレクトリ外のファイルにアクセスできなくなります。

chroot_local_user=YES

デフォルトでは、chrootが有効になっている場合、ユーザーがフォルダーへの書き込みを許可されていない場合、vsftpdはユーザーがそのディレクトリにファイルをアップロードすることを拒否します。これはセキュリティの問題を防ぐためです。

chrootが有効になっている場合は、次のいずれかの方法を使用してアップロードを許可します。

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

2.4 FTPパッシブモード###

vsftpdは、FTPパッシブモードが接続する任意のポートを使用できます。最小ポートと最大ポートを指示し、後でこのポート範囲をファイアウォールで開きます。

構成ファイルに次の行を追加します。

pasv_min_port=30000
pasv_max_port=31000

2.5 ユーザーのログインを制限する###

指定したユーザーがFTPサーバーにログインできるようにするには、 userlist_enable = YESの行の下に次の構成を追加します。

userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

このオプションを有効にした場合、ユーザー名を / etc / vsftpd / user_list(1行に1人のユーザー)に追加して、ログインできるユーザーを明示的に指定する必要があります。

2.6 SSL / TLS暗号化送信を使用する###

SSL / TLS暗号化FTP送信を使用するには、[SSL証明書](https://cloud.tencent.com/product/symantecssl?from=10680)が必要であり、それを使用するようにFTPサーバーを構成します。

信頼できる証明書機関によって発行されたSSL証明書を使用するか、自作の証明書を作成できます。

FTPサーバーのパブリックIPアドレスをドメイン名またはサブドメインで指定すると、無料のLet's EncryptSSL証明書を簡単に生成できます。

このガイドでは、 opensslを使用して自己署名SSL証明書を生成します。

次のコマンドは、2048ビットの秘密鍵と10年の有効期間を持つ自己署名証明書を作成します。秘密鍵と証明書の両方が同じファイルに保存されます。

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

SSL証明書が作成されたら、vsftpd構成ファイルを開きます。

sudo nano /etc/vsftpd/vsftpd.conf

rsa_cert_fileコマンドと rsa_private_key_fileコマンドを見つけ、それらの値を pamファイルパスに変更し、 ssl_enableコマンドを YESに設定します。

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

他に指定されていない場合、FTPサーバーは安全な接続にのみTLSを使用します。

2.7 vsftpdサービスを再起動します###

編集が完了すると、vsftpd構成ファイル / 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
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

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

sudo systemctl restart vsftpd

第三に、ファイアウォールを開きます##

FTPサーバーを実行している場合は、ファイアウォールを通過するFTPトラフィックを許可する必要があります。

ファイアウォールで 21ポート(FTPコマンドポート)、 20ポート(FTPデータポート)、および 30000-31000(パッシブモードポート範囲)を開き、次のコマンドを入力します。

sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp

次のコマンドを入力して、ファイアウォールルールを再読み込みします。

firewall-cmd --reload

第四に、FTPユーザーを作成します##

FTPサーバーをテストするには、新しいユーザーを作成する必要があります。

  1. newftpuserという名前の新しいユーザーを作成します。
sudo adduser newftpuser

次に、ユーザーパスワードを設定する必要があります。

sudo passwd newftpuser
  1. 許可されたFTPユーザーのリストにユーザーを追加するには:
echo "newftpuser"| sudo tee -a /etc/vsftpd/user_list
  1. FTPディレクトリツリーを作成し、正しい権限を設定します。
sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550/home/newftpuser/ftp
sudo chmod 750/home/newftpuser/ftp/upload
sudo chown -R newftpuser:/home/newftpuser/ftp

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

この時点で、FTPサーバーは完全に使用可能になり、[FileZilla](https://filezilla-project.org/)などのTLS暗号化を構成できる任意のFTPクライアントを使用してFTPサーバーに接続できます。

5、シェルアクセスを無効にします##

デフォルトでは、ユーザーが作成されたときに明確な指定がない場合、ユーザーはSSH経由でサーバーにアクセスできます。

シェルアクセスを無効にするために、新しいシェルを作成します。これは、FTPへのアクセスのみが許可されていることをユーザーに通知するメッセージを出力するだけです。

次のコマンドを実行して、 / bin / ftponlyシェルを作成し、実行可能にします。

echo -e '#!/bin/sh\necho "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 newftpuser -s /bin/ftponly

同じコマンドを使用して他のユーザーのシェルを変更し、FTP経由でのみアクセスするように制限します。

6、要約##

CentOS8に安全で高速なFTPサーバーをインストールして構成する方法を説明しました。

より安全で高速なデータ転送を行うには、 SCPまたは SFTPを使用する必要があります。

Recommended Posts

CentOS8でVsftpdを使用してFTPサーバーを構成する方法
CentOS8でVsftpdを使用してFTPサーバーを構成する方法
CentOS8にNFSサーバーをインストールして構成する方法
CentOS8にPostfixメールサーバーをインストールして構成する方法
PrometheusでCentOS7サーバーを監視する方法
CentOS7にElasticsearchをインストールして構成する方法
CentOS8にVNCをインストールして構成する方法
CentOS8にRedisをインストールして構成する方法
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にOwncloudをインストールして構成する方法
CentOS8にRedmineをインストールして構成する方法
CentOS8にMySQLをインストールする方法
CentOS8にMemcachedをインストールする方法
CentOS8にRをインストールする方法
CentOS8にFFmpegをインストールする方法
CentOS8にVirtualboxをインストールする方法
CentOS8にTensorFlowをインストールする方法
Centos7でgcc4.9.xに更新する方法
CentOS8にTeamViewerをインストールする方法
CentOSにPerl5をインストールする方法
CentOS8にGitをインストールする方法
CentOS8にGradleをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にJavaをインストールする方法
CentOS8にGoをインストールする方法
CentOS8にGCCをインストールする方法
CentOS8にYarnをインストールする方法
CentOS8にNginxをインストールする方法
CentOS7にAsteriskをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にVagrantをインストールする方法
CentOS8にPython3.8をインストールする方法
CentOS8にTomcat9をインストールする方法
CentOS8にWebminをインストールする方法
CentOS8にRubyをインストールする方法
CentOS8にSkypeをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にPythonをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にPostgresqlをインストールする方法
CentosにWordpressをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にTeamViewerをインストールする方法
CentOS7にスワップを追加する方法
CentOS8にMariaDBをインストールする方法
CentOS7にMongoDBをインストールする方法
CentOS8にOdoo13をインストールする方法
CentOS8にApacheをインストールする方法
CentOS8でSELinuxを無効にする方法
CentOS8にOpenCVをインストールする方法
CentOS8にPHPをインストールする方法
CentOS8にMongoDBをインストールする方法
Ubuntu14.04にBaculaServerをインストールする方法
CentOS8でスワップスペースを増やす方法
CentOS8にApacheMavenをインストールする方法
CentOS7にApacheKafkaをインストールする方法
Ubuntu16.04でSambaサーバーを使用する方法
Ubuntu14.04でRedisクラスターを構成する方法
[グラフィック]セントスにtomcatをインストールする方法
R&D:CentOS7にPython3をインストールする方法