Passive하고 Active하고 대충 어떨때 쓰는지는 알고 있었는데, 내부적인
원리를 알 수 있어서 좋네요...
: FTP 서버를 방화벽 내부에서 구동하려면 FTP connection type에 대한 이해가 필요합니다. 이러
한 원리를 이해하시려면 tcp/ip, firewall 에 대한 사전 지식이 필요합니다. 그럴 경우 너무 방
대해지므로 간략하게 설명드리겠습니다. : : <b>active connection vs. passive connection </b>
:
: FTP에서 사용되어지는 connection type은 2가지로 나눕니다.
:
: 첫번째가 control connection으로서 FTP client software에 의해 초기화(접속시도)됩니다. 이것은 cli
: ent:X 에서 server:ftp (port 21)로 접속이 이루어지며 command 전송시 사용되어 집니다.
: 클라이언트:X -> 서버:ftp
:
: 여기서 X 는 1023보다 큰 비사용중인 포트를 말합니다.
:
: 두번째는 data connection으로서 이것은 active mode와 passive mode로 나누어지며 data(실제 전송될
: 파일) 전송시 사용되어 집니다. 이때 일반적인 FTP server는 active mode로 data를 전송합니다.
: active mode는 다음과 같은 절차로 연결을 진행하게 됩니다.
:
: - FTP client는 data 전송시 passive connection을 사용하는지 요청하게 되고 그렇지 않을 경우 FTP s
: erver가 data 전송을 위해 접속하게될 client 자신의 port(Y라고 가정)를 서버에게 알려줍니다.
: - FTP 서버는 ftp-data port(20번)를 통해 client가 알려준 포트로 접속을 시도를 요청합니다. (syn
: packet 전송) - 해당 client는 요청에 대한 수신 확인 및 허락을 전송합니다.(awk+syn packet 전송
: ) - server는 client가 보낸 packet에 대한 수신 확인을 전송합니다.(awk packet) - 이로서 connection
: 은 형성되고 data를 전송하게 됩니다. (자세한 내용은 RFC 문서를 참고하시기 바랍니다)
: 즉 server:ftp-data -> client:Y 형태로 연결됩니다.
:
: 이러한 이유로 방화벽내부에 FTP server를 운영할 경우 command는 전달되나 실제 data가 전송되
: 지 않는 문제가 발생합니다. (ipchains로 설정할 경우, iptables의 경우라면 전송되는 flag에 따
: 라 섬세하게 설정 가능) 또한 firewall 운영시 내부네트웍에서 외부로 나가는 1023 이상의 포
: 트를 모두 열여 주어야 하는 문제도 발생됩니다. (firewall 제품 active mode에 대해 지원하기
: 도 하고 그렇지 않은 제품도 있습니다) passive mode는 다음과 같은 연결을 진행하게 됩니다.
:
: - FTP client가 data 전송시 FTP server에게 passive connection를 사용하는지 여부를 요청하게 됩니다
: . - passive connection를 사용한다면 FTP server는 client가 data 전송을 위해 Server에 접속할 1023이상
: 의 port를 알려주게 됩니다. (이때 사용할 포트를 N 이라고 정하며, N 값은 FTP server 마다 설
: 정이 다릅니다. 즉 active connection에서 사용하는 ftp-data(20번) port를 사용하지 않습니다.) - FT
: P client는 Server가 알려준 port N으로 접속을 시도하기 위해 syn packet을 자신의 Z(1023이상의 비
: 사용 중인) port을 열어 전송합니다. - FTP server는 awk+syn packet을 통해 수신 확인 및 연결을
: 허락하게 됩니다. - FTP client는 awk packet을 전송하여 수신 확인을 하고 connection을 맺은 후 da
: ta를 전송하게 됩니다. 즉 client:Z -> server:N 의 형태로 연결됩니다.
: 이러한 경우라면 방화벽에서 FTP server가 passive connection에서 사용하게 될 port를 열어 정상
: 적으로 data 전송이 가능합니다.
: <b>FTP server를 passive connection으로 운영하기 위한 설정 </b>
:
: Linux에서 운영하는 대표적은 FTP server인 wu-ftpd와 proftpd에 대해서만 언급하겠습니다.
:
: 설정 방법은 해당 파일에 passive port로 사용할 port 영역을 명시하게 됩니다. 2000개 이상의 p
: ort를 열것을 권장하며, 일반적으로10000번 이하의 포트를 사용합니다.
: wu-ftpd의 경우
:
: wu-ftpd에서 제공하는 /etc/ftpaccess 파일에 다음 내용을 추가합니다. standalone type server라면 반
: 드시 restart 합니다.
: passive ports 0.0.0.0/0 15000 17000
:
: 즉 wu-ftpd를 passive FTP로 운영하기 위해 15000~17000 포트를 사용하는 것으로 설정한 것입니다.
:
: proftpd의 경우
:
: proftpd에서 제공하는 /etc/proftpd/conf/proftpd.conf 파일에 다음 내용을 추가합니다. standalone type
: server라면 반드시 restart 합니다.
: PassivePorts 60000 62000
:
: 즉 proftpd를 15000~17000 포트를 이용하여 passive FTP로 운영할 것을 설정한 것입니다.
:
: <b>passive connect시 client에서 주의할 사항 </b>
:
: 일반적으로 server를 passive connection으로 운영할 경우 client 또한 passive mode 로 사용하여야 합
: 니다. Netscape의 경우 특별한 문제가 발생하지 않으며, ncftp의 경우 접속후 set passive on 명령
: 어를 수행하시면 됩니다. gftp를 사용하신다면 FTP -> Options -> General -> "Passive file transfer" 를
: 설정하시기 바랍니다. -- linux is not software it's a lifestyle
--
Mail : iostream1111 at hanmir.com
WWW : khpark.com
ftp movie at khpark.com