FTP는 다른 프로토콜들과 달리 2개의 세션이 생성됩니다.
또한 Active방식이냐 Passive방식이냐에 따라 방향성(?)이 달라지는 특성이
있습니다.
- Active방식
...먼저 목적지의 21포트로 접속을 하면서 출발지의 LISTEN 포트의 정보를
넘겨줍니다. 그럼 목적지에서 자신의 20번포트를 오픈해서 알려준 LISTEN 포
트로 접속을 시도합니다.
+--------+ 1028 Control Channel 21 +--------+
| FTP |------------------------------->| FTP |
| Client | | Server |
| |<-------------------------------| |
+--------+ 1029 Data Channel 20 +--------+
상기 그림에서 숫자는 각각의 포트번호를 의미합니다. FTP Client가 랜덤포
트(1028)을 오픈해서 서버의 21번포트로 접속을 시도하고, 여기서 클라이언
트가 LISTEN하고 있을 포트(1029:일반적으로 다음 빈포트를 알려주기 때문
에 오픈한 다음 포트로 LISTEN을 합니다.)로 출발지 20번을 오픈해서 넘어옵
니다. 따라서 FTP서버로 출발지 20번포트의 연결을 오픈하면 됩니다.
- Passive방식
...상기 그림과 같이 컨트롤채널은 동일하게 연결하나 LISTEN포트의 정보대
신 Passive방식으로 접속하겠다는 메시지가 날라갑니다. 따라서 방향성이 다
음과 같습니다.
+--------+ 1030 Control Channel 21 +--------+
| FTP |------------------------------->| FTP |
| Client | | Server |
| |------------------------------->| |
+--------+ 1031 Data Channel 3096 +--------+
그림과 같이 데이터채널이 출발지 랜덤포트에서 목적지 랜덤포트로 접속을
맺습니다. 이때는 FTP서버로 1024포트 이상은 모두 오픈을 해야겠죠.
또한 설치하시려는 방화벽의 위치와 FTP서버의 위치관계도 중요한데, 내부
에 FTP서버를 운영하시는 것인지, 아니면 외부의 FTP서버로 접속을 원하시
는 건지는 모르겠네요. NAT환경이면 IP Filter만으로 Active방식을 운영하시
는데 무리가 있을 수 있습니다.
: 그렇다면 결국 FTP서버를 사용하려면
: 제대로 된 방화벽 설치가 불가능하다는 결론이네요
:
: 다른데서 어떤분은 FTP는 방화벽밖에다 설치하라는데
: 방화벽 안은 뭐고 밖은 무엇을 얘기하는건지요?
: 제가 말씀드리는 방화벽은 natd 나 IP masq 이 아닙니다.
: 단지 특정 허용된 포트만 남기고 다른포트들은 filtering 하는 개념입니
다.
: 그리고 FTP 서버의 목적은 웹서버의 각각자기계정에 홈페이지파일들을 올
리기위한 목적이기때문에
: 따로 다른 호스트에 분리할수도 없습니다.
:
: 여러가지 테스트해본결과 FTP 클라이언트가 Passive 모드로 접속시도하게
되면
: 도대체 어느번호로 접속을 시도할지 도무지 무작위로 정해지는것 같습니
다.(1024번 이후부터)
:
: 혹시 1024 이후의 포트중에서 어느 범위의 포트를 정해놓고 (예 : 1350 -
1400) 오픈해서
: 접속하려는 FTP 클라이언트가 passive 모드로 접속을 시도해도
: 정해진 범위의 오픈된 포트내에서만 접속을 시도.허용하게 해주는 방법은
없는지요
:
: 그것도 안된다면 1024 부터 65535 까지 의 포트를 몽땅 다 열어줘야 하고
: 방화벽(포트필터링)은 1024번 이하에만 적용시키는 방법밖에 없다는 결론
인데
: 무슨 방화벽이 이렇게 무책임하고 의미가 없을수 있는지 이해가 안됩니다.
:
:
:
:
: someon wrote:
:
: >참고하세요....
: >
:
: >3년전 사무실에 방화벽을 설치하고 ftp오픈에서 헤맸던 기억이 나서 이렇
게
: >
: >글남깁니다..
: >
: >ftp데몬의 연결 특성으로 인해서인지 1024이후의 포트까지 오픈을 해줘
야
: >
: >정상적으로 동작을 하더군요... 세부적인 사항은 기억력의 한계로^^
: >
: >저의 경우 외부에서의 ftp포트로 포트스캔이 너무 폭주하여 아예 ftp를
닫고
: >
: >ssh를 이용한 scp를 사용하여 ftp처럼 사용을 하고 있습니다..
: >
: >ssh는 22포트를 이용하여 원격접속, ftp(ftp와 비슷한 scp) 모두 지원이
^^
: >
: >telnet, ftp는 접근 시도가 많은 포트로 네트웍 패킷 캡처를 해보면
: >
: >패킷내용이 쉽게 누출되더군요...
: >
: >이러한 이유로 전 ssh를 권해드리고 싶습니다^^
: >
: >
: >멜론바 wrote:
: >
: >>만족스러운 도움을 받지못해서 다시 질문합니다.
: >>
: >>지난번 질문은 아래 첨부되있읍니다.
: >>FTP 포트를 21 번 디폴트를 860 으로 사용하는건 문제가 아닌것 같습니
다.
: >>왜냐하면 21번으로도 바꿔서 시도 해봤으나 마찬가지였ㅅ습니다.
: >>또 ftp-data 포트인 20번도 열어넣고 시도해봤습니다.
: >>문제는 모든포트를 1차적으로 deny 해놓고 꼭 필요한 포트만 allow 했을
경우
: >>(20: ftp-data, 21: ftp, 25:smtp, 80: http, 110: pop, 3306:mysqld)
: >>다른 열린 서버포트들은 잘 돼는데 FTP 만 안된다는 것입니다.
: >>그리고 FTP 클라이언트를 써서 FTP 서버에 접속할때 log 화면을 보면
: >>항상 정해진 FTP 포트로 접속돼는게 아니고 다른 포트번호로 접속돼는
데
: >>그것도 할때마다 번호들이 바뀐다는 것입니다.
: >>그래서 추가로
: >>ipfw add 00800 allow tcp from any to 66.xxx.xxx.xxx 1300-1400
: >>이렇게 100개 정도 열어놓아도
: >>처음에는 이 번호안에서 접속돼지만 몇번후에는 다른번호로 접속시도돼
다가
: >>실패한다는 겁니다.
: >>그렇다고 무작정 포트번호를 몇백개, 몇 천개씩 ftp 를 위하여 열어놓는
다면
: >>방화벽 사용하는 의미가 없어진다는 얘기입니다.
: >>여기서 말씀드리는 방화벽은 ip firewall 을 만 입니다.
: >>natd 나 ip masqerading 은 사용하지 않습니다.
: >>단지 외부에서 꼭 접속가능게 해야할 ftp, smtp, http, mysqld 등만 열
어놓고
: >>나머지 다른 포트들은 보안강화를 위해 닫아놓는게 사용목적입니다.
: >>
: >>
: >>도와주시면 감사하겠습니다.
: >>
: >>
: >>==== 처음 질문 내용 첨부==========
: >>리눅스가 아니고 FreeBSD 입니다
: >>도움주실수 있을거라 믿고 여기에 질문합니다.
: >>
: >>FTP 는 Proftp 를 씁니다 ftp 포트는 860 을 씁니다.
: >>그리고 작동방법은 standalone 을 쓰고요 잘됩니다.
: >>문제는 ipfw 를 써서 Firewall 을 구축할때 생깁니다
: >>
: >>% ipfw add 01000 deny tcp from any to 66.xxx.xxx.xxx
: >>이렇게 1차적으로 외부에서 내부로 들어오는 모든 tcp 를 막고
: >>% ipfw add 00900 allow tcp from any to 66.xxx.xxx.xxx
23,25,80,110,860,3306
: >>이렇게 ftp를 포함한 필요한 포트만 접속할수 있게 열어 놓았습니다.
: >>
: >>위의 열어놓은 포트들 (telnet, smtp, pop3, http, mysqld 등) 은
: >>외부에서 잘 통과/접속이 됩니다.
: >>그런데 ftp 포트 (860) 만 전혀 안됩니다.
: >>그래서 포트를 원래 21 으로 바꾸고 ipfw 도 다시 바꿔서 해봐도 마찬가
지입니다.
: >>전에 어디서 본것 같은데 ftp 는 포트번호 가 접속할때
: >>다른번호로 변환되서 사용된다고 본 기억이 나는것 같은데요
: >>
: >>그렇다면 FTP 서버르 사용하게될 경우 Firewall 은 사용못하는게 되나
요?
: >>
: >>방법이 있으면 가르쳐 주세요.
: >>---------------------------------------------------