주요정보통신기반시설 기술적 취약점 분석 평가 가이드

Unix 서버 취약점 분석 평가 _ 1. 계정 관리

jeff_kim 2024. 7. 29. 19:02

항목 중요도 : 상 

 


 

1.1 root 계정 원격 접속 제한

 

- 점검 내용 : 시스템 정책에 root 계정의 원격터미널 접속 차단 설정이 적용되어있는지 적용

- 점검 목적 : 관리자 계정 탈취로 인한 시스템장악을 방지기 위해 외부 비인가자의 root 계정 접근 시도를 원천적으로 차단하기 위함

- 보안 위협 : root 계정은 운영체제의 모든 기능을 설정 및 변경 가능 -> root 계정을 탈취하여 외부에서 원격으로 시스템 장악 및 각종 무작위 대입 공격으로 인한 root 계정 사용 불가 위협

- 판단 기준 : 원격 터미널 서비스 사용을 하고 있는지? 만약 사용한다면 root 계정의 직접 접속을 차단 했는지?

- 조치 방법 : 원격 접속 시 root 계정으로 접속할 수 없도록 설정 파일 수정

확인 사항
cat /etc/ssh/sshd_config | grep -i 'permit'

# 변경 전
#PermitRootLogin prohibit-password
# 변경 후 -> ssh 서비스 재시작
PermitRootLogin no

sudo systemctl restart ssh

 

 


1.2 패스워드 복잡성 설정

 

- 점검 내용 : 시스템 정책에 있는 사용자(root 및 일반 사용자 포함) 패스워드 복잡성 관련 설정이 되어있는지 점검

- 점검 목적 : 패스워드 복잡성에 대해 점검하여 비인가자의 공격(무작위 대입 공격, 사전 대입 공격 등)에 대비가 되어있는지 확인

- 보안 위협 : 복잡성 설정이 되어있지 않은 패스워드는 사회공학적인 유추가 가능할 수 있으며, 암호화된 패스워드 해쉬값을 비인가자의 공격으로 단시간에 패스워드 크렉을 가능케함

- 판단 기준 : 패스워드 최소 길이가 8자리 이상인가?, 영문,숫자,특수문자 최소 입력 기능이 설정되어 있는가?

- 조치 방법 : 계정과 유사하지 않은 8자 이상의 영문, 숫자, 특수문자의 조합으로 암호 설정 및 패스워드 복잡성 옵션 설정

# 확인
cat /etc/security/pwquality.conf


# 설정 예시
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 lcredit=-1 
ucredit=-1 dcredit=-1 ocredit=-1

# 설정값 설명
-1 : 반드시 해당하는 문자를 포함시켜야 함
권장 값
lcredit=-1 // 최소 소문자 요구 -> 소문자 최소 1자 이상 요구
ucredit=-1 // 최소 대문자 요구 -> 대문자 최소 1자 이상 요구
dcredit=-1 // 최소 숫자 요구 -> 최소 숫자 1자 이상 요구
ocredit=-1 // 최소 특수 문자 요구 -> 최소 특수 문자 1자 이상 요구
minlen=8 // 최소 패스워드 길이 설정 -> 최소 8자리 이상 설정
difok=N // 기존 패스워드와 비교 -> 기본 값 10 (50%)

 

- 부적절한 패스워드 유형

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

  2. 길이가 너무 짧거나, 공백인 패스워드

  3. 기보드 자판의 일련의 나열 ex) abcd,qwerty,etc

  4. 사용자 계정 정보에서 유추 가능한 단어들 ex) 지역명, 부서명, 계정명, 이니셜,  root, rootroot, root123, admin 등

 

- 패스워드 관리 방법

  1. 영문, 숫자, 특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드 설정 (아래 문자 종류 중 2종류 이상을 조합, 최소 10자리 이상 또는, 3종류 이상을 조합하여 최소 8자리 이상 길이로 구성)

    1.1 영문 대문자 (26개)

    1.2 영어 소문자 (26개)

    1.3 숫자 (10개)

    1.4 특수 문자 (32개)

  2. 시스템마다 상이한 패스워드 사용

  3. 패스워드를 기록해 놓을 경우 변형하여 기록

 

- 조치 시 영향 : 패스워드 변경 시 Web,WAS,DB 연동 구간에서 문제가 발생할 수 있으므로 연동 구간에 미칠 수 있는 영향을 고려해야한다

 


1.3 계정 잠금 임계값 설정

 

-  점검 내용 : 사용자 계정 로그인 실패 시 계정잠금 임계값이 설정되어 있는지 점검

- 점검 목적 : 계정 탈취 목적의 무작위 대입 공겨 시 해당 계정을 잠금하여 인증 요청에 응답하는 리소스 낭비를 차단, 대입 공격으로 인한 비밀번호 노출 공격을 무력화하기 위함

- 보안 위협 : 패스워드 탈취 공격의 인증 요청에 대해 설정된 패스워드와 일치할 때 까지 지속적으로 응답해 해당 계정의 패스워드가 유출될 수 있음

- 판단 기준 : 계정 임계값이 10회 이하의 값으로 설정되어 있는가?

1. vi 편집기를 이용해 /etc/pam.d/system-auth 파일 열기
2. 아래와 같이 수정 또는 신규 삽입
auth required /lib/security/pam_tally.so deny=5 unlock_time=120 no_magic_root
account required /lib/security/pam_tally.so no_magic_root reset

no_magic_root: root에게는 패스워드 잠금 설정을 적용하지 않음
deny=5: 5회 입력 실패 시 패스워드 잠금
unlock_time: 계정 잠김 후 마지먹 계정 실패 시간부터 설정된 시간이 지나면 자동 계정 잠김 해제 (단위:초)
reset: 접속 시도 성공 시 실패한 횟수 초기화

 

- 조치 시 영향 : pam.d/system-auth의 내용 수정 시 해당 라이브러리가 실제 존재하는지 확인이 필요하다, pam_tally.so 파일이 존재 하지 않으면 모든 계정 로그인이 안되는 장애가 발생될 수 있다

 


1.4 패스워드 파일 보호

- 점검 내용: 시스템의 사용자 계정 정보가 저장된 /etc/passwd, /etc/shadow에 사용자 계정 패스워드가 암호호되어 저장되어 있는지 점검

- 점검 목적 : 오래된 시스템의 경우 /etc/passwd 파일에 패스워드가 평문으로 저장되므로, 사용자 계정 패스워드가 암호화되어 저장되어 있는지 점검하여 비인가자의 패스워드 파일 접근시에도 안전하게 관리 되고 있는지 확인하기 위함

- 보안 위협: 사용자 계정 패스워드가 저장된 파일이 유출 또는 탈취 시 평문으로 저장된 패스워드 정보 노출될 수 있음

- 판단 기준 : 쉐도우 패스워드를 사용하는가?, 패스워드를 암호화해서 저장해놓았는가?

# 1) /etc/shadow 파일의 패스워드 암호화 존재 확인
ls /etc

# 2) /etc/passwd 파일 내 두번째 필드가 "x" 표시 되어있는지 확인하기
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash