質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Q&A

解決済

1回答

3581閲覧

VPSでのFTPの設定について

avantgarden

総合スコア121

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

0グッド

0クリップ

投稿2017/01/02 14:27

編集2017/01/03 00:58

VPSを借りて設定をしているのですが、FTPのところで質問があります。
OSはCentOS6.7です。

vsftpをインストールしました。
FTPユーザーはサーバの作業ユーザーと同じにして、
所属グループはwheelとapacheにしています。

*apacheにも所属させているのは、wordpressをインストールした後に
/var/www配下の所有者をapacheにしているからです。

21番ポートも開放しており、ファイル転送ツールで接続自体はできる
のですが、ファイルの編集やダウンロードをしようとすると
Connection refusedで弾かれてしまいます。

原因がわからず困っているので、可能性として考えられるものを教えて
いただけると嬉しいです。

不足な情報があれば追記します。

よろしくお願いします。

(追記)

「接続自体はできる」と書きましたが、ファイル転送ツールの表示上
つながったように見えただけのようです。他のツールを使うと接続しに
いく時点で弾かれます。

あと、コンソールでのftpコマンドではログインでき、getコマンドは
効きます。ツールの問題なのでしょうか…?

chkconfig --list | grep ftpd を確認すると、
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
なぜかこうなります。

ただ、service chkconfig statusではrunningと出ますし、
実際ftpコマンドは効くので関係ないと思うのですが。

+さくらのVPSです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

21番ポートも開放しており、

iptables -L -v -n

で確認できてますか?

あとは、vps屋さん側でファイアウォール機能が提供されていて、それが効いているとか、いきなりブルートフォースアタックを食らって自動的にブロックされているとかありませんか?

投稿2017/01/03 00:13

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avantgarden

2017/01/03 00:44

iptablesは確認しています。(記述されていることの詳細はわかりませんが、正常に動いている80番ポートと同じ状態なのでOKと判断) また、SELinuxはデフォルトで無効になっています。 攻撃についてですが、これは総当たりのことですよね。rootでのログインは無効にしていますし、SSHを鍵認証にしているので、可能性は低いと思うんですが。
mit0223

2017/01/03 02:20

> コンソールでのftpコマンドではログインでき、 というのは、サーバ内での接続ができているということでしょうか?サーバ内から接続できていて、外部から接続できないとすると、 iptables かファイアウォールか bind アドレスかということになると思います。 # netstat -lnpt とかで、 vfstpd がポート21を LISTEN しており、そのバインドアドレスはグローバルIPであるということが確認できますでしょうか?
avantgarden

2017/01/03 02:52

netstat -anpで見たところ、 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN - と出ます。グローバルIPになっていないですがこれが原因なのでしょうか。 ちなみに、/etc/sysconfig/iptablesには下記の通り記述しました。 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT あまり知識がないのですが、よろしくお願いします。
avantgarden

2017/01/03 02:54

> コンソールでのftpコマンドではログインでき、 これは、「ローカルのコンソールでやっても」うまくいくという意味です。 なので余計に謎な状態です…
mit0223

2017/01/03 03:18

> グローバルIPになっていないですがこれが原因なのでしょうか。 いえ、 0.0.0.0 はすべてのIPアドレスからの通信を受けるので、 LISTEN はこれで大丈夫です。 実は、クライアント側ファイアウォールで制限しているということはありませんか?Windows とか BB ルータで出て行く側を制限している場合もあります。 参考:http://tooljp.com/windows/doc/Windows7/WindowsFirewall/Firewall_rule.html
avantgarden

2017/01/03 03:24

Macなのですが、FWを切ってみましたが変わりませんでした。コマンドでは行くのがほんとに謎です。FTPのログインユーザーは、編集しようとしているファイルの所有者のグループに属しており、ファイルのパーミッションも664なので、書き込みできる状態ではあるはずです。
mit0223

2017/01/03 04:03

Mac であれば、 telnet コマンドで確認するのが簡単です。 telnet サーバ名 21 と起動して、 Trying xxx.xxx.xxx.xxx... Connected to サーバ名. Escape character is '^]'. というように Connected のメッセージが出れば、接続はできているということになります。 Ctrl-] を入力し、 telnet> プロンプトで close と入力してぬけてください。 ただ、質問でも Connection refused と書かれているので、telnet でも connection refused になるはずですが。
mit0223

2017/01/03 04:21

で、 connection refused になるのであれば、誰が嫌がっているか調べてみましょう ターミナルシェルを2個開いて片方で $ tcpdump -i en0 -n icmp を起動しておきます。この状態でもう片方でさきほどの telnet コマンドを入力します。 $ telnet サーバ名 21 すると、tcpdump のほうに admin prohibited の ICMP パケットが見えるはずです。その送信元のIPは何になってますでしょうか?サーバのIPアドレスであれば、サーバが拒否しているということになります。
avantgarden

2017/01/03 04:27

telnetコマンドでは正常に接続できているようです。 長文になりますが、ファイル転送ツールのログは以下のとおりです。 状態: 153.126.143.243:21 に接続中... 状態: 接続を確立しました, ウェルカム メッセージを待っています... 状態: FTP over TLS に未対応のセキュアではないサーバです. 状態: Logged in 状態: ディレクトリ一覧を取得中... コマンド: PWD レスポンス: 257 "/" コマンド: TYPE I レスポンス: 200 Switching to Binary mode. コマンド: PASV レスポンス: 227 Entering Passive Mode (153,126,143,243,195,100). コマンド: LIST エラー: データ接続が確立できません: ECONNREFUSED - サーバによって接続が拒否されました エラー: Connection timed out after 20 seconds of inactivity エラー: ディレクトリ一覧表示の取り出しに失敗しました リストのところで引っかかっているので、ローカルからのFTP接続してdirコマンドを打った時の様子を再度みてみたのですが、 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir 229 Entering Extended Passive Mode (|||50030|). ftp: Can't connect to `xxx.xxx.xxx.xxx': Connection refused 200 EPRT command successful. Consider using EPSV. 150 Here comes the directory listing. -rw-rw-r-- 1 48 48 425 Jan 02 15:50 index.php drwxrwxr-x 5 48 48 4096 Jan 02 17:30 sample 226 Directory send OK. ftp> となりました。ログインパスワードを入力した直後からの応答です。dirコマンドは4行目で、IPアドレスはダミーに書き換えています。
mit0223

2017/01/03 04:39

あ、Passive Mode の話ですね。 であれば、 Passive Mode 用のポートを開放する必要があります。 参考:http://ameblo.jp/itboy/entry-10249857007.html pasv_min_port=60000 pasv_max_port=60050 とかを指定して、 iptables でこの範囲のポート番号を開放してください。
mit0223

2017/01/03 04:47 編集

範囲指定の iptables は以下のような感じです。 iptables -A INPUT -m state --state NEW -p tcp -m tcp --dport 60000:60050 -j ACCEPT
avantgarden

2017/01/03 05:13

ちょっと用事があるので、後ほど試します。 結果はまた書き込ませていただきます。
avantgarden

2017/01/03 09:31

解決しました。 ポートを解放していなかったことが原因でした…。 vsftpd.confに pasv_min_port=50000 pasv_max_port=50030 と記述はしていたのですが、これの意味がいまいち分からず、この範囲の ポート解放の必要性に気がつきませんでした。 参考URLなどを見て勉強いたします。 ありがとうございました。
mit0223

2017/01/03 12:49

解決してよかったです。 ftp と聞いて、もう少し早く Passive Mode の話に到達すべきでした。時間がかかってしまい、すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問