CentOS7にFTPサーバーを構築

3月 3, 2020

yum -y install vsftpd
このコマンドにてvsftpdをインストールします。

どこにインストールされた確認します。
which vsftpd

/sbin以下の階層に格納されていることが確認できました。

systemctl status vsftpd
vsftpdの状態を確認します。

●が点灯してないし、inactiveなので起動してない。

systemctl start vsftpd
起動させてみる。
systemctl status vsftpd で再度確認。

●が黄緑になり、active(running)となり起動を確認。

systemctl enable vsftpd
OS起動時にこのサービスを自動で起動させます。

Createdから表示され、シンボリックリンクが作成されました。

systemctl list-unit-files | grep vsftpd
状態を確認します。

vsftpd.serviceがenabledとなり自動起動設定が完了しました。

cd /etc/vsftpd/にてvsftpdディレクトリに移動しvsftpd.confという設定ファイルの内容を確認し、必要に応じて変更します。
vi vsftpd.confで編集画面に入ります。
anonymous_enable=YES→ anonymous_enable=NOとして匿名アクセスを拒否します。

テキスト、HTML、CGIファイルは アスキーモード(テキストモード)でアップロード、ダウンロードする必要があるため#を消して有効にします。デフォルトではコメントとして扱われてました。
ascii_upload_enable=YES
ascii_download_enable=YES

chrootの設定を行います。ユーザーを自分より上の階層に移動させないための設定で一人しかいない場合は必要ないかと思われます。
また別途それを行えるようにする簡単なファイルを作成します。
ここもコメント扱いなので#を外すだけです。
chroot_local_user=YES
chroot_list_enable=YES

下記がユーザーが上の階層に移動可能にするファイルとなります。 #を消します。
chroot_list_file=/etc/vsftpd/chroot_list

ls_recurse_enableは#を消せばディレクトリごと一括でアップロード、ダウンロードなどできるようになります。絶対に必要かと思われます。
ls_recurse_enable=YES

ファイアーウォールの設定がなされていると下記の項目を別途記述する必要があります。
パッシブモードで20、21番のポート以外が使えるようにするみたいなことでよく理解できてません。
私が使用しているFTPクライアントのNextFTPではデフォルトではPASVモードにチェックが入ってました。
今回はポート50001から50020を設定しました。
後で忘れないようにOS自体にこのポート番号の開放かつルーター等に設定が必要です。
pasv_min_port=50001
pasv_max_port=50020
viエディタにて上書き保存をし、先ほど別途必要だと書いたchroot_listというファイルを作成します。下記の画像のように最初からあるわけではないのでtouch chroot_listコマンドを打ち込み作成しておきます。

FTP接続できるようにポート開放。
今の状態。
firewall-cmd –list-all

追加するコマンドにて20,21及び50001から50020のポート設定を行います。
firewall-cmd –zone=public –add-port=20-21/tcp –permanent
firewall-cmd –zone=public –add-port=50001-50020/tcp –permanent

設定内容反映のためのコマンド。
firewall-cmd –reload

再度確認。

次にFTP専用ユーザー作成をします。
useradd blog
このコマンドにてblogというユーザーが作成され/home/blogというディレクトリも作成される。
passwd blog
でユーザーblogに対してパスワード設定をする。

cd /home/blog/と入力し下の階層に移動。ここでmkdir uploadコマンドを入力しuploadというディレクトリを作成します。
ユーザーblogの所有権を設定します。
chown blog:blog ./upload/
chmod 700 ./upload/
上のコマンドを入力したらls -lなどで確認できます。

上の階層にアクセス可能なユーザーftpadminも同様に作成します。

このユーザーをchroot_listに追加します。
service vsftpd restartにて再起動。

最後にルーター等でもポート開放を忘れずに行います。
今回はOracleCloudを利用したもので、CentOSにFTPサーバーを立てた日記となります。セキュリティリストにも同様に設定をしておきました。

それぞれのユーザーにてFTP接続をしてftpadminは上の階層に移動できることを確認してください。

教育

Posted by admin