CentOS 7でFTPサーバー(vsftpd)を構築する

これまで、VMware Worksation Playerを使用してWindows上にLinux仮想マシンを作成し、開発用WEBサーバーをCentOS7で構築してきた。

Windows上にLinuxの仮想サーバーを構築し、その仮想サーバー上に開発用WEBサーバー機能を構築することにした。仮想化には、VMware Workstation Playerを使用しWindows上にCentOSをインストールする。
前回、VMware Workstation Playerを使用してWindows7上にCentOS7の仮想マシンを作成しWEBサーバーを構築する方法を紹介した。今回は、前回作成した仮想LinuxサーバーにLAMP環境を構築してデータベースを使用したWEBアプリケーションを実行できるようにする。

しかし、今のままでは、サーバー機以外で開発したWEBサイトをサーバーに設置するのが困難なので、WindowsPC等からWEBサーバー機へファイル転送ができるように、FTPサーバーを構築していく。

FTPサーバーの構築手順

CentOS 7にインストールするFTPサーバーとして「vsftpd」を使用することにする。

以下コマンド操作はすべてrootアカウントで行う。

CentOS 7にvsftpdをインストール

以下のコマンドを入力し、vsftpdをCentOS 7にインストールする。

# yum install vsftpd

vsftpdの設定

vsftpdの設定は「/etc/vsftpd/vsftpd.conf」を編集して行う。

まずは、設定ファイルのバックアップ。

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org

Vimでvsftpd.confを開く

# vim /etc/vsftpd/vsftpd.conf

アノニマスFTPサーバーを無効化

不特定多数に公開しないので、12行目、anonymous_enableをNOに設定して匿名ユーザーログインを禁止する。

anonymous_enable=NO

ASCIIでのデータの送受信許可

82、83行目の先頭の#を外して以下のようにする。

ascii_upload_enable=YES
ascii_download_enable=YES

TCP Wrapperの無効化

ルーターによって外部からのFTPアクセスは遮断されているため、TCP Wrapperによる接続許可、接続拒否の制御は必要ない。ので、127行目、tcp_wrappersはNOに設定する。

tcp_wrappers=NO

ローカルタイムの使用

ファイルの末尾に以下の記述を追加してローカルタイムを使用するにように変更します。

use_localtime=YES

「/etc/vsftpd.user_list」をホワイトリストとして使用する

ファイルの末尾に以下の記述を追加する。

userlist_enable=YES
userlist_deny=NO

上記の記述をすることで、vsftpd.user_listに記述されている特定のユーザーアカウントにのみFTP接続を許可する。

上位ディレクトリ参照可能関連設定

100、101、103行目の先頭の#を外して以下のようにする。

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

上の通り設定すると、ユーザのログインディレクトリ が、そのユーザのルート ディレクトリとなり、ログインディレクトリより上部にアクセスすることができなくなる。

ただし、chroot_listに記載されたユーザーは上位ディレクトリにアクセスすることができる。

ファイルを保存

上記編集をすべて完了したらファイルを保存し、「vim」を終了する。

「/etc/vsftpd.user_list」の編集

FTPサーバーへの接続を許すアカウント名を「/etc/vsftpd.user_list」に記述する。

vimでuser_listを開く。

# vim /etc/vsftpd/user_list

最初に記述されているユーザーはすべて削除する。

user1というユーザーのみをFTP接続させたい場合、以下のようになる。

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
user1

設定したらファイルを保存してvimを終了する。

「/etc/vsftpd/chroot_list」の作成

「/etc/vsftpd/chroot_list」ファイルを新規に作成し、上位ディレクトリの参照を許可するアカウント名を記述する。

# vim /etc/vsftpd/chroot_list

user1というユーザーのみに上位ディレクトリ参照の許可を与える場合、以下のようにuser1のみ記述すればよい。

user1

アカウント名を追加したら保存してvimを終了させる。

作成したchroot_listは、パーミッションが644になっているため、root以外のユーザーが参照できてしまう。

「root」アカウント以外はchroot_listを読み書きできないように以下のコマンドでパーミッションを変更しておく。

# chmod 600 /etc/vsftpd/chroot_list

念のため、パーミッションが変更されているか確認しておく。

# ls -l /etc/vsftpd/chroot_list
-rw------- 1 root root 8 5月 27 06:15 /etc/vsftpd/chroot_list

-rw-------となっていればOKだ。

vsftpdの自動起動設定

サーバーが再起動した際、自動でvsftpdが起動するように自動起動を設定しておく

# systemctl enable vsftpd.service

FTPサーバーの接続確認

まず、vsftpdを起動させる。

# systemctl start vsftpd

WindowsPCからFileZilla等のFTPソフトを使用して、許可したユーザーアカウントでサーバーに接続できることを確認しよう。

その際、ユーザーのログインディレクトリより上位にアクセスできることも確認しておこう。

全て問題なければFTPサーバーの構築は完了だ。

まとめ

今回FTPサーバーを構築したことで、FTP経由で「var/www/html」にHTMLファイルを転送することが可能になり、WEBサーバーとしての機能は一通り完成した。

これでいつでも自由にWEBサイトやWEBアプリを構築して動作確認することができる。

開発用WEBサーバーを構築してみたい方は、参考にしていただければと思う。

レクタングル広告(大)広告