[서버의 감사(Audit)]Telnet , SSH 접속 사용자에 대한 행위 추적 기능에 대한 고찰

Windows, Linux, Unix 등 서버엔 많은 관리자나 엔지니어들이 접속하여 관리를 수행한다. 여기서 “접속”이라 함은  일반적인 웹서비스나 일반 업무 프로그램을 통한 접속이 아니라  telnet, ssh, terminal service 등 서버의 관리를 위해 운영체제에서 기본적으로 제공하는 접속 환경을 말한다.

SSH 혹은 telnet을 통해 Unix/Linux 서버에 접속하면 아래와 같은 화면이 표시된다.

<title>Telnet , SSH 접속 사용자에 대한 행위 추적 기능에 대한 고찰</title>

이때부터 서버의 관리는 그 옛날 DOS시절보다 더 복잡한 명령어를 실행하거나 설정함으로써 이루어진다. 서버의 보안관리상의  문제는 여기서 부터 발생한다.

1. 누가(사람) 언제 어디서 접속하였는가 ?

2. 어떤 계정으로 접속하였는가 ?

3. 어떤 명령을 실행하였는가?

4. 명령 실행 후 어떤 결과가 화면에 표시되었는가?

5. 어느 파일을 수정하였는가 ?

6. 명령 실행 혹은 파일 수정 후 어떤 에러가 발생하였는가?

위의 6가지에 대한 감사(Audit)를 수행하기 위해서는 운영체제의 기본 기능만으로 구현할 수는 없다. Unix와 Linux 그리고 Windows는 훌륭한(?) 운영체제지만 보안을 특별히 고려한 운영체제라고 보기는 어렵다. 서버의 보안을 강화하기 위해 특별한 기능을 기대하지는 않는 것이 좋다.

그렇다면 위의 6가지 감사 이슈를 충족하기 위해서는 어떤 방법을 취할 수 있을까? 역시 가장 확실한 방법은 서버보안SW를 적용하는 것이 가장 확실하다 하겠다.

서버보안SW(SecureOS)의 서버 감사 기능

SecureOS는 다음의 두가지 사용자 및 관리자의  서버감사(행위추적) 기능을 제공한다.

1. 커널수준에서 수행되는 “사용자 추적”

2. 응용수준의 입출력디바이스에 대한 모니터링을 수행하는 “TTY 모니터링”

몇몇 서버보안 제품들과 서버 감사로그 수집솔루션에서는 TTY모니터링 기능만을 제공하지만 레드캐슬은 커널수준의 사용자 추적과 TTY 모니터링을 모두 제공하고 있기 때문에 보다 상세하고 강력한 감사기능을 지원하고 있다.

1. 커널수준의 사용자 추적

말 그대로 커맨드라인에서 입력된 명령행이 exec() 시스템콜에 의해 커널에 전달된 시점에서 로그인한 사용자 세션을 식별하여 세션별로 수집/저장하는 행위추적 기능이다. exec() 시스템콜을 가로채어 감사로그를 저장하기 때문에 커맨드라인에서 직접 입력한 명령어 뿐만 아니라 실행된 명령어 혹은 스크립트가 내부적으로 실행하는 exec() 시스템콜도 가로채어 감사로그를 기록할 수 있다.

이는 화면에는 보이지 않고 백그라운드로 실행되는 명령어도 감사로그 기록이 가능하다는 의미다. 때문에 보다 정확하고 상세한 감사로그를 남길 수 있다. 예를 들어 외부 엔지니어가 작업상의 편의를 위해 미리 스크립트를 만들어 가져온 뒤 서버에 업로드하고 한꺼번에 실행하는 경우 커널수준의 사용자 추적에서는 그 스크립트 안에서 실행되는 명령어까지도 빠뜨리지 않고 감사기록을 남길 수 있다는 것을 의미한다.

또한 TTY 모니터링과는 다르게 보안SW가 구동중이면 우회하거나 무력화할 수 없으며 화면의 입출력을 가로채는 동작이 없기 대문에 여러 명령행의 “붙여넣기” 혹은 DBA들이 자주 사용하게 되는 길다란 ~ SQL문의 “붙여넣기” 시에도 영향을 주지 않는다.

<title>Telnet , SSH 접속 사용자에 대한 행위 추적 기능에 대한 고찰</title>

커널기반 사용자 추적 조회 화면 (Windows / Linux / Unix 공통)

이 커널기반의 사용자 행위 추적 기능은 타 서버보안SW 혹은 감사로그 수집 솔루션에서 지원하지 못하고 있는 기술이다.

2. TTY기반의 사용자 추적

TTY란 Telnet, SSH, rlogin 접속 시 운영체제가 사용자 세션에게 부여하는 가상의 터미널디바이스 이름이다. TTY는 옛날 타자기(TeleTYpewriter)의 입출력을 컴퓨터 상에 접목시키기 위해 만들어진 것으로서 사용자가 접속할 때 1개씩 부여되고 키보드의 입력과 화면의 출력이 사용자가 접속할 때 부여된 터미널디바이스(즉 TTY)를 통해 이루어진다.

대부분의 서버보안 제품 및 TTY모니터링을 지원하는 로그통합관리 제품들은 동일한 방식 즉 TTY를 모니터링하는 기법을 사용하여 사용자 추적을 수행한다. 이 기술은 커널 수준이 아닌 응용프로그램 수준에서 동작하며 운영체제의 기본적인 설정 중 일부를 변경해주어야만 동작한다. 즉 어떤 파일을 변경하면 되는지를 알면 root 권한을 얻었을 때 해당 설정을 수정하며 감사기록이 남지 않도록 할 수 있다는 이야기다.

그럼에도 불구하고 TTY 모니터링 기법은 중요한 장점을 갖고 있는데 그것은 바로 명령 수행의 결과로 출력되는 내용까지도 감사기록으로 남길 수 있으며 온전한 입력과 출력을 모두 로깅하기 때문에 “동영상” 처럼 재생시켜 볼 수 있다는 장점이 있다.

<title>Telnet , SSH 접속 사용자에 대한 행위 추적 기능에 대한 고찰</title>

Windows 서버에 대한 사용자 행위 추적(GUI수준)

<title>Telnet , SSH 접속 사용자에 대한 행위 추적 기능에 대한 고찰</title>

Unix / Linux 서버에 대한 TTY 수준의 행위추적 (GUI수준)

개인정보보호법이 발효된 이후 시스템에 대한 보안 점검 시 “관리자의 행위에 대한 감사로그”를 남기고 있느냐가 무척 중요한 이슈로 떠오르고 있다. 이에 대해 완벽하게 대응하기 위해서는 TTY수준(GUI수준)에서의 행위 감사와 TTY수준의 행위 감사가 무력화 되었을 경우를 대비한 커널수준의 사용자 추적 두가지가 모두 필요하다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top