콘텐츠로 이동

1. Rocky Linux 초기 설치 및 운영 기본 정책

Rocky Linux (9.6 이상) minimal 설치 시 1TB SSD 단일 디스크를 OS 전용으로 사용하는 표준 파티션 구성임.

Gateway + 다중 서비스(Node.js / Next.js / DB / Redis)가 동시에 운영되는 서버 환경을 전제로 설계함.

운영 안정성, 장애 격리, 디스크 관리 편의성을 최우선 목표로 함.

파일시스템 선택 기준

  • 운영 서버 표준에 따라 XFS를 기본 파일시스템으로 사용함.
  • 로그 증가, 대용량 파일, DB I/O에 유리함.
  • /boot 영역만 예외적으로 ext4 사용함.

/etc/fstab 예시 표기 규칙

이 문서의 /etc/fstab 예시는 다음 기준으로 읽음.

  • device / LVM / UUID 기반 마운트는 SOURCE 값이 서버마다 다를 수 있으므로 [SOURCE] placeholder 를 사용함
  • tmpfs, proc 같은 pseudo filesystem 은 tmpfs, proc 를 그대로 사용함
  • bind mount 는 source path 자체를 그대로 사용함

[SOURCE] 확인 방법:

findmnt -no SOURCE /home
findmnt -no SOURCE /var
lsblk -f

예:

findmnt -no SOURCE /home
/dev/mapper/rl-home

위 결과라면 /etc/fstab 에는 다음과 같이 넣음.

/dev/mapper/rl-home  /home  xfs  defaults,nodev,nosuid  0 0

반대로 아래 항목들은 [SOURCE] 로 치환하지 않음.

tmpfs     /tmp      tmpfs  defaults,nodev,nosuid,noexec,mode=1777  0 0
tmpfs     /dev/shm  tmpfs  defaults,nodev,nosuid,noexec            0 0
/var/tmp  /var/tmp  none   bind                                    0 0

/boot

  • 크기: 1024 MiB
  • 타입: 표준 파티션
  • 파일시스템: ext4
  • 설명:
    • 커널 및 부트 로더 영역임.
    • 단순성과 안정성을 위해 ext4 사용함.

/boot/efi

  • 크기: 600 MiB
  • 타입: 표준 파티션
  • 파일시스템: EFI System Partition (자동으로 vfat)
  • 설명:
    • UEFI 부팅을 위한 필수 파티션임.

/swap

  • 크기: 8~16 GiB
  • 타입: LVM
  • 파일시스템: swap
  • 설명:
    • OOM 방지 및 메모리 보호 목적임.
    • 메모리 32GB 기준으로 과하지 않은 최소 스왑만 사용함.
    • Memory × 2 방식은 현대 서버 환경에서는 과도하므로 사용하지 않음.

/

  • 크기: 200 GiB
  • 타입: LVM
  • 파일시스템: XFS
  • 설명:
    • OS 및 기본 시스템 파일 전용 영역임.
    • 서비스 데이터와 명확히 분리하여 시스템 안정성을 확보함.

/home

  • 크기: 200 GiB
  • 타입: LVM
  • 파일시스템: XFS
  • 설명:
    • 운영자 및 관리 사용자 홈 디렉토리임.
    • 소스 코드 저장, 원격 접속 개발, 서버 직접 빌드가 필요한 경우의 작업 영역으로 사용할 수 있음.
    • 서비스의 최종 실행 경로는 /var/www 로 분리함.
    • nodev, nosuid 옵션은 기본 적용함.
    • noexec/home 을 작업 경로로 사용하지 않는 서버에서만 적용함.

/home 을 작업 경로로 사용하지 않는 경우

[SOURCE]  /home  xfs  defaults,nodev,nosuid,noexec  0 0

/home 을 작업 경로로 사용하는 경우

[SOURCE]  /home  xfs  defaults,nodev,nosuid  0 0

/var

  • 크기: 나머지 전체 용량
  • 타입: LVM
  • 파일시스템: XFS
  • 설명:
    • 주요 서비스 운영 영역임.
    • 다음 데이터가 위치함:
      • Node.js / Next.js 실행 디렉토리
      • DB 데이터
      • Redis 데이터
      • 로그 파일
      • 캐시 및 런타임 데이터
    • 디스크 사용량 증가 가능성이 가장 높은 영역이므로 고정 용량으로 충분히 확보함.
    • 디스크 Full 상황에서도 OS 영역을 보호하기 위해 반드시 분리함.

추가 보안 및 운영 권장 사항

  • /tmp 는 tmpfs + noexec 옵션으로 마운트함.
  • 서비스 실행은 /var 하위에서만 수행함.
  • /home 을 작업 경로로 사용하지 않는 서버라면 noexec 적용을 권장함.
  • SELinux 는 Enforcing 모드를 유지함.

2. 시스템 업데이트 정책

본 서버는 운영 안정성을 우선으로 하여 보안 업데이트 자동 적용 + 전체 업데이트 수동 적용 정책을 사용함.

2.1 보안 업데이트 자동 적용

Rocky Linux 9에서는 dnf-automatic을 사용하여
보안 패치만 자동으로 다운로드 및 적용함.

2.1.1. dnf-automatic 설치

sudo dnf install -y dnf-automatic

2.1.2. 설정 파일 수정

sudo vi /etc/dnf/automatic.conf

[commands] 블록을 다음과 같이 설정함.

[commands]
upgrade_type = security
random_sleep = 0
download_updates = yes
apply_updates = yes
reboot = no
  • 보안 업데이트만 자동 적용함.
  • 자동 재부팅은 수행하지 않음.

2.1.3. 타이머 활성화

sudo systemctl enable --now dnf-automatic.timer

상태 확인:

systemctl status dnf-automatic.timer
systemctl list-timers | grep dnf

2.2 전체 패키지 수동 업데이트

전체 패키지 업데이트는 관리자가 직접 수행함.

sudo dnf update

또는

sudo dnf upgrade

Rocky Linux 9 기준으로 dnf updatednf upgrade는 동일하게 동작함.

2.3 재부팅 필요 여부 확인

커널 또는 핵심 라이브러리 업데이트 후 재부팅 필요 여부를 확인함.

sudo needs-restarting -r

출력 결과가 있을 경우, 운영 일정에 맞춰 재부팅을 수행함.

2.4 운영 원칙 요약

  • 보안 패치는 자동 적용함.
  • 커널 재부팅은 수동으로 수행함.
  • 전체 업데이트는 점검 후 수동 실행함.
  • 주기적으로 보안 업데이트 현황을 점검함.
sudo dnf updateinfo list security

3. 기본 패키지 최소 구성

Rocky Linux minimal 설치 이후 운영 및 보안 설정을 위해 최소 필수 패키지만 설치함.

설치 대상 패키지

패키지 용도
htop 프로세스 모니터링
net-tools netstat 등 네트워크 점검
policycoreutils-python-utils SELinux 관리 도구

EPEL 저장소 추가

sudo dnf install -y epel-release

메타데이터 갱신

sudo dnf makecache

패키지 설치

sudo dnf install -y htop net-tools policycoreutils-python-utils

설치 확인

which htop netstat semanage

정상 경로가 출력되면 설치 완료 상태임.


4. /tmp tmpfs 적용 (보안 및 성능 강화)

운영 서버 보안 강화를 위해 /tmp 디렉토리를 디스크 기반이 아닌 메모리(tmpfs) 기반으로 운영함. 이를 통해 임시 파일을 통한 공격 지속성(persistence)을 차단하고, 디스크 오염 및 불필요한 I/O를 방지함.

적용 정책

  • /tmp는 tmpfs로 마운트함
  • 실행 파일 실행을 차단함 (noexec)
  • setuid 비활성화 (nosuid)
  • 디바이스 파일 생성 차단 (nodev)
  • sticky bit 유지 (mode=1777)
  • tmpfs 최대 크기는 메모리의 50%를 커널이 자동 관리하도록 설정함
  • 일부 패키지 또는 컴파일 과정에서 /tmp 실행이 필요한 경우 예외 정책을 검토함.

/etc/fstab 설정

sudo vi /etc/fstab

파일 하단에 다음 항목을 추가함.

tmpfs  /tmp  tmpfs  defaults,nodev,nosuid,noexec,mode=1777  0 0

size 옵션을 명시하지 않아 시스템 메모리(32GB 기준)의 최대 50%까지 동적으로 사용 가능함.

설정 적용

sudo systemctl daemon-reload
sudo mount -a

적용 확인

sudo findmnt /tmp
sudo df -h /tmp

정상 적용 시 /tmp의 파일시스템 타입이 tmpfs로 표시되어야 함.

운영 시 주의사항

  • 대용량 임시 파일이 필요한 경우 /var/tmp 사용을 권장함.
  • /tmp는 재부팅 시 자동 초기화됨.
  • 실행 파일은 /var 하위에서만 운영함.

5. /home mount 옵션 적용 기준

/home 은 운영자 및 관리 사용자 작업 영역임.
다만 서버 운영 방식에 따라 noexec 적용 여부가 달라질 수 있으므로
무조건 noexec를 넣지 않고, 작업 방식에 따라 구분 적용함.

기본 원칙

  • 서비스의 최종 실행 경로는 /var 하위로 유지함
  • /home/[User]/[ProjectName] 를 서버 직접 빌드, 원격 접속 개발, 검증 작업 경로로 사용할 수 있음
  • /home 을 단순 홈 디렉토리/소스 보관 영역으로만 쓰는 서버라면 noexec 적용 권장

/home 을 작업 경로로 사용하지 않는 경우

적용 목적:

  • 침해 발생 시 lateral movement 차단
  • 사용자 영역에서 악성 바이너리 실행 방지
  • 실행 경로와 작업 경로 강제 분리

적용 목표 옵션:

[SOURCE]  /home  xfs  defaults,nodev,nosuid,noexec  0 0

/home 을 작업 경로로 사용하는 경우

다음 중 하나라도 해당하면 /home noexec 를 적용하지 않음.

  • 서버에서 직접 build 가 필요한 경우
  • 원격으로 접속해서 코드 수정/검증을 수행하는 경우
  • 위 두 작업을 함께 수행하는 경우

적용 목표 옵션:

[SOURCE]  /home  xfs  defaults,nodev,nosuid  0 0

이 경우에도:

  • nodev, nosuid 는 유지함
  • 실제 서비스 실행은 /var/www 기준으로 유지함
  • /var/www 에서 직접 개발/빌드하지 않음

⚠️ 적용 전 반드시 디바이스 확인

서버마다 LVM 볼륨 그룹(VG) 이름이 다를 수 있으므로 fstab에 고정 경로를 그대로 사용하지 않음. 먼저 현재 /home의 실제 디바이스를 확인함.

lsblk -f

또는

findmnt /home

예시 출력:

TARGET SOURCE                 FSTYPE OPTIONS
/home  /dev/mapper/rl-home   xfs    rw,relatime

위 출력에서 SOURCE 값이 fstab에 사용할 실제 디바이스임.

/etc/fstab 설정 수정

sudo vi /etc/fstab

lsblk -f 또는 findmnt /home 로 확인한 SOURCE 값을 적용해야 함.

경우 1) /home 을 작업 경로로 사용하지 않는 서버

[SOURCE]  /home  xfs  defaults,nodev,nosuid,noexec  0 0

경우 2) /home 을 작업 경로로 사용하는 서버

[SOURCE]  /home  xfs  defaults,nodev,nosuid  0 0

설정 적용

sudo systemctl daemon-reload
sudo mount -o remount /home

적용 확인

sudo findmnt /home

작업 경로로 사용하지 않는 서버라면 다음 값이 포함되어야 함.

nodev,nosuid,noexec

작업 경로로 사용하는 서버라면 다음 값이 포함되어야 함.

nodev,nosuid

6. /var mount 보안 옵션 강화

운영 서버 보안 강화를 위해 /var에는 다음 mount 옵션을 적용함.

  • nodev
  • nosuid

noexec는 적용하지 않음 (서비스 실행 경로이기 때문임).

적용 방법

먼저 /var의 실제 디바이스 확인:

lsblk -f

또는

findmnt /var

/etc/fstab 설정 수정

sudo vi /etc/fstab

lsblk -f 로 확인한 SOURCE 값을 적용해야함.

[SOURCE]   /var   xfs   defaults,nodev,nosuid   0 0

설정 적용

sudo systemctl daemon-reload
sudo mount -o remount /var

적용 확인

sudo findmnt /var

옵션에 다음 값이 포함되어야 함.

nodev,nosuid

운영 시 주의사항

  • /home에서는 실행 파일 실행이 차단됨.
  • git, 코드 수정 등은 정상 동작함.
  • 일시적으로 실행이 필요한 경우에만 remount,exec 사용을 검토함.