안녕하세요 버섯돌이 유재성입니다.
최근에 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 설정에도 도움이 될 듯싶어서 남겨 놓습니다.
SELinux 관련 - 홈 디렉토 권한 설정 (옵션)
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
로그인 해 보시면 정상적으로 로그인 되는 걸 확인할 수 있습니다.