보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
OS UMASK와 DBMS UMASK의 상관관계
2021.08.04
32,403
표기법 |
읽기(Read) |
쓰기(Write) |
실행(Execute) |
부여 권한 |
표기 |
8진법 |
4 (2^2) |
2 (2^1) |
1 (2^0) |
읽기+쓰기+실행 |
7 |
읽기+쓰기 |
6 |
||||
읽기 |
4 |
||||
심볼릭 |
r |
w |
x |
읽기+쓰기+실행 |
rwx |
읽기+쓰기 |
rw- |
||||
읽기 |
r-- |
표기법 |
소유자(Owner) |
소유 그룹(Group) |
기타 사용자(Other) |
전체 표기 예 |
8진법 |
6 |
6 |
0 |
660 |
심볼릭 |
rw- |
rw- |
--- |
rw-rw---- |
설정 |
적용 결과(8진법 사용) |
||
UMASK 값 |
000 |
002 |
022 |
디렉터리 권한 |
777 |
775 |
755 |
파일 권한 |
666 |
664 |
644 |
설정 |
점검항목 |
중요도 |
코드 |
Unix 계열 서버 |
UMASK 설정 관리 |
중 |
U-56 |
• 시스템 UMASK 값이 022
이상인지 점검
|
|||
DBMS |
데이터베이스의 주요 파일 보호 등을 위해 DB계정의 UMASK를 022 이상으로 설정하여 사용 |
하 |
D-16 |
• 사용자 계정의 UMASK
설정이
022
이상인지
점검
|
[표 4] ‘2021 주요정보통신기반시설 기술적 취약점 분석ㆍ평가 방법 상세가이드’의 UMASK 점검 항목
순서 |
방법 및 결과 이미지 |
① |
‘umask’ 명령어로 접속한 계정의 UMASK값 확인 |
|
|
② |
‘umask 002’ 명령어로 기타 사용자의 쓰기 권한만 제한하도록 변경 |
|
모 드 |
구 분 |
설 명 |
예 시 |
대화형 |
로그인 |
/etc/passwd 에 등록된 계정으로 자격증명 후 로그인 성공 시 |
• SSH 접속
• GUI에서 직접 로그인
|
비로그인 |
그래픽 환경 내의 콘솔이나 터미널, 또는 xterm과 같은 터미널 프로그램으로 접속 시 |
• SSH 접속
후 bash 실행
• GUI에서 터미널 생성
|
순 서 |
환경 파일 |
설 명 |
① |
/etc/profile |
• 로그인 후 가장 먼저 실행되는 환경 파일
• 모든 시스템 사용자의
환경
및 시작 프로그램 적용
|
② |
~/.bash_profile |
• 사용자 별 환경 및 시작 프로그램 구성을 저장
|
~/.bash_login |
• 로그인할 때만 실행
• ~/bash.profile이
없으면 실행
|
|
~/.profile |
• ~/bash_profile, ~/bash_login이
없으면 실행
|
|
③ |
~/.bashrc |
• 사용자 별 별칭 및 함수를 저장
|
④ |
/etc/bashrc |
• 모든 시스템 사용자에게 별칭 및 함수를 저장
|
구 분 |
버전 정보 |
OS |
CentOS Linux release 7.9.2009 (Core) |
Bash Shell |
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu) |
순 서 |
환경 파일 |
선언 위치 |
설정 값 |
최종 적용 값 |
① |
/etc/profile |
로그인 상태 시, 일반 계정의 UMASK를 설정하는 조건문 내부 |
022 |
022 |
순 서 |
환경 파일 |
선언 위치 |
설정 값 |
최종 적용 값 |
② |
~/.bash_profile |
③ ~/.bashrc 호출 전 |
200 |
002 |
③ ~/.bashrc 호출 후 |
002 |
|||
③ |
~/.bashrc |
④ /etc/bashrc 호출 전 |
222 |
|
④ |
/etc/bashrc |
(none) |
(none) |
Shell |
환경 파일 실행 순서 |
설 명 |
sh |
① /etc/profile ② ~/.profile |
• /etc/profile, ~/.profile는
로그인 쉘일 경우
호출
|
ksh |
① /etc/profile ② ~/.profile ③ ~/.kshrc |
• /etc/profile, ~/.profile는
로그인 쉘일 경우
호출
|
csh |
① ~/.cshrc |
• ~/.cshrc는
항상 실행
|
tsh |
① /etc/csh.cshrc ② ~/.tcshrc ③ ~/.cshrc |
• /etc/csh.cshrc,
~/.tcshrc는
항상 실행
• ~/.cshrc는 ~/.tcshrc 없을
경우 호출
|
zsh |
① /etc/zshenv ② ~/.zshenv ③ ~/.zprofile ④ ~/.zshrc |
• ~/.zprofile는
로그인 쉘일 경우
호출
|
분류 |
명칭 |
설명 |
예시 |
UMASK 설정 방법 |
‘OS_Umask’ |
OS System의 UMASK 설정을 의미 |
/etc/profile에 설정된 UMASK |
‘DB_Umask’ |
데이터베이스 내의 자체 설정을 의미 |
mysqld.service에 설정된 UMASK 태그 |
|
Output File |
‘Data_File’ |
데이터베이스에서 생성된 데이터 파일 |
데이터베이스, 테이블, 테이블스페이스 |
‘Export_File’ |
데이터베이스 외부로 내보낸 파일 |
export한 덤프 파일, 쿼리 결과를 txt 로 저장한 파일 |
|
계정 |
시스템 접속 계정 |
시스템에 접속한 계정 |
OS에 초기 로그인한 계정. su -l oracle로 재접속한 계정 |
서비스 구동 계정 |
서비스 프로세스를 구동한 계정 |
ps –ef | grep mongod로 확인한 프로세스 구동 계정 |
구분 |
데이터베이스 |
버전 |
UMASK 적용 우선 순위 |
UMASK 설정 방법 |
CASE 1 |
Oracle |
Version 19.0.0.0.0- Production |
‘OS_Umask’만 적용 |
‘OS_Umask’ 설정 |
CASE 2 |
PostgreSQL |
PostgreSQL 13.1 |
‘OS_Umask’ ≥ ‘DB_Umask’ |
|
Tibero |
6(DB 6.0 FS07_CS_2005) |
|||
CASE 3 |
MySQL |
8.0.22 MySQL Community Server - GPL |
‘OS_Umask’ , ‘DB_Umask’ 각각 적용 |
‘OS_Umask’와‘DB_Umask’ 설정 |
MariaDB |
10.5.8 |
|||
CASE 4 |
MongoDB |
4.4.2 |
‘OS_Umask’ ≤ ‘DB_Umask’ |
‘DB_Umask’ 설정 후 ‘OS_Umask’ 설정 |
CASE 5 |
DB2 |
DB2 Client 11.5.4.0 |
- |
UMASK 설정 불가 |
구분 |
데이터베이스 |
버전 |
UMASK 적용 우선 순위 |
UMASK 설정 방법 |
CASE 1 |
Oracle |
Version 19.0.0.0.0- Production |
‘OS_Umask’만 적용 |
‘OS_Umask’ 설정 |
순서 |
확인 방법 및 결과 이미지 |
① |
접속한 계정의 UMASK 값 확인 |
|
|
② |
DB 접속 후 ‘Data_File’ 생성 |
|
|
③ |
DB 접속 후 ‘Export_File’ 생성 |
|
|
④ |
생성된 ‘Data_File’과 ‘Export_File’ 권한 확인 |
|
구분 |
데이터베이스 |
UMASK 설정 |
UMASK 적용 대상 |
결론 |
CASE 1 |
Oracle |
‘OS_Umask’ |
‘Export_File’ |
‘OS_Umask’가 모든 UMASK 설정 |
‘Data_File’ |
구분 |
데이터베이스 |
버전 |
UMASK 적용 우선 순위 |
UMASK 설정 방법 |
CASE 2 |
PostgreSQL |
PostgreSQL 13.1 |
‘OS_Umask’ ≥ ‘DB_Umask’ |
‘OS_Umask’ 설정 |
Tibero |
6(DB 6.0 FS07_CS_2005) |
순서 |
확인 방법 및 결과 이미지 |
① |
접속한 계정의 UMASK 값 확인 |
|
|
② |
DB 접속 후 ‘Data_File’ 생성 |
|
|
③ |
DB 접속 후 ‘Export_File’ 생성 |
|
|
④ |
생성된 ‘Data_File’과 ‘Export_File’ 권한 확인 |
|
구분 |
데이터베이스 |
UMASK 설정 |
UMASK 적용 대상 |
결론 |
CASE 2 |
PostgreSQL, Tibero |
‘OS_Umask’ |
‘Export_File’ |
‘OS_Umask’의 UMASK 변경 가능, ‘DB_Umask’는 고정으로 UMASK 변경 불가 |
‘DB_Umask’ |
‘Data_File’ |
구분 |
데이터베이스 |
버전 |
UMASK 적용 우선 순위 |
UMASK 설정 방법 |
CASE 3 |
MySQL |
8.0.22 MySQL Community Server - GPL |
‘OS_Umask’ , ‘DB_Umask’ 각각 적용 |
‘OS_Umask’와‘DB_Umask’ 설정 |
MariaDB |
10.5.8 |
순서 |
확인 방법 및 결과 이미지 |
① |
접속한 계정의 UMASK 값 확인 |
|
|
② |
DB 접속 후 ‘Data_File’ 생성 |
|
|
③ |
DB 접속 후 ‘Export_File’ 생성 |
|
|
④ |
생성된 ‘Data_File’과 ‘Export_File’ 권한 확인 |
|
MySQL의 UMASK 설정 방법 |
• MySQL
서비스
파일(/usr/lib/systemd/system/mysqld.service)에서 [Service]
태그
하위의 UMASK
설정을
다음과 같이 수정한다.
• [Service]
태그
및 UMASK
설정이
존재하지 않을 경우, 해당
내용을 직접 추가해야 한다.
|
# vi /usr/lib/systemd/system/mysqld.service [Service] Environment=UMASK=[(10진수)420 이하 세 자리 수] 또는 [(8진수)0644 이하 네 자리 수] Environment=UMASK_DIR=[(10진수)493 이하 세 자리 수] 또는 [(8진수)0755 이하 네 자리 수] |
순서 |
설정 |
① |
‘MySQL의 UMASK 설정 방법’에 따라 UMASK 값 설정 |
|
|
② |
DB 접속 후 ‘Data_File’ 생성 |
|
순서 |
설정 |
③ |
DB 접속 후 ‘Export_File’ 생성 |
|
|
④ |
생성된 ‘Data_File’과 ‘Export_File’ 권한 확인 |
|
구분 |
데이터베이스 |
UMASK 설정 |
UMASK 적용 대상 |
결론 |
CASE 3 |
MySQL, MariaDB |
‘OS_Umask’ |
‘Export_File’ |
‘OS_Umask’와 ‘DB_Umask’가 각 각 적용 |
‘DB_Umask’ |
‘Data_File’ |
구분 |
데이터베이스 |
버전 |
UMASK 적용 우선 순위 |
UMASK 설정 방법 |
CASE 4 |
MongoDB |
4.4.2 |
‘OS_Umask’ ≤ ‘DB_Umask’ |
‘DB_Umask’ 설정 후 ‘OS_Umask’ 설정 |
순서 |
확인 방법 및 결과 이미지 |
① |
접속한 계정의 UMASK 값 확인 |
|
|
② |
DB 접속 후 ‘Data_File’ 생성 |
|
|
③ |
DB 접속 후 ‘Export_File’ 생성 |
|
|
④ |
생성된 ‘Data_File’과 ‘Export_File’ 권한 확인 |
|
MongoDB UMASK 설정 방법 |
• [mongoDB config
path]/mongod.conf 파일
내 honorSystemUmask와 processUmask를 설정한다.
• honorSystemUmask가 true일
경우 OS 접속
계정의 umask가
적용된다
• honorSystemUmask가 false일
경우 processUmask 값을
따르고, processUmask 값도 false일
경우 파일은 600,
디렉터리는
700으로
생성된다.
|
# vi [mongoDB config path]/mongod.conf setParameter: honorSystemUmask : [true/false] processUmask : [umask 값/false] |
honorSystemUmask |
processUmask |
적용되는 UMASK |
false |
022 |
022 |
false/설정 없음 |
false/설정 미존재 |
파일 : 066/디렉토리 : 077 |
true |
설정 미존재 |
서비스 구동 계정의 UMASK |
true |
022 |
(서비스 구동 불가) |
순서 |
확인 방법 및 결과 이미지 |
① |
MongoDB 구동 계정의 UMASK 값 확인 |
|
|
② |
DB 접속 후 ‘Data_File’ 생성 |
|
|
③ |
DB 접속 후 ‘Export_File’ 생성 |
|
|
④ |
생성된 ‘Data_File’과 ‘Export_File’ 권한 확인 |
|
구분 |
데이터베이스 |
UMASK 설정 |
UMASK 적용 대상 |
결론 |
CASE 4 |
MongoDB |
‘OS_Umask’ |
‘Export_File’ ‘Data_File’ |
‘DB_Umask’의 설정에 따라 ‘OS_Umask’의 영향도가 결정 |
‘DB_Umask’ |
‘Data_File’ |
구분 |
데이터베이스 |
버전 |
UMASK 적용 우선 순위 |
UMASK 설정 방법 |
CASE 5 |
DB2 |
DB2 Client 11.5.4.0 |
- |
UMASK 설정 불가 |
순서 |
확인 방법 및 결과 이미지 |
① |
접속한 계정의 UMASK 값 확인 |
|
|
② |
DB 접속 후 ‘Data_File’ 생성 |
|
|
③ |
DB 접속 후 ‘Export_File’ 생성 |
|
|
④ |
생성된 ‘Data_File’과 ‘Export_File’ 권한 확인 |
|
구분 |
데이터베이스 |
UMASK 설정 |
UMASK 적용 대상 |
결론 |
CASE 5 |
DB2 |
‘OS_Umask’ |
- |
UMASK 변경 불가 |
‘DB_Umask’ |
- |
구분 |
DBMS |
UMASK 상관관계 |
점검 방법 |
CASE 1 |
Oracle |
‘OS_Umask’가 모든 UMASK 설정 |
• OS 접속 계정의 UMASK
확인
|
CASE 2 |
PostgreSQL |
‘OS_Umask’의 UMASK 변경 가능, ‘DB_Umask’는 고정으로 UMASK 변경 불가 |
• OS 접속 계정의 UMASK
확인
|
Tibero |
|||
CASE 3 |
MySQL |
‘OS_Umask’와 ‘DB_Umask’가 각 각 적용 |
• OS 접속 계정의 UMASK
확인
• DBMS
설정 파일 내부 UMASK 확인
|
MariaDB |
|||
CASE 4 |
MongoDB |
‘DB_Umask’의 설정에 따라 ‘OS_Umask’의 영향도가 결정 |
• OS 접속 계정의 UMASK
확인
• DBMS
설정 파일 내부 UMASK 확인
• DBMS
설정 파일에 ‘서비스
구동 계정의 UMASK 적용’으로 설정될 경우, MongoDB 구동 계정의 UMASK 확인
|
CASE 5 |
DB2 |
UMASK 변경 불가 |
• OS 접속 계정의 UMASK
확인
|
구분 |
설명 |
DBMS 설치 시 |
설치 시 OS에 접속한 계정의 UMASK를 022로 설정 |
DBMS 운영 시 |
관리자 계정이 아닌 서비스 전용 계정으로 DBMS를 운영하며 해당 계정의 UMASK를 022로 설정 |
구분 |
설명 |
OS 로그의 정기적 검토 및 보고 |
정기적인 로그 분석을 위하여 아래와 같은 절차 수립 |
① 정기적인 로그 검토 및 분석 주기 수립 ② 로그 분석에 대한 결과 보고서 작성 ③ 로그 분석 결과보고서 보고 체계 수립 |
|
DBMS 자체 감사 기능 실행 |
데이터베이스 감사 기록 정책 및 백업 정책 수립 |
Oracle 예시) AUDIT 기능을 활성화하고 데이터베이스 감사 기록 정책 및 백업 정책을 수립한다. ① SQL> ALTER SYSTEM SET AUDIT_TRAIL=[AUDIT_TRAIL 값] SCOPE=SPFILE; ② SQL> STARTUP FORCE; |
구분 |
설명 |
OS 접속 제한 |
TCP Wrapper 접근 제어를 사용 |
• /etc/hosts.deny : 시스템
접근을 제한할 IP 설정
• /etc/hosts.allow : 시스템
접근을 허용할 IP 설정
• hosts.deny와 hosts.allow 어느
곳에도 없는 경우 : 모든
접근 허용
|
|
iptables 사용 |
|
• iptables 명령어를
통해 접속할 IP 및
포트 정책 추가
예시) #iptables –A INPUT –p tcp –s 192.168.1.24 --dport 22 –j ACCEPT |
|
DBMS 접속 제한 |
DB서버에 지정된 IP 주소만 접근 가능하도록 제한 |
Oracle 예시) ① spfile을 사용하는 경우 아래 명령어 실행 SQL> ALTER SYSTEM SET REMOTE_OS_AUTHENT=FALSE SCOPE=spfile; ② pfile을
사용하는 경우 init SQL> ALTER SYSTEM SET REMOTE_OS_AUTHENT=FALSE; |