FTP
1. 하나의 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에 의해 제공되는 표준 기능이다.
2. 호스트 간에 두 개의 연결을 설정한다는 점에서 다른 클라이언트 서버 응용들과 다르다.
3. 하나의 연결은 데이터 전송을 위해 / 다른 하나는 명령과 응답 등의 제어 정보를 위하여 사용한다.
FTP 로그인 순서와 인증
1. USER 명령을 통해 사용자명을 전송하여 어떤 사용자가 접근을 시도하는지 확인한 후 PASS명령을 통해 사용자의 비밀번호를 전송한다
2. 서버는 DB에서 사용자명과 비밀번호를 대조해서 접근을 시도하고 있는 사용자가 서버에 접근할 권한이 있는지 확인한다.
FTP 연결
FTP Active Mode(능동) / FTP Passive Mode(수동)
FTP Active Mode(능동)
특징
FTP 클라이언트의 기본 값은 능동모드로 설정이 된다. 클아이언트에서 서버측 21번 포트로 접속하여 제어채널을 생성하고 데이터는 서버에서 클라이언트로 접속하여 데이터를 보내는 방식이다. 만약 클라이언트 PC에 방화벽이 설치되어 외부에서 접속을 허용하지 않는다면 FTP 접속(제어채널 연결)은 되지만 이후 데이터 채널 연결이 불가능하여 파일을 받을 수 없는 상황이 발생할 수 있다.
동작방식
FTP클라이언트는 FTP서버의 21번 포트로 연결 설정하여 제어 채널을 생성한다.
사용자가 파일 목록을 보기 위해 ls 명령을 입력하면 FTP 클라이언트는 사용할 임시포트(1024이상)를 결정하여 서버에게 알린다
서버는 클라이언트가 알려준 포트로 연결을 설정하여 데이터 채널을 만든다
데이터 채널을 통해 데이터를 송신한 후 데이터 채널 연결을 종료한다.
FTP Passive Mode(수동)
특징
클라이언트에서 서버츨 21번 포트로 접속하여 제어 채널을 생성하고 데이터 채널도 클라이언트에서 서버로 접속하여 데이터를 보내는 방식
동작방식
클라이언트는 서버의 21번 포트로 연결 설정하여 제어 채널을 생성한다
사용자가 파일 목록을 보기 위해 ls 명령을 입력하면 클라이언트는 수동모드로 연결하기 위해 PASV명령을 전송하고 이 명령을 받은 FTP 서버는 사용할 임시포트(1024이상)를 결정하여 FTP 플라이언트에게 알려준다
익명 FTP
많은 FTP서버는 FTP를 지원하여 서버에 계정이 없는 사용자가 서버 자원에 한정된 접근을 할 수 있는 권한을 제공하고익명 FTP는 기술지원이나 고객지원, 파일배포등을 하고자 하는 단체에서 사용하는 경우가 많다.
TFTP (TFTP)
기본 개념
FTP기능을 전부 지원할 필요가 없거나 모두 지원하는 것이 비현실적인 경우를 위해 더 간단한 TFTP 개발
FTP는 TCP를 사용하지만 TFTP는 UDP(69)를 사용한다
FTP vs TFTP
- 전송: TCP와 UDP의 차이와 같이 TFTP는 단순성이 주용하고 다양한 가능을 지원하는 것이 크게 중요하지 않을 떄, TFTP는 부트 스트래핑을 할 떄 사용하는 경우가 가장 많다
- 한정된 개수의 명령 : 파일을 받고 보내고 삭제하기 등을 위한 다양한 명령을 구비하고 있는데 TFTP는 파일을 보내고 받는 기능만 지원
- 한정된 데이터 표현 방식: TFTP는 FTP가 지원한느 데이터 표현 방식을 전부 지원하지 않는다. 지원하는 방식은 ASCII와 바이너리 뿐임
- 인증 부족: TFTP에서 삭제 기능처럼 위험할 수 있는 기능을 지원하지 않은 이유 중 하나는 인증 기능이 없기 때문
데이터 전송
- 데이터 전송 단계로는 연결 설정과 종료 사이에서 수행된다. TFTP는 신뢰성 없는 UDP서비스 사용한다.
- 파일은 데이터와 블록으로 나뉘고, 마지막 블록을 제외한 각 블록은 정확히 512바이트의 크기를 갖는다. 마지막 블록은 0에서 511바이트의 크기를 갖는다.
- UDP는 흐름제어와 오류제어를 위한 기능이 없어서, TFTP는 연속적인 데이터 블록으로 파일을 전송하기 위하여 흐름제어와 오류제어 메커니즘을 생성하여야 한다
FTP 보안 위협 및 대책
Bounce Attack
FTP 프로토콜의 특성을 악용한 공격으로 공격자가 FTP 서버를 중간 매개체로 삼아 다른 네트워크의 시스템에 접속할 수 있도록 허용된 기능을 악용하는 방식이다.
보안대책
- FTP PASV 모드 사용: 클라이언트가 데이터 전송을 제어하도록 하여 서버가 악의적으로 다른 시스템에 접속하지 않도록 한다
- 방화벽 설정 강화: 네트워크 수준에서 FTP 서버의 접속을 모니터링하고 비정상적인 트래픽을 탐지 및 차단하는 방화벽 규칙을 적용한다
Anonymous FTP 취약점
사용자 인증 없이 누구나 FTP 서버에 접속할 수 있도록 허용하는 기능으로, 보안 설정이 미흡할 경우 공격자가 민감한 데이터에 접근하거나 서버의 파일을 다운로드, 업로드하는 데 악용될 수 있다. 그 중 악의적인 파일 업로드가 가능해지면 악성코드가 배포될 위험하다
보안대책
- Anonymous FTP 비활성화: 일반 사용자가 인증 없이 접근할 수 없도록 익명 FTP 기능을 비활성화한다
- 로그 모니터링: FTP 서버의 접속 로그를 정기적으로 모니터링하여 비정상적인 접근 시도를 탐지한다
FTP 접근제어 설정
FTP 서버의 접근제어가 제대로 설정되지 않으면 불특정 다수나 악의적인 사용자가 서버에 접속해 불법적인 파일 접근, 다운로드, 업로드 등을 시도할 수 있고 민감한 정보 유출, 시스템 무결성 훼손 등의 위험이 발생할 수 있다.
보안대책
- IP 기반 접근 제어: FTP 서버에 접속할 수 있는 IP 주소를 화이트리스트 방식으로 관리하여 허용된 사용자만 접속할 수 있게 한다
- 강력한 사용자 인증: 단순한 사용자명과 비밀번호 외에도 이중 인증(2FA)을 적용해 불법적인 접근을 방지한다
'해킹&보안 > 웹 & 앱' 카테고리의 다른 글
웹 해킹 실습 (0) | 2025.01.08 |
---|---|
상태 코드 확인 및 변경 (실습) (0) | 2024.09.15 |
GET / POST로 데이터 전송하기 (실습) (2) | 2024.09.14 |
메타데이터 (4) | 2024.09.06 |
웹 실습 (0) | 2024.08.21 |