리눅스 사용자 계정 삭제 전 점검 절차

Lynis 3.1.7 소스(include/tests_authentication)를 보면 AUTH-9284 는 잠긴 계정 중 UID 1000 이상(65534 제외)인 일반 계정을 확인해서 존재하면 취약점 리포트에 포함됩니다. Application Migration을 여러 번 거친 리눅스 서버를 오래 사용하다 보면 삭제된 계정이 그대로 남는 경우가 많습니다. 그래서 오늘은 사용자 계정을 삭제하기 전에 점검해야 할 항목들을 알아보겠습니다.

  1. 잠긴 계정을 확인합니다.
    awk -F: '$3>999 && $3!=65534{print $1}' /etc/passwd | xargs -n1 passwd -S | awk '$2=="L" || $2=="LK" {print $1}' | xargs -I {} sh -c 'echo "--- Account: {} ---"; passwd -S {}; grep "^{}:" /etc/passwd'
  2. 잠긴 계정으로 실행 중인 프로세스가 있는지 확인합니다.
    LU=<user>
    HD=<home directory>
    ps -u $LU -o pid,cmd
    
    # 프로세스가 있다면
    pkill -u $LU
    
  3. 잠긴 계정으로 네트워크 소켓을 물고 있는지(활성 세션이나 리스닝 포트를 유지하고 있는지) 확인합니다.
    lsof -u $LU -P -n
    
    # 열린 파일이 있다면
    lsof -u $LU -P -n | awk 'NR>1 {print $2}' | sort -u | xargs -r kill -9
    
  4. 잠긴 계정으로 등록된 systemd 유닛(타이머, 소켓, 서비스 등)를 확인합니다.
    grep -rlE "^\s*User=$LU\s*$" /etc/systemd/system /usr/lib/systemd/system /run/systemd/system 2>/dev/null
    
    # 등록된 서비스가 있다면
    systemctl list-unit-files | grep <유닛이름>
    systemctl disable --now <유닛이름>.<확장자>
    rm -f /path/to/<유닛이름>.<확장자>
    
  5. 잠긴 계정으로 예약된 작업이 있는지 확인합니다.
    crontab -l -u $LU
    grep -rnw "/etc/crontab" -e "$LU"
    grep -rnw "/etc/cron.d/" -e "$LU"
    
    # 등록된 예약 작업이 있다면,
    crontab -e -u $LU
    rm -f /etc/crontab/파일명
    rm -f /etc/cron.d/파일명
    
  6. 잠긴 계정으로 시작되는 스크립트나 서비스가 있는지 확인합니다.
    grep -rl $LU /etc/init.d 2>/dev/null
    
  7. 잠긴 계정의 최근 로그인 기록을 확인합니다.
    lastlog -u $LU
    
  8. 잠긴 계정이 점유하고 있는 IPC (Inter-Process Communication) 자원을 점검합니다.
    ipcs -p
    
    # 공유 메모리(Shared Memory) 자원이 있다면
    ipcrm -m <shmid번호>
    
  9. 잠긴 계정이 소유한 파일 및 디렉터리를 확인합니다. 확인된 파일 및 디렉터리는 백업/삭제하거나 소유권을 관리자에게 이전합니다.
    find / \( -path /proc -o -path /dev -o -path $HD \) -prune -o -user $LU -print 2>/dev/null
    
    # 사용자의 홈 디렉터리와 메일 스풀 파일만 출력된다면, 10단계에서 처리합니다.
    
    # 소유한 파일 및 디렉터리가 있다면,
    find / \( -path /proc -o -path /dev \) -prune -o -user $LU -print0 2>/dev/null | tar --null -czf /home/$LU.tar.gz -T -
    tar -tf /home/$LU.tar.gz
    chown 명령어로 소유권을 이전하거나 rm -rf 명령으로 삭제
    
    # 압축 해제 시
    tar -xzf /home/$LU.tar.gz -C /
    
  10. 마지막으로 계정을 삭제합니다. -r (또는 –remove) 옵션은 사용자의 홈 디렉터리와 메일 스풀 파일을 함께 완전히 삭제합니다.
    userdel -r $LU
    unset LU
    unset HD
    

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다