Mengamankan Web Server Apache dan PHP

Friday 14 February 2014

Mengamankan Web Server Apache dan PHP

INSTALL APACHE

            Dari pengertiannya Web Server adalah pemberi layanan bagi setiap client yang ingin mengakses data melalui web.
Apache saat ini merupakan Web Server yang banyak digunakan pada komputer yang berbasis Unix/Linux dan tentu saja juga untuk versi Windows telah ada.

cara installasi Apache tersebut. Download Apache http://httpd.apache.org/dist
 untuk versi yang terbaru.kemudian..

1.1 Kompile Apache-nya

gayo:~$ cd usr/src
gayo:~$ tar xvfz apache_x.x.xx.tar.gz
gayo:~$ cd apache_x.x.xx.tar.gz
gayo:~$ ./configure
gayo:~$ make
gayo:~$ make install (terinstall di direktory/usr/local/apache/.)

1.2 Konfigurasi

Buka dan Edit file httpd.conf (file ini berada didirektory /usr/local/apache/conf)
Settingan yang perlu diubah dan di edit
1 Port 80 (Port default untuk http:80)
2.ServerName localhost menjadi ServerName
www.hostinganda.com (host yang menjadi webserver)
3.ServerAdmin you@your.address menjadi ServerAdmin
gayo@host.com ( email admin jika web error)
4.ServerRoot "/usr/local/apache" (direktory root web server)
5.DocumentRoot "/usr/local/apache/htdocs" (direktory tempat disimpannya document anda)

1.3 Administrasi menjalankan Apache

gayo:~$ /usr/local/apache/bin/httpd -f
/usr/local/apache/conf/ httpd.conf (menjalankan Apache sekaligus mengkonfigurasi file httpd.conf)
gayo:~$ /usr/local/apache/apachectl start
* start (option untuk menjalankan apache)
* stop (option untuk menjalankan apache)
* restart (option untuk merestart apache)
* fullstatus (option untuk menampilkan laporan dari mod_status)

* status (option untuk menampilkan laporan dari mod_status tapi request tidak ditampilkan)
* graceful (option ini sama seperti restart)
* configtest (option untuk mengetes apakah settingan kita sudah benar ato belum)
restart Apache

gayo:~$ /usr/local/apache/apachectl stop
menghentikan Apache
gayo:~$ /usr/local/apache/apachectl restart

1.4 Letak web Anda

ServerRoot "/usr/local/apache" (direktory root web server) rubah rubah ini jika anda meletakan data pada direktori laen

Directory "/usr/local/apache/htdocs">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride None
Order allow,deny
Allow from all

1.5 Optimasi

1.ServerType standalone ( untuk meningkatkan kinerja dan kecepatan) sangat direkomdasikan agar apache dijalankan sebagai standalone
2.ServerRoot /usr/local/apache (untuk memberitahukan pada apache mana file2 konfigurasinya berbeda)
3.PidFile /usr/local/apache/logs/httpd.pid (untuk mencatat identitas proses ketika apache dijalankan)
4.ResourceConfig /dev/null (menyatakan lokasi konfigurasi srm.conf berada)
5.AccessConfig /dev/null (menyatakan lokasi konfigurasi access.conf berada)
6.Timeout 300 (lama waktu (dalam detik) yang disediakan oleh server untuk menunggu proses request.
7.KeepAlive On (memungkinkan koneksi yang kontinue.gunakan On )
8.MaxKeepAliveRequests 100 ( memungkinkan jumlah mrequest koneksi yang kontinue)
9.KeepAliveTimeout 15 (lama waktu (dalam detik) yang ditunggi server untuk request berikutnya sebelom menutup koneksi)
10.MinSpaceServers 16 (jumlah minimum proses anak pada server yang tidak menanggani request)
12.MaxSpaceServers 64 (jumlah maksimum proses anak pada server yang tidak menanggani request)
13.StartServers 16 (jumlah proses anak pada server yang akan dibuat begitu apache dijalankan)
14.MaxClient 512 (jumlah request secara bersamaan yang bisa ditangani Apache)
15.MaxRequestsPerChild 10000 (jumlah request maksimum yang dapat ditangani oleh sebuah proses anak)

16.User nobody (identitas user(Nobody yang mempunyai akses paling minimum yang dibuat apache))
16.Group nobody (identitas group(Nobody yang mempunyai akses paling minimum yang dibuat apache))
17.DirectoryIndex index.html index.htm index.php index.php3 default.html index.cgi (default file yang ditampilkan pertama kali)
18.HostnameLookups Off (permisi lookup terhadap DNS(Domain Name Service)) gunakan Off untuk optimasi kerja Apache

Mengamankan Akses Data web

1 DocumentRoot "/usr/local//apache/html"
Directory "/usr/local/apache/html">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
Hilangkan kata Options Indexes .untuk mencegah pengujung mengakses seluruh direktory menjadi :
DocumentRoot "/usr/local//apache/html"
Directory "/usr/local/apache/html">
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all

2. Directory "/usr/local/apache/html">

Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
#Allow from all (untuk pengunjung siapa saja) Allow from 202.155.55.55/24 (hanya bisa diaksek untuk LAN tertentu dengan IP tersebut)
# Allow from .gayo.com (jika anda lupa jp anda)
Akses dengan Password
Web bisa pula mengizinkan pengaksesan dengan menggunakan passsword
Tahap2 pemberian Password

1.Buat direktori baru

gayo:~$ mkdir /usr/local/apache/passwd
gayo:~$ cd /usr/local/apache/passwd

2.Buat nama file dan passwordnya

gayo:~$ /usr/local/apache/bin/htpasswd -c

htpasswd.user gayo
New password : *********
Re-type new password :*********
Adding password for user gayo
catatan : opsi -c (jika anda membuat file ini untuk user pertama untuk seterusnya tidak perlu)

3.ubah konfigurasi httpd.conf agar dapat diakses oleh user gayo dan passwordnya

Directory "/usr/local/apache/html">
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
Authname Protected
AuthType Basic
AuthUserFile "usr/local/apache/passwd/htpasswd.user "
require user gayo

4.agar dapat diakses oleh group tertentu

gayo:~$ /usr/local/apache/bin/htpasswd -c
htpasswd.user newuser
kemudian buat file htpasswd.group yang isinya
semut : gayo newuser
konfigurasinya sebagai berikut
Directory "/usr/local/apache/html">
Authname Protected
AuthType Basic
AuthUserFile "usr/local/apache/passwd/htpasswd.user "
AuthGroupFile "usr/local/apache/passwd/htpasswd.group"
require group semut
Modul Apache sangat banyak sourcenya , anda dapat mendownload langsung dari sitenya jika memang anda butuh, adapun sitenya :http://modules.apache.org
anda dapet menentukan sendiri modul yang akan dimasukkan yang anda akan kompile dengan apache

caranya :
ketik perintah ini :
gayo:~$ ./configure
--add-module=src/modules/standard/mod_modul.c--enable-module=name_module
sedangkan agar suatu modul tidak di kompile
ketik perintah ini :
gayo:~$ ./configure --disable-module=name_modul



        adapun dengan cara lain untuk Mengamankan Web Server Apache dan PHP
        Saat ini, hampir setiap orang memiliki website sendiri-sendiri. Beberapa perusahaan pun sudah banyak yang memanfaatkan website untuk mempublikasikan perusahaan mereka. Seringkali website-website tadi diletakkan di server hosting yang dimiliki oleh penyedia jasa hosting. Akan tetapi ada juga website-website yang servernya dikelola sendiri. Mengelola server web anda sendiri sebetulnya tidak terlalu rumit. Hanya saja anda akan cukup pusing apabila ada pihak luar yang meretas website anda dan meletakkan file-file berbahaya yang mengganggu server ataupun website anda. Untuk itu, berikut ini ada sedikit tips yang bisa anda ikuti untuk mencegah atau setidaknya mempersulit hacker untuk masuk ke server anda.

Directive Allow dan Deny

            Directive Allow dan Deny pada Apache berguna untuk membatasi IP mana saja yang berhak untuk mengakses website/direktori pada website anda. Misalkan saja anda ingin agar PhpMyAdmin di server anda hanya dapat diakses dari jaringan lokal perusahaan anda (misal : 192.168.1.0/24). Maka anda dapat mengubah konfigurasi PhpMyAdmin di Apache menjadi kurang lebih mirip seperti ini :
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
Order deny,allow
Deny from all
Allow from 192.168.1.0/255.255.255.0
</Directory>
Mengubah Nama-Nama Direktori yang Umum
            Biasanya, hacker akan melakukan brute-force untuk mencari direktori-direktori atau file-file tertentu, seperti PhpMyAdmin/, admin/, dsb. Karena itu, akan lebih baik jika nama-nama direktori tersebut diubah,sehingga hanya orang-orang tertentu yang mengetahui, misal : PhpMyAdminQuwh/
Selain itu, pastikan anda sudah menghapus direktori/file yang digunakan untuk instalasi. Biasanya beberapa CMS semacam WordPress/Joomla/Moodle memiliki file PHP yang digunakan untuk melakukan instalasi CMS tersebut.
            beberapa hal yang dapat kita lakukan untuk memperkuat web server kita dengan cara mengutak-atik konfigurasi PHP. Berikut ini adalah hal-hal yang dapat kita lakukan :
Disable Functions
            Beberapa fungsi di PHP sangat berbahaya apabila digunakan tidak hati-hati. Salah satu contohnya adalah fungsi system() yang dapat digunakan untuk mengeksekusi shell command dari kode PHP anda. Kemudian ada juga fungsi ini_set() yang dapat mengubah konfigurasi php.ini melalui kode PHP yang ada. Fungsi-fungsi seperti ini akan lebih baik jika dinon-aktifkan saja apabila memang tidak ada aplikasi web anda yang menggunakannya. Untuk itulah ada option disable_functions di php.ini. Option ini akan men-disable semua fungsi yang disebutkan di dalamnya. Sehingga jika ada kode PHP yang menggunakan fungsi tersebut, kode tersebut tidak akan berjalan.
            Contoh isi disable_functions yang disarankan (setiap nama fungsi dipisahkan dengan tanda koma), dapat ditambahi, dapat juga dikurang sesuai kebutuhan, dapat dilihat di sini
Sebetulnya ada 2 fungsi lagi yang bisa di-disable, yaitu base64_decode dan mysql_pconnect. Untuk mysql_pconnect ini masih tidak terlalu berbahaya jika digunakan. Hanya saja jika digunakan secara sembarangan dapat menghabiskan resource server yang cukup besar untuk menyimpan persistent connection.
            Sedangkan base64_decode, biasanya digunakan untuk menyembunyikan kode-kode PHP yang berbahaya dalam bentuk base64, sehingga tidak dapat terdeteksi oleh antivirus atau secara manual. Biasanya fungsi ini akan dipanggil di dalam fungsi eval(). Meskipun begitu, beberapa CMS (moodle), PHP Framework (CodeIgniter), dan PHPMyAdmin menggunakan fungsi ini juga. Jadi jika di-disable, kemungkinan besar, fungsionalitas dari aplikasi-aplikasi tersebut akan terganggu. Karena itu, di bawah ini akan dijelaskan bagaimana agar script-script berbahaya yang bersembunyi dengan base64_decode dapat dicegah.
Disable Eval() Function
            Eval adalah sebuah fungsi yang dapat digunakan untuk menjalankan script PHP yang ada di dalam parameter fungsi eval tersebut. Hal ini sangat berbahaya, karena bisa saja fungsi yang dijalankan di dalam eval() adalah fungsi-fungsi untuk meretas sistem kita. Karena itu, fungsi eval ini harus di-disable atau minimal dibatasi kemampuannya.
Option disable_functions tidak dapat mencegah fungsi eval() untuk berjalan, cara lain untuk men-disable eval() adalah dengan menggunakan patch suhosin untuk php. Kelebihan patch ini adalah tidak perlu mengompile ulang php untuk menjalankannya. Di beberapa distro seperti ubuntu, debian, dan fedora, patch ini sudah ada di repository. Jadi kita tinggal install saja di server dengan menggunakan apt-get atau synaptic atau yum. Paketnya biasanya bernama php5-suhosin. Setelah paket ini terinstall, buka file /etc/php5/apache2/conf.d/suhosin.ini (mungkin berbeda untuk distro selain Ubuntu dan Debian).

Kemudian pastikan baris ini aktif (tidak dianggap sebagai komentar) di file tersebut :
extension=suhosin.so
Setelah itu cari 3 baris ini :
•           suhosin.executor.eval.whitelist =
•           suhosin.executor.eval.blacklist =
•           suhosin.executor.disable_eval = off

            Baris whitelist digunakan untuk menentukan fungsi-fungsi apa saja yang boleh dieksekusi oleh fungsi eval. Sedangkan blacklist menentukan fungsi-fungsi apa saja yang tidak boleh dijalankan oleh fungsi eval. Apabila kita ingin men-disable eval secara keseluruhan, maka kita harus merubah parametersuhosin.executor.disable_eval menjadi on. Akan tetapi beberapa CMS juga ada yang memanfaatkan fungsi eval ini. Karena itu, kita bisa memanfaatkan blacklist saja untuk mencegah beberapa fungsi berjalan di dalam eval. Isi dari blacklist dapat diisi sama dengan disable_functions tadi, atau cukup ditambahkan fungsi-fungsi tertentu yang tidak boleh berjalan di dalam eval, seperti base64_decode.
Di bagian sebelumnya base64_decode tidak dimasukkan ke disable_function, karena masih banyak yang menggunakannya. Tetapi aplikasi web biasa, jarang menggunakan base64_decode di dalam eval. Biasanya yang seperti itu hanya para pembuat theme CMS yang ingin menyembunyikan kode untuk menampilkan copyrightnya. Oleh karena itu, base64_decode ini didaftarkan saja di blacklist suhosin agar dia tidak berjalan apabila berada di dalam fungsi eval.

            berikut ini adalah beberapa konfigurasi yang dapat digunakan untuk mengamankan web server anda. Konfigurasi-konfigurasi yang akan dibahas kali ini berada di php.ini alias yang dikonfigurasi adalah PHPnya. Di Ubuntu Linux, file ini terletak di /etc/php5/apache2/php.ini. Jika anda menggunakan xampp, cari saja file php.ini di direktori xampp. Yang penting, jangan lupa untuk restart Apache setelah selesai mengkonfigurasi. Baik, berikut ini adalah poin-poin tambahan yang dapat diperhatikan pada konfigurasi php :
register_globals
Fungsi dari option register_globals ini adalah untuk membuat sebuah variabel di dalam script PHP menjadi variabel global. Artinya sebuah variabel yang ada di dalam sebuah script PHP, dapat diakses juga oleh script PHP lainnya secara langsung. Selain itu, variabel yang tersimpan dalam $_GET ataupun $_POST dapat juga diakses secara langsung dengan menggunakan indexnya (misal : $_GET["username"] sama dengan $username). Hal ini, meskipun dianggap mempermudah programmer, tidak disarankan untuk digunakan. Karena itu sebaiknya berikan konfigurasi ini pada php.ini (default yang ada untuk option ini adalah Off):
register_globals = Off
allow_url_fopen
Option ini berguna apabila ada salah satu baris kode PHP anda yang butuh untuk membuka file yang berada pada komputer lain. Karena untuk mengakses file tersebut dibutuhkan nama dalam format URL, maka option ini diperlukan. Tetapi apabila tidak ada baris kode PHP yang digunakan untuk membuka file dari komputer lain, maka option ini lebih baik dimatikan. Untuk itu, berikan baris ini pada php.ini : (default : On)
allow_url_fopen = Off
allow_url_include
Mirip dengan option allow_url_fopen, option ini dibutuhkan jika ada baris kode PHP yang butuh untuk include() atau require() suatu file yang berada di luar server. Sama juga seperti option sebelumnya, option ini akan lebih baik jika dibiarkan Off bila tidak diperlukan. Untuk itu, pastikan baris option allow_url_include, tampak seperti ini :
allow_url_include = Off

TIPS CARA MENGAMANKAN WEB DARI SERANGAN HACKER
Tips Pertama
            Pada umumnya, hosting websites dilakukan pada ISP (Internet Service Provider) dengan space tertentu, lalu kita melakukan upload website via FTP atau via CPANEL (Control Panel). Webhosting inilah yang rawan dan mudah sekali dibobol oleh Hacker di antaranya mengunakan teknik SQL Injection. Maka disarankan agar mengunakan Server sendiri dan mengunakan VPS (Virtual Private Server). Dengan Server sendiri atau Virtual Private Server bisa mengunakan berbagai proteksi terhadap kita secara Customized. Beda dengan Web Hosting, proteksi security dilakukan terserah apa kata ISP. Kelemahan proteksi inilah yang dimanfaatkan oleh Hacker dengan melakukan Port Scanning untuk menemukan celah security yang bisa ditembus untuk bisa masuk dan mengambil alih websites tersebut.

Tips Kedua
            Mengunakan Hardware Security yang powerfull diantaranya yang memiliki fitur Firewall, IDS (Intrusion Detection System) dan IPS (Intrusion Prevention System). Contohnya mengunakan Fortigate, Cisco Series Security, 3Com Tipping Point, dan lainnya. Dapat juga mengunakan software IDS seperti Black ICE Countermeasures ataupun Distro Linux untuk security system seperti Smootwall, Monowall, Customized Distro Linux, dan lainnya. Umumnya, baik software maupun hardware security ini bisa secara otomatis mengirimkan email alert bahkan bisa mengirimkan alert via SMS jika system mendeteksi adanya serangan dari hacker.

Tips Ketiga
            Mengunakan system yang Stable yang sudah perfect systemnya, sehingga kemungkinan adanya celah keamanan juga dapat diminimalkan. Banyaknya software atau tool web builder dengan berbagai versi terutama versi gratis/ free License/ Freeware, sebaiknya para pemakai memilih versi yang sudah dinyatakan Stable. Seperti adanya BUG pada software Joomla versi 1.5.0 - 1.5.5.

Tips Keempat
            Web Administrator/ System Administrator harus melakukan Review, Testing, Simulasi secara berkala terhadap keamanan pada Server yang dikelolanya. Bahkan bisa bekerja sama dengan Hacker (White Hacker yang dapat dipercaya reputasinya) untuk melakukan Audit terhadap implementasi Security webservernya.

Terima kasih banyak untuk sumber  :


No comments:

Post a Comment

RUmah dijual 3 Kamar Tidur dan Kolam Renang di Kota Malang - Graha Agung Residence

   HUNIAN RESORT DI TENGAH KOTA DENGAN KOLAM RENANG! KAWASAN PROPERTI TERBESAR DAN SATU-SATUNYA DI MALANG! GRAHA AGUNG RESIDENCE! jadi pilih...

 
FREE BLOGGER TEMPLATE BY DESIGNER BLOGS