대용량의 파일 전송 서비스에 적합 웹 서비스의 일부로 통합 운영되는 추세 xinetd보다는 standalone 형태로 운영 Out of band
• 21 : control connection
• 20 : data connection(Active mode)
- Passive mode : 임의의 포트를 이용 (1024 이후것으로)
[접속및 전송 과정]
1. FTP client는 21번 port를 통해서 서버와 control connection을 설정한다.
2. 이 제어연결을 통해 사용자 계정과 비밀번호를 전송한다.
3. Client는 제어연결을 통해 원격지의 디렉토리 변경과 같은 명령을 전송한다.
4. 서버측은 제어연결을 통해 파일 전송을 위한 명령을 받으면 TCP data connection을 초기화 한다.
5. 하나의 파일 전송이 끝나면 data연결은 close된다.
6. 다음 파일 전송을 위해서는 새로운 TCP connection을 생성한다.
[vsftpd 서버 실행]
# systemctl start vsftpd
[관련 파일]
• 데몬 : /usr/sbin/vsftpd
• 설정 파일 : /etc/vsftpd/vsftpd.conf
• PAM 모듈 : /etc/pam.d/vsftpd
• 접근 제한 파일 : /etc/vsftpd/ftpusers /etc/vsftpd/user_list
[Active mode(액티브 모드)]
클라이언트가 데이터를 수신 받을 임의의 포트를 서버에 알려주면 서버는 20번 포트를 통해 클라이언트에게 데이터를 전송함
• Client에서 Server로 FTP 제어 연결 요청 : active
• Client에서 제어 연결을 통해 자신의 Data 전송 Port(Random Port)를 Server 측에 알려줌
• Server에서 Client로 Data 전송 연결 요청
[Passive mode(패시브 모드)]
서버가 데이터를 송신할 임의의 포트를 클라이언트에 알려주어 클라이언트가 서버의 임의의 포트에 접속하여 데이터를 가져감
• Client에서 제어 연결을 통해 Server 측에 Passive 연결요청
• Server에서 제어 연결을 통해 자신의 Data 전송 Port(RandomPort)를 Client 측에 알려줌
• Client에서 Server로 Data 전송 연결 요청
[실습 전 컴퓨터 구성]
FTP
192.168.10.141 - www(ftp.smb)
[vsftp 설치 확인]
# yum list vsftpd
[vsftpd 설치]
# yum install –y vsftpd
[vsftpd 서버 실행 및 사용자 생성]
# systemctl start vsftpd
[192.168.10.141 컴퓨터에서 테스트]
FTP 서비스 제한(chroot 실습)
[chroot 설정]
** chroot : 사용자 계정의 home 디렉토리를 root로 변경
#chroot_local_user=YES (d:No)
#chroot_list_enable=YES
- chroot_local_user가 NO일 때 chroot_list_file에 지정된 사용자만 chroot를 적용한다.
- chroot_local_user가 YES일 때 chroot_list_file에 지정된 사용자만 chroot를 적용하지 않는다.
#chroot_list_file=/etc/vsftpd/chroot_list
- Default 값 : /etc/vsftpd/chroot_list
#allow_writeable_chroot=YES
- chroot 적용 사용자의 경우 이 설정이 반드시 필요하다.
• chroot 설정은 외부 디렉토리로 연결된 link 디렉토리에 접근도 금지된다.
mount 명령을 이용하여 외부 링크파일 디렉토리로 접근 가능
mount --bind [원본 디렉토리] [연결할 디렉토리]
[part 1. chroot_local_user = YES / chroot_list_enable = YES]
1) vi /etc/vsftpd/vsftpd.conf
2) 192.168.10.141 클라이언트에서 ftp
[part 2. chroot_local_user = NO / chroot_list_enable = YES]
1) vi /etc/vsftpd/vsftpd.conf
2) /etc/vsftpd/chroot_list 파일에 일반사용자 dst04를 넣어준다음 ftp 서비스를 재시작한다.
3) 192.168.10.141 클라이언트에서 ftp
[chroot 로 지정된 사용자 mount 실습]
chroot를 지정해준 dst04 사용자는 외부에 있는곳에서 접근이 불가능하다 따라서,
ftp를 통해 192.168.10.141 서버에 접속하여 dst04로 로그인하면 자신의 홈 디렉토리를 / 로 인식한다.
1) home 디렉토리에 data라는 디렉토리 생성 후 하위폴더인 a.txt생성
2) home 디렉토리 하위폴더에 dst04를 생성후 하위폴더에 data생성
192.168.10.141 컴퓨터에서 ftp접속해서 dst계정에 mount가 되었는지 확인.
IP 별로 접속 제한
tandalone 인 경우만 사용
listen=YES > standalone 사용
tcp_wrappers=YES > 접근제어 사용 여부
- /etc/hosts.deny, /etc/hosts.allow 파일에 정의
- hosts.allow 파일의 보안 등급이 높다.
- vsftpd : 192.168.11.11, 192.168.10.
(마지막에 .은 패턴을 지정 / 10번대 주소 모두 지정)
local_max_rate=1024 # byte/sec
[part 1. hosts.deny 를 이용한 지정 ip 거부]
vi /etc/vsftpd/vsftpd.conf 파일에서 수정한다.
listen=YES
listen_ipv6=NO
tcp_wrappers=YES
vi /etc/vsftpd/user_list 에 dst04 추가
/etc/hosts.deny에서 userlist_enable = yes , userlist_deny = yes 설정
사용자 dst04 계정은 로그인이 안되는 것을 볼 수 있다.
'리눅스' 카테고리의 다른 글
06. 리눅스 - Apache (아파치) 설치하기 (1) | 2024.02.26 |
---|---|
05. 리눅스-DNS 서버 실습 (1) | 2024.02.20 |
04. 리눅스-DNS서버 (2) | 2024.02.20 |
03. 리눅스-FTP 사용자 제한 (1) | 2024.02.20 |
02. 리눅스 - CentOS 7 (64bit)환경에 oracle 19c 설치 (1) | 2024.02.19 |