Cute Happy Ghost
본문 바로가기
server·network

linux에서 vsftpd설치 및 ftp서버 생성,설정/ 방화벽 열기

by JENN_tech7 2023. 9. 1.
728x90
SMALL

이번 프로젝트는 ftp서버를 열어서 사용자들이 파일을 업로드/다운로드 하는 것이 메인이다

smb를 먼저 시도했으나 이건 사설ip가 안 붙어서 포기

linux에서 vsftpd를 만들면 간단하게 ftp서버를 생성할 수 있다

 

 

1.vsftpd설치

  • vsftpd설치
install vsftpd

y를 눌러주고 설치를 진행해주면 됨

설치가 완료되면 vsftpd는 /etc하위에 디렉토리가 생김

 

확인해보면 이런 파일들이 생성되어있다

 

 

 

저 ftpusers랑 user_list는 설정이 헷갈리게 되어있어서 정리를 해보겠다

ftpusers과 user_list는 여기에 포함된 계정들을 접속허용할것인지 차단할것인지 설정할 수 있는 파일이다

 

 

 

 

2.사용자 계정 설정

  • ftpusers 설정

- ftp접속 허용

/etc/pam.d/vsftpd 파일에 sense값을 allow로 설정하면 ftpuser 파일에있는 사용자 계정 리스트들만 접근을 허용

- ftp접속 차단

/etc/pam.d/vsftpd 파일에 sense값을 deny으로 설정하면 ftpusers 파일에 있는 사용자 계정 리스트들만 ftp 접근 제한

나는 일단 deny로 기본설정을 해놓겠다

 

 

 

 

  • 2.user_list 설정

- ftp접속 허용

userlist_enable=yes
userlist_deny=no

/etc/vsftpd/vsftpd.conf에 해당 설정으로 user_list파일에 있는 사용자계정리스트들 ftp접근 허용

 

 

- ftp접속 제한

userlist_enable=yes
userlist_deny=yes

etc/vsftpd/vsftpd.conf에 해당 설정으로 user_list파일에 있는 사용자계정리스트들 ftp접근 제한

 

나는 user_list접속을 허용하겠다

그러면 user_list파일안에 접속을 원하는 사용자의 계정을 써주기만 하면된다

 

 


사용자계정설정을 하는 구체적인 방법은 아래 글 참고

https://wogus789789.tistory.com/424

 

linux ftp계정생성 및 사용자별 root 디렉토리 설정하기

일단 linux ftp서버로 접속하기 위해서는 리눅스에 해당 계정이 생성되어있어야한다 1.FTP계정 생성 linux에 유저를 생성 useradd testuser 그러면 뭐 아무 로그도 안 뜬다 이거 계정생성할 때 nologin뭐 어

wogus789789.tistory.com


 

3.vsftpd 설정

  • vsftpd.conf 설정하기
#일반 설정
anonymous_enable=NO  
local_enable=YES 
write_enable=YES  
local_umask=022  
dirmessage_enable=YES 
idle_session_timeout=600
data_connection_timeout=360 
listen=YES       
listen_ipv6=NO   
pam_service_name=vsftpd
tcp_wrappers=YES

#로깅 설정
xferlog_enable=YES 
xferlog_std_format=YES  
log_ftp_protocol=YES

#명령어 제한 설정
cmds_denied=DELE,RMD,MKDIR,MKD,XMKD  

#포트 설정
listen_port=2121
connect_from_port_20=YES

#Passive Mode 설정
pasv_min_port=60010  
pasv_max_port=60011  
pasv_address= {ip}   
pasv_addr_resolve=YES
pasv_enable=YES

#사용자 목록 설정
userlist_enable=YES  
userlist_deny=NO

여러 시도 끝에 내 프로젝트에 가장 최적인 설정을 찾아냈다

하나하나 설명해보겠


# 일반 설정
anonymous_enable=NO: 익명 사용자 로그인을 비활성화
local_enable=YES: 로컬 사용자 계정으로 로그인을 허용
write_enable=YES: 로컬 사용자가 파일을 쓸 수 있도록 허용
local_umask=022: 새로 생성된 파일과 디렉토리의 권한을 설정 (기본설정)
dirmessage_enable=YES: 디렉토리에 접근할 때 메시지를 표시
idle_session_timeout=600: 600초 동안 세션이 유휴 상태면 연결종료
data_connection_timeout=360: 데이터 연결이 360초 동안 유휴 상태면 연결종료
listen=YES: vsftpd가 스탠드얼론 데몬으로 동작하도록 설정
listen_ipv6=NO: IPv6를 사용하지 않도록 설정
pam_service_name=vsftpd: PAM (Pluggable Authentication Module) 서비스 이름 설정
tcp_wrappers=YES: TCP wrapper 사용을 허용

# 로깅 설정
xferlog_enable=YES: 파일 전송 로그를 활성화
xferlog_std_format=YES: 표준 로그 형식을 사용
log_ftp_protocol=YES: FTP 프로토콜의 모든 명령과 응답을 로깅


# 명령어 제한 설정
cmds_denied=DELE,RMD,MKDIR,MKD,XMKD: 사용자가 폴더삭제,이름변경,생성하는 것 등을 막음 

# 포트 설정
listen_port=2121: 서버가 이 포트에서 리스닝하도록 설정. 기본포트는 21이지만 보안문제로 2121로 함
connect_from_port_20=YES: PORT 명령이 20번 포트에서 실행되도록 설정

# Passive Mode 설정
pasv_min_port=60010: Passive 모드의 최소 포트 번호를 설정
pasv_max_port=60011: Passive 모드의 최대 포트 번호를 설정
pasv_address={ip}: Passive 모드에서 사용할 IP 주소를 설정
pasv_addr_resolve=YES: 주소를 DNS로 해석하도록 설정
pasv_enable=YES: Passive 모드를 활성화

# 사용자 목록 설정
userlist_enable=YES: 사용자 목록 기능을 활성화
userlist_deny=NO: user_list 파일에 나열된 사용자에게 접근을 허용


filezilla로 접속은 되는데 윈도우ftp로는 연결이 안돼서 listen=YES, listen_ipv6=NO 설정과 아래 passivemode 설정을 통해 접속가능하도록 했다

pasv_address는 사설ip로 적어주었다

ftp가 내부네트워크에서 작동한다면 내부ip를 적어줘도되지만 (예를 들면 ifconfig를 쳐서 나오는 192.168.xx)

나는 외부에서도 접속이 가능하도록 해야하기때문에 공인ip를 적어주었다

 

 

 

 

4.방화벽 허용

  • 방화벽 허용

만약 본인의 서버가 방화벽을 쓰고있다면 방화벽에 ftp포트와 max,min 포트를 모두 방화벽허용해준다

방화벽을 안 쓰거나 active상태가 아니라면 아래 작업하지않아도 연결이 될 것임

#2121포트 추가
firewall-cmd --permanent --zone=public --add-port=2121/tcp

#60010-60011포트 추가
firewall-cmd --permanent --zone=public --add-port=60010-60011/tcp

#방화벽 리스트 확인
firewall-cmd --list-ports / --list--services

#방화벽 reload
firewall-cmd --reload

#방화벽 상태 확인
firewall-cmd --state

 

 

명령어가 익숙치않다면 직접 /etc/firewalld/zones/public.xml에서 설정파일을 변경해줘도된다

 

 

 

 

 

 

 

  • 마지막으로 설정파일을 변경한 후에는 항상 vsftpd를 재시작해준다
#vsftpd 재시작
systemctl restart vsftpd

#vsftpd 상태 확인
systemctl status vsftpd

 

 

 

  • filezilla나 윈도우 네트워크추가를 통해 접속해준다
    이건 내가 만든 매뉴얼이 있어서 추후에 올리도록 하겠다
728x90
LIST

댓글