vsftpdでパッシブモードを設定する

2024-02-28

vsftpdでPASVモードとF/Wの設定について

FTPサーバーのvsftpdでパッシブモードも有効にして、F/W(iptables)でパッシブモードで利用するポートを開放する手順を説明します

vsftpdでパッシブモードを有効にします

vsftpdの設定は既にFTPサーバーの設定が済んでいる事が前提で説明します。

vsftpd.confを編集して、「pasv_enable=YES」としてパッシブモードも有効します。但しデフォルトでパッシブモードが有効にしているので明示的に設定しないくても大丈夫です。
使用するポートは「pasv_min_port」、「pasv_max_port」でパッシブモードで利用するポートを指定します。

パッシブモードも設定を変更したら、vsftpdを再起動します

$ sudo vi /etc/vsftpd/vsftpd.conf

# パッシブモードも有効にする
pasv_enable=YES

# パッシブモードで使用するポート範囲設定
pasv_min_port=40000
pasv_max_port=40030

F/W(iptables) で「ip_conntrack_ftp」を利用する

vsftpdでパッシブモードも有効にしたら、F/Wでパッシブモードで利用するポートでの通信を通すように設定を変更します

F/Wの設定を行なわないとパッシブモードで接続しても、ファイル一覧が取得できないので、F/Wでパッシブモードで使用するポートを開放します。
パッシブモードで利用するするポートをF/Wで通すには、「ip_conntrack_ftp」モジュールも有効にしてアプリケーションレベルでFTPプロトコルを通す方法と、パッシブモードで使用するポートをF/Wにポートレベルで通す方法があります

下記では、「ip_conntrack_ftp」モジュールを利用して、アプリケーションレベルでFTPプロトコルを通す方法を説明します

FTPで利用する「21」番ポートの通信を許可します

$ sudo iptables -I INPUT 4 -p tcp --dport 21 -j ACCEPT

21番ポートの設定が終わると、iptables-configの設定ファイルで「ip_conntrack_ftp」を有効してモジュールをロードする設定にします。IPマスカレードを利用している場合は「ip_nat_ftp」モジュールも設定します

$ sudo vi /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"

設定が終わるとiptablesを再起動します

# /etc/init.d/iptables restart

F/W(iptables) でパッシブモードで利用するポートを許可する

iptablesで「ip_conntrack_ftp」のモージュルを利用しない場合は、iptablesで許可するポートを追加する手順と同様でパッシブモードで利用する40000から40030を許可する設定をおこない、iptablesを再起動します

# 21番ポートの通信を許可します
$ sudo iptables -I INPUT 4 -p tcp --dport 21 -j ACCEPT

# パッシブモードで利用する4000から40030の通信を許可します
$ sudo iptables -I INPUT -p tcp --dport 40000:40030  -j ACCEPT

# iptablesを再起動します
$ sudo /etc/init.d/iptables restart