FTP : File Transfer Protocol
파일을 전송하는 데 사용하는 전용 서비스
** sftp 란 secure가 붙은 것으로 보안성이 추가된 FTP
vsftpd : Very Secure FTPD
FTP는 서버와 클라이언트 간의 2개의 Connection을 가짐
- Control
- Data
Control 연결은 FTP 명령어 및 서버의 응답코드를 전송하기 위한 목적(ASCII 코드를 사용하여 연결)
Data 연결은 파일 전송(put, get 등) 서버에서 파일 디렉터리 리스팅된 자료를 전달할 때 사용
Data 연결은 다시 2가지 (Active, Passive)로 나누어짐
Active : 서버에서 클라이언트로 연결 시도(클라이언트 방화벽, 공유 기능 등에 영향을 받음)
Passive : 클라이언트에서 서버로 연결을 시도
FTP 서버는 다양한 방법으로 접속할 수 있음(쉘, 웹 브라우저, FTP 클라이언트 등)
관련 파일
/etc/vsftpd.conf
또는
/etc/vsftpd/vsftpd.conf
특징
**아래 모든 설정은 vsftpd.conf 에서 변경할 수 있음
-vsftp는 기본적으로 아스키모드(ASCII)로의 파일 전송을 허용하지 않음 → 윈도우와 리눅스등의 엔터 문자로 인한 text파일 변조 등 때문에 허용하지 않음
ascii_download_enable=YESascii_upload_enable=YES
-대부분의 ftp서버는 로그인시 쉘을 요구
쉘 권한을 주지 않은 사용자들에게 ftp접근 권한을 주려면 /etc/pam.d/vsftpd
아래의 4 번째 라인을 주석 처리(#)
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
-ftp사용자가 자기 home디렉터리를 벗어나지 못하게 하려면 /etc/vsftpd/vsftpd.conf 파일을 열어 다음 설정하고 vsftpd를 재시작
chroot_list_enable=YESchroot_local_user=YES |
**설정 후 접속하면 /etc/vsftpd.chroot_list 파일이 없다고 에러
touch /etc/vsftpd.chroot_list 파일 생성
특정 유저를 제외하려면/etc/vsftpd.chroot_list 파일에 사용자 계정 추가
-리눅스에서 "."으로 시작하는 파일은 숨김 파일
아래와 같이 config를 바꿈으로써 숨김 파일 기본 공개 가능
force_dot_files=YES |
-특수한 목적으로 파일 및 디렉토리의 소유자를 숨길 경우
hide_ids=YES |
-전송 속도 제한 가능
다운로드 받는 특정 사용자가 네트워크 트래픽을 모두 사용해 버리는 것을 방지하기 위해 대역폭 조정
local_max_rate=300000 |
단위 : Bytes/Sec
-동시 접속자 제한 가능
max_clients=100 |
config 주요 설정
anonymous_enable : yes (익명 사용자의 접속을 허가할 지 설정) => 서비스하는 어플리케이션에서는 일반적으로 허가해서 사용하지만 내부에선 그렇지 않음
local_enable = yes : 로컬 계정 사용자 접속 여부 설정
write_enable = yes :로컬 사용자가 저장, 삭제, 디렉터리 생성 등의 명령을 실행할 수 있는지 여부 설정)
local_umask = 022 : **파일 퍼미션 정의(파일의 퍼미션은 644)
dirmessage_enable=yes :디렉터리 이동 시 각 디렉터리 메시지 보여지게 할지 여부
anon_upload_enable = yes : 익명 사용자의 파일 업로드 권한 설정
anon_mkdir_write_enable = yes :익명 사용자의 디렉터리 생성 권한 설정
dirlist_enable : 접속한 디렉터리의 파일 리스트를 보여줄지 권한 설정
download_enable: 다운로드의 허가 여부 설정
dirmessage_enagle = yes : 사용자가 다른 디렉토리로 이동시, 알림메시지 출력 여부 설정
xferlog_enable = yes : 사용자의 업/다운로드 상황 로그 파일 저장 여부 설정
connect_from_port_20 = yes : standlone 모드를 운영하면서 데이터 전송 포트 사용 시 설정
chown_uploads = yes : 익명 FTP 서비스에서 익명 접속자가 업로드한 파일의 소유권 자동 변경 설정
chown_username = whoever : 익명 FTP 서비스에서 익명 접속자가 업로드한 파일의 소유권 자동 변경한 후, 그 소유권을 변경할 사용자 설정 (root로 설정하지 말고)
xferlog_file=/var/log/xferlog : 로그 파일 경로 설정
xferlog_std_format = yes : 로그 파일 포맷 설정
idle_session_timeout = 600 : idle 상태에서 접속을 유지할 최대 시간 설정( default : 300초 )
data_connection_timeout = 120 : 파일 업/다운로드 시 연결을 유지하는 시간 설정(default : 300초)
nopriv_user=missflash : 익명 FTP 접속자가 접속하는데 사용할 사용자 설정 (default : nobody)
ftpd_banner=welcome : FTP 접속자에게 보여줄 환영 메시지 설정
deny_file :업로드 금지 파일 지정
ex) deny_file={*.mpg,*.mpeg,*.avi}
deny_email_enable : 익명 FTP접속 시 접속을 거부할 이메일 설정(default : yes)
hide_file : 보여주지 않을 파일 지정
ex) hide_file={*.gif,*.jpg,*.png}
banned_email_file=/etc/vsftpd/banned_emails : 접속을 거부할 이메일의 파일 경로 설정
chroot_local_user = yes : 홈 디렉터리 위로 이동 제한 여부 설정(default : NO)
chroot_list_enable = yes : chroot에서 제외할 사용자 목록 파일 사용 여부 설정(default : NO)
chroot_list_file=/etc/vsftpd/chroot_list : chroot에서 제외할 사용자 목록 파일과 경로 설정
max_clients: FTP 서버의 최대 동시 접속자 수 설정
max_per_ip : 1개의 PC가 동시에 접속할 수 있는 접속자 수
listen = yes : standlone모드로 서비스할 때 설정 ( default : xinetd)
userlist_enable = yes : userlist 에 있는 계정 접속 허용
listen_port=21(default) vsftpd(FTP 서비스) 접속 포트 번호 설정
vsftpd 에서 익명 사용자에게 접속되는 디렉터리는 /srv/ftp
여기서 디렉터리를 생성하고 모든 사용자에게 읽기/쓰기 권한( chmod 777 )을 주는 방식으로 운영
FTP 클라이언트를 이용해서 접속하고 파일 업/다운로드를 진행
참고 링크
'SRE > Linux Basics' 카테고리의 다른 글
CPU 모니터링 (0) | 2022.12.07 |
---|---|
MySQL (0) | 2022.12.05 |
SSH (0) | 2022.12.03 |
리눅스 원격 접속([Telnet, Putty, OpenSSH, XRDP) (0) | 2022.12.03 |
PackageManager (0) | 2022.12.03 |