TIP! - FTP(VSFTPD)를 설치 후 외부에서는 접속이 잘 되는데 사내에서는 안되는 이유?!

FTP(VSFTPD)를 설치 후 외부에서는 접속이 잘 되는데 사내에서는 안되는 이유가 뭘까?

결론부터 이야기하자면 FTP의 Active모드와 Passive의 특성 때문이다.

FTP는 일반적으로 20번과 21번으로 데이터의 전송과 접속을 한다. 따라서 FTP서버(vsftpd와 같은)를 설치한 후 설치한 서버의 방화벽에서 20번과 21번은 당연히 오픈해야 한다. 그런데, 사내의 방화벽외부의 타사에서 접속하는 경우에는 잘 되는 접속이 유독 사내에서 안되는 경우가 있다. (엄밀히 말하면 접속은 되는데 디렉토리 목록을 받아오지 못하고 데이터를 송수신을 못하는 경우) 이는 FTP서버와 접속을 Active모드로 했기 때문이다.

FTP의 Active 모드는 접속은 클라이언트가 하지만 데이터전송을 위한 접속은 "서버가 클라이언트"에게 요청한다. 대충 말로 쓰자면 이런 시나리오다.

외부의 A가 우리 사내의 FTP서버에 접속을 하면 우리 사내 FTP서버는 외부A에게 데이터를 전송할 포트를 알려달라고 요청하게 된다. 이때 외부A의 1024이상의 포트로 접속이 이루어지고 데이터를 송수신할 수 있게 된다. 대개 외부A는 일반 가정 또는 단순히 인터넷에 접속된 PC라면 큰 문제는 없겠지만 외부A가 속한 네트워크에서 방화벽이 가동중이라면 당연 20, 21번(또는 1024번 이상)을 오픈해야 한다.

문제는 이렇게 외부A의 방화벽 관리자는 센스가 철철 넘쳐서 설정해 주었는데 우리사내 FTP의 관리자는 단순히 서버자신의 20, 21번을 오픈해놓고 일다했다고 하면 곤란해 진다. 이유는 Active모드에서는 사내에서 접속하는 모든 클라이언트의 20,21번(또는 1024번 이상)을 오픈해 주어야 하니까. 즉, 우리 사내의 B가 사내 FTP서버에 접속을 시도하면 대개 아웃바운드는 허용이니까 접속은 된다. 그러나 Active모드의 특성상 FTP서버가 사내B에게 접속할 포트를 알려달라고 하면 B는 묵묵부답인 상태가 될 것이다. 왜냐하면 B의 송수신을 관장하는 방화벽에서는 20, 21번(또는 1024번 이상)을 오픈한 적이 없으므로.

고로 Active모드로 사내 FTP서버를 구성하고 사내에서 접속을 허용하고 데이터를 송수신하려면 FTP서버 자신뿐만 아니라 접속하는 모든 개개PC의 20, 21번(또는 1024번 이상)도 오픈해 주어야 한다. 그러나 사내 네트워크가 방대하고 보안상 직원PC의 포트를 오픈할 수 없는 경우 등 사유가 발생하면 FTP서버를 Passive모드로 설정해야 한다.

Passive모드는 "클라이언트가 서버"에게 데이터전송을 위한 포트를 요청한다. 다만 Passive모드는 데이터전송을 위한 20번을 사용하지 않으므로 1024포트 이상의 특정 포트를 사용하므로 해당 포트를 오픈해야 한다. (관리자가 임의 지정할 수 있으며 대부분의 vsftpd 등에서 이를 지원한다. ) 물론 FTP서버에서 오픈해야하는 포트수가 늘어나는 단점이 있고, 다른 서비스에서 사용중인 포트를 확인하여 충돌나지 않도록 해야 한다.

참조 : http://mintnlatte.tistory.com/407 

There are no comments yet. - 아직 댓글이 없습니다.

Leave a Comment

Leave this field empty:




Powered by

© 2010-2018 NOOREE.COM