FTP 관련 포트 정리
2010.05.12 04:17
원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어
Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
* 사진의 위쪽은 Active 모드, 아래쪽은 Passive 모드
Active 모드
Active 모드는 클라이언트가 보내중 정보를 기준으로 서버에서 클라이언트의 Data 포트에 접속을 시도한 후 클라이언트의 요청에 따라 데이터를 전송하는 방식이다.
하지만 Ip 공유기등 사설 IP에서 접속을 시도할 경우 클라이언트의 Data 포트가 막힐 가능성이 있기 때문에 500 Illegal PORT command 와 같은 오류를 출력할 수 있다.
즉 명령은 전달이 되었지만 실제적으로 전송을 담당하는 데이터 포트가 막혀서 데이터를 전송 못할 가능성이 있다.
연결 과정
1. FTP 서버 IP xxx.xxx.xxx.xxx 포트 21 번으로 접속
2. FTP 서버의 21 포트 -> 클라이언트 1023(n) 이상의 포트 (서버에서 클라이언트의 Command 포트로 응답)
3. FTP 서버의 20번 포트 -> 클라이언트 n+1 번 포트 (서버에서 클라이언트의 data포트로 접속)
4. FTP 서버의 20번 포트 <- 클라이언트 n+1 번 포트 (클라이언트에서 서버의 data포트로 응답)
*실제로 포트 번호는 정해진것이 아닌 1023포트 이상에서 서버나 클라이언트가 정함
연결 과정에 있어서 클라이언트는 서버에 접속할때 PORT xxx,xxx,xxx,xxx,yy,nn 이런식의 메세지를 전달한다. 여기서 xxx 는 IP Address를 나타내고 포트는 마지막 부분
yy,nn 부분이다 포트번호는 (yy * 256) + nn 으로 결정이 되어 클라이언트의 포트를 서버에알려준다.
Passive 모드
Passive 모드는 데이터 포트와 명령포트 전부 클라이언트에서 서버로 연결을 하는 방식이다. 즉 클라이언트의 공유기의 간섭없이 서버와의 통신이 가능하다.
하지만 클라이언트에서 접속하는 데 있어서 열어둔 포트가 서버의 방화벽에서 막혀 있지 않아야 한다.
연결과정
1. FTP 서버 IP xxx.xxx.xxx.xxx 포트 21번에 접속
2. FTP 서버의 21포트 -> 클라이언트 1023(n) 이상의 포트(서버에서 클라이언트의 Command 포트로 응답)
3. FTP 서버의 Passive 설정된 범위의 포트 -> 클라이언트 n+1 포트(클라이언트에서 접속)
4. FTP 서버의 Passive 설정된 범위의 포트 -> 클라이언트 n+1 포트(클라이언트에서의 데이터 전송)
포트의 범위는 서버의 서비스에 간섭이 없는 범위내에서 적당히 설정한다. 여기서 적당히는 클라이언트의 접속량에 따라 다르다. 또 웹 서비스의 경우 8080포트 등으로 운영이 될 수 있고
또 IRC 나 기타 서비스의 간섭이 없는 범위내에서 포트를 설정해야 한다. 보통 1000~2000 사이의 범위를 정해서 포트를 열어둔다.
설정방법
* 아래 설정 방법에서 시작 끝은 포트 범위를 나태낸다
LINUX 서버
wu-ftpd
/etc/ftpaccess
passive ports 0.0.0.0/0 시작 끝
proftpd
/etc/proftpd/conf/proftpd.conf
PassivePorts 시작 끝
vsftpd
/etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_min_port=시작
pasv_max_port=끝
* 리눅스 서버의 Passive 모드 설정할때는 ip_conntrack 모듈이 필요하다. 이 모듈은 열려있는 포트가 몇번 포트에 의해서 연결이 되었는지 정보를 담고 있다.
그 정보를 담고 있는 부분은 /proc/net/ip_contrack 에 존재한다. 커널 모듈을 등록시켜줘야 한다.
modprobe ip_conntrack
modprobe ip_conntrack_ftp
Iptable 설정
/etc/sysconfig/iptable-config 파일 내의 IPTABLES_MODULES 항목을 추가 하거나 주석을 제거한다.
IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp"
iptables -A INPUT -p tcp --sport 1024:65535 --dport [포트시작]:[포트끝] -m state --state ESTABLISHED,RELATED -j ACCEPT
Windows 서버
1. 시작 - 제어판 - 관리도구 - 인터넷정보서비스 - 로컬컴퓨터 - 속성 - 메타베이스 직접 편집 허용 체크
2. C:\%SystemRoot%\system32\inetsrv\metabase.xml 열기
3. PassivePortRange="시작-끝" 으로 수정
4. metabase.xml 저장
5. IIS 재시작
6. Ipsec, 또는 방화벽에 설정한 포트 번호 추가
* Windows 2000 에서는 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\ 에 REG_SZ 값으로 PassivePortRange 값을 추가한다.
* 사진의 위쪽은 Active 모드, 아래쪽은 Passive 모드
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | [공지] 게시자료 열람자유. 불펌금지입니다. | 조인상 | 2010.12.07 | 20168 |
13 |
SUN 용 시리얼케이블 제작법
![]() | 조인상 | 2010.05.12 | 16193 |
12 |
How to D-trace
![]() | 조인상 | 2010.12.22 | 16431 |
11 | 솔라리스 10 접속서비스 설정 (telnet ftp ssh) | 조인상 | 2010.05.12 | 16503 |
10 | 솔라리스8 ssh 설치 | 조인상 | 2010.05.12 | 17360 |
9 | Sun/Qlogic HBA WWN 알아보는법 | 조인상 | 2010.05.12 | 18291 |
» |
FTP 관련 포트 정리
![]() | 조인상 | 2010.05.12 | 19232 |
7 | 솔라리스10에서 tcp_wrapper 사용하기/설정 | 조인상 | 2010.05.12 | 19594 |
6 | NIC 속도 확인방법 | 조인상 | 2010.05.12 | 19795 |
5 | CDE (Common Desktop Environment)에 대해서 | 조인상 | 2010.08.17 | 23693 |
4 | Solaris 10 Network - IP구성 및 network restart | 조인상 | 2013.04.09 | 28019 |
3 | 솔라리스 보안취약점 보완을 위한 정책강화 방법 | 조인상 | 2010.05.27 | 29241 |
2 |
SUN ILOM 2.0 기능 및 설명
![]() | 조인상 | 2010.05.24 | 31308 |
1 | Solaris Common Error Messages | ischo | 2010.11.11 | 48076 |