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.
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 :
http://kajetz.blogspot.com/2011/04/install-apache-dan-cara-mengamanankan.html
http://newbieh4xor.blogspot.com/2011/04/cara-mengamankan-web-dari-serangan.html
http://newbieh4xor.blogspot.com/2011/04/cara-mengamankan-web-dari-serangan.html
No comments:
Post a Comment