Pengukuhan Apache Virtual Hosts (Bahagian 1)

Shared web hosting walau pun tanpa pengukuhan Apache Virtual Hosts dilaksanakan, server dipasang dengan privilege pengguna biasa bagi tujuan keselamatan.

Sebagai contoh, akaun pengguna ‘apache’ digunakan oleh Apache dalam sistem pengoperasian Linux berasaskan RedHat dan CentOS manakala  ‘www-data’ digunakan oleh Ubuntu.  Konfigurasi pemasangan seperti ini adalah pada fail-fail konfigurasi  dengan direktif seperti berikut:

CentOS 6.x dan ke atas:

/etc/httpd/conf/httpd.conf

#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
#  . On SCO (ODT 3) use "User nouser" and "Group nogroup".
#  . On HPUX you may not be able to use shared memory as nobody, and the
#    suggested workaround is to create a user www and use that user.
#  NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
#  when the value of (unsigned)Group is above 60000;
#  don't use Group #-1 on these systems!
#
User apache
Group apache

Ubuntu Linux 12.x dan ke atas:

/etc/apache2/apache2.conf

…
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

/etc/apache2/envvars

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

 

Konfigurasi ini membolehkan proses Apache web server dijalankan dengan privilege akaun pengguna seperti yang dipasang di atas.  Seterusnya, fail-fail laman web juga perlu dipunyai oleh pengguna yang sama bagi membolehkan server menyediakan sumber laman web kepada pengguna.  Keseluruhan pemasangan dan konfigurasi adalah seperti di gambarajah berikut:

 

Tujuan utama pemasangan sebegini adalah bagi mengurangkan impak jika web server berjaya diceroboh.  Penceroboh hanya boleh menggunakan privilege pengguna ini sahaja tetapi tidak sebagai ‘root’ atau penyelenggara sistem yang boleh digunakan untuk mengawal keseluruhan  sistem pengoperasian.

Walau bagaimana pun, pemasangan seperti ini boleh mendatangkan masalah bagi penggunaan shared web hosting bagi menghoskan lebih dari satu laman web dalam satu server (Rujuk artikel Pasang Apache Virtual Hosts di Ubuntu 14.x dan ke Atas).

Masalah utamanya adalah web server dan fail-fail pelbagai laman web dipasang dengan menggunakan satu privilege pengguna sahaja seperti berikut:

 

Berdasarkan di atas,  kedua-dua fail laman web1.com dan web2.com dipunyai oleh pengguna dan privilege yang sama.

Apabila penceroboh berjaya menceroboh laman web1.com, laman web2.com juga terdedah kepada ancaman yang sama walaupun kelemahan (vulnerability) hanya dikesan pada laman web1.com.  Ini bermakna, jika terdapat 20 laman web dalah satu server, kesemua laman web dengan konfigurasi virtual hosts seperti ini adalah terdedah kepada ancaman pencerobohan walau pun hanya satu laman web sahaja yang mempunyai kelemahan.

Berdasarkan pengalaman, keadaan ini telah menyebabkan pelbagai kes mass web defacement telah berlaku kepada banyak organisasi yang menggunakan konfigurasi seperti ini.

Masalah ini boleh diatasi dengan menjalankan proses web server dan memasang fail-fail laman web dengan dengan ID pengguna yang berbeza antara satu sama lain.  Ini boleh dilakukan dengan memasang Apache web server server dengan modul fcgid (mod_fcgid) dan SuEXEC (mod_suexec) seperti berikut:

 

Pemasangan modul-modul ini membolehkan proses web server dijalankan dengan ID yang berbeza.  Begitu juga dengan fail-fail laman web yang boleh dimiliki dengan pengguna yang berasingan.  Pemasangan ini boleh menghalang penceroboh yang menceroboh salah satu laman web dari menceroboh laman web yang lain.  Berikut merupakan komponen-komponen yang terlibat dalam dokumen ini:

No. Komponen Keterangan
1 Web Server Apache Server paling popular bagi menghoskan laman web berasaskan sumber terbuka yang boleh dimuat turun secara percuma di Internet.  Apache boleh dipasang dalam pelbagai sistem pengoperasian moden seperti UNIX, Linux dan Microsoft Windows.  Laman web rasmi Apache adalah di http://httpd.apache.org
2 Modul suEXEC Membolehkan program atau modul luaran Apache (seperti CGI dan modul PHP) dijalankan dengan privilege lain (atau privilege separation)
3 Modul FCGID (mod_fcgid) Evolusi CGI yang membenarkan proses CGI dijalankan dengan lebih pantas.  Modul ini akan menjalankan modul php secara CGI.
4 Modul PHP Modul bahasa pegaturcaraan berasaskan skrip (scripting language) bagi membangun aplikasi  laman web yang lebih dinamik.  Modul yang dijalankan adalah php-cgi dan bukannya mod_php.

Artikel ini akan menerangkan langkah-langkah pemasangan konfigurasi Apache2, SuEXEC, PHP dan mod_fcgid.  Pemasangan dan konfigurasi  adalah bagi menghoskan 2 laman web contoh dalam satu server iaitu web1.com dan web2.com seperti artikel yang telah ditulis sebelum ini. Alamat bagi laman web1.com dan web2.com adalah seperti berikut:

  • Web1 – http://web1.com dengan akaun pengguna/privilege web1
  • Web2 – http://web2.com dengan akaun pengguna/privilege web2

Nantikan artikel bagaimana pengukuhan Apache Virtual Hosts dilaksanakan dalam bahagian ke-dua.  Contoh pengukuhan Apache VirtualHosts ini akan menggunakan sistem pengoperasian Ubuntu Linux 14.04 atau yang terkini.

Leave a Reply

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