FTPプロトコルに従うことができるように人々に紹介する文書は次のとおりです:http://slacksite.com/other/ftp.html
- アクティブ モードの FTP を実行するには、TCP ポート 21 への着信接続とポート 20 からの発信接続を許可する必要があります。
- パッシブ モードの FTP を実行するには、TCP ポート 21 への着信接続と、サーバー コンピューターでランダムに生成されたポートへの着信接続を許可する必要があります (netfilter で conntrack モジュールを使用する必要があります)
投稿には OUTPUT チェーンに関するものは何もないので、ここにも含めます。 OUTPUT チェーンがデフォルト ドロップの場合、これは重要です。
これらのルールを iptables 構成に追加します:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
パッシブ モードの FTP をサポートするには、起動時に ip_conntrack_ftp モジュールをロードする必要があります。 /etc/sysconfig/iptables-config ファイルの IPTABLES_MODULES 行のコメントを外して変更し、次のようにします。
IPTABLES_MODULES="ip_conntrack_ftp"
iptables 構成を保存し、iptables を再起動します。
service iptables save
service iptables restart
VSFTPD を問題として完全に除外するには、VSFTPD を停止し、「netstat -a」を使用してポート 21 でリッスンしていないことを確認してから、次のコマンドを実行します:
nc -l 21
これにより、ポート 21 でリッスンする netcat が開始され、入力がシェルにエコーされます。別のホストである TELNET からサーバーのポート 21 に接続し、TCP 接続が確立されていること、および TELNET 接続を入力するとシェルに出力が表示されることを確認します。
最後に、VSFTPD を元に戻し、ポート 21 でリッスンしていることを確認してから、再度接続を試みます。 netcat への接続が機能していれば、iptables ルールは問題ありません。 netcat が機能した後に VSFTPD への接続が機能しない場合は、VSFTPD 構成に問題があります。