본문으로 바로가기

리눅스 FTP 설치

category IT/Linux 2017. 7. 21. 18:38

리눅스에서 FTP 서버 만드는법을 포스팅 하겠습니다.

사용할 리눅스 버전은 CentOS7이며 VSFTP를 사용합니다. ProFTP는 간단하게 설치법과 문제해결 방법만 알려드리겠습니다.

 

VSFTP 설치 방법

VSFTP 설치
    [root@localhost ~]# yum install -y vsftpd

 

설치 확인

설치 확인

 

로그인을 위한 SELinux 설정으로 SELinux를 끄거나, 옵션을 주면 됩니다.

SELinux를 끄는법

1. 완전 끄기 :

[root@localhost ~]# vi /etc/selinux/config : 에서 SELINUX=disabled 로 변경 후 재시작

2. 임시로(재부팅 전까지) 끄기 :

[root@localhost ~]# setenforce 0

SELinux를 켜두고 옵션 주는법 :

[root@localhost ~]# getsebool -a | grep ftp : 명령어로  SELinux의 FTP관련 옵션 확인

getsebool 결과

 

[root@localhost ~]# setsebool -P ftp_home_dir on : 홈 디렉터리에서 ftp를 사용 가능하게 하는 옵션, /home만 적용

[root@localhost ~]# setsebool -P ftpd_full_access on : 홈 디렉터리를 옮긴 경우 이 옵션을 주면 됩니다.

-P 옵션은 재부팅 후에도 적용 되게 하는 옵션이며 -P 옵션이 들어가면 설정하는데 시간이 오래 걸립니다.

on, off 뿐만 아니라 1, 0 으로도 설정 가능합니다.

 

vsftpd.conf 파일 설정

anonymous_enable=NO : 익명 사용자의 로그인을 허용하는 옵션으로 보안을 위해 NO로 설정

local_enable=YES : 로컬 계정으로 로그인 할지 선택하는 옵션으로 로컬 계정을 사용하기 때문에 YES

write_enable=YES : 쓰기 허용 설정으로 YES 설정

local_umask=022 : FTP사용자가 업로드 한 파일에 대해 umaks설정

anon_upload_enable=NO : 익명 사용자의 업로드 허용 옵션

anon_mkdir_write_enable=NO : 익명 사용자의 디렉터리 생성 허용 옵션

listen=NO : xinetd 방식으로 사용할지 정하는 옵션이지만 CentOS7은 NO만 가능한것 같습니다.
pasv_enable=YES : FTP는 액티브 방식과 패시브 방식이 있는데 해당 옵션을 주면 패시브로 동작합니다.

listen_port=30000 : 접속 제어용 포트번호 설정.

pasv_min_port=30001 : 패시브 모드에서 데이터 전송에 사용할 최소 포트번호로 1024번 이후로 원하는 값을 사용하시면 됩니다.

pasv_max_port=30010 : 패시브 모드에서 데이터 전송에 사용할 최대 포트 번호입니다.

allow_writeable_chroot=YES : 보안상 디렉터리에 쓰기가 허용되서 있으면 접근이 불가능 합니다. 접근을 허용해 주는 옵션입니다. YES설정

chroot_local_user=YES : FTP 사용자의 홈 디렉터리 밖으로 나가지 못하게 하는 옵션으로 보안상 중요합니다. YES 설정

 

chroot_local_user=NO 설정시

chroot_local_user 설정 안했을 때

 

chroot_local_user=YES 설정시

chroot_local_user 설정 했을 때

 

데몬 시작 및 자동실행

[root@localhost ~]# systemctl restart vsftpd : 데몬 재시작 명령어 입니다.

[root@localhost ~]# systemctl enable vsftpd : 재부팅시 자동으로 데몬이 실행되도록 하는 명령어 입니다.

 

Firewall or Iptables 수정

1. FIrewall 수정

[root@localhost ~]# firewall-cmd --permanent --add-port=30000-30010/tcp --zone=public

[root@localhost ~]# systemctl reload firewalld : --permanent 옵션은 영구 저장 옵션이며, reload 명령어를 통해 런타임에 적용해 주어야 합니다.

[root@localhost ~]# firewall-cmd --list-all : firwall에 포트가 정상적으로 등록 되었는지 확인

firewall 확인

 

2. Iptables 수정

[root@localhost ~]# iptables -A INPUT -p tcp -m tcp --dport 30000:30010 -j ACCEPT

[root@localhost ~]# iptables -nL

iptables 확인

 

[root@localhost ~]# service iptables save : save 명령어를 사용해서 config 파일에 내용을 저장 해야 재부팅 해도 유지됩니다.

 

 

접속 확인

접속 확인

 

 

 

/home 디렉터리가 아닌 별도의 디렉터리에 FTP유저의 홈 디렉터리를 만드는 경우 주의사항 입니다. (ex: /data/ftp/user1)

/root 디렉터리 하위에는 만들면 안됩니다.

user1 홈의 상위 디렉터리에 최소 x권한이 있어야 접속 가능합니다.

drwx--x--x. 4 root root 30 Nov 18 23:58 ftp


하는 디렉터리를 미리 만들고 useradd -M 옵션을 사용해 사용자 생성 후 /etc/passwd 파일을 변경하는게 편합니다.

passwd 수정

 

 

PROFTP 설치 방법

epel 저장소 추가

[root@localhost ~]# yum install -y epel-release : PROFTP는 기존 저장소로는 yum 설치가 안됩니다. epel 저장소를 추가해야 합니다.

 

proftpd 설치

[root@localhost ~]# yum install -y proftpd

 

데몬 실행 및 자동 재시작

[root@localhost ~]# systemctl restart proftpd

[root@localhost ~]# systemctl enable proftpd

데몬 실행이 안되는 경우 hostname 문제일 경우가 있습니다. hostname을 확인하고 /etc/hosts에 추가 해주시면 됩니다.

 

분명히 아이디와 패스워드가 맞는데 접속이 안되는 경우 pam 때문일 수 있습니다.

/etc/pam.d/proftpd 파일의 내용을 모두 수정합니다.

 

#%PAM-1.0

 auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

 auth include system-auth

 auth required pam_shells.so

 account include system-auth

 session include system-auth

 session required pam_loginuid.so

 

/etc/pam.d/proftpd 파일 내용 수정 후 소프트 링크 생성

[root@localhost ~]# ln -s /etc/pam.d/proftpd /etc/pam.d/ftp

 

proftpd 재시작

[root@localhost ~]# systemctl restart proftpd

 

'IT > Linux' 카테고리의 다른 글

CentOS7 루트 비밀번호 초기화  (0) 2017.07.31
리눅스 RPM, YUM 옵션  (0) 2017.07.26
리눅스(CentOS7) Firewall 설정 방법  (0) 2017.07.25
리눅스 CRON, AT 설정 방법  (0) 2017.07.15
CentOS에서 xrdp사용하기  (0) 2017.07.13