M0n0wall, embedded firewall yang ringan, hemat biaya dan mudah

M0n0wall Part 1.


M0n0wall merupakan embedded firewall berbasiskan freeBSD yang ringan dan mudah penggunaannya. Bisa dikatakan ringan karena untuk menjalankannya tidak memerlukan spesifikasi hardware yang tinggi atau dapat dijalankan di pc lawas(PII/PIII), hal ini akan sangat membantu mengurangi biaya yang dikeluarkan untuk membangun firewall. Meskipun demikian m0n0wall sudah cukup untuk memenuhi kebutuhan firewall untuk jaringan skala menengah ke bawah. Untuk konfigurasi dan administrasinya tidaklah terlalu menyulitkan karena bisa dilakukan melalui web(webGUI, support SSL) jadi tidak perlu berurusan dengan shell kecuali ketika pertama kali booting untuk mengatur interface atau IP Addressnya, reset password ataupun untuk reset konfgurasi.

Hardware requirement

Memori yang dibutuhkan cukup 64 MB atau lebih dan bisa kurang tetapi akan sangat membahayakan karena m0n0wall tidak menggunakan swap space. Storage yang diperlukanpun tidak besar, bisa dijalankan melalui cdrom atau floppy. Jika menggunakan CF(Compact Flash) maka cukup 8 MB atau lebih, jika menggunakan Hardisk juga tidak memerlukan kapasitas yang besar( 512 Mb bisa kurang atau lebih). Pada dasarnya kebutuhan hardware untuk menjalankan m0n0wall tidaklah menyulitkan atau bisa berjalan di genericPC(PC standar), karena merupakan turunan freeBSD maka hampir semua hardware yang bisa dijalankan di freeBSD/i368  bisa di dijalankan di m0n0wall.

Fitur
Fitur yang ditawarkan cukup lengkap dan sudah memenuhi kebutuhan untuk dioperasikan sebagai firewall ataupun router untuk internet connection sharing.
Fitur-fitur m0n0wall antaralain:
  • web interface (supports SSL) untuk konfigurasi
  • serial console interface for recovery
  • set LAN IP address
  • reset password
  • restore factory defaults
  • reboot system
  • wireless support (access point with PRISM-II/2.5/3 cards, BSS/IBSS with other cards including Cisco)
  • captive portal(http://en.wikipedia.org/wiki/Captive_portal), untuk mengatur authentifikasi client yang akan mengakses internet/jaringan lain.
  • 802.1Q VLAN support
  • stateful packet filtering
  • block/pass rules
  • logging
  • NAT/PAT (including 1:1)
  • DHCP client, PPPoE, PPTP and Telstra BigPond Cable support on the WAN interface
  • IPsec VPN tunnels (IKE; with support for hardware crypto cards, mobile clients and certificates)
  • PPTP VPN (with RADIUS server support)
  • static routes
  • DHCP server and relay
  • caching DNS forwarder
  • DynDNS client and RFC 2136 DNS updater
  • SNMP agent
  • traffic shaper
  • SVG-based traffic grapher
  • firmware upgrade through the web browser
  • Wake on LAN client
  • configuration backup/restore
  • host/network aliases

Dengan fitur yang sedemikian lengkap m0n0wall dapat menjadi solusi yang cepat untuk membangun firewall karena proses instalasinya yang tidak memakan waktu lama, menghemat biaya dan relatif aman(default).

M0n0wall menyediakan beberapa image binary yang bisa didapatkan secara gratis di:

http://m0n0.ch/wall/downloads.php

paket image binary tersebut antara lain :
untuk dokumentasi dan tutorialnya bisa di lihat di:
- http://doc.m0n0.ch/handbook/
- postingan saya selanjutnya (dalam waktu yang belum ditentukan...)


Bersambung...

Postingan selanjutnya tentang m0n0wall
- Instalasi m0n0wall ke hardisk part 1(konfigurasi Puppy Linux).
- Instalasi m0n0wall ke hardisk part 2.
- M0n0wall, Konfigurasi Network Interface.


Referensi:
- http://m0n0.ch/wall/
- http://wikipedia.org
- dll

Read More......

Generate script iptables dengan Easy Firewall Generator online

Keamanan komputer sangatlah penting, terutama komputer yang terhubung dengan jaringan baik jaringan publik(internet) maupun jaringan lokal(LAN). Dengan memasang firewall termasuk salah satu cara mengamankan komputer, dan bukan berarti jika kita telah memasang firewall berarti sudah aman 100%, disamping itu kemampuan firewall untuk juga tergantung konfigurasi dan rule yang kita terapkan untuk mengatur koneksi dari dan kemana saja yang di izinkan atau yang di blok.

Untuk OS Windows tersedia bermacam produk dari yang gratis sampai yang bayar dan biasanya firewall tersebut di bundle dengan antivirus. Untuk OS Keluarga Unix salah satu firewall yang terkenal adalah iptables(opensource), selain sebagai paket filtering juga dapat digunakan sebagai redirect paket dan NAT(Network Address Translation).
Namun menggunakan iptables tidaklah semudah firewall berbasis Windows yang dikemas dengan tampilan menarik dan userfriendly, dengan iptables maka sebelumnya harus memahami sintaksnya. Jika rule koneksi rumit dan banyak maka akan banyak sekali command yang diketik, dokumentasi dan howto dapat di lihat di http://www.linuxguruz.com/iptables/howto. Salah satu tool berbasis web yang mempermudah untuk men-generate script iptables adalah Easy Firewall Generator dapat dilihat di http://easyfwgen.morizot.net/gen/.

Untuk men-generate script iptables dengan Easy Firewall dapat anda lakukan disini dan kemudian mengisi IP interface yang digunakan, IP Address(untuk IP statis), memilih apakah komputer digunakan sebagai single system(standalone) atau sebagai gateway, pilihan log dan service/port untuk koneksi inbound yang akan dibuka. Setelah setelah semua isian dan pilihan-pilihan terisi sesuai kebutuhan selanjutnya tinggal men-generate dan scriptnya tersebut disimpan dan tingal dijalankan di komputer. Script hasil generate Easy Firewall selain perintah-perintah iptables juga dilengkapi perintah untuk meload modul-modul yang diperlukan dan men-set parameter kernel, tiap-tiap bagian perintah disertai keterangan untuk mempermudah memahami script tersebut.

Easy Firewall sangat membantu dan memudahkan kita untuk membuat script iptables, tetapi kita harus ingat bahwa bukan berarti dengan telah terpasangnya firewall system kita aman 100%, oleh karena itu kita harus tetap waspada.
Seperti kata bang napi "waspadalah...waspadalah.... waspadalah..!!!


Referensi :
http://easyfwgen.morizot.net/gen/
http://www.linuxguruz.com

Read More......

SMS dengan Gammu dan MySQL

Bersmsria di konsole linux atau menjadikan linux sebagai sms gateway..?
hmmm.. sungguh menyenangkan. :)
Baiklah, tanpa berpanjang lebar lagi, berikut langkah-langkah untuk membuat linux bisa bersms ria dengan gammu dan sms yang masuk dan keluar di simpan ke dalam database(MySQL).

Persiapan
Pertama harus disiapkan handphone dengan koneksi ke komputer menggunakan kabel (serial/usb) atau dengan bluetooth, dan jangan lupa mengisi pulsanya karena percumah kita bersusah payah membuat sms server tapi pulsanya tidak ada :D .
MySQL juga harus sudah terisntall karena semua pesan yang keluar dan masuk akan di simpan ke dalam database dan disini tidak di sertakan cara instalasi MySQL karena sebagian besar distro linux sudah terinstall MySQL atau disertai paket instalasi MySQL.

Perhatian:
Pada tutorial ini gammu yang digunakan sebagai contoh adalah versi 1.13.90
Selanjutnya download source gammu di :
http://dl.cihar.com/gammu/releases/gammu-1.13.90.tar.bz2

# cd /usr/src
# wget http://dl.cihar.com/gammu/releases/gammu-1.13.90.tar.bz2

setelah selasai download langsung di ekstrak

# tar zxvf gammu-1.13.90.tar.bz2

Perhatian :
Sebelum kompilasi pastikan cmake sudah terinstall pada linux box anda, jika belum anda dapat mendownload di sini dan cara installnya bisa dilihat di sini.

Setelah cmake bisa di beresken tanpa error marilah kita lanjutkan urasan kita dengan gammu. Jalankan pada terminal :

# cd gammu-1.13.0
# mkdir build
# cd build
# cmake ..
# make
# make install


Jika sampai disini tidak ada error berarti gammu sudah terinstall, langkah berikutnya tinggal mengkonfigurasi gammu. File konfigurasi gammu terletak di direktori /etc yaitu smsdrc dan gammurc, contoh file konfigurasi tersebut dapat di temukan di dalam direktori "docs/examples/config",karena secara default file konfigurasi tersebut belum ada maka sebaiknya kita kopi, jalankan :

# cd /usr/src/gammu-1.13.0/build
# cp ../docs/examples/config/gammurc /etc
# cp ../docs/examples/config/smsdrc /etc


Editlah file tersebut(/etc/smsdrc) seperti berikut:

#[gammu]
port = /dev/ttyACM0
#model = 6110
connection = at19200
#synchronizetime = yes
#logfile = gammulog
#logformat = textall
#use_locking = yes
#gammuloc = gammu.us
#startinfo = yes

------------------------- di potong disini --------------------------------
----- dan untuk sementara bagian bawahnya kita abaikan dahulu -------

Editlah bada bagian "port" dan sesuaikan dengan koneksi HP/modem GSM nya, begitu juga pada bagian "connection". Pada contoh di atas saya menggunakan koneksi kabel USB dengan Hp SE K550i( sesuai dengan http://cihar.com/gammu/phonedb/sony-ericsson/459/).
Untuk "port" disesuaikan dengan linux mengenal sebagai apa, jika menggunakan kabel serial biasanya di linux di kenal dengan :

"/dev/ttyS*"

jika menggunkan USB biasanya linux mengenalnya dengan :

"/dev/ttyACM*"

atau

"/dev/ttyUSB*"

untuk mempermudah sebaiknya anda sebelum memasang kabel dari HP tersebut ke komputer menjalankan perintah :

# tail -f /var/log/messages

agar ketika kabel tersebut di pasang ke komputer akan terlihat device yang baru terpasang di dalam log dan sebagai apa linux mengenal device tersebut.

Jika menggunakan bluetooth maka portnya diisi dengan dengan bluetooth address-nya. Jika Modem atau Handphone yang di gunakan lain maka untuk petunjuk konfigurasi "connection" silahkan anda cari di sini.
Setelah konfigurasi selesai selanjutnya bisa kita tes menjalankan gammu :

# gammu --identify

jika outputnya tidak error dan berupa informasi mengenai HP yang tersambung maka gammu berhasil jalan..
Nah.. sekarang kita sudah bisa mengirimkan sms dengan menggunakan perintah :

# echo ..isi pesan.. | gammu --sendsms TEXT notujuan

Sampai disini gammu sudah bisa di gunakan untuk mengirim/menerima sms, agar semua sms yang masuk dan keluar di simpan ke dalam database(MySQL) maka kita harus mengkonfigurasi gammu lagi. Untuk itu Editlah file /etc/smsdrc pada bagian setingan untuk database MySQL, seperti di bawah ini

----------------/etc/smsdrc di potong disini --------------------

[smsd] PIN = 1234
logfile = /var/log/smsdlog
commtimeout = 1
sendtimeout = 10
#receivefrequency = 0
#resetfrequency = 0
#deliveryreport = no
#phoneid = MyPhone1
#deliveryreportdelay = 10
# -----------------SETTINGS FOR --smsd MYSQL --------------
user = root
# user mysql untuk mengakses database, biasanya root
password = password
#isilah dengan password user di mysql tersebut
pc = localhost
database = sms
#nama databasenya
# when you send sms from some SMSC, you can have Delivery/Failed Delivery

--------------/etc/smsdrc di potong disini ------------------

Langkah selanjutnya berikutnya membuat database:

# mysql -u root -p
Enter password: <--- masukan password user root untuk MySQL

Setelah masuk buatlah database dengan nama "sms".

mysql>create database sms;

Query OK, 1 row affected (0.00 sec)

mysql>quit
Bye

Setelah database berhasil di buat, selanjutnya membuat tabel-tabelnya. Untuk memudahkanya masuklah ke direktori hasil ekstrak gammu, di terminal jalankan:

# cd /usr/src/gammu-1.13.0/docs/examples/config/

pastikan di direktory config terdapat file "mysql.sql" untuk membuat tabel yang di butuhkan untuk meyimpan sms yang keluar dan masuk.

# ls -l
total 36
-rw-r--r-- 1 root root 9611 2007-06-11 17:04 gammurc
-rw-r--r-- 1 root root 6016 2006-06-12 13:47 mysql.sql
-rw-r--r-- 1 root root 7460 2007-01-27 03:13 pgsql.sql
-rw-r--r-- 1 root root 7246 2007-08-09 15:43 smsdrc

jika file"mysql.sql" ada, kemudian jalankan perintah (masih di direktori
/usr/src/gammu-1.13.0/docs/examples/config/) :

# mysql -u root -p
Enter password: <-- (jagan lupa masukan password) mysql>use sms;
mysql>\. mysql.sql
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected (0.02 sec)
Query OK, 1 row affected (0.01 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected (0.03 sec)

mysql>show tables;
+------------------+
| Tables_in_sms |
+------------------+
| daemons |
| gammu |
| inbox |
| outbox |
| outbox_multipart |
| pbk |
| pbk_groups |
| phones |
| sentitems |
+------------------+
9 rows in set (0.00 sec)

mysql>quit
Bye

Nah... sekarang gammu sudah bisa dijalankan dengan MySQL.
Cara menjalankannya :

#echo isi pesan | gammu --sendsmsdsms TEXT notujuan MYSQL /etc/smsdrc

atau dengan

#gammu --smsd MYSQL /etc/smsdrc
Log filename is "/var/log/smsdlog"
Press Ctrl+C to stop the program ...

Untuk membaca sms yang datang anda tinggal melihat di database sms tabel inbox, untuk memudahkan bisa menggunkan phpmyadmin atau menggunakan script php yang bisa di download di sini, dan kemudian ekstrak ke direktory yang bisa diakses dengan browser, tetapi sebelumnya pada file sms.php harus di edit sesuaikan dengan user dan password untuk koneksi MySQL nya dan kemudian jalankan apache.

Nah...
sampai disini kiranya tutorial sms dengan gammu dan mysql, serta masih bisa dikembangkan lagi sesuai kebutuhan dan itu tergantung kemauan dan kreativitas kita.

viva.. opensource


Referensi :
- http://www.syednetworks.com
- http://www.gammu.org/wiki/index.php?title=Main_Page

Read More......

Synbak, cara mudah untuk backup

Dengan synbak kita dapat mem-backup file atau database dengan mudah baik backup lokal dan remote. Konfigurasinya sederhana sehingga memudahkan kita untuk menggunakan synbak sesuai kebutuhan, dimana synbak menngunakan satu file konfigurasi untuk masing-masing metode yang digunakan.

Synbak menggunakan beberapa metode untuk menjalankan backup, antara lain:
- RSync over ssh, rsync daemon, smb dan cifs protocols
- Tar archives (tar, tar.gz dan tar.bz2)
- Tape devices
- LDAP databases
- MySQL databases
- Oracle databases
- CD-RW/DVD-RW

Kehebatan lainnya, setelah mem-backup synbak akan menghasilkan report berupa :
- email
- html
- RSS feeds

Dengan report tersebut memudahkan kita untuk memonitoring backup sehingga jika ada kegagalan dalam proses backup kita dapat segera mengetahuinya. Proses instalasi synbak juga mudah dan tidak memakan waktu yang lama. Berikut ini akan saya contohkan instalsi synbak dan konfigurasinya.

Instalasi synbak
Sebelumnya kita harus mengunduh source synbak di : http://www.initzero.it/portal/en/products/opensource/synbak/download

masuklah ke direktori hasil download source synbak dan jangan lupa untuk login sebagai root. berikut ini perintah yang dijalankan di konsole :

# tar zxvf synbak-1.0.11.tar.gz -C /usr/src/

masuklah ke direktori hasil extrak synbak dan kemudian di install

# cd /usr/src/synbak-1.0.11/
# ./configure
# make
# make install

Seperti saya katakan diatas bahwa synbak memerlukan satu file konfigurasi untuk masing-masing metode(laserdisc, ldap, mysql, oracle, rsync, tape, tar) backupnya, misal kita menjalankan synbak sebagi user admin(home direktorinya /home/admin) untuk membackup sistem/komputer dengan nama webserver menggunakan metode tar maka synbak akan memabaca file konfigurasi :

/home/admin/.synbak/tar/webserver.conf

jika dengan metode rsync :

/home/admin/.synbak/rsync/webserver.conf

jika dengan metode mysql( untuk backup database MySQL) :

/home/admin/.synbak/mysql/webserver.conf

Jika kita menjalankannya sebagai user root dengan metode rsync untuk membackup sistem/komputer dengan nama www maka synbak akan menggunkana file konfigurasi:

/root/.synbak/rsync/www.conf

Pada saat instalasi synbak tidak membuat file konfigurasi dan direktori untuk masing metode, kita bisa membuatnya secara manual atau dengan menjalankan synbak untuk memacingnya karena ketika dijalankan synbak akan memeriksa apakah direktori dan file konfigurasi sudah ada jika tidak ada maka synbak akan membuatkan direktori tersebut berserta file konfigurasi contoh(~/.synbak/example.conf). Berikut saya contohkan untuk backup serderhana menggunakan beberapa metode baik untuk baukup lokal maupun remote backup.

Sebagai contoh disini kita login sebagi user root, sebagai persiapannya kita terlebih dahulu membuat direktori yang diperlukan untuk tempat file konfigurasi.

# cd ~
# mkdir .synbak
# cd .synbak
# pwd
/root/.synbak
# mkdir tar mysql rsync

Menggunakan metode tar
sistem/komputer lokal yang akan kita backup di beri nama : lok_etc_squid
dengan direktori yang akan dibackup : /etc/squid
direktori penampung hasil backup : /backup/squid-conf
metode : tar
report : html

maka harus dibuat file configurasi lok_etc_squid.conf di direktori /root/.synbak/tar/, agar lebih mempermudah kita dapat menggunakan contoh file konfigurasi bawaan synbak sebagai acuan ([direktori-hasil-ekstrak-synbak]/examples/example.conf).

# mkdir -p /backup/squid-conf <-- membuat direktori untuk menampung hasil backup
# cd ~/.synbak/tar
# cp /usr/src/synbak-1.0.11/examples/example.conf lok_etc_squid.conf
# pico lok_etc_squid.conf

kemudian editlah file tersebut dan sesuaikan seperti pada baris-baris di bawah ini:

#@@ mandatory backup fields
backup_source = /etc/squid
backup_destination = /backup/squid

#@@ email output reporting
#report_email = no
#report_email_on_errors = yes
#report_email_rcpt = support@initzero.it

#@@ html/rss output reporting
report_html = yes
report_html_on_errors = yes
report_html_destination = /var/www/html/admin/log/backup
report_html_uri = http://localhost/admin/log/backup
report_html_logo = yes
report_html_logo_image =
report_html_logo_link = http://www.initzero.it

Perhatian:
pastikan direktori untuk report_html_destination(/var/www/html/admin/log/backup) ada dan user yang menjalankan synbak mempunyai akses untuk menulis ke direktori tersebut.

setelah disimpan kita sudah bisa melakukan backup dengan perintah :

# synbak -s lok_etc_squid -m tar -M gz

Catatan:
maksud perintah diatas adalah memrintahkan synbak untuk membackup sistem yang bernama lok_etc_squid(-slok_etc_squid) dengan metode tar(-m tar) dan dengan hasil backup yang di kompres(-M gz) dimana hasil dari backup akan berupa file dengan ekstensi tar.gz. Jika kita ingin hasil dari backup berupa file kompresi bz2 maka bisa menggunkan opsi -M bz2. Untuk metode tar terdapat 3 opsi yaitu tar, gz dan bz2.
Ketika dalam proses backup synbak juga menghasilkan report yang ditampilkan pada layar sehingga jika ada error/kegagalan dapat diketahui.

Menggunakan metode rsync untuk remote backup via ssh
Misal kita ingin membackup direktori /var/www/htdoc di komputer lain dengan IP Address 192.168.10.7 dan sistem/komputer tersebut kita beri nama www, file hasil backup akan ditempatkan di direktory /backup/www pada komputer kita.
Karena metode yang digunakan rsync via ssh maka kita harus konfigure ssh server dan client agar autentifikasinya menggunakan key dan pastikan user yang digunakan mempunyai hak akses terhadap data yang akan di backup. Disini tidak akan dijelaskan bagaimana mengkonfigur autentifikasinya ssh dengan key, tutorial untuk membuat autentifikasi ssh dengan key dapat anda lihat di sini.

Setelah konfigurasi ssh dengan autentifikasi key sudah dibuat selanjutnya membuat file konfigurasinya, berikut langkah-langkahnya :

# mkdir /backup/www
# cd ~/.synbak/rsync
# cp /usr/src/synbak-1.0.11/examples/example.conf www.conf

kemudian editlah file tersebut dan sesuaikan seperti pada baris-baris di bawah ini:

#@@ mandatory backup fields
backup_source = /var/www/htdocs
backup_destination = /backup/www

#@@ remote backup
backup_remote_uri = ssh://root@192.168.10.7

#@@ email output reporting
#report_email = no
#report_email_on_errors = yes
#report_email_rcpt = support@initzero.it

#@@ html/rss output reporting
report_html = yes
report_html_on_errors = yes
report_html_destination = /var/www/html/admin/log/backup
report_html_uri = http://localhost/admin/log/backup
report_html_logo = yes
report_html_logo_image =
report_html_logo_link = http://www.initzero.it

setelah disimpan kita sudah bisa melakukan backup dengan perintah :

# synbak -s www -m rsync

Membackup database MySQL
Synbak bisa digunakan untuk membackup database lokal maupun database di mesin lain, tetapi jika dilakukan untuk membackup database secara remote tentunya akan membahayakan apalagi jika koneksinya melalui jaringan publik(internet) karena ada kemungkinan di sadap.
Berikut contoh backup database MySQL dengan menggunakan metode mysql, misal database yang akan di backup berada di mesin lokal yang diberi nama lok_mysql dan hasil backup di tempatkan di direktori /backup/mysql.

# mkdir /backup/mysql
# cd ~/.synbak/mysql
# cp /usr/src/synbak-1.0.11/examples/example.conf lok_mysql.conf

kemudian editlah file tersebut dan sesuaikan seperti pada baris-baris di bawah ini:

#@@ mandatory backup fields
#backup_source = /
backup_destination = /backup/mysql

#@@ remote backup
backup_remote_uri = mysql://user:password@localhost

#@@ email output reporting
#report_email = no
#report_email_on_errors = yes
#report_email_rcpt = support@initzero.it

#@@ html/rss output reporting
report_html = yes
report_html_on_errors = yes
report_html_destination = /var/www/html/admin/log/backup
report_html_uri = http://localhost/admin/log/backup
report_html_logo = yes
report_html_logo_image =
report_html_logo_link = http://www.initzero.it

Perhatian:
pada baris backup_remote_uri = mysql://user:password@localhost, sesuaikan dengan user dan password database MySQL.

setelah disimpan kita sudah bisa melakukan backup dengan perintah :

# synbak -s lok_mysql -m mysql

Hasil backup dengan metode diatas berupa mysql dump yang dikompress dengan format bzip2.

Penjadwalan backup
Jika ingin menjalankan backup secara berkala kita dapat menggunakan cron sehingga kita tidak perlu report menjalankan setiap peride tertentu. Untuk melakukan penjadwalan dengan cron dapat anda lihat di sini. http://www.scrounge.org/linux/cron.html


Referensi
http://www.initzero.it/products/opensource/synbak/
http://www.linux.com/feature/120062

Read More......

DNS server menggunakan BIND chroot dengan kontrol rndc key

BIND(Berkeley Internet Name Domain project) adalah aplikasi DNS server opensource yang sudah terkenal dan stabil. Mengenai sekilas tentang DNS bisa di lihat di postingan saya sebelumnya di sini. Pada tutorial ini kita akan membuat DNS server sederhana menggunakan BIND chroot dan di kontrol dengan rndc key dengan alasan meningkatkan keamanan.

Dengan chroot kita dapat membatasi ruang lingkup(direktori) user/daemon atau di penjarakan, ini dilakukan untuk memperkuat keamanan sistem. Jika suatu user/daemon yang di chroot maka dia tidak akan bisa keluar dari direktori(home directory) yang telah di tetapkan, hal ini sangat bermanfaat misal user/daemon yang di jail(chroot) telah diambil alih oleh penyusup maka dia tidak akan bisa keluar dari direktory tersebut dan akan mengurangi resiko pencurian data, tidak akan menggangu user lain atau kinerja sistem secara keseluruhan tapi hanya sebagian saja. Oleh karena itu untuk melakukan chroot harus menetukan environment dan permission yang tepat untuk user/daemon yang akan di jail.

Rndc(remote name daemon control) merupakan utility dari bind untuk mengontrol akses daemon, dengan menggunakan rndc bisa mencegah akses user ilegal(unauthorized) dari sistem lain untuk mengontrol BIND di server kita.

Perhatian:
pada tutorial ini sebagai contoh digunakan nama domain feedyourmind.org
nameserver :
192.168.10.1 --> gw.feedyourmind.org
client :
192.168.10.3 --> ubs.feedyourmind.org
192.168.10.4 --> dp.feedyourmind.org

Selanjutnya adalah langkah-langkah untuk menginstalasi bind yang di jail dan menggunakana rndc.

Instalasi BIND
Untuk mendapatkan bind versi terbaru bisa di download di www.isc.org. Pada tutorial ini saya menggunakan bind-9.4.1.tar.gz, setelah di download loginlah sebagai root kemudian pindahkan file tersebut ke direktori /usr/src. Jalankan perintah-perintah berikut:

# cd /usr/src
# tar zxvf bind-9.4.1.tar.gz

selanjutnya di konfigur

# cd bind-9.4.1
# ./configure --prefix=/usr/local

dengan menggunakan --prefix=/usr/local maka file hasil istalasi akan di tempatkan dibawah direktori /usr/local. Jika tidak ada error lanjutkan dengan make dan make install

# make
# make install

Membuat user, group dan direktori untuk chroot BIND
Setelah instalasi selesai tanpa error berikutnya membuat group dan user named untuk menjalankan bind(daemon).

# groupadd named
# useradd -g named -g /chroot/named -s /bin/true named

kemudian kunci user named

# passwd -l named

membuat direktori untuk memenjarakan user named

# mkdir -p /chroot/named

opsi -p digunakan agar sekaligus membuat parent direktorinya(/chroot), kemudian masuk ke direktori yang baru dibuat

membuat direktori yang diperlukan dibawah direktori /chroot/named

# cd /chroot/named
# mkdir dev
# mkdir etc
# mkdir -p var/run
# mkdir conf/secondaries

membuat device yang diperlukan dan mengkopi file timezone

# cd /chroot/named
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# mknod dev/random c 1 8
# cp /etc/localtime etc

Konfigurasi named
setelah direktori untuk men-jail sudah siap selanjutnya membuat file configurasi /chroot/named/etc/named.conf dengan menggunakan teks editor vi, pico atau yang lain.

# pico /chroot/named/etc/named.conf

isi dari file /chroot/named/etc/named.conf sebagai berikut :

#
# /chroot/named/etc/named.conf
#

options {
directory "/conf";
# direktori letak data file zona
pid-file "/var/run/named.pid";
statistics-file "/var/run/named.stats";
dump-file "/var/run/named.db";

# direktori /conf dan /var/run disini bukanlah terletak di bawah
# direktori root(/) tetapi terletak di bawah direktori
# /chroot/named, hal ini dikarenakan user/daemon named di chroot
# sehingga root direktori dari named adalah /chroot/named.

# hide our "real" version number
version "[secured]";

// query-source address * port 53;
};

zone "." IN {
type hint;
file "db.rootcache";
# file yang memuat record root server
};

zone "localhost" IN {
type master;
file "db.localhost";
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "db.127.0.0.";
notify no;
};

zone "feedyourmind.org" IN {
type master;
file "db.feedyourmind.org";
};
# pada baris diatas didefinisikan sebuah zona yaitu feedyourmind.org
# dengan nama datafile zonanya db.feedyourmind.org yang terletak di
# direktori /chroot/named/conf

zone "10.168.192.in-addr.arpa" IN {
type master;
file "db.192.168.10";
};
# pada baris diatas didefinisikan sebuah zona untuk reverse lookup
# yaitu 10.168.192.in-addr.arpa dengan nama datafile zonanya
# db.192.168.10 yang terletak di direktori /chroot/named/conf

setelah disimpan buatlah link dari file named.conf

# ln -s /chroot/named/etc/named.conf /etc/named.conf

Konfigurasi rndc
setelah selesai dengan named.conf selanjutnya mengkonfigurasi rndc dengan men-generate rndc key dengan dnssec-keygen.

# cd /chroot/named/etc
# /usr/local/sbin/dnssec-keygen -a HMAC-MD5 -b 256 -n HOST rndc

jika sukses akan terdapat dua file baru yaitu

# ls -alh /chroot/named/etc
...
-rw------- 1 root root 112 2007-10-30 14:46 Krndc.+157+26911.private
-rw------- 1 root root 68 2007-10-30 14:46 Krndc.+157+26911.key
...

kemudian membuat file configurasi rndc yaitu /chroot/named/etc/rndc.conf

# pico /chroot/named/etc/rndc.conf

isi file rndc.conf sebagai berikut

#
# /chroot/named/etc/rndc.conf
#

options {
default-server 127.0.0.1;
default-key "rndc-key";
};

server 127.0.0.1 {
key "rndc-key";
};

key "rndc-key" {
algorithm "hmac-md5";
secret "secret key;
};

PERHATIAN...!
editlah file rndc.conf diatas pada bagian:

key "rndc-key" {
algorithm "hmac-md5";
secret "secret key;
};

gantilah "secret key" dengan key pada file Krndc.+157+26911.private yang merupakan hasil generate menggunakan dnssec-keygen. misal:

# cd /chroot/named/etc
# cat Krndc.+157+26911.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: 13Ms0r2NEoJ+ngxsa/fg9x8ed6X5LrvAklZmuUquJ8E= <-- secret key
Bits: AAA=

sehingga file rndc.conf pada bagian tersebut menjadi seperti berikut

key "rndc-key" {
algorithm "hmac-md5";
secret "13Ms0r2NEoJ+ngxsa/fg9x8ed6X5LrvAklZmuUquJ8E=;
};

yang perlu diperhatikan disini bahwa key hasil generate dnssec-keygen selalu berbeda-beda, jadi isilah secret key dengan key hasil generate dnssec-keygen yang outputnya berupa file berekstensi .private. buatlah link dari /chroot/named/etc/rndc.conf

# ln -s /chroot/named/etc/rndc.conf /usr/local/etc/rndc.conf
# ln -s /chroot/named/etc/rndc.conf /etc/rndc.conf

selanjutnya dengan editlah file named.conf, tambahkan beberapa baris di bagian awal sehingga menjadi seperti di bawah ini:

#
# /chroot/named/etc/named.conf
#

# awal tambahan
controls {
inet 127.0.0.1 allow { 127.0.0.1; } keys { rndc-key; };
};

key "rndc-key" {
algorithm "hmac-md5";
secret "13Ms0r2NEoJ+ngxsa/fg9x8ed6X5LrvAklZmuUquJ8E=;
# pada baris di atas harus sama dengan secret key
# pada /chroot/named/etc/rndc.conf
};
# akhir tambahan

options {
directory "/conf";
# baris diatas menyatakan direktori letak data file zona pid-file "/var/run/named.pid"; statistics-file "/var/run/named.stats";
dump-file "/var/run/named.db";
# direktori /conf dan /var/run disini bukanlah terletak di bawah
# direktori root(/) tetapi terletak di bawah direktori
# /chroot/named, hal ini dikarenakan user/daemon named di chroot
# sehingga root direktori dari named adalah /chroot/named.
# hide our "real" version number
version "[secured]";
// query-source address * port 53;
};

zone "." IN {
type hint;
file "db.rootcache";
# file yang memuat record root server
};

zone "localhost" IN {
type master;
file "db.localhost";
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "db.127.0.0.";
notify no;
};

zone "feedyourmind.org" IN {
type master;
file "db.feedyourmind.org";
};
# pada baris diatas didefinisikan sebuah zona yaitu feedyourmind.org
# dengan nama datafile zonanya db.feedyourmind.org yang terletak di
# direktori /chroot/named/conf

zone "10.168.192.in-addr.arpa" IN {
type master;
file "db.192.168.10";
};
# pada baris diatas didefinisikan sebuah zona untuk reverse lookup
# yaitu 10.168.192.in-addr.arpa dengan nama datafile zonanya
# db.192.168.10 yang terletak di direktori /chroot/named/conf

selanjutnya hapuslah file hasil generate dnssec-keygen yang berekstensi .private

# cd /chroot/named/etc
# rm -rf Krndc.+157+26911.private

Konfigurasi zona
Setelah file konfigurasi named dan rndc selesai selanjutnya membuat db.rootcache yang berisi daftar alamat server root, untuk membuatnya bisa dengan menjalankan perintah seperti berikut:

# dig @a.root-servers.net . ns > /chroot/named/conf/db.rootcache

buatlah file zone untuk localhost dengan nama db.localhost.

# pico /chroot/named/conf/db.localhost

berikut isi dari file tersebut:

;
; db.localhost
;
$TTL 86400

@ IN SOA @ root (
1001 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

IN NS @
IN A 127.0.0.1

buatlah file zone untuk 0.0.127.in-addr.arpa dengan nama db.localhost.

# pico /chroot/named/conf/db.127.0.0

berikut isi dari file tersebut:

;
; db.127.0.0
;
$TTL 86400
@ IN SOA localhost. root.localhost. (
1 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.

Selanjutnya, kriteria zona yang akan dibuat adalah sebagai berikut:

domain :
feedyourmind.org
nameserver :
192.168.10.1 --> gw.feedyourmind.org
client :
192.168.10.7 --> ubs.feedyourmind.org
192.168.10.8 --> dp.feedyourmind.org

maka buatlah dua buah file zona feedyourmind.org untuk forward-mapping (memetakan nama ke IP Address) dengan nama db.feedyourmind.org dan file zona untuk reverse-mapping (memetakan IP Address ke nama) dengan nama db.192.168.10 (sesuai nama file yang telah didefinisikan di named.conf).

# pico /chroot/named/conf/db.feedyourmind.org

berikut ini isi dari file tersebut:

$ORIGIN feedyourmind.org.
$ttl 86400
@ IN SOA gw.feedyourmind.org. root.gw.feedyourmind.org. (
1001 ; serial
3H ; refresh 3 jam
15M ; retry 15 menit
1W ; expiry 1 minggu
1D ) ; minimum 1 hari
IN NS gw
IN MX 10 gw
gw IN A 192.168.10.1
ubs IN A 192.168.10.7
dp IN A 192.168.10.8
www IN CNAME dp


Keterangan:

@ IN SOA gw.feedyourmind.org. root.gw.feedyourmind.org.
Maksud baris diatas adalah gw.feedyourmind.org.(penulisan host diakhiri dengan tanda titik) sebagai host yang diberi otoritas dan root.gw.feedyourmind.org. personal(mail) yang bertanggungjawab.

1001 ;serial
Merupaka penomoran terhadap perubahan pada file zona tersebut, ketika kita melakukan perubahan terhadap file zona tersebut maka serial tersebut juga harus dinaikan agar slave(secondary) name server mengenalinya dan melakukan update/backup(zona transfer).

3H ; refresh 3 jam
Agar slave(secondary) mengecek untuk update setiap 3 jam.

15M ; retry 15 menit
Jika master DNS server gagal menjawab request dari slave maka baris diatas memberitahukan jangka waktu untuk mencoba update lagi bagi slave.

1W ; expiry 1 minggu
Jika DNS master tidak berfungsi dalan jangka waktu tertentu, maka baris diatas akan menjadi acuan bagi slave untuk meneruskan menggunakan data yang telah ada sampai expired.

1D ) ; minimum 1 hari
Negatif-caching TTL

IN NS gw
NS nameserver zona feedyourmind.org (gw.feedyourmind.org)

IN MX 10 gw
Prioritas mail exchanger(MX) pada domain, jika mempunyai lebih dari satu mail server pada domain tersebut maka prioritasnya berdasarkan angka terkecil.

gw IN A 192.168.10.1
ubs IN A 192.168.10.7
dp IN A 192.168.10.8
memetakan nama ke IP Address, misal host dp(dp.feedyourmind.org) IP Addressnya 192.168.10.8

www IN CNAME dp
CNAME (canonical name) atau nama alias dari A record, jadi baris diatas menyatakan bahwa www(www.feedyourmind.org) merupakan nama alias dari dp(dp.postix.org). Satu A record bisa mempunyai beberapa nama alias(canonical name).

# pico /chroot/named/conf/db.192.168.10

berikut ini isi dari file tersebut :

$ORIGIN 10.168.192.in-addr.arpa.
$ttl 86400
@ IN SOA gw.feedyourmind.org. root.gw.feedyourmind.org. (
20060706
21600
3600
604800
21600 )

IN NS gw.feedyourmind.org.
1 IN PTR gw.feedyourmind.org.
7 IN PTR ubs.feedyourmind.org.
8 IN PTR dp.feedyourmind.org.

Keterangan:

1 IN PTR gw.feedyourmind.org.
baris(record) diatas menyatakan bahwa IP Address 1(192.168.10.1) bernama gw.feedyourmind.org.

kemudian jangan lupa untuk mengedit file /etc/resolv.conf dengan memasukan IP Address dari nameserver.

# pico /etc/resolv.conf

berikut isi dari file tersebut

#
# /etc/resolv.conf
#
nameserver 192.168.10.1

Seting file permission dan membuat script untuk mejalankan BIND
Mengatur file permission untuk linkungan tempat named di jail

# cd /chroot/named
# chown root:root var/
# chmod u=rwx,og=x var/
# chown root:named var/run/
# chmod u=rwx,og=x var/run/

# chown -R root:named etc/
# chmod u=rw,og=r etc/localtime
# chmod u=rw,og=r etc/*.key
# chmod u=rw,g=r,o= etc/*.conf

# chown root:named conf/
# chown root:named conf/secondaries/
# chmod ug=rwx,o= conf/secondaries/

Untuk mempermudah menjalankan daemon named yang di chroot maka buatlah script dengan nama named.sh di direktori /chroot/.

# pico /chroot/named.sh

berikut isi file tersebut

#!/bin/sh
# Start/Stop/Restart the BIND
# /chroot/named.sh
PIDWD=/chroot/named/var/run

named_start() {
/usr/local/sbin/named -t /chroot/named -u named -c /etc/named.conf
}

named_stop() {
killall named
}

named_restart() {
if [ -r $PIDWD/named.pid ]; then
named_stop
fi
named_start
}

case "$1" in
'start')
echo "Starting: BIND"
named_start
;;
'stop')
echo "Stopping: BIND"
named_stop
;;
'restart')
echo "Restarting: BIND"
named_restart
;;
*)
echo "cara menggunakan # $0 start|stop|restart"
esac

untuk menggunakan cukup dengan perintah

# /chroot/named.sh start
untuk menjalankan service BIND

# chroot/named.sh stop
untuk menghentikan service BIND

# chroot/named.sh restart
untuk merestart service BIND

Sampai pada tahap ini BIND sudah dapat berfungsi dan bisa di ujicoba, untuk mengujinya bisa menggunakan utility dig seperti contoh dibawah ini:

# /chroot/named.sh start
Starting: BIND
# dig www.feedyourmind.org

; <<>> DiG 9.4.1 <<>> www.feedyourmind.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63041
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.feedyourmind.org. IN A

;; ANSWER SECTION:
www.feedyourmind.org. 86400 IN CNAME dp.feedyourmind.org.
dp.feedyourmind.org. 86400 IN A 192.168.10.8

;; AUTHORITY SECTION:
feedyourmind.org. 86400 IN NS gw.feedyourmind.org.

;; ADDITIONAL SECTION:
gw.feedyourmind.org. 86400 IN A 192.168.10.1

;; Query time: 5 msec
;; SERVER: 192.168.10.1#53(192.168.10.1)
;; WHEN: Thu Nov 1 18:48:09 2007
;; MSG SIZE rcvd: 99

Seperti contoh diatas, jika BIND berfungsi dengan baik maka akan memberi jawaban terhadap query kita untuk host www.feedyourmind.org bahwa host tersebut merupakan CNAME (canonical name) dari dp.feedyourmind.org dengan IP Address 192.168.10.8 seperti tertera pada ANSWER SECTION diatas.


CMIIW

referensi
http://id.wikipedia.org/wiki/DNS
http://www.unixwiz.net/

Read More......

Domain Name System

DNS(Domain Name System) atau sistem penamaan domain(id), merupakan servis yang mempermudah memetakan dari IP Address ke dalam sebuah nama host/komputer atau sebaliknya dan membantu kita untuk mengingat komputer dalam jaringan(internet) yang saling terhubung. Bisa dibayangkan jika tanpa adanya servis ini tentunya kita akan kesulitan untuk mencari alamat suatu komputer yang terhubung ke internet/intranet berdasarkan IP Address(angka dengan format notasi bertitik), hal tersebut dikarenakan manusia lebih mudah menghafalkan sesuatu berdasarkan nama daripada berdasarkan angka.

Sejarah
Awalnya pada ada tahun 1970-an Arpanet terdiri dari baberapa ratus komputer/host, mereka memetakan alamat ke dalam nama host yang tehubung ke dalam jaringan dengan menuliskan pada sebuah file HOSTS.TXT yang di tempatkan pada masing komputer, jika di Unix dikenal dengan /etc/hosts. Tentunya dengan metode ini akan sangat menyulitkan administrator jika jaringan tumbuh menjadi sangat besar.
Paul Mockapetris adalah orang pertama yang mengusulkan sistem database terdistribusi yang dinamakan DNS. DNS menyimpan informasi nama host atau nama domain dalam bentuk basis data yang terdistribusi, dimana struktur tersebut menginjinkan mengontrolan database secara lokal dari segmen tersebut.

Database yang terdistribusi
Di internet penamaan host dibuat secara bertingkat yang dapat di analogikan seperti pohon bercabang, dimana setiap cabang terdapat cabang lagi dan setiap cabang diberi tabel yang disebut domain. Dalam pendistribusiannya domain dibagi ke dalam zona-zona dan masing-masing zona meliputi seluruh host di bawah domain tertentu. Dalam zona tersebut terdapat sebuah server(Authoritative Nameserver) yang didelegasikan oleh DNS induknya(zona diatasnya) untuk mengelola zona tersebut atau mendelegasikan lagi ke zona dibawahnya(subdomain). Dalam DNS terdapat dua jenis nameserver yaitu :

1. Primary Nameserver, yang bertugas menangani zona tersebut dan menyimpan informasi (database) zona dalam hardisk lokal, data ini disebut zona file.
2. Secondary Nameserer, bertugas mereplikasi data zona yang ada di Primary Nameserver, pembaruan data tersebut disebut sebagai zona transfer,Secondary nameserver juga sekaligus sebagai backup dari Primary Nameserver.

Penamaan yang bertingkat
Dalam pemberian nama harus konsisten dan mencerminkan terdistribusinya data tersebut, domain paling atas disebut dengan root domain yang di beri nama/dilambangkan dengan "." (titik) dan domain dibawahnya disebut Top Level Domain(TLD), Misal kita menuliskan nama domain secara lengkap atau FQDN(Fully Qualified Domain Name) mulai dari nama host sampai tanda titik seperti berikut :

www.postnix.or.id.
maka bisa di jabarkan :

* - . sebagai root domain
* - id sebagai TLD
* - or sebagai subdomain dari domain id.
* - postnix sebagai subdomain dari or.id.
* - www host/subdomain dari domain postnix.or.id.

Proses pencarian alamat
Didalam komponen DNS selain nameserver terdapat komponen lain yaitu resolver yang merupakan aplikasi yang bertugas menjawab pertanyaan domain dari aplikasi di klien dengan cara melihat isi cache atau menanyakan ke nameserver luar dan kemudian menginformasikannya ke klien tersebut, pada proses pencaraian alamat tersebut dikenal sebagai name resolution. Jadi misal kita di browsing di internet dan ingin mengakses situs tertentu maka komputer kita akan menghubungi DSN server dan kemudian DNS server tersebut akan melakukan proses name resulution dan jika di temukan akan memberikan jawaban letak alamat webserver tersebut ke komputer kita, selanjutnya komputer kita akan berkomunikasi langsung dengan webserver tersebut. Berikut ini contoh gambar name resolution:




Dalam mencari Jawaban atas permintaan dari resolver diatas maka nameserver melakukan proses iterasi (iterative query) dengan menelusuri nameserver lain satu persatu berdasar referensi dari name server lain.

Salah satu software DNS yang Opensource dan terkenal adalah BIND(Berkeley Internet Name Domain), selain stabil kita bisa mendapatkan secara gratis beserta manualnya di :

http://www.isc.org/products/BIND/.

Pada tutorial berikutnya akan dibahas cara membuat DNS server menggunakan bind yang di chroot untuk alasan keamanan dan dilengkapi kontrol rndc key.

CMIW

Refrerensi :

- http://id.wikipedia.org
- dll

Read More......

Mengembalikan password root yang terlupa..

Account root pada linux sangatlah berharga, ga ada account lain yang bisa berkuasa penuh selain root, trus kalo passwordnya lupa gimana dunks? Ya, ga bisa setting system secara penuh, sudah menjadi kewajiban untuk tidak melupakan password root, karena sangat penting untuk administering system..Tapi kalo lupa, gmana? Nah, makanya judul artikel ini "Mengembalikan password root yang lupa".

Ok, ada 2 cara mengembalikan password root yang terlupa;

1. dengan GRUB boot loader (GRUB tidak terproteksi password)

2. dengan cd Knoppix

Cara 1: (saya menggunakan Ubuntu Linux)

Pada saat booting dan keluar pilihan OS (Grub boot loader), tekan 'e' untuk melakukan editing command line sebelum booting (lihat gambar)



Setelah itu, tekan 'e' lagi pada pilihan kernel /boot/vmlinuz-2.6.12-9-386 root=/dev/sda1 ro quiet splash seperti gambar dibawah ini:


Hapus kata terakhir dari baris perintah tersebut yang mana berkata “splash” ganti menjadi “single” seperti terlihat pada gambar..


Kalo sudah, keluar dengan menekan [enter] dan kita hanya tinggal melakukan booting dengan menekan 'b' saja. Tunggu sampai keluar shell, dan akses root berhasil didapatkan. Selanjutnya tinggal memasukkan perintah 'passwd' dan masukan password root yang baru. Selamat Mencoba..






Cara 2:

Pengembalian password dengan CD Knoppix juga tidak kalah gampangnya, kita hanya memerlukan 1 keping CD bootable Knoopix, dan ikuti cara berikut:

  1. Booting dari CD

  2. Setelah muncul parameter awal dari Knoopix, ketikkan saja knoopix 2 untuk masuk ke modus command prompt only dan akan memunculkan shell seperti ini:

root@tty1[/] #

  1. Kalo udah, mounting partisi Linux yang ingin direcover password root-nya, misalkan partisi linux yang ingin direcover password root-nya ada di /dev/hda1. Maka mount partisi tersebut, misal ke /mnt/hda1, contoh:

root@tty1[/] # mount /dev/hda1 /mnt/hda1
root@tty1[/] #

  1. Langkah berikutnya adalah melakukan proses chroot ke partisi linux yang telah di mount

root@tty1[/] # chroot /mnt/hda1 /bin/bash –login
root@Knoppix #

  1. Jelas sudah,kita berhasil login ke partisi Ubuntu, dengan begitu kita hanya tinggal memasukkan perintah 'passwd' dan memasukkan password root yang baru:

root@Knoppix # passwd
Changing password for user root
New password:
[masukkan password root yang baru]
Retype new password: [ulangi]
passwd: all authentication tokens updated successfully
root@Knoppix #

  1. Ketikkan perintah 'exit' dan lakukan reboot

root@Knoppix # exit
root@tty1[/] # init 6

Demikian, cara pengembalian passwordnya root yang hilang, sekali lagi, cara yang pertama di atas hanya dapat dijalankan apabila GRUB tidak terproteksi oleh password.

NB: Masih ada satu cara lagi pengembalian password root, temukan disini

Read More......

Port Forwarding: For Torrent

Ide menulis artikel ini muncul pas saya barusan install uTorrent, tapi tanda DHT-nya koq tanda seru,huehehhee.. Artinya, koneksi DHT di blok oleh firewall, lalu bagaimana biar koneksi torrent bisa berfungsi dengan baik, tanpa terhambat. Tentunya kita harus meneruskan semua paket yang dibutuhkan client ke server torrent, begitu pula sebaliknya. Karena saya yang megang server gateway, iseng-iseng lalu mencoba ngoprek firewall di server gateway, karena emang semua paket lewat situ.
Oiya, berikut spesifikasi jaringannya:

iface_net = ppp0 (yang ke internet)
iface_lan = eth0 (yang ke LAN)

Logika saya, ketika terjadi koneksi dan ada paket dari luar (uTorrent.com), maka paket tersebut harus diteruskan ke IP client, dalam hal ini IP saya 192.168.10.5. Yang perlu diperhatikan adalah, kita menentukan apa saja yang akan terjadi ketika proses berjalan / koneksi terjadi.

1. Program uTorrent dari client akan melakukan koneksi ke uTorrent.com dan melewati server gateway.
2. Ketika koneksi terjadi, dari uTorrent.com akan mengirimkan paket reply ke server gateway.
3. Server gateway akan meneruskan paket tersebut kembali ke client.

Ok, sudah ada gambaran dari proses yang terjadi, sekarang tinggal bikin rulenya di iptables :)
(uTorrent saya secara default menggunakan port 22238 sebagai listening portnya)

[root@localhost ~]# /sbin/iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 22238 -j DNAT --to 192.168.10.5
[root@localhost ~]# /sbin/iptables -A FORWARD -i ppp0 -o eth0 -p tcp -d 192.168.10.5 --dport 22238 -j ACCEPT

Perhatikan rule pertama,

/sbin/iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 22238 -j DNAT --to 192.168.10.5

Yang berbunyi kira-kira begini: "Tambahkan satu aturan baru di kolom PREROUTING (-A PREROUTING) pada tabel nat (-t nat), paket tersebut masuk dari interface ppp0 (-i ppp0) berupa protokol tcp (-p tcp) dan menuju port 22238 (--dport 22238) jika ada paket seperti ini, teruskan paket tersebut ke IP 192.168.10.5 (-j DNAT --to 192.168.1.5).

Sehingga paket dari luar yang masuk lewat ppp0 akan diteruskan secara langsung menggunakan NAT ke IP 192.168.10.5

Lalu, rule berikutnya,

/sbin/iptables -A FORWARD -i ppp0 -o eth0 -p tcp -d 192.168.10.5 --dport 22238 -j ACCEPT

Yang berbunyi kira-kira seperti ini: "Tambahkan satu aturan baru di table FORWARD, paket tersebut berasal dari ppp0 (-i ppp0) dan akan keluar dari eth0 (-o eth0) berupa protokol tcp (-p tcp) menuju ke 192.168.10.5 port 22238 (--dport 22238), jika ada paket seperti ini terima saja (ACCEPT)

Rule ini akan meneruskan semua paket yang lewat pada port 22238 dari mau pun keluar. Jadi server gateway bertugas meneruskan port yang diminta client.

Kalau sudah diset seperti ini, silakan cek port forwarding Anda, apakah bekerja dengan baik pada uTorrent di uTorrent Port Checker
Sekian, semoga membantu para torrent mania yg kesulitan masalah forwarding port.

Read More......

Snort | BASE | Adodb | Intrusion Detection System

Beberapa bulan yang lalu, saya sempat install Denyhosts, sebuah program di sistem Linux yang melakukan penolakan terhadap host-host yang dianggap melakukan intrusi ke sebuah sistem. Denyhosts khusus memonitor service SSH, dan mencatatnya dalam sebuah file hosts.deny apabila diketahui ada host dari luar yang gagal melakukan login pada service SSH.

Setelah berjalan sampai sekarang, sudah ada sekitar 10-15 host yang masuk dalam daftar host yang di tolak (hosts.deny). Saya berpikir, bahwa memang banyak intrusi dari luar ke dalam sistem, namun apakah hanya ke service SSH? Teringat akan IDS (Intrusion Detection System) yang sangat terkenal Snort, saya iseng-iseng menginstallnya beberapa hari yang lalu, dan baru sempat saya dokumentasikan sekarang :)

Snort yang akan saya install yang sudah terintegrasi secara web based karena saya juga mengikutsertakan program BASE (Basic Analysis and Security Engine) dan ADOdb sebagai tambahan. Dengan adanya BASE, maka akan ada tambahan dalam mengkonfigurasi web server.

Silakan download tipe file pdf atau doc.

Read More......

Menaklukkan USB to LAN DM9601 di Linux

Beberapa waktu yang lalu sungguh menyedihkan keadaan kartu ethernet di laptop saya, tidak bisa lagi digunakan entah kenapa. Untuk mengatasinya saya membeli USB to LAN, karena kalau dibawa ke service center bisa-bisa laptopnya opname. Di dalam USB to LAN (setelah ini akan saya singkat menjadi usb2lan) yang saya beli ini berisi CD Driver untuk sistem operasi Windows, dan ketika dicoba, semuanya berjalan lancar tapi Windows tidak langsung mengenali usb2lan ini dan tetap harus install driver bawaannya. Setelah install baru dapat digunakan dengan baik.

Masalah muncul ketika saya hendak menggunakannya dengan sistem operasi linux. Kebetulan saya menggunakan Kubuntu Linux 7.04, dan memang setelah usb2lan tersebut ditancapkan tidak terjadi apa-apa, yang ada hanyalah sepotong log dari /var/log/messages sebagai berikut:

Jul 11 10:46:20 m1abrams kernel: [ 282.620000] usb 4-3: new high speed USB device using ehci_hcd and address 5
Jul 11 10:46:20 m1abrams kernel: [ 282.752000] usb 4-3: configuration #1 chosen from 1 choice
Jul 11 10:46:21 m1abrams kernel: [ 282.948000] usbcore: registered new interface driver libusual
Jul 11 10:46:21 m1abrams kernel: [ 282.952000] Initializing USB Mass Storage driver...
Jul 11 10:46:21 m1abrams kernel: [ 282.952000] scsi2 : SCSI emulation for USB Mass Storage devices
Jul 11 10:46:21 m1abrams kernel: [ 282.952000] usbcore: registered new interface driver usb-storage
Jul 11 10:46:21 m1abrams kernel: [ 282.952000] USB Mass Storage support registered.
Jul 11 10:46:26 m1abrams kernel: [ 287.952000] scsi 2:0:0:0: Direct-Access Generic Secure ID Stick 0.00 PQ: 0 ANSI: 2
Jul 11 10:46:26 m1abrams kernel: [ 287.952000] SCSI device sdb: 2013183 512-byte hdwr sectors (1031 MB)
Jul 11 10:46:26 m1abrams kernel: [ 287.956000] sdb: Write Protect is off
Jul 11 10:46:26 m1abrams kernel: [ 287.956000] SCSI device sdb: 2013183 512-byte hdwr sectors (1031 MB)
Jul 11 10:46:26 m1abrams kernel: [ 287.956000] sdb: Write Protect is off
Jul 11 10:46:26 m1abrams kernel: [ 287.956000] sdb: sdb1
Jul 11 10:46:26 m1abrams kernel: [ 288.064000] sd 2:0:0:0: Attached scsi removable disk sdb
Jul 11 10:46:26 m1abrams kernel: [ 288.064000] sd 2:0:0:0: Attached scsi generic sg2 type 0


Saya melakukan lsusb untuk melihat manufaktur milik usb2lan ini.

tom@m1abrams:/home/tom$ sudo lsusb
Bus 004 Device 005: ID 196d:0112
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 002: ID 08ff:2500 AuthenTec, Inc.
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 004: ID 062a:0000 Creative Labs Optical Mouse
Bus 001 Device 003: ID 0a46:9601 Davicom Semiconductor, Inc.
Bus 001 Device 001: ID 0000:0000
tom@m1abrams:/home/tom$


Hmm, manufakturnya Davicom Semiconductor, Inc. Hasil googling menunjuk ke situs www.davicom.com.tw. Lalu, bagaimana memaksa usb2lan ini berjalan di Kubuntu atau distro linux yang lain? Setelah googling sana-sini akhirnya ketemu driver milik Davicom ini yang telah dimodifikasi oleh seseorang dengan nama Jon Dowland dan dapat di download di situsnya www.alcopop.org.

Yang diperlukan untuk menginstall driver dari usb2lan ini adalah sebagai berikut.

  • Kernel source (unduh dari kambing.vlsm.org)
    • Untuk *buntu bisa dengan cara apt-get lalu install linux-headers (generic), linux-image(generic), linux-restricted-modules-generic, dan linux-source.
  • Driver dm9601 bisa diunduh disini (mirror telah saya buat disini)
Selanjutnya, saya menganggap Anda sudah mempunyai kernel source dari kernel yang Anda pakai sekarang, jadi langkah selanjutnya adalah meng-ekstrak file dm9601.gz yang sudah diunduh.

tom@m1abrams:/usr/src/$ sudo tar xzvf DM9601.GZ
tom@m1abrams:/usr/src/2.6.18$ cd 2.6.18
tom@m1abrams:/usr/src/2.6.18$ sudo make
make -C /lib/modules/2.6.20-16-generic/build M=/usr/src/2.6.18 LDDINCDIR=/usr/src/2.6.18/../include modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.20-16-generic'
CC [M] /usr/src/2.6.18/dm9601.o
/usr/src/2.6.18/dm9601.c:52:26: error: linux/config.h: No such file or directory
In file included from /usr/src/2.6.18/dm9601.c:62:
/usr/src/2.6.18/dm9601.h:100:1: warning: "ALIGN" redefined
In file included from include/asm/system.h:4,
from include/asm/processor.h:18,
from include/asm/thread_info.h:16,
from include/linux/thread_info.h:21,
from include/linux/preempt.h:9,
from include/linux/spinlock.h:49,
from include/linux/capability.h:45,
from include/linux/sched.h:46,
from /usr/src/2.6.18/dm9601.c:53:
include/linux/kernel.h:35:1: warning: this is the location of the previous definition
/usr/src/2.6.18/dm9601.c: In function ‘__check_reg5’:
/usr/src/2.6.18/dm9601.c:122: warning: return from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘__check_reg8’:
/usr/src/2.6.18/dm9601.c:123: warning: return from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘__check_reg9’:
/usr/src/2.6.18/dm9601.c:124: warning: return from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘__check_rega’:
/usr/src/2.6.18/dm9601.c:125: warning: return from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘__check_nfloor’:
/usr/src/2.6.18/dm9601.c:126: warning: return from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘get_registers’:
/usr/src/2.6.18/dm9601.c:189: warning: passing argument 7 of ‘usb_fill_control_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘set_registers’:
/usr/src/2.6.18/dm9601.c:227: warning: passing argument 7 of ‘usb_fill_control_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘set_register’:
/usr/src/2.6.18/dm9601.c:266: warning: passing argument 7 of ‘usb_fill_control_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘update_eth_regs_async’:
/usr/src/2.6.18/dm9601.c:300: warning: passing argument 7 of ‘usb_fill_control_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c:314: warning: passing argument 7 of ‘usb_fill_control_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c:328: warning: passing argument 7 of ‘usb_fill_control_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘read_bulk_callback’:
/usr/src/2.6.18/dm9601.c:483: warning: passing argument 6 of ‘usb_fill_bulk_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘dm9601_start_xmit’:
/usr/src/2.6.18/dm9601.c:602: warning: passing argument 6 of ‘usb_fill_bulk_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘dm9601_open’:
/usr/src/2.6.18/dm9601.c:801: warning: passing argument 6 of ‘usb_fill_bulk_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c:810: warning: passing argument 6 of ‘usb_fill_int_urb’ from incompatible pointer type
/usr/src/2.6.18/dm9601.c: In function ‘dm9601_disconnect’:
/usr/src/2.6.18/dm9601.c:1014: warning: ISO C90 forbids mixed declarations and code
make[2]: *** [/usr/src/2.6.18/dm9601.o] Error 1
make[1]: *** [_module_/usr/src/2.6.18] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.20-16-generic'
make: *** [default] Error 2
tom@m1abrams:/usr/src/2.6.18$


Dari yang tahap yang saya lakukan, muncul peringatan error yang mengatakan bahwa file linux/config.h tidak ditemukan, sehingga proses kompilasi menjadi gagal. Mengapa? Karena sekarang header config.h sudah tidak digunakan lagi. Iseng-iseng saya mencoba mengambil file config.h milik Slackware lalu menyalinnya ke direktori include di /usr/include/linux/include/linux lalu melakukan kompilasi lagi dengan perintah make.

tom@m1abrams:/usr/src/2.6.18$ sudo make
make -C /lib/modules/2.6.20-16-generic/build M=/usr/src/2.6.18 LDDINCDIR=/usr/src/2.6.18/../include modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.20-16-generic'
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-2.6.20-16-generic'
tom@m1abrams:/usr/src/2.6.18$


Berhasil ! Setelah itu, masukkan modul yang baru dikompile tadi.

tom@m1abrams:/usr/src/2.6.18$ ls
dm9601.c dm9601.ko dm9601.mod.o Makefile readme.txt
dm9601.h dm9601.mod.c dm9601.o Module.symvers readme.txt.bak
tom@m1abrams:/usr/src/2.6.18$ sudo insmod dm9601.ko
tom@m1abrams:/usr/src/2.6.18$


Sampai tahap ini driver usb2lan milik Davicom ini sudah terinstall dengan baik. Kita bisa langsung melakukan setting network dengan ethernet baru ini. Namun masih ada kekurangan karena setiap kita restart komputer, driver ini tidak otomatis diload oleh kernel. Bagaimana caranya agar setiap kita nyalakan komputer, driver modul ini diload kernel?

Lakukan langkah-langkah sebagai berikut.
*masih di direktori /usr/src/2.6.18 tempat driver modul berada*

tom@m1abrams:/usr/src/2.6.18$ sudo cp dm9601.ko \
/lib/modules/`uname \
-r`/kernel/drivers/net/

tom@m1abrams:/usr/src/2.6.18$


Lalu masukkan baris skrip dibawah ini ke /etc/rc.local agar dijalankan ketika sistem berjalan.

tom@m1abrams:/usr/src/2.6.18$ pico /etc/rc.local

*PENTING !! letakkan baris dibawah ini sebelum baris exit 0 (exit nol)

/sbin/insmod /lib/modules/`uname -r`/kernel/drivers/net/dm9601.ko

tom@m1abrams:/usr/src/2.6.18$


Kalau sudah, silakan melakukan reboot untuk mencobanya. Selamat mencoba !





Read More......

Deteksi Proses Di belakang Layar

Kadang kita bingung, karena terlalu banyak nama-nama service dan program yang perlu kita pahami dengan baik. Mengapa perlu dipahami? tujuannya agar ketika ada malware yang menyusup dan menyamar menjadi salah satu program atau service tersebut, dapat segera kita temukan dengan mudah.

Pernah tau ngga kalo proses dibelakang layar itu ada banyak banget, seperti punya saya dibawah ini.



Saya telah mengumpulkan program-program untuk mendeteksi adanya service-service atau program-program yang mencurigakan di belakang layar, isinya sebagai berikut:

  • Anti-Spy32
  • HijackThis
  • TCPView
  • DiskMon
  • ProcessXP
  • ProcMon
  • RegMon
  • FileMon
  • NetSentinel
  • Rootkit Revealer
  • StartupList
Semuanya bisa diunduh dalam satu file.
Download detection.zip

Read More......

Install Windows XP di Acer Aspire 4310/4710

Kebetulan saya baru beli Acer Aspire 4710. Yang notabene, mempunyai HDD SATA, sedangkan Windows XP blum memasukkan driver SATA terbaru ke CD resource Windows XP.Menggunakan floppy disk adalah cara yang banyak diusulkan. Namun kalo ga punya external floppy disk, akan repot sekali. Jadi, apa yang harus dilakukan tanpa menggunakan floppy disk adalah sebagai berikut.

  1. Masukkan driver SATA ke dalam Windows XP CD Resource. how?
  2. Pake nLite, silakan download disini
  3. Download SATA Drivernya
  4. Buat direktori kosong, dan copy seluruh isi dari Windows XP resource CD ke direktori tersebut.
  5. Jalankan nLite, dan arahkan ke direktori yang berisi Resource CD Windows XP.
  6. Ikuti petunjuknya pilih Drivers dan Bootable ISO. Klik Next.
  7. Ekstrak Driver SATA yg baru di download, lalu pilih Insert pada nLite, dan pilih Multiple Driver Folder, arahkan ke direktori driver SATA yang baru diekstrak.
  8. Pilih direktori $OEM$\TEXTMODE
  9. Selanjutnya akan keluar window kecil, pilih driver Intel(R)8201GBM SATA AHCI Controller (Mobile ICH7M/DH)
  10. Klik Next, Next, lakukan Direct Burn ke CD kosong.

Sekarang saya sudah punya CD Windows XP yang siap di restore kapan saja tanpa mengulangi step diatas dan menyediakan external floppy disk. Apakah ada masalah lagi? Ternyata ada, masalah yang muncul berikutnya adalah masalah driver yang dibutuhkan untuk sistem operasi. Acer menyediakan CD Resource yang berisi driver-driver yang dibutuhkan oleh sistem operasi Windows Vista, bukan Windows XP.

Terpaksa saya men-download seluruh driver Windows XP dari situs Acer. Agak mengecewakan, karena di desain khusus untuk Windows Vista.

Read More......

Alternatif Anti-Spam: Gmail SpamFilter

Gmail telah diakui oleh sejumlah pakar bahwa spam filteringnya bekerja dengan sangat baik, berbeda dengan Yahoo!SpamGuard yang sering false positive maupun false negative. Saya juga jadi jarang menggunakan Yahoo sebagai "pendaratan" email-email saya ya karena spam-spamnya itu kadang masih suka lolos. Seminggu saja tidak dicek, wah..bisa-bisa sekitar hampir 500 email bisa ngumpul jadi satu...campur-campur sama spam juga..duh ! Oke, sekarang saya juga setuju dengan pendapat para pakar karena memang, saya sendiri membuktikan bahwa cara kerja Gmail SpamFilter bisa dibilang sangat baik. Meskipun kadang-kadang sekitar 20% masih lolos, tapi kinerja Gmail SpamFilter sudah mendekati sempurna. Sekarang tinggal bagaimana kita "mengajarkan" kepada Gmail SpamFilter ini supaya lebih baik lagi, caranya dengan membantu perbaiki kinerjanya apabila terjadi false negative ataupun false positivenya..

Saya menggunakan mail klien untuk melihat email yang masuk, kebetulan menggunakan Mozilla Thunderbird. Nah, kebetulan lagi, ada email saya yang tidak menggunakan Gmail. Sedikit trik mengakali email saya yang lain agar "diperiksa" dulu oleh Gmail SpamFilter, sehingga ketika tiba di inbox saya, semua spam telah dibersihkan :)

Yang saya lakukan adalah dengan cara menambahkan akun baru pada akun Gmail saya, lalu "melemparnya" ke email saya yang lain (yang tidak menggunakan Gmail). Gmail akan meminta kita memasukkan kode verifikasi yang menyatakan bahwa email tersebut harus benar-benar milik saya. Lalu setelah berhasil verifikasi, sebuah akun telah ditambahkan ke akun Gmail saya.

Pada mail klien saya, tinggal ditambahkan akun baru, yang melemparnya ke server POP3 dan server SMTP Gmail, namun menggunakan alamat email yang bukan milik Gmail. Apakah bisa berjalan dengan baik? Saya coba mengunduh email dari webmail dan hasilnya sangat memuaskan. Beberapa email saya ditandai [SPAM] oleh Gmail dengan sangat baik, sehingga saya hanya perlu membuat filter di mail klien. Filter tersebut kira-kira berbunyi begini:
"Periksa kotak masuk, lalu tandai mail yang mengandung kata [SPAM] pada subyeknya, apabila cocok segera pindahkan ke tempat sampah."


Dengan begini, saya tidak perlu susah payah tiap hari menghapus email-email sampah yang masuk ke akun email yang satu ini. Biar Gmail+Thunderbird yang melakukannya :p

Read More......