Windows Server 2008 R2でFTPサーバーをインストールし、ファイアーウォールの許可設定をしたにもかかわらず、FTPサーバーに通信できずログインできないことがあります。
ただし、Windowsファイアーウォールを無効にすると、通信できます。
これは、SSLなしでFTPサーバーと通信をする場合には標準で用意されたWindowsファイアーフォールの規則では不十分なためのようです。
Windowsファイアーフォールを有効にして、FTPサーバーと通信をする場合にはいずれかの対策をする必要があります。
コントロールパネル、もしくは[スタートメニュー]の[管理ツール]にある[セキュリティが強化されたWindowsファイアーフォール]をクリックし、設定画面を開きます。
[受信の規則]ノードを選択し、右クリックのポップアップメニューを開き[新しい規則]を選択します。
新規の受信の規則ウィザードダイアログが表示されます。規則の種類は[ポート]を選択し、次へ進みます。
プロトコルは[TCP]を選択します。ポートは21にします。
条件に一致した場合の動作は[接続を許可する]にします。
適用範囲は[ドメイン][プライベート][パブリック]すべてにチェックをします。
表示名と説明を入力します。
新しい受信規則ができました。これでFTPサーバーと接続できるようになります。
svchost.exeを許可することで接続できるようにする方法もあります。
コントロールパネルの[セキュリティが強化されたWindowsファイアーフォール]をクリックし、設定画面を開きます。
[受信の規則]ノードを選択し、右クリックのポップアップメニューを開き[新しい規則]を選択します。
作成するファイアーウォールの規則を[プログラム]にします。
[このプログラムのパス]ラジオボタンにチェックをし、パスを入力します。指定するパスは
ワーニングが表示されます。[はい]ボタンをクリックします。
条件が一致した場合の動作は[接続を許可する]に設定します。
適用範囲は[ドメイン][プライベート][パブリック]すべてにチェックをします。
表示名と説明を入力します。
新しい受信規則ができました。これでFTPサーバーと接続できるようになります。
さらにポート番号でも制限を描ける場合は、作成した受信規則のプロパティを表示します。プロパティダイアログの[プロトコルおよびポート]タブを開きます。
作成時点では[プロトコルの種類]が[任意]になっていますので、これを[TCP]に変更します。さらに、ローカルポートを[特定のポート]にし、ポート番号を21にします。これで、svchost.exeのポート21以外のアクセスは受け付けません。
サーバにPassiveモードで接続する場合は Passiveポートを開ける必要があります。設定方法はこちらを参照してください。
FTPサーバとの通信がActiveモードの場合はクライアント側のファイアーウォールも設定する必要があります(サーバー側からのデータコネクションを受け付けるため)。
クライアントPCの[ファイル転送プログラム]の受信規則が有効になっていることを確認してください。