web-dev-qa-db-ja.com

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

vsftpdcentosにインストールするときはいつでも、ユーザーのjail環境のみをセットアップし、残りはvsftpdのデフォルト構成です。ユーザーを作成してfilezila ftpクライアントで接続しようとしましたが、パッシブモードで接続できませんでした。私は常にtransfer settingsをアクティブモードに変更してftp serverに正常に接続します。それ以外の場合は

 Error: Failed to retrieve directory listing

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

52
Toqeer

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 modes の説明はこちらです。

90
user9517

パッシブモードを有効にするには、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-configおよびiptables_MODULESオプションにip_conntrack_ftpを追加します。その後、iptablesを再起動します。

/sbin/service iptables restart
25
brain99

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

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

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

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

通常、これはftpサーバー、vsftpdではなく、パッシブモードが使用されないようにするiptableのようなファイアウォールです(データ転送に必要なTCP接続のブロック)。

4
user130370

CentOS 8でvsftpパッシブモードを機能させるには、次の手順を実行する必要がありました。

Vsftpd構成でパッシブモードを有効にする/etc/vsftpd/vsftpd.config

pasv_enable=Yes
pasv_min_port=50000
pasv_max_port=50999

FirewalldでFTPサービスを有効にします。

firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload

別の post で述べたように、カーネルモジュール「nf_conntrack_ftp」(CentOS 8ではすでにそうでした)をロードし、カーネル設定で「nf_conntrack_helper」を有効にする必要があります

echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper

次の行を/etc/sysctl.conf(または/etc/sysctl.d/10-nf_conntrack_helper.confが存在する場合は/etc/sysctl.d/)に追加して、再起動の永続的な設定を行います。

net.netfilter.nf_conntrack_helper=1

接続トラックを有効にすると、ローカルファイアウォールでパッシブポートを追加構成する必要はありません。

2
h18c