콘텐츠로 이동

D-07: root 권한으로 서비스 구동 제한

분류: DBMS

중요도: 중


개요

점검 내용

서비스 구동 시 root 계정 또는 root 권한으로 구동되는지 점검

점검 목적

root 권한을 제한적으로 사용함으로써 시스템의 손상, 데이터의 유출 및 변조 등을 차단하여 보안 위협을 방지하기 위함

보안 위협

root 권한으로 서비스를 구동할 경우 시스템 손상, 데이터 유출 및 변조, 감사 및 추적의 어려움 등으로 인해 서비스 공격의 표적이 될 위험이 존재함

참고

-

점검 대상 및 판단 기준

대상

Oracle DB, MySQL, Altibase, Cubrid 등

판단 기준

✅ 양호: DBMS가 root 계정 또는 root 권한이 아닌 별도의 계정 및 권한으로 구동되고 있는 경우

❌ 취약: DBMS가 root 계정 또는 root 권한으로 구동되고 있는 경우

조치 방법

DBMS 구동 계정 변경

조치 시 영향

일반적인 경우 영향 없음

점검 및 조치 사례

Oracle DB

Step 1) 실행 중인 프로세스를 통한 확인

$ ps –ef | grep pmon

Step 2) Oracle Listener 프로세스 사용자 확인

$ ps –ef | grep tnslsnr

Step 3) 사용자 계정을 'Oracle'로 전환

$ su  oracle
# 현재 사용자/관리자 계정에서 'Oracle' 사용자로 전환
$ lsnrctl stop
# Oracle Listener 중지
$ sqlplus / as sysdba
# SQL*Plus 유틸리티를 이용하여 시스템 관리자(SYSDBA) 권한으로 로그인
$ shutdown immediate
# 데이터베이스 종료

Step 4) Oracle 서비스 재시작

$ lsnrctl start
# Oracle Listener 시작
$ sqlplus / as sysdba
# SQL*Plus 유틸리티를 이용하여 시스템 관리자(SYSDBA) 권한으로 로그인
$ startup
# 데이터베이스 시작

MySQL

Step 1) 실행 중인 프로세스를 통한 확인

# ps –ef | grep mysqld

Step 2) mysql server configuration 파일에서 [mysqld] 그룹의 'user' 지시자의 설정값 확인

# cat [mysql server configuration 파일 위치] | grep user
-- user=mysql로 설정되어 있으면 양호

Step 3) mysql server configuration 파일에서 [mysqld] 그룹의 'user' 지시자 설정

# vi [mysql server configuration 파일 위치]
-- 일반적으로 /etc/my.cnf.d/mysql-server.cnf

참고

user = [mysqld를 구동할 시스템의 일반 사용자 계정]

Altibase

Step 1) 실행 중인 프로세스를 통한 확인

# ps –ef | grep altibase | grep –v grep

Step 2) Altibase 디렉터리 및 파일을 Altibase 전용 계정으로 소유자 변경

# chown –R [계정명]:[그룹명] '[Altibase 디렉터리 위치]’

Step 3) Altibase 전용 계정으로 DB 구동

Cubrid

Step 1) 실행 중인 프로세스를 통한 확인

# ps –ef | egrep 'cub_master|cub_broker|cub_manager' | grep –v grep
-- cub_master, cub_broker, cub_manager 데몬이 root 또는 root 권한으로 구동되었는지 확인

Step 2) 삭제 후 cubrid 계정으로 재설치 또는 같은 DB를 생성 후에 언로드/로드를 통해 기존 데이터 이관