TDCTF Academy Logo TDCTF ACADEMY

Service Management

Pendahuluan

Service management mengatur bagaimana daemon dan layanan sistem berjalan - termasuk konfigurasi, kontrol, dan keamanannya. Sistem operasi modern menyediakan berbagai opsi untuk menjalankan layanan dengan hak istimewa minimal (least privilege) dan isolasi yang kuat.

Systemd Unit Security

systemd adalah init system default di hampir semua distribusi Linux modern. File unit systemd (*.service) mendukung berbagai opsi hardening untuk membatasi kemampuan layanan:

ProtectSystem

Mengontrol akses tulis ke direktori sistem:

  • ProtectSystem=yes - /usr dan /etc read-only untuk layanan.
  • ProtectSystem=full - plus /boot dan /efi read-only.
  • ProtectSystem=strict - semua mount point read-only kecuali yang dikecualikan.

ProtectHome

Membuat direktori home read-only atau tidak terlihat:

  • ProtectHome=yes - /home, /root, /run/user read-only.
  • ProtectHome=read-only - sama tapi read-only.
  • ProtectHome=tmpfs - direktori home dipasang sebagai tmpfs kosong.

PrivateTmp

  • PrivateTmp=yes - layanan mendapat namespace /tmp dan /var/tmp sendiri.
  • Mencegah layanan melihat file temporary milik layanan lain.
  • Mencegah serangan symlink pada file temporary.

NoNewPrivileges

  • NoNewPrivileges=yes - mencegah layanan dan proses turunannya mendapatkan privilege baru.
  • Memblokir SUID/SGID, capabilities, dan seccomp yang memberikan privilege.
  • Sangat efektif mencegah privilege escalation dari celah di layanan.

Opsi Hardening Lainnya

Parameter Fungsi
CapabilityBoundingSet= Membatasi Linux capabilities yang dapat diperoleh
DeviceAllow= Membatasi akses ke device file
ProtectKernelModules= Mencegah load/unload kernel modules
ProtectKernelLogs= Mencegah akses ke kernel log ring buffer
ProtectClock= Mencegah perubahan system clock
MemoryDenyWriteExecute= Mencegah memori yang writable dan executable
SystemCallFilter= Membatasi syscall yang diizinkan (seperti seccomp)
RestrictAddressFamilies= Membatasi address family (AF_INET, AF_UNIX, dll)
RestrictNamespaces= Mencegah pembuatan namespaces baru

Contoh unit service yang di-hardening:

[Service]
ExecStart=/usr/bin/myapp
ProtectSystem=full
ProtectHome=yes
PrivateTmp=yes
NoNewPrivileges=yes
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
MemoryDenyWriteExecute=yes

Least Privilege for Services

Prinsip least privilege berarti layanan hanya mendapatkan hak minimal yang diperlukan:

  • Jangan jalankan layanan sebagai root jika tidak diperlukan.
  • Buat service account khusus (misal: useradd -r -s /bin/false appuser).
  • Gunakan User= dan Group= di systemd unit untuk menentukan identitas layanan.
  • Nonaktifkan login shell untuk service account (/sbin/nologin atau /bin/false).

Service Account

Service account adalah user sistem yang digunakan khusus untuk menjalankan layanan. Praktik terbaik:

  • Buat dengan --system atau -r: useradd -r -s /usr/sbin/nologin myservice.
  • Hindari password login.
  • Beri akses hanya ke file dan direktori yang diperlukan.
  • Gunakan filesystem permission dan ACL untuk membatasi akses.

Socket Activation

Socket activation adalah fitur systemd yang menunda startup layanan hingga ada permintaan koneksi. Manfaat keamanan:

  • Layanan tidak berjalan jika tidak digunakan (mengurangi attack surface).
  • systemd mendengarkan di port, bukan layanan (mengurangi risiko jika layanan memiliki bug).
  • Dapat menerapkan filter sebelum meneruskan koneksi ke layanan.
  • Mendukung lazy startup dan parallel startup.

Service File Hardening

Selain parameter systemd, praktik hardening lainnya:

  • ReadWritePaths= - batasi path yang writable.
  • InaccessiblePaths= - buat path tertentu tidak terlihat.
  • BindPaths=/BindReadOnlyPaths= - bind mount path tertentu.
  • UMask= - atur umask default untuk file yang dibuat layanan.
  • LimitNOFILE= - batasi jumlah file descriptor.
  • TimeoutStartSec= - timeout startup untuk mencegah hang.

Windows Service Security

Di Windows, layanan dikelola melalui Service Control Manager (SCM) menggunakan alat sc.exe atau PowerShell.

Service Account Types

Tipe Akun Penggunaan
LocalSystem Hak tertinggi, akses penuh ke sistem - hindari jika mungkin
LocalService Hak terbatas, akses jaringan sebagai anonymous
NetworkService Hak terbatas, akses jaringan sebagai komputer
Managed Service Account (MSA) Otomatis dikelola, password dirotasi AD
Group Managed Service Account (gMSA) MSA untuk multiple server
Virtual Account Akun lokal yang dibuat otomatis untuk layanan tertentu

Praktik Keamanan Windows Service

  • Jangan gunakan LocalSystem untuk layanan yang tidak perlu.
  • Gunakan gMSA untuk layanan di domain.
  • Setel Start Type ke Automatic (Delayed Start) jika tidak kritis.
  • Terapkan Service ACL untuk membatasi siapa yang bisa start/stop layanan.
  • Pantau event log untuk service failure.
  • Nonaktifkan layanan yang tidak diperlukan (reduce attack surface).

Kesimpulan

Keamanan layanan membutuhkan konfigurasi yang cermat sejak awal. systemd menyediakan tools hardening yang powerful seperti ProtectSystem, PrivateTmp, dan NoNewPrivileges. Prinsip least privilege harus diterapkan dengan membuat service account khusus, membatasi capabilities, dan menggunakan isolasi. Windows juga memiliki mekanisme serupa melalui service account types dan SCM. Layanan yang tidak diamankan dengan benar adalah salah satu vektor serangan paling umum.

PADA HALAMAN INI