Information Security ˗ˋˏ ♡ ˎˊ˗

취약점 분석/Linux Server

[UNIX/Linux서버] "계정 관리" 취약점 점검

토오쓰 2021. 10. 5. 14:42

* 대상: AIX, HP-UX, SOLARIS, LINUX

* 각 OS별로 사용자 UID 체계가 달라 시스템 계정 및 일반 사용자 계정이 부여받는 값의 범위에 차이가 있다.

 

root 이외의 UID가 ‘0’ 금지 U-44(중)

점검내용)

root 계정과 동일한 UID를 갖는 계정이 존재하는지 점검한다.

(root UID=0일 때)

점검목적)

root 권한이 일반 사용자 계정이나 비인가자의 접근 위협에 안전하게 보호되고 있는지 확인하기 위해서 존재한다. 만일 동일한 UID가 존재한다면 관리자가 실행할 수 있는 모든 작업이 가능하다. (서비스 시작, 중지, root 권한 파일 편집 등) 또한 사용자 감사 추적 시 어려움이 발생한다.

참고)

UID(User Identification): 여려 명의 사용자가 동시에 사용하는 시스템에서 사용자가 자신을 대표하기 위해 쓰는 이름

점검 및 조치사례)

#cat /etc/passwd

파일 내 UID 확인해서 0인 경우, 적절한 UID를 부여하거나 불필요한 경우 해당 계정을 삭제한다.

[SOLARIS, LINUX, HP-UX]

- usermod 명령으로 UID가 0인 일반 계정의 UID를 수정

-> SOLARIS, HP-UX의 경우 100 이상, Linux 경우 500 이상

(예) usermod -u 500 kok

[AIX]

- chuser 명령으로 UID가 0인 일반 계정의 UID를 수정

(예) chuser id=20 kok

 

 

패스워드 복잡성 설정 U-02(상)

점검내용)

패스워드 복잡도 설정이 되어 있는지 점검한다.

점검목적)

복잡성 설정이 되어있지 않은 패스워드는 사회공학적인 유추가 가능할 수 있으며 암호화된 패스워드 해시값을 무작위 대입 공격, 사전 대입 공격 등으로 단시간에 패스워드 크랙이 가능하다.

참고)

패스워드 복잡성: 사용자 패스워드 설정 시 영문(대문자, 소문자) 숫자, 특수문자가 혼합된 패스워드 설정하는 방법

[패스워드 관리 방법]

- 영문 대소문자, 숫자, 특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드 설정

- 다음 각 문자 종류 중 2종류 이상을 조합하여 최소 10자리 이상 또는, 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성

[부적절한 패스워드 유형]

1) 사전에 나오는 단어나 이들의 조합

2) 길이가 너무 짧거나 공백

3) 키보드 자판의 일련 순

4) 사용자 계정 정보에서 유추 가능한 단어(예. 이름)

점검 및 조치사례)

[LINUX – Debian(Ubuntu) 계열]

/etc/pam.d/common-password 파일 안에 root 계정이 일반 사용자 계정 패스워드 재설정 시 복잡성 정책에 위배되지 않도록 하기 위해서 enforce_for_root가 설정되어 있어야 한다. 또한 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 라인이 있어야 한다.

# vi /etc/security/pwquality.conf

password requisite pam_pwquality.so enforce_for_root retry=3 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

libpam-pwquality 모듈이 없는경우, 모듈을 설치하고 정책과 관련된 내용을 변경한다.
sudo apt-get -y install libpam-pwquality

[LINUX – RedHat 계열]

1) /etc/pam.d/system-auth에서 enforce_for_root 설정 확인

- enforce_for_root: root 사용자로 로그인한 후 일반 사용자 계정의 암호를 재설정할 때, 암호정책에 위배되어도 에러 메시지만 출력하고 넘어가는데 해당 설정을 하면 root 사용자도 암호 정책을 지켜야만 변경할 수 있다.

2) /etc/security/pwquality.conf 파일 내 패스워드 복잡성 설정을 확인한다.

# vi /etc/pam.d/system-auth

password requisite /lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1

 

 

패스워드 최소 길이 설정 U-46(중)

점검내용)

시스템 정책에 패스워드 최소 길이 설정이 적용되어 있는지

점검목적)

패스워드 무차별 공격이나 패스워드 추측 공격을 피하기 위하여 패스워드 최소 길이 설정 필요

- 패스워드 최소 길이가 8자 이상으로 설정되어 있는 경우

점검 및 조치사례)

* OS별 점검 파일 위치 및 점검 방법

[SOLARIS]

#cat /etc/default/passwd

PASSLENGTH=8

[LINUX]

#cat /etc/login.defs

PASS_MIN_LEN 8

[AIX]

#cat /etc/security/user

minlen=8

[HP-UX]

#cat /etc/default/security

MIN_PASSWORD_LENGTH=8

 

 

패스워드 최대 사용기간 설정 U-47(중)

점검내용)

시스템 정책에 패스워드 최대(90일 이하) 사용기간 설정이 되어 있는지

점검목적)

악의적인 사용자로부터 계속적인 접속을 차단하기 위해 설정함.

보안위협)

설정하지 않은 경우, 비인가자의 각종 공격(무작위 대입 공격, 사전 대입 공격 등)을 시도할 수 있는 기간 제한이 없으므로 공격자 입장에서는 장기적인 공격 수행가능

점검 및 조치사례)

* OS별 점검 파일 위치 및 점검 방법

[SOLARIS]

#cat /etc/default/passwd

MAXWEEKS=12

[LINUX]

#cat /etc/login.defs

PASS_MAX_DAYS 90

[AIX]

#cat /etc/security/user

maxage=12

[HP-UX]

#cat /etc/default/security

PASSWORD_MAXDAYS=90

 

 

패스워드 최소 사용기간 설정 U-48(중)

점검내용)

패스워드 최소 사용기간을 설정하지 않으면, 사용자에게 익숙한 패스워드로 변경이 가능하며 이를 재사용함으로써 패스워드의 정기적인 변경은 무의미해질 수 있다.

참고)

최근 암호 기억: 사용자가 현재 암호 또는 최근에 사용했던 암호와 동일한 새 암호를 만드는 것을 방지하는 설정.

ex) 값 1은 마지막 암호만 기억한다는 의미이며 값 5는 이전 암호 5개를 기억한다는 의미임

점검 및 조치사례)

* OS별 점검 파일 위치 및 점검 방법

[SOLARIS]

#cat /etc/default/passwd

MINWEEKS=1(단위: 주)

[LINUX]

#cat /etc/login.defs

PASS_MIN_DAYS 1(단위: 일)

[AIX]

#cat /etc/security/user

minage=1(단위: 주)

[HP-UX]

#cat /etc/default/security

PASSWORD_MINDAYS=1(단위: 일)

 

 

패스워드 파일 보호 U-04(상)

점검내용)

시스템 사용자 계정(root, 일반계정) 정보가 저장된 파일(예 /etc/passwd, /etc/shadow)에 사용자 계정 패스워드가 암호화되어서 저장되는지 점검

점검목적) /etc/passwd 파일에 패스워드가 평문으로 저장되어 있으면 패스워드 정보가 노출될 수 있음

점검 및 조치사례)

* OS별 점검 파일 위치 및 점검 방법

[SOLARIS, LINUX]

Step 1) /shadow 파일의 패스워드 암호화 존재 확인 (일반적으로 /etc 디렉터리 내 존재)

#ls /etc

Step 2) /etc/passwd 파일 내 두 번째 필드가 “x” 표시되는지 확인

#cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

[AIX]

/etc/security/passwd 파일에 패스워드를 암호화하여 저장

[HP-UX]

1) /etc/passwd 파일 내 두 번째 필드가 “x” 표시되는지 확인

2) Trust Mode로 전환할 경우 패스워드를 암호화하여 "/tcb/files/auth" 디렉터리에 계정 이니셜과 계정 이름에 따라 파일로 저장/관리 가능하므로 Mode 확인하기

 

 

Session Timeout 설정 U-54(하)

점검내용)

사용자 쉘에 대한 환경설정 파일에서 session timeout 설정 여부 점검

보안위협)

값이 설정되지 않은 경우 계정이 접속된 상태로 방치될 수 있고 권한이 없는 사용자에게 중요 시스템이 노출되어 악의적인 목적으로 사용 가능

참고)

* session: 프로세스들 사이에 통신을 수행하기 위해서 메시지 교환을 통해 서로를 인식한 이후부터 통신을 마칠 때까지의 시간

* export: 쉘에서 선언한 변수를 export 한다는 의미는 해당 변수를 전역 변수(환경변수)로 만든다는 의미

점검 및 조치 사례)

[SOLARIS, LINUX, AIX, HP-UX]

<sh, ksh, bash 사용 시>

#cat /etc/profile(.profile)

TMOUT=600

export TMOUT

=> 세션 타임아웃을 600초 이하로 설정

<csh 사용 시>

#cat /etc/csh.login 또는, #cat /etc/csh.cshrc

set autologout=10

=> 세션타임아웃을 10분 이하로 설정

 

 

 

참고) 주요정보통신기반시설 “기술적 취약점 분석/평가 방법 상세가이드”

https://www.kisa.or.kr/public/laws/laws3.jsp