Study/Network

[Network]FTP 서버 구축

seomj 2024. 8. 3. 20:00

FTP 서버

File Transfer Protocol

TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜

 

port 21: control connetion

port 20: data connection

 

구축

CentOS 7

 

vsftpd 설치

yum install -y vsftpd

 

/etc/vsftpd 생성 확인

 

vsftp 파일 수정

/etc/vsftpd/vsftpd.conf 수정

vi vsftpd.conf

anonymous_enable=NO
listen=YES
listen_ipv6=NO

 

root 계정이 접속할 수 있도록 root 사용자를 제거하거나 주석 처리

vi ftpusers
# root

vi user_list
# root

 

방화벽 설정

firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --reload

ftp 관련 방화벽 설정

 

vsftpd 재시작

systemctl restart vsftpd

 

오류: SELinux 설정

파일 업로드가 진행되지 않아 뭐가 문제인지 고민했다..

 

selinux 문제였다

 

오류만 해결하고자 싶으면 비활성화시키면 된다.

setenforce 0

 

영구적으로 끄고 싶다면 다음과 같이 설정하면 된다.

vi /etc/selinux/config
SELINUX=disabled

 

상세하게 설정을 하고 싶다면 setsebool을 사용하면 된다.

vsftpd.conf를 보면 해당 기능에 대해 명시되어 있다.

(이래서 주석을 잘 읽어야 한다.. 영어도 잘해야 한다..)

anon_upload_enable이 주석처리가 안되어 있지만 이를 주석처리하고 진행해도 문제가 없었다.

vsftpd.conf의 경우, 본인이 원하는 대로 잘 읽어보고 설정하길 권장한다.

 

다음과 같이 설정했다.

getsebool 명령어로 bool 값을 확인할 수 있다.

setsebool 명령어는 selinux 정책 규칙을 활성화/비활성화 할 수 있다.

-P는 영구적으로 설정하는 데 사용한다. 옵션 없이 지정하면 reboot시 설정이 초기화된다.

 

이렇게 설정해준 뒤 setenforce 1로 다시 활성화해도 오류없이 진행할 수 있었다.