MS-SQL 보안 설정(2)
지난 호에 이어 MS-SQL 데이터베이스의 보안을 강화하기 위한 방안에 대해 알아보도록 하겠다. 5. Server / Agent 서비스의 실행계정 확인 SQL서버와 서버 에이전트는 Windows상에서 서비스 형태로 실행되게 되며 이 서비스들은 운영체제상의 연계된 계정의 권한을 가지고 실행되게 된다. 이때 SQL서버의 SA계정 및 일부 계정은 운영체제에 접근이 가능하게 되는데 이러한 접근 시 서비스를 실행하고 있는 운영체제의 계정이 가지고 있는 권한을 이용하게 된다. SQL서버가 침해사고를 당했을 경우 SQL서비스 실행권한을 이용하여 SQL서버에서 운영체제로의 공격이 발생할 수 있어 SQL서버 및 서버 에이전트의 서비스들을 실행하는 Windows계정은 권한에 제한을 두어야 한다. SQL Enterprise Manager 이용하여 Server 및 Server에이전트의 실행되는 계정을 변경할 수있다. Enterprise Manager 의 좌측 메뉴에서 [SQL 서버] -> [등록정보]의 [보안]탭을 보면 현재 SQL Server 서비스의 실행계정을 변경한다. 디폴트 값인 ‘시스템 계정’에서 ‘계정 지정’으로 변경한다. 변경되는 계정은 Administrators 그룹에 포함되지 않는 별도의 SQL Server 실행계정을 생성한 후 계정을 지정하도록 한다. 이때 생성한 계정은 파일시스템상의 MSSQL이 설치된 디렉토리에 접근권한이 있어야 한다.
[그림 1] Server 서비스 실행 계정 변경 SQL Server의 계정이 변경된 경우는 반드시 SQL서버를 재시작 하여야 적용이 된다. 6. 감사 설정 SQL Server의 로그인 시도에 대한 성공, 실패를 감사하여 불법적인 접근은 없었는지 주기적으로 확인하여야 한다. 감사기능이 활성화되면 윈도우의 ‘이벤트뷰어’의 ‘응용프로그램 로그’와 SQL서버의 ‘SQL서버 로그’에 감사결과가 기록되게 된다. SQL서버 로그인외의 이벤트에 대해 사용할 수 있는 감사 툴로는 SQL 프로필러가 있다. SQL 프로필러의 보안 클래스를 이용하여 보안 이벤트에 대한 로깅이 가능하며 이외에 관리자가 원하는 이벤트에 대한 추적이 가능하다. SQL Enterprise Manager 에서 감사설정을 활성화하기 위해서는 EM의 좌측 메뉴에서 [SQL 서버] -> [등록정보]의 [보안]탭에서 감사수준을 ‘실패’ 또는 ‘모두’로 선택한다. 시스템에 남아있는 리소스가 부족하거나 DB접속이 많은 시스템의 경우 감사를 모두로 할 경우 시스템에 부하가 발생할 수 있으므로 이와 같은 경우는 ‘실패’로 설정하여 주기적으로 검토할 수 있도록 해야 한다.
[그림 2] 로그인 감사 설정 감사설정 내역을 적용시키기 위해서는 SQL 서버를 중지했다가 재시작 하여야 한다. 7. 저장프로시저 퍼미션 제한 서버에 컴파일되어 저장된 일종의 SQL 인터페이스인 저장프로시저에 권한 설정을 하여 임의의 사용자가 접근하지 못하도록 하여야 한다. xp_cmdshell과 같은 확장 저장프로시져는 윈도우 쉘을 실행할 수 있는 프로시져로 시스템 명령어의 실행 및 데이터의 변조가 가능하다. Master 데이터베이스에 존재하는 저장 프로시져는 불필요할 경우 삭제하고 사용해야 할 경우 권한을 설정하여 악용되지 않도록 하여야 한다. SQL Enterprise Manager 의 좌측 메뉴에서 [SQL 서버] -> [데이터베이스] -> [master] -> [확장저장프로시저] -> [xp_cmdshell] 선택 후 [모든작업] -> [사용권한관리…]에서 실행권한(EXEC)이 있는 사용자를 확인한 후 guest와 같은 불필요한 사용자에게 권한이 있을 경우 실행권한을 제거한다. 일반적으로 어플리케이션에 접근 시 어플리케이션 별도의 계정을 사용해야 하고 해당 어플리케이션이 확장 저장프로시저를 사용하지 않는다면 이에 해당하는 실행권한도 모두 제거해야 한다.
[그림 3] master DB 확장프로시저의 권한 변경 8. 샘플 데이터베이스 삭제 MSSQL을 설치하게 되면 샘플 데이터 베이스인 pubs와 northwind가 설치되게 된다. 이 데이터베이스는 주로 개발 시 테스트로 사용이 되고 실제는 사용되지 않는 샘플 데이터베이스이다. 샘플 데이터베이스는 누구에게나 알려져 있으므로 악의적인 Object를 생성하여 악용될 수 있으므로 불필요한 샘플 테이터베이스는 삭제해야 한다. 참고로 pubs와 northwind 데이터베이스는 삭제하여도 재설치가 가능하며 관리적 목적으로 삭제가 불가능할 경우 해당 데이터베이스에 접근할 수 있는 guest 계정을 삭제한다. SQL Enterprise Manager 의 좌측 메뉴에서 [SQL 서버] -> [데이터베이스] -> [삭제]를 선택하면 샘플 데이터베이스에 대해 삭제가 가능하다.
[그림 4] 샘플 데이터베이스 삭제
[그림 1] Server 서비스 실행 계정 변경
[그림 2] 로그인 감사 설정
[그림 3] master DB 확장프로시저의 권한 변경
[그림 4] 샘플 데이터베이스 삭제- 안랩코코넛 SECU-LETTER컨설팅사업부 김진수