[WebServer] Mengaktifkan Fitur Kompresi Webserver

nginx
Salah satu bentuk dukungan pemilik web terhadap para pengaksesnya adalah : mempermudah proses pembukaan web. Mempermudah itu dapat berarti banyak hal:

  1. Mengaktifkan tampilan yang responsif terhadap lebar layar dan jenis media
  2. Memperingan load web, selain cepat diakses juga mengurangi pemborosan quota selular pengakses

Continue reading “[WebServer] Mengaktifkan Fitur Kompresi Webserver”

[FlashBackBlog] Menggunakan nGinX sebagai Reverse Proxy

Nginx, adalah sebuah webserver opensources yang dikembangkan dari keturunan Apache. Nginx, seperti apache, memiliki fungsi melakukan publikasi dokumen dalam sistem, ke sisi publik, melalui protokol HTTP atau port default 80. Nginx, adalah singkatan dari Engine-X. nGinX. Memiliki tingkat keringanan eksekusi dokumen yang lebih kencang daripada Apache. Namun tentu saja beberapa kekurangannya adalah kelengkapan modul yang diperlukan oleh web, kalah oleh Apache. Namun demikian untuk web-web biasa, atau sistem informasi biasa, tidak terlalu membutuhkan modul-modul terlalu lengkap.
Continue reading “[FlashBackBlog] Menggunakan nGinX sebagai Reverse Proxy”

[Flash Back] VirtualHost Apache dan Nginx

virtualhost-block

Webserver, entah apache atau nginx dan lain sebagainya akan mengenal istilah ServerName atau nama panggil. Sebuah server yang dipanggil dengan nama tertentu, misal namaserver.com, akan terjadi proses pengambilan dokumen di dalam webserver. Lokasi dokumen tersebut dinamakan DocumentRoot. Oleh karena itu dalam server apache, akan muncul sintaks konfigurasi seperti berikut:

Continue reading “[Flash Back] VirtualHost Apache dan Nginx”

Disable Handler PHP pada Uploadable Directory Apache

Penggunaan CMS memang memudahkan seseorang membuat web. CMS membantu sekali para wirausahawan muda dalam membuat usaha di bidang web. CMS digunakan oleh para pengembang mulai dari profesional hingga kelas pemula sekalipun. Hanya saja, kadang jika tidak dilengkapi dengan kehati-hatian penggunaan CMS dan plugins, CMS dapat menjadi bumerang bagi pemilik web.

Para cracker pemula, bersenjatakan dork yang dipublish pada situs-situs vulnerability publish, mencari bug-bug CMS dan plugins, selanjutnya melakukan cracking web, dan melakukan ritual vandalisme di sana. Plugins, memang memudahkan seseorang dalam melakukan custom webnya. Namun plugins juga menjadi celah besar kalau tidak malah masalah yang sesungguhnya. Salah satu celah tersebut dapat dimanfaatkan oleh para cracker.
Continue reading “Disable Handler PHP pada Uploadable Directory Apache”

[Tips] Membuat Multi Subdomain dan Memetakan dalam Database

Kita tentu sering menggunakan fasilitas blog dengan support subdomain, seperti wordpress.com, atau blogger.com dengan layanan blogspot.com dan lain sejenisnya. Ketika mendaftarkan sebuah blog, maka kita akan diberikan sebuah blog dengan subdomain seperti yang kita daftarkan, seperti contoh: http://bimosaurus.wordpress.com. Sedangkan kita tahu bahwa biasanya proses pembuatan subdomain atau domain saja memerlukan waktu propagasi yang cukup lama, namun dalam pembuatan blog, bisa langsung. Kok bisa?

 

DNS

Untuk masalah DNS kuncinya adalah pada DNS pointernya. Selama DNS Server kita mendukung penggunaan wilcard DNS, maka tidak akan masalah. Setiap subdomain akan langsung diarahkan ke web kita tersebut. Wilcard DNS akan ditandai dengan tanda *. Untuk anda pengguna linux console dapat melakukan pointing wilcard seperti demikian

dns

Disana artinya bahwa untuk seluruh subdomain dari domain anuanucoba.com akan diarahkan ke IP Address 111.111.222.222. Artinya segala akses semua subdomain akan diarahkan pada IP Address tersebut. Bisa juga IP tersebut adalah komputer yang digunakan untuk DNS itu sendiri. Selanjutnya, setelah data tersebut terarah ke IP Address itu, segala request web akan dilayani oleh Webserver (Apache, LightHTTPD, HTTPD dsb). Setelah membentuk wilcard DNS, proses propagasi hanya untuk propagasi wilcardnya. Sehingga setelah proses propagasi (penyebaran domain ke server server DNS) itu selesai, seluruh subdomain akan dianggap sama dengan wilcard DNS. Untuk yang biasa dengan setting WordPressMU tentu telah terbiasa cara ini.

 
Continue reading “[Tips] Membuat Multi Subdomain dan Memetakan dalam Database”

[Tips Trick] Bisakah Aplikasi Web Menjalankan File yang Dimiliki root Linux?

Linux, dirancang sebagai sistem operasi yang aman. Keamanan Linux didukung dengan beberapa fitur dasarnya antara lain ketatnya pengaturan akses, ijin / permission dan kepemilikan / owner. User pemilik hak tertinggi adalah super-user yaitu root. User root memang dirancang untuk bertugas terhadap administrasi-admistrasi dan pengaturan-pengaturan dasar bagi lancarnya sistem. Sebuah pengaturan yang ketat biasanya akan berpengaruh terhadap operasional file di tingkat user biasa. Sedangkan biasanya kenyamanan penggunaan akan mengakibatkan celah keamanan. Sehingga dengan demikian seorang sistem administrator harus bijak dalam mengeluarkan keputusan pengaturan sistem.

Dalam sebuah sistem server, layanan web akan dilayani oleh web server. Pada umumnya dalam linux ditangani oleh Apache, LightHTTPD, atau juga Nginx ( n-gin-x / baca engine-x). Seluruh webserver ini akan dihidupkan oleh sistem atau oleh root. Namun demikian webserver ini akan berjalan dengan mode bukan root. Biasanya untuk Linux keturunan RedHat, webserver akan berjalan sesuai namanya yaitu sebagai user apache, atau user nginx atau kadang diset juga sebagai user nobody. Sedangkan berbasis Debian, seperti ubuntu, mint, akan berjalan dengan nama www-data. Dengan demikian, seluruh file yang akan dipublish ke web harus memiliki properti ijin yang boleh diakses oleh user webserver tersebut. Jika saya menggunakan ubuntu, maka biasanya dalam DocumentRoot sistem komputer saya akan memiliki hak akses seperti berikut :

 

Dalam contoh diatas, terdapat beberapa notasi atau urutan properti dari sebuah direktori/folder atau file. Tentang hal ini akan dibahas di lain posting.

Sebuah file yang dimiliki oleh root, jika user lain tidak diberi akses baik eksekusi, baca maupun modifikasi, maka user sistem tersebut akan gagal melakukan pembacaan file. Begitu juga dengan user apache/web. Ketika user web gagal, maka file tersebut tidak akan tampil di browser karena apache gagal melakukan pembacaan user. Dengan demikian sangat disarankan kepemilikan web adalah milik webserver user.

 

Mengapa webserver tidak boleh berjalan sebagai root?

Dengan alasan keamanan, webserver memang tidak boleh berjalan sebagai root. Sebuah aplikasi web dinamis kadang tanpa disadari, mengandung bug atau kesalahan pemrograman yang berbahaya. Sehingga ketika sebuah intrusi hacker masuk ke dalam web, hacker tersebut dapat melakukan apa saja setingkat dengan root. Hal ini sangat berbahaya. Misalkan adalah jika terdapat script yang mengijinkan user melakukan upload file, dan ternyata file tersebut adalah suatu tools yang memungkinkan adanya operasional sistem, maka jika user web adalah root, sangat mungkin sang hacker dapat membuat operasional penuh terhadap sistem, seperti menghapus seluruhnya, mematikan komputer, mengganti konfigurasi.

 

Dapatkah webserver dipaksa untuk berjalan sebagai root?

Secara teknis bisa saja. Namun sangat beresiko. Proses penggantian user yang akan dijalankan oleh webserver ada dalam konfigurasi webserver. Untuk apache terdapat pada apache.conf (debian) atau httpd.conf, untuk Redhat, Slackware, CentOS dll, yaitu pada bagian ini :

namun sekali lagi tidak disarankan untuk mengganti menjadi user pelaku administrasi, terutama root.

 

Apakah berarti aplikasi web tidak dapat menjalankan pekerjaan-pekerjaan sistem?

Dalam kenyataannya, aplikasi web sering harus menjalankan : SMS Gateway, Menghidupkan dan mematikan webserver secara webbase, dan lain sebagainya. Kadang juga harus melakukan penggantian password user untuk satu alasan. Dapatkah? Ya, dapat. Yaitu dengan menyiasati dengan memanfaatkan file konfigurasi root /etc/sudoers/. Sudo adalah sebuah perintah yang artinya superuser do, atau dikerjakan dengan mode superuser. User yang dapat melakukan sudo adalah user yang terdaftar dalam /etc/sudoers ini. Dengan beberapa configuration maka sudoers dapat juga dilakukan tanpa password atau dengan password. Kira-kira isi sudoers adalah seperti berikut:

 

 

BERDEAL ANTARA APLIKASI DENGAN SUDOERS

Misal saya memerlukan akses root untuk menghidupkan sebuah server sms gateway. Sedangkan server tersebut akan dihidupkan dengan mode root dengan perintah :

Maka saya akan membuat script bernama sms.php yang kira-kira sebagai berikut:

 

 

Dengan perkiraan operasional adalah jika saya akan menghidupkan server sms adalah

 

 

Script itu hampir akan susah dijalankan oleh webserver. Maka saya akan mengganti script tersebut sebagai berikut :

  1. Membuat sebuah script shell yang berfungsi menghidupkan sms
  2. Membuat permission executable terhadap shell dan dapat diakses dan dieksekusi oleh webserver
  3. Mengganti konfigurasi sudoers
  4. Membuat script php yang akan menjalankan bash shell administrator sms.

 

SCRIPT SHELL

 

PERMISSION

 

KONFIGURASI SUDOERS

 

 

 

SCRIPT PHP

 

 

 

Dengan trik seperti ini, maka kita tetap dapat membuat aplikasi web yang bertujuan untuk melakukan operasional / administrasi yang dapat dilakukan oleh root secara terbatas dan ketat. Yaitu dengan membuat apache/webserver memiliki hak akses setara root untuk menghidupkan sms melalui file /opt/smsstart.sh Namun, untuk hal ini tetap membutuhkan kehati-hatian dalam berprogramming.

Sekian, sekedar tulisan dan sekedar berbagi, semoga bermanfaat.