1. 계정 관리
(1) root 이외의 UID가 0 금지
- root(UID=0)와 동일한 UID를 가진 계정 존재시 root 권한으로 시스템 접근 가능하므로 주의
- /etc/passwd 파일 내 UID 확인(cat이나 vi 사용)
- UID 변경(OS별 점검파일 위치 및 점검방법)
SOLARIS, Linux, HP-UX | usermod -u [UID] [계정명] 리눅스의 경우 500 이상, SOLARIS, HP-UX는 100 이상으로 설정 |
AIX | chuser id=[UID] [계정명] 100이상 설정 |
(2) 패스워드 복잡성 설정
- 부적절한 패스워드 유형 : 사전에 나오는 단어나 이들의 조합, 길이가 너무 짧거나 공백, 키보드 자판의 일련순, 사용자 계정 정보로부터 유추 가능한 단어
- 대소문자/숫자/특수문자 중에서 2가지 종류를 조합했을 때 10자리 이상, 3가지 이상 종류 조합했을 때 8자리 이상
(3) 패스워드 최소 길이 설정(8자 이상)
SOLARIS | cat /etc/default/passwd PASSLENGTH=8 |
Linux | cat /etc/login.defs PASS_MIN_LEN 8 |
HP-UX | cat /etc/default/security MIN_PASSWORD_LENGTH=8 |
AIX | cat /etc/security/user minlen=8 |
(4) 패스워드 최대 사용 기간 설정(90일=12주)
SOLARIS | cat /etc/default/passwd MAXWEEKS=12 (단위 : 주) |
Linux | cat /etc/login.defs PASS_MAX_DAYS 90 (단위 : 일) |
HP-UX | cat /etc/default/security PASSWORD_MAXDAYS=90 (단위 : 일) |
AIX | cat /etc/security/user maxage=12 (단위 : 주) |
(5) 패스워드 최소 사용 기간 설정(1일 또는 1주)
SOLARIS | cat /etc/default/passwd MINWEEKS=1 (단위 : 주) |
Linux | cat /etc/login.defs PASS_MIN_DAYS 1 (단위 : 일) |
HP-UX | cat /etc/default/security PASSWORD_MINDAYS=1 (단위 : 일) |
AIX | cat /etc/security/user minage=1 (단위 : 주) |
(6) 패스워드 파일 보호
SOLARIS, Linux | /etc/shadow 파일 존재 확인 /etc/passwd 파일 내 두번째 필드가 x 표시인지 확인 |
HP-UX | /tcb 디렉터리 존재 확인 /etc/passwd 파일 내 두번째 필드가 x 표시인지 확인 |
AIX | /etc/security/passwd 파일에 패스워드 암호화하여 저장 |
(7) Session Timeout 설정(600초=10분)
SOLARIS, Linux, HP-UX, AIX | #sh, ksh, bash 사용시 cat /etc/profile(.profile) TMOUT=600 (단위 : 초) export TMOUT #csh 사용시 cat /etc/csh.login 또는 cat /etc/csh.csh.rc set autologout=10 (단위 : 분) |
2. 파일 및 디렉터리 관리
(1) root 홈, 패스 디렉터리 권한 및 패스 설정
- root 계정의 PATH 환경변수에 "."(현재 디렉터리 지칭)이 포함되어 있으면 root 계정으로 접속한 관리자가 의도하지 않은 현재 디렉터리에 위치하고 있는 명령어가 실행될 수 있다. "."이 /usr/bin, /bin, /sbin 등의 명령어들이 위치하고 있는 디렉터리보다 우선하여 위치하고 있을 경우, root 계정으로 접속한 관리자가 특정 명령을 실행하면 불법적으로 현재 디렉터리에 위치시킨 파일을 실행하여 예기치 않은 결과를 가져올 수 있다.
- $PATH 변수를 확인하여 경로 맨 앞 또는 중간에 "."가 포함되어 있는지 확인하여 맨 뒤로 이동 또는 불필요시 삭제
- SHELL에 따라 참조되는 환경설정파일
/bin/sh | /etc/profile, $HOME/.profile |
/bin/bash | /etc/profile, $HOME/.bash_profile |
/bin/ksh | /etc/profile, $HOME/.profile, $HOME/kshrc |
/bin/csh | /etc/.login, $HOME/.cshrc. $HOME/.login |
(2) 파일 및 디렉터리 소유자/소유그룹 설정
- 소유자/소유그룹이 존재하지 않는 파일의 경우, 시스템 자원 낭비가 될 수 있고 관리가 되지 않는 문제 있다.
- find . \( -nouser -o -nogroup \) -exec ls -al {} \; -> 소유자/소유그룹 존재하지 않는 파일/디렉터리 검색
- chown, chgrp으로 소유자/소유그룹 변경 또는 rm -r로 삭제
(3) world writable 파일 점검
- world writable 파일이란 모든 사용자(others)에게 쓰기 권한이 부여되어 있는 파일
- 모든 사용자가 접근 및 수정할 수 있는 권한으로 설정된 파일 존재시, 일반 사용자가 실수로 또는 의도적으로 파일 정보를 변경할 수 있기 때문에 시스템 장애나 추가적인 공격에 활용될 수 있는 문제점 있다.
- find [경로] -perm -2 -exec ls -al {} \; -> others에 쓰기 권한 부여된 파일/디렉터리 검색
- 대상 파일/디렉터리를 chmod를 통해 쓰기권한 제거하거나 rm -r로 파일/디렉터리 제거
(4) 주요 파일 소유자 및 권한 설정
/etc/passwd 파일 | 사용자 정보 담고 있는 파일 root 소유의 644 이하의 권한으로 설정 |
/etc/shadow 파일 | 사용자의 암호화된 패스워드 정보 담고 있는 파일 root 이외에 접근 못하도록 root 소유의 400 이하의 권한 설정 |
/etc/hosts 파일 | IP와 호스트 이름을 매핑하는데 사용되는 파일 root 소유의 600 이하의 권한을 설정 |
/etc/(x)inetd.conf 파일 | inetd 데몬에 대한 설정파일 root 소유의 600 이하의 권한 설정 |
/etc/syslog.conf 파일 | syslogd 데몬에 대한 설정파일로 주요 로그파일에 대한 설정정보를 가지고 있다. root 이외의 사용자는 해당 파일 변경할 수 없도록 root 소유의 644 이하의 권한을 설정 |
/etc/services 파일 | 서비스 관리(서비스별 포트/프로토콜 정보)정보를 담고 있는 파일 root 소유의 644 이하의 권한을 설정 |