검색 전체 메뉴
PDF
맨 위로
OA 학술지
MS-SQL 데이터베이스에서 특정 계정 취약점 판별 시스템 구현 Implementation of User Account Vulnerability Checking Function System using MS-SQL Database
  • 비영리 CC BY-NC
  • 비영리 CC BY-NC
ABSTRACT
MS-SQL 데이터베이스에서 특정 계정 취약점 판별 시스템 구현

This paper proposes that a user account of the MS-SQL is checked whether expirated or not in C++ program environment. Vulnerability checking module decides security weakness for password change time or user configuration time. The proposed module prevents and protects a user account from a malicious user account. Recently, Information Assets becomes more important. If the loss of database information it would make large damage in our life. This paper develops user account checking module, which checks whether user password have not been changed for a long time or whether the user account expirated in the MS-SQL Database. By checking security vulnerability using this feature, a malicious user cannot access the Database.

KEYWORD
MS-SQL , 데이터베이스 , 보안취약점 , 계정 취약점
  • Ⅰ. 서 론

    본 논문에서는 MS-SQL DB(Database) 보안 취약점 점검을 한다. MS-SQL 데이터베이스의 사용자 계정 만료 유무 상태와 오랫동안 사용하지 않은 계정의 패스워드가 변경되지 않았다면 악의적인 사용자나 허락되지 않은 사용자의 접근을 허용할 수 있기 때문에 보안취약점이 존재하게 된다. 이러한 문제를 해결하기 위해 데이터베이스의 사용자 계정을 체크하고 점검함으로써 보안 취약점 문제점을 해결한다.

    최근 데이터베이스의 보안 취약점으로 인해 내부 비인가자 혹은 인가자의 데이터 정보 접근에 대한 통제 정책이 정상적으로 이루어지지 않아 사용자 계정 데이터 정보가 유출되는 사고가 발생하고 있다. 데이터베이스 권한부여 방식은 관리자 계정으로 데이터베이스 오브젝트에 접근할 수 있는 권한을 계정 사용자에게 부여하는 방식이다. 권한을 부여 받은 사용자 계정은 보호를 받지 못하는 몇 가지 보안취약점의 문제가 생기게 된다. 또한 대부분의 침해 사고들은 보안 시스템 부족 등의 1차적인 문제가 아닌, 부정확한 현황 파악과 보안 담당자의 시스템 관리 소홀로 인해 발생하는 경우가 대부분이며, 이는 관리자와 보안 담당자의 보안인식 부족에 기인한다. 최근의 침해사고 유형은 단순히 한 가지의 기법만이 이용되는 것이 아니라 시스템 보안취약점과 더불어 네트워크의 구성을 활용하는 등의 다양한 기법이 사용되고 있어, 사고 예방을 위해서는 최초 시스템을 구축하는 단계에서부터 보안을 고려하는 것이 점차 중요해지고 있다.

    본 논문에서 개발한 MS-SQL 데이터베이스 모듈은 사용자 계정의 만료 상태 여부를 체크하고 사용자의 패스워드가 마지막으로 변경된 시간을 체크함으로써 일정 기준점 이상 해당 계정을 사용하지 않았거나 오랫동안 패스워드 혹은 사용자 설정을 변경하지 않았다면 보안취약점이 존재 할 수 있는 것으로 판단을 하여 사용자에게 경고 메시지를 보내주어 보안취약점을 예방하고 문제점을 해결할 수 있다.

    본 논문의 구성은 2장에서 관련연구를 언급한다. 3장에서는 MS-SQL 보안에 대해 설명한다. 4장에서는 MS-SQL 사용자 계정 만료 및 패스워드 변경 시간 체크 프로그램을 개발하여 사용자 데이터베이스의 데이터보안에 대해 설명한다. 5장에서는 실험에 대해 설명한다. 6장에서는 결론을 내린다.

    Ⅱ. 관련 연구

    데이터베이스는 데이터와 정보를 기반으로 하는 자료의 모음으로 쉬운 접근과 관리의 목적으로 서로 다른 자료와 관계하거나 자료를 처리하기 위한 다양한 방법을 제공하는 시스템이다[1].

    보안 취약점 (Vulnerability)은 좁은 의미로 컴퓨터의 하드웨어 또는 소프트웨어의 결함이나 체계 설계상의 허점으로 인해 사용자 (특히, 악의를 가진 공격자)에게 허용된 권한 이상의 동작이나 허용된 범위 이상의 정보 열람을 가능하게 하는 약점이다. 넓은 의미로는 좁은 의미에 더하여 사용자 및 관리자의 부주의나 사회공학기법에 의한 약점을 포함한 정보체계의 모든 정보 보안상의 위험성을 말한다. 악의를 가진 공격자는 이러한 약점을 이용하여 공격 대상 컴퓨터 또는 정보화 기기에서 공격자가 의도한 동작을 수행하게 하거나 특정한 정보를 탈취한다. 이를 보안 취약성 또는 취약성이라 부른다[2].

    DB 침해 사고는 외부의 해커, 인가된 내부 사용자, 인가되지 않은 내부 사용자 등 모든 범위에서 발생할 수 있다. DB는 정보시스템의 가장 깊은 곳에서 운영되지만 웹 애플리케이션(Web Application), 내부망(internal Network), 파트너 연계 네트워크 등 수많은 접근성의 존재로 인해 데이터 유출 위험이나 서비스 중지의 위험이 상시적으로 존재한다.

    DB 취약점은 해커들에 의해 항상 공개가 된다. 이렇게 공개된 DB 취약점들을 통해 DB는 쉽게 공개 대상으로 주목된다. DB 취약점 분석은 DB에 내재된 취약점들과 DB 운영에 있어서 고려되어야 할 항목들을 다각도에서 구체적으로 점검함으로써 보안 관리자 및 DBA에게 시스템에 내재된 안전 취약점(Security Hole)을 제거하게 하여 DB의 보안 수준을 향상시키게 한다. DB 취약점 분석은 점검 대상 네트워크 범위에 존재하는 정보 자산을 파악하는 정보 수집(Information Gathering), DB 보안을 검증할 수 있는 모의해킹(Penetration Test), 내부 보안감시(Security Auditing) 등의 과정이며 이를 통해 다양한 DB 취약점들을 도출한다. DB 취약점 분석은 정보 자산의 파악과 보안성의 검토, 검출된 취약점 제거를 위한 Fix Scripts 및 개선안 제시, 레포팅 등을 주요 항목으로 한다[2, 3, 5]. 그림 1은 DB 보안 취약점 분석 절차를 나타낸다.

    취약점 공격 또는 익스플로잇(exploit)이란 컴퓨터의 소프트웨어나 하드웨어 및 컴퓨터 관련 전자 제품의 버그, 보안 취약점 등 설계상 결함을 이용해 공격자의 의도된 동작을 수행하도록 만들어진 절차나 일련의 명령, 스크립트, 프로그램 또는 특정한 데이터 조작을 말하며, 이러한 것들을 사용한 공격 행위를 이르기도 한다. 취약점 공격은 주로 공격 대상 컴퓨터의 제어 권한 획득이나 서비스 거부 공격 등을 목적으로 한다[2, 4].

    취약점 공격이 만들어지는 시점은 취약점이 얼마나 널리 알려져 있는지 와는 관계없지만, 취약점 공격이 널리 공개되는 시점은 보통 해당 취약점이 널리 알려진 후 이다. 보통은 이러한 시점에 이르기 전에 해당 취약점을 보완한 업데이트가 공개되므로 항상 최신의 업데이트를 적용하여 취약점을 보완하거나 최신 버전의 바이러스 검사 등을 이용하면 위협에 대한 노출을 줄일 수 있다. 하지만 이 외의 취약점 공격의 대책은 미흡하여 여전히 보안의 위협에 노출이 될 가능성이 크다.

    MS-SQL은 많은 사이트에서 사용하는 데이터 베이스이다. 하지만 특정 계정에 대한 취약점등으로 인하여 쉽게 공격에 노출되어 있다. 이렇게 노출된 계정에 대한 보안과 관련한 연구는 미미한 실정이다.

    Ⅲ. MS-SQL 보안

    IT 기술의 급속한 발전은 데이터베이스의 질적 수준 향상을 위한 정보화 추진을 가속화하고 있지만 그 만큼 정보 보호의 한계가 나타나게 되어 나날이 데이터베이스의 보안 취약점에 대한 보안 대책이 요구되고 있다.

    관리자 계정의 패스워드는 모든 보안의 가장 기본이다. 하지만 이런 기본이 지켜지지 않아 여전히 해킹사고가 많이 발생하고 있다. 패스워드 보안은 모든 보안의 기본이자 가장 중요한 필수 보안 사항이다. SQL Server sa 로그인은 서버 수준의 보안 주체로서 인스턴스를 설치하면 기본적으로 생성이 된다. SQL Server 2005 부터는 sa의 기본 데이터베이스가 master이다. 이 동작은 이전 버전의 SQL Server에서 변경되었다. 관리자 계정이 sa 계정이고 처음 설치 시 설정되는 sa 계정 패스워드는 일반 계정보다 더욱 중요시 여겨야 한다. sa 계정이 악의적인 사용자가 접근을 하게 되면 모든 계정의 데이터베이스 정보가 유출 될 가능성이 크기 때문에 패스워드가 유추되지 않도록 노력해야 한다. 그러므로 관리자 계정 패스워드는 유추가 불가능하고 패스워드 크랙으로도 쉽게 알아낼 수 없는 강력한 패스워드를 사용하도록 한다. 패스워드는 길이가 최소한 8자 이상이고, 이름이나 계정명으로 유추할 수 없는 것이어야 한다. 또한 사전에 없는 단어를 사용하도록 하고, 기호문자를 최소 한 개 이상 포함시키도록 한다[6-8].

    하지만 패스워드를 아무리 어렵게 설정하였다 하더라도 관리자 중에 퇴사자나 부서 이동 자가 있을 수 있고, 관리의 부주의 등으로 패스워드가 유출될 수도 있다. 또한 무작위로 대입하는 brute force 프로그램을 이용하여 일일이 패스워드를 입력해 보는 방법으로도 패스워드를 알 수 있으므로 단순히 패스워드를 추측하기 어렵게 설정하는 것만으로는 확실한 보안취약점의 문제점을 해결할 수는 없다. 그러므로 주기적인 패스워드 변경이 필요하다[9-11].

    Ⅳ. MS-SQL 사용자 계정 만료 기능 설계

    MS-SQL는 인증 모드 사용을 통해 SQL 사용 권한이 없는 사용자로부터 비밀번호 정책을 사용하여 보안을 강화할 수 있다. 본 논문에서 개발한 MS-SQL 사용자 계정 만료 및 패스워드 변경 시간 체크 프로그램은 C++와 Microsoft SQL Server 2008 R2 기반으로 모듈화를 하여 사용자로부터 계정의 보안 상태를 편리하게 확인할 수 있도록 하여 보안을 더 강화하기 위한 목표를 두고 있다.

    본 연구에서 개발한 모듈은 먼저 Microsoft SQL Server 2008R2의 SQL Server Management Studio에서 관리자 권한으로 접속을 한다. 관리자 권한으로 접속을 한 후 보안 로그인에서 사용자 설정 및 계정을 확인한다. 만약 사용자 계정의 보안이 위협을 받게 되면 제 3의 악의적인 사용자가 예상치 못한 취약점 공격을 가하게 된다면 사용자 데이터베이스의 데이터가 손상 될 가능성이 크다. 사용자 입장에서는 보안의 취약점 판단을 하기는 문제점이 있다. 그 중 사용자의 안이한 태도가 있는데 보안 취약점 공격에 대한 대책을 하지 않고 외부에서의 접근을 방치하는 경향이 있다. 문제점 해결의 가장 간단한 방법으로는 주기적인 패스워드 변경이나 복잡한 패스워드 설정이 있는데 본 논문에서는 일정 기간 동안 패스워드를 변경하지 않으면 사용자에게 보안 취약점이 존재 한다는 경고 메시지를 보내주고 패스워드 변경을 하도록 메시지를 보내준다. 또한 오랫동안 사용하지 않는 계정이나 기간이 만료된 계정에 대해서도 보안 취약점이 존재 할 수 있기 때문에 해당 계정에 만료된 사용자가 있다면 경고 메시지를 보내어 준다.

    본 논문에서 구현한 기능들은 필요할 시 관리자가 구동을 할 수 있도록 한다. MS-SQL의 계정 만료 사용자 및 패스워드 설정 정보를 보기 위해서는 계정 로그인 속성을 확인해야 한다. 먼저 Server 관리자 계정에 접속을 한 후 보안 로그인에서 사용자의 정보를 확인한다.

    그림 2는 사용자 로그인 속성을 보여준다. 암호 정책 강제 적용(F)과 암호 만료 강제 적용(X)이 있는데 암호 정책을 사용하여 SQL 사용 권한이 없는 사용자로부터 접근을 제한할 수 있게 하여 보안을 강화할 수 있다. 본 논문에서는 사용자 계정 만료 상태를 먼저 체크하고, 만약 만료된 계정이 존재 한다면 사용자에게 메시지를 보내어 보안 취약점을 조금 더 예방 및 해결할 수 있다. 계정 만료 사용자를 확인한 후 오랫동안 패스워드 및 사용자 변경을 하지 않으면 보안성 문제가 존재하기 때문에 주기적으로 패스워드를 변경해 주어야 한다. 그러기 위해서는 MS-SQL의 modify_date문과 현재 시간을 받아와서 그 차이를 계산하여 일정 기간 이상 패스워드 및 사용자 설정을 변경하지 않은 계정을 보안취약점이 존재하는 계정으로 판단하여 사용자에게 경고 메시지를 보내준다.

    그림 3은 SQL OLE DB를 이용한 데이터베이스 연결을 보여준다. 기존의 연결 방식은 ODBC나 JDBC등의 툴을 사용하여 해당 사용자 시스템에 데이터베이스를 연결을 한다. 간단한 방식으로 접속이 가능하지만 항상 툴을 설치해야 하는 문제점이 생긴다. 그에 비해 SQL OLE DB를 이용한 방식은 소스 코드를 작성하여 데이터베이스를 연결하기 때문에 ODBC나 JDBC의 환경이 설정되어 있지 않더라도 데이터베이스 접속이 가능하기 때문에 다른 방식들 보다 효율성이 좋다.

    그림 4에서는 MS-SQL의 계정 만료 상태 유무를 확인할 수 있다. expir을 이용하여 만약 0의 값이 나오면 만료된 계정 사용자가 존재 하는 것이고, 1의 값이 나오면 만료된 계정 사용자가 없는 것으로 판단한다.

    그림 5에서는 패스워드 및 사용자 설정 시간을 확인할 수 있다. modify_date는 패스워드 및 사용자 설정이 마지막으로 언제 변경되었는지 확인 할 수 있다. 현재 시간을 알 수 있는 Time 와 패스워드 및 사용자 설정이 마지막으로 변경된 시간을 알 수 있는 modify_date의 차를 계산하여 day에 저장한 후 day>=30 의 조건을 걸어주면 30일 이상 설정이 변경되지 않은 사용자를 확인할 수 있다.

    Ⅴ. 실 험

    본 논문에서는 패스워드 및 사용자 설정이 기준점(30일) 이상 변경되지 않았다면 보안 취약점이 존재하는 것으로 판단을 하도록 설계했다.

    그림 6은 본 논문에서 작성한 쿼리문이다. select 문에서 sql_logins.name 계정명을 조회하고, is_expiration_checked는 계정들의 만료된 계정이 존재하는지 조회를 한다. modify_date는 패스워드 및 사용자 설정 변경에 대해 조회하고, 현재 시간 Time 과 사용자 설정 시간의 차를 계산하여 modify_days 라고 이름지어 현재까지 몇 일 동안 설정이 변경되지 않았는지 기간을 저장한다.

    다음 그림 7은 본 논문에서 개발한 MS-SQL 사용자 계정 만료 및 패스워드 변경 시간 체크 프로그램을 실행하는 첫 화면이다.

    먼저 프로그램을 실행하게 되면 관리자 계정이 정상적으로 접속을 했는지 체크한다. 그림 3에서 Source : IP를 지정하면 그에 해당하는 계정이 접속 되고, Open을 하여 관리자 계정인 sa와 지정된 패스워드 1234로 데이터베이스에 접속을 하게 되는데 만약 패스워드 접속 실패 일 경우 Error 메시지가 발생하게 된다.

    그림 8은 이름이 이중 해시 표시(##)로 묶인 서버 보안 주체는 내부 시스템 용도로만 사용된다. 그림 8. 의 보안 주체는 SQL Server를 설치할 때 인증서에서 생성되며 삭제하면 안 된다. 만약 (##)로 묶인 내용을 숨기고 싶을 경우 쿼리문에서 Where 조건문을 이용하여 제외시키면 삭제가 아닌 숨김으로 표시할 수 있다.

    다음으로 그림 9는 사용자의 계정이 만료되지 않았고 패스워드 변경이 일정기간 이상 지나지 않았기 때문에 보안 취약점이 존재하지 않는 것으로 판단한다. 현재 데이터베이스 시스템에서 가장 이상적인 화면으로 보안취약점이 존재하지 않으므로 사용자의 데이터베이스 정보가 조금 더 안전하게 보호 될 수 있다.

    그림 10은 만료된 계정은 아니지만 기준점 (30일) 이상 패스워드 및 사용자설정이 변경되지 않아서 보안취약점이 있는 것으로 판단을 하여 사용자에게 경고 메시지를 보내준다. 계정이 만료된 사용자가 아니더라도 패스워드를 주기적으로 바꾸어주지 않으면 악의적인 의도를 가진 사용자가 취약점 공격을 가할 수 있다. 3장에서 말하는 유추하기 쉬운 패스워드나 여러 번 시도를 통한 패스워드 접근 등은 주기적인 패스워드 변경으로 어느 정도 문제점을 해결 할 수 있다.

    Ⅵ. 결 론

    데이터베이스 보안은 사용자로부터 조직 또는 개인의 정보 유출에 대한 방어를 목적으로 한다. 데이터베이스 보안 취약점들은 사용자의 실수나 공개된 취약점 등으로부터 기인하게 된다. 악의적인 사용자의 권한 접근으로 인해 비정상적인 접근행위를 하게 된다면 그 위험도는 사용자들에게 큰 피해를 입힐 것이다.

    본 논문에서 제안하는 DB(Database) 보안 취약점 점검 기능은 MS-SQL 데이터베이스의 보안 취약점 점검을 통하여 사용자 계정 만료 상태 유무와 오랫동안 변경되지 않은 사용자 패스워드를 체크하여 일정 기준점 이상 사용하지 않은 계정이나 패스워드 변경 시간이 변경되지 않고 기준점 이상이 되면 보안취약점이 존재하는 것으로 판단을 하여 사용자에게 경고 메시지를 보내주게 된다. 이러한 기능은 데이터베이스의 보안을 더욱 강화하고 문제점을 예방함으로 사용자들의 정보를 효율적으로 보호할 수 있다.

참고문헌
  • 1. 2008 “Database security audit log Specification for Personal Information protection” google
  • 2. Jang Seung-Ju, Kim Sung-Jin 2014 “A Study of the Specific IP Vulnerability for the Oracle System” [The Comprehensive Winter Conference of Korea Information and Communications Society] P.392-394 google
  • 3. Kim Yu-Kyung, Sin Seung-Cheol, Ahn Jun-Seon, Lee Wook-Sae, Lee Eun-Young, Han Hwan-Su 2010 “Case study of software security vulnerabilities database” [Journal of Information Science] Vol.28 P.20-31 google
  • 4. Ahn Joon-Seon, Bang Ji-Ho, Lee Eun-Young 2012 “Quantitative Scoring Criteria on the Importance of Software Weaknesses” [Institute of Information Security] Vol.22 P.1407-1417 google
  • 5. DB Vulnerability Analysis Summary, DBGuide Establish a comprehensive information database operations google
  • 6. Web server deployment guide security checks google
  • 7. Park Hyun-A, Lee Dong-Hoon, Chung Taik-Yeong 2012 “Comperhensive Study on Security and Privacy Requirements for Retrieval System over Encrypted Database” [Institute of Information Security] Vol.22 P.621-635 google
  • 8. Kin Dong-Jin, Cho Sung-Je 2010 “An Analysis of Domestic and Foreign Security Vulnerability Management Systems based on a National Vulnerability Database” [Internet and lnformation Security] Vol.1 P.130-147 google
  • 9. Kim Ji-Hong, Kim Huy-Kang 2012 “Automated Attack Path Enumeration Method based on System Vulnerabilities Analysis” [Institute of Information Security] Vol.22 P.1079-1090 google
  • 10. Bang Ji-Ho, Ha Rhan 2013 “Research on Major Weakness Rules for Secure Software Development” [J-KICS] Vol.38 P.831-840 google cross ref
  • 11. Park Jin-Seok, Kang Hee-Soo, Kim Seung-Joo 2014 “How to Combine Secure Software Development Lifecycle into Common Criteria” [Institute of Information Security] Vol.24 P.171-182 google cross ref
OAK XML 통계
이미지 / 테이블
  • [ 그림 1. ]  DB 취약점 분석 절차
    DB 취약점 분석 절차
  • [ 그림 2. ]  사용자 로그인 속성
    사용자 로그인 속성
  • [ 그림 3. ]  SQL OLE DB를 이용한 데이터베이스 연결
    SQL OLE DB를 이용한 데이터베이스 연결
  • [ 그림 4. ]  계정 만료 확인
    계정 만료 확인
  • [ 그림 5. ]  패스워드 및 사용자 설정 시간
    패스워드 및 사용자 설정 시간
  • [ 그림 6. ]  만료 및 패스워드 사용자 설정 쿼리문
    만료 및 패스워드 사용자 설정 쿼리문
  • [ 그림 7. ]  프로그램 실행 성공 확인
    프로그램 실행 성공 확인
  • [ 그림 8. ]  인증서 기반 SQL Server 로그인
    인증서 기반 SQL Server 로그인
  • [ 그림 9. ]  보안 취약점이 없는 계정
    보안 취약점이 없는 계정
  • [ 그림 10. ]  보안취약점이 존재하는 계정
    보안취약점이 존재하는 계정
(우)06579 서울시 서초구 반포대로 201(반포동)
Tel. 02-537-6389 | Fax. 02-590-0571 | 문의 : oak2014@korea.kr
Copyright(c) National Library of Korea. All rights reserved.