Apt-getを使用してUbuntu10.04にPureFTP1.0.24を含むpure-ftpdパッケージをインストールしました。
これはデフォルトのポート範囲ですが、以下を含むファイル/ etc/pure-ftpd/conf/PassivePortRangeを追加しました。
30000 50000
これにより、実行時にコマンドに正しいオプションが追加されます(-p 30000:50000
)しかし、何らかの理由で、50000を超えるポートを使用しようとする接続がまだ発生します。問題はこれらがアクティブなftpセッションであるということだと思いますが、パッシブモードでのみ機能する場合、ポート範囲を指定する意味は何ですか?それでも、ファイアウォールのすべてのポートを開く必要があります...
(パッシブ接続だけでなく)すべての接続のポート範囲を指定する方法はありますか?
アクティブモードでは、サーバーはクライアント定義のIPアドレスへの接続を開始するため、サーバーは使用されているポート番号に影響を与える方法がありません。この場合、サーバーがクライアントへのデータ接続を開始するため、21以外の着信ポートを開く必要はありません。
パッシブモードでは、クライアントはサーバー定義のポートへの接続を開きます。これは、パッシブポートの範囲が機能する場所です。サーバーは範囲内の空きポートを選択し、それをクライアントに渡します。もちろん、これは、ポート範囲全体をサーバーファイアウォールで開く必要があることを意味します。これには、セキュリティ上の影響があります。
Linuxには、パッシブFTP用に広いポート範囲を開くことの影響を軽減する優れた機能があります-iptables接続追跡。これを利用するには、ip_conntrack_ftpモジュールがロードされていることを確認する必要があります。そうすると、次のようなトラフィックを許可できます# iptables -A your_chain -i your_iface -m state --state RELATED -m helper --helper ftp -j ACCEPT
(必要に応じてポート範囲を含めることができます)。これは、conntrackFTPヘルパーによって管理される関連接続を受け入れるようにiptablesに指示します。したがって、他のサービスがパッシブポート範囲のソケットでリッスンしている場合、iptablesは、FTPに関連していることを認識できないため、ポートへのアクセスを拒否します。
パッシブモードでは、サーバーはクライアントにランダムポートに接続し直すように指示します。特定の範囲を使用するようにサーバーを構成したので、これらのみを使用する必要があります。この範囲は、接続を許可するためにファイアウォールを介して開く必要があります(ファイアウォールがFTPパケットを調べて動的ルールを追加するのに十分賢い場合を除きます)。
アクティブモードでは、クライアントはサーバーにランダムポートで接続するように要求します。クライアントがこれを選択するため、ユーザーはこれを制御できません。ただし、アクティブが機能するためには、サーバーからのこれらの接続を許可するために、状態保持ルールを追加するだけで済みます。すべてのポートを完全に開く必要はありません。