본문 바로가기

리눅스 리뷰/Rocky Linux 8

Rocky Linux 8 & 9: 리눅스 시스템 계정의 이해와 필수 보안 가이드

728x90

리눅스 시스템을 운영하다 보면 수많은 계정을 마주하게 됩니다. 이 중에는 사용자가 직접 로그인하여 사용하는 일반 계정(Normal User)도 있지만, 시스템과 서비스가 정상적으로 동작하기 위해 존재하는 시스템 계정(System Account)도 있습니다.

특히 Rocky Linux 환경에서는 기본적으로 설치되는 패키지에 따라 다양한 시스템 계정이 생성됩니다. 이번 포스팅에서는 Rocky Linux의 시스템 계정이란 무엇인지, 왜 삭제하면 안 되는지, 그리고 데이터베이스(MariaDB)를 사용할 때 주의할 점과 보안 설정까지 상세히 알아보겠습니다.


1. 리눅스 시스템 계정이란?

시스템 계정은 사람이 직접 로그인하여 작업하는 용도가 아니라, 특정 백그라운드 서비스, 데몬(Daemon), 또는 시스템 작업을 실행하기 위해 존재하는 계정입니다.

일반적으로 Rocky Linux의 사용자 ID(UID) 기준은 다음과 같이 나뉩니다.

  • UID 0: 최고 관리자 계정 (root)
  • UID 1 ~ 999: 시스템 및 서비스 계정 (sshd, chrony, systemd 등)
  • UID 1000 이상: 일반 사용자 계정

주의: 시스템 계정은 UID가 1000 미만인 경우가 많지만, mysql이나 일반 사용자가 생성한 계정처럼 필요에 의해 1000 이상의 번호가 부여되는 경우도 있으므로 계정 이름과 용도를 정확히 파악해야 합니다.


2. Rocky Linux 기본 생성 계정과 삭제 여부

제공해주신 /etc/passwd 파일을 바탕으로 전체 계정들의 용도와 삭제 여부를 분류했습니다.

1) 최고 관리자 및 필수 시스템 계정 (절대 삭제 금지)

계정명 UID 역할 및 용도
root 0 시스템의 모든 권한을 가진 최고 관리자 계정입니다.
bin, daemon, adm, lp, sync, shutdown, halt 1 ~ 7 시스템 부팅, 기본 유틸리티 및 레거시 서비스를 위한 필수 계정입니다.
mail 8 시스템 메일 전송 및 관리를 담당하는 계정입니다.
operator 11 시스템 운영 및 유지보수 관리용 계정입니다.
tss 59 TPM(Trusted Platform Module) 보안 칩 접근을 위한 계정입니다.
dbus 81 프로세스 간 통신(IPC)을 담당하는 시스템 메시지 버스 계정입니다.
nobody 65534 권한이 필요 없는 작업이나 네트워크 서비스에서 사용하는 최소 권한 계정입니다.

2) 서비스 및 유틸리티 계정

계정명 UID 역할 및 용도 삭제 여부
games 12 과거 리눅스 시스템의 기본 게임 실행용 계정입니다. 삭제 불가
ftp 14 FTP 서비스 실행을 위한 계정입니다. 삭제 불가
tcpdump 72 네트워크 패킷 분석 도구인 tcpdump 실행용 계정입니다. 삭제 불가
sshd 74 원격 접속(SSH) 서비스를 담당하는 계정입니다. 삭제 금지
polkitd 998 시스템 전반의 권한 관리(PolicyKit)를 담당합니다. 삭제 금지
chrony 984 시스템 시간 동기화를 담당하는 데몬 계정입니다. 삭제 금지
mysql 1001 데이터베이스(MariaDB/MySQL) 서비스를 실행하기 위해 생성된 계정입니다. 삭제 금지
systemd-resolve 193 네트워크 이름 확인(DNS 리졸버)을 담당하는 계정입니다. 삭제 불가
systemd-coredump 999 프로그램 비정상 종료(Core Dump) 시 처리하는 계정입니다. 삭제 불가
polkitd / clevis 998 / 997 시스템 권한 관리 및 디스크 암호화 자동 해제 프레임워크 계정입니다. 삭제 불가
unbound / dnsmasq 996 / 990 DNS 해석기 및 DHCP/DNS 서버 서비스 계정입니다. 관련 패키지 삭제 후 제거 가능
libstoragemgmt 995 스토리지 관리를 위한 데몬 계정입니다. 삭제 불가
cockpit-ws / cockpit-wsinstance 989 / 988 웹 기반 서버 관리 도구인 Cockpit의 서비스 계정입니다. Cockpit 미사용 시 패키지 삭제 후 제거 가능
sssd / pesign 987 / 985 원격 디렉터리 연동 및 UEFI 부팅 서명 관리 데몬 계정입니다. 삭제 불가
setroubleshoot 986 SELinux 보안 오류 발생 시 문제 해결을 돕는 도구의 계정입니다. SELinux 사용 시 필수 유지

삭제 시 문제점: 필수 시스템 계정을 임의로 삭제할 경우, 해당 계정의 권한으로 실행되던 데몬이 실행되지 않거나 시스템 부팅 불가, 파일 소유권 충돌 등의 장애가 발생할 수 있습니다.


3. MariaDB 사용 시 mysql 계정에 대한 주의사항

MariaDB를 운영하시는 경우 UID가 1001번인 mysql 계정이 존재합니다. 이 계정은 일반 사용자 범위(1000 이상)에 속하지만, 절대 삭제해서는 안 됩니다.

  • 이유 1: MariaDB 데이터베이스 프로세스는 기본적으로 mysql 시스템 계정의 권한으로 실행됩니다.
  • 이유 2: 데이터베이스가 저장되는 /var/lib/mysql 등 디렉터리와 파일들의 소유자가 mysql:mysql로 지정되어 있어, 삭제 시 DB 데몬(mariadb.service)이 실행되지 않습니다.

4. 일반 계정의 시스템 계정 사칭 방지법

악의적인 사용자가 일반 계정의 UID나 이름을 시스템 계정과 동일하게 변경하여 시스템 권한을 탈취하는 것을 방지하기 위해 다음과 같은 보안 조치를 적용할 수 있습니다.

① UID/GID 중복 확인

시스템 계정과 동일한 UID를 가진 일반 사용자가 없는지 정기적으로 점검해야 합니다.

Bash
 
awk -F: 'seen[$3]++ {print "중복 UID 발견: " $3 " (" $1 ")"}' /etc/passwd

② 쉘(Shell) 접근 제한 점검

시스템 계정은 원칙적으로 대화형 로그인이 불가능(예: /sbin/nologin)해야 합니다. 일반 계정이 시스템 계정인 척 위장하더라도 쉘이 다르게 지정되어 있지 않은지 확인합니다.

Bash
 
awk -F: '$3 < 1000 && $7 !~ /nologin/ && $7 !~ /false/ {print $1, $3, $7}' /etc/passwd

③ UID 생성 범위 제한 설정

/etc/login.defs 파일을 편집하여 일반 계정이 생성될 때의 기본 UID 범위를 올바르게 설정합니다.

Plaintext
 
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN              201
SYS_UID_MAX             999

 

반응형