Linux Admin Mengamati Log Sistem -...

28
INFOLINUX 09/2005 50 TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial www.infolinux.web.id Linux Admin T ugas sistem operasi sangatlah berat. Selain bertugas dari sisi low level un- tuk berbicara dengan hardware dan mengatur proses sistem, sistem operasi juga harus bertindak layaknya seorang mata-ma- ta tangguh yang mencatat hampir semua hal yang terjadi pada komputer. Apa yang dicatat tersebut umumnya dimulai dari proses booting, kemudian event-event yang terjadi pada sistem ketika beroperasi, dan catatan-catatan lainnya. Tentu saja, karena sistem bisa berkembang menjadi begitu kompleks, sistem operasi ti- dak dapat mencatat semuanya sendiri. Oleh karena beberapa program yang berfungsi menyediakan service kemudian membantu sistem operasi untuk turut mencatat ke log sistem sesuai dengan tugas yang diemban- nya. Dengan demikian, log untuk hampir keseluruhan sistem pun dapat dicapai. Sebenarnya, apa saja yang bisa kita laku- kan dengan log-log tersebut? Berikut ini adalah beberapa di antaranya: Troubleshooting. Tidaklah mudah untuk melakukan troubleshooting. Apalagi pada sistem yang kompleks. Namun setidak- nya, dengan adanya log file, kita bisa mendapatkan sedikit catatan tentang apa yang terjadi sebelumnya. Ini diharapkan bisa membantu kita untuk memecahkan masalah. Audit keamanan. Umumnya, bicara ma- salah keamanan, sistem operasi multiuser seperti halnya Linux akan sangat peduli. Segala yang berhubungan dengan tinda- kan mengganggu hardware, mengganggu user lain, mengganggu sistem, menggang- gu jaringan umumnya akan dicatat. Ad- ministrator dapat membuat script seder- hana untuk melihat percobaan gangguan pada sistem. Hanya, tentu saja kita tidak bisa selalu mengandalkan log file untuk setiap percobaan gangguan. User yang nakal (dan hebat pula) selalu ada. Audit service. Apabila kita mengelola server yang menjalankan service SAMBA, SQUID, HTTPD, dan lainnya, bantuan log file akan terasa sangat berguna. Umum- nya, apa yang dilakukan oleh user un- tuk meminta service memang tidak akan dapat dicatat oleh server. Namun, penye- dia service semacam SAMBA, SQUID dan HTTPD akan membantu sistem dengan menyediakan catatan yang lebih detail, sekaligus melengkapi log sistem (tidak semua service menyediakan fitur ini). Umumnya, satu masalah besar yang menghambat log adalah tidak terinteg- rasinya log file. Di Linux, log general untuk sistem memang tersedia (syslog), namun, tidak semua proses lantas memiliki hak untuk mengubah file tersebut begitu saja. Dengan demikian, beberapa aplikasi akan memilih untuk membuat log file sendiri di lokasi yang bervariasi: mulai dari home di- rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain. Proses-proses semacam ini membuat log yang bahkan dapat dihapus oleh user. Sayangnya, kita tidak bisa memaksa semua aplikasi untuk dapat mencatat ke log sistem. Apa yang bisa dilakukan adalah menjaga sebaik-baiknya, sekaligus meman- faatkan log file semaksimal mungkin untuk menjaga sistem. Setelah ini, kita akan mulai membahas beberapa log file yang dapat membantu kita untuk melakukan troubleshooting, audit ke- amanan dan audit service. Hampir semua file log akan disimpan di direktori /var/log. An- da akan membutuhkan hak akses root untuk dapat membaca semua log yang dibahas di artikel ini. Sebagai catatan, beberapa log file disimpan di lokasi yang terpisah atau bahkan tidak tersedia, tergantung pada kebijakan distro. Distro yang menuruti standar Linux seharusnya tidak akan menghapus atau menggabungkan atau menyimpan ke tempat lain log file tertentu. Tulisan ini dibuat pada distro SUSE 9.3 Pro, namun seharusnya bisa diterapkan pada distro-distro lain. /var/log/messages Ini adalah file log yang sangat sangat ber- guna. Hampir semua kejadian sistem akan didokumentasikan di sini. Karena file ini merupakan catatan hampir semua aktivi- tas sistem, maka hanya user root dan group root yang bisa membacanya (namun be- berapa distro mengubahnya menjadi lebih ketat atau lebih longgar). File ini akan mencatat mulai proses boot- ing sampai service. Umumnya, beberapa service besar juga akan mencatat ke file log ini, jadi, boleh dikatakan, file log ini memi- liki hampir semua informasi. Berikut ini adalah baris-baris acak dari messages. Jun 14 11:44:29 tbiserv0 kernel: klogd 1.4.1, log source = /proc/ kmsg started. Jun 14 11:44:29 tbiserv0 kernel: ieee1394: Host added: ID:BUS [0-00:1023] GUID[000fea0000f64305] Jun 14 11:44:29 tbiserv0 kernel: hw_random hardware driver 1.0.0 loaded Jun 14 11:44:29 tbiserv0 kernel: Mengamati Log Sistem Hampir semua dari apa yang terjadi ketika komputer beroperasi, umumnya akan dicatat ke log file. Dengan demikian, administrator sistem dapat mengamati log untuk melihat apa saja yang sedang terjadi pada sistem, untuk kemudian dapat menindaklanjutinya sesuai dengan kebijakan yang diterapkan. Di artikel kali ini, kita akan membahas beberapa log di sistem yang mungkin akan sangat berguna dalam memecahkan masalah.

Transcript of Linux Admin Mengamati Log Sistem -...

Page 1: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200550

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Linux Admin

Tugas sistem operasi sangatlah berat.

Selain bertugas dari sisi low level un-

tuk berbicara dengan hardware dan

mengatur proses sistem, sistem operasi juga

harus bertindak layaknya seorang mata-ma-

ta tangguh yang mencatat hampir semua hal

yang terjadi pada komputer.

Apa yang dicatat tersebut umumnya

dimulai dari proses booting, kemudian

event-event yang terjadi pada sistem ketika

beroperasi, dan catatan-catatan lainnya.

Tentu saja, karena sistem bisa berkembang

menjadi begitu kompleks, sistem operasi ti-

dak dapat mencatat semuanya sendiri. Oleh

karena beberapa program yang berfungsi

menyediakan service kemudian membantu

sistem operasi untuk turut mencatat ke log

sistem sesuai dengan tugas yang diemban-

nya. Dengan demikian, log untuk hampir

keseluruhan sistem pun dapat dicapai.

Sebenarnya, apa saja yang bisa kita laku-

kan dengan log-log tersebut? Berikut ini

adalah beberapa di antaranya:

� Troubleshooting. Tidaklah mudah untuk

melakukan troubleshooting. Apalagi pada

sistem yang kompleks. Namun setidak-

nya, dengan adanya log fi le, kita bisa

mendapatkan sedikit catatan tentang apa

yang terjadi sebelumnya. Ini diharapkan

bisa membantu kita untuk memecahkan

masalah.

� Audit keamanan. Umumnya, bicara ma-

salah keamanan, sistem operasi multiuser

seperti halnya Linux akan sangat peduli.

Segala yang berhubungan dengan tinda-

kan mengganggu hardware, mengganggu

user lain, mengganggu sis tem, menggang-

gu jaringan umumnya akan dicatat. Ad-

ministrator dapat membuat script seder-

hana untuk melihat percobaan gangguan

pada sistem. Hanya, tentu saja kita tidak

bisa selalu mengandalkan log fi le untuk

setiap percobaan gangguan. User yang

nakal (dan hebat pula) selalu ada.

� Audit service. Apabila kita mengelola

server yang menjalankan service SAMBA,

SQUID, HTTPD, dan lainnya, ban tuan

log fi le akan terasa sangat berguna. U mum -

nya, apa yang dilakukan oleh user un-

tuk meminta service memang tidak akan

dapat dicatat oleh server. Namun, penye-

dia service semacam SAMBA, SQUID dan

HTTPD akan membantu sistem de ngan

menyediakan catatan yang lebih de tail,

sekaligus melengkapi log sistem (tidak

semua service menyediakan fi tur ini).

Umumnya, satu masalah besar yang

menghambat log adalah tidak terinteg-

rasinya log fi le. Di Linux, log general untuk

sistem memang tersedia (syslog), namun,

tidak semua proses lantas memiliki hak

untuk mengubah fi le tersebut begitu saja.

Dengan demikian, beberapa aplikasi akan

memilih untuk membuat log fi le sendiri di

lokasi yang bervariasi: mulai dari home di-

rectory user saja (akan sangat menyebalkan)

sampai lokasi temporary lain. Proses-proses

semacam ini membuat log yang bahkan

dapat dihapus oleh user.

Sayangnya, kita tidak bisa memaksa

semua aplikasi untuk dapat mencatat ke

log sistem. Apa yang bisa dilakukan adalah

menjaga sebaik-baiknya, sekaligus meman-

faatkan log fi le semaksimal mungkin untuk

menjaga sistem.

Setelah ini, kita akan mulai membahas

beberapa log fi le yang dapat membantu kita

untuk melakukan troubleshooting, audit ke-

amanan dan audit service. Hampir semua fi le

log akan disimpan di direktori /var/log. An-

da akan membutuhkan hak akses root untuk

dapat membaca semua log yang dibahas di

artikel ini. Sebagai catatan, beberapa log fi le

disimpan di lokasi yang terpisah atau bahkan

tidak tersedia, tergantung pada kebijakan

distro. Distro yang menuruti standar Linux

seharusnya tidak akan menghapus atau

menggabungkan atau menyimpan ke tempat

lain log fi le tertentu. Tulisan ini dibuat pada

distro SUSE 9.3 Pro, namun seharusnya bisa

diterapkan pada distro-distro lain.

/var/log/messagesIni adalah fi le log yang sangat sangat ber-

guna. Hampir semua kejadian sistem akan

didokumentasikan di sini. Karena fi le ini

merupakan catatan hampir semua aktivi-

tas sistem, maka hanya user root dan group

root yang bisa membacanya (namun be-

berapa distro mengubahnya menjadi lebih

ketat atau lebih longgar).

File ini akan mencatat mulai proses boot-

ing sampai service. Umumnya, beberapa

service besar juga akan mencatat ke fi le log

ini, jadi, boleh dikatakan, fi le log ini memi-

liki hampir semua informasi.

Berikut ini adalah baris-baris acak dari

messages.

Jun 14 11:44:29 tbiserv0 kernel: klogd 1.4.1, log source = /proc/kmsg started.Jun 14 11:44:29 tbiserv0 kernel: ieee1394: Host added: ID:BUS[0-00:1023] GUID[000fea0000f64305]Jun 14 11:44:29 tbiserv0 kernel: hw_random hardware driver 1.0.0 loadedJun 14 11:44:29 tbiserv0 kernel:

Mengamati Log SistemHampir semua dari apa yang terjadi ketika komputer beroperasi, umumnya akan dicatat ke log file. Dengan demikian, administrator sistem dapat mengamati log untuk melihat apa saja yang sedang terjadi pada sistem, untuk kemudian dapat menindaklanjutinya sesuai dengan kebijakan yang diterapkan. Di artikel kali ini, kita akan membahas beberapa log di sistem yang mungkin akan sangat berguna dalam memecahkan masalah.

Page 2: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 51

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Linux Admin

Linux agpgart interface v0.100 (c) Dave JonesJun 14 11:44:29 tbiserv0 kernel: agpgart: Detected an Intel 865 Chipset.Jun 14 11:44:29 tbiserv0 kernel: agpgart: Maximum main memory to use for agp memory: 941MJun 14 11:44:29 tbiserv0 kernel: agpgart: AGP aperture is 128M @ 0xe8000000Jun 14 11:44:29 tbiserv0 kernel: usbcore: registered new driver usbfsJun 14 11:44:29 tbiserv0 kernel: usbcore: registered new driver hubJun 14 11:44:29 tbiserv0 kernel: ACPI: PCI interrupt 0000:00:1d.7[D] -> GSI 23 (level, low) -> IRQ 185Jun 14 11:44:29 tbiserv0 kernel: ehci_hcd 0000:00:1d.7: EHCI Host Controller......Jun 14 13:07:09 tbiserv0 squid[8307]: Accepting HTTP connections at 0.0.0.0, port 8888, FD 12.Jun 14 13:07:09 tbiserv0 squid[8307]: Accepting ICP messages at 0.0.0.0, port 3130, FD 13.Jun 14 13:07:09 tbiserv0 squid[8307]: HTCP Disabled.Jun 14 13:07:09 tbiserv0 squid[8307]: Accepting SNMP messages on port 3401, FD 14.Jun 14 13:07:09 tbiserv0 squid[8307]: WCCP Disabled.Jun 14 13:07:09 tbiserv0 squid[8307]: Ready to serve requests.Jun 14 13:07:09 tbiserv0 squid[8307]: Done scanning /var/cache/squid swaplog (0 entries)Jun 14 13:07:09 tbiserv0 squid[8307]: Finished rebuilding storage from disk.Jun 14 13:07:09 tbiserv0 squid[8307]: 0 Entries scannedJun 14 13:07:09 tbiserv0

squid[8307]: 0 Invalid entries.Jun 14 13:07:09 tbiserv0 squid[8307]: 0 With invalid flags.Jun 14 13:07:09 tbiserv0 squid[8307]: 0 Objects loaded.Jun 14 13:07:09 tbiserv0 squid[8307]: 0 Objects expired.Jun 14 13:07:09 tbiserv0 squid[8307]: 0 Objects cancelled.Jun 14 13:07:09 tbiserv0 squid[8307]: 0 Duplicate URLs purged.Jun 14 13:07:09 tbiserv0 squid[8307]: 0 Swapfile clashes avoided.Jun 14 13:07:09 tbiserv0 squid[8307]: Took 0.6 seconds ( 0.0 objects/sec).

...

...Jun 14 17:32:05 tbiserv0 nmbd[5939]: [2005/06/14 17:32:05, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(282)Jun 14 17:32:05 tbiserv0 nmbd[5939]: become_domain_master_browser_bcast:Jun 14 17:32:05 tbiserv0 nmbd[5939]: Attempting to become domain master browser on workgroup TBI-CKG on subnet 192.168.0.1Jun 14 17:32:05 tbiserv0 nmbd[5939]: [2005/06/14 17:32:05, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(295)Jun 14 17:32:05 tbiserv0 nmbd[5939]: become_domain_master_browser_bcast: querying subnet 192.168.0.1 for domain master browser on workgroup TBI-CKG

...

...Jun 14 17:33:38 tbiserv0 dhcpd:

DHCPREQUEST for 192.168.0.99 from 00:0f:ea:e5:6b:22 (tbi03) via eth0Jun 14 17:33:38 tbiserv0 dhcpd: DHCPACK on 192.168.0.99 to 00:0f:ea:e5:6b:22 (tbi03) via eth0

Dari baris-baris yang ditampilkan terse-

but, bisa kita lihat bahwa messages men-

catat apa yang terjadi pada kernel (umum-

nya pada saat booting atau ada perubahan

di sistem), mencatat apa yang terjadi pada

SQUID, dan mencatat yang terjadi pada

SAMBA, dan mencatat permintaan IP dari

workstation kepada DHCPD.

File ini juga mencatat yang yang terjadi

ketika Anda mengutak-atik perangkat keras

yang berpengaruh pada sistem, sebagai con-

toh, ketika kita mencabut kabel dari kartu

jaringan dan memasangnya kembali:

Jun 14 17:34:00 tbiserv0 kernel: eth0: network connection downJun 14 17:34:02 tbiserv0 kernel: eth0: network connection up using port AJun 14 17:34:02 tbiserv0 kernel: speed: 100Jun 14 17:34:02 tbiserv0 kernel: autonegotiation: yesJun 14 17:34:02 tbiserv0 kernel: duplex mode: fullJun 14 17:34:02 tbiserv0 kernel: flowctrl: symmetricJun 14 17:34:02 tbiserv0 kernel: irq moderation: disabledJun 14 17:34:02 tbiserv0 kernel: scatter-gather: enabledJun 14 17:34:02 tbiserv0 kernel: tx-checksum: enabledJun 14 17:34:02 tbiserv0 kernel: rx-checksum: enabled

Dengan banyaknya kejadian yang dicatat

oleh fi le ini, ukuran fi le akan membesar

dengan cepat. Namun, beberapa distro telah

menerapkan log rotator yang akan merotasi

log sehingga ukurannya tetap masuk akal.

Memanfaatkan log ini, Anda bisa me nge-

tahui apa yang diinginkan dengan bantuan

program grep dan menyaringnya dengan

kata kunci yang telah didefi nisikan (grep

bertingkat bisa diterapkan untuk pencarian

yang lebih akurat). Atau, Anda dapat lang-

Page 3: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200552

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Linux Admin

sung membuka fi le log ini dan mencari de-

ngan kata kunci tersebut. Anda yang senang

membangun shell script tentunya bisa

membangun shell script sederhana untuk

membuat log ini lebih mudah dibaca.

/var/log/apache2/*Untuk Anda yang menyalakan web server

apache2, maka patut bergembira. Apache

HTTPD merupakan salah satu service yang

sangat senang mencatat kegiatan yang di-

lakukan selama melayani koneksi. Log yang

dicatat mencakup kegiatan selama melayani

ataupun ketika terjadi kegagalan. Lokasi fi le

log akan sangat tergantung pada distro yang

Anda gunakan (cobalah /var/log/httpd apa-

bila apache2 tidak ditemukan).

Yang menarik dari web server ini adalah

level log yang jelas dan sangat mudah untuk

diatur di fi le konfi gurasi utamanya. Bahkan,

format log juga bisa diatur dengan sangat

mudah. Selain itu, tersedia banyak sekali log

analyser untuk apache web server di pasaran

open source.

Berikut ini adalah beberapa contoh log

kegiatan:

192.168.0.99 - - [21/Jun/2005:12:39:27 +0700] “OPTIONS / HTTP/1.1” 200 - “-” “Microsoft-WebDAV-MiniRedir/5.1.2600”192.168.0.99 - - [21/Jun/2005:12:39:27 +0700] “PROPFIND /NETLOGON HTTP/1.1” 405 972 “-” “Microsoft-WebDAV-MiniRedir/5.1.2600”192.168.0.99 - - [21/Jun/2005:12:40:13 +0700] “OPTIONS / HTTP/1.1” 200 - “-” “Microsoft-WebDAV-MiniRedir/5.1.2600”192.168.0.99 - - [21/Jun/2005:12:40:13 +0700] “PROPFIND /dos HTTP/1.1” 405 972 “-” “Microsoft-WebDAV-MiniRedir/5.1.2600”192.168.0.1 - - [21/Jun/2005:13:16:36 +0700] “GET /favicon.ico HTTP/1.0” 404 1044 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1”

Sementara, berikut ini adalah beberapa

contoh log entry ketika terjadi kesalahan:

[Tue Jun 21 11:50:11 2005] [warn] Init: Session Cache is not configured [hint: SSLSessionCache][Tue Jun 21 11:50:11 2005] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)[Tue Jun 21 11:50:11 2005] [notice] Apache/2.0.53 (Linux/SUSE) configured -- resuming normal operations[Tue Jun 21 11:57:18 2005] [error] [client 192.168.0.1] File does not exist: /srv/www/htdocs/favicon.ico

Bisa kita lihat bahwa level-level log ditu-

liskan dengan sangat mudah dibaca. Mulai

dari notice, warn, dan error.

/var/log/samba/log.*Bagi Anda yang menyalakan service SAM-

BA, Anda juga patut berbahagia. SAMBA

termasuk salah satu proyek open source ter-

baik dari sisi dokumentasi dan pencatatan.

Di dalam direktori /var/log/samba lah ter-

dapat catatan dari segala aktivitas yang ter-

jadi selama melayani.

Umumnya, Anda akan memiliki dua fi le

yaitu log.smbd dan log.nmbd. Apabila Anda

menggunakan winbind, maka sebuah log

tambahan, log.winbindd akan dapat Anda

temukan.

Di fi le-fi le log tersebut, dengan mudah

Anda bisa melihat apa yang sedang terjadi,

termasuk catatan berguna untuk menyele-

saikan masalah.

Contoh log.smbd:[2005/06/21 13:07:12, 1] smbd/service.c:make_connection_snum(642) tbi04 (192.168.0.98) connect to service dos initially as user dos (uid=1002, gid=100) (pid 6914)[2005/06/21 13:07:14, 1] smbd/service.c:make_connection_snum(642) tbi04 (192.168.0.98) connect to service netlogon initially as user dos (uid=1002, gid=100) (pid 6914)

[2005/06/21 13:12:24, 1] smbd/service.c:make_connection_snum(642) tbi04 (192.168.0.98) connect to service dos initially as user dos (uid=1002, gid=100) (pid 6914)[2005/06/21 13:12:39, 1] smbd/service.c:close_cnum(830) tbi04 (192.168.0.98) closed connection to service netlogon

Di fi le log.smbd tersebut, Anda bisa me-

lihat setiap detil koneksi SAMBA. Dalam

contoh tersebut, kita bisa melihat bagaima-

na proses logout sedang dilakukan (closed

connection).

Contoh fi le log.nmbd:[2005/06/21 11:50:09, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(282) become_domain_master_browser_bcast: Attempting to become domain master browser on workgroup TBI-CKG on subnet 192.168.0.1[2005/06/21 11:50:09, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(295) become_domain_master_browser_bcast: querying subnet 192.168.0.1 for domain master browser on workgroup TBI-CKG[2005/06/21 11:50:13, 0] nmbd/nmbd_logonnames.c:become_logon_server_success(124) become_logon_server_success: Samba is now a logon server for workgroup TBI-CKG on subnet 192.168.0.1[2005/06/21 11:50:17, 0] nmbd/nmbd_become_dmb.c:become_domain_master_stage2(113) *****

Samba server TBISERV0 is now a domain master browser for workgroup TBI-CKG on subnet 192.168.0.1 *****[2005/06/21 11:50:32, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(396)

Page 4: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 53

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Linux Admin

*****

Samba name server TBISERV0 is now a local master browser for workgroup TBI-CKG on subnet 192.168.0.1

*****

Di fi le log.nmbd tersebut, Anda bisa me-

lihat setiap detil SAMBA yang berhubungan

dengan kegiatan name resolution. Pada con-

toh tersebut, terlihat proses bagaiman SAM-

BA server bernegosiasi menjadi LMB.

/var/log/squid/*.logSquid juga merupakan salah satu service

yang sangat menyenangkan penggunanya.

Di log yang dimiliki, squid mencatat ham-

pir segalanya, mulai dari kegiatan melayani

se bagai proxy sampai detail akses per kom-

puter dan tujuan yang diakses.

Berikut ini adalah beberapa baris dari

cache.log, yang mencatat kegiatan selama

melayani:

2005/06/21 11:50:18| Beginning Validation Procedure2005/06/21 11:50:18| Completed Validation Procedure2005/06/21 11:50:18| Validated 44 Entries

Sementara, berikut ini adalah catatan

detil akses dari komputer client dan alamat

yang dituju. Contoh berikut ini juga mem-

pertunjukkan porn fi lter yang menolak user

ketika mengunjungi 17tahun.com.

1119334601.378 785 192.168.0.98 TCP_DENIED/403 1285 GET http://17tahun.com/ - NONE/- text/html1119334601.471 92 192.168.0.98 TCP_DENIED/403 1307 GET http://17tahun.com/favicon.ico - NONE/- text/html1119334681.184 19 192.168.0.98 TCP_IMS_HIT/304 274 GET http://192.168.0.1/

- NONE/- text/html1119334685.190 13 192.168.0.98 TCP_MISS/200 934 GET http://192.168.0.1/pub/ - DIRECT/192.168.0.1 text/html

/var/log/boot*Di fi le log ini, Anda bisa mengamati be-

berapa hal yang terjadi pada saat booting.

Tidak semua memang, tapi cukup banyak

yang bisa diamati. Anda juga mungkin bisa

melihat tambahannya di messages.

Beberapa service seperti DHCPD memang

tidak memiliki sendiri. Namun, kerjasama-

nya cukup baik dengan menuliskan informa-

si yang sangat detil di messages. Melihat log

DCHCP di messages akan sangat membantu.

Dengan tetap memperhatikan fi le log, banyak

hal yang mengganggu sistem mungkin dapat

dicegah atau dihentikan. Tentunya, termasuk

bagaimana menjaga sistem agar tetap handal

melayani. Sampai di sini dulu pembahasan

kita tentang fi le log. Tetaplah mengawasi!

Noprianto ([email protected])

Page 5: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200554

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

PHP

Bekerja dengan teks sebenarnya me-

nyenangkan. Apabila Anda ba nyak

bekerja dengan pemrograman atau

SQL seperti disebutkan, banyak sekali pem-

rosesan teks yang terjadi pada bidang-bi-

dang tersebut. Barangkali yang paling umum

adalah bagaimana interpreter atau kompiler

memeriksa apakah kode Anda benar atau ti-

dak. Setelah itu, bagaimana interpreter atau

kompiler mengenali maksud Anda menge-

tikkan kode program Anda. Contoh lain

yang sangat umum juga adalah bagaimana

database engine mengenali dan memahami

sintaks SQL yang Anda berikan.

Tentu saja, pemrosesan tersebut tidak

sesederhana bagaimana kita memeriksa

input dengan if misalnya. Karena, kita ti-

dak akan tahu persis bagaimana seseorang

menuliskan kode program atau sintaks SQL

misalnya. Ada yang menuliskan dalam be-

berapa baris untuk satu perintah, ada yang

menggunakan banyak tab dan spasi, ada

yang menuliskannya sedempet mungkin,

dan lain sebagainya. Belum lagi kalau kita

mengizinkan adanya bagian opsional dari

suatu sintaks. Apa yang bisa kita lakukan

adalah dengan memberikan aturan. Sebagai

contoh, aturan-aturan fungsi dalam bahasa

pemrograman tertentu. Atau, aturan sintaks

SQL untuk mengambil data. Sebagai con-

toh, berikut ini adalah aturan sintaks SE-

LECT dalam PostgreSQL:

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]

* | expression [ AS output_ name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start ] [ FOR UPDATE [ OF table_name [, ...] ] ]

Setelah aturan kita defi nisikan, maka

kemudian kita dapat mengatur sejumlah

parser untuk menangani input dari user.

Bicara soal parser itu sendiri, banyak sekali

tool parser yang ada di dunia open source.

Parser-parser generator tersebut dapat di-

manfaatkan apabila Anda berniat untuk

membangun aturan bahasa sendiri. Umum-

nya, apabila Anda ingin membangun bahasa

pemrograman sendiri.

Di artikel ini, kita tidak akan membahas

parser-parser tersebut. Apa yang akan kita

bahas adalah pembuatan parser sederhana

dengan memanfaatkan regular expression.

Bahasa pemrograman yang akan dipergu-

nakan adalah bahasa PHP. Dan, tentu saja,

karena regular expression bekerja dengan

sangat lambat, maka kecepatan parsing akan

jauh kalah dibandingkan kalau parsing di-

lakukan oleh tool yang sebenarnya.

Beberapa contoh yang akan kita bahas

adalah pemeriksaan apakah suatu sintaks

benar atau salah. Tentu saja, sintaks tersebut

kita buat sesuai aturan yang kita inginkan.

Setelah itu, kita juga bisa memanfaatkan

regular expression untuk mengambil teks

tertentu yang memenuhi sejumlah aturan

(yang kita buat sendiri) untuk diproses le-

bih lanjut. Contoh yang paling nyata adalah

ketika kita ingin membangun sendiri doku-

mentator dari source code kita.

Regular expression yang akan kita ba-

has mencakup posix extended RE dan Perl

Compatible RE, sebagaimana yang didu-

kung oleh PHP. Versi PHP yang digunakan

adalah 4.x.

Posix Extended Regular expressionPosix extended RE adalah implementasi

PHP untuk regular expression POSIX yang

diatur dalam POSIX 1003.2. Umumnya,

program-program di Linux yang kompati-

bel dengan standar POSIX juga menerapkan

regular expression yang mengacu kepada

standar POSIX tersebut. Contoh yang pa-

ling baik adalah grep dan tr.

Di PHP, umumnya Posix RE lebih mudah

digunakan daripada PCRE. Sayangnya, Posix

RE PHP tidaklah binary-safe. Namun, untuk

pemrosesan teks yang kompleks sekalipun,

Posix RE sudah jauh lebih dari cukup.

Parsing Sederhana dengan Regular ExpressionBagi Anda yang terbiasa bekerja dengan pemrograman atau SQL, tentunya bekerja de-ngan sesuatu yang melibatkan penggunaan sintaks adalah hal yang wajar. Baik sintaks dalam pemrograman ataupun statement SQL. Di artikel kali ini, kita akan membahas cara melakukan parsing sederhana secara high level memanfaatkan regular expression. De-ngan demikian, kita bisa membuat sintaks sederhana, memeriksa apakah suatu sintaks valid atau tidak dan atau mengambil teks tertentu dalam suatu file untuk diformat lebih lanjut.

Page 6: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 55

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

PHP

Umumnya, PHP yang terinstal pada

sistem Anda telah dilengkapi dengan du-

kungan untuk regular expression ini, se-

hingga instalasi tambahan tidak diperlukan.

Implementasi Posix RE di PHP dilakukan

melalui fungsi-fungsi berikut ini:

� ereg_replace (untuk mengganti teks ber-

dasarkan pattern RE).

� ereg (untuk mencari teks berdasarkan

pattern RE).

� eregi_replace (sama seperti ereg_replace,

namun bekerja secara case insensitive).

� eregi (sama seperti ereg, namun bekerja

secara case insensitive).

� split (memecah teks menjadi array ber-

dasarkan pattern RE).

� spliti (sama seperti split, namun bekerja

secara case insensitive).

� sql_regcase (pembuatan RE untuk pen-

carian case insensitive).

Dengan fungsi-fungsi tersebut (yang

sebenarnya sangat sedikit, hanya ada tiga

sampai empat fungsi kalau tidak memper-

hatikan variannya), Anda sudah bisa mem-

bangun pemrosesan teks yang luar biasa

menggunakan RE. Berikut ini adalah be-

berapa contoh sederhana.

ereg dan eregiAndai kata Anda memiliki sejumlah teks, di

mana Anda ingin mengetahui apakah ter-

dapat teks tertentu di dalam teks tersebut

yang memiliki aturan tertentu, bisa mem-

pergunakan fungsi ini. Secara umum, apa-

bila terdapat kemungkinan bahwa teks di-

tuliskan tanpa memperhatikan case (dan ini

sangat umum terjadi), maka penggunaan

eregi() akan lebih aman dan akurat.

Contoh sederhana adalah bagaimana

eregi() digunakan untuk mengetahui apa-

kah tanggal yang dimasukkan oleh user

telah memenuhi aturan tanggal YYYY-

MM-DD atau tidak. Berikut ini adalah

kodenya:

source code:<?

$pat = “([0-9]{4})-([0-9] {1,2})-([0-9]{1,2})”; $input1 = “2005-06-19”; $input2 = “2005-6-19”; $input3 = “05-06-19”;

if (ereg($pat, $input1)) echo “$input1 sesuai dengan aturan $pat”; else echo “$input1 TIDAK sesuai dengan aturan $pat”; echo “\n”;

if (ereg($pat, $input2)) echo “$input2 sesuai dengan aturan $pat”; else echo “$input2 TIDAK sesuai dengan aturan $pat”; echo “\n”;

if (ereg($pat, $input3)) echo “$input3 sesuai dengan aturan $pat”; else echo “$input3 TIDAK sesuai dengan aturan $pat”; echo “\n”;

?>

Penjelasan kode:� Kita memiliki tiga variabel, masing-ma-

sing adalah $Input1, $input2 dan $in-

put3. Ketiga variabel tersebut akan diuji

dengan pattern $pat.

� Fungsi ereg() akan mengembalikan nilai

true atau false sesuai dengan hasil peme-

riksaan RE berdasarkan $pat kepada $in-

put1, $input2, atau $input3.

Berikut ini adalah keluaran dari kode

tersebut:

$ php a.php 2005-06-19 sesuai dengan aturan ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})2005-6-19 sesuai dengan aturan ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})05-06-19 TIDAK sesuai dengan aturan ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})

Contoh tersebut tentunya bisa dikem-

bangkan lebih lanjut menjadi contoh

pemeriksaan sintaks sederhana. Contoh

berikut ini akan menguji apakah teks yang

diberikan mengandung penulisan fungsi

PHP yang valid dengan asumsi fungsi PHP

yang valid adalah:

� diawali dengan kata function.

� diikuti oleh nama fungsi.

� diikuti oleh kurung buka.

� diikuti oleh variable list (opsional).

� diikuti oleh kurung tutup.

� diikuti oleh kurung kurawal buka.

� diikuti oleh isi fungsi (opsional).

� diikuti dan ditutup oleh kurung kurawal

tutup.

� antar token yang diperiksa boleh dipi-

sahkan dengan white space.

Namun, kita tidak akan memeriksa apa-

kah sintaks dalam variable list dan isi fungsi

adalah sintaks yang benar atau tidak.

source code:<?

$pat = “^(function)([[: space:]]+)([a-zA-Z_]+[[ :alnum:]]*)([[:space:]]* )(\()(.*)(\))([[:space: ]]*)(\{)(.*)(\})$”;

$input1 = “function a() { echo ‘a’; }”;

$input2 = “function _b($a, $b, $c) { print_r($a); print_ r($b); print_r($c); }”;

$input3 = “function 1a() { echo ‘ini function yang salah karena nama fungsi diawali bilangan’;}”;

$input4 = “function z()”;

if (eregi($pat, $input1)) echo “Syntax OK”; else echo “Syntax Error”; echo “\n”;

if (eregi($pat, $input2)) echo “Syntax OK”; else

Page 7: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200556

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

PHP

echo “Syntax Error”; echo “\n”;

if (eregi($pat, $input3)) echo “Syntax OK”; else echo “Syntax Error”; echo “\n”;

if (eregi($pat, $input4)) echo “Syntax OK”; else echo “Syntax Error”; echo “\n”;

?>

penjelasan source code:� Kita memiliki satu pattern untuk

pengecekan sintaks penulisan fungsi di

PHP yang disimpan dalam variabel $pat.

Sekali lagi, ini adalah pengecekan seder-

hana dan tidak mengecek kebenaran sin-

taks variable list dan function body.

� Kita memiliki empat variabel input yang

masing-masing berisikan string fungsi

yang ingin diuji.

� $input1 dan $input2 adalah contoh yang

valid

� $input3 dan $input4 adalah contoh yang

tidak valid karena pada $input3, nama

fungsi diawali dengan bilangan. Semen-

tara, $input4 tidak valid karena deklarasi

fungsi belum memasukkan penanda isi

fungsi.

� Khusus untuk $pat, kita memecah to-

ken-token yang ingin diuji ke dalam

group-group, yang ditandai dengan

kurang buka dan kurung tutup. Ada-

nya [[:space:]] diantara beberapa token

menandai bahwa white space diijinkan

diantara token-token tersebut.

� repetition operator * berarti nol atau le-

bih, repetion operator + berarti satu atau

lebih.

� Karakter . (titik) mewakili setiap karak-

ter.

� Beberapa karakter seperti ( dan { perlu

diescape menjadi \( dan \{ karena meru-

pakan karakter spesial yang memiliki arti

tertentu di dalam RE.

Berikut ini adalah keluaran dari kode

tersebut:

$ php b.php Syntax OKSyntax OKSyntax ErrorSyntax Error

Fungsi ereg() dan eregi() merupakan

fungsi yang sangat berguna, seperti dalam

kedua contoh tersebut. Anda bisa memba-

ngun rutin untuk memeriksa pattern yang

defi nisikan sebagai aturan Anda sendiri.

Untuk membantu, POSIX RE telah menye-

diakan beberapa kelas karakter. Berikut ini

adalah beberapa di antaranya:

� [:alnum:], semua huruf dan bilangan.

� [:alpha:], semua huruf.

� [:blank:], semua white space horizontal.

� [:digit:], semua bilangan.

� [:print:], semua karakter yang bisa dice-

tak, termasuk spasi.

� [:space:], semua white space vertikal dan

horizontal.

Kelas-kelas tersebut bisa digunakan di

program grep, tr dan program lain yang

memanfaatkan Posix RE.

ereg_replace dan eregi_replaceFungsi ereg() dan eregi() berguna untuk

melakukan matching. Namun, ada kalanya,

matching saja tidak cukup. Contoh yang

umum terjadi misalnya adalah ketika Anda

ingin mengganti teks tertentu dalam suatu

teks. Apabila menggunakan ereg() atau ere-

gi(), maka hanya dilakukan pencocokan ter-

hadap pattern tertentu. Sementara, apabila

Anda ingin langsung melakukan penguba-

han, maka Anda harus menggunakan fungsi

ereg_replace() ataupun eregi_replace().

Contoh sederhana berikut ini adalah

bagaimana kita mengganti semua a kecil

menjadi a besar. Berikut ini adalah source

code-nya:

<?

$pat_src = “a”; $pat_dst = “A”; $src = “Hari ini saya ke pasar baru untuk membeli buku bekas”; $dst = eregi_replace($pat_src, $pat_dst, $src);

echo “src:\n$src\n”;

echo “dst:\n$dst\n”;

?>

Penjelasan kode:Dengan menggunakan eregi_replace(), kita

mengganti semua a ke A. Fungsi eregi_re-

place() akan menerima tiga parameter, ya itu

pattern, replacement dan string asal, serta

akan mengembalikan string hasil penggan-

tian.

Satu hal yang harus diperhatikan dalam

penggunaan ereg_replace() ataupun ere-

gi_replace() adalah masalah penggantian

teks dengan bilangan. Sebagai contoh, Anda

ingin mengganti tulisan satu menjadi angka

1. Apabila Anda memberikan 1 sebagai re-

placement, maka hasil penggantian mungkin

tidak akan berjalan sesuai yang diinginkan.

Agar hasil penggantian benar, Anda harus

menggantinya dengan karakter ‘1’.

split dan splitiTerkadang, dalam beberapa kasus pem-

rograman, ada kalanya kita perlu memisah-

kan elemen teks berdasarkan pemisah ter-

tentu ke dalam array. Tentunya, memproses

array akan jauh lebih mudah daripada kita

memroses teks begitu saja. Contoh kasus

yang umum adalah ketika kita ingin mem-

proses entri di /etc/passwd.

Berikut ini adalah contoh untuk

mendapatkan username dan home direc-

tory semua user di /etc/passwd:

<? $f_passwd = fopen(“/etc/ passwd”,”r”); while (!feof($f_passwd)) { $buff = fgets($f_passwd); if (strlen($buff) > 1) { $user_arr = split(“:”, $buff); echo “user: {$user_ arr[0]}, homedir: {$user_ arr[5]}\n”; } } fclose($f_passwd);?>

Page 8: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 57

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

PHP

Berikut ini adalah keluaran program

tersebut di komputer penulis:

$ php d.php user: root, homedir: /rootuser: bin, homedir: /binuser: daemon, homedir: /sbinuser: lp, homedir: /var/spool/lpduser: mail, homedir: /var/spool/clientmqueueuser: news, homedir: /etc/newsuser: uucp, homedir: /etc/uucpuser: games, homedir: /var/gamesuser: man, homedir: /var/cache/manuser: at, homedir: /var/spool/atjobsuser: wwwrun, homedir: /var/lib/wwwrunuser: ftp, homedir: /srv/ftpuser: postfix, homedir: /var/spool/postfixuser: sshd, homedir: /var/lib/sshduser: messagebus, homedir: /var/run/dbususer: haldaemon, homedir: /var/run/haluser: nobody, homedir: /var/lib/nobodyuser: nop, homedir: /home/nopuser: postgres, homedir: /var/lib/pgsql

Karena split() menerima pattern RE se-

bagai pemisah, maka pemisah tidak harus

selalu berupa karakter pasti. Contoh yang

umum terjadi adalah ketika pemisahan ingin

dilakukan berdasarkan white space. Dalam

kasus tersebut, kita tidak bisa hanya menen-

tukan berdasarkan spasi, atau tab, ataupun

kombinasi keduanya. Memecah entri pada

/etc/fstab adalah contoh yang baik. Berikut

ini adalah contohnya:

<? $f_fstab = fopen(“/etc/ fstab”,”r”); while (!feof($f_fstab)) { $buff = fgets($f_fstab); if (strlen($buff) > 1) { $fs_arr = split(“[[: space:]]+”, $buff); echo “device: {$fs_ arr[0]}, mount point: {$fs_arr[1]}\n”; } } fclose($f_fstab);?>

Penjelasan kode:Karena kita ingin memisahkan berdasarkan

white space, maka kita perlu menggunakan

kelas karakter [:space:]. Adalah penting un-

tuk menambahkan + agar white space dike-

lompokkan (bukannya satu per satu spasi

misalnya).

Dengan beberapa fungsi saja yang datang

dengan Posix RE, kita bisa membangun

parser sederhana ataupun tool-tool lain yang

bisa membantu kita bekerja lebih cepat.

PCRE Pattern PCRE umumnya cenderung lebih

susah untuk dibaca. Namun, PCRE sendiri

pada PHP seringkali dikatakan lebih cepat

daripada implementasi Posix RE. Dan, imple-

mentasi PCRE PHP telah binary safe. Dalam

beberapa kasus yang lebih berat, umum nya

PCRE lebih disukai daripada Posix RE.

Implementasi PCRE di PHP datang de-

ngan fungsi-fungsi berikut:

� preg_grep, mengembalikan array yang

sesuai dengan pattern.

� preg_match_all, memeriksa seluruh teks

� preg_match, memeriksa teks.

� preg_quote, melakukan quoting pada

karakter RE.

� preg_replace_callback, melakukan pen-

carian RE dan melakukan penggantian

dengan fungsi callback.

� preg_replace, mencari dan mengganti

teks.

� preg_split, memecah teks dan menyim-

pannya ke dalam array.

Berbeda dengan Posix RE, PCRE menge-

nal Pattern Modifi er, modifi er untuk pat-

tern RE. Di sini, kita bisa menentukan apa-

kah pencarian akan dilakukan case sensitive

dan lain sebagainya.

Satu catatan, walaupun mengusung

nama PCRE, implementasi PCRE di PHP

memiliki beberapa perbedaan dengan Perl.

Anda bisa membaca lebih lanjut pada Do-

HTML hasil dokumentator.php. Source code HTML hasil dokumentator.php.

Page 9: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200558

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

PHP

kumentasi PHP pada bagian Regular Ex-

pression Functions (Perl-Compatible), sub-

bagian Pattern syntax.

preg_match dan preg_match_allFungsi ini berguna untuk melakukan

matching pattern RE pada teks. Kita akan

membuat ulang contoh yang kita bahas pa-

da pembahasan fungsi ereg() dan eregi() se-

belumnya. Yang pertama adalah bagaimana

memeriksa apakah input tanggal telah me-

menuhi aturan YYYY-MM-DD atau tidak.

Berikut ini adalah source code-nya:

<?

$pat = “/([0-9]{4})-([0-9] {1,2})-([0-9]{1,2})/i”; $input1 = “2005-06-19”; $input2 = “2005-6-19”; $input3 = “05-06-19”;

if (preg_match($pat, $input1)) echo “$input1 sesuai dengan aturan $pat”; else echo “$input1 TIDAK sesuai dengan aturan $pat”; echo “\n”;

if (preg_match($pat, $input2)) echo “$input2 sesuai dengan aturan $pat”; else echo “$input2 TIDAK sesuai dengan aturan $pat”; echo “\n”;

if (preg_match($pat, $input3)) echo “$input3 sesuai dengan aturan $pat”; else echo “$input3 TIDAK sesuai dengan aturan $pat”; echo “\n”;

?>

Penjelasan kode:� Bisa dilihat bahwa apa yang berubah pa-

da contoh versi Posix RE adalah pattern

dan penggunaan fungsi preg_match()

� Pattern modifi er yang kita gunakan

adalah i, yang artinya pencarian akan

dilakukan case insensitive (sama seperti

penggunaan fungsi eregi()).

Selanjutnya, kita akan membuat ulang

kode untuk memeriksa keabsahan defi nisi

fungsi PHP:

<?

$pat = “/^(function)(\s*?) ([a-zA-Z_]+\w*)(\s*?) (\()(.*)(\))(\s*?) (\{)(.*)(\})$/mis”;

$input1 = “function a() { echo ‘a’; }”;

$input2 = “function _b($a, $b, $c) { print_r($a); print_ r($b); print_r($c); }”;

$input3 = “function -a() { echo ‘ini function yang salah karena nama fungsi diawali bilangan’;}”;

$input4 = “function z()”;

if (preg_match($pat, $input1)) echo “Syntax OK”; else echo “Syntax Error”; echo “\n”;

if (preg_match($pat, $input2)) echo “Syntax OK”; else echo “Syntax Error”; echo “\n”;

if (preg_match($pat, $input3)) echo “Syntax OK”; else echo “Syntax Error”; echo “\n”;

if (preg_match($pat, $input4)) echo “Syntax OK”; else echo “Syntax Error”;

echo “\n”;

?>

Penjelasan kode:� Kita menggunakan pattern modifi er mis,

yang artinya adalah:

� m untuk multiline.

� i untuk case insensitive.

� s untuk membuat metakarakter . (ti-

tik) memasukkan karakter newline.

� Beberapa kelas karakter pada Posix RE

umumnya ditulis lebih singkat pada versi

PCRE

preg_replaceFungsinya sama dengan ereg_replace, na-

mun menurut penulis, fungsi yang satu

ini lebih enak untuk digunakan. Kita akan

melihat contoh bagaimana mengganti tu-

lisan [date] di dalam string menjadi tang-

gal aktif.

Berikut ini adalah source code-nya:

<? $src = “Hari ini tanggal [date].”;

$dst = preg_replace(“/(\ [date\])/mis”, date(“d-m-Y”), $src); echo $dst . “\n”;

?>

preg_splitFungsi ini berguna untuk memecah string

ke dalam array berdasarkan pattern tertentu.

Fungsinya sama dengan split() atau spliti()

milik Posix RE. Berikut ini adalah penulisan

ulang contoh untuk membaca /etc/fstab:

<? $f_fstab = fopen(“/etc/ fstab”,”r”); while (!feof($f_fstab)) { $buff = fgets($f_fstab); if (strlen($buff) > 1) { $fs_arr = preg_split(“/\ s+/”, $buff); echo “device: {$fs_ arr[0]}, mount point: {$fs_arr[1]}\n”; }

Page 10: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 59

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

PHP

} fclose($f_fstab);?>

Contoh kasus: DokumentatorSetelah melihat contoh-contoh penggu-

naan RE, kita akan membahas satu contoh

kasus sederhana, yaitu program dokumen-

tator yang akan mengambil source PHP

dan mengekstrak dokumentasi fungsi dan

memformatnya menjadi satu fi le HTML

yang berisi dokumentasi fungsi. Untuk itu,

kita akan membuat aturan baru dokumen-

tasi kita. Berikut ini adalah aturan doku-

mentasi:

� Diawali dengan /** dan diakhiri dengan

**/

� Tersedia deskripsi fungsi yang dimung-

kinkan dengan pemberian @desc:

<deskripsi fungsi>;

Dengan demikian, berikut ini adalah

contoh dokumentasi di dalam satu fungsi:

function a(){ /** @desc: - deskripsi pertama fungsi - deskripsi kedua fungsi ; **/

//isi fungsi}

Berikut ini adalah source code doku-

mentator kita:

<?$index_header = “<html><head><title>Documentator</title><!-- Auto generated on “ . date(“d/ m/Y h:i:s”).“--></head><body>“;

$index_footer = “</body><html>

“;

echo “dokumentator.php, (c) Nop 19 June 2005\n”;$f = $_SERVER[‘argv’][1];if ( !$f || !file_exists($f) ) die (“usage: dokumentator.php <script>\n”);

$f_out = $f . “.html”;$str = fread(fopen($f, “r”), filesize($f));$pat = ‘/(function)(.*?)(\{)(.*?)(\})/mis’;preg_match_all($pat,$str,$matches);

for ($i = 0; $i<count($matches[0]); $i++){ //get comments from file, parse comments and function body $pat_comm = ‘/(\/\*\*)(.*?)(\* \*\/)(.*)/mis’; preg_match_all($pat_comm, $matches[4][$i],$matches_ comm); (count($matches_comm[0])<1) ? $f_body = $matches[4][$i] : $f_body = $matches_comm[4][0];

//already got comments from file, parse specific comment //get desc $pat_desc = ‘/(.*?)(@desc) (:)(\s*?)(.*?)(;)/mis’; preg_match_all($pat_desc, $matches_comm[2][0],$matches_ desc);

$f_name = $matches[2][$i]; $f_desc = nl2br(trim($matches_ desc[5][0]));

//link creation $link_info .= “<a href=\”#$i\ ”>$f_name</a><br>”;

//detail information per function $detail_info .= “<br><br><br><br><br>”;

$detail_info .= “<a name=\ ”$i\”> $f_name </a>”; $detail_info .= “<table border=\”1\” width=\”100%\”>”; $detail_info .= “<tr><td width=\”15%\”>function</ td><td>” . $f_name . “</td></tr>”; $detail_info .= “<tr><td width=\”15%\”>description </td><td><code>” . $f_desc . “</code></td></tr>”; $detail_info .= “</table><br>”;

}$index_body = $index_header . $link_info . $detail_info . $index_footer;fwrite(fopen($f_out,”w”), $index_body);echo “DONE\n”;?>

Penjelasan kode:� Prinsip kerjanya, pertama-tama kita

akan memeriksa terlebih dahulu apakah

argumen pertama tersedia, dan apabila

tersedia, merupakan fi le yang valid atau

tidak. Setelah itu, apabila semuanya va-

lid, maka proses pun dilanjutkan.

� Setelah itu, kita akan mengambil semua

dokumentasi dari fungsi tersebut.

� Setelah itu, dari semua hasil yang berhasil

diambil, kita akan mengambil deskripsi

dari komentar tersebut, membuat link

dan detil informasi fungsi.

� Setelah itu, kita menggabungkan semua

yang didapat dan menuliskannya ke fi le

HTML.

Program ini tentunya masih bisa di-

sempurnakan, misal dengan menambah-

kan informasi lain seperti return type,

contoh penggunaan fungsi, dan lain seba-

gainya. Tentunya, tampilan HTML hasil

pembu atan juga bisa dimodifi kasi sesuai

keinginan.

Sampai di sini dulu pembahasan kita

tentang parsing sederhana menggunakan

RE. Untuk tugas parsing yang kompleks,

RE mungkin bukan solusi yang tepat. Tapi,

untuk parsing sederhana, RE jauh lebih dari

cukup. Selamat mencoba!

Noprianto ([email protected])

Page 11: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200560

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

LDAP

� Artikel ini hanya menekankan penggu-

naan LDAP bagi Samba sebagai servis

autentikasi user. Pembaca diharapkan

telah menguasai kemampuan adminis-

trasi dasar Samba.

� Server LDAP di-setting sesuai artikel ke-

dua.

� Samba domain yang digunakan ialah

dynre. Nama domain ini dapat diganti

disesuaikan dengan nama domain pada

sistem komputer pembaca.

� Mesin bernama samba.dynre.com

dikonfi gurasi sebagai Primary Domain

Controller (PDC). Servis Samba ini

dapat diletakkan pada dua mesin yang

terpisah seperti yang dijelaskan dalam

artikel kedua pada bagian “Konfi gurasi

Jaringan” ataupun di dalam satu mesin

dengan LDAP server.

Kebutuhan softwareSeluruh kebutuhan paket RPM Samba ini

tersedia di dalam CD Fedora Core 2.

� samba-common-3.0.3-5.i386.rpm (terse-

dia dalam CD 1), berisi fi le-fi le Samba

umum yang harus diinstal terlebih da-

hulu sebelum paket RPM Samba yang

lainnya.

� samba-client-3.0.3-5.i386.rpm (tersedia

dalam CD 1), berisi fi le-fi le Samba client

saja. Untuk mesin yang akan digunakan

sebagai mesin samba client saja, cukup

menginstal paket RPM ini, tidak perlu

menginstal paket RPM berikutnya yaitu

paket RPM Samba server.

� samba-3.0.3-5.i386.rpm (tersedia dalam

CD 1), berisi fi le-fi le Samba daemon

server. Di dalam paket RPM ini terdapat

utility smbldap yang akan digunakan un-

tuk administrasi user-user Samba server

yang terkoneksi dengan LDAP server.

Selain paket RPM Samba di atas, di

dalam distribusi Fedora Core 2 ini terdapat

utility yang akan mempermudah adminis-

trasi Samba:

� system-config-samba-1.2.9-2.noarch.

rpm (tersedia dalam CD 1), berisi utility

administrasi Samba berbasis grafi s.

� samba-swat-3.0.3-5.i386.rpm (tersedia

dalam CD 4), berisi utility administrasi

berbasis web yang menggunakan proto-

kol HTTP dengan port 901.

Integrasi User Account dengan LDAPBagian 3 dari 3 Artikel

Fungsi utama komputer server di kantor ukuran kecil dan menengah biasanya sebagai file dan printer server. Samba sangat penting keberadaannya sebagai pengganti Windows Server yang populer dengan kemampuannya sebagai file dan printer server.

Perkantoran menggunakan fi le server

sebagai pusat tempat untuk me nyim-

pan fi le yang gunanya untuk men-

share fi le, memberikan keamanan/secu-

rity kepada fi le-fi le tersebut karena letaknya

tersentralisasi, dan membuat proses back-up

data lebih effi sien. Sedangkan sebagai print-

er server, ini akan menghemat printer yang

dibeli karena tidak perlu semua komputer

di kantor dibelikan printer satu-satu.

Bagian ketiga seri tulisan ini akan

menjelaskan cara men-setting Samba versi 3

dengan menggunakan LDAP sebagai servis

informasi direktori serta cara-cara adminis-

trasinya. Berikut adalah kebutuhan sebelum

kita memulai setting LDAP untuk Samba:

Gambar 1. Ssamba SWAT dan system-config-samba.

Page 12: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 61

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

LDAP

Kedua utility administrasi Samba ini

berguna untuk mempersiapkan konfi gurasi

dasar Samba sebelum kita men-settingnya

menggunakan LDAP sebagai autentikasi

servis. Contoh kedua utility administrasi ini

dapat dilihat pada gambar 1.

Sangat dianjurkan untuk selalu men-up-

date Samba ini dengan versi yang terbaru

karena versi yang terbaru memperbaiki bug-

bug yang cukup penting bagi sistem kompu-

ter produksi. Untuk mempermudah proses

konfi gurasi, maka semua paket RPM diambil

dari CD Fedora Core 2. Pada saat artikel ini

dibuat Samba terbaru dapat di-download dari

www.samba.org. Perlu diingat, jika meng-

compile sendiri, harap memasukkan module

LDAP ke dalam module binari samba. Untuk

menge-cek apakah samba telah terkompilasi

dengan module LDAP di dalamnya ketikkan

perintah berikut:

# smbd -b | grep -i ldap

Hasilnya akan demikian:

HAVE_LDAP_H HAVE_LDAP HAVE_LDAP_DOMAIN2HOSTLIST HAVE_LDAP_INIT HAVE_LDAP_INITIALIZE HAVE_LDAP_SET_REBIND_PROC HAVE_LIBLDAP LDAP_SET_REBIND_PROC_ARGS pdb_ldap pdb_smbpasswd pdb_tdbsam pdb_guest rpc_lsa rpc_reg rpc_lsa_ds rpc_wks rpc_net rpc_dfs rpc_srv rpc_spoolss rpc_samr idmap_ldap idmap_tdb auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin

Sedangkan utility smbldap dapat di-

download dari www.idealx.org/prj/samba/

index.en.html.

Proses konfigurasiDiasumsikan servis Samba telah terinstal

dan terkonfi gurasi secara dasar sebagai fi le

dan printer server. Dengan keadaan demiki-

an, berarti servis Samba tersebut secara

default menggunakan fi le tdb yang berada

pada local server sebagai autentifi kasi data.

Pada bagian ini, kita akan mulai untuk me-

ngonfi gurasi koneksi ke LDAP server seba-

gai autentikasi server.

1. Buka fi le /etc/samba/smb.conf, lalu tam-

bahkan lima baris berikut ini:

passdb backend = ldapsam:”ldap://ldap.dynre.com”

�Ini data autentifi kasi password yang

digunakan untuk menyimpan dan meng-

ubah password menggunakan LDAP

dengan LDAP server: ldap.dynre.com.

ldap suffix = dc=erlangtech,dc=com

�Ini data direktori LDAP kelompok

bersuffi ks dc=erlangtech,dc=com yang

akan digunakan sebagai data direktori.

ldap admin dn = uid=root,ou=people,dc=erlangtech,dc=com

�Account DN koneksi ke server LDAP

untuk mengambil data password user.

ldap passwd sync = Yes �Password LDAP akan disinkronisa-

sikan dengan data password atribut NT

dan LM, kemudian di-update atribut

waktu pwdLastSet.

ldap delete dn = Yes �Operasi delete dalam LDAP akan

menghapus seluruh data untuk user ac-

count yang dipilih.

Berikut ini merupakan fi le konfi gurasi

/etc/samba/smb.conf dengan contoh

konfi gurasi dasar:

� Printer yang di-share menggunakan

Cups daemon printer.

� Direktori yang di-share adalah direk-

tori homes (/home/junusd) dan data

(/export/data).

[global] workgroup = DYNRE netbios aliases = samba server string = DynRe WinNT Server

passdb backend = ldapsam:”ldap://ldap.dynre.com”

ldap suffix = dc=dynre,dc=com ldap admin dn = uid=root,ou=people,dc=dynre,dc=com ldap passwd sync = Yes ldap delete dn = Yes

Page 13: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200562

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

LDAP

domain admin group = “ @”Domain Admins” “

printcap name = cups printing = cups

logon script = logon.bat logon drive = H: logon home = logon path =

domain logons = Yes os level = 33 preferred master = Yes domain master = Yes wins support = Yes log file = /var/log/samba/%m.log[printers] comment = All Printers path = /var/spool/samba browseable = No guest ok = Yes printable = Yes use client driver = Yes printer admin = root[print$] comment = Printer Driver Download Area path = /var/lib/samba write list = root guest ok = Yes[homes] comment = Home Directories writeable = yes browseable = No[data] comment = DFS Directories path = /export/data writeable = yes

2. Edit konfi gurasi LDAP server.

Copy samba.schema ke direktori /etc/

openldap/schema

# cp /usr/share/doc/samba-3.0.3/LDAP/samba.schema /etc/openldap/schema

Edit fi le /etc/openldap/slapd.conf

� Tambahkan samba.schema di bawah

autofs.schema

include /etc/openldap/schema/redhat/autofs.schema

include /etc/openldap/schema/samba.schema

� Ubah ACL, setiap ada perintah untuk

membaca dan menulis attribut sam-

baLMPassword dan sambaNTPass-

word, diharuskan untuk autentifi kasi

lebih dahulu, sama seperti mengakses

atribut userPassword.

access to attr=userPassword,sambaLMPassword,sambaNTPassword by dn=”uid=root,ou=people, dc=dynre,dc=com” write by self write by anonymous authaccess to * by dn=”uid=root,ou=people, dc=dynre,dc=com” write by self write by users read by anonymous read

3. Masukkan password DN admin yang di-

gunakan untuk mengambil data user ac-

count dari LDAP server.

# smbpasswd -w ldappassword(uid=root,ou=people,dc=dynre,dc=com)

4. Restart daemon servis LDAP dan Samba.

# service ldap start# service smb start

Administrasi user dengan smbldapBagian ini menjelaskan secara praktis cara

penggunaaan utility smbldap yang siap

digunakan untuk keperluan administrasi

user samba sehari-hari. Sebagai referensi

smbldap lebih detail dapat dibaca dari www.

idealx.org/prj/samba/samba-ldap-howto.pdf.

Konfiguasi awal� Edit /usr/share/doc/samba-3.0.3/LDAP/

smbldap-tools/smbldap_conf.pm, de-

ngan mengubah variabel berikut:

$slaveLDAP = “ldap.dynre.com”;$slavePort = “389”;$masterLDAP = “ldap.dynre.com”;$masterPort = “389”;$ldapSSL = “0”;$suffix = “dc=DYNRE,dc=COM”;$usersou = q(People);$computersou = q(Computers);

$groupsou = q(Group);$bindpasswd = “ldappassword(uid=root,ou=people,dc=dynre,dc=com)”;$mk_ntpasswd = “/usr/sbin/mkntpwd”;

� Copy skrip smbldap ke direktori /usr/sbin:

cd /usr/share/doc/samba-3.0.3/LDAP/smbldap-toolscp smbldap*.p? /usr/sbinchmod 753 /usr/sbin/smbldap_conf.pmchmod 750 /usr/sbin/smbldap*.plchgrp 512 /usr/sbin/smbldap*.p?

� Compile utility pembuat password yang

compatible dengan WinNT password

mkntpwd:

# cd /usr/share/doc/samba-3.0.3/LDAP/smbldap-tools/mkntpwd# make# cp mkntpwd /usr/sbin

� Jalankan smbldap-populate.pl, untuk

inisialisasi LDAP database dengan user

dan group account yang diperlukan un-

tuk administrasi sesuai Windows NT:

# smbldap-populate.pl

Hasil output-nya akan terlihat seperti di

bawah. Ada beberapa pesan kesalahan teta-

pi itu tidak menjadi masalah karena struk-

tur data kelompok LDAP tersebut telah

dibuat pada pembahasan artikel kedua:

Using builtin directory structureadding new entry: dc=DYNRE,dc=COMfailed to add entry: Already exists at ./smbldap-populate.pl line 323, <GEN1> line 2.adding new entry: ou=People,dc=DYNRE,dc=COMfailed to add entry: Already exists at ./smbldap-populate.pl line 323, <GEN1> line 3.adding new entry: ou=Group,dc=DYNRE,dc=COMfailed to add entry: Already exists at ./smbldap-populate.

Page 14: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 63

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

LDAP

pl line 323, <GEN1> line 4.adding new entry: ou=Computers,dc=DYNRE,dc=COMadding new entry: uid=Administrator,ou=People,dc=DYNRE,dc=COMadding new entry: uid=nobody,ou=People,dc=DYNRE,dc=COMfailed to add entry: Already exists at ./smbldap-populate.pl line 323, <GEN1> line 7.adding new entry: cn=Domain Admins,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Domain Users,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Domain Guests,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Administrators,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Users,ou=Group,dc=DYNRE,dc=COMfailed to add entry: Already exists at ./smbldap-populate.pl line 323, <GEN1> line 12.

adding new entry: cn=Guests,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Power Users,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Account Operators,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Server Operators,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Print Operators,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Backup Operators,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Replicator,ou=Group,dc=DYNRE,dc=COMadding new entry: cn=Domain Computers,ou=Group,dc=DYNRE,dc=COM

Administrasi userPerintah-perintah untuk administrasi user

dan group ini sintaksnya sangat mirip de-

ngan perintah standar untuk administrasi

user dalam Linux, seperti userdel, useradd,

dan usermod. Hanya di sini ditambah bebe-

rapa parameter yang khusus untuk samba.

� smbldap-usermod.pl: memodifi kasi user

account yang ada.

User account Linux dalam LDAP server

yang dibuat tanpa menggunakan utili ty

smbldap ini tidak akan mempunyai ob-

jectclass sambaSamAccount. Dalam ar-

tikel kedua telah terdapat user account

junusd, tetapi user account ini tidak dapat

digunakan untuk login ke Samba server

sebelum ditambahkan objectclass sam-

baSamAccount, lalu masukkan password:

# smbldap-usermod.pl -a junusd# smbldap-passwd.pl junusd

� smbldap-useradd.pl: menambah user dan

komputer account.

Pada Samba, jika di-setting konfi gurasi nya

menyerupai Windows NT, nama worksta-

tion terlebih dahulu harus ditam bahkan

ke server melalui smbldap-useradd.pl -w

ini. Jadi utility smbldap ini ber guna untuk

Page 15: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200564

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

LDAP

administrasi user account dan komputer

account. Itu berlaku untuk setiap mesin

workstation yang terkoneksi ke server.

� smbldap-userdel.pl: menghapus user dan

komputer account.

Selain bertujuan utama menghapus user

account, komputer account dapat diha-

pus dengan menyebutkan nama kom-

puter account tersebut.

� smbldap-usershow.pl: menampilkan user

account tertentu.

Administrasi group� smbldap-groupmod.pl: memodifi kasi group

yang ada.

Group Linux dalam LDAP server yang

dibuat tanpa menggunakan utility

smbldap ini tidak akan mempunyai ob-

jectclass sambaGroupMapping. Dalam

artikel kedua, telah terdapat group users,

tetapi group ini tidak dapat digunakan

sebagai group Samba sebelum ditambah-

kan objectclass sambaGroupMapping:

# smbldap-groupmod.pl -a users

� smbldap-groupadd.pl: menambah group.

� smbldap-groupdel.pl: menghapus group.

� smbldap-usershow.pl: menampilkan group

tertentu.

Migrasi dari Windows NTMigrasi Windows NT server yang telah ber-

tahun-tahun ada dalam kantor dapat di-

lakukan menjadi Samba server, dengan tetap

mempertahankan user, group, dan kompu-

ter account yang ada di Windows NT. Setelah

proses migrasi selesai, tidak terjadi peruba-

han sama sekali di sisi mesin-mesin worksta-

tion client, atau transparant. Hal ini sangat

penting untuk meminimalkan komplain dari

user. Jika berhasil dengan baik, kemudian

pemindahan fi le-fi le data yang ada, printer

driver, dan ACL atribut sekuriti yang ada juga

berlangsung dengan lancar, akan membuat

user tanpa sadar telah menggunakan Samba

sebagai pengganti Windows NT server.

Di sini tidak diberikan secara detail cara-

nya, hanya diberikan garis besarnya untuk

menghindarkan kompleksitas artikel ini.

� Pada Windows NT server, login seba-

gai Administrator, lalu jalankan utility

pwdump yang bisa didownload dari ftp://

ftp.samba.org/pub/samba/pwdump/.

� Kemudian fi le teks hasil pwdump ini

di-copy ke mesin Samba, lalu jalan-

kan smbldap-migrate-accounts.pl dan

smbldap-migrate-groups.pl.

� Terakhir, dengan teliti dan hati-hati se-

suaikan uid dan gid dari tiap-tiap user

dan group account yang telah ada di

Linux dengan user dan group account

yang ada pada Windows NT.

Administrasi user dengan JXplorerJXplorer merupakan utility LDAP browser

berbasis Java. Sebelum menjalankan utili-

ty ini, terlebih dahulu download JRE (Java

Runtime Environment) dari www.javasoft.

Gambar 3. Modifikasi atribut alamat email dengan JXplorer.

com. Sedangkan JXplorer dapat di-down-

load dari www.pegacat.com/jxplorer. Melalui

utility ini atribut tiap item dalam direktori

dapat ditambah, dihapus, maupun dimodi-

fi kasi langsung secara manual.

Berikut ini contoh untuk mengedit ala-

mat email dari user junusd. Melalui contoh

ini, pembaca dapat mengubah atribut-atribut

lainnya sesuai dengan yang dikehendaki.

� Jalankan jxplorer.sh, kemudian ke menu

“File”-> “Connect”

� Ketikan account untuk koneksi ke LDAP

server seperti tampak dalam gambar 2.

� Host: ldap.dynre.com

� Base DN: dc=dynre,dc=com

� Level: User + Password

� User DN: uid=root,ou=people,dc=dy

nre,dc=com

� Password: “ldappassword(uid=root,o

u=people,dc=dynre,dc=com)”

Tekan tombol “OK”. Hasilnya seperti

gambar 3.

� Pada pohon (tree), klik kelompok “Peo-

ple”, lalu klik “junusd”, lalu klik Tab

“Table Editor” pada bagian kanan atas.

� Pada atribut “mail” ketik alamat e-mail.

� Tekan tombol “Submit”.

Dalam ketiga artikel telah dijelaskan cara

penggunaan servis direktori LDAP sebagai

pusat autentifi kasi user account, sehingga

seluruh data user account pada sistem kom-

puter pada perkantoran terintegrasi secara

penuh. Namun, manfaat LDAP ini tidak

hanya tertutup sebagai pusat autentifi kasi

user account saja. Masih ada manfaat lain

dari LDAP yang pada pokoknya merupakan

servis yang berfungsi memberikan informa-

si direktori. Misalnya, sebagai informasi di-

rektori karyawan, address book dari aplikasi

e-mail, dan sebagainya.

Junus Djunawidjaja ([email protected])

Gambar 2. JXplorer dialog koneksi.

Page 16: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

IKLAN

Page 17: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200566

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

LIDS

Ketika kali pertama mendengar nama

LIDS (Linux Intrusion Detection

System) yang langsung terbayang

di benak saya adalah sebuah aplikasi yang

berfungsi sebagai sistem pendeteksi penyu-

sup pada network semacam SNORT. Na-

mun saya keliru besar, karena ternyata yang

dimaksud itu adalah NIDS (Network Intru-

sion Detection System). LIDS adalah sebuah

patch dan tool admin untuk mengoptimal-

kan fungsi keamanan pada kernel Linux.

LIDS merupakan sebuah implementasi dari

referensi monitor pada kernel. LIDS juga

merupakan sebuah Mandatory Access con-

trol pada kernel.

Mengapa menggunakan LIDS?Mungkin pertanyaan ini akan kerap kali

mun cul. Mengapa menggunakan LIDS, se-

mentara banyak security patch yang dibuat

oleh berbagai pihak? Jawabannya cukup

sederhana, “Sesuai dengan kebutuhan”,

atau lebih cocok dengan istilah “Use the

right tools for the right jobs”. Masing-masing

patch yang dikeluarkan tentunya memiliki

kelebihan ter sendiri, dan itu semua kembali

kepada anda, patch mana yang paling cocok

untuk keperluan Anda.

Namun yang perlu diperhatikan adalah

beberapa permasalahan yang ada pada

sistem operasi Linux secara umum, yaitu:

� File system tidak memiliki proteksi atau

pengamanan.

� Proses yang berjalan tidak memiliki pro-

teksi atau pengamanan.

� Administrasi terhadap system tidak ter-

lindungi.

� Super User (root) memiliki kekuasaan

penuh yang dapat melanggar hak.

� Model dari Access Control List (DAC)

pada Linux belum lah cukup.

Begitulah beberapa permasalahan umum

yang terdapat pada sistem operasi Linux.

Tapi isu yang paling besar dari permasalahan

di atas adalah account “Maha Dewa” root.

Per ma sa lahan ini pun mungkin terdapat

pula pada system *NIX lainnya. Jika sebuah

proses atau user memiliki privileges root,

maka tidak ada sedikit pun alasan yang dapat

mencegah pro ses atau user tersebut untuk

meng hancurkan sistem. Tidak heran jika ac-

count atau privileges root sangat diminati oleh

para intruder. Hal ini sangat membuat me-

reka yang bertugas sebagai sysadmin harus

menderita sakit kepala, pusing tujuh keliling.

Permasalahan inilah yang ingin ditangani

oleh LIDS dengan mengimplementasikan

Access Control Lists (ACLs) untuk mencegah

mereka yang ingin merusak sistem, meski

mereka memiliki privi leges root sekali pun.

Dengan ACLs, LIDS ini mampu melakukan

proteksi terhadap fi le dan proses.

Fitur-fitur pada LIDSFitur yang ditawarkan oleh LIDS cukup

banyak dan cukup untuk melindungi mesin

Linux anda dari tangan-tangan jahil para in-

truder. Fitur-fi tur tersebut adalah:

� Perlindungan atau proteksi terhadap fi le

dan direktori dari apa pun termasuk root

pun tidak dapat melakukan perubahan

dari fi le atau direktori yang diproteksi.

Bahkan sebuah fi le pun dapat disembu-

nyikan (hidden).

� Perlindungan atau proteksi terhadap

proses dari apa saja, termasuk root, tidak

dapat mematikan proses yang diproteksi.

Bahkan sebuah proses dapat disembu-

nyikan (hidden).

� Access Control Lists yang lebih baik.

� Dapat menggunakan dan menambahkan

kapabilitas untuk mengontrol seluruh

sistem.

� Peringatan terhadap keamanan langsung

dari kernel.

� Pendeteksi port scanner pada kernel.

� Mendukung framework LSM (Linux Se-

curity Model) pada kernel 2.5.x dan 2.6.x.

� Pembatasan (restriction) terhadap akses

proses jaringan.

Kekurangan LIDSJika sebuah sistem memiliki kelebihan tentu

ia juga akan memiliki kekurangan, demiki-

an juga dengan LIDS. Beberapa kekurangan

LIDS yang saya amati di antaranya:

� Setiap fi le dan proses yang berada pada

system linux harus memiliki ACLs, hal ini

tentu akan cukup merepotkan. Namun,

hal ini dapat dimaklumi karena keamanan

berbanding terbalik dengan kenyamanan.

� Kesalahan dalam mendefi nisikan ACLs

akan mengunci sistem, sehingga kita ti-

dak dapat berbuat apapun.

Mengamankan Server Linux dengan LIDSBagian 1 dari 2 Artikel

Di satu sisi, banyak hacker yang selalu mencari tahu kelemahan sistem untuk diperbaiki. Di sisi lain, banyak hacker yang berusaha mencari tahu dan mengembangkan berbagai cara untuk melindungi sistem dari serangan-serangan yang sangat tidak diinginkan. Beri-kut ini kita membahas salah satu karya hacker, LIDS.

Page 18: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 67

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

LIDS

� Setiap fi le harus memiliki ACLs yang

jelas, tak terkecuali untuk fi le yang berisi

scripting. Untuk hal ini ACLs juga harus

diturunkan terhadap fi le lain yang akan

dipanggil oleh skrip tersebut.

� LIDS belum mampu untuk mendeteksi

keanehan-keanehan atau penyerangan

pada level aplikasi, contohnya seperti pe-

nyerangan terhadap web melalui proto-

kol http, sql injection.

Implementasi LIDSDi atas telah dibahas mengenai kelebihan,

kekurangan serta fi tur-fi tur yang ditawarkan

oleh LIDS, namun bagaimana implemen-

tasinya pada dunia nyata? Bagaimana LIDS

dapat membantu Anda mengamankan me-

sin Linux anda? Berikut implementasi LIDS

dalam dunia nyata untuk mengamankan me-

sin Linux Anda.

Berikut ini beberapa metode penyera-

ngan secara remote (jarak jauh) yang umum

dilakukan oleh para intruder, dan bagaima-

na LIDS mencegahnya:

1. Intruder melakukan port scanning Gambar 1 menunjukkan proses port

scanning dan dua tindakan LIDS, yaitu

memberi tahu ke system administrator

dan menutup semua port.

2. Remote exploit untuk mendapatkan privilege root

Gambar 2 menunjukkan proses intruder

berusaha mengakses root dan cara LIDS

mencegahnya.

3. Remote exploit untuk melakukan port binding/connect back

Gambar 3 menjelaskan proses intruder

mengakses root, menjelajahi sistem dan

membuat back door, serta tindakan LIDS

mengatasi remote exploit ini.

4. Expolit lokal terhadap sebuah daemon yang berjalan

Gambar 4 menunjukkan salah satu dari

metode penyerangan secara lokal yang

umum dilakukan oleh para intruder, dan

bagaimana LIDS mencegahnya.

Cerita di atas hanya sebagian kecil dari

berbagai teknik yang dilakukan oleh para

intruder untuk mendapatkan akses root

terhadap sistem, serta bagaimana LIDS

mempersulit intruder dalam mendapat-

kan akses ter hadap root atau bahkan akses

penuh ter hadap sistem. Masih banyak teknik

yang digunakan oleh para intruder untuk

me nguasai sistem, di sini lah LIDS ber-

tugas untuk mempersulit mereka agar

tidak menguasai bahkan merusak sistem.

Namun, sekali pun Anda menggunakan

patch pengamanan berlapis tujuh seke-

las LIDS, tapi jika Anda malas mengikuti

perkembangan dan memperbarui sistem

Anda, semua ini akan sia-sia.

Prasyarat instalasi LIDSDalam tulisan ini penulis berasumsi bah-

wa pembaca telah memiliki pengetahuan

dasar tentang kernel serta cara melakukan

kompilasi kernel. Distribusi Linux yang

digunakan pada tulisan ini adalah Red Hat

Linux 9.0, terinstalasi lengkap dengan paket

development.

Kebutuhan awal:

1. Kernel versi 2.4.29 dapat diambil dari

situs resmi kernel http://www.kernel.

org atau mirror terdekat http://kambing.

vlsm.org/kernel-linux.

2. LIDS versi 1.2.2 untuk kernel 2.4.29 ber-

nama linux-2.4.29-lids1.2.2-ow1.diff.

bz2, dapat diambil dari http://www.lids.

org atau http://irvan.or.id/download.php.

3. LIDS Tool versi 0.5.6 dapat diambil dari

http://lids.planetmirror.com/download/

lidstools/lidstools-0.5.6.tar.gz , atau dari

mirror terdekat http://irvan.or.id/down-

load.php.

4. Paket development pada linux sperti gcc,

gnumake, ncurses, dan lain-lain.

Tahapan instalasi dan konfigurasi LIDSKini kita akan masuk kepada tahapan insta-

lasi dan konfi gurasi LIDS untuk melindungi

mesin dari tangan intruder, dengan paket-

paket yang telah dikumpulkan. Tahapan ini

dibagi lagi menjadi beberapa langkah, yaitu:

� Patching dan kompilasi kernel Linux

dengan LIDS.

� Instalasi lidstool.

� Konfi gurasi ACLs pada LIDS.

Mari kita mulai tahapan-tahapan tersebut.

1. Patching dan kompilasi kernel Linux dengan LIDS

Pertama-tama agar semua paket tersusun

rapih, buat direktori yang bernama lids di

Gambar 3. Remote exploit dan port binding.

Gambar 4. Penyerangan lokal.

Gambar 1. Proses port scanning.

Gambar 2. Akses privilege root dan cara mengatasinya.

Page 19: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200568

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

LIDS

bawah direktori /var/tmp.

# mkdir -p /var/tmp/lids

Lalu salin semua paket yang dibutuhkan

ke dalam direktori /var/tmp/lids kemudian

pindah ke direktori /usr/src.

# cd /usr/src

Ekstrak paket kernel linux-2.4.29.tar.bz2.

# tar -jxvf /var/tmp/lids/linux-2.4.29.tar.bz2

Buat symbolic link /usr/src/linux yang

mengarah ke /usr/src/linux-2.4.29.

# ln -s linux-2.4.29 linux

Salin dan ekstrak linux-2.4.29-lids1.2.2-

ow1.diff.bz2.

# cp /var/tmp/lids/linux-2.4.29-lids1.2.2-ow1.diff.bz2# bunzip2 linux-2.4.29-lids1.2.2-ow1.diff.bz2

Patch kernel Linux dengan LIDS.

# cd linux# patch -p1 < ../linux-2.4.29-lids1.2.2-ow1.diff

Konfi gurasikan kernel.

# make mrproper# make menuconfig

Dari perintah make menuconfi g akan

menghasilkan tampilan konfi gurasi seperti

gambar 5.

Pada menu pertama terdapat pilihan

Code maturity level options. Masuk pada

menu tersebut dan aktifkan pilihan Prompt

for incomplete driver. Hal ini sangat dianjur-

kan pada HOWTO dari situs yang bersang-

kutan sebelum kita mengaktifkan LIDS.

Ketika kernel telah di-patch, maka akan

tampil satu menu yaitu menu Linux Intru-

sion Detection System.

Untuk dapat menggunakan LIDS seperti

yang ditunjukan pada HOWTO dari situs

yang terkait, Anda harus mengaktifkan be-

berapa pilihan pada menu Linux Intrusion

Detection System. Untuk kebutuhan awal

hanya dengan konfi gurasi dasar, sudah sa-

ngat cukup untuk melindungi system anda

dari tangan-tangan intruder.

Masuk ke menu Linux Intrusion Detec-

tion System dan aktifkan pilihan yang ada

seperti berikut:

[*] Linux Intrusion Detection System support (EXPERIMENTAL) --- LIDS features(512) Maximum protected objects to manage (512) Maximum ACL subjects to manage(512) Maximum ACL objects to manage[ ] Hang up console when raising a security alert [*] Security alert when execing unprotected programs before sealing LIDS [ ] Do not execute unprotected programs before sealing LIDS [*] Attempt not to flood logs (60) Authorised time between two identic logs (seconds) [*] Allow switching LIDS protections/features [*] Allow switching LIDS/LIDS_GLOBAL [*] Implicitly protect LIDS admin passwd [ ] Restrict mode switching to specified terminals (3) Number of attempts to submit password (3) Time to wait after a fail (seconds) [ ] Allow any program to switch LIDS protections [*] Allow reloading config.

Gambar 6. Menuconfi g LIDS.

Gambar 5. Konfigurasi kernel dengan make menuconfig.

Page 20: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 69

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

LIDS

file [*] Port Scanner Detector in kernel [*] Send security alerts through network [*] Hide klids kernel thread(3) Number of connection tries before giving up[*] Attempt not to flood logs(60) Authorised time between two identic logs (seconds) [*] Allow switching LIDS protections/features [*] Allow switching LIDS/LIDS_GLOBAL [*] Implicitly protect LIDS admin passwd [ ] Restrict mode switching to specified terminals (3) Number of attempts to submit password (3) Time to wait after a fail (seconds) [ ] Allow any program to switch LIDS protections [*] Allow reloading config. file [*] Port Scanner Detector in kernel [*] Send security alerts through network [*] Hide klids kernel thread(3) Number of connection tries before giving up (30) Sleep time after a failed connection (16) Message queue size [*] Enable security network [*] Enable NETFILTER MARK[*] Enable Trusted Path Execution (TPE) mode feature [ ] Enable Trusted Domain Enforcement (TDE) feature [ ] Enable CAP_LIDS_SANDBOX_EFF_SET [ ] LIDS Debug

Keluar dan simpan konfi gurasi tersebut

serta lakukan kompilasi kernel Linux.

# make dep clean module module_install bzImage

Salin kernel dan System.map yang baru

ke direktori /boot.

# cp /usr/src/linux/arch/i368/boot/bzImage /boot/vmlinuz-2.4.29# cp /usr/src/linux/System.map /boot/System.map-2.4.29

Edit fi le konfi gurasi boot loader Anda,

sesuaikan partisi harddisk Anda. Untuk lilo,

pada /etc/lilo.conf tambahkan baris kernel

baru sebagai berikut:

image=/boot/vmlinuz-2.4.27 label=linux read-only root=/dev/hda5

Simpan konfi gurasi tersebut lalu keluar

dari editor dan ketik:

# lilo

Untuk grub, tambahkan baris berikut

pada /etc/grub.conf (jika tidak ada grub.

conf, edit fi le /boot/grub/menu.lst):

title Red Hat Linux, LIDS Kernel root (hd0,4) kernel /boot/vmlinuz-2.4.29 root=/dev/hda5 ro

Sekali lagi, sesuaikan posisi partisi root

dalam yang ditunjuk Lilo atau Grub di atas

dengan posisi root yang ada di partisi hard-

disk Anda.

2. Instalasi lidstoolsSelanjutnya kita akan melakukan instalasi

paket lidstools. Lidstools adalah paket yang

berisi tools administrasi LIDS digunakan

untuk membuat ACLs. Berikut langkah-

langkah dalam menginstal lidstools.

Pindah direktori ke /usr/src dan ekstrak

paket source lidstools.

# cd /usr/src# tar -zxvf /var/tmp/lids/lidstools-0.5.6.tar.gz

Pindah ke direktori source code lidstools.

# cd lidstools-0.5.6

Konfi gurasi, compile dan instal lidstools

dengan langkah berikut:

# ./configure KERNEL_DIR=/usr/src/linux# make# make install

Isikan password jika ditanyakan. Selan-

jutnya edit fi le /etc/lids/lids.ini, dan ubah

paramater ACL_DISCOVERY=0 menjadi

ACL_DISCOVERY=1. Hal ini dimaksud-

kan untuk membantu anda dalam mem-

buat ACLs. Selanjutnya simpan konfi gurasi

dan restart mesin anda dengan kernel yang

baru.

Jika tidak menemui kendala pada lang-

kah pertama dan kedua, Anda akan berada

pada shell dengan kernel yang baru. Lang-

kah berikutnya adalah langkah yang sangat

penting, yaitu mengonfi gurasikan ACLs

LIDS pada sistem. Bagian yang akan dibahas

pada edisi berikut itulah yang menentukan

dalam melindungi sistem Anda.

Irvan ([email protected])

Gambar 7. Menuconfig LIDS lebih detail.

Page 21: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200570

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Squid

Proxy server adalah server yang ber-

guna sebagai perantara antara cli-

ent dengan server gateway sebelum

berhubungan ke Internet. Dengan adanya

proxy server ini, maka url / situs yang sering

di-browse akan semakin terasa semakin cepat

terakses oleh user, karena telah disimpan di

dalam squid cache. Selain itu, proxy server

juga memiliki fungsi lainnya, di antaranya

autentifi kasi user, memblok situs, memblok

banner, dan lain-lain.

Pada edisi sebelumnya, saya sudah

menjelaskan tentang cara pengonfi gurasian

Squid dengan membahas studi kasus per-

tama sampai dengan ketiga. Sesuai dengan

janji penulis sebelumnya, sekarang akan

melanjutkannya dengan studi kasus keem-

pat sampai dengan ketujuh. Dan studi kasus

yang akan dibahas kali ini, yaitu:

4. Memblok banner menggunakan redirec-

tor adzap.

5. Membatasi ukuran fi le (kuota) yang

bisa di-download oleh user pada interval

waktu tertentu.

6. Autentifi kasi user.

7. Transparant Proxy.

Untuk mempersingkat waktu, Anda

dapat dapat langsung membaca tutorial di

bawah ini:

4. Memblok banner situs menggunakan redirector adzap.

Pernahkah Anda membuka situs terkenal

seperti yahoo mail, detik.com, ataupun situs

terkenal yang lainnya? Kalau Anda pernah

membuka situs tersebut, pasti akan meli-

hat banyaknya banner yang menempel di

situs tersebut. Dengan terbukanya banner,

sebetulnya kita telah membuang bandwidth

dengan sia-sia hanya untuk menampilkan

banner itu.

Lalu, adakah program redirector squid

yang dapat digunakan untuk memblok

banner? Tentu ada, untuk melakukan hal

tersebut Anda dapat menggunakan salah

satu program redirector squid yang ber-

nama adzap. Dengan adzap gambar ban-

ner yang ada akan diubah menjadi tulisan

adzap.

Untuk pembahasan lebih lanjut

bagaimana setting redirector adzap dan

squidguard dapat berjalan bersamaan atau

dengan kata lain bagaimana menggunakan

multiple redirector, ikuti langkah-langkah

di bawah ini:

1. Download program adzap dari internet.

http://adzapper.sourceforge.net/adzap-

20050605.tar.gz

2. Pastikan perl, apache dan segala yang

berkenaan dengan program ini sudah

terinstalasi dengan baik di sistem Anda.

# perl -v

3. Berikutnya, extract source adzap yang

telah Anda download tersebut, ke direc-

tory /usr/local.

# tar -xzvf adzap-20050605.tar.gz -C /usr/local# cd /usr/local/adzap

Copy fi le-fi le berikut ke Document Root

Apache anda, misal di Fedora Core 3 ter-

letak di /var/www/html

# cd /var/www/html# mkdir adzap# cd adzap# cp /usr/local/adzap/zaps/*.gif /var/www/html/adzap# cp /usr/local/adzap/zaps/*.html /var/www/html/adzap# cp /usr/local/adzap/zaps/*.js /var/www/html/adzap

4. Edit fi le wrapzap yang ada di /usr/local/

adzap/scripts, pada bagian:

zapper=/usr/local/adzap/scripts/squid_redirectZAB_BASE=http://localhost/adzap.............................

Step By Step Konfigurasi Squid Proxy Server dengan Berbagai Studi KasusBagian 2 dari 2 Artikel

Proxy server adalah server yang berguna sebagai perantara antara client dengan server gateway sebelum berhubungan ke Internet. Dengan adanya proxy server ini, maka url / situs yang sering di-browsing akan semakin terasa semakin cepat terakses oleh user, karena telah disimpan di dalam cache proxy. Selain itu, proxy server juga memiliki fungsi lainnya, di antaranya autentifikasi user, memblok situs, memblok banner, dan lain-lain.

Page 22: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 71

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Squid

.............................#exec “$zapper”# exec /path/to/zapchain “$zapper” /path/to/another/eg/squirmexec /usr/local/adzap/scripts/zapchain “$zapper” /usr/bin/squidguard

5. Edit squid.conf, tambahkan baris berikut:

.............................

.............................

#----------------------------# redirect program (bagian ini berisikan program tambahan yang akan digunakan # untuk meningkatkan kinerja squid).#Disini squid memanggil program wrapzap yang akan menjalankan dua buah #program redirector yang dipanggil oleh wrapzap yaitu redirector squid_re dan #redirector squidguard

redirect_program /usr/local/adzap/scripts/wrapzapredirect_children 5#----------------------------

#refresh patternrefresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440

0% 1440refresh_pattern . 0 20% 4320..........................................................

6. Setelah selesai, restart service squid Anda

# service squid restart

7. Jalankan juga service apache Anda.

# service httpd start

8. Check apakah redirector adzap dan re-

director squid guard sudah berjalan de-

ngan baik.

# ps ax | grep squid_re..........................................................9153 ? Ss 0:00 /usr/bin/perl /usr/local/adzap/scripts/zapchain /usr/local/adzap/scripts/squid_redirect /usr/bin/squidguard9156 ? Ss 0:00 /usr/bin/perl /usr/local/adzap/scripts/zapchain /usr/local/adzap/scripts/squid_redirect /usr/bin/squidguard/usr/bin/perl -w /usr/local/adzap/scripts/squid_redirect9164 ? S 0:00 /usr/bin/squidguard9168 ? S 0:01 /usr/bin/perl -w /usr/local/adzap/scripts/squid_redirect..........................................................

9. Test ke browser, dengan mengetikkan si-

tus yang terdapat banyak banner, misal:

www.detik.com, jika Anda melihat banner

yang terdapat pada situs detik.com telah

berubah menjadi tulisan This AdZaped,

berarti Anda telah berhasil mengonfi -

gurasikan squid untuk memblok banner

iklan.

10. Test juga dengan mengetikkan salah

satu situs yang termasuk ke dalam daf-

tar blacklist squidguard (ex:// http://20-

asian-pics.com). Jika situs tersebut te-

redirect ke situs http://www.eramuslim.

com, artinya Anda telah dapat men-

jalankan multiple redirector squid secara

bersamaan.

Bahkan jika ingin menambahkan pro-

gram redirector squid yang lain, Anda

hanya perlu menambahkan path pro-

gramnya di fi le wrapzap.

11. Untuk melihat log fi le, url yang berhasil

di blok banner-nya, Anda dapat menge-

tikkan perintah berikut :

# tail -f /var/log/httpd/access_log

5. Membatasi ukuran file (kuota) yang bisa di-download oleh user pada interval waktu tertentu.

Setelah melihat beberapa studi kasus di atas,

mungkin ada peningkatan kecepatan pada

waktu akses suatu sites yang dibuka oleh

user. Apalagi kalau situs tersebut sudah ter-

daftar kedalam cache squid.

Selain itu, kecepatan akses juga bergan-

tung pada jalur bandwidth yang anda sewa

Banner situs yang belum diblok sebelum menggunakan adzap. Banner situs yang telah diblok setelah menggunakan adzap.

Page 23: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200572

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Squid

dari ISP. Lalu ada juga faktor yang pa ling

penting yang paling berpengaruh pada

waktu akses suatu situs, yaitu kebiasaan

beberapa user yang suka men-download di

Internet. Mengambil suatu fi le (download)

dari Internet memang menyenangkan bagi

beberapa user, akan tetapi kalau tidak disia-

sati dengan baik hal ini justru menimbulkan

masalah bagi user lainnya. Saat men-down-

load suatu fi le yang besar (ex:/ fi le iso cd

linux), biasanya bandwidth yang ada akan

berkurang secara drastis, sehingga user biasa

yang ingin sekadar browsing merasa begitu

lambat waktu akses Internetnya. Dan kalau

sudah begini, hal ini tentunya akan menu-

runkan produktivitas kerja.

Agar tidak terjadi hal yang demikian,

maka seorang administrator harus dapat me-

nentukan kebijakan yang berlaku pada saat

user men-download suatu fi le dari Internet.

Sebagai contoh, penulis akan menjelas-

kan dengan studi kasus agar dapat lebih

mudah dipahami.

Persyaratannya :

1. PT XYZ ingin agar semua komputer yang

terhubung ke Internet dibatasi jumlah

download-nya, yaitu ukuran fi le yang dapat

ter-download maksimal hanya 2 MB.

2. Ketentuan No. 1, hanya berlaku selama

jam kerja, yaitu dari jam 08.00–17.30,

setelah lewat dari jam tersebut, user be-

bas men-download fi le dengan ukuran

fi le tak terbatas.

Untuk menerapkan hal di atas, yang per-

lu Anda lakukan hanyalah menambahkan

beberapa setting-an di fi le squid.conf. Baca

langkah-langkah di bawah ini:

1. Buka fi le squid.conf

# vi /etc/squid.conf

2. Lalu edit pada bagian berikut:

.............................

.............................# Note : Untuk Settingan Lengkapnya, dapat anda temukandi CD InfoLINUX kali ini.

# acl definisi (bagian ini berisikan batasan-batasan yang akan dilakukan oleh # server squid). acl lan src 192.168.0.0/255.255.255.0 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 21 443 563 70 210 1025-65535 acl Safe_ports port 280 acl Safe_ports port 488 acl Safe_ports port 591 acl Safe_ports port 777 acl CONNECT method CONNECT acl tdkbebasdownload time 08:00-17:30 # rule (bagian ini berisikan keterangan untuk membiarkan

atau menolak bagian acl # yang telah dibuat). http_access allow lan http_access deny manager http_access allow localhost http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny all acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .tar.bz2 .bz2 .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .raw .wav .iso # Cancel download if file is bigger than 2MB = 2000 X 1024 byte = 2048000 byte reply_body_max_size 2048000 allow magic_words2 tdkbebasdownload # icp access icp_access allow lan

.............................

.............................

3. Restart service squid Anda, untuk meli-

hat perubahan:

# service squid restart

4. Pada saat jam kerja, coba Anda test

download suatu fi le dari Internet yang

besar fi lenya lebih dari 2 MB. Jika hasil-

Metode authentifikasi Squid dengan menggunakan mysql-auth.Peringatan file yang tidak bisa didownload karena melebihi kuota.

Page 24: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 73

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Squid

nya adalah peringatan ERROR, maka

settingan yang Anda lakukan sudah ber-

hasil. Test juga men-download suatu fi le

dengan ukuran kurang dari 2MB, jika

dapat ter-download berarti sudah tidak

ada masalah untuk pembatasan ukuran

fi le download ini.

5. Ketika waktu jam kerja telah lewat, Test

juga men-download fi le dengan ukuran

fi le lebih dari 2 MB, jika hasilnya fi le

tersebut dapat ter-download, berarti ke-

bijakan yang telah ditentukan telah ber-

jalan dengan baik.

6. Autentifikasi user menggunakan mysql_auth

Pada studi kasus kali ini, tidak ada hubu-

ngannya dengan studi kasus sebelumnya.

Kali ini penulis akan menjelaskan metode

autentifi kasi user dengan menggunakan

username dan password yang terdaftar di

server.

Program autentifi kasi yang akan penu-

lis jelaskan bernama mysql_auth. Dengan

mysql_auth ini, Anda akan lebih mudah

memanajemen username dan password,

karena dapat dihubungkan dengan interface

yang dibuat dengan PHP maupun bahasa

lainnya.

Logika program ini berjalan sebagai

berikut, jika username dan password yang

dimasukkan sesuai, maka program akan

menghasilkan output OK, dan autentifi -

kasi berhasil. Dan bila username maupun

password tidak sesuai, maka program akan

menghasilkan output ERR, dan autentifi kasi

akan gagal.

Kalau autentifi kasi berhasil, maka user

akan dapat browsing ke Internet. Tetapi jika

autentifi kasi gagal, user tersebut tidak dapat

browsing ke Internet.

Untuk mempersingkat waktu, coba Anda

ikuti penjelasan di bawah ini:

1. Download dahulu program mysql_auth-

0.8.tar.gz dari situs http://people.arxnet.

hu/airween/mysql_auth/, atau Anda

dapat mencarinya pada CD majalah In-

foLINUX edisi ini.

2. Setelah itu extract, fi le tersebut :

$ tar -xzvf mysql_auth-0.8.tar.gz

3. Pastikan program mysql-devel sudah

terinstal di sistem Anda, dan jangan lupa

untuk menjalankan service mysql.

# rpm -qa | grep mysql-develmysql-devel-3.23.58-13

# service mysqld start

4. Cari dan catat lokasi fi le mysql.h dan lib-

mysqlclient.a

$ locate mysql.h/usr/include/mysql/mysql.h

$ locate libmysqlclient.a/usr/lib/mysql/libmysqlclient.a

5. Berikutnya adalah Anda harus mengedit

terlebih dahulu fi le Makefi le program

mysql_auth.

$ cd mysql_auth-0.8/ $ vi Makefile

Edit pada bagian-bagian berikut :

a. CFLAGS = -I/usr/local/include -L/usr/local/lib

menjadi

CFLAGS = -I/usr/include/mysql -L/usr/lib/mysql

b. $(INSTALL) -o nobody -g nogroup -m 755 mysql_auth /usr/local/squid/libexec/mysql_auth

menjadi

$(INSTALL) -o squid -g squid -m 755 mysql_auth /usr/bin/mysql_auth

c. $(INSTALL) -o root -g root -m 700 mypasswd /usr/local/bin/mypasswd

menjadi

$(INSTALL) -o squid -g squid -m 755 mypasswd /usr/bin/mypasswd

d. $(INSTALL) -o nobody -g nogroup -m 600 $(CONF) /usr/local/squid/etc/mysql_auth.conf

menjadi

$(INSTALL) -o squid -g squid -m 600 $(CONF) /etc/mysql_auth.conf

e. dan beri tanda remark (#) pada

$(INSTALL) -o nobody -g nogroup -m 600 $(CONF) /usr/local/squid/etc/mysql_auth.conf.default

menjadi

#$(INSTALL) -o nobody -g nogroup -m 600 $(CONF) /usr/local/squid/etc/mysql_auth.conf.default

6. Pindah ke directory src, dan edit fi le de-

fi ne.h

$ cd src/ $ vi define.h

Edit pada bagian-bagian berikut:

#define CONFIG_FILE “/usr/local/squid/etc/mysql_auth.conf”

menjadi

#define CONFIG_FILE “/etc/mysql_auth.conf”

7. Edit juga fi le mysql_auth.conf

$ vi mysql_auth.conf

Ubah pada bagian berikut :

a. mysqld_socket /tmp/mysqld.sock

menjadi

mysqld_socket /var/lib/mysql/mysql.sock

b. encrypt_password_form NO

menjadi

encrypt_password_form YES

8. Selanjutnya compile dan instal

$ cd mysql_auth-0.8/ $ make $ su –c “make install”

Page 25: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200574

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Squid

9. Tambahkan database untuk autentifi kasi

user

# cd scripts/ # mysql -u root -p < create_scripts

10. Sekarang coba Anda tes dengan menam-

bahkan user ke tabel data yang ada di

database mysql_auth dengan menggu-

nakan program mypasswd.

# mypasswd supri sup234 Password record ADDED succesfully.

Anda dapat mengeceknya ke dalam tabel

data yang ada di database mysql_auth,

apakah record yang baru dimasukkan

oleh program nypasswd, sudah ada.

# mysql -u root -p mysql_authmysql> select *from data;+-------+------------------+| user | password |+-------+------------------+| supri | 79d544277322393c |+-------+------------------+1 rows in set (0.21 sec)

Dapat Anda lihat hasilnya di atas, kalau

password yang kita masukkan untuk u ser

supri sudah langsung terenkripsi. Hal ini

karena setting-an yang terdapat di fi le

mysql_auth.conf, di mana nilai variabel

encrypt_password_form di set menjadi

YES.

11. Tes validasi user dan password yang telah

anda buat dengan menggunakan pro-

gram mysql_auth

ERR

# mysql_auth supri cobasupri sup234OK

12. Setelah hasil validasi sudah benar, lang-

kah berikutnya adalah menghubungkan

program mysql_auth dengan squid. Un-

tuk itu Anda dapat mengedit fi le squid.

conf.

# vi /etc/squid.conf..........................................................# Tambahan untuk authentifikasiauth_param basic program

/usr/bin/mysql_authauth_param basic realm Squid proxy-caching web serverauth_param basic children 5auth_param basic credentialsttl 2 hours..........................................................# acl definisi (bagian ini berisikan batasan-batasan yang akan dilakukan oleh server # squid).# Dan bagian ini adalah inti dari penerapan kebijakan yang ada di proxy server ..........................................................acl butuhpasswd proxy_auth REQUIREDacl myNet src 192.168.0.0/255.255.255.0acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255..........................................................

# rule (bagian ini berisikan keterangan untuk membiarkan atau menolak bagian acl # yang telah dibuat)...........................................................# Baris ini juga http_access allow butuhpasswdhttp_access allow myNethttp_access allow managerhttp_access allow localhosthttp_access deny !Safe_portshttp_access deny CONNECT !SSL_ports

# Baris ini juga authenticate_ip_ttl 2 hourshttp_access deny all

.............................

.............................

13. Test di browser, dengan mengetikkan ala-

mat suatu situs, kemudian tekan Enter.

Jika muncul layar autentifi kasi setelah

anda menekan tombol Enter, coba Anda

masukkan username dan password yang

telah dibuat, sebagai contoh : username

: supri, password: sup234.

Jika masuk dan tidak mengalami ma-

salah, berarti metode autentifi kasinya

sudah berjalan dengan baik.

7. Transparant proxySetelah menjelaskan keenam cara di atas,

akhirnya sampai juga pada cara terakhir yang

akan penulis jelaskan. Pada semua kasus se-

belumnya, Anda harus men-setting secara

manual setting-an proxy di web browser cli-

ent agar dapat ber-Internet. Mungkin kalau

hanya sepuluh client, hal itu tidak menjadi

masalah. Tetapi bagaimana jika komputer

yang harus disetting berjumlah ratusan,

tentu hal ini akan merepotkan Anda sebagai

administrator. Belum lagi jika suatu saat,

terdapat lagi perubahan IP dan port proxy

server yang digunakan.

Untuk menyiasati hal tersebut, diperlu-

kan suatu cara agar Anda tidak perlu me-

masukkan secara manual setting-an proxy

server yang berlaku. Caranya adalah Anda

dapat menggunakan transparant proxy.

Prinsip kerja transparant proxy adalah se-

buah fi rewall atau redirector lainnya akan

menangkap koneksi TCP yang ditujukan

ke port tertentu pada remote host, dan

kemudian akan mengarahkan koneksi

TCP tersebut ke proxy server lokal. Proxy

server menggunakan header HTTP untuk

menentukan ke mana proxy akan melaku-

kan koneksi dan request dari mana yang

akan di-proxy. Untuk mengaplikasikan

transparant proxy, Anda dapat memerlu-

kan aplikasi Iptables. Dengan Iptables, an-

da cukup membuat rule untuk menangkap

trafi k yang ditujukan untuk port 80, dan

mengarahkan trafi k ini ke port dari proxy

server (biasanya 3128 atau 8080).

Untuk lebih jelasnya, Anda dapat mengi-

kuti petunjuk yang diberikan ada di bawah

ini:

1. Dimisalkan kali ini Anda sudah dapat

menjalankan proxy server secara manual

dengan baik, sekarang tinggal bagaima-

na caranya agar dapat berjalan secara

transparant proxy.

2. Pastikan paket dan service iptables sudah

terinstal dengan baik di sistem Anda.

3. Squid terkonfi gurasi dengan menggu-

nakan port 3128.

Page 26: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 75

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

4. Alamat network yang digunakan adalah

192.168.0.0/24.

Cara mengatur konfi gurasi transparant

proxy:

1. Pastikan kalau sistem telah mendukung

IP Forwarding. Caranya ubah parameter

yang ada di /etc/sysctl.conf pada bagian

ip_forward.

net.ipv4.ip_forward = 0

menjadi:

net.ipv4.ip_forward = 1

Setelah itu, restart service network Anda:

# service network restart

2. Berikutnya edit fi le squid.conf Anda, ke-

mudian tambahkan baris di bawah ini

pada bagian paling bawah dari fi le itu.

# transparent proxyhttpd_accel_host virtualhttpd_accel_port 80httpd_accel_with_proxy onhttpd_accel_uses_host_header on

3. Lakukan masquerading dengan menggu-

nakan iptables. IP masquerading berguna

untuk menghubungkan bebe rapa kom-

puter yang terkoneksi ke sebuah kom-

puter yang sudah terkoneksi ke Internet

agar dapat mengakses ke Internet, atau

istilahnya Internet Connection Sharing.

iptables -A POSTROUTING -j MASQUERADE -t nat -s 192.168.0.0/24 -o eth0

Option -o tersebut tolong anda sesuai-

kan dengan interface yang terdekat de-

ngan jaringan luar.

4. Selanjutnya arahkan semua permintaan

web pada port 80 ke port squid. Untuk

kondisi ini, terdapat dua buah opsi.

Jika squid dan fi rewall yang mengarah-

kan berada pada satu komputer, guna-

kan perintah ini:

iptables -t nat -p tcp -A PREROUTING -s 192.168.0.0/24 -d 0/0 –dport 80 -j REDIRECT –to-ports 3128

Jika Squid dan fi rewall yang mengarah-

kan tidak berada pada satu komputer.

Misal Squid berada pada komputer

yang ber-IP 192.168.0.4 dan port yang

digunakan adalah 3128 atau kita sebut

saja komputer ini dengan nama squid-

box. Dan satunya lagi komputer yang

terhubung ke Internet langsung sebagai

fi rewall mempunyai IP 192.168.0.1 kita

sebut saja komputer ini dengan nama

iptables-box. Dari komputer iptables-

box, coba Anda ketikkan perintah beri-

kut untuk mengaktifkan transparant

proxy di mesin squid-box.

iptables -t nat -A PREROUTING -i eth0 -s ! 192.168.0.4 -p tcp --dport 80 -j DNAT --to 192.168.0.4:3128

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -d 192.168.0.4 -j SNAT –to 192.168.0.1

iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.0.4 -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT

Setelah itu, coba amati fi le access.log di

mesin proxy Anda. Jika semuanya sudah

benar, seharusnya jika ada user yang se-

dang mengakses web, Anda sudah dapat

mengamati prosesnya dari mesin proxy

tersebut.

Demikian artikel tentang step by step

konfi gurasi Squid. Sebenarnya masih ba-

nyak lagi fungsi Squid lainnya yang dapat

anda telusuri lebih lanjut di fi le konfi gurasi

Squid.conf. Pada artikel ini, penulis sudah

menjelaskan secara garis besar konfi gurasi

Squid yang sering digunakan oleh sebagian

besar administrator.

Namun pada intinya, sesuaikan saja

de ngan kebijakan yang benar-benar dibu-

tuhkan oleh Anda. Terkadang tidak semua

fungsi yang ada benar-benar dibutuhkan di

dalam suatu jaringan.

Akhir kata, semoga dengan artikel sing-

kat ini, Anda dapat membuat proxy server

yang andal tanpa terbentur masalah harga

lisensi software proxy komersial yang ma-

hal. Indahnya dunia open source!

Supriyanto ([email protected])

Squid

Page 27: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/200576

TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Mandriva Linux

Mengakali permasalahan instalasi,

itulah yang kita coba selesaikan

di sini. Linux memang menawar-

kan banyak kelebihan, tetapi untuk masalah

instalasi sepertinya Linux belum bisa me-

nenangkan para penggunanya.

Akan tetapi, Linux selalu memberikan

solusi untuk permasalahan yang selalu men-

jadi momok bagi pengguna Linux terutama

yang masih pemula. Memang tema yang di-

angkat di sini adalah menginstalasi melalui

jaringan, tapi tips ini juga bisa diimplemen-

tasikan pada komputer standalone.

Pada instalasi paket melalui jaringan

ini, kita pertama akan membangun sebuah

ser ver repositori. Pada server repositori

ini, ditempatkan semua paket Linux yang

akan diinstalasi ke komputer-komputer

client. Untuk komputer standalone, maka

komputer bertindak sebagai server reposi-

tori sekaligus sebagai komputer client. Pa-

ket-paket Linux di sini berupa paket-paket

RPM khusus distro Mandriva Linux. Se-

dangkan, paket-paket tarbal (tar.gz atau tar.

bz2) harus diubah terlebih dahulu menjadi

paket RPM. Untuk mengubah paket tarbal

menjadi paket RPM pernah dibahas pada

InfoLINUX terdahulu.

Distro yang digunakan kali ini adalah

Mandriva Linux, tetapi tips ini juga berlaku

bagi pengguna Mandrakelinux. Sedangkan,

tips instalasi paket melalui jaringan pada

distro-distro Linux lainnya akan kita bahas

pada InfoLINUX edisi-edisi mendatang.

Pertama, kita akan membangun server

repositori. Ingat, jalankan perintah-perin-

tah dibawah ini sebagai ‘root’, kecuali ben-

tuk prompt yang diperlihatkan adalah ‘$’.

Sebelumnya, periksalah server repositori

Anda, apakah instalasi Mandriva Linux su-

dah dilengkapi dengan paket Apache web

server, dengan perintah:

$ rpm -qa | grep apache

Jika terdapat keluaran, maka paket

Apache sudah terinstalasi. Jika belum, Anda

dapat menginstalasinya dengan:

# urpmi apache2

Bagi komputer standalone, Anda tidak

perlu menginstalasi paket Apache. Selain

itu, di sini diasumsikan bahwa server reposi-

tori menggunakan nomor IP 192.168.0.33.

Siapkan direktori utama untuk meletak-

kan paket-paket RPM Mandriva Linux. Pa-

da tutorial ini kita menggunakan contoh di-

rektori /home/repositori. Direktori ini bisa

Anda tentukan di mana saja. kemudian atur

permission direktori tersebut agar dapat

diakses oleh siapa saja:

# mkdir /home/repositori# chmod 755 /home/repositori

Kemudian, buatlah direktori di dalam-

nya untuk meletakkan paket-paket RPM

Mandriva Linux. Misalnya, paket-paket

RPM dari CD-CD instalasi Mandriva Linux

yang terdapat di dalam direktori media/

main pada setiap CD-CDnya dicopy ke di-

rektori /home/repositori/pakets. Kemudian,

masuklah ke dalam direktori tersebut dan

jalankan perintah ‘genhdlist’:

# mkdir /home/repositori/pakets

Tips Instalasi Paket Mandriva Linux Melalui JaringanMenginstalasi paket di Linux memang selalu dihadapkan dengan masalah dependensi. Tapi, hal tersebut bukanlah masalah lagi.

Gambar 1. Mempersiapkan direktori repositori. Gambar 2. Menambahkan baris Alias pada commonhttpd.conf.

Page 28: Linux Admin Mengamati Log Sistem - files.if.undip.ac.idfiles.if.undip.ac.id/view.php?file=eMagz/Info... · rectory user saja (akan sangat menyebalkan) sampai lokasi temporary lain.

INFOLINUX 09/2005 77

TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial

www.infolinux.web.id

Mandriva Linux

# chmod 755 /home/repositori/pakets# cd /home/repositori/pakets# genhdlistparsing .

Apabila tidak terdapat keluaran pesan

error, berarti tidak terdapat masalah pada

paket-paket RPM didalam direktori ini.

Jika Anda ingin menambahkan direkto-

ri-direktori lain, misalnya direktori /home/

repositori/updates untuk menaruh paket-

paket RPM update Mandriva Linux resmi

yang diperoleh dari Internet, atau direktori

/home/repositori/penting untuk menaruh

paket-paket RPM yang harus terinstalasi

pada setiap komputer client jaringan.

Tapi, jangan lupa untuk mengatur per-

mission direktorinya agar dapat diakses oleh

siapa saja, jalankan perintah ‘genhdlist’.

Sekarang direktori untuk repositori pa-

ket-paket RPM Mandriva Linux sudah siap.

Kemudian, kita akan melakukan penga-

turan pada Apache web server agar dapat

diakses oleh komputer-komputer client.

Sebagai root, editlah fi le commonhttpd.

conf yang terdapat di direktori /etc/httpd/

conf dengan menggunakan tool editor (di

sini kami menggunakan vim).

# vim /etc/httpd/conf/commonhttpd.conf

Carilah di dalam fi le commonhttpd.conf

tersebut bagian Aliases, seperti pada gambar

2, kemudian tambahkan baris:

Alias /repositori /home/repositori

Sehingga menjadi seperti yang terlihat

pada gambar 2. Kemudian pada bagian ak-

hir dari fi le commonhttpd.conf tambahkan:

...<Directory /home/repositori> Options Indexes MultiViews AllowOverride None <IfModule mod_access.c> Order allow,deny Allow from all </IfModule></Directory>...

Sehingga menjadi seperti yang terlihat

pada gambar 3.

Sekarang, restart service Apache agar

perubahan-perubahan yang baru saja kita

lakukan terupdate pada service Apache:

# /etc/init.d/httpd restart

Periksalah apakah perubahan yang kita

lakukan barusan sudah benar dengan brow-

ser Firefox, dan coba kunjungi “http://local-

host/repositori/” atau “http://192.168.0.33/

repositori/”, maka seharusnya akan me-

nampilkan seperti pada gambar 4. Nah, se-

karang server repositori siap digunakan.

Lalu, untuk pengaturan pada komputer-

komputer client, jalankan perintah:

# urpmi.addmedia <nama repositori> http://<nomor IP server repositori/direktori

misalnya:

# urpmi.addmedia pakets http://192.168.0.33/repositori/pakets

Atau, gunakan cara yang lebih mu-

dah, yaitu dengan Mandrakelinux Control

Center. Pada komputer client, masuk ke

Menu->System->Confi guration->Confi gure

Your Computer. Kemudian, pilih tabulasi

Software Management, dan pilih icon “Se-

lect from where software packages are down-

loaded when updating the system”. Klik pada

tombol Add Custom, pilih medium “HTTP

server”, masukkan nama repositori pada

kolom “Name:” (misalnya: “pakets”), dan

masukkan situs tujuan pada kolom “URL:”

(misalnya: “http://192.168.0.33/repositori/

pakets”), lalu klik Ok. Maka, repositori pa-kets akan muncul pada tampilan jendela

“Media Manager”, klik Ok.

Anda bisa menambahkan repositori-re-

positori lainnya dengan melakukan lang-

kah-langkah yang sama seperti di atas.

Sekarang Anda dapat melakukan ins-

talasi paket dari komputer client melalui

Mandrakelinux Control Center tadi, dengan

mengklik icon “Look at installable software

and install software packages”. Di sana Anda

akan melihat paket-paket Mandriva Linux

yang tersedia.

Jika lebih menyukai melalui command

line, Anda bisa menggunakan perintah:

# urpmi <nama paket>

misalnya menginstalasi xmms dengan:

# urpmi xmms

Maka, urpmi akan menginstalasi seka-

ligus paket-paket dependensinya, Jadi Anda

tidak perlu bersusah-susah payah lagi.

E. Wiryadi Salim ([email protected])

Gambar 3. Menambahkan baris Direktori pada file commonhttpd.conf. Gambar 4. Mengetes perubahan pada commonhttpd.conf.