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


49

私はインストールするたびvsftpdcentos、私は、セットアップのユーザーと休息のための刑務所の環境はデフォルトの設定ですvsftpd。ユーザーを作成し、filezilaftpクライアントで接続しようとしましたが、パッシブモードで接続できませんでした。私は常にtransfer settingsアクティブモードに変更して、正常に接続しftp serverます

 Error: Failed to retrieve directory listing

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

回答:


86

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 モードの優れた説明がここにあります。


...のmax後にポートを配置する理由を疑問に思いminますが、より重要なことは、ポート10090から10100を開くと、あなたが言うように10ではなく11のポートになります。
アレクシスウィルケ

私はそれがアルファベット順であると信じています、それらは別々の指令であるので、それは本当に重要ではありません。
user9517はGoFundMonicaを

3
これなしでは私のために働いていませんpasv_address
fbmd

これを見つけるのに何年もかかりましたが、vsftpdガイドのどれもこれをリストしていません...素晴らしい
ピート

素晴らしい-このvsftp構成はすべてのFTPファイアウォールの問題を解決しました:)
BurninLeo

24

パッシブモードを有効にするには、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-configip_conntrack_ftpを編集してIPTABLES_MODULESオプションに追加します。その後、iptablesを再起動します。

/sbin/service iptables restart

3
pasv_address他のすべてが設定されていて、それでも動作しない場合に、トリックを行うのは何ですか。
fbmd

1
@fbmdはpasv_addressを試す前に、pasv_maxとmin_portの両方が正しい順序であるかどうかも確認する必要があります。pasv_min_portで最大値が設定されていたことが偶然起こりましたが、vsftpdは単にこれを無視します。これは、pasvポートが正しく設定されていると視覚的に思わせる、既知のサイレントな欠陥/バグですが、そうではありません。これは私に起こり、私の問題を解決しました。
ペドロ・スーザ

でDNSアドレスを指定するpasv_address場合は、追加する必要がありますpasv_addr_resolve=YES(デフォルトはNO
Pierre-Damien

6

の横に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

標準のCentOSのシステムで原因ルールがで追加したブランケットDROPありiptables -A INPUT ... 無視される
user9517がGoFundMonicaサポート

pasv_addressvsftpd.confファイルに必ず含めてください。
ペドロマドリード

3

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


実際、vsftpdはファイアウォールでポートを開くのに十分なほど賢いかもしれません...しかし、私がここで見る答えから、それはそのような偉業のようには見えません。
アレクシスウィルケ

3
@アレクシス。アプリがルールを無視してポートを開くだけの場合、ファイアウォールを使用しても意味がありません。
ekerner
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.