리눅스에서 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관련 옵션 확인
[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=YES 설정시
데몬 시작 및 자동실행
[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에 포트가 정상적으로 등록 되었는지 확인
2. Iptables 수정
[root@localhost ~]# iptables -A INPUT -p tcp -m tcp --dport 30000:30010 -j ACCEPT
[root@localhost ~]# iptables -nL
[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 파일을 변경하는게 편합니다.
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 |