メモ > サーバ > 構築: Webサーバ設定 > FTPD
FTPD
※FTPサーバを構築する
※SSHでもファイルを転送できる(SFTP)ので、FTPDは必須ではない
EC2にvsftpをセッティングする際のハマリポイント - Qiita
https://qiita.com/dogyear/items/289b314db9af42e15cfa
vsftpdの設定(vsftpd.conf)
http://www.nina.jp/server/redhat/vsftpd/vsftpd.conf.html
[AWS] EC2でFTPを使いたい - Qiita
https://qiita.com/Yuki_BB3/items/deeb84c360c6f3c37f51
【AWS】AWSでFTPサーバー立てる時に気をつけるべき2つのこと+α | DevelopersIO
https://dev.classmethod.jp/articles/to-be-aware-of-when-settingup-ftpserver-with-aws/
VPSにFTPを可能にするVsftpd設定 | WEB担当者の備忘録
https://liapoc.com/vsftpd.html
【AWS】閉域網のEC2にFTPサーバーを構築 - Hanatare's PaPa
https://www.hanatare-papa.jp/entry/technology-aws-ftp-1
AWS EC2でWebサーバーを立てる - Qiita
https://qiita.com/niyute/items/ea02d93fa3a5ee2868d7
FTPでの接続には、パッシブモードとアクティブモードがある
パッシブモードはアクティブモードの欠点をカバーする接続方法
特に理由が無ければパッシブモードを使えばいいので、この解説でもパッシブモードを前提とする
FTPのアクティブモードとパッシブモードの違いを徹底解説!|ITトレンド
https://it-trend.jp/file_transfer/article/104-0006
FTPにおけるアクティブモードとパッシブモードの違い
http://cos.linux-dvr.biz/archives/131
■ポート番号の確認
現在利用できるポートを確認する
この範囲内でパッシブモード接続用のポート番号を決定する
$ cat /proc/sys/net/ipv4/ip_local_port_range
32768 60999
今回は以下の範囲を使用するとする(毎回この値で設定して問題ないはず)
60001〜60010
■FTPDをインストール
# yum -y install vsftpd … vsftpdをインストール
# vi /etc/vsftpd/vsftpd.conf … vsftpdの設定ファイルを編集
pasv_addressには、そのサーバのグローバルIPアドレスを設定する
「pasv_addr_resolve=YES」なら、「refirio.net」のようにホスト名を設定してもいい
EC2にvsftpをセッティングする際のハマリポイント - Qiita
https://qiita.com/dogyear/items/289b314db9af42e15cfa
【AWS】AWSでFTPサーバー立てる時に気をつけるべき2つのこと+α | DevelopersIO
https://dev.classmethod.jp/articles/to-be-aware-of-when-settingup-ftpserver-with-aws/
anonymous_enable=NO … 匿名ユーザーのログインは許可しない
dirmessage_enable=NO … 新しいディレクトリに初めて移動してもメッセージは表示しない
connect_from_port_20=NO … アクティブモードを無効にする
xferlog_enable=YES … ログを記録する
xferlog_file=/var/log/vsftpd.log … ログを記録するファイル
xferlog_std_format=NO … wu-ftpdではなく,vsftpdログ形式でログを記録する
ascii_upload_enable=YES … アスキーモードのアップロードを有効にする
ascii_download_enable=YES … アスキーモードのダウンロードを有効にする
ftpd_banner=Welcome to blah FTP service. … ログイン時にソフト名とバージョンが表示されないようにする
ls_recurse_enable=YES … 「ls -R」コマンド(ディレクトリリストを再帰的に表示)の使用を許可する
# ファイルの最後にある設定
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=NO … 変更(ホストへのアクセスを制御しない / EC2の場合はセキュリティグループで設定する)
# ファイルの最後に追加する設定
use_localtime=YES … ローカルタイムを使用する(デフォルトはGMT)
force_dot_files=YES … .(ドット)で始まるファイルを表示する
pasv_enable=YES … パッシブモードを有効にする
pasv_addr_resolve=YES … パッシブモード接続先IPアドレスをホスト名から取得する
pasv_address=203.0.113.1 … サーバのグローバルIPアドレス
pasv_min_port=60001 … パッシブモード接続で使用するポート番号の最小値
pasv_max_port=60010 … パッシブモード接続で使用するポート番号の最大値
# systemctl start vsftpd
# systemctl enable vsftpd
SSHでログインしない、つまり「--shell /sbin/nologin」を指定したユーザのFTP接続を許可するため、以下の指定を行う
# vi /etc/shells
■FTPD用ユーザを作成
SSHでのログインを許可しない、ホームディレクトリが「/var/www」のユーザを作成する場合
(ホームページ更新用なら、基本的にこの方法で作成するといい)
/sbin/nologin … ファイルの最後に追加
# adduser --shell /sbin/nologin --home /var/www username1
# usermod -a -G apache username1
# passwd username1
abcd1234
上記の制限を行わないユーザを作成する場合
(ホームディレクトリは「/home/ユーザ名」になる)
# adduser username2
# usermod -a -G apache username2
# passwd username2
abcd1234
■ポートを開放
セキュリティグループで21番ポートを開放しておく
ソースは、可能なら「203.0.113.1/32」などのようにIP制限をかけておく
ポート範囲 ソース
21 0.0.0.0/0
60000 - 60010 0.0.0.0/0
EC2にvsftpをセッティングする際のハマリポイント - Qiita
https://qiita.com/dogyear/items/289b314db9af42e15cfa
CentOS7環境の場合、以下のように設定する
# firewall-cmd --permanent --add-service=ftp … ファイヤーウォールを設定
# firewall-cmd --permanent --add-port=60000-60010/tcp … ファイヤーウォールを設定
# firewall-cmd --reload … ファイヤーウォールの設定を反映
CentOS6環境の場合、以下のように設定する
# vi /etc/sysconfig/iptables … ファイヤーウォールを設定
■FTPDの接続テスト
FileZillaから以下でFTPアクセスを試す
プロトコル: FTP
ホスト: 192.168.33.10(接続先のIPアドレス)
暗号化: なし
ユーザ名: username1
パスワード: abcd1234
転送モード: デフォルト
暗号化は、
「使用可能なら明示的な FTP over TLS を使用」もしくは
「平文の FTP のみを使用する(安全でない)」を選択する
EC2環境の場合、転送モードが「デフォルト」もしくは「パッシブ」にすると接続できた
「アクティブ」だと、以下のエラーになって接続できなかった
#FTPを許可
-A MY-FIREWALL -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A MY-FIREWALL -m state --state NEW -m tcp -p tcp --dport 60000:60010 -j ACCEPT … 追加
# service iptables restart … ファイヤーウォールを再起動
状態: サーバーはルーティング不可能なアドレスでパッシブ応答を送信しました。代わりにサーバーのアドレスを使用します。
コマンド: LIST
エラー: 非アクティブになってから 20 秒後に接続がタイムアウトになりました
エラー: ディレクトリ リスト表示の取り出しに失敗しました
なお、設定を変更して再接続テストする場合、FTPソフトの再起動を行うこと
前回接続したときの情報がキャッシュされているようで、接続できない設定でも接続できているように見えることがある