FTP(File Transfer Protocol) TCP 20/21
TFTP(Trivial File Transfer Protocol) UDP 69
1. FTP란
디폴트는 Active 모드이며 active/passive의 결정은 client가 한다.
<포트>
21 : 제어 포트
20 : 데이터 전송 포트 (Active)
디폴트는 Active 모드이며 active/passive의 결정은 client가 한다.
FTP 전송로그
경로 : /var/log/xferlog
로그 형식 : 송수신 날짜 & 시간 | 원격 호스트 주소 | 파일크기 | 파일명 | 파일유형 | 액션 플래그(선택) | 전송 방향 | 액세스 모드 | 사용자명 | 서비스명 | 사용자 인증방식 | 인증사용자 ID | 완료 상태
로그 예시
Thu May 17 11:54:41 2018 6 file.test.kr 1234567 /home/user/test1.mp3 b _ i r test ftp 0 * c
Thu May 17 11:54:42 2018 7 192.168.200.201 1234567 /home/user/test2.mp3 b _ o r test ftp 0 * c
- 파일 유형
b : binary (파일)
a : ascii (문자, 텍스트)
- 액션 플래그
FTP 서비스에서 적용하는 내용, 어떠한 동작을 수행했는지 나타내는 플래그
-
- 압축, 묶음에 관한 액션
- 종류: _,C,U,T
_ | 행위가 일어나지 않은 것 |
C | 파일이 압축된 경우 |
U | 파일이 압축되지 않은 경우 |
T | tar로 묶여 있음 |
- 전송 방향
종류 : i, o, d
i = 파일을 업로드하여 서버로 들어오는 것(incoming)
o = 파일을 다운로드하여 서버에서 나가는 것(outgoing)
d = 파일을 삭제(delete)하는 것을 나타냅니다.
- 액세스 모드
사용자가 접근한 방식이나 형태를 나타내는 것
종류: r,a,g
r = 시스템의 사용자 계정
a = 익명사용자(anonymous)
g = 비밀번호가 있는 게스트 계정
사용자 인증 방식
사용자의 인증 방법
0인 경우 없음을 나타내고 1인 경우 RFC 931 authentication
- 인증 사용자 ID
인증 메소드가 되돌려주는 사용자 ID입니다. *는 인증된 사용자 ID를 사용할 수 없는 경우
- 완료 상태 ( c )
- 전송의 완료 상태를 나타내 줍니다.
- c = 전송이 완료된 상태를 나타냅니다. (complete)
- i - 전송이 실패된 상태를 나타냅니다. (incomplete)
2. 취약점
(1) anonymous FTP
인터넷에서 FTP를 사용할 때 anonymous FTP는 사용자들이 서버에 자신을 식별시키지 않고서도 파일에 접근할 수 있는 방법을 제공한다. 보통의 FTP 사이트들은 오직 적법한 사용자 아이디와 패스워드를 가진 사람만이 이용할 수 있는데 반해, anonymous FTP는 파일을 보거나 다운로드하기 위해 해당 서버에서 부여된 사용자 아이디나 패스워드가 없더라도 작업이 가능하기 때문에 anonymous 라고 부른다.
Anonymous FTP 서버에 접속한 뒤 사용자 아이디로 "anonymous" 라고 입력하고, 패스워드에는 자신의 이메일 주소를 입력하면 로그인이 허용된다 (이때, 패스워드를 넣지 않거나 어떤 내용을 넣더라도 로그인 하는데 문제가 없지만, 대개 자신의 이메일 주소를 쳐 넣는 것이 통신상의 예의로 되어있다).
- 취약점 조치 방법
U-20 (상) 3. 서비스 관리 > 3.2 Anonymous FTP 비활성화 취약점 개요 점검내용 : 익명 FTP 접속 허용 여부 점검 점검목적 : 실행중인 FTP 서비스에 익명 FTP 접속이 허용되고 있는지 확인하여 접속허용을 차단하는 것을 목적으로 함 보안위협 nonymous FTP(익명 FTP)를 사용 시 anonymous 계정으로 로그인 후 디렉터리에 쓰기 권한이 설정되어 있다면 악의적인 사용자가 local exploit을 사용하여 시스템에 대한 공격을 가능하게 함 참고 ※ Anonymous FTP(익명 FTP): 파일 전송을 위해서는 원칙적으로 상대방 컴퓨터를 사용할 수 있는 계정이 필요하나 누구든지 계정 없이도 anonymous 또는 ftp라는 로그인 명과 임의의 비밀번호를 사용하여 FTP를 실행할 수 있음 점검대상 및 판단기준 대상 - SOLARIS, Linux, AIX, HP-UX 등 판단기준 양호 : Anonymous FTP (익명 ftp) 접속을 차단한 경우 취약 : Anonymous FTP (익명 ftp) 접속을 차단하지 않은 경우 조치방법 Anonymous FTP를 사용하지 않는 경우 Anonymous FTP 접속 차단 설정 적용 점검 및 조치 사례 OS별 점검 파일 위치 및 점검 방법 SOLARIS, LINUX, AIX, HP-UX /etc/passwd 파일에 ftp 계정 존재 여부 확인 #cat /etc/passwd | grep "ftp" "passwd" 파일 내 ftp 계정이 존재하는 경우 아래의 보안설정방법에 따라 서비스 접속 제한 ■ SOLARIS, LINUX, AIX, HP-UX Case 1) 일반 FTP - Anonymous FTP 접속 제한 설정 방법 “/etc/passwd” 파일에서 ftp 또는, anonymous 계정 삭제 ∎ SOLARIS, LINUX, HP-UX 설정: #userdel ftp ∎ AIX 설정: #rmuser ftp Case 2) ProFTP - Anonymous FTP 접속 제한 설정 방법 conf/proftpd.conf 파일의 anonymous 관련 설정 중 User, Useralias 항목 주석처리 (proftpd.conf 파일의 위치는 운영체제 종류별로 상이함) <- Anonymous 설정 구간</anonymous ~ftp> # User ftp <- anonymous로 사용되는 계정 Group ftp # UserAlias anonymous ftp <- 별칭으로 사용되는 계정 주요정보통신기반시설 기술적 취약점 분석·평가 방법 상세가이드 UNIX 서버 U-20 (상) 3. 서비스 관리 > 3.2 Anonymous FTP 비활성화 ~~이하생략~~ Case 3) vsFTP - Anonymous FTP 접속 제한 설정 방법 vsFTP 설정파일(“/etc/vsftpd/vsftpd.conf” 또는, “/etc/vsftpd.conf”)에서 anonymous_enable=NO 설정 조치 시 영향 Anonymous FTP를 사용하지 않을 경우 영향 없음 |
(2) FTP BOUNCE ATTACK (FTP 바운스 공격)
Active mode에서 FTP 서버의 파일을 요청하면 클라이언트에서 파일을 받을 목적지 IP, Port를 지정해서 전달해줌(PORT 명령) 이때 IP, Port를 요청한 클라이언트가 아닌 임의의 주소로 지정할 수 있는데 이러한 FTP설계의 취약점을 이용함
FTP서버의 전송 목적지 주소를 임의로 지정하여, FTP 서버를 경유해 임의의 목적지로 메시지나 자료를 전송하도록 할 수 있다.
- 취약점 조치방법
1. FTP Bounce 공격에 취약하지 않은 최신버전으로 FTP 서버 업데이트 2. FTP 서버가 자료를 전송할 때 1024보다 낮은 포트로 접속하지 않도록 설정 3. FTP 외 다른 서버들이 20번 포트로의 접속을 받아들이지 않도록 설정 |
(3) TFTP 공격
자체 디스크가 없는 OS에서 부팅에 필요한 데이터를 가져오기 위한 간소화된 FTP
신속한 파일의 전송을 원할 경우에는 FTP보다 활용이 용이하다.
보안에 매우 취약한 프로토콜이므로 가급적 사용하지 않는다.
비밀번호 인증 과정이 없다.
secure mode로 운영해야 한다.
UDP 69번 포트를 사용한다.
- 취약점 조치방법
1. TFTP 서비스가 불필요한 경우 비활성화 2. secure mode 로 운영 *secure mode는 chroot 기능을 이용한 것으로, 지정한 디렉터리를 최상위 디렉터리로 지정하여 상위 디렉터리로 접근 못하도록 제한하는 방식 |
'보안 > study' 카테고리의 다른 글
취약점 업데이트! Redhat 업스트림(최신 패키지)을 사용해도 되는가? (feat. Upstream, Backporting) (0) | 2021.08.18 |
---|---|
포트 스캔 공격 정리 및 공격툴(nmap,ncat,hping3) (0) | 2021.05.15 |
Snort (0) | 2021.05.11 |
r 계열 명령어 (rhost, rlogin, rsh, rmd) (0) | 2021.01.22 |
SSL/TLS 통신과정 정리 (0) | 2019.12.11 |