FTP(File Transfer Protocol)
FTP(File Transfer Protocol)
● FTP 프로그램 설치
- apt-get install vsftpd 명령으로 프로그램 설치
***참고) vsftpd란?
Very Secure File Transfer Protocol Daemon의 약자
우분투, CentOS, 페도라 리눅스, NimbleX, 슬랙웨어, RHEL 등의 리눅스를 포함한 유닉스 계열 시스템용 FTP 프로그램이다. 보안을 강조한 FTP프로그램으로 리눅스 서버에 vsftpd를 설치하면 그 리눅스 서버는 FTP서버가 된다.
클라이언트가 FTP서버와 통신하기 위해서 대표적으로 사용하는 프로그램으로는 FileZilla, Winscp, ftp voyager 등이 있다.
- apt-get의 레포지터리 주소는 /etc/apt/sources.list에 존재
● FTP서비스 기동
- service vsftpd start 명령어 입력
● vsftpd 정상실행 여부 확인
- netstat -antp 명령어 입력
● FTP 포트정보 확인
- /etc/services 파일 안에 사용하는 포트정보가 있음.
- FTP 명령을 주고 받을 때는 21번 포트 사용.
- Active Mode일 때 데이터 송수신을 위해 20번 포트 사용.
- Passive Mode일 때는 1024~65535 범위의 랜덤 포트를 선택(서버가 결정)하여 사용.
● 클라이언트와 FTP서버 연결
-윈도우 명령프롬프트를 사용하여 FTP서버에 연결 및 디렉터리 구조 확인
-응답코드 220번 : TCP 연결 성공
-응답코드 230번 : 로그인 성공
-get 파일명 : 특정 파일을 다운로드
● FTP로그파일
- vsftpd.log
* 경로 : /var/log/vsftpd.log
* 설명 : 로그인 성공여부와 다운로드 및 업로드 여부를 알 수 있음
- xferlog
* 경로 : /var/log/xferlog
* 설명 : xferlog는 FTP 로그파일로써 proftpd 혹은 vsftpd 데몬이 수행한 서비스를 기록하는 파일이다. (칼리Linux에서는 해당 파일 생성 안됨, CentOS에서 생성)
* xferlog가 포함하고 있는 정보
1. [Tue Mar 14 10:01:58 2023] : 전송 날짜와 시간
2. [1] : 전송시간
3. [::1] : 접속한IP (localhost(자기자신)으로 ftp를 접속한 경우 IP주소가 [::1]로 나옴)
4. [0] : 파일사이즈 (0은 파일크기가 0인경우임)
5. [/home/test_usr/abc.txt] : 전송파일명
6. [b] : 전송파일유형
- b : 바이너리(파일)
- a : 아스키(문자, 텍스트)
7. [ _ ] : 액션플래그(어떠한 동작을 수행했는지 나타냄)
- _ : 아무일도 발생하지 않음
- C : 파일이 압축된 경우
- U : 파일이 압축되지 않은 경우
- T : tar로 묶여져 있는 파일
8. [o] : 전송방향
- i : 파일을 업로드하여 서버로 들어오는 것(incoming)
- o : 파일을 다운로드하여 서버에서 나가는 것(outgoing)
- d : 파일을 삭제하는 것(delete)
9. [r] : 액세스모드(사용자가 접근한 방식이나 형태)
- r : 시스템의 사용자 계정(real)
- a : 익명 유저(anonymous)
- g : 비밀번호가 있는 게스트 계정(guest)
10. [test_user] : 로그인 계정명
11. [ftp] : 서비스명(호출된 서비스를 나타내는 것으로, 일반적으로 ftp)
12. [0] : 사용자의 인증방식
- 0인 경우 없음, 1인 경우 RFC 931 authentication
13. [*] : 인증사용자ID
- 인증 메소드가 되돌려주는 사용자 ID. *은 인증된 사용자 ID를 사용할 수 없는 경우
14. [c] : 완료상태
- c : 전송성공(complete)
- i : 전송실패(incomplete)
● FTP 연결거부 계정 등록(ftpusers)
- /etc/ftpusers 파일에 연결을 거부할 리눅스 계정을 등록할 수 있다.
- root계정으로 FTP를 사용하면 안되기 때문에 root계정은 반드시 등록해둬야 한다.
● FTP설정(vsftpd.conf)
- /etc/vsftpd.conf 설정파일을 통해 FTP에 관련된 설정을 할 수 있다.
- FTP보안을 위해서 anonymous_enable 설정을 NO로 한다.
- FTP 연결 및 다운로드 정보에 대한 로그를 남기기 위해 xferlog_enable 설정을 YES로 한다.
● FTP종류
종류 | 내용 |
FTP | ID/Password 인증 수행, TCP 프로토콜을 사용하여 데이터 송수신 |
tFTP | 인증과정 없이 UDP 기반으로 데이터를 빠르게 송수신. 69번 포트 사용(만약 사용하려면 secure mode로 운영) |
sFTP | 전송 구간에 암호화를 통해 기밀성 제공 |
● FTP보안 취약점
-Bounce Attack
* nmap -b <IP주소>
* 익명 FTP 서버를 경유하여 호스트 스캔
* 네트워크 포트스캐닝을 위해서 사용
* FTP 바운스 공격을 통해서 전자메일을 보내는 공격을 Fake Mail이라고 함