과학기술정보통신부와 KISA(한국인터넷진흥원)에서는 주기적으로 주요정보통신기반시설에 대한 기술적 취약점 분석과 평가, 그리고 해결 가이드를 제시한다.
기업에서 많이 사용하는 RHEL 계열의 Rocky Linux 9.3 버전에서 가이드에 맞는 보안정책을 시도해보자
1) 점검내용 : root게정 원격터미널 접속차단 설정
2) 점검목적 : 외부 비인가자 root 계정 접근 시도 원천 차단
**SSH 서비스 사용 시**
# /etc/ssh/sshd_config
아래와 같이 주석제거 or 신규삽입
잘못된 예 : PermitRootLogin yes
올바른 예 : PermitRootLogin no
1) 점검내용 : 계정 패스워드 복잡성 관련 설정 점검
2) 점검목적 : 비인가자의 공격 대비
▶ 내부 정책에 맞게 수정(주석부분은 백업으로 남겨놓기)
# vi /etc/security/pwquality.conf
예시)
retry=3
minlen=8
lcredit=-1
ucredit=-1
dcredit=-1
ocredit=-1
# 주석달린 곳의 주석을 해제하고 숫자를 수정하고 저장하면 완료.
▶ 대표 정책은 다음과 같음
lcredit=-1 : 소문자 최소 1자 이상 요구
ucredit=-1 : 대문자 최소 1자 이상 요구
dcredit=-1 : 숫자 최소 1자 이상 요구
ocredit=-1 : 특수문자 최소 1자 이상 요구
minlen=8 : 최소 8자리 이상 설정
1) 점검내용 : 계정 로그인 실패 시 계정잠금 임계값이 설정되어 있는지 점검
2) 점검목적 : 무작위 대입 공격 무력화
3) 유의사항
① pam.d/system-auth 잘못 설정한 경우 부팅/로그인 실패가 되니, copy파일을 꼭 백업해두자
② 버전별로 사용하는 모듈이 다르니 꼭 알고 설정해야한다
# vi /etc/pam.d/system-auth
auth
섹션은 사용자 인증(authentication)과 관련된 작업을 정의account
섹션은 사용자 계정의 상태와 관련된 작업을 정의※ 설정법에 관한 예시는 아래 글을 참고
https://junu19.tistory.com/17
※ PAM모듈에 관해 자세히 설명한 글이 있으니 아래 글을 참고
https://velog.io/@hl08217/Rocky-Linux-PAM-모듈에-대한-이해
※ 수정으로 로그인/부팅이 안될 경우 아래 방법을 사용해 백업파일로 원상복구
https://coconuts.tistory.com/866
1) 점검내용 : 사용자 계정이 저장된 파일(passwd / shadow) 패스워드가 암호화되어 저장돼있는지 점검
2) 점검목적 : 오래된시스템의 경우 패스워드가 평문으로 저장되므로 암호화 여부 확인
1. /shadow 파일 패스워드 암호화 존재 확인
# cat /etc/shadow-
# rocky 9.3버전에서는 shadow가 아닌 shadow- 파일이다
2. /etc/passwd 파일 내 두 번째 필드가 "x" 표시되는지 확인
#cat /etc/passwd
혹시 암호화가 안됐다면 아래 명령어를 적용한다.(pwconv)
# pwconv ---> 쉐도우 패스워드 정책 적용
# pwunconv ---> 일반 패스워드 정책 적용
1) 점검내용 : root 게정의 PATH 환경변수에 “,”이 포함되어 있는지 점검
2) 점검목적
① 비인가자가 생성한 디렉터리 및 명령어를 우선으로 실행되지 않도록 설정하기 위해 환경변수 점검 필요
② root 계정의 PATH에 정상적인 관리자 명령(ls, mv, cp등)의 디렉터리 경로 보다, 현재 디렉터리를 지칭하는 “.” 표시가 우선하면, 현재 디렉터리에 변조된 명령어를 삽입하여 관리자 명령 입력 시 악의적인 기능 실행될 수 있음
#echo $PATH
/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin/X11:
/usr/local/bin:/usr/bin:/usr/X11R6/bin:/root/bin
==> 위와 같이 출력되는 PATH 변수 내에 “.” 또는, “::” 포함 여부 확인
==> PATH 변수 내에 “.”, “::” 이 맨 앞에 존재하는 경우 아래의설정에 따라 내용을 변경
[예시]
#vi /etc/profile
(수정 전) PATH=.:$PATH:$HOME/bin
(수정 후) PATH=$PATH:$HOME/bin:.
# SHELL에 따른 참조 환경 설정 파일
/bin/sh : /etc/profile, $HOME/.profile
/bin/csh : $HOME/.cshrc, $HOME/.login, /etc/.login
/bin/ksh : /etc/profile, $HOME/.profile, $HOME/kshrc
/bin/bash : /etc/profile, $HOME/.bash_profile
1) 점검내용 : 소유자 불분명 파일 · 디렉터리 존재 여부 점검
2) 점검목적 : 소유자가 존재하지 않는 파일의 UID와 동일 값으로 특정계정의 UID를 변경하면 해당파일의 소유자가 되어 모든 작업 가능
# find / -nouser -print
# find / -nogroup -print
## 소유자 또는 그룹이 없는 파리은 파일 속성 해당 필드에 숫자로 표시됨
예시) rwxr-xr-x 500 500 test.txt
## 해결방법
1) 삭제하기(rm)
2) 소유자 및 그룹 변경(chown)
1) 점검내용 : /etc/passwd 및 /etc/shadow- 파일 권한 적절성 점검
# ls -l /etc/passwd
-rw-r--r-- root
# ls -l /etc/shadow-
-r-------- root
## passwd(shadow-) 파일의 소유자가 root가 아니거나 644(600)이하가 아닌 경우 권한 변경
# chown root /etc/passwd(shadow-)
# chmod 644 /etc/passwd(600)