제2의 비엔지니어 인생관을 꿈꾸며

Posted
Filed under Study

Windows 2003 Server SP1 Firewall Modification for Passive or PASV FTP Connections

(Portions of this document are parphrased from or directly copied from Microsoft KB article 555022 by Bernard Cheah, MVP.)

Passive Mode FTP connections are normally required by clients connecting through a NAT firewall or router. The client connects on port 21 and issues a PASV command, the server responds with a port in the 1024-65535 range for the data connection. After a data connection command is issued by the client, the server connects to the client using the port immediately above the client-side port of the control connection. The Windows 2003 SP1 Firewall will prevent PASV FTP from working properly unless exceptions for the ports are created. A metabase property key named PassivePortRange can be configured to specify the port range the server will respond with. This can be used to limit the security risk for the FTP server. The property key only exists in IIS 6.0. Support for IIS 5.0 on Windows 2000 can be added, but the system administrator will need to install Service Pack 4 and add the PassivePortRange key in the system registry. Two ports must be opened for each concurrent FTP connection.

On Windows 2003 Server with IIS6
  • To Enable Direct Metabase Edit
    1. Open the IIS Microsoft Management Console (MMC).
    2. Right-click on the Local Computer node.
    3. Select Properties.
    4. Make sure the Enable Direct Metabase Edit checkbox is checked.
  • Configure PassivePortRange via ADSUTIL script
    1. Click Start, click Run, type cmd, and then click OK.
    2. Type cd Inetpub\AdminScripts and then press ENTER.
    3. Type the following command where the range is specified in "..". cscript.exe adsutil.vbs set /MSFTPSVC/PassivePortRange "5001-5201"
    4. Restart the FTP Publishing Service.
    You'll see the following output, when you configure via ADSUTIL script:

    Microsoft (R) Windows Script Host Version 5.6
    Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

    PassivePortRange : (STRING) "5001-5201"

  • Add each port to the Windows Firewall
    1. Click Start, click Control Panel, open Windows Firewall, and select the Exceptions tab.
    2. Click the Add Port button.
    3. Enter a Name for the Exception and the first number in the port range.
    4. Click TCP if not already selected and click OK.
    5. Repeat for each port in the range - for large ranges see the end of the document.
    6. Enable the Windows Firewall on the General Tab.

On Windows 2000 Server with IIS5 Configure PassivePortRange via Registry Editor
  1. Start Registry Editor (Regedt32.exe).
  2. Locate the following registry key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\
  3. Add a value named "PassivePortRange" (without the quotation marks) of type REG_SZ.
  4. Close Registry Editor.
  5. Restart the FTP Publishing Service.
    Note: The range that FTP will validate is from 5001 to 65535.

To add a range of ports to Windows Firewall from the Command Line
  1. Click Start, click Run, type cmd, and then click OK.
  2. Type in the following where the range is specified in ( ) and the name of the firewall entry is in " ".
    FOR /L %I IN (5001,1,5201) DO netsh firewall add portopening TCP %I "Passive FTP"%I
  3. Each port in the range will be added with an "OK" confirmation.

위 포트범위는 많이 지정되었지만 필자는 5001-5005 정도만 사용하고있다 간간히 NAT와 겹치면서 사용한다면 50001-50005 정도 더 큰 범위를 사용한다. 대부분 1024에서 65535포트는 내부 세션을 임시로 열었다가 닫히는 임시 랜덤포트라서 겹치면 소켓통신에 장애가 발생하기 때문이다.

2000서버에서는 레지스트리 수정을 해주고 2003서버는 편하게 메타베이스 XML수정을 해주고 서비스 재시작을 해주면 적용이 된다.
2008서버 IIS7 역시도 메타베이스 수정으로 해결이 가능한데 필자는 IIS7에서는 단번에 안된걸로 기억한다. IIS7을 아예 죽이고 메모장을 관리자모드로 열고 수정하고 저장하고 서비스시작하니 되었던건데 좀 이상하긴 했었다. ㅎㅎ <---- 이건 IIS7의 IIS6 FTP를 사용할때여서 그렇다. FTP7 버젼은 다르다. 친절하게도 FTP PASSIVE 범위를 설정하는 옵션이 GUI로 나와서 특별하게 고민할게 없을듯 하다.
IIS7 FTP 설정 유의점 사이트 바로가기
 
FTP에서 PASSIVE를 사용해야 되는 이유?를 알고싶을것이다.
첫째, 비정규포트 21번이 아닌 다른 포트를 사용하겠다면 PASSIVE 포트를 설정해줘야 한다.
둘째, FTP서버가 NAT밑으로 구성되었다면 21번 포트를 사용한다고 해도 PASSIVE를 설정해줘야만 한다.

위 두가지를 항상 머리속에 넣어야 한다. 그렇지 않으면 방화벽 문제네 뭐 문제네 네책임 내책임 말들이 나올것이다.

2009/07/16 18:14 2009/07/16 18:14