Menjalankan Virtual Host dengan UID/GID Terpisah di Apache2

Spread the love

Pada umumnya setiap virtual host memiliki konfigurasi yang berbeda dan terletak pada direktori yang terpisah. Tidak menutup kemungkinan dalam menjalankan environment dari virtual host membutuhkan permission yang berbeda-beda pula. Hal ini tergantung pada kepemilikan berkas file yang ditandai dengan ID user dan group tertentu. Padahal secara default, apache2 ketika menjalankan fungsinya menggunakan user www-data yang mana tidak mesti setiap virtual host memiliki privilege yang sama.

Business vector created by studiogstock – www.freepik.com

Instalasi

Konfigurasi ini berdasarkan environment ubuntu / linux, sedangkan OS lain kemungkinan besar memiliki tahapan yang berbeda.

Pertama, pastikan Anda memiliki akses root. Selanjutnya, pastikan instalasi mpm-itk telah terpasang.

sudo apt install libapache2-mpm-itk

Pastikan module mpm_itk telah diaktifkan.

sudo a2enmod mpm_itk

Berikut contoh tampilan command line ketika instalasi dan proses mengaktifkan module mpm_itk.

Setting up libapache2-mpm-itk (2.4.7-04-1) ...
apache2_invoke: Enable module mpm_itk
[email protected]:~# a2enmod mpm_itk
Considering dependency mpm_prefork for mpm_itk:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Module mpm_itk already enabled
[email protected]:~#

Pengaturan VHost

Jika module mpm_itk telah berhasil dipasang dan diaktifkan. Konfigurasi selanjutnya adalah menambahkan UID dan GID dalam file konfigurasi virtual host.

<IfModule mpm_itk_module>
  AssignUserId <user> <group>
 </IfModule> 

Perhatikan bagian <user> dan <group>. Parameter tersebut harus diisi dengan user dan group yang ada dalam sistem. Misalnya, jika dalam sistem terdapat user reyzeal yang secara default memiliki group reyzeal juga, maka bentuknya menjadi:

<IfModule mpm_itk_module>
  AssignUserId reyzeal reyzeal
 </IfModule> 

Contoh file lengkap Virtual Host

<IfModule mod_ssl.c>
 <VirtualHost *:443>
 ServerName eternal-loops.com
 ServerAdmin [email protected] 
 DocumentRoot /home/eternal-loops/dir
 <Directory /home/eternal-loops/dir>
         Options Indexes FollowSymLinks
         AllowOverride All
         Require all granted
         Allow from all
 </Directory>
 <IfModule mpm_itk_module>
 AssignUserId eternal eternal
 </IfModule> 
 Include /etc/letsencrypt/options-ssl-apache.conf
 SSLCertificateFile /etc/letsencrypt/live/eternal-loops.com/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/eternal-loops.com/privkey.pem
 </VirtualHost>
 </IfModule> 

Jika konfigurasi virtual host telah berhasil diubah, silahkan simpan dan restart apache2.

sudo systemctl restart apache2

Testing

Jika suatu virtual host memiliki privilege tertentu sedangkan Apache2 masih menjalankannya sebagai www-data, kemungkinan terjadi error sebagai berikut:

403 karena limitasi akses dari perbedaan level user

Apabila module mpm_itk telah diatur sedemikian rupa sehingga Apache2 menjalankannya dengan user dan group tertentu, maka seharusnya virtual host tersebut dapat berjalan sebagaimana mestinya.

Untuk benchmark yang dilakukan oleh Stuart. Module mpm_itk lebih baik daripada suexec dan suphp dalam menangani permasalahan security dalam shared hosting ini. Namun masih kalah dengan module mpm_peruser dari segi performa.

Kesimpulan

Module mpm_itk dapat mengatur virtual host agar dapat menyesuaikan environment masing-masing user. Meskipun secara performa tidak jauh lebih baik daripada mpm_peruser, namun proses konfigurasinya jauh lebih mudah daripada mpm_peruser. Jika beban penggunaan tidak begitu berarti, maka mpm_itk sudah cukup mumpuni untuk digunakan dalam kasus ini.

Leave a Reply

Your email address will not be published. Required fields are marked *