FTP(File Transfer Protocol)
- 직접 접근을 통한 정보 공유를 목적으로 개발 됨
- 1970년 후반 ~ 1980년 초반에 네트워크 상에서 파일을 전송 하기 위한 TCP 기반의 프로토콜
• 제어 연결
- FTP 세션이 연결될 때 생성되는 TCP연결
- FTP 세션이 유지되는 동안 계속 연결 상태를 유지 함
- FTP 명령과 응답과 같은 제어 정보를 전달
- PI(Protocol Interpreter, 프로토콜 해석기)가 제어 연결을 관리하고 명령을 처리 함
- 허용된 사용자만 서버에 접근하도록 통제 함 → 접근 제어
- 허용된 사용자가 사용할 수 있는 자원의 종류를 선정 함 → 자원 선별
• 데이터 연결
- 서버와 클라이언트간 공유되는 데이터가 전달될 때 마다 따로 생성되는 TCP연결
- 실제 데이터가 전송되는 연결 → 실제 파일을 보내고 받는 작업을 처리 함
- DTP(Data Transfer Process, 데이터 전송 프로세스)가 실제 데이터를 전달하는 동작을 처리 함
- DTP 사이에서 연결을 수립 함
- 서버의 디렉터리 목록 출력 등의 데이터 전송에도 데이터 연결이 필요 함
- 종류
- ACTIVE 방식 → 서버에서 데이터 연결을 시도 함
- PASSIVE 방식 → 클라이언트에서 데이터 연결을 시도 함
TCP 21,20
control(21),data(20)
Active, Passive 구분 -> 데이터 연결. ( 3way handshaking 시작점이 서버면 active. 클라이언트면 passive )
기본적으론 원래 Active
Active 모드의 문제점
: 클라이언트 측에서 방화벽이 동작 중이면 서버가 시도하는 데이터 연결 요청이 차단될 수 있음
Control connection (제어 연결) 하기 위한 3way-handshaking 따로, 그 후에 Data Connection 을 위한 3way-handshaking 이 따로 또 함.
그 data-connection 을 위한 3way-handshaking TCP 연결을 서버에서 먼저 시작하면 Active. (20번 포트) 근데 이렇게 하면, 서버에서 먼저 시도한 것이기 때문에 (현실적으로 대부분의 환경이 NAT 인 것을 생각했을 때,) 데이터 전송 (명령어 실행에 대한 결과 출력, 실질적인 파일 전송 등등) 이 불가능함. 따라서 일반적으로 웬만하면 다 Passive 모드를 지원하고 Passive mode 로 실행이 됨.
클라이언트에서 시작하는 것이 Passive 모드. (21번 포트).
|
실습
root@localhost ~]# chkconfig --list | grep vsftpd
vsftpd 0:해제 1:해제 2:해제 3:해제 4:해제 5:해제 6:해제
[root@localhost ~]# chkconfig vsftpd on
[root@localhost ~]# chkconfig --list | grep vsftpd
vsftpd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
//이렇게 하면 부팅 후에도 vsftpd 가 on 될 수 있음.
* Active Mode 실습
서버설정
pasv_enable=NO
클라이언트에서 서버로 ftp 접속했을 때의
와이어샤크로 잡은 패킷
리눅스 클라이언트로 하면 계속 자기가 알아서 passive 모드로 들어가버림.. (대부분의 os 들이 거의 원래 이럼. )
그래서 윈도우xp 를 클라이언트로 다시 해보면 Active mode 로 3way handshaking 한 거를 확인할 수 있다.
* mget 테스트
FTP 서버]
[root@localhost ~]# touch /root/11.txt /root/12.txt /root/13.txt
[root@localhost ~]# ls
FTP 클라이언트]
ftp> ls
227 Entering Passive Mode (200,200,200,9,223,88).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 6 Sep 19 11:14 1.txt
-rw-r--r-- 1 0 0 0 Sep 19 11:16 11.txt
-rw-r--r-- 1 0 0 0 Sep 19 11:16 12.txt
-rw-r--r-- 1 0 0 0 Sep 19 11:16 13.txt
FTP는 익명 계정을 허용함.
서버의 자원을 이용하려면 account > permission , ownershtip
anonymous(익명)
- 이름이 없음
- ftp의 경우 익명을 표시 anonymous
ftp 사용자가 접속을 하면 사용자의 홈디렉터리로 접속
익명사용자인경우
[root@localhost pub]# pwd
/var/ftp/pub
FTP 접속시 메시지
#ftpd_banner=Welcome to blah FTP service.
ftpd_banner=warning!! this is JINA's FTP Server
chroot_local_user=YES 하게 되면,
모든 계정에 대해 chroot 가 적용됨. (상위 경로로 더 못올라가게. 최상위가 제한되는 거.)
chroot_local_user=NO 하면 아래 두 개의 옵션으로, 예외로 계정을 지정할 수 있음.
'INFOSEC > NETWORK' 카테고리의 다른 글
시스템보안운영 (0) | 2019.09.20 |
---|---|
시스템보안솔루션 종류 (0) | 2019.09.20 |
SMTP, POP3 (0) | 2019.09.18 |
DNS (0) | 2019.09.16 |
Static NAT 설정 (0) | 2019.09.06 |