대상 OS: Rocky Linux 9

서버에 새 계정을 추가할 때 가장 흔한 보안 사고는 “권한 과다 + 인증 허술” 조합입니다. 계정은 곧 접근 경로이고, 접근 경로는 공격자가 가장 먼저 두드리는 지점입니다. 아래는 Rocky Linux 9에서 새 계정을 만들 때 최소로 지켜야 할 보안 체크리스트입니다.

1) 계정 생성: 목적 기반으로 만들고, 기본값을 확인

사람 계정인지(개인), 서비스 계정인지(배포/자동화)에 따라 정책이 달라져야 합니다. 우선 생성은 표준 도구로 수행합니다.

# 대화형(권장) - 기본 홈/쉘 등 설정 확인 가능
sudo adduser deploy

# 또는 비대화형 생성(홈 디렉터리 생성)
sudo useradd -m deploy


2) SSH는 키 기반으로: 서버에서 키 생성 금지(원칙)

서버에서 키를 생성해 배포하는 방식은 키 유출/재사용/감사 관점에서 좋지 않습니다. 일반적으로는 로컬에서 키를 생성하고, 서버에는 공개키만 등록합니다.

# 공개키 등록(authorized_keys)
sudo mkdir -p /home/deploy/.ssh
sudo chmod 700 /home/deploy/.ssh

# 공개키를 파일에 추가(편집기 사용)
sudoedit /home/deploy/.ssh/authorized_keys

sudo chmod 600 /home/deploy/.ssh/authorized_keys
sudo chown -R deploy:deploy /home/deploy/.ssh

키 인증이 제대로 동작하려면 권한/소유권이 매우 중요합니다. 특히 .sshauthorized_keys 권한이 느슨하면 SSH가 보안상 이유로 인증을 거부할 수 있습니다.


3) sudo 권한은 ‘최소’로: wheel 그룹은 마지막 수단

새 계정에 무심코 wheel을 주는 순간, 그 계정은 사실상 관리자 계정이 됩니다. 정말 필요할 때만 권한을 주고, 가능하면 특정 명령만 허용하는 방식으로 좁힙니다.

# (필요 시) wheel 그룹 추가
sudo usermod -aG wheel deploy

# (권장) 특정 명령만 허용하려면 sudoers drop-in 파일을 사용
sudo visudo -f /etc/sudoers.d/deploy

예시 정책: 배포 계정은 서비스 재시작/로그 확인 정도만 허용하고, 패키지 설치/사용자 관리 같은 고위험 작업은 분리합니다.


4) 임시 계정이라면 만료/잠금을 ‘계정 생성 시점에’ 함께 설계

임시 접근(벤더 점검/단기 프로젝트)은 계정이 “남아 있는 것” 자체가 리스크가 됩니다. 종료 시점에 삭제하는 게 원칙입니다.

# 즉시 잠금(로그인 불가) - 필요 시 사용
sudo passwd -l deploy

# 사용 종료 시 계정과 홈까지 제거
sudo userdel -r deploy


5) 로그/감사: 새 계정이 ‘어떻게 사용되는지’가 남아야 함

새 계정을 만들었으면 “누가 언제 로그인했고, 실패가 반복되는지”가 확인 가능해야 합니다. 최소한 SSH 로그를 주기적으로 확인하거나, 모니터링/알림에 포함합니다.

# 오늘 SSH 로그 빠르게 확인(최근 200줄)
sudo journalctl -u ssh --since "today" --no-pager | tail -n 200


사례(현장에서 자주 겪는 상황)

  • 배포 계정에 wheel을 기본으로 부여 → 키 유출/계정 탈취 시 즉시 관리자 권한으로 확대
  • 벤더 계정을 “잠깐” 만들었다가 방치 → 담당자 교체 후에도 계정이 남아 접근 경로로 유지
  • authorized_keys 권한 실수 → 키 인증이 실패해 운영자가 임시로 패스워드 로그인을 켬(보안 후퇴)

트러블슈팅(증상→원인→해결)

  • 증상: 키 인증이 계속 실패하고 비밀번호만 요구됨
    원인: /home/deploy/.ssh 또는 authorized_keys 권한/소유권 오류
    해결: .ssh는 700, authorized_keys는 600, 소유자를 deploy:deploy로 맞춘 뒤 재시도
  • 증상: sudo가 안 되거나 예상치 못한 명령까지 실행됨
    원인: wheel 그룹 부여 또는 sudoers 정책이 과도/불명확
    해결: wheel을 최소화하고, /etc/sudoers.d/에 명령 단위로 명시(최소 권한 원칙)
  • 증상: 임시 계정이 계속 남아 있음
    원인: 만료/종료 프로세스 부재(업무 종료 시 계정 정리가 누락)
    해결: 계정 생성 시 티켓에 종료일을 포함하고, 종료 시 userdel -r까지 체크리스트로 고정

푸터: 계정 추가는 ‘편의’가 아니라 ‘새로운 공격 경로’의 생성입니다. 키 기반 인증, 최소 sudo, 임시 계정 만료/삭제, SSH 로그 확인까지를 한 세트로 묶으면 계정이 보안 부채가 되는 것을 크게 줄일 수 있습니다.