これまで、VMware Worksation Playerを使用してWindows上にLinux仮想マシンを作成し、開発用WEBサーバーをCentOS7で構築してきた。
しかし、今のままでは、サーバー機以外で開発した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サーバーを構築してみたい方は、参考にしていただければと思う。
コメント