Basic Monitoring Server Tahap 3 (Hardening PHP Security)

Selamat siang semuanya, kemarin kita sudah membahas panjang lebar bagaimana mengamankan syn flooding sehingga banjir PING tidak terjadi kepada server, bagi yang belum silahkan kembali ke pelajaran Hardening Network Packet .

Pada kursus online kali ini WhiteCyber Research & Development Team akan berbagi tips tentang hardening PHP . PHP pun harus kita buat dan setting secara secure. 

Membuat Hardening PHP

Yang kita lakukan adalah mengedit php.ini pada setting PHP yang ada di server.

# sudo mc -e /etc/php5/apache2/php.ini

Edit pada bagian dibawah ini :

disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On
Sampai pada setting seperti ini saja, server anda sudah lumayan aman melebihi standard !

Sekarang bagi yang sudah expert WhiteCyber Reseach & Development Team akan berbagi tips selanjutnya bagaimana membuat jauh lebih aman lagi, masih dengan tema yang sama mengedit php.ini.

* Harap diperhatikan, bila ada setting yang tidak sesuai dengan web sintaks PHP anda, mohon dikembalikan ke setting awal sehingga tidak terjadi kerusakan pada tampilan webanda. 


 JANGAN LUPA DIUJI COBA DULU SATU PERSATU SAAT SETTING MODUL !!!
Dengan Cara restart apache anda dan lihat di website apakah terjadi perubahan / error ! 

sudo /etc/init.d/apache2 restart



1. Allow_url_fopen (defaultnya Enable)
Fungsi ini berguna untuk membuat PHP dapat mengambil file dari tempat yang tersembunyi di server. Kerentanan mengoperasikan file dari system operasi kita yang dijalankan oleh attacker dengan menjalankannya melalui URL ini disebut RFI (Remote File Intrusion). Teknik ini digunakan untuk menangkal RFI Attack, maka untuk mematikan fungsi RFI ini ke server kita, kita non aktifkan fungsi module ini untuk keamanan.


Allow_url_fopen = off



Setting juga dapat dilakukan di file httpd.conf pada apache2.



# Disable allow_url_fopen for security reasons
php_admin_flag allow_url_fopen Off


Hal ini melakukan pencegahan URL secara langsung menggunakan PHP. Sebuah perintah seperti include ("http://www.example.com/evil_script.php") tidak akan diizinkan untuk di-eksekusi. Hanya file yang berada dalam situs Anda dapat disertakan: include ("/ var / www / html / config.inc.php").

CATATAN: Sejumlah besar kerentanan injeksi kode dilaporkan dalam aplikasi PHP web disebabkan dengan mengaktifkan allow_url_fopen dan masukan buruk penyaringan. Anda harus menonaktifkan direktif ini untuk alasan keamanan.


2.Allow_url_include (defaultnya disable)
Jika dinonaktifkan, allow_url_include akan mem-blok akses file remote untuk fungsi file lain seperti fopen dan file_get_contents.

CATATAN: Include dan require adalah poin serangan yang paling umum untuk attacker mencoba melakukan injeksi menggunakan kodenya, dengan pengaturan plug in ini maka kita dapat mengatur pengaturan file jarak jauh.

; Disable allow_url_include in php.ini for security reasons
allow_url_include = Off


Setting tersebut dapat dinonaktifkan juga pada httpd.conf :


# Disable allow_url_include in php.ini for security reasons
php_admin_flag allow_url_include Off


3. Disable_function
Fungsi ini untuk menonaktifkan fungsi-fungsi pada modul PHP. Yang harus kita disable adalah sebagai berikut :

; Example of restricted functions: disable_functions "curl_exec,curl_multi_exec,dl,exec,fsockopen,parse_ini_file,passthru,popen,proc_open,proc_close,shell_exec,
show_source,symlink,system"


Fungsinya:

  • curl_exec - perform cURL session
  • curl_multi_exec - menjalankan sub-koneksi dengan cURL handle
  • dl - me0loads a PHP extension saat program berjalan
  • exec - eksekusi eksternal command
  • fsockopen - open internet atau unix domain socket connection
  • parse_ini_file - mengurai configuration file
  • passthru - mengeksekusi external program dan menampilkan outputnya
  • popen - opens process file pointer
  • proc_open - eksekusi command dan membuka file pointers untuk Input/Output
  • proc_close - menutup sebuah process yang dibuka oleh proc_open dan mengembalikan fungsi exit code pada proses.
  • shell_exec - mengeksekusi command via shell dan mengembalikan output sebagai string
  • show_source - memperlihatkan source code file
  • symlink - membuat symbolic link
  • system - mengeksekusi program eksternal dan menampilkan output
CATATAN:
Menonaktifkan
beberapa fungsi dapat mempengaruhi aplikasi web anda, dianjurkan untuk memeriksa ulang kode Anda dan mencari solusi alternatif, daripada mempertaruhkan keamanan server untuk aplikasi web yang buruk.

4. display_errors
Direktif display_errors menentukan apakah pesan kesalahan harus dikirim ke browser. Pesan-pesan ini sering mengandung informasi sensitif tentang lingkungan aplikasi web Anda dan selalu harus dinonaktifkan.

; Disable display_errors in php.ini for security reasons
display_errors = Off
log_errors = On


Setting dapat dikonfigurasi httpd.conf atau .htaccess file:

# Disable display_errors for security reasons
php_flag display_errors Off
php_flag log_errors On


CATATAN:  
display_errors harus dinonaktifkan dan semua pesan kesalahan harus dilewatkan ke file log sistem menggunakan direktif log_errors.


5. Expose_php
Bila diaktifkan, laporan expose_php dalam setiap permintaan bahwa PHP sedang diaktifkan, dan apa versi PHP yang terinstal. Pengguna yang jahat mencari sasaran potensial rentan dapat menggunakan ini untuk mengidentifikasi kelemahan. Direktif ini harus diatur dalam php.ini. Ini direkomendasikan untuk menonaktifkan expose_php.

; Disable expose_php in php.ini for security reasons
expose_php = Off


6. Magic_quotes_gpc (default enable)
magic_quotes_gpc menyediakan beberapa perlindungan dasar terhadap serangan SQL Injection dan merupakan solusi generik yang tidak termasuk semua karakter yang membutuhkan direct. Secara efektif mengaktifkan addslashes () yang menjalankan COOKIE pada variable URL GET dan POST. Karena itu tidak konsisten dan tidak efektif, itu disarankan untuk menonaktifkan magic_quotes_gpc. Dengan metode seperti ini maka script anda akan terlindungi.


; Disable Magic Quotes in php.ini for security reasons
magic_quotes_gpc = Off


Setting dapat dikonfigurasi httpd.conf atau .htaccess file:

php_flag magic_quotes_gpc Off


CATATAN: 
magic_quotes_sybase sepenuhnya akan menimpa magic_quotes_gpc. Setelah kedua arahan diaktifkan berarti hanya tanda kutip tunggal yang lolos sebagai ''. Tanda kutip ganda, backslashes dan itu NUL akan tetap tidak tersentuh dan unescaped.


7. Memory_limit
Anda dapat melindungi aplikasi Anda dari beberapa jenis serangan Ddos Attack dan juga dari bug di aplikasi (looping yang tak terbatas atau kesalahan memori lain yang intensif). Kita dapat memungkinkan menggunakan memory_limit secara realistis. Pengaturan dari 8MB cukup tapi masih cukup agresif untuk menangkap masalah sebelum terlalu banyak kerusakan yang dilakukan.

; Lower memory_limit in php.ini for security reasons
memory_limit = 8M


Setting dapat dikonfigurasi httpd.conf atau .htaccess file:


# Lower memory_limit for security reasons
php_value memory_limit 8M

8. Open_basedir
open_basedir membatasi proses PHP dari mengakses file di luar direktori khusus yang ditunjuk.
Set open_basedir hanya memungkinkan akses ke bagian-bagian yang diperlukan dari sistem file, seperti dokumen situs web Anda dan setiap shared library.

; Set open_basedir in php.ini for security reasons
open_basedir = "/var/www/html/:/usr/local/php/"


Setting dapat dikonfigurasi httpd.conf atau .htaccess file:

# Set open_basedir to a safe location
php_admin_value open_basedir /var/www/html/:/usr/local/php/

CATATAN: 
Anda harus selalu menggunakan open_basedir untuk membatasi proses PHP di direktori yang ditunjuk. Harap dicatat bahwa versi perpustakaan keriting dikirim dengan PHP memungkinkan untuk memotong pembatasan yang ditempatkan oleh open_basedir atau safe_mode menggunakan file :/ / URL dan Anda harus selalu menggunakan PHP yang lebih baru. Harap hati-hati menggunakan module yang ini, selalu diperiksa, tidak pakai ya tidak apa apa.


9. Post_max_size
Perlindungan ini memungkinkan Anda untuk membatasi POST permintaan ukuran maksimum POST yang diperbolehkan untuk diproses PHP. Attacker mungkin mencoba untuk mengirimkan permintaan POST dengan ukuran besar untuk menguras sumber daya server Anda.

; Lower post_max_size ini php.ini for security reasons
post_max_size = 256K


Setting dapat dikonfigurasi httpd.conf atau .htaccess file:


# Lower post_max_size for security reasons
php_value post_max_size 256K

10. Register_globals
Sejumlah script yang lebih lampau menganggap bahwa data yang dikirim oleh sebuah formulir secara otomatis akan memiliki variabel PHP dengan nama yang sama. Jika formulir Anda memiliki sebuah field input dengan nama "namavariable", pada file lampau PHP script berasumsi bahwa PHP akan secara otomatis membuat variabel bernama $namavariable yang berisi nilai yang ditetapkan di tersebut.


; Disable register globals in php.ini for security reasons
register_globals = Off


Setting dapat dikonfigurasi httpd.conf atau .htaccess file:


# Disable register globals for security reasons
php_flag register_globals Off

CATATAN :
Register_globals harus selalu disable

11. Save_Mode
Modus PHP Save Mode adalah "upaya untuk memecahkan masalah keamanan server bersama" yang komprehensif yang mencakup banyak fitur berguna. Dalam mode ini, akses ke file yang tidak dimiliki oleh Apache dinonaktifkan, dan akses ke variabel lingkungan dan pelaksanaan program biner juga dinonaktifkan.



; Enable save_mode in php.ini for security reasons
safe_mode = On



Setting dapat dikonfigurasi httpd.conf atau .htaccess file:

# Enable save_mode for security reasons
php_flag safe_mode On


Dalam beberapa kasus, Anda akan ingin menggunakan kelompok untuk memeriksa kepemilikan (misalnya dalam kasus yang Anda memiliki beberapa orang menyebarkan script aplikasi web). Dinonaktifkan.

Untuk mengecek Safe Mode untuk Group gunakan :


safe_mode_gid = On


Bila untuk membatasi aktifitas akses file dapat menggunakan metode berikut ini :


safe_mode_include_dir = /path/to/dir
safe_mode_exec_dir = /path/to/exec/dir

Catatan:
Untuk  safe_mode_include_dir dan safe_mode_exec_dir digunakan untuk direktori tertentu.
Untuk safe mode On harap anda periksa layanan aplikasi web anda, karena hal ini akan membuat blank screen bagi CMS, atau Aplikasi yang tidak mendukung !

12. Save_path
Direktif ini memungkinkan Anda untuk menentukan di mana file sesi harus disimpan ketika menggunakan handler sesi default. Ini harus menjadi sebuah direktori di luar akar dokumen dan seharusnya hanya dapat diakses oleh pengguna web.

save_path harus unik secara virtual host ketika mereka virtual host dikendalikan oleh entitas yang berbeda untuk mencegah situs dari membaca setiap sesi lain (shared hosting).

; Set save_path to a safe location in php.ini for security reasons
session.save_path = /var/www/foo/sessions


Setting dapat dikonfigurasi httpd.conf atau .htaccess file::

# Set save_path to a safe location
php_value session.save_path /var/www/foo/sessions


13. Upload_max_filesize
upload_max_filesize membatasi ukuran maksimum file yang PHP akan menerima melalui upload. Attacker mungkin mencoba untuk mengirim file terlalu besar untuk menguras sumber daya server Anda. Pastikan Anda akan menggunakan nilai yang dapat diterima.

; Lower upload_max_filesize ini php.ini for security reasons
upload_max_filesize = 128KB


Setting dapat dikonfigurasi httpd.conf atau .htaccess file:


# Lower upload_max_filesize for security reasons
php_value upload_max_filesize 128KB

14. upload_tmp_dir
upload_tmp_dir memungkinkan Anda untuk menentukan direktori sementara yang digunakan untuk menyimpan file. Jika direktori ini adalah dalam document root dari situs web dan / atau diakses oleh pengguna sistem selain pengguna PHP, bisa dimodifikasi atau diganti sementara PHP memprosesnya. Secara default upload_tmp_dir diatur ke direktori standar sementara sistem, yang biasanya dapat diakses oleh semua pengguna sistem.

Anda harus menetapkan upload_tmp_dir ke folder yang berada di luar root dokumen situs web Anda dan tidak dapat dibaca atau ditulis oleh pengguna sistem lainnya.

; Set upload_tmp_dir to a safe location
upload_tmp_dir = /var/www/foo/sessions


Setting dapat dikonfigurasi httpd.conf atau .htaccess file:


# Set upload_tmp_dir to a safe location
php_value upload_tmp_dir /var/www/foo/sessions
  
15. Use_trans_sid
upload_tmp_dir memungkinkan Anda untuk menentukan direktori sementara yang digunakan untuk menyimpan file. Jika direktori ini adalah dalam document root dari situs web dan / atau diakses oleh pengguna sistem selain pengguna PHP, bisa dimodifikasi atau diganti sementara PHP memprosesnya. Secara default upload_tmp_dir diatur ke direktori standar sementara sistem, yang biasanya dapat diakses oleh semua pengguna sistem.

Anda harus menetapkan upload_tmp_dir ke folder yang berada di luar root dokumen situs web Anda dan tidak dapat dibaca atau ditulis oleh pengguna sistem lainnya.
 



; Disable use_trans_sid for security reasons
session.use_trans_sid = Off


Setting dapat dikonfigurasi httpd.conf atau .htaccess file:


# Disable use_trans_sid for security reasons
php_flag session.use_trans_sid Off



Catatan
Untuk versi Ubuntu 12.04 keatas untuk mendisable session.use_trans_sid = 0 (angka nol).


Alkhamdulillah perjuangan panjang untuk membuat PHP Security dari Research WhiteCyber Research & Development Team, Semoga bermanfaat bagi Indonesia, dan sebanyak-banyak umat manusia.

Sampaijumpa Di Pertemuan Selanjutnya kita akan meningkat ke pengamanan Apache tingkat Expert. Siap-siap ya...

Universe Khalifatulloh Security



 
WhiteCyber Research & Development Team
Universe Khalifatulloh Security

Jangan lupa baca yang ini juga

Tips Hardening Server
Tips System Keamanan


0 comments:

Posting Komentar

PEDOMAN KOMENTAR
Ayo berpartisipasi membangun budaya berkomentar yang baik. Pantang bagi kita memberikan komentar bermuatan menghina atau spam.
Kolom komentar tersedia untuk diskusi, berbagi ide dan pengetahuan. Hargai pembaca lain dengan berbahasa yang baik dalam berekspresi. Setialah pada topik. Jangan menyerang atau menebar kebencian terhadap suku, agama, ras, atau golongan tertentu.

Bangun sharing ilmu dengan berkomentar disini :