본문 바로가기
Linux/서버 구축

Linux FTP 서버 구축 (CentOS7)

by 프리윙즈 2022. 2. 8.
728x90
반응형

Linux FTP 서버 구축 방법입니다.

 

먼저 vsftpd 패키지를 설치해주어야 합니다.

 

yum install -y vsftpd 명령어를 입력하여 설치해줍니다.

 

설치가 완료되면 /etc/vsftpd 경로에 해당 패키지가 설치되고, 아래 그림과 같이 4개의 파일이 생성됩니다.

FTP 설정을 하기 위해 vsftpd.conf 파일을 vi 명령어로 실행시키면 아래와 같이 열립니다.

아래 내용은 위 내용을 번역해 놓은거기 때문에 참고해서 수정하시거나

vsftpd.conf 파일 내용을 다 지우시고 아래 내용 입력 후 수정하셔도 됩니다.

listen=YES
# VsFTP데몬을 독립모드(Standalone)으로 서비스
listen_port=21
# 21번 서비스 포트에 경청하도록 함
max_clients=50
# 서버에 접속할 수 있는 클라이언트의 최대수 제한
max_per_ip=2
# 동시 ftp 접속자 수를 제한
# 접속 설정
local_enable=YES
# 로컬 계정 사용자들의 접속 허용 여부
pam_service_name=vsftpd
# 팸 인증파일 모듈명 명시
userlist_enable=NO
# 명시된 사용자의 로그인 허용 옵션
userlist_file=/etc/vsftpd/user_list
# 명시된 사용자를 읽어올 파일 지정
tcp_wrappers=YES
# tcp_wrappers의 적용 여부 설정
# 허용할 호스트 = /etc/hosts.allow
# 차단할 호스트 = /etc/hosts.deny
# 대기시간 설정
connect_timeout=120
# Active Mode를 사용하는 클라이언트의 접속 허용시간 설정 초 단위)
accept_timeout=120
# Passive Mode를 사용하는 클라이언트의 접속 허용시간 설정(초 단위)
data_connection_timeout=300
# 데이터 전송시 적용되는 타임아웃 값
idle_session_timeout=300
# idle 타임에 대한 타임아웃 값. 접속 후 300초 동안 작업이 없으면 강제 로그아웃
# 메시지 설정
ftpd_banner=ftp server
# 사용자가 FTP서버에 접속했을 때 보여줄 환영 메세지
dirmessage_enable=NO
# 개별 디렉토리의 메시지를 보여주도록 허용 여부
#message_file=.message
# 디렉토리 안내메세지 파일로 사용할 파일명 지정
# 모드 설정 
port_enable=YES
# 데이터 전송을 위해서 Active Mode를 사용할 것인지 설정
connect_from_port_20=YES
# 20번 포트의 데이터 전송 연결을 허용할 것인가의 여부
ftp_data_port=20
# 데이터 전송 포트 지정
pasv_enable=YES
# Passive Mode를 사용할 것인지 설정
pasv_min_port=50000
pasv_max_port=60000
# Passive Mode 연결시 할당될 최소부터 최대 포트 설정 옵션
ascii_upload_enable=NO
ascii_download_enable=NO
# ascii 모드로 업로드 / 다운로드 제한 설정
use_localtime=YES
# ftp서버는 GMT 시각으로 보여주기 때문에, 지시자를 통해 국내시간으로 보여줌
# 권한 설정
local_umask=022
# 로컬계정 사용자들의 umask 값 설정 지시자
# 077일 경우 파일퍼미션 600, 디렉토리퍼미션 700
file_open_mode=644
# 파일이 업로드 되었을 때의 퍼미션
force_dot_files=NO
# 히든 파일 / 디렉토리 보여줄 것인지 설정
hide_ids=YES
# 디렉토리 목록에 UID를 보여주지 않고, 모두 FTP로 표시 설정
download_enable=YES
# 다운로드에 대한 권한 설정
write_enable=YES
# write에 대한 권한 설정
#cmds_allowed=none
# 사용자에게 허가될 명령어 지정
#deny_file={*.mp3}
# 업로드를 거부할 파일명 지정
#hide_file={*.mov}
# 숨길 파일명 지정
async_abor_enable=NO
# 파일 전송 취소시, 취소되지 않는 상태 방지, 보안상 조치 않기 때문에 비활성화
ls_recurse_enable=NO
# ls -r 옵션 허용 여부, 허용하지 않는 것이 기본 설정
#보안 설정
chroot_list_enable=YES
chroot_local_user=YES
# 전체 사용자를 대상으로 chroot()기능 적용
# 자신의 홈디렉토리 상위 디렉토리로 이동하지 못하게 함
passwd_chroot_enable=YES
# oppenssh에 chroot 패치를 가하면, ssh 또한 자기 home 디렉토리를 벗어나지 못하게 설정 
#secure_chroot_dir=/var/share/empty
# secure chroot()에 사용될 디렉토리 지정
# ftp 사용자에 대해 쓰기 권한이 없어야 함
# 로그 설정
xferlog_enable=YES
# ftp 접속 후에 파일 업로드 / 다운로드에 대한 로그를 남길 것인지 여부
xferlog_file=/var/log/vsftpd.log
# VsFTP의 기본 로그 파일 명시
xferlog_std_format=NO
# 로그 파일에 남길 로그 파일의 포맷을 기본 포맷으로 남길지 여부
#dual_log_enable=NO
# 2중 로그 기록 여부
# 활성화시 /var/log/xferlog,  /var/log/vsftpd.log에 기록
#syslog_enable=NO
# syslogd 데몬을 이용해서 로그를 기록할 것인지 설정
session_support=YES
# wtmp에 ftp 접속 관련 기록을 남김
# last 명령어로 FTP 접속 기록 확인
#가상 사용자 설정
#guest_enable=NO
# 가상유저 모드를 운영할 것인지에 대한 설정
# 활성화시 모든 비익명 사용자는 가상 사용자로 접속됨
#guest_username=ftp
# 가상 유저들의 실제 계정 지정
#user_sub_toke=XXX
# 가상 유저들을 지칭할 가상의 변수 지정
#local_root=/home/virtual/XXX
# 가상 유저들이 로그인 후 이동될 디렉토리 지정
#익명 사용자 설정
anonymous_enable=NO
# 익명 접속을 허용할 것인지 여부 설정
one_process_model=NO
# 클라이언트 접속마다 하나의 프로세스 작동되도록 할 것인지 설정 
#익명 사용자 권한 설정
#anon_upload_enable=NO
# 익명 사용자 업로드 허용 설정
#anon_mkdir_write_enable=NO
# 익명 사용자 디렉토리 생성권한 허용 설정
#chown_uploads=NO
# 익명 사용자의 소유권 변경에 대한 설정
# chown_username 옵션으로 명시된 사용자의 소유권으로 변경
#deny_email_enable=NO
반응형

vsftpd.conf 파일 수정완료 후 FTP방화벽을 열어줍니다.

아래와 같이 열어주면 됩니다.

vi /etc/firewalld/zones/public.xml 명령어를 입력 후

<port protocol="tcp" port="21"/> <port protocol="tcp" port="22"/>

를 추가해 FTP포트를 열어줍니다.

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>

<port protocol="tcp" port="21"/>
<port protocol="tcp" port="22"/>
</zone>

추가했으면 systemctl restart firewalld 명령어를 입력하여 방화벽을 재시작 해줍니다. 

 

/etc/vsftpd 경로에 chroot_list 파일을 생성해준 후 허용할 계정을 입력해줍니다.

여기까지하면 test계정은 FTP접속이 되지만 root계정은 FTP접속이 허용되지 않습니다.

 

/etc/vsftpd 경로에 ftpusers와 user_list를 vi로 실행시켜 root를 주석처리 해줍니다.

주석처리가 완료되었으면 systemctl start vsftpd 명령어를 입력해 FTP서비스를 실행합니다.

 

 

root계정과 test계정이 FTP에 접속됨을 확인할 수 있습니다.

반응형

댓글