이번 프로젝트는 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
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나 윈도우 네트워크추가를 통해 접속해준다
이건 내가 만든 매뉴얼이 있어서 추후에 올리도록 하겠다
'server·network' 카테고리의 다른 글
linux서버 tomcat에서 SSL인증서 적용하기 PKCS12 keystore생성 및 JKS 포맷 (0) | 2023.12.14 |
---|---|
linux ftp계정생성 및 사용자별 root 디렉토리 설정하기 (0) | 2023.09.01 |
zmodem설치로 xshell에서 드롭다운하여 파일이동하기 (0) | 2023.09.01 |
[CentOS] 자바8설치 및 환경변수 설정 (0) | 2023.08.17 |
[네트워크] 네트워크 접속안될때 해결방법 총정리, ipv4중복할당 제거 및 ip자동할당기능 영구중지, 인터넷은 있는데 네트워크 안될 때, (2) | 2023.07.20 |
댓글