FTP 패시브 모드 포트 범위 설정

Posted at 2010. 6. 27. 21:11 | Posted in 서버 OS/윈도우


IIS FTP에 패시브모드 포트 범위 설정


IIS기반 FTP 서비스는 패시브모드(Passive-mode)와 액티브모드(Active-mode) 2가지를 지원한다.

Active-mode 는 클라이언트 기반 접속이다. 그래서 웹서버쪽에 20,21 번이 열린 FTP를 접속시 클라이언트에서는 포트가 랜덤포트를 이용하나 서버 포트는 변함이 없다. 클라이언트는 서버쪽에 port 명령어를 보낸다.

Passive-mode 는 서버쪽 21번 포트로 접속시, 클라이언트의 랜덤포트가 아니라 서버쪽 랜덤포트를 이용하게 된다. 서버는 클라언트에게 pasv 명령어를 보내며, 클라이언트는 승인하게 된다.

문제는, 패시브모드의 경우 서버쪽에 1024 에서 65535 포트 사이를 랜덤하게 할당하며, 네트워크 세션이 있을때마다 신규포트를 이용하게 된다. 이때, 서버쪽에 방화벽을 운영하거나 대량접속서비스가 운영중일때는 네트워크 자원이 부족하게 되어 접속장애가 있을수 있다.

패시브모드에서의 서버쪽 랜덤 포트범위를 조정하므로써, 이를 해결할 수 있다.

Windows 2000 Server 및 Windows Server 2003 모두  PassivePortRange 값을 이용하여 조정이 가능하다.

Windows Server 2003 의 경우

1. 메타베이스를 수정하는 방법이다.
  (메타베이스를 수정할려면, IIS MMC에서 메타베이스 직접수정 허용 설정이 되어 있어야 한다.)

2. ADSUTIL을 이용하는 방법이다. (위치 : inetpub\AdminScripts -> IIS7.0에서 AppCmd.exe로 바뀜.)
   Adsutil.vbs set /MSFTPSVC/PassivePortRange "5500-5700"

Windows 2000 Server 의 경우

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\
에서 REG_SZ 타입의 PassivePortRange 값이름을 추가한다.

값으로는, 5500-5700 을 설정한다.


 

<메타베이스를 수정하는 방법>

1. 시작>프로그램>관리도구>인터넷정보서비스관리
2. 인터넷정보서비스>로컬컴퓨터>오른쪽클릭>속성>메타베이스직접편집허용에 체크>적용
3. %SystemRoot%\System32\InetSRV 폴더에 MetaBase.xml을 메모장으로 연다
4. <IIsFtpService>항목에 다음을 추가한다
PassivePortRange="#### - #####"

! 여기서 ####은 원하는 포트 처음부터 끝까지
! 허용값은 5001부터 65535
! 이값의 자세한 설병은 MMC 도움말(인터넷정보서비스관리>도움말>도움말항목)
에서 메타베이스, PassivePortRange항목을 참고할것
!예시문
<IIsFtpService Location ="/LM/MSFTPSVC"
AdminACL="................"
AllowAnonymous="TRUE"
AnonymousOnly="FALSE"
AnonymousUserName="로컬컴퓨터IUSR_로컬컴퓨터"
AnonymousUserPass="...................."
ConnectionTimeout="120"
DownlevelAdminInstance="1"
ExitMessage=" "
LogAnonymous="FALSE"
LogExtFileFlags=".........................."
LogFileDirectory="C:WINDOWSsystem32LogFiles"
LogFilePeriod="1"
LogFileTruncateSize="20971520"
LogNonAnonymous="FALSE"
LogOdbcDataSource="TSLOG"
LogOdbcPassword="............................"
LogOdbcTableName="FTPLog"
LogOdbcUserName="InternetAdmin"
LogPluginClsid="..............................."
LogType="1"
MSDOSDirOutput="TRUE"
MaxClientsMessage=" "
MaxConnections="100000"
PassivePortRange="5001-5001"
>
</IIsFtpService>

5. 편집한 MetaBase.xml 파일을 저장한다
6. 인터넷정보서비스>로컬컴퓨터>모든작업>IIs다시시작>인터넷서비스다시시작>확인


위 2경우 모두 설정후 FTP 서비스를 재시작 해야 적용되며, 위와 같이 범위 또는 특정포트값을 설정해도 된다.
서버에 방화벽을 운영하는 서버인데, 클라이언트가 액티브모드를 지원하지 않는경우에 적용하는 것이 좋은 해결책이 될 수 있다.

그리고 이 범위에 대한 포트도 방화벽에서 잊지말고 필히 열어줄 것. ^^



//