Tag Archives: FTP

[CentOS] vsftpd 패시브 모드로 동작하게 하기

클라이언트가 FTP서버에 접속하여 데이터를 주고 받는데에는 엑티브 모드와 패시브 모드 두가지가 있습니다. 이 두가지의 차이는 다음과 같습니다.

엑티브 모드는 클라이언트가 데이터를 수신받을 임의의 포트를 열고 서버에 알려주면 서버는 자신의 20번 포트를 통해 클라이언트의 임의의 포트에 데이터를 전송해 줍니다.

하지만 엑티브 모드에서는 클라이언트가 방화벽(공유기등의 사설 네트워크) 밑에 있다면 외부에서 이 클라이언트에 직접 접근하는것을 불가능합니다. 그래서 패시브 모드에서는 이러한 동작을 반대로 진행합니다. 정리하면 다음과 같습니다.

패시브 모드는 서버가 데이터를 송신해줄 임의의 포트를 열고 클라이언트에 알려주면 클라이언트는 서버의 임의의 포트에 접속하여 데이터를 가져갑니다.

결과적으로 방화벽과 같은 복잡한 네트워크 환경에서는 FTP의 패시브 모드의 지원이 꼭 필요합니다. 하지만 여기서 문제가 있는데 패시브 모드에서 서버가 사용하는 임의의 포트가 1024 이후의 모든 임의의 포트라는 것입니다. 이는 서버의 보안이나 방화벽 설정을 함에 있어 껄끄러움으로 작용하게 됩니다.

vsftpd에서는 이 패시브모드의 포트의 범위를 임의 설정할 수 있습니다. 그렇게 되면 방화벽 설정도 한결 용이해 질것입니다. /etc/vsftpd/vsftpd.conf 파일에 다음의 내용을 추가해줍니다.

pasv_enable=Yes
pasv_min_port=10090
pasv_max_port=10100

위에서 설정한 포트의 범위는 원하시는 적절한 범위로 설정하시기 바랍니다. 이제 방화벽 설정을 추가해 보겠습니다. /etc/sysconfig/iptables 에 다음을 추가하겠습니다.

-A INPUT -m state --state NEW -m tcp -p tcp --dport 10090:10100 -j ACCEPT

이제 데몬들을 재시작하면 패시브 모드가 정상적으로 동작하게 됩니다.

ftp> get eye.sql
local: eye.sql remote: eye.sql
229 Entering Extended Passive Mode (|||10093|).
150 Opening BINARY mode data connection for eye.sql (13719976 bytes).
 30% |****************                                       |  4094 KiB  682.45 KiB/s    00:13 ETA

파일을 한번 다운로드 받아보았습니다. 정상적으로 패시브 모드로 진입하는것을 확인할 수 있습니다.

간단하면서도 강력한 제약없는 FTP프로그램 – FileZilla Server

Linux라면 proftpd, vsftpd등이 있고 Windows 계열이라면 IIS가 있습니다. 하지만 지금 난 정말 급하게 간단하게 FTP 서버를 열어야 할경우엔 어떻게 해야 할까요.

알FTP에 간단하게 FTP를 만들 수 있는 기능이 있더군요. 하지만 접속이 최대 5명밖에 허용안되는 등 기능의 제약이 많은 문제가 있습니다.

그래서 찾아보던중 괜찮은 녀석을 발견했습니다. 바로 파일질라 서버!!!

[ FileZilla Server Download ]

위의 경로에서 다운받아 설치를 합시다. 그냥 기본적인 설정을 설치를 하면 될 것 같군요.

중간에 관리자 접속을 위한 Port설정이 있지만 크게 신경 쓰시지 않는다면 기본설정 그대로 쓰면 될것 같습니다.

FileZilla Server가 자동으로 서비스에 등록이 되어 실행됩니다. 이제 FileZilla Server Interface를 사용하여 설정을 할 수 있습니다.

사용자 삽입 이미지
위와 같이 관리자 모드로 접속을 할 수 있습니다. 이곳에서 상단의 기어모양 아이콘을 클릭하여 기본적인 설정을 할 수 있습니다.

포트번호와 동시접속자수 제한뿐만 아니라 SSL/TLS 및 Passive 설정까지 가능합니다. 이정도면 왠만한 고수준의 FTP서버 저리가라 입니다.

간단하게 접속 사용자 추가와 접근 폴더 설정을 위해서는 다음과 같이 하면 됩니다.

Edit – User 에 들어갑니다. 이곳에서 사용자를 추가하고 그 사용자가 접근할 디렉토리를 설정할 수 있습니다.

사용자 삽입 이미지
General이나 Shared folders에서 오른편을 보시면 Users가 있습니다. 그곳에 Add를 눌러 계정을 추가합시다.

기본적으로 비밀번호가 없는 익명 계정이 생성됩니다. General탭에서 비밀번호를 설정할 수 있습니다.

이번엔 Shared folders에서 Add를 눌러 접속할때 자동으로 접근할 디렉토리를 설정합니다.

바로 오른쪽에서 해당디렉토리의 권한을 지정할수도 있습니다. 탭에서 남은 두가지는 속도제한을 건다거나 특정 IP를 필터링 할수도 있습니다.

정말 대단합니다. 끝으로 FTP프로그램을 이용하여 접속해 봅시다. 잘되는군요^^