FTP 서비스는 두개의 포트를 열어서 운영이 됩니다. 기본 FTP 의 경우 21번포트로 접근을 해서 인증을 받은후에 20번 포트를 열어서 LIST 를 보여주고, 데이터를 전송을 합니다.
이것은 FTP 프로토콜이 가지는 서비스 특성인데요. 보안상의 문제등으로 기본 포트를 사용하지 않고 변경을 하게 됩니다.

이 런경우 방화벽 안쪽에 있는 비 정규 포트의 FTP 서버의 접근은 돼나 디렉터리 List 가 보이지 않는 경우가 발생을 하게 됩니다. 이유는 많은 방화벽은 외부 인터페이스를 통해 새 연결을 받아 들이지 않습니다. 이러한 연결은 방화벽에 예기치 않은 연결 시도로 검색되므로 연결이 끊어집니다. 이러한 환경에서는 FTP 서버가 FTP 클라이언트에 새로운 연결 요청을 해야 하므로 표준 모드 FTP 클라이언트가 작동하지 않습니다.

FTP 서버가 모든 랜덤 포트 번호를 열 수 있으므로 방화벽에서는 이러한 구성을 하기 어렵습니다. . IIS 4.0과 5.0은 1024 - 5000의 기본 임시 포트 범위를 사용하지만 IIS 6.0 을 비롯한 많은 FTP 서버가 1024 - 65535의 임시 포트 범위를 사용하도록 구성됩니다. 이러한 세컨드리 포트에 대한 연결에도 모든 임시 포트에 대한 Any 액세스 권한을 부여하는 정책은 보안상 안전하지 않습니다.

IIS 6.0 에서는 이러한 부분을 해결을 할 수 있게 해줍니다. windows 방화벽을 올린 상태 또는 일반 방화벽을 올린 상태에서 모두 동일하게 적용이 됩니다.

먼저 IIS 6.0 이 랜덤하게 포트를 열수 있는 포트 범위를 준비합니다.
여기서는 5001-5005 번까지 5개의 포트를 준비 하였으며, 추가로 사용하지 않는 포트 구성이 가능합니다.

여기서는 Windows 방화벽을 가지고 설명을 드리겠습니다. 다른 박스 장비들도 방법만 다를뿐 같습니다.
사용자 삽입 이미지
위와 같이 windows 방화벽에서 추가합니다.
물론 일반 방화벽인경우에도 포트를 추가로 등록을 해주셔야 합니다.
사용자 삽입 이미지
위와 같이 5개가 등록이 된것을 확인합니다.
그다음에는 IIS 관리자를 엽니다.
사용자 삽입 이미지
서버를 선택하고 속성을 누르면 다음과 같은 화면이 나옵니다.
아래 네모칸의 내용과 같이 체크되어 있어야 합니다.
사용자 삽입 이미지
다음은 다음 경로로 이동합니다.
C:\windows\system32\inetsrv\
그런다음 Metabase.xml 을 엽니다. 메모자응로 여시면 됩니다.

사용자 삽입 이미지
찾기로 LM/MSFTPSVC 를 입력하고 찾기를 누릅니다.
사용자 삽입 이미지
그런다음 MaxConnectiions="100000" 아래에
다음과같이
PassivePortRange="5001-5005"
와 같이 입력을 합니다. " 표나 ' 나 상관없이 동작하는 거 같습니다.

그런다음 FTP 서비스를 재시작을 누릅니다.
사용자 삽입 이미지

그런다음 FTP 클라이언트로 접근해보시면 액티브 모드 와 패시브 모두 두개다 접근이 잘 될겁니다.
그럼..건강한 서버 운영하시길 바랍니다.

IIS에서는 보두 모두 1024 - 65535의 임시 포트 범위를 허용하도록 구성할 수 있습니다.
5000 이상의 TCP 포트에 연결하려는 경우 발생할 수 있는 문제에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하시길 바랍니다.

http://support.microsoft.com/kb/323446/ko

http://support.microsoft.com/kb/309816/ko

_출처 : NTFAQ의 윈도우 서버군 기술 강좌에서 가져 왔습니다.

출처 : http://www.otl.ne.kr/149



추가 내용>>  출처 : http://ulixes.egloos.com/9666815

ftp_pasv.bat

배치파일로 처리가 가능하다.


================= PassivePort.bat ======

Echo OFF

ECHO ADDING PORT RANGE TO IIS
CScript.Exe C:\Inetpub\AdminScripts\adsutil.vbs set /MSFTPSVC/PassivePortRange "5000-5010"

ECHO OPENING FIREWALL PORTS
FOR /L %%I IN (5000,1,5010) DO NETSH FIREWALL ADD PORTOPENING TCP %%I 패시브FTP%%I

iisreset

ECHO FINISHED
Pause

=========================================

Active 모드

① 클라이언트에서 서버의 21번 포트로 접속 후 클라이언트가 사용할 두 번째 포트를 서버에 알려줍니다.
② 서버는 이에 대해 ack로 응답하고
③ 서버의 20번 포트는 클라이언트가 알려준 두 번째 포트로 접속을 시도합니다.
④ 마지막으로 클라이언트가 ack로 응답합니다. Active 모드의 문제점은 바로 3번째 단계 즉, 일반적인 TCP/IP의 특징인 ‘클라이언트가 서버에 접속을 시도하는 것’이 아니라 ‘서버가 클라이언에 접속을 시도한다’는 것입니다. 이 때문에 만약 클라이언트 PC등에 방화벽이 설치되어 있거나 FTP를 잘 이해하지 못하는 공유기 등을 사용하여 외부에서의 접속을 허용하지 않는다면 세 번째 프로세스가 작동하지 않게 되어 FTP 접속이 제대로 되지 않는 문제점이 있습니다. 이러한 경우 FTP 접속은 되지만 이후 데이터 목록을 받아오지 못하여 에러가 발생하게 됩니다.
 
즉, active 모드는 클라이언트에서 서버측 21번 포트로 접속시도 하고 데이터 포트는 서버에서 클라이언트로 접속 하여 데이터를 보내는 방식입니다.

Passive 모드

서버가 클라이언트에 접속시도를 하는 비정상적인 active 모드와 관련된 문제를 해결하기 위한 대안으로 passive 모드가 디자인되었습니다.
Passive 모드에서는
① 먼저 클라이언트가 command 포트로 접속을 시도하면
② 서버에서는 서버가 사용할 두 번째 포트를 알려줍니다.
③ 클라이언트는 다른 포트를 열어 서버가 알려준 이 포트로 접속을 시도하고,
④ 서버는 ack로 응답합니다. Passive 모드에서는 두 번째 data포트로서 active 모드가 사용했던 20번을 사용하지 않고 대신 1024 이후의 임의의 비 특권 포트를 사용하게 됩니다. 따라서 passive 모드는 서버에서 클라이언트로 연결을 시도하는 active 모드의 문제점을 해결하기는 했지만, 서버의 비 특권포트(1024 ~ 65535)를 방화벽에서 모두 열어 두어야 한다는 또 다른 문제점을 낳았습니다.
그러나 wu-ftp나 proftpd등 대부분의 ftp 데몬에서는 클라이언트가 passive 모드로 접속 시 사용할 수 있는 포트를 제한설정 할 수 있는 기능을 지원하므로 이의 문제점을 미봉책이나마 어느 정도는 해결할 수 있습니다.
 
위와 같이 passive 모드는 클라이언트에서 서버쪽 21번 포트로 접속 시도 하고 데이터 포트도 클라이언트에서 서버의 20번 포트로 접속하여 데이터를 받아오는 방식입니다.



출처 : http://community.365managed.com/4989


2009/09/28 - [D.B./컴퓨터] - IIS 6.0 에서 수동 FTP 모드(Passive Mode) 사용 방법(액티브 모드 함께 사용 가능)

출처 : http://www.loganalyzer.net/log-analyzer/w3c-extended.html

Microsoft IIS W3C Extended Log Format

This log file format is used by used by Microsoft Internet Information Server (IIS) 4.0, 5.0, 6.0 and 7.0.
A log file in the extended format contains a sequence of lines containing ASCII characters. Each line may contain either a directive or an entry. Entries consist of a sequence of fields relating to a single HTTP transaction. Fields are separated by white space. If a field is unused in a particular entry dash "-" marks the omitted field. Directives record information about the logging process itself.

Lines beginning with the # character contain directives. The following directives are defined:

 

Sample Report
Tutorial
Compare Editions
FAQ
Localization
Support Forum
Newsletter

Version: <integer>.<integer>

The version of the extended log file format used. This draft defines version 1.0.

Fields: [<specifier>...]

lists a sequence of field identifiers specifying the information recorded in each entry.

Software: string

Identifies the software which generated the log.

Start-Date: <date> <time>

The date and time at which the log was started.

End-Date:<date> <time>

The date and time at which the log was finished.

Date:<date> <time>

The date and time at which the entry was added.

Remark: <text>

Comment information. Data recorded in this field should be ignored by analysis tools.

The directives Version and Fields are required and should precede all entries in the log. The Fields directive specifies the data recorded in the fields of each entry.

W3C Extended Logging Field Definitions

Prefix Meaning
s-
Server actions.
c-
Client actions.
cs-
Client-to-server actions.
sc-
Server-to-client actions.


Field Appears As Description
Date date The date that the activity occurred.
Time time The time that the activity occurred.
Client IP Address c-ip The IP address of the client that accessed your server.
User Name cs-username The name of the authenticated user who accessed your server. This does not include anonymous users, who are represented by a hyphen (-).
Service Name s-sitename The Internet service and instance number that was accessed by a client.
Server Name s-computername The name of the server on which the log entry was generated.
Server IP Address s-ip The IP address of the server on which the log entry was generated.
Server Port s-port The port number the client is connected to.
Method cs-method The action the client was trying to perform (for example, a GET method).
URI Stem cs-uri-stem The resource accessed; for example, Default.htm.
URI Query cs-uri-query The query, if any, the client was trying to perform.
Protocol Status sc-status The status of the action, in HTTP or FTP terms.
Win32® Status sc-win32-status The status of the action, in terms used by Microsoft Windows®.
Bytes Sent sc-bytes The number of bytes sent by the server.
Bytes Received cs-bytes The number of bytes received by the server.
Time Taken time-taken The duration of time, in milliseconds, that the action consumed.
Protocol Version cs-version The protocol (HTTP, FTP) version used by the client. For HTTP this will be either HTTP 1.0 or HTTP 1.1.
Host cs-host Displays the content of the host header.
User Agent cs(User-Agent) The browser used on the client.
Cookie cs(Cookie) The content of the cookie sent or received, if any.
Referrer cs(Referer) The previous site visited by the user. This site provided a link to the current site.

The following is an example of a record in the extended log format that was produced by the Microsoft Internet Information Server (IIS):


출처 : http://support.microsoft.com/kb/318380/ko

FTP sc-status code

1xx - 긍정적인 예비 회신

이 상태 코드는 동작이 시작되었지만 클라이언트가 새 명령을 계속 수행하기 전에 다른 회신을 기대한다는 것을 나타냅니다.
  • 110 마커 회신을 다시 시작합니다.
  • 120 nnn 분 내에 서비스 준비
  • 125 데이터 연결이 이미 열려 있고 전송을 다시 시작합니다.
  • 150 파일 상태에 문제가 없으며 지금 데이터 연결을 열려고 합니다.
2xx - 긍정적인 완료 회신

동작이 완료되었습니다. 클라이언트가 새 명령을 실행할 수 있습니다.
  • 200 명령에 문제가 없습니다.
  • 202 명령이 구현되지 않으며 이 사이트에 불필요합니다.
  • 211 시스템 상태 또는 시스템 도움말 회신
  • 212 디렉터리 상태
  • 213 파일 상태
  • 214 도움말 메시지
  • 215 NAME 시스템 형식. 여기서 NAME은 지정된 번호(Assigned Numbers) 문서 목록의 공식 시스템 이름입니다.
  • 220 새 사용자에게 서비스가 준비되었습니다.
  • 221 서비스가 컨트롤 연결을 닫습니다. 필요한 경우 로그아웃됩니다.
  • 225 데이터 연결을 열지만 전송하지 않습니다.
  • 226 데이터 연결을 닫습니다. 요청된 파일 동작에 성공했습니다(예: 파일 전송 또는 파일 중단).
  • 227 Passive 모드 입력(h1,h2,h3,h4,p1,p2)
  • 230 사용자가 로그인하여 진행합니다.
  • 250 요청된 파일 동작이 문제 없이 완료되었습니다.
  • 257 "PATHNAME"이 만들어졌습니다.
3xx - 긍정적인 중간 회신

명령이 성공했지만 서버에는 요청을 처리하는 데 클라이언트의 추가 정보가 필요합니다.
  • 331 사용자 이름에 문제가 없으며 암호가 필요합니다.
  • 332 로그인을 위해 계정이 필요합니다.
  • 350 좀더 자세한 정보를 보류 중인 요청된 파일 동작입니다.
4xx - 일시적인 부정적 완료 회신

명령이 성공하지 못했지만 오류는 일시적입니다. 클라이언트가 명령을 다시 시도하면 성공할 수도 있습니다.
  • 421 서비스를 사용할 수 없으며 컨트롤 연결을 닫습니다. 이것은 서비스가 프로그램을 종료해야 함을 아는 경우 명령에 대한 응답이 될 수 있습니다.
  • 425 데이터 연결을 열 수 없습니다.
  • 426 연결이 닫히고 전송이 중단됩니다.
  • 450 요청된 파일 동작이 수행되지 않았습니다. 파일을 사용할 수 없습니다(예: 파일 사용 중).
  • 451 요청된 동작이 중단되었습니다. 처리 중 로컬 오류가 발생했습니다.
  • 452 요청된 동작이 수행되지 않았습니다. 시스템의 저장 공간이 부족합니다.
5xx - 영구적인 부정적 완료 회신

명령이 성공하지 못했으며 오류는 영구적입니다. 클라이언트가 명령을 다시 시도하면 같은 오류가 나타납니다.
  • 500 구문 오류, 명령을 인식할 수 없습니다. 여기에는 명령줄이 너무 긴 경우와 같은 오류가 포함됩니다.
  • 501 매개 변수 또는 인수의 구문 오류입니다.
  • 502 명령이 구현되지 않았습니다.
  • 503 명령 순서가 잘못되었습니다.
  • 504 해당 매개 변수에 대해 명령이 구현되지 않았습니다.
  • 530 로그인되지 않았습니다.
  • 532 파일을 저장하는 데 계정이 필요합니다.
  • 550 요청된 동작이 수행되지 않았습니다. 파일을 사용할 수 없습니다(예: 파일 없음. 액세스 못함).
  • 551 요청된 동작이 중단되었습니다. 페이지 형식을 알 수 없습니다.
  • 552 요청된 파일 동작이 중단되었습니다. 현재 디렉터리 또는 데이터 집합에 대해 저장소 할당이 초과되었습니다.
  • 553 요청된 동작이 수행되지 않았습니다. 파일 이름을 허용할 수 없습니다.

일반 FTP 상태 코드와 그 원인

  • 150 - FTP는 두 가지 포트를 사용합니다. 즉, 명령을 보내는 경우에는 21을 사용하고 데이터를 보내는 경우에는 20을 사용합니다. 상태 코드 150은 서버가 포트 20에서 새 연결을 열어 데이터를 보내려고 한다는 것을 나타냅니다.
  • 226 - 이 명령은 포트 20에서 데이터 연결을 열어 파일 전송과 같은 동작을 수행합니다. 이 동작이 완료되고 데이터 연결이 닫힙니다.
  • 230 - 이 상태 코드는 클라이언트가 올바른 암호를 보낸 후에 나타납니다. 사용자가 로그온되었음을 나타냅니다.
  • 331 - 클라이언트가 사용자 이름을 보낸 후에 이 상태 코드가 나타납니다. 이 동일한 상태 코드는 제공된 사용자 이름이 시스템의 올바른 계정인지 여부에 관계없이 나타납니다.
  • 426 - 이 명령은 데이터 연결을 열어 동작을 수행하지만 이 동작이 취소되고 데이터 연결이 닫힙니다.
  • 530 - 이 상태 코드는 사용자 이름과 암호 조합이 유효하지 않으므로 사용자가 로그온할 수 없음을 나타냅니다. 사용자 계정을 사용하여 로그온하는 경우 사용자 이름 또는 암호를 잘못 입력했거나 익명 액세스만 허용하도록 선택했을 수 있습니다. 익명 계정으로 로그온하는 경우 IIS가 익명 액세스를 거부하도록 구성되었을 수도 있습니다.
  • 550 - 이 명령은 지정된 파일을 사용할 수 없으므로 실행되지 않습니다. 예를 들어, 이 상태 코드는 존재하지 않는 파일을 가져오려고(GET) 하거나 쓰기 액세스 권한이 없는 디렉터리에 파일을 두려고(PUT) 하는 경우에 발생합니다.

FTP sc-win32-status code

IIS 6.0 on Windows 2003 W3C Extended Log File Format
Advanced - Win32 Status (sc-win32-status)example values in IIS Log Files:
0: The operation completed successfully.
64: The specified network name is no longer available.
995: The I/O operation has been aborted because of either a thread exit or an application request.
1236: The network connection was aborted by the local system.
121: The semaphore timeout period has expired.
22: The device does not recognize the command.





ex090914.log

출처 http://community.365managed.com/?mid=w_service&page=3&document_srl=410

4.2 NetBIOS 비활성화하기

NetBIOS는 별개의 컴퓨터 상에 있는 애플리케이션들이 근거리통신망 내에서 서로 통신 할 수 있게 해주는 프로토콜로서 Windows에 의해 채택되어 있다. 만약 웹 서버에서 네트워크를 통한 다른 컴퓨터와의 공유가 필요없다면 NetBIOS를 제거함으로써 DDos(Distributed Denial of Service) 공격이나 호스트 열거(host enumeration)에 대한 위험 요소를 줄일 수 있다.

NetBIOS는 다음과 같은 포트를 사용한다.

  • TCP와 UDP 137번 포트 (NetBIOS name service)
  • TCP와 UDP 138번 포트 (NetBIOS datagram service)
  • TCP와 UDP 139번 포트 (NetBIOS session service)

    TCP/IP에서 NetBIOS를 비활성화하는 방법은 다음과 같다.

    ① 바탕화면 또는 제어판에서 [내 컴퓨터]의 등록정보에서 [하드웨어] 탭을 선택한다.
    ② [장치관리자]를 실행한다.
    ③ [장치관리자]의 [보기] 메뉴에서 [숨김 장치 표시]를 선택한다.
    ④ [장치관리자] 목록에서 [비 플러그 앤 플레이 드라이버]를 선택한다.
    ⑤ 하위 목록에서 [NetBios over Tcpip]를 선택하고 [제거] 한다.


    [그림 2] 장치관리자에서 NetBIOS 프로토콜 제거하기


    4.3 SMB 비활성화 하기

    SMB(Session Message Block) 프로토콜은 Windows에서 디스크와 프린터를 네트워크 상에서 공유하는데 사용된다.

    SMB는 다음과 같은 포트를 사용한다.

  • TCP 139번 포트
  • TCP 445번 포트

    SMB를 비활성화하려면 다음과 같은 방법으로 TCP/IP에서 SMB를 언바인드 시키면 된다.

    ① 바탕화면 또는 제어판에서 [네트워크 환경]의 [등록정보]를 실행한다.
    ② 현재 인터넷에 접속된 연결의 [등록정보]를 선택한다.
    ③ [Microsoft 네트워크용 클라이언트] 항목과 [Microsoft 네트워크용 파일 및 프린터 공유] 항목의 체크를 해제한다.


    [그림 3] SMB 포로토콜 비활성화하기

  • + Recent posts