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】を起動し【新規ホスト】をクリックします。
②【基本】タブで【ホスト名】【ユーザー名】【パスワード】を入力し【OK】をクリックします。
③【拡張】タブで【ポート番号】に【61234】と入力し【OK】をクリックします。
この時【PASV】モードを使うにチェックが入っていることを確認します。
④ホスト一覧から先ほど登録したホスト名を選択し【接続】をクリック
⑤無事に接続が完了しました。
デフォルトのフォルダパスは【/home/testuser】になっています。
ではこのフォルダにファイル転送してLinux上で確認してみます。
今回はtext.txtという名前のファイルを使用します。
中身は【This is a test.】と書いてるだけのものです。
【FFFTP】画面からドラッグドロップでファイルを転送します。
SSH接続の画面で以下のコマンドを実行します。
[root@localhost ~]# cat /home/testuser/test.txt
しっかりとファイル転送が出来ていることを確認出来ました。