中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【CentOS7】vsftpdでパッシブモードのFTPサーバーを設定する

1.概要

LinuxでFTPサーバーを構築する時によく使われるのが
【vsftpd】かと思います。
今回はパッシブモードでの設定方法について記載します。
本環境は【CentOS7】【raspberry PI 3B +】になります。

※FTPについては下記の記事を参照して下さい。
www.chuken-engineer.com

2.インストール

FTPサーバーは【vsftpd】を使用します。
まずは【vsftpd】のインストールからやっていきます。

[root@localhost ~]# yum install vsftpd
Loaded plugins: fastestmirror
Determining fastest mirrors
・
・
省略
・
・

Installed:
  vsftpd.armv7hl 0:3.0.2-25.el7

Complete!

3回ほどOK?と聞かれるので全部【y】と答えると無事インストールが完了します。
バージョンは【3.0.2-25.el7】でした。

3.基本的な設定

早速、vsftpdの設定ファイルを編集します。
設定ファイルの場所は【/etc/vsftpd/vsftpd.conf】になります。

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

今回は下記のとおり設定していきます。

①匿名ユーザーのFTPログインを許可しない

anonymous_enable=NO(変更)

②【/etc/vsftpd.user_list】に記載されているユーザーのみに接続を許可する

userlist_enable=YES(変更なし)
userlist_deny=NO(追加)

③ローカルタイムの使用

use_localtime=YES(追加)

④アップロード、ダウンロード時のASCIIモードでのデータ転送を許可

ascii_upload_enable=YES(変更)
ascii_download_enable=YES(変更)

4.パッシブモードの設定

基本的に何も設定しないとパッシブモードで動作しますが
今回は明示的に設定をしていきます。
設定ファイルは【/etc/vsftpd/vsftpd.conf】になります。

①パッシブモード有効

pasv_enable=YES(追加)

②データコネクションと制御コネクションが同一IPからの接続かチェックする

pasv_promiscuous=NO(追加)

③データコネクションで使用するポートの範囲

pasv_min_port=61000(追加)
pasv_max_port=61005(追加)

5.ポートの変更

制御コネクションのポート番号をデフォルトの
【21】から【61234】に変更します。
設定ファイルは【/etc/vsftpd/vsftpd.conf】になります。

listen_port=61234(追加)

6.接続アカウントの設定

【vsftpd】の設定が完了したら
次は、【/etc/vsftpd.user_list】を編集します。
ここにFTPサーバーへの接続を許可するアカウント名を記載します。

[root@localhost ~]# vi /etc/vsftpd/user_list

# 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.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

デフォルトでは上記の記述になっていますが
全て削除し、1ユーザーのみ記述しておきます。
今回は以前作成した【testuser】のみの記述に設定しました。

※ユーザーの作成方法はこちら
www.chuken-engineer.com

# 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.
testuser


設定が完了したら【vsftpd】の自動起動設定を行います。

[root@localhost ~]# systemctl enable vsftpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service


【vsftpd】を再起動します。

[root@localhost ~]# systemctl restart vsftpd

7.firewallのポートを開放する

制御コネクション用の【61234】と
データコネクション用の【61000】~【61005】を開放します。

【firewall】でftpポートを開放

[root@localhost ~]# firewall-cmd --permanent --add-port=61234/tcp
success
[root@localhost ~]# firewall-cmd --permanent --add-port=61000-61005/tcp
success


【firewall】を再起動

[root@localhost ~]# systemctl restart firewalld.service


以上で設定は完了です。

8.確認する

ではちゃんと設定されたか確認してみます。
確認用にフリーソフトの【FFFTP】を使用しました。


①【FFFTP】を起動し【新規ホスト】をクリックします。
f:id:tsu--kun:20190903112145p:plain


②【基本】タブで【ホスト名】【ユーザー名】【パスワード】を入力し【OK】をクリックします。
f:id:tsu--kun:20190903112207p:plain


③【拡張】タブで【ポート番号】に【61234】と入力し【OK】をクリックします。
 この時【PASV】モードを使うにチェックが入っていることを確認します。
f:id:tsu--kun:20190903112219p:plain


④ホスト一覧から先ほど登録したホスト名を選択し【接続】をクリック
f:id:tsu--kun:20190903112229p:plain


⑤無事に接続が完了しました。
 デフォルトのフォルダパスは【/home/testuser】になっています。
f:id:tsu--kun:20190903112311p:plain


ではこのフォルダにファイル転送してLinux上で確認してみます。
今回はtext.txtという名前のファイルを使用します。
中身は【This is a test.】と書いてるだけのものです。


【FFFTP】画面からドラッグドロップでファイルを転送します。
SSH接続の画面で以下のコマンドを実行します。

[root@localhost ~]# cat /home/testuser/test.txt


しっかりとファイル転送が出来ていることを確認出来ました。
f:id:tsu--kun:20190903112331p:plain