2015.09.14 03:42
방화벽으로 보호되는 서버에서 FTP(파일 전송 프로토콜) 서비스를 사용하면 FTP 작동 방식 때문에 몇 가지 문제가 생길 수 있습니다. 표준 모드 FTP 클라이언트는 TCP 포트 번호 21로 "명령 채널" 연결을 열어 서버에 대한 세션을 시작합니다. 클라이언트는 서버에 PORT 명령을 보내 파일 전송을 요청합니다. 그러면 서버는 TCP 포트 번호 20으로 다시 클라이언트에 대한 "데이터 채널" 연결을 시작합니다. 클라이언트에서 실행 중인 일반 방화벽은 서버의 이 데이터 채널 연결 요청을 무단 연결로 인식하고 패킷을 삭제하므로 파일 전송이 실패합니다.
Windows Vista 및 Windows Server 2008에서 고급 보안 기능을 가진 Windows 방화벽은 포트 20의 인바운드 연결 요청을 클라이언트의 이전 아웃바운드 PORT 명령과 일치시킬 수 있는 상태 저장 FTP를 지원합니다. 그러나 SSL을 통해 FTP를 사용하여 FTP 트래픽을 보호하고 암호화하는 경우 방화벽은 더 이상 서버의 인바운드 연결 요청을 검사할 수 없으며 해당 요청이 차단됩니다.
이 문제를 방지하기 위해 FTP는 클라이언트가 데이터 채널 연결을 시작하는 "수동" 작동 모드도 지원합니다. 클라이언트는 PORT 명령을 사용하는 대신, 명령 채널에서 PASV 명령을 보냅니다. 서버는 클라이언트가 데이터 채녈을 설정하기 위해 연결해야 하는 TCP 포트 번호로 응답합니다. 기본적으로 서버는 사용 후 삭제되는 범위(1025 - 5000)에서 제공되는 포트를 사용합니다. 서버 보안을 더 강화하려면 FTP 서비스에서 사용하는 포트 범위를 제한하고 허용된 포트 번호에서만 FTP 트래픽을 허용하는 방화벽 규칙을 만들면 됩니다.
수동 모드 FTP에 대해 제한된 수의 포트만 사용하도록 FTP 서비스 구성
IIS 7.0 관리자의 연결 창에서 서버의 최상위 노드를 클릭합니다.
세부 정보 창에서 FTP 방화벽 지원을 두 번 클릭합니다.
FTP 서비스에서 사용할 포트 번호 범위를 입력합니다. 예를 들어 41000-41099
에서는 서버가 동시에 100개의 수동 모드 데이터 연결을 지원할 수 있습니다.
데이터 연결이 통과하는 방화벽의 외부 IPv4 주소를 입력합니다.
작업 창에서 적용을 클릭하여 설정을 저장합니다.
또한 위 절차에서 구성한 포트에서 인바운드 연결을 허용하도록 FTP 서버에서 방화벽 규칙을 만들어야 합니다. 숫자로 포트를 지정하는 규칙을 만들 수도 있지만 FTP 서버에서 수신 대기하는 포트를 여는 규칙을 만드는 것이 더 쉽습니다. 위 절차에 있는 단계를 수행하여 FTP가 수신 대기하는 포트를 제한합니다.
관리자 명령 프롬프트를 엽니다. 시작, 모든 프로그램, 보조프로그램을 차례로 클릭하고 명령 프롬프트를 마우스 오른쪽 단추로 클릭한 다음 관리자 권한으로 실행을 클릭합니다.
다음 명령을 실행합니다.
netsh advfirewall firewall add rule name=”FTP Service” action=allow service=ftpsvc protocol=TCP dir=in
마지막으로 방화벽이 FTP 트래픽을 차단하지 않도록 상태 저장 FTP 필터링을 해제합니다.
netsh advfirewall set global StatefulFTP disable