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 | 20161 |
93 | SUN T5140/T5240 서비스 매뉴얼 | 조인상 | 2010.12.22 | 0 |
92 | 베리타스 볼륨매니저 관리용 GUI tool | 조인상 | 2010.08.17 | 2 |
91 | bind 유틸 설치 | 조인상 | 2010.05.12 | 5540 |
90 | Setting MPxIO in Solaris | ischo | 2017.07.31 | 5632 |
89 | 여러가지 백업방법에 대한 설명 | 조인상 | 2010.05.12 | 5768 |
88 | cron에 의해 자동으로 ftp를 하여 화일을 송/수신 하게 하려면? | 조인상 | 2010.05.12 | 5774 |
87 | sendmail multi que setting | 조인상 | 2010.05.12 | 5799 |
86 | CDE에서 한글이 안나올 경우 | 조인상 | 2010.05.12 | 5937 |
85 | SDS로 구성한 볼륨에 디스크 교체하려고 할때 | 조인상 | 2010.05.12 | 6061 |
84 | CDE화면으로 로그인이 안될때... | 조인상 | 2010.05.12 | 6073 |
83 | 솔라리스에서의 디스크 이름 | 조인상 | 2010.05.12 | 6113 |
82 | RACK 전원코드의 V(볼트)내역 | 조인상 | 2010.05.12 | 6251 |
81 | SPARC 10의 / 파일시스템 용량제한 | 조인상 | 2010.05.12 | 6261 |
80 | vi편집기 이용하여 텍스트 암호화하기 | 조인상 | 2010.05.12 | 6325 |
79 | sendmail relay test site | 조인상 | 2010.05.12 | 6340 |
78 | 패치 오류 (error code) | 조인상 | 2010.05.12 | 6363 |
77 | 디스크에 Boot Block 만들기 | 조인상 | 2010.05.12 | 6377 |
76 | SUN 장비 CPU on/offline 확인하고 고치기. | 조인상 | 2010.05.12 | 6387 |
75 | cpio를 이용하여 증분백업하기 | 조인상 | 2010.05.12 | 6428 |
74 | Sun Performance And Tuning - Sparc & Solaris | 조인상 | 2010.05.12 | 6497 |