CentOS+NginX+php-fpm環境にvsftpdをインストールする


はじめに

CentOSにphp環境を構築後、開発は別環境で、動作する環境はCentOSと別々で管理している場合に、CentOS側にvsftpdをインストールし、ファイルをFTPでアップロードする必要があります。

本記事は、PHP環境構築後にFTPでアップロードできる様にvsftpdをインストールする方法の備忘録です

NginX構築に関しては下記を参照ください。

PHP環境構築については、こちらを参照ください。

 

vsftpdインストール

まずは、yumでインストールします。

$ yum install vsftpd
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ty1.mirror.newmediaexpress.com
 * epel: ftp.yz.yamagata-u.ac.jp
 * extras: ty1.mirror.newmediaexpress.com
 * remi-safe: ftp.riken.jp
 * updates: ty1.mirror.newmediaexpress.com
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ vsftpd.x86_64 0:3.0.2-27.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

===================================================================================================================================
 Package                       アーキテクチャー              バージョン                          リポジトリー                 容量
===================================================================================================================================
インストール中:
 vsftpd                        x86_64                        3.0.2-27.el7                        base                        172 k

トランザクションの要約
===================================================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 172 k
インストール容量: 353 k
Is this ok [y/d/N]: y
Downloading packages:
vsftpd-3.0.2-27.el7.x86_64.rpm                                                                              | 172 kB  00:00:10     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : vsftpd-3.0.2-27.el7.x86_64                                                                         1/1 
  検証中                  : vsftpd-3.0.2-27.el7.x86_64                                                                         1/1 

インストール:
  vsftpd.x86_64 0:3.0.2-27.el7                                                                                                     

完了しました!

問題なくインストールできました。

vsftpdの設定

インストールが完了したので、設定を行ます。

$ cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org
$ vi /etc/vsftpd/vsftpd.conf
# 匿名ユーザーログインを禁止
anonymous_enable=NO

# コメントをはずす(ASCIIでのデータの送受信許可)
ascii_upload_enable=YES
ascii_download_enable=YES

# TCP Wrapperの無効化
tcp_wrappers=NO

# ローカルタイムの利用
use_localtime=YES

# ホワイトリスト
userlist_enable=YES
userlist_deny=NO

# Listen設定(ipv6は拒否)
listen=YES
listen_ipv6=NO

# chroot設定
chroot_list_enable=NO
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
user_config_dir=/etc/vsftpd/user_conf

設定が完了したら、ftpdの自動起動をONにし、サービスを起動します。

$ systemctl enable vsftpd.service
$ systemctl start vsftpd

ただ、このままではFTPクライアントの接続がでいないため、ファイアウォールの設定などを行っていきます。

 

Firewall設定

ファイアウォールの設定を行います。

$ firewall-cmd --add-service=ftp --permanent 
$ firewall-cmd --reload

問題なく追加されました

public (active)
  ・・・
  services: dhcpv6-client ssh http ftp
  ・・・

 

FTPユーザ作成

FTP用ユーザを作成します。
作成した後は、FTP用ユーザのみを接続許可するために/etc/vsftpd/user_listに記載をします。

$ sudo useradd ftpuser
$ sudo passwd ftpuser
$ sudo vi /etc/vsftpd/user_list
ftpuser

以上で、完了です。

 

chroot設定

上位ディレクトリへのアクセスをvftp.conでオフにしているので、ここではサクセス先ローカルパスを設定します。

Nginxのデフォルトアプロードフォルダを指定します。

$ mkdir /etc/vsftpd/user_conf
$ vim /etc/vsftpd/user_conf/ftpuser

下記パスを指定する

local_root=/usr/share/nginx/html

vsftpdを再起動する

$ systemctl restart vsftpd

 

最後に

FTPサーバとしての構築は結構簡単に行えますね。

ユーザの制御はホワイトリストに記載して、アクセスできるユーザを制限することができます。

ぜひ試してみてください。