本日は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 {} +
コメント