2009年07月15日

Cent4.7 FTPのPASVモードでの接続を有効化

久しぶりにFTP接続を実行したところ、接続に失敗するようになっていました。

vsftpd.conf、hosts.allowには特におかしなところはなく、iptablesを停止した状態でFTP接続すると普通に接続できるので、iptablesのファイアウォール設定に問題がありそうです。
6月22日にiptablesを有効にしましたが、おそらくそのときからFTP接続が不可になっていたものと思われます。

現在、サーバ側ではiptablesで20番と21番ポートを開放していますが、クライアントからFFFTPでの接続を開始した際のステータスは
「ダウンロードのためにホスト 192.168.1.3 (17338) に接続しています.」
と表示されてその状態が10数秒続き、その後
「FFFTP:エラー ファイル一覧がダウンロードできませんでした。」
と表示されて接続が停止します。

FFFTPでは初期設定においてPASV(パッシブ)モードが有効に設定されており、この時点でサーバIPアドレスの後の値 (17338) はポート番号と思われ、この値は新しい接続を開始するたびに変化しますので、PASVモード接続の際は、クライアントソフトがランダムなポートを選択しているものと思われます。

参考:PASVモードとは:IT用語辞典

現状、iptablesにおいては一部のウェルノウンポート以外は閉じてますので、この状態ではFFFTPが要求したポートへは接続できません。
i ptables、vsftpd.conf等の大掛かりな変更なしににFTP接続を可能にするためには、

1.クライアント側からPASVモードでない、通常のFTP接続を行う
2.サーバ側でPASVモード接続を許可する

の2種類が考えられます。

まずクライアント側、FFFTPの設定変更を実施してみました。

先に書いたようにFFFTPでは初期設定においてPASVモードが有効に設定されているため、FFFTPを起動→「ホスト一覧」ウインドウにおいてホストを選択後「設定変更」をクリック→「ホストの設定」画面の「拡張」タブをクリック→「PASVモードを使う」チェックを外し、OKを押してPASVモードを無効化します。
その状態で再度「ホスト一覧」で「接続」をクリックしたところ、

Windows セキュリティの重要な警告」が表示。

サーバからの接続要求に、クライアント側のファイアウォールが反応した模様です。
この方法ですと、クライアント側のポートを開放するよう、外部(サーバ)から要求が来る形になり、セキュリティの面で少々心配ではあります。

次にサーバ側でPASVモードでの接続を許可する設定を実行してみました。

実行するためにはサーバ側で
ip_conntrack_ftp
ip_nat_ftp (NATを使用している場合)
以上2つのモジュールが読み込まれている必要があるそうです。

lsmodで確認したところ、どちらも読み込まれていなかったので、
/etc/sysconfig/iptable-config に
IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"
を追記し、 /etc/rc.d/init.d/iptables を再起動したところ、ip_conntrack_ftp および
ip_nat_ftp が読み込まれ、PASVモードでの接続が可能になりました。

iptables再起動時の記述です。

# /etc/rc.d/init.d/iptables restart
ファイアウォールルールを適用中:                            [  OK  ]
チェインポリシーを ACCEPT に設定中nat mangle filter        [  OK  ]
iptables モジュールを取り外し中                            [  OK  ]
iptables ファイアウォールルールを適用中:                   [  OK  ]
iptables モジュールを読み込み中ip_conntrack_ftp ip_nat_ftp [  OK  ]


lsmodの結果です。

# lsmod
Module                  Size  Used by
ip_nat_ftp              5041  0
ip_conntrack_ftp       72817  1 ip_nat_ftp
iptable_nat            23549  1 ip_nat_ftp
iptable_mangle          2881  0
ipt_state               1985  1
ip_conntrack           41205  4 ip_nat_ftp,ip_conntrack_ftp,iptable_nat,ipt_state
iptable_filter          3009  1
ip_tables              17985  4 iptable_nat,iptable_mangle,ipt_state,iptable_filter
(以下略)


ip_conntrack_ftp の読み込み方法としては他に
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

などもありますが、configファイルに直接記述して起動時に自動で読み込まれる、ということで、今回の方法が一番楽だと思います。

参考サイト
ftpのpassiveモード(PASVモード)って何ですか?
セキュリティ強化対策(Iptables編)
Linux の iptables でパッシブ FTP を許可する ( passive )
ぃぬx美貌録 Passive Mode failure



posted by nambei-x at 18:47| Comment(0) | TrackBack(0) | Linux学習帳 - CentOS | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。