GNU/Linux >> Linux の 問題 >  >> Cent OS

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

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

Linuxで利用できるオープンソースのFTPサーバーはたくさんあります。最も人気があり、一般的に使用されているサーバーは、PureFTPd、ProFTPD、vsftpdです。

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

CentOS 8への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-30 15:16:51 EDT; 10s ago
  Process: 2880 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
  ...

vsftpdの構成#

vsftpdサーバーの設定は、/etc/vsftpd/vsftpd.confに保存されます。 構成ファイル。ほとんどの設定は、ファイル内に十分に文書化されています。利用可能なすべてのオプションについては、公式のvsftpdpageにアクセスしてください。

次のセクションでは、安全なvsftpdインストールを構成するために必要ないくつかの重要な設定について説明します。

vsftpd構成ファイルを開くことから始めます:

sudo nano /etc/vsftpd/vsftpd.conf

1。 FTPアクセス#

FTPサーバーへのアクセスをローカルユーザーのみに許可します。anonymous_enableを見つけてください およびlocal_enable ディレクティブを使用して、構成が以下の行と一致していることを確認してください:

/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES

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

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

/etc/vsftpd/vsftpd.conf
write_enable=YES

3。 Chroot Jail#

chrootのコメントを解除して、FTPユーザーがホームディレクトリ外のファイルにアクセスできないようにします。 ディレクティブ。

/etc/vsftpd/vsftpd.conf
chroot_local_user=YES

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

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

  • 方法1。 -アップロードを許可するための推奨される方法は、chrootを有効にして、FTPディレクトリを設定することです。このチュートリアルでは、ftpを作成します ユーザーホーム内のディレクトリ。chrootおよび書き込み可能なuploadsとして機能します。 ファイルをアップロードするためのディレクトリ。

    /etc/vsftpd/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • 方法2。 -別のオプションは、vsftpd構成ファイルに次のディレクティブを追加することです。ユーザーにホームディレクトリへの書き込み可能なアクセスを許可する必要がある場合は、このオプションを使用します。

    /etc/vsftpd/vsftpd.conf
    allow_writeable_chroot=YES

4。パッシブFTP接続#

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

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

/etc/vsftpd/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

5。ユーザーログインの制限#

特定のユーザーのみがFTPサーバーにログインできるようにするには、userlist_enable=YESの後に次の行を追加します。 行:

/etc/vsftpd/vsftpd.conf
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’sEncryptSSL証明書を簡単に生成できます。

このチュートリアルでは、opensslを使用して自己署名SSL証明書を生成します ツール。

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

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へのディレクティブ :

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

特に指定がない限り、FTPサーバーはTLSのみを使用して安全な接続を確立します。

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
ファイアウォールを開く#

how-to-configure-and-manage-firewall-on-centos-8を実行している場合は、FTPトラフィックを許可する必要があります。

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

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

次のように入力して、ファイアウォールルールを再読み込みします。

firewall-cmd --reload

FTPユーザーの作成#

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

  • FTPアクセスを許可するユーザーがすでにいる場合は、最初の手順をスキップしてください。
  • allow_writeable_chroot=YESを設定した場合 構成ファイルで、3番目のステップをスキップします。
  1. newftpuserという名前の新しいユーザーを作成します :

    sudo adduser newftpuser

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

    sudo passwd newftpuser
  2. 許可されたFTPユーザーリストにユーザーを追加します:

    echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list
  3. FTPディレクトリツリーを作成し、正しい権限を設定します:

    sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

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

この時点で、FTPサーバーは完全に機能しており、FileZillaなどのTLS暗号化を使用するように構成できる任意のFTPクライアントを使用してサーバーに接続できるはずです。

シェルアクセスの無効化#

デフォルトでは、ユーザーを作成するときに、明示的に指定されていない場合、ユーザーはサーバーへのSSHアクセス権を持ちます。

シェルアクセスを無効にするには、アカウントがFTPアクセスのみに制限されていることをユーザーに通知するメッセージを出力する新しいシェルを作成します。

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

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

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

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

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

sudo usermod newftpuser -s /bin/ftponly

同じコマンドを使用して、FTPアクセスのみを許可する他のユーザーのシェルを変更します。


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

  2. CentOSでSFTPサーバーをセットアップする方法

  3. CentOS 7 に FTP サーバーをインストールする方法

  1. RHEL 8 /CentOS8にvsftpdをインストールする方法

  2. TLSを使用したCentOS7での安全なProFTPDサーバーのセットアップ

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

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

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

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