SystemdSandboxing

Systemd memungkinkan pengguna untuk memperkuat keamanan systemd service units. Karena keterbatasan teknis dan alasan keamanan, systemd sandboxing tidak berlaku untuk layanan systemd pengguna (systemd user) karena upaya melakukan hal ini justru akan membuka peluang priviledge escalation. Hal ini tidak berlaku untuk units yang menggunakan User=.

Karena sifat tipe unit lainnya, hanya unit layanan yang dapat diperkuat/dibuat sandbox dalam pengertian tradisional. Lihat systemd.exec(5) untuk informasi lebih lanjut.

Umum

Karena penguatan sandboxing secara efektif membatasi aplikasi, maka tidak mungkin untuk menggunakan semua arahan sandboxing. Sebuah server web misalnya tidak boleh menggunakan ProtectNetwork=true` karena biasanya membutuhkan akses jaringan.

systemd-analyze security unit menghasilkan skor untuk unit yang menunjukkan semua arahan yang digunakan, yang dapat membantu untuk menentukan pengaturan apa yang akan dicoba selanjutnya.

Peringatan: Skor ini sedikit menyesatkan. Program sederhana seperti Wikipedia:Hello world dapat mencapai skor yang nyaris sempurna. Tidak ada program yang dapat menggunakan semua pengaturan sandboxing.

Sayangnya, pesan kesalahan dari systemd tentang kesalahan konfigurasi yang berkaitan dengan sandboxing terkadang tidak jelas dan/atau menyesatkan. Mengatur level log untuk sementara ke debug dapat membantu mendapatkan informasi yang benar-benar relevan.

 systemctl log-level debug

Direktif umum

Sebagian besar konfigurasi ini dapat diterapkan pada sebagian besar aplikasi tanpa menyebabkan terlalu banyak masalah.

Tanpa konfigurasi khusus

Pengaturan boolean sederhana yang dapat diaktifkan atau tidak.

DirektifPengaruh1Dampak2Catatan
LockPersonality SedangRendah 
MemoryDenyWriteExecute Sedang3SedangTidak kompatibel dengan kode yang dibuat secara dinamis pada saat runtime
NoNewPriviledges TinggiRendah 
PrivateDevices MediumRendah /dev/null dan lainnya yang serupa akan tetap di sana
PrivateNetwork TinggiSangat tinggiMelarang semua akses ke jaringan
PrivateTmp SedangRendah 
PrivateUsers TinggiTinggi 
ProtectClock 4RendahSedang5 
ProtectControlGroups 4SedangRendahSangat direkomendasikan karena tidak ada satupun layanan yang boleh menulis ke sana
ProtectHostname 4RendahRendah 
ProtectKernelLogs 46RendahRendah 
ProtectKernelModules 4SedangRendah 
ProtectKernelTunables 4RendahRendah 
RestrictRealtime RendahRendahDapat mencegah denial-of-service
RestrictSUIDSGID SedangRendahBaik digunakan bersama NoNewPriviledges
1 Seberapa efektif direktif itu

2 Kemungkinan direktif dapat merusak sesuatu

3 Dapat ditingkatkan dengan SystemCallFilter

4 Warning: Footnote 'protect' referenced but not defined.

5 Beberapa pengguna melaporkan bahwa smartctl tidak bisa digunakan saat direktif ini diaktifkan, tapi seharusnya bukan masalah besar

6 Bahkan saat menjalankan dengan User= , systemd seccomp filters yang dapat sebagai contoh menangkap aplikasi yang menjalankan sudo modprobe saat ProtectKernelModules diatur ke true .

Referensi

ArchWiki: User:NetSysFire/systemd sandboxing


Kategori.Linux