4. DBMS(DataBase Management System) 취약점 진단

by Toff

   개요
이번 포스팅에서는 시스템 진단 중 DBMS 취약점 진단에 대해서 알아보고자 한다. 윈도우 서버 취약점 진단에서는 배치 파일(=스크립트)을 사용하여 취약점 진단을 하며 해당 결과값을 토대로 인터뷰와 수동점검을 진행한다. 해당 배치 파일은 행정자치부에서 나온 주요정보통신기반시설 가이드를 기준으로 작성되었다. 고객사마다 환경은 모두 제 각각이기에 스크립트 결과물에서 취약한 부분뿐만 아니라 양호한 부분까지 반드시 수동으로 한번 더 진단해야 한다. 그렇기에 반드시 수동으로 점검해줘야 할 부분들과 기준은 있지만 고객사마다 상대적으로 진단해야 되는 부분들과 기타 알아두면 좋은 사항들에 대해 알아보도록 하자.


   주의 깊게 봐야할 항목들
주요정보통신기반시설 가이드 중 DBMS 취약점 항목은 그림 1-1과 같다. 이 중에서 주의깊게 봐야하는 항목들만 살펴보도록 하자. 해당 포스팅에서의 진단 대상은 Mysql 이며 버전은 5.1.61 이다. 각 항목에 대한 기본적인 설명은 아예 하지 않거나 가볍게 다루기에 주요정보통신기반시설 가이드와 같이 보도록 하자.
그림 1-1 주요정보통신기발시설 가이드 > DBMS 취약점 항목

주요정보통신기발시설 가이드는 대부분의 항목이 오라클 기준으로 작성되었다. 이 외의 Mysql, Mssql 등의 DBMS 는 N/A 항목이 많으니 참고해서 진단하도록 한다.

1.1 기본 계정의 패스워드, 정책 등을 변경하여 사용
해당 항목에서 패스워드 값이 빈칸인 항목이 있다면 무조건 취약이라고 판단한다. localhost 에 비밀번호가 설정되어 있고, 127.0.0.1 에는 비밀번호 설정이 되어 있지 않다면 취약이라고 진단한 후에 127.0.0.1 항목은 지워달라고 요청해야 한다.

1.2 scott 등 Demonstration 및 불필요 계정을 제거하거나 잠금 설정 후 사용 
해당 항목에서 User 값이 빈칸인 항목이 있다면 무조건 취약이라고 판단한다. 그림 1-2 와 같이 쿼리를 입력했을 때 user 값이 빈칸인 항목이 있다면 취약이다. 이 외에도 불필요하게 보이는 계정이 있다면 고객사와 인터뷰를 진행해야 한다.
그림 1-2 불필요 계정 확인

1.3 패스워드의 사용 기간 및 복잡도 기관 정책에 맞도록 설정
망법에 적용되는 DBMS 라면 망법 기준에 부합해야 하며 아닐 시에는 회사의 기준에 부합해야 한다. Mysql 은 특정 버전 이상에서는 패스워드 복잡도 설정을 할 수 있는 기능을 제공한다. 해당 버전을 사용중이라면 이도 반드시 확인해줘야 한다.
- 패스워드 최종 변경 일자
- 복잡도 기준
- 패스워드 변경 주기

2.1 원격에서 DB 서버로의 접속 제한
해당 항목에서 host 값에 %가 있으면 무조건 취약이라고 판단한다.
+-----------+------+
| host      | user |
+-----------+------+
| %   |      |   root    |
+-----------+------+
%는 대역대를 의미하며 위는 모든 대역대에서 root의 원격 접속을 허용함을 뜻한다. 172.16.0.% 는 172.16.0.1 ~ 172.16.0.254 대역 안에 있는 IP 는 모두 접속을 허용함을 뜻한다. 위 두 경우 모두 대역대를 허용하고 있으므로 취약이라고 판단한다.
해당 항목은 서버 접근 제어 솔루션 등으로 많이 대체되기도 하기에 어느 정도 인터뷰가 필요하다.

2.2 DBA 이외의 인가되지 않은 사용자 시스템 테이블 접근 제한 설정
root 유저만 특정 권한을 가지고 있으면 양호라고 판단한다. 인터뷰를 통해 일반 계정도 타당한 이유가 있다면 권한을 가지고 있어도 양호라고 판단할 수 있다.
그림 1-3은 root 계정만 권한을 가지고 있으므로 양호하다.
그림 1-3 권한 확인

4.1 데이터베이스에 대해 최신 보안패치와 벤더 권고사항을 모두 적용
- 인터뷰 해야 되는 항목들
     - 패치를 주기적으로 하고 있는지?
     - 패치 필요 시 영향도 파악을 하고 진행하는지?
     - 패치 작업 시 작업 계획서 등 증적을 남기는지?
     - 하나라도 안되있으면 취약이라고 판단한다. 이는 ISMS 인증 기준이다.

6.1 데이터베이스의 접근, 변경, 삭제 등의 감사기록이 기관의 감사기록 정책에 적합하도록 설정
DB 접근 제어 솔루션도 없고 General_log도 그림 1-4 와 같이 off 설정이 되어 있으면 취약이라고 판단한다.
그림 1-4 general_log 확인

이 외에도 로그는 남기더라도 주기적으로 로그를 확인하고 있는지에 대해서도 확인해야 한다. 로그는 남기더라도 확인하지 않는다면 취약이라고 판단한다.

또한 그림 1-4 에서 general_log 가 설정되어 있고 따로 DB 접근 제어 솔루션이 없다면 서버 자체에 로그를 남기는 것이기에 다소 위험할 수 있다. 그렇기에 망법 고시에도 별도의 물리적인 저장장치에 백업하라고 명시되어 있으며 ISMS 기준에서는 소산백업 일정거리를 떨어진 다른 공간에 보관하라고 명시되어 있다.