Process Security
Pendahuluan
Process security mencakup mekanisme yang melindungi proses dari gangguan, penyusupan, dan kebocoran informasi. Sistem operasi modern menggunakan berbagai teknik isolasi dan pembatasan untuk memastikan setiap proses hanya dapat mengakses sumber daya yang diizinkan.
Process Isolation
Isolasi Berbasis UID
Setiap proses di Linux dijalankan dengan User ID (UID) tertentu. Proses dengan UID berbeda tidak dapat saling mengganggu secara langsung:
- Proses root (UID 0) memiliki akses penuh.
- Proses user biasa hanya dapat memanipulasi proses dengan UID yang sama.
- Signal, ptrace, dan debug hanya diizinkan untuk user yang sama (atau root).
PID Namespaces
PID namespace memungkinkan setiap container memiliki ruang PID independen. Proses di dalam container hanya melihat prosesnya sendiri, dengan PID mulai dari 1. Ini adalah komponen fundamental dari containerisasi Linux.
Linux Capabilities
Linux capabilities membagi hak istimewa root menjadi unit-unit kecil yang independen. Alih-alih memberikan akses root penuh, administrator dapat memberikan capability spesifik:
| Capability | Fungsi |
|---|---|
CAP_NET_BIND_SERVICE |
Mengikat port di bawah 1024 |
CAP_SYS_ADMIN |
Berbagai operasi admin (powerful - gunakan hati-hati) |
CAP_DAC_OVERRIDE |
Melewati permission file |
CAP_KILL |
Mengirim sinyal ke proses mana pun |
CAP_SETUID |
Mengubah UID proses |
Menggunakan setcap untuk memberikan capability ke
binary:
setcap cap_net_bind_service=+ep /usr/bin/myapp
Seccomp
Seccomp (Secure Computing Mode) adalah fitur kernel Linux yang membatasi syscall yang dapat dilakukan proses. Mode:
- Seccomp strict - hanya read, write, exit, sigreturn yang diizinkan.
- Seccomp filter (BPF) - aturan kustom menggunakan BPF (Berkeley Packet Filter) untuk mengontrol syscall dan argumennya.
Seccomp digunakan secara luas di container runtime (Docker, containerd) dan browser (Chrome).
Namespaces
Namespaces adalah fitur Linux yang mengisolasi dan memvirtualisasi sumber daya sistem. Tipe namespace:
| Namespace | Sumber daya yang diisolasi |
|---|---|
| PID | Proses ID |
| Network | Interface jaringan, routing, iptables |
| Mount | Mount point filesystem |
| User | UID dan GID (termasuk mapping UID non-root ke root di namespace) |
| UTS | Hostname dan domain |
| IPC | System V IPC, POSIX message queues |
| Cgroup | Hierarki cgroup |
Containers dan Cgroups
Container menggabungkan namespaces (isolasi) dan cgroups (resource control):
- cgroups - membatasi penggunaan CPU, memori, I/O disk, dan jaringan per grup proses.
- cgroups v2 - hierarki tunggal yang lebih sederhana dan aman.
- Container runtime menggunakan cgroup untuk mencegah satu container menghabiskan seluruh sumber daya host.
Process Monitoring
Pemantauan proses secara real-time sangat penting untuk mendeteksi aktivitas mencurigakan:
| Perintah | Fungsi |
|---|---|
ps aux |
Menampilkan snapshot semua proses |
ps auxf |
Menampilkan proses dalam format pohon |
top |
Monitoring real-time interaktif |
htop |
Top dengan antarmuka yang lebih kaya (warna, scrolling) |
lsof |
Menampilkan file yang dibuka oleh proses |
lsof -i :80 |
Menampilkan proses yang menggunakan port 80 |
strace -p PID |
Melacak syscall yang dilakukan proses |
pstree |
Menampilkan hierarki proses |
Penggunaan: lsof -i dapat mendeteksi backdoor yang
mendengarkan port, ps aux dapat menemukan proses
mencurigakan dengan nama aneh.
Defense Against Process Injection
Memory Injection
Process injection adalah teknik memasukkan kode jahat ke dalam proses yang sedang berjalan. Vektor umum:
- DLL injection (Windows) - memuat DLL jahat ke proses target.
- Ptrace injection (Linux) - menggunakan ptrace untuk memodifikasi memori proses.
- Shellcode injection - menyuntikkan kode mesin langsung ke memori proses.
Mitigasi
- ASLR (Address Space Layout Randomization) - mengacak alamat memori proses.
- NX bit (No-Execute) - menandai halaman memori tertentu sebagai non-eksekusi.
- SELinux/AppArmor - membatasi antarmuka ptrace dan /proc access.
- Yama Security Module - membatasi
ptrace hanya ke proses anak (via
ptrace_scope). - Windows Defender Exploit Guard - Controlled Folder Access, Network Protection.
- CFG (Control Flow Guard) - melindungi indirect call di Windows.
Kesimpulan
Process security adalah area yang kompleks dan terus berkembang. Isolasi melalui UID dan namespaces, pembatasan melalui capabilities dan seccomp, monitoring proaktif, serta pertahanan terhadap injection adalah komponen kunci. Containerisasi adalah contoh nyata penerapan semua prinsip ini secara terintegrasi.