본문 바로가기

OS

[버섯][CentOS7] ProFTPD 설치 방법

안녕하세요 버섯돌이 유재성입니다.


최근에 CentOS 7에 간단히 사용할 업데이트 서버 구축을 위해 Apache Web Server와 FTP 데몬을 설치할 일이 있었는데

몇 년 만에 만지다 보니 바뀐 것도 많아서 엄청나게 삽질한 것 같군요.


초기에는 자주 사용하는 vsftpd를 사용하려 했으나 Passvie 기능 중 ls 명령어로 존재하지 않는 폴더를 요청하면

에러가 발생해야 하는데 에러를 발생하지 않아서 관련 부분을 해결하려고 며칠간 삽질하다 포기했네요.^^


ProFTPD의 경우 별다른 설정 없이 간단하게 설치가 가능해서 CentOS7에 설치하는 절차를 적어 봅니다.

참고로, ProFTPD의 경우 기능이 상당히 많지만 아래 설명한 방법 외에는 모르기 때문에 세부 내용은 구글링 하시기 바랍니다.^^


ProFTPD 설치

> yum install epel-release

   

 


> yum install -y proftpd proftpd-utils

   



   

 

   오늘자 기준으로 ProFTPD Version 1.3.5가 설치되었네요.


ProFTPD를 시작합니다.

> systemctl start proftpd.service


ProFTPD를 부팅 시 자동으로 실행 되도록 합니다. (필요 하신 분만)

> systemctl enable proftpd.service

   ln -s '/usr/lib/systemd/system/proftpd.service' '/etc/systemd/system/multi-user.target.wants/proftpd.service'



방화벽 설정

CentOS 7부터 방화벽이 firewall-cmd 방식으로 변경되었습니다.


방화벽에 ftp 서비스를 등록합니다.

> firewall-cmd --add-service=ftp --permanent


> firewall-cmd --reload

 

 


ProFTPD의 경우 여기까지만 진행하고 adduser  명령어로 사용자를 추가하면 FTP 사용이 가능합니다.


FTP 사용자 계정 추가

사용자 추가

> adduser mrm


비밀번호 설정

> passwd mrm



이후 과정은 필수는 아니지만 참고 하시면 다른 ftp 설정에도 도움이 될 듯싶어서 남겨 놓습니다.



FTP 계정의 홈 폴더 변경 (필요시)
usermod 명령으로 특정 계정의 홈 폴더를 변경할 수 있습니다.
FTP의 경우 보통 유닉스 계정을 이용해서 로그인 처리가 되므로 홈 폴더를 변경하면 FTP의 홈 폴더도 함께 변경 됨.

예를 들어, mrm 계정의 홈 폴더를 /home/newMrm으로 변경하고 싶은 경우
> usermod -d /home/newMrm mrm

ProFTPD의 경우 Unix 계정이 아닌 다른 방법으로 FTP 계정을 할당한 경우에는 해당 방법을 참고 하시길...


SELinux 관련 - 홈 디렉토 권한 설정 (옵션)

보통 chroot 관련해서 FTP 홈 디렉토리에는 쓰기 권한이 설정되면 안 되기 때문에 FTP 서버에 로그인 하면 에러가 발생하는 경우가 있는데 제 경우 ProFTPD는 SELinux 사용 시에도 홈 디렉토리 권한과 관련해서 아무런 문제가 없더군요.

향후 다른 FTP 등에서 필요할지 몰라서 관련 내용을 잊어버리고 삽질하기 전에 혹시나 싶어서 남겨 놓습니다.

> setsebool -P ftp_home_dir on
  FTP 데몬이 사용자의 홈 디렉토리를 읽거나 쓸 수 있도록 허용합니다.

> setsebool -P allow_ftpd_full_access on
  FTP 데몬이 시스템의 모든 파일을 읽거나 쓸 수 있도록 허용합니다.

참고 : SELinux 비활성 화 방법
/etc/selinux/config 파일의 내용 중 SELINUX 를 "SELINUX=disabled" 로 설정 후 재시작

SELinux 관련해서 복잡하고 보안이 중요하지 않다면 비활성화 시켜 보세요^^
또는 FTP 서버가 원하는 대로 동작하지 않는 경우에는 방화벽과 SELinux를 비활성화 시켜서 테스트해 보시면 될 듯싶습니다.
사용 가능한 옵션 및 상태 조회는 "getsebool -a"로 확인 가능합니다.


ProFTPD 환경 설정 (옵션)

기존 설정값 백업

> cp /etc/proftpd.conf /etc/proftpd.conf.orig


Passive 모드에서 사용할 포트 범위 제한(필수는 아님)

Passive 구조 특성상 랜덤하게 내부 포트가 오픈되므로 외부에 특정 포트만 오픈해서 방화벽에 등록하고자 할 때 이용 됨.

> vi /etc/proftpd.conf

   아래 내용 추가

   PassivePorts    6000    6900


> systemctl restart proftpd.service



[FTP 테스트]

테스트를 위해 FileZilla Client로 테스트를 진행했습니다.



ProFTPD에 TLS 설정을 하지 않았으므로 암호화는 Only use plain FTP를 선택합니다.


전송 모드는 방화벽과 관련이 있는데 ProFTPD는 기본적으로 Passive 모드로 동작합니다.


Passive를 지원하므로 "전송 설정" 탭에 가셔서 Passive Mode인 "수동형(P)" 를 선택합니다.


Active(능동형) 모드와 Passive(수동형) 모드에 대한 개념은 아래 글을 참고 하시면 도움이 되리라 봅니다.

https://documentation.cpanel.net/display/CKB/How+to+Enable+FTP+Passive+Mode


로그인 해 보시면 정상적으로 로그인 되는 걸 확인할 수 있습니다.

 



[참고 정보]
ProFTPD Homepage

ProFTPD Documentation Index

ProFTPD Configuration Directive List

CentoOS SELinux - Howoto

How To Install EPEL Repo on a CentOS and RHEL 7.x

How to Enable FTP Passive Mode