VM에 디폴트로 설치되는 백해무익한 서비스를 제거하자!

Linux OS 배포판 제작사(Red Hat, Canonical 등)는 “어떤 환경에 설치되든 일단 하드웨어가 안 잡혀서 먹통이 되는 일은 막자”라는 완벽한 호환성(범용성)을 추구하다 보니, ISO 이미지를 사용해서 Linux VM 설치 시 “Minimal Install로 설치하지 않으면” VM 환경에서는 전혀 쓸모없는 물리 하드웨어용/데스크톱용 서비스들이 기본값(Default)으로 몽땅 들어가게 설치합니다. Linux VM을 생성한 직후 사용하지 않는 불필요한 데몬들을 정리(Hardening)해야 하는 이유는 단순히 디스크 용량을 아끼는 차원을 넘어, 엔터프라이즈 인프라의 안정성, 보안성, 그리고 자원 효율성을 확보하기 위한 필수적인 작업이기 때문입니다. 추가적인 취약점 점검 및 Hardening이 필요하시면 이 글을 읽어보세요.

  • pulseaudio:
    사운드 출력이 없는 VM 환경에서 로그인 알림음 등을 대기하기 위해 켜진 백해무익한 오디오 데몬입니다.
  • cups.service (Common UNIX Printing System):
    리눅스용 프린터/인쇄 서버 데몬입니다. 데이터베이스나 웹 서버가 있는 가상머신에서 종이 문서를 인쇄할 일은 절대 없습니다. 심지어 CUPS는 과거부터 취약점(RCE 등)이 주기적으로 발견되는 대표적인 보안 단골 타깃입니다.
  • avahi-daemon.service (mDNS / Zero-Configuration):
    홈 네트워크나 Mac 환경처럼 동일 네트워크 내의 프린터나 공유 폴더를 자동으로 탐색(Plug and Play)해 주는 데몬입니다. 고정 IP와 라우팅이 완벽히 통제되는 상용 VM 환경에서는 내부 장치를 자동 스캔할 필요가 전혀 없습니다. 불필요한 UDP 멀티캐스트 트래픽을 유발하여 네트워크 대역폭만 미세하게 낭비합니다.
  • smartd.service (SMART Daemon):
    디스크(SSD/HDD)의 하드웨어적 불량, 온도, 수명을 모니터링하여 디스크 장애를 예측하는 데몬입니다. VM 내부에서 보는 디스크는 하이퍼바이저가 가상화해 준 가상 디스크(vDisk)입니다. 실제 물리 디스크의 건강 상태는 Sangfor HCI 솔루션이 모니터링하므로, VM 안의 smartd는 감시할 진짜 하드웨어가 없어 에러 로그만 뱉거나 헛돕니다.
  • irqbalance.service:
    멀티코어 환경에서 하드웨어 인터럽트(IRQ) 요청을 여러 CPU 코어에 골고루 분산해 주는 데몬입니다. 경우에 따라서 vCPU 개수가 2개~4개 정도로 적은 일반적인 VM 환경이나, 상위 하이퍼바이저가 스케줄링을 강력하게 통제하는 환경에서는 오히려 이 데몬이 vCPU 스케줄링을 방해하여 대기 시간(Steal Time)을 늘리는 부작용이 있습니다.(물리 DB 서버나 대규모 트래픽을 치는 고성능 VM을 제외하고는 끄는 것이 안정적입니다.)
  • kdump.service:
    커널 크래시(블루스크린 등)가 발생했을 때 디버깅용 메모리 덤프 파일(vmcore)을 생성하는 서비스입니다. 덤프를 생성하기 위해 부팅될 때부터 수백 MB의 메모리(RAM)를 미리 예약해서 격리해 둡니다. 커널 소스코드를 직접 분석할 엔지니어가 아니라면, 아까운 VM 시스템 메모리만 몇백 메가씩 낭비하게 됩니다.
  • postfix.service / sendmail.service:
    리눅스 자체 메일 전송(SMTP) 서버입니다. 서버 내부 시스템 알림 메일을 외부로 발송할 목적이 없다면 켜둘 이유가 없습니다. 방치될 경우 스팸 메일 발송의 경유지(Open Relay)로 악용될 소지가 있습니다.
  • packagekit.service:
    리눅스 시스템에서 일반 사용자들이 GUI(데스크톱 화면) 환경에서 소프트웨어를 쉽게 설치, 업데이트, 제거할 수 있도록 도와주는 백그라운드 패키지 관리 추상화 레이어입니다. 사내 폐쇄망이거나 인터넷 연동이 안 되는 환경(Sangfor HCI VM 내부 등)에서도 매일 새벽마다 무조건 외부 업데이트 서버에 접속을 시도(get-updates)합니다. 이 과정에서 불필요한 CPU/메모리 자원이 소모되고 에러 로그가 계속 쌓여 디스크를 더럽힙니다.
  • libvirtd.service:
    하이퍼바이저의 가상 네트워크(브릿지)를 관리하는 데몬입니다. 가상화를 ‘당하는’ 입장인 VM 내부에서는 가상화를 ‘제어하는’ 툴인 libvirtd가 존재할 이유가 전혀 없으므로, 중지하고 마스킹(mask) 처리하는 것이 인프라 최적화의 기본입니다.
  • dnsmasq.service:
    하위 장치들에게 IP와 DNS를 배포하는 배포자 역할을 합니다. 하지만 단독으로 작동하는 VM 내부에는 IP를 나눠줄 하위 장치나 하위 가상머신이 존재하지 않습니다. 이 데몬이 켜져 있으면 외부나 내부에서 요청을 받기 위해 53번(DNS)과 67번(DHCP) 포트를 열고 백그라운드 메모리를 상시 점유합니다. 쓰지도 않는 포트가 열려 있는 것 자체가 악의적인 공격자에게 타깃을 제공하는 보안 취약점이 됩니다.
  • wpa_supplicant.service:
    무선 랜(Wi-Fi) 연결 관리 데몬입니다. 가상 가속 랜카드(VirtIO)를 통한 유선 네트워크만 사용하는 VM에서는 무의미합니다.
#!/bin/bash

pkill -f pulseaudio
chmod -x /usr/bin/pulseaudio 2>/dev/null

for service in cups avahi-daemon smartd irqbalance kdump postfix packagekit libvirtd dnsmasq wpa_supplicant; do
    systemctl disable --now $service 2>/dev/null
    systemctl mask $service 2>/dev/null
    pkill -f $service 2>/dev/null
    echo "====> $service 서비스 완벽 봉인 완료"
done

You may also like...

답글 남기기

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