목차
FTP란 파일 전송 프로토콜(File Transfer Protocol)의 약자로, TCP/IP 네트워크(인터넷)상의 장치가 파일을 전송할 때 사용하는 규칙이다.
그리고 FTP 서버란 파일을 Mac, Windows, Linux 컴퓨터 등의 장치에서 다른 장치로 전송하는 소프트웨어다. 간단히 설명하면 FTP 서버는 FTP 주소를 가지고 있고 FTP 연결을 수신하는 데 사용되는 컴퓨터입니다.
우리는 FTP 서버로부터 파일을 ‘받을‘ 수도 있고, FTP 서버로 파일을 ‘보낼‘ 수도 있다. 파일을 업로드하면 업로드된 파일이 개인용 장치에서 서버로 전송되고, 파일을 다운로드하면 다운로드된 파일이 서버에서 개인용 장치로 전송되는 것이다.
FTP 서버를 구축하기 위해 기본적으로 다운 받아야 하는 패키지는 vsftpd 패키지다. vsftpd 패키지를 설치하고 방화벽과 SELinux를 오픈해 FTP 서버를 구축/활성화 할 것이다.
FTP 패키지 설치
ps -ax | grep vsftpd
yum list installed | grep vsftpd
명령을 입력해 우선은 패키지가 혹시 설치 되어있는지 확인부터 한다. 당연히 설치가 안 되어있다고 나올 것이다.
yum -y install vsftpd
명령을 입력해 FTP 서버 패키지를 설치한다.

sudo를 붙였는데, root 사용자면 sudo를 굳이 붙일 필요 없다.


패키지 설치가 완료되었다.
FTP 설정
설치가 완료되면 vsftpd.conf 파일에서 권한과 접속에 대한 부분을 수정해야 한다. /etc/vsftpd/vsftpd.conf 파일을 vi나 gedit으로 열어 vsftpd.conf 파일을 수정한다.
다음과 같이 수정한다. 줄 번호를 보기 위해서는 :set nu 명령어를 입력하면 됨.
12번째 줄 annoymous_enable=YES -> annoymous_enable=NO
102번째 줄 #chroot_list_enable=YES -> chroot_list_enable=YES(주석 해제)
104번째 줄 #chroot_list_file=/etc/vsftpd/chroot_list -> chroot_list_file=/etc/vsftpd/chroot_list(주석 해제)
115번째 줄 listen=NO -> listen=YES
124번째 줄 listen_ipv6=YES -> listen_ipv6=NO
102번째 104번째 줄에 주석을 해제하여 우리는 FTP 시스템의 root 디렉토리를 바꾸었다. 허용리스트 파일을 아래와 같이 conf 파일에 설정 해 주었기 때문에, 해당 경로에 허용할 아이디 리스트를 입력하여 준다.
필자는 현재 사용중인 root를 입력했다.

FTP 계정이 접속 거부 리스트에 포함되기 때문에 해당 설정도 바꿔야 root로 ftp를 사용가능하다.
아래 두 파일에서 root를 지워야 한다.
vi /etc/vsftpd/ftpusers
vi /etc/vsftpd/user_list

root 지우기

root 지우기
방화벽 설정
이제 지금까지 하던거와 비슷하게 방화벽을 해제해 주면 된다.
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --reload

SELinux 설정
SELinux 는 Linux의 보안을 강화해 주는 보안 강화 커널이고 zero-day 공격 및 buffer overflow 등 어플리케이션 취약점으로 인한 해킹을 방지해 주는 핵심 구성요소이다. 일단 SELINUX를 해제하여 FTP에 대한 보안의 영역을 최소화한다.
/etc/selinux/config를 에디터로 연다.
vi /etc/selinux/config

SELINUX=enforcing 을 disabled로 변경하여 준다.
이젠 당연히 systemctl 명령으로 서비스를 활성화하고 상태를 점검하면 된다.
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd

FTP 서버 구축이 완료되었다.
Reference