vsFTPの設定

Servers

4年ほど自社運用に使用していたLinuxサーバーのWAN入口ファイヤーウォールを変更した為、vsFTPへのクライアントからアクセスできないようになりました。FTPクライアントから通常モードで接続を試みると「Listenソケットが取得できません」というエラー表示、PASVモードで接続を試みると「ファイルリストが取得できません」というエラー表示です。このような場合の原因としては、サーバーとファイアーウォールのポート間での通信が遮断されている事が原因。FTPクライアントは21番ポートでサーバーへ接続し20番ポートで情報を受信しますが、ファイアーウォールで返答を遮断してしまっています。ファイアーウォールの内側でサーバーを設置した場合は、「PASVモード」に設定変更します。PASVモードは21番ポートで通信を受信し、サーバー内部でその他のポートで処理し21番ポートでクライアントに応答します。2つ目にPASVモードでファイルリストが表示されないのは、このサーバーが内部処理の為のポートを通過させないからです。では内部処理のポートを4020~4060として、その設定方法を解説します。(redhat EL4 及び Fedora6 辺り以前バージョン)

◇iptablesの新ルールをREJECT行の上段に追加    vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 4020:4060 -j ACCEPT

◇vsftpd.conf のルールを末行に追加    vi /etc/vsftpd/vsftpd.conf

pasv_enable=YES

pasv_min_port=4020

pasv_max_port=4060

※vsFtpが起動しなくなるので、空白、空行がないよう注意。後は、FTPクライアントソフトの「PASVモード」を有効に設定を変えれば完了です。(最近のLinuxサーバではこのような設定をしなくても、デフォルト設定で付属スクリプトでPASVモード環境が出来てます。)

Leave a Reply

Your email address will not be published. Required fields are marked *