홈디렉터리 소유자 및 권한 설정

홈디렉터리는 사용자가 로그인한 후 작업을 수행하는 디렉터리fh 일반 사용자의 홈 디렉터리 위치는 /home/username입니다. 홈 디렉터리에는 사용자의 프로파일, 쉘 설정 및 다양한 환경 설정이 저장되므로 다른 사용자의 부정한 접근을 방지해야 합니다.

점검 내용
  • 사용자 계정과 홈 디렉터리의 일치 여부를 점검
  • 홈 디렉터리의 소유자 외 타사용자가 해당 홈 디렉터리를 수정할 수 없도록 제한하는지 점검
점검 목적
  • /home 디렉터리 이외 사용자의 홈 디렉터리 존재 여부를 점검하여 비인가자가 시스템 명령어의 무단 사용을 방지하기 위함
  • 사용자 홈 디렉터리 내 설정 파일이 비인가자에 의한 변조를 방지함
보안 위협
  • /etc/passwd 파일에 설정된 홈디렉터리가 존재하지 않는 경우, 해당 계정으로 로그인 시 홈디렉터리가 루트 디렉터리(“/“)로 할당되어 접근이 가능함
  • 홈 디렉터리 내 설정파일 변조 시 정상적인 서비스 이용이 제한될 우려가 존재함
점검 대상
  • Linux : Rocky 9
판단 기준
  • 양호 :
    – 홈 디렉터리가 존재하지 않는 계정이 발견되지 않는 경우
    – 홈 디렉터리 소유자가 해당 계정이고, 타 사용자 쓰기 권한이 제거된 경우
  • 취약 :
    – 홈 디렉터리가 존재하지 않는 계정이 발견된 경우
    – 홈 디렉터리 소유자가 해당 계정이 아니고, 타 사용자 쓰기 권한이 부여된 경우
조치 방법
  1. 홈 디렉터리가 없거나 루트(/)인 계정 확인, 출력값이 없으면 양호
    #!/bin/bash
    
    while IFS=: read -r username password uid gid info home shell; do
            if [ ! -d "$home" ]; then
                    echo "Home directory for $username does not exist: $home"
            elif [ "$home" == "/" ]; then
                    echo "Home directory for $username is root(/)."
            fi
    done <<< `awk -F: '$1!="nobody"&&$3>=1000 {print}' /etc/passwd
    
  2. 홈 디렉토리가 없거나 루트(/)인 계정은 홈디렉터리를 생성/변경
    mkdir -m 700 /path/to
    chown <username>:<username> /path/to
    usermod -d /path/to <username>
    
  3. 홈 디렉터리들의 권한이 700인지 확인, 출력값이 없으면 양호
    #!/bin/bash
    
    while IFS=: read -r username password uid gid info home shell; do
            perm=`ls -ld $home | awk '{print $1}'`
            if [ "$perm" != "drwx------." ]; then
                    echo "Permission of home directory for $username is not 700."
            fi
    done <<< `awk -F: '$1!="nobody"&&$3>=1000 {print}' /etc/passwd
    
  4. 권한이 700이 아닌 홈 디렉터리의 권한을 700으로 변경
  5. chmod 700 /path/to

  6. 홈 디렉터리 생성 시 기본 권한(700) 확인
  7. [root@rocky9u2 ~]# vi /etc/login.defs
    HOME_MODE 0700

◁ UMASK 설정 관리 | 서비스 관리 홈 ▷