얼마 전 민간 자격증이었던 SIS가 국가 공인자격증인 정보보안기사로 편입된 이후 실시된 첫 정보보안기사 필기시험을 치렀다.
시험 준비를 하면서 평소의 내 좌우명(?)을 지키기 위해 좋은 남편, 좋은 아빠, 좋은 회사원을 추구하면서 개인적으로 시험공부까지 하려니 하루를 32시간으로 늘리거나 잠안자고도 멀쩡할 수 있는 초능력을 갖고 싶은 마음이 굴뚝 같았다. (물론 이 세가지를 모두 만족할 만큼 잘하고 있지는 못하다.. -.-)
정보보안기사 시험에 출제된 FTP 관련 문제
처음으로 시행되는 정보보안기사 시험답게 매우 기본적이지만 정확하게 이해하고 있는 사람이 드물 수도 있는 FTP 프로토콜에 대한 문제가 출제되었다. 서버보안 관련 업무를 주로 하다보니 평소 많이 겪게되는 FTP 서비스의 접속 이슈와 관련하여 FTP 프로토콜의 동작방식은 잘 알고 있었기에 별다른 어려움 없이 가볍게 문제를 풀었다.
이 문제는 “FTP프로토콜에서 Passive 모드는 서버가 데이터세션으로 특정 포트를 랜덤하게 지정하여 Open하고 Listen한 다음 클라이언트에게 해당 포트번호를 알려주어 클라이언트가 전달받은 포트번호로 서버에 접속하여 데이터세션을 생성하는 방식” 이라는 것과 “Passive Mode의 사용 여부는 FTP 클라이언트가 서버에게 pasv 커맨드를 보내 설정한다”는 것을 알면 쉽게 풀 수 있는 문제였다.
그런데 시험을 본 뒤 의외로 많은 논란이 일고 있었다.
이슈는 당연히 “FTP의 패시브모드 사용을 누가 정하느냐?” 였다. 문제상에 분명 “프로토콜 에서” 라고 명시하고 있는데 FTP서버의 설정에서 패시브 모드의 사용 여부를 정하니 답이 “서버” 라고 많은 사람들이 이해하고 있다는데 놀랄 수 밖에 없었다.
이런 논란은 프로토콜이라고 문제에서 제한하고 있는 것을 못보았거나 Protocol과 Client/Server의 개념에 대한 정확한 이해 부족 그리고 FTP서버의 Configuration에서 Passive Mode의 사용을 제한할 수 있다”는 것과 프로토콜의 차이에 대해 정확하게 개념을 잡지 못하고 있기 때문에 발생하는 것이 아닐까 생각된다.
FTP의 Active Mode와 passive 모드에 대해 간단하게 정리한다.
FTP의 Active Mode와 Passive 모드
FTP는 기본적으로 서버가 TCP/21 포트를 Open하고 Listen하고 있는 상태에서 FTP 클라이언트 프로그램이 서버의 TCP/21 포트에 접속하는 것으로 시작된다. 이 때 맺어진 세션을 Control Session 이라고 한다(혹은 Command Session이라고도 함). 그리고 이 세션에서는 실제 파일의 전송이 이루어지지 않는다. 이 세션은 클라이언트와 서버간에 명령과 명령에 대한 응답이 오가는 역할만을 수행한다.
일단 FTP클라이언트가 FTP서버와 Control Session을 맺은 다음 클라이언트가 dir, get, put 등의 명령을 수행하면 실제 데이터를 전송할 Data Session을 생성하게 되는데 이때 부터 Active Mode냐 Passive Mode냐에 따라 통신 구조가 달라지게 된다.
기본적으로 FTP클라이언트가 FTP서버에 접속하면 Active 모드로 동작하게 된다. 만약 패시브모드로 접속하고 싶다면 FTP서버에 로그인한 뒤 명령행에 pasv 명령을 실행하여야 한다. 알FTP등 클라이언트 도구에서 passive 옵션을 체크한 뒤 접속하면 로그인 뒤 pasv 명령을 클라이언트 프로그램에서 자동으로 실행시켜 주는 것이다.
Active Mode
클라이언트가 서버의 21번(Control Session)에 접속한 뒤 클라이언트가 1024번 이상의 포트를 열고 Listen한 뒤 해당 포트 번호를 서버에게 알려준다. 서버는 전달받은 포트로 20번 포트에서 클라이언트로 접속을 시도하여 데이터 세션을 생성한다. 즉 서버가 클라이언트 쪽으로 접속하는 것이다.
따라서 클라이언트가 사설망 네트워크에 있을 경우 방화벽이나 라우터에서 DNAT가 설정되지 않으면 접속이 불가한 문제가 있다.
Passive Mode
클라이언트가 서버의 21번(Control Session)에 접속한 뒤 클라이언트가 서버에게 pasv 명령을 전달하면 서버는 해당 클라이언트의 데이터세션 생성을 위해 1024 이상의 임의의 포트를 열고 Listen한 뒤 해당 포트번호를 클라이언트에게 알려준다. 클라이언트는 전달받은 서버의 포트번호로 접속하여 데이터세션을 생성한다.
즉, Control Session에 접속하듯이 클라이언트가 서버쪽으로 접속하는 방식이다. 따라서 서버 측에서 클라이언트가 접속할 수 있도록 21번 포트 외에 1024 이상의 포트에 접속할 수 있도록 방화벽을 열어두어야 한다.
정보보안기사 시험을 준비하고 있다면 Active Mode와 Passive Mode의 동작 방식에 대해 공부하는 것은 물로 두 방식을 사용할 때 보안상 발생할 수 있는 문제점과 어떤 경우에 어떤 방식을 사용하고 방화벽에서는 어떤 정책으로 FTP 서버에 대한 접근을 통제하여야 하는지도 공부해야 한다.
시험에 출제하기 딱~ 좋은 주제다.
ftp 기초와 패시브 모드와 액티브모드 헷갈렸는데 잘 보고 갑니다..!
도움이 되셨다니 다행입니다. ^^