vsftpd をパッシブモードで動作するように設定する方法

vsftpd をパッシブモードで動作するように設定する方法

vsftpdにインストールするときはcentos、ユーザー用の jail 環境のみをセットアップし、残りは のデフォルト構成ですvsftpd。ユーザーを作成し、FTP クライアントで接続しようとしましたが、パッシブモードでは接続できませんでした。に正常に接続するためにfilezila常に をアクティブモードに変更します。そうしないと、 transfer settingsftp server

 Error: Failed to retrieve directory listing

では、ファイル内のディレクティブを変更してvsftp.conf、パッシブ モードでサーバーに接続できる方法はありますか?

答え1

vsftpd のパッシブ モードを設定するには、vsftpd.conf でいくつかのパラメータを設定する必要があります。

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

これにより、パッシブ モードが有効になり、データ接続に 11 個のポートを使用するように制限されます。ファイアウォールでこれらのポートを開く必要があるため、これは便利です。

iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

テスト後にすべてがうまくいった場合は、ファイアウォールの状態を次のように保存します。

service iptables save

ファイルが更新されます/etc/sysconfig/iptables

CentOS 7 でこれを行うには、iptables ではなく新しい firewalld を使用する必要があります。

あなたのゾーンを見つけましょう:

# firewall-cmd --get-active-zones
public
  interfaces: eth0

私のゾーンは「パブリック」なので、ゾーンをパブリックに設定し、ポート範囲を追加してから、リロードします。

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

接続すると何が起こるか

  • クライアントはポート 21 で vsftpd サーバーに接続します。

  • サーバーは、上記で指定された範囲からどのポートに接続するかをクライアントに通知して応答します。

  • クライアントは指定されたポートでデータ接続を行い、セッションが継続されます。

さまざまなFTPについての素晴らしい説明がありますモードここ。

答え2

パッシブ モードを有効にするには、vsftp.conf で次の構成オプションを設定します。

pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx

もちろん、開始ポートと終了ポートを変更することができます。xxx をサーバーのパブリック IP に置き換える必要があります。

さらに、ファイアウォールのパッシブ モード ポート範囲を開く必要があります。 CentOS では、ip_conntrack_ftpファイアウォールで FTP 接続を処理するモジュールをロードできます。/etc/sysconfig/iptables-configIPTABLES_MODULES オプションを編集して ip_conntrack_ftp を追加します。その後、iptables を再起動します。

/sbin/service iptables restart

答え3

の横にpasv_enable=YES、VSFTP が PASV モードを実行するポート範囲を指定します。

pasv_min_port=50000
pasv_max_port=50999
pasv_enable=YES

これらのポートでパケットの送信を許可するように iptables を設定することを忘れないでください。

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT

答え4

通常、パッシブ モードの使用を妨げるのは、FTP サーバー (vsftpd) ではなく、iptable などのファイアウォールです (データ転送に必要な TCP 接続をブロックします)。

関連情報