FTP 를 세팅하고 서버가 방화벽 내부에 있다면 아이피를 공유해서 쓰는 환경에서는 FTP 서버 접속이 힘들 경우가 있다.
이와 관련된 자료를 찾아보았는데…
결론은 좀더 해봐야…
less..
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을 이용하는 방법이다. Adsutil.vbs set /MSFTPSVC/PassivePortRange "5500-5700" Windows 2000 Server 의 경우는 레지스트리 값을 추가해야 한다. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\ 에서 REG_SZ 타입의 PassivePortRange 값이름을 추가한다. 값으로는, 5500-5700 을 설정한다. 위 2경우 모두 설정후 FTP 서비스를 재시작 해야 적용되며, 위와 같이 범위 또는 특정포트값을 설정해도 된다. 서버에 방화벽을 운영하는 서버인데, 클라이언트가 액티브모드를 지원하지 않는경우에 적용하는 것이 좋은 해결책이 될 수 있다. |
패시브 모드란?
파일리스트 출력결과나 파일전송, 즉 데이터전송시에만 관계된다.
1. Client는 지정된 FTP server port(주로 21)로 접속하여 ID와 암호를 통해 인증받는다
2. 데이터전송시(ls,get,put등)FTP server쪽에서 client와 데이터전송을 위해 Server 에
접속할 미사용중인 임의의 포트 N을 client에게 알려주게 된다.
이때 server쪽에서는 방화벽을열어 client가 데이터를 얻을수 있도록 해야 되는데
임의로 포트 N이 열리는 범위를 지정하지않으면 1025이상 5000번 이하 포트를 모두
열어야 되는 상황이 발생한다.
3. FTP client는 자신의 1025이상 5000번 이하의 임의의 포트(보통 접속포트와는
다른포트)로부터 Server가 알려준 포트 N을 향해 접속을 시도한다.
4. connection을 맺은 후 데이터를 전송한다.
액티브 모드란?
1. Client는 지정된 FTP server port(주로 21)로 접속하여 ID와 암호를 통해 인증받는다
2. FTP client쪽에서 server와 데이터전송을 위해 client 에 접속할 미사용중인 임의의
포트 N을 server에게 알려주게 된다.
이때 client쪽에서는 방화벽을열어 server와 데이터 통신을 할 수 있도록 해야 되는데
일반적으로 1025이상 5000번 이하 포트중 하나를 임의의 포트 N으로 사용한다
3. FTP server는 자신의 특정포트(주로 20)로부터 client가 알려준 포트 N을 향해
접속을 시도한다.
4. connection을 맺은 후 데이터를 전송한다.
서버에서 패시브 포트 범위 할당을 하는 이유는?
원하는 단일 포트 혹은 포트범위를 지정해서 열음 으로써 보안상의 이점을 가진다
방법
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:\WINDOWS\system32\LogFiles"
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다시시작>인터넷서비스다시시작>확인
GeNiuS FTP 는 두 개의 모드가 있습니다.
오래된 전통적인 한 방식이 바로 Active mode 라는 것이구요.
좀 더 최근에 나타난 것이 Passive mode 입니다.
이 두가지를 비교해 보면,
인터넷 사용자들이 가장 흔하게 접하는 웹 브라우저들이 일반적으로
Passive 모드로 설정되어 있습니다. 그러나, FTP 클라이언트 프로그램들은
일반적으로 Active 모드가 기본값으로 설정되어 있습니다.
Active 모드에서는 원격지의 서버가 어떠한 출력을 내보낼 때
- 이를테면 ls 나 dir 같은 명령어가 입력되면 결과를 출력하려고 할 때 혹은 파일을 전송할 때 -
반드시 현재 내가 사용중인 컴퓨터와 별도의 추가적인 TCP/IP 연결을 맺어야 합니다.
(이때 일반적인 FTP 포트인 21번이 아니라 FTP-Data 포트인 TCP 20번을 사용합니다.)
이는 기존에 연결된 FTP 를 끊지 않고 Data 커넥션을 필터링 하는 것이
불가능하다는 얘기이므로 방화벽이 설치되어 있는 경우 Active 모드는 상당히
곤란한 환경이 됩니다.
반면에 Passive mode 에서는 TCP 20번 포트 대신에
1024 번 이상의 시스템에서 예약해 놓지 않은 포트를 사용하여 데이터를
주고받을 수 있습니다.
Passive 모드를 끄고 접속하라는 것은 해당 FTP 서버가 Passive 모드를
지원하지 않고 기본적이고도 전통적인 Active 모드로만 운영이 된다는 뜻이며
또한, Passive 모드를 지원하지 않는 서버의 경우에
Passive 모드로 접속하는 것이 불가능합니다. 10/08 12:57:04
초보웹마스터 맞습니다. 맞구요… 짝짝 10/08 14:06:12
벨제붑 위에 설명이 잘 되 있군요.
전 좀더 쉽게 설명하고 싶네요
passive 모드란것을 방향성으로 애기하는게 더 이해가 쉬울듯
해서요.
ftp 서버에 처음 접속해서 제어신호가 서로오가고
데이터 전송이 필요하게되면
기본적으로 ftp 서버가 클라이언트로 접속해서 데이터 전송을
하게 됩니다.(클라이언트 <--- 서버)
만약 클라이언트 프로그램 옵션에서 passive 모드란곳에
체크를 하게되면 데이터전송방향이 바뀌게 됩니다
다시말해 클라이언트가 서버에 접속해서 파일을 받아갑니다.
브라우저가 웹서버에 접속해 파일을 받는거하고
ftp 클라이언트가 ftp 서버에 접속해서 파일을 받는것은
디폴트값으로 반대방향이라는겁니다.
passive 모드가 유용한경우는
방화벽안에 ftp 클라이언트가 있을경우 유용하곘죠.
마지막으로 passive 모드를 사용시에는 서버가 이를지원하도록
설정돼 있는지를 알아봐야 합니다.
왜냐면, passive 모드가 보안상 취약점이 있습니다.
(자세한건 보안관련 문서를 보시고)
그래서 이 옵션을 꺼놓는 경우가 많습니다.