web-dev-qa-db-ja.com

非常に単純なVSFTPDサーバーを機能させるにはどうすればよいですか?

カーネル2.6.35-ec2でArchLinuxを実行しています。最新バージョンのVSFTPDをインストールして実行しています。ログファイルは次のとおりです。

anonymous_enable=YES
local_enable=YES
write_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log

これは私の最終的な構成ではありませんが、それを機能させるために私がそれを切り詰めたものです。

サーバーはAmazonEC2上にあり、ポート20と21が開いています。他のファイアウォールは有効になっていません。

OSXで/usr/bin/ftpおよびTransmitクライアントに接続しようとしています。前者は長い間ハングし、最終的に接続がタイムアウトしたと言います。後者は、接続がタイムアウトしたと言うのに約10秒しかかかりません。ポート20と21を指定してみました。

Auth.logやeverything.logなどの通常のArchLinuxログファイルには何もありません。 /var/log/vsftpd.logも存在しません。

誰かが私がこれからどこから始めるべきかを理解するのを手伝ってくれる? Arch Linux wikiと私が行った他の読み物は、これが事実上の標準の軽量FTPサーバーであることを示唆しています。

2
Cera

他の応答とコメントを見た後、vsftpがrootとして実行したくないことが原因である可能性があります(非常に安全なftpであるため:-))。

私の記憶は、それがユーザーftpとして実行したいということです(またはそれが私がそれを設定したことを思い出す方法です)。

3
PatS

FTPモードには、ポートモードとパッシブモードの2つがあります。違いは、サーバーがデータ接続をセットアップしようとする方法です(最初の接続は、サーバーにコマンドを送信するコマンド接続であり、データ接続は、ファイルの転送に使用される2次接続です)。

ポートモードは、サーバーがクライアントのポート20への接続を試行する場所です。つまり、これはサーバーからクライアントへの着信接続からです。これが機能するためには、クライアント側でポート20を開き、ftpセッションの発信者に転送する必要があります。これは通常、非企業間取引の設定では実行できません。

パッシブモードは、サーバーがポート21に加えてセカンダリポートを自身に開く場所です。このポートは、セッションの転送部分でネゴシエートされ、ダウンロードするために1024を超えるポートに接続するようにクライアントに指示します。またはデータをアップロードします。このモードは、NATデバイスが間にあるクライアントサーバートランザクションにはるかに適しています。

これが機能するためには、サーバーを保護するファイアウォールがパッシブポートでの接続を許可する必要があります。多くのファイアウォールでは、それらはftpに対応しているため、ネゴシエートされたポートを監視し、接続を許可します。ただし、これは常に実行可能であるとは限らないため、範囲を手動で開く必要があります。

これを設定する最良の方法は、vsftpd構成でポート範囲を定義することです。

pasv_min_port = 31000
pasv_max_port = 32000

次に、ファイアウォール構成で定義された範囲を開き、ftpクライアントにパッシブモードを使用するように指示できます。これは、一部のコマンドラインクライアントの場合はpasvコマンドを使用して、またはGUIクライアントの場合はサーバー設定で実行されます。

/ etc/hosts.allow | deny

これらの2つのファイルは、サーバーに接続できるものを包括的に制御します。それらが両方とも存在することを確認してください。また、hosts.denyには特にdenyステートメントを含めないでください。

1
Paul