7.ubuntuにFTPサーバーをインストールします

本日はFTPサーバーをインストールしてクライアントから接続を試みます。
ブログなどでファイルをアップロード、ダウンロードしたりすることが多いので必要なことであると思います。vsftpdがインストールするFTPサーバーとなります。
それではインストールをします。

sudo apt install vsftpd

インストールが完了したらvsftpd.confという重要なファイルを検索します。
Linuxの種類によって存在する場所が違うからです。

sudo find / -name vsftpd.conf

etc直下にあることがわかったのでエディタで開き編集します。
編集して書き換えたところだけを記載します。他のところはそのままにしてあります。

sudo vi /etc/vsftpd.conf

下記を変更しました。
vsftpdをスタンドアロンモードで起動する。
listen=YES

IPv4ソケットの代わりにIPv6ソケットをリスンする。
listen_ipv6=NO

ローカルユーザのログインを許可する。
local_enable=YES

ファイルシステムを変更するFTPコマンドを許可する。
write_enable=YES

ユーザがディレクトリやファイルを作成する際に使用されるumask値。デフォルトは022。
local_umask=022

アスキーモード転送許可
ascii_upload_enable=YES
ascii_download_enable=YES

アクティブモード時の、サーバ側が使用するデータ転送用ポート番号の指定方法を定義する。
connect_from_port_20=NO

ユーザーのログインディレクトリをそのユーザーのルートディレクトリに変更する。
ユーザーはログインディレクトリの外側にアクセスできなくなる。
ただしchroot_list_enableがYESの場合、vsftpd.chroot_list
に記載されたユーザーはその対象から除外される。
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

ディレクトリごと一括での転送
ls_recurse_enable=YES

PASVデータコネクションで使用する最小、最大ポート
pasv_min_port=50001
pasv_max_port=50020

空のファイルvsftpd.chroot_listを作成して、あとから追加予定のユーザーを記述します。

sudo vi /etc/vsftpd.chroot_list

FTPサーバーを再起動します。

sudo systemctl restart vsftpd

次は新規でFTPサーバーに接続するユーザーを作成します。さらにドキュメントルートの所有権がwww-dataなので、それが所属するグループに、作成したユーザーを加えます。これによりユーザーはディレクトリにアクセスすることができるようになります。

sudo adduser ftpuser
sudo usermod -a -G www-data ftpuser

ここまででFTPサーバーの設定は完了しました。このあとはポート開放をしてFTPサーバーに到達できるようにします。クラウドサービスのネットワークとOS自体の2つに設定する必要があります。
まずは、ubuntuにインストール済みのiptabelesの設定をします。
エディタでrules.v4というファイルを開き、次の項目を追記します。
先におこなったFTPサーバーの設定ファイルで転送方法をパッシブモードとして、ポート番号20を使用しないことにしました。それゆえ、FTPサーバーがクライアントへ指定するパッシブモード接続先ポート番号を50001から50020の範囲に制限しました。

sudo vi /etc/iptables/rules.v4

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 50001:50020 -j ACCEPT

再読み込みして更新します。今、行ったことが有効になったかの確認もします。

sudo netfilter-persistent reload
sudo iptables -L

今度はoracle cloudにある仮想クラウドネットワークで対象となるVCNを選択します。セキュリティリストから進むことができるイングレスルールの追加において、21と50001から50020のポートを追加しておきます。

ここまでで設定は完了しました。FTPクライアントから接続をしてみます。
ここではNEXT FTPというソフトを使用し、設定でホストアドレス、ユーザー名、パスワードを入力して接続します。

接続はできましたが、ディレクトリの作成やファイルのアップロードができません。
このディレクトリに書き込み権限がなかったようです。
次のコマンドを入力してこの問題を回避します。

sudo find /var/www/minokamo.online -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +

教育

Posted by admin