belum di edit webserver - Bimo Septyo Prabowo lahir di Jakarta besar di Jakarta

Monday, August 20, 2007

belum di edit webserver

webserver dapat berarti dua hal:
1.) Sebuah program komputer yang bertanggung jawab
menerima http request dari client, yang dikenal
dengan web browser dalam respon http tersebut dengan
data sesuai pilihan seperti dokumen html dan link
object misal image.
2.) sebuah program komputer yang memberikan funsionalitas
seperti digambarkan di atas.

Walaupun program webserver berbeda beda mereka mempunyai kesamaan dalam
fitur dasar yang umum.
1)HTTP: setiap webserver program beroperasi dengan menerima HTTP request
dari jaringan dan memberikan http respon untuk merequest.respon HTTP
umumnya terdiri dari dokumen HTML tapi juga file text mentah. ,sebuah
image ,tipe dokument lainnya. jika sesuatu terjadi dalam client request
atau mencoba untuk melayani request , webserver akan menirin\mkan respon
error yang termasuk beberapa HTML custom atau pesan error.
2)Logging: biasanya webserver mempunyai kapablitas mengumpulkan informasi
yang mendetail mengenai user yang login dengan menjalankan log analizer
yang terdapat di file log

selain itu terdapat juga fitur :
1. Autentikasi ,request pilihan autorisasi (request username dan password)
sebelum mengakses sumber tertentu
2. mendukung SSI, CGI, SCGI, FastCGI, JSP, PHP, ASP, ASP .NET, Server API seperti
NSAPI, ISAPI dsb.
3. HTTPS mendukung SSL atau TLS untuk hubungan yang terenkripsi menggunakan standar
port 443 dari pada port 80
4. Isi kompress (contoh gzip )untuk mengurangi ukuran dari respon (mengurangi penggunaan bandwith)
5. Virtual hosting melayani banyak website menggunakan satu ip address
6. Large File Support
7. Bandwidth throttling membatasi kecepatan respon dalam jaringan dan menerima banyak client

Masalah overload
Suatu saat web server dapat overloaded karena
1) terlau banyak legitimasi web trafic (contoh ribuan bahkan jutaan client mengunjungi situs tersebuat
dalam waktu singkat)
2) Serangan DDOS Distributed Denial of Services
3) Worm Komputer yang dapat menyebabkan trafik tidak wajar karena jutaan komputer yang
terinfeksi
4) Virus XSS dapat menyebabkan traffic tinggi karena jutaan web browser yang terinfeksi
5) Intenet web robots trafic yang tidak terfilter / terbatasi dengan sedikit resource
(bandwith)
6) jaringan Intenet melambat :komputer client yang merequest lebih lambat dan beberapa
koneksi pc
client lain bertambah jadi server membatasi pencarian

Gejala Overloaded yaitu
Request yang melayani tertunda selama 1 detik atau beberapa detik
HTTP error 500,502,503,504 di terima oleh pc client
Koneksi TCP di tolak atau reset sebelum isi di terima kembali oleh pc client

Teknik mencegah overloaded
yang dapat di gunakan untuk mencegah overloaded yaitu :
Managing network traffic menggunakan :
Firewall untuk meng blok kedatangan traffic yang tidak di inginkan dari sumber IP atau yang
mempunyai pola buruk
HTTP traffic manager untuk mengdrop ,redirct ,rewrite request yang mempunyai pola http
buruk
Bandwith management dan traffic shaping dalam hal memeperlancar turunnya beban puncak
di penggunaan jaringan
Menggunakan teknik web chache
Menggunakan nama domain dalam hal pelayanan isi yang bersifat statis atau dinamis dengan menggunakan
webserver yang terpisah contoh:
http://image.contoh.com
http://www.contoh.com
Penggunaan nama domain yang berbeda dan komputer untuk memisahkam file berukuran besar dari file ukuran terkecil
hingga file ukuran terbesar.

di sadur dari wikipedia.org

Terjadi perbedaan besar antara apache 2.0 dengan apache 1.0 , Ketika anda ingin membangun sebuah web maka hal yang harus di ingat adalah operating system yang akan di gunakan .Hal yang perlu di ingat adalah

Penggunaan Apache 1.3 atau Apache 2.X ?

Instalasi penggunaan source atau package ?

Hosting sendiri atau menggunakan provider ?

Penggunaan Apache 1.3 atau Apache 2.X

Apache 1.3 sangat solid dengan dukungannya. Tidak terdokumentasi dillain pihak Apache 2.X mempunyai module yang tidak perlu di kompile ulang jika ingin menambahkan , merupkan lebih baik di banding dari apache 1.3 .

Perbedaan Apache 2.0

Yang paling menarik di antara perubahan apache 2.0 adalah arcitektur baru multithreading ,yang dapat di konfigurasi menggunakan modul multiprocessing (MPM) dan kenmudahan dalanm konfigurasi file .

MPM dalam keadaan default adalah “Prefork” Jika anda ingin menggunakan yang lain dapat di konfigurasi saat kompilasi.: Tiga mode dalam MPM untuk Linux :

Prefork : model Apache 1.3

Sebuah proses single parent .Pembagian anak untuk menjaga posisinya sesuai pada tempatnya. Kelebihan anak akan di killed off setelah penggambaran length of time.

Mengijinkan penggunaan library thread-unsafe. Jadi masih dapat menggunakan modul lama yang tidak mendukung multithreading.

Worker : Hybrid multiprocess and multithreads

Adalah server Hybrid multiprocess and multithreads menggunakan thread untuk menjamu permintaan di gunakan untuk menjalan kan beberapa system bersamaan yang menggunakan beban kerja yang keras.

PerChild

Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Prefork secara umum di gunakan namun untuk user dengan penggunaan high-demand mungkin tertarik untuk menggunakan Worker MPM. Lihat di website apache tentang mempelajari worker MPM

Install melalui source atau package

Install melalui package memrupakan langkah tercepat, tetapi mempunyai masalah dalam penamaan filenya karena setiap distriibutor mempunyai file nama yang berbeda dan nama package yang berbeda.

Instalasi dari source juga memerlukan usaha yaitu perlu secara manual membuat script startup ,membuat owner dan group untuk apache, dan mengatur tempat semua pilihan file kompile termasuk lokasi file. Bagaimanapun anda di haruskan secara tepat mengontrol semuanya. Dengan Apache 2.0 hal tersebut hal itu tidak di perlukan untuk mengrekompile binary ketika anda ingin menmbah atau menghapus modul, dengan munculnya fitur baru yang di sebut DSO (Dynamic Shared Object). Yang merupakan analog unutk meload modul kernel dan dengan mudah unutk menmbah dam menghilangkan modul sesuai yang di perlukan , tanpa mengutak atik file httpd.conf

Hosting-sendiri atau menggunakan service provider

Ada beberapa pilihan dalam pemilihan hosting. Pertama anda dapat menempatkan webserver anda dalam mesin loka yang terlihat secara fisik. Di lain pihak, Perawatan ,Keamanan dan pelayanan menjadi tanggung jawab anda.ketika koneksi internet terputus anda tinggal menghubungi provider anda.

Pilihan lain yaitu menggunkan pelayanan webhosting komersial yang dapat anda bayar bulanan secara gratis unutuk ukuran tertentu., bandwidth, fitue dalam sharing server. Merupakan pilihan yang bagus.jika ingin menghost lebih dari satu website dapat menggunakan CPanel, merupakan alat untuk administrasi web yang di gunakan unutuk memanage website berjumlah lebih dari satu.Untuk melihat perkembangan web hosting kunjungi http://www.webhostingtalk.com

Pilihan berikutnya adalah penyewaan hardware dan konektifitas dalam datacenter komersial dan unutk instalasi software anda sendiri

Hati hati terhadap keanehan metode billing bandwidth. Hati hati terhadap penggunaan bandwidth.

Instalasi Apache 2.0 menggunakan Source.

Instalasi Apache 2.0 melalui konfigurasi configure-make-make install

Pertama kali download tarbal Apache 2.0 dari situs http://www.apache.org saya menggunakan httpd-2.0.50

Kemudian buat semacam daftar di mana dimana file file hasil instalasi apache terletak:

# find / | grep –v –e ^/proc/ -e ^/tmp/ -e ^/dev/ > apache2-prainstallasi.list

Kemudian ,mulai versi Apache 2.0 apache developer memutuskan mereka lebih tertarik , meulis webserver dari pada menkonfigurasi system.Jadi Apache 2.0 menggunakan autoconf dan libtool untuk menentukan komponen apache yang di buat .Tarball yang di download dari situs apache.org mempunyai konfigurasi script yang telah di buat ,jalankan perintah :

#./buildconf # akan mencari semua direktoriyang tersidia sesuai dengan konfigurasi apache yang di syaratkan

Setelah itu pindah ke direktori di mana di mana tarbal apache 2.0 di unpack

# ./configure –prefix=/etc/httpd \

? –-exec-prefix=/usr \

?—bindir=/usr/bin \

?—sbindir=/usr/sbin \

?—mandir=/usr/share/man \

?—sysconfdir=/etc/httpd/conf \

?—includedir=/usr/include/httpd \

?—libexecdir=/usr/lib/httpd/modules \

?—datadir=/var/www/ \

?—with-mpm=prefork \

?--enable-mods-shared=”rewrite” \

?--disable-cgi

./configure = mengatur konfigurasi paket ini untuk beradaptasi dengan system

Penggunaan : ./configure [OPTION].. [VAR=VALUE]…

Untuk menugaskan lingkungan variable (contoh e.g, CC, CFLAGS..), menjelaskan mereka sebagai VAR=VALUE. Di bawah merupakan gambaran beberapa varuiable yang sangat berguna.

Direktori instalasi:

--prefix=PREFIX install file architecture-mandiri dalam PREFIX

[/usr/local/apache2]

Contoh = --prefix=/etc/httpd

--exec-prefix=EPREFIX install file architecture-ketergantungan dalam EPREFIX

[PREFIX]

Contoh=--prefix=/etc/httpd

Secara umum , ‘make install’ akan menginstall semua file dalam ‘/usr/local/apache2/bin’ ,’/usr/local/apache2/lib’ dsb.. Anda dapat menentukan letak file tersebut contoh ‘—prefix=$home’

Unutk pengawasan yang lebih mudah ,gunakan pilihan berikut dapat di lakukan terhadap direktori berikut :

--bindir=DIR Eksekusi yang di lakukan oleh user [EPREFIX/bin]

Contoh = /usr/bin

--sbindir=DIR Eksekusi yang di lakukan oleh system admin [EPREFIX/sbin]

Contoh = /usr/sbin

--libexecdir=DIR Eksekusi untuk Program [EPREFIX/sbin]

Contoh = /usr/lib/httpd/modules

--datadir=DIR read-only data arsitektur-mandiri [PREFIX/share]

Contoh = /var/www

--sysconfdir=DIR read-only data single-machine [PREFIX/etc]

Contoh = /etc/httpd/conf

--sharedstatedir=DIR modifikasi data arsitektur-mandiri [PREFIX/com]

--localstatedir=DIR modifikasi data single-machine [PREFIX/var]

--libdir=DIR library kode object [EPREFIX/include]

--includedir=DIR file-file Header C

--oldincludedir=DIR file-file Header C untuk non-gcc [/usr/include]

--infodir=DIR Dokumentasi info [PREFIX/info]

--mandir=DIR Dokumentasi man [PREFIX/man]

Contoh : /usr/shared/man

Tipe system:

--build=BUILD konfigurasi untuk pembuatan BUILD [guessed]

--host=HOST kompile-silang untuk build program agar berjalan di HOST

[BUILD]

--target=TARGET konfigurasi unutk pembuatan compiler untuk TARGET [HOST]

Fitur Pilihan :

--disable-FEATURE tidak meninclude-kan FEATURE (sama seperti –enable-

FEATURE=no)

--enable-FEATURE[=ARG] include FEATURE [ARG=yes]

--enable-layout=LAYOUT

--enable-v4-mapped memperbolehkan IPv6 sockets untuk menghandle koneksi

IPV4

--enable-exception-hook membolehkan fatal exception hook

--enable-maintainer-mode menjalankan perbaikan dan kompile waktu peringatan

--enable-pie Build httpd sebagai posisi mandiri yang dapat di eksekusi

---enable-modules=MODULE-LIST

Daftar ruang pemisah dari share module module untuk

Membolehkan “all” | “most”

--disable-authn-file file berdasar control autentikasi

--enable-authn-dbm DBM berdasarkan control autentikasi

--enable-authn-anon control atutentikasi anonymous

--enable-authn-dbd SQL berdasar control autentikasi

--disable-authn-default Penghalang autentikasi

--enable-authn-alias autentikasi provider alias

--disable-authz-host host berdasar kontrol autorisasi

--disable-authz-groupfile

'mensyaratkan group' kontrol autorisasi

--disable-authz-user 'mensyaratkan user' kontrol autorisasi

--enable-authz-dbm DBM berdasarkan kontol autorisasi

--enable-authz-owner 'mensyaratkan file-owner' kontrol autorisasi

--enable-authz-ldap LDAP berdasarkan autentikasi

--enable-authz-default penghalang kontrol autorisasi

--disable-auth-basic dasar autentikasi

--enable-auth-digest RFC2617 autentikasi

--enable-isapi support ekstensi isapi

--enable-file-cache file cache

--enable-cache dynamic file caching

--enable-disk-cache disk caching module

--enable-mem-cache memory caching module

--enable-dbd Apache DBD Framework

--enable-bucketeer buckets manipulation filter

--enable-dumpio I/O dump filter

--enable-echo ECHO server

--enable-example modul contoh dan module

--enable-case-filter example uppercase conversion filter

--enable-case-filter-in

example uppercase conversition input filter

--enable-ext-filter external filter module

--disable-include serverside Include

--disable-filter smart filtering

--disable-charset-lite

character set translation

--enable-charset-lite character set translation

example uppercase conversion input filter

--enable-ext-filter external filter module

--disable-include Server Side Include

--disable-filter smart filtering

--disable-charset-lite

karakter set translation

--enable-charset-lite karakter set translation

--enable-deflate deflate transfer encoding support

--enable-ldap LDAP caching dan connection pooling services

--disable-log-config logging konfigurasi

--enable-log-forensic forensic logging

--enable-logio input and output logging

--disable-env clearing/setting of ENV vars

--enable-mime-magic menentukan secara otomatis tipe MIME

--enable-cern-meta CERN-type meta files

--enable-expires kontrol header habis masa berlaku

--enable-headers kontrol header HTTP

--enable-ident RFC 1413 check identitas

--enable-usertrack user session tracking

--enable-unique-id per-request unique ids

--disable setenvif basing ENV vars on headers

--enable-version menentukan versi httpd dalam file config

--enable-proxy modul apache proxy

--enableproxy-connect Apache proxy CONNECT module

--enable-proxy-ftp Apache proxy FTP module

--enable-proxy-http Apache proxy HTTP module

--enable-proxy-ajp Apache proxy AJP module

--enable-ssl SSL/TLS support (mod_ssl)

--enable-distcache Select distcache support in mod_ssl

--enable-optional-hook-export

example optional hook exporter

--enable-optional-fn-import

example optional hook importer

--enable-optional-fn-export

example optional function exporter

--enable-static-support Build statically linked version of the support binnaries

--enable-static-htpasswd

Build statically linked version of htpasswd

--enable-static-htdigest

Build statically linked version of htdigest

--enable-static-rotatelogs

Build statically linked varsion of rotatelogs

--enable-static-logresolve

Build statically linked varsion of logresolve

--enable-static-checkgid

Build a statically linked vaersion of checkgid

--enable-http HTTP protocol handling

--disable-mime mapping of file extension to MIME

--enable-dav WebDAV protocol handling






Apache securing Apache HTTP Server

Apache HTTP Server salah satu stable dan service yang aman.
Berikut ini adalah komfigurasi yang perlu di perhatikan
oleh para admin dengan seksama :

FollowSymLinks
adalah enable secara default. jadi berhati hatilah
ketika membuat symbolic links dalam documentroot dari Apache
HTTP Server Web dengan kata lain merupakan hal yang buruk memberikan symbolic link /

The Indexes Directive
petunjuk ini mengenablekan secara default jika anda tidak ingin
user meng browse file di dalam server adalah hal terbaik untuk mengilangkan petunjuk/perintah ini.

The UserDir Directive
perintah UserDir Directive secara default di disablekarena dapat
mengkonfirm kehadiran account user dalam system. jika anda ingin mengenable
user directory browsing dalam server ikuti perintah berikut:

UserDir enabled
UserDIr disable root

Perintah ini mengaktifkan user directory browsing ke semua user directory ,selain root
.Jika anda ingin menmbahkan user ke dalam user dalam daftar akun yang di disable tambahkan spasi
Jangan menghilangkan IncludeNoExec Directive

secara default ,Server-side mengincludekan module yang tidak mengeksekusi perintah.
Sebaiknya dalam hal ini dibiarkan default saja karena berpotensi penyerang mengeksekusi perintah dalam system

Mengatur Permission untuk directory Exacutable
Tentukan permission yang di berikan hanya untuk root dan hanya yang berisi scripts atau CGI dapat di atur dengan perintah berikut:

chown root
chmod 755
--------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
Yang dibutuhkan adalah source-source berikut :

1. mysql-3.22.32.tar.gz
2. apache_1.3.26.tar.gz
3. php-4.1.2.tar.gz
4. openssl-0.9.6c.tar.gz
5. mod_ssl-2.8.10-1.3.26.tar.gz

Install MySQL-nya dulu
-----------------------------

unpack source nya, compile dan Install :

/usr/local > tar -xzvf mysql-3.22.32.tar.gz
pw groupadd mysql

pw useradd mysql
/usr/local > cd mysql-3.22.32/
/usr/local/mysql-3.22.32 > ./configure --prefix=/usr/local/mysql
/usr/local/mysql-3.22.32 > make
/usr/local/mysql-3.22.32 > make install
/usr/local/mysql-3.22.32 > cp support-files/my-medium.cnf /etc/my.cnf
cd /usr/local/mysql/
/usr/local/mysql/bin/mysql_install_db
/usr/local/mysqlbin>./scripts/mysql_install_db --user=mysql
/usr/local/mysql/chown -R root .
/usr/local/mysql/chown -R mysql var
/usr/local/mysql/chgrp -R mysql .
/usr/local/mysql/bin/mysqld_safe --user=mysql &

menjalankan MySQL :

/usr/local/mysql-3.22.32 > cd /usr/local/mysql/bin
/usr/local/mysql/bin > ./safe_mysqld &

untuk informasi lengkap installasinya ada pada http://www.mysql.com/doc/F/r/FreeBSD.html


Unpack dan configure Apache
-------------------------------------

/usr/local > tar -xzvf pache_1.3.26.tar.gz
/usr/local > cd apache_1.3.26/
/usr/local/apache_1.3.26 > ./configure --prefix=/usr/local/apache


Install PHP
-------------

unpack source nya, compile dan Install :

/usr/local > tar -xzvf php-4.1.2.tar.gz
/usr/local > cd php-4.1.2/
/usr/local/php-4.1.2 > ./configure --with-mysql=/usr/local/mysql \
> --with-xml \
> --with-apache=/usr/local/apache_1.3.26 \
> --enable-track-vars

/usr/local/php-4.1.2 > make
/usr/local/php-4.1.2 > make install
/usr/local/php-4.1.2 > cp php.ini-dist /usr/local/lib/php.ini



Install openssl dan mod_ssl
-----------------------------------

unpack source nya, compile dan Install :

/usr/local > tar -xzvf openssl-0.9.6c.tar.gz
/usr/local > cd openssl-0.9.6c/
/usr/local/openssl-0.9.6c > ./config --prefix=/usr/local/ssl
/usr/local/openssl-0.9.6c > make
/usr/local/openssl-0.9.6c > make test
/usr/local/openssl-0.9.6c > make install
/usr/local/openssl-0.9.6c > cd ..
/usr/local/ tar -xzvf mod_ssl-2.8.10-1.3.26.tar.gz
/usr/local > cd mod_ssl-2.8.10-1.3.26
/usr/local/mod_ssl-2.8.10-1.3.26 > ./configure --with-apache=/usr/local/apache_1.3.26


Install Apache
-------------------

/usr/local > cd apache_1.3.26/
/usr/local/apache_1.3.26 > SSL_BASE=/usr/local/openssl-0.9.6c \
> ./configure \
> --enable-module=ssl \
> --activate-module=src/modules/php4/libphp4.a \
> --enable-module=php4 \
> --prefix=/usr/local/apache2 \
> --enable-shared=ssl

setelah langkah-langkah diatas di jalankan, langkah selanjutnya adalah konfigurasi /usr/local/apache2/conf/httpd.conf, agar PHP kita dapat jalan maka kita tambahkan script di file httpd.conf seperti dibawah ini :



#LoadModule php4_module modules/libphp4.so

DirectoryIndex index.html index.htm index.php

AddType application/x-httpd-php .php .php3 .phtml

AddType application/x-httpd-php-source .phps

atau telnet ke komputer local :
# telnet localhost 80
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.

Jika sudah keluar tulisan diatas berarti apache sudah berjalan dengan benar.:)

/usr/local/apache_1.3.26 > make
/usr/local/apache_1.3.26 > make certificate TYPE=custom
/usr/local/apache_1.3.26 > make install

selesai .


Konfigurasi Apache
-------------------------

Edit httpd.conf yang berada di /usr/local/apache/conf/ , dan tambahkan baris berikut :

AddType application/x-tar .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

jalankan apache :

# /usr/local/apache/bin/apachectl start

untuk menjalankan apache dengan mode SSL :

# /usr/local/apache/bin/apachectl startssl

menjalankan dengan mode SSL , kita akan diminta memasukkan pass-phrase nya.
apabila kita tidak ingin memasukkan pass-phrase setiap kali apache di jalankan , lakukan langkah-langkah berikut :

1. Hilangkan enkripsi dari RSA private key ( dan kita backup file aslinya ) :

# cd /usr/local/apache/conf/ssl.key/
# cp server.key server.key.org
# openssl rsa -in server.key.org -out server.key

2. Pastikan file server.key hanya terbaca oleh root:

# chmod 400 server.key

kemudian restart apache .

referensi :
http://www.apache.org
http://www.mysql.com/doc/F/r/FreeBSD.htm
http://www.modssl.org
http://www.devshed.com

3 comments:

Anonymous said...

It is rather valuable answer

Anonymous said...

Listen.

Anonymous said...

Excuse for that I interfere ?To me this situation is familiar. I invite to discussion. Write here or in PM.