Senin, 30 Juni 2008

History Shell

Terkadang kita lupa perintah-perintah yang sebelumnya kita ketik di shell, sehingga kita sering terlupa langkah-langkah yang pernah kita lakukan utnuk membuat sesuatu yang terkadang penting buat kita.
Kita dengan mudah dapat melihatnya kembali, dengan mengetikkan :


jun@jun-desktop:~$ history
1 history 9
2 history
3 nano how.txt
4 history
5 openapp
6 opentool
7 history
8 mc
9 openapp
10 date
11 history



Untuk melihat perintah ke 10 yang pernah kita lakukan tinggal mengetik:

jun@jun-desktop:~$ !10
date
Mon Jun 30 14:29:07 WIT 2008

Ini tentunya akan menghemat waktu kita dalam mengetik bila perintah tersebut terlalu panjang.

Untuk menjalankan perintah yang sebelumnya pernah kita lakukan, ketikan:

jun@jun-desktop:~$ !!
date
Mon Jun 30 14:29:50 WIT 2008

Untuk melihat seluruh history atau bahkan mengeditnya, kita bisa membuka file '/home/[nama_user]/.bash_history'. Lalu mengeditnya atau mengcopynya.

Kamis, 19 Juni 2008

Daftar Port-Port UNIX dan Windows

Seringkali saat menjalankan suatu scanner, anda menjumpai port-port terbuka yang cukup familiar. Tabel dibawah berguna sebagai ceklis untuk UNIX maupun NT, sebab seringkali port-port berikut aktif (kadang secara default) walaupun sebetulnya tidak begitu diperlukan (contoh: server khusus web yang secara tidak sengaja juga menjalankan server e-mail, etc). Berikut adalah daftar port, sedikit informasi, dan (jika ada) eksploit yang relevan.

No. Protokol Label Port Nama Port Keterangan
19 tcp/udp chargen Character Generation Generator karakter ini mengembalikan deretan karakter-karakter. Walaupun sebagian besar layanan yang ada sekarang terbatas ke 512 byte, namun bisa dijumpai server yang mengirimkan karakter secara terus menerus sampai hubungan ke port ini diputuskan. Seringkali di server-server lama, jika jumlah klien yang membuka hubungan mencapai nilai ratusan secara sekaligus, CPU time akan terkonsumsi secara besar-besaran, mebuat sang server merangkak. Serangan tipe Denial of Service paling sederhana adalah dengan me-redireksi keluaran port 19 ke port lain (mentargetkan mesin-mesin Windows NT)
20/21 tcp ftp File Transfer Protocol Protokol untuk menangani pentransferan file(-file) dari satu komputer ke komputer lainnya. Protokol ini menggunakan dua saluran, yang satu sebagai saluran untuk mengendalikan lalulintas data, sedangkan yang satunya lagi untuk dilintasi oleh data itu sendiri. Proses autentifikasi berdasar login/password. FTP adalah metode paling sering digunakan di situs-situs web untuk mengirim file (seringkali akses 'ftp only' diberikan kepada para pelanggan webhosting). Siapapun yang berhasil login akan diberikan hak yang sama berdasar id (jadi boleh menulis ke direktori 'home' milik user tsb), atau bahkan di banyak server, boleh membaca / tulis direktori milik pengguna lain. Eksploit-eksploit yang beredar termasuk untuk program-program wu_ftpd, ncftpd, ftpbounce, dll.
23 tcp telnet Telnet Metode login jarak jauh yang paling populer. Walaupun tidak seaman ssh (data yang melintasi tidak dienkripsi secara otomatis), masih terlalu banyak server-server yang mengizinkan login jarak jauh langsung tipe ini (sebagian besar UNIX, beberapa VMS). Metode ini pulalah yang paling sering diserang oleh chracker-chracker, terkadang dengan se-membabibuta mengetikkan root/daemon/dll, dan mencobakan password-password default. Seringkali mesin-mesin yang sebenarnya tidak berfungsi melayanin user (seperti dns, webserver, etc) menjalankan fungsi ini walaupun sebetulnya, tidak begitu diperlukan.
25 tcp mail Simple Mail Transfer Protokol pentransferan pesan sederhana, adalah standar de facto untuk internet. Termasuk salah satu port yang dijadikan sasaran eksploit-eksploit, yang berjumlah sampai puluhan saking populernya. Karena protokol ini memerlukan akses berprivilese tinggi (seringkali setara root/admin) supaya bisa menulis ke direktori milik user manapun juga. Sebaiknya dihilangkan bagi mesin-mesin yang tidak begitu memerlukannya.
48 tcp/udp auditd Digital Audit Daemon Digunakan oleh daemon audit komputer-komputer Digital untuk menjalankan tugas-tugas administrasi. Banyak sniffer yang mentargetkan port ini.
53 tcp/udp dns Domain Name Server salah satu layanan yang cukup vital, dijalankan di server-server, berfungsi untuk memberikan informasi berbentuk alamat IP xxx.xxx.xxx.xxx untuk setiap permintaan penterjemahan dari nama-nama domain. Eksploit nameserver bisa dicari di internet atau di arsip kecoak.
79 tcp finger Finger Daemon daemon yang bertugas memberikan informasi mengenai pengguna-pengguna suatu sistem kepada sang peminta (seringkali siapa saja). Pada versi-versi lama Unix, perintah:
finger user@host1@host2@etc...(termasuk firewall)
menjadikan sang peminta lebih anonimus sebab user@host1 akan melihat bahwa peminta berasal dari host2 atau bahkan firewall.
80/
8000/
8080/
dll
tcp http WWW, HyperText Transfer Protocol Protokol pentransferan data berformat HTML (webpage-webpage) lainnya dari server kepada publik. Port ini sangat populer dijadikan sasaran para chracker (terutama ditargetkan oleh program-program pelacak kelemahan CGI), sebab banyak program CGI yang bisa dieksploit. Mesin-mesin yang menyediakan servis 'Frontpage Extensions' secara default terkenal berlobang besar, dan di-'patch'. Ada juga serangan dari pengunjung yang mencoba mengakses direktori-direktori yang terlindung password (contohnya di situs-situs porno) dengan cara mem-brute force proses otentifikasi (UserID dan Password), sebab serangan semacam ini tidak direkam oleh log server.
110 tcp/udp pop3 Post Office Protocol v3 Protokol standar pemeriksaan email jarak jauh. Biasanya user (atau program e-mail client user) melog-on untuk memeriksa dan mengambil pesan email yang diterima lewat mailbox server. Hilangkan jika anda tidak membutuhkan layanan ini pada suatu server. Protokol ini mengizinkan siapapun untuk memasukkan kombinasi (lewat skrip) user+password secara 'brute force' tanpa mencatat log.
111 tcp/udp sunrpc Sun Remote Procedure Call Beberapa portscanner mentargetkan port ini, dan terdapat beberapa program yang mengeksploit port ini (mesin-mesin Sun/Solaris).
139 tcp/udp netbios-ssn NetBIOS Session Service Port inilah yang biasanya digunakan sebagai sarana komunikasi dengan atau antara mesin-mesin Microsoft (NT/95/98). Penyerang seringkali mentargetkan 'shared device' yang bisa diakses lewat internet. Juga terdapat banyak program 'nuker' yang men-denial-of-service-kan mesin-mesin Windows via port 139. Selain di mesin-mesin NT, mesin-mesin Unix juga menjalankan servis di port ini, yaitu Samba, yang memberikan kemudahan bernetwork antara mesin platform Unix dengan mesin Windows. Jalankan ADMSMB scan atau eksploit untuk memeriksa vulnerabilitas.
143 tcp/udp imap2 Interactive Mail Access Protocol Protokol pengaksesan e-mail lainnya. Seringkali berjalan tanpa diperlukan. Mesin-mesin UNIX (terutama Linux) yang menjalankan imap instalasi default terbuka terhadap serangan yang bisa berakibat pemberian privilese root kepada sang chracker.
443 tcp https Hypertext Transfer Protocol-Secure Daemon penerima permintaan tipe http yang berjalan diatas 'secure layer' (terenkripsi). Lihat keterangan untuk port 80 diatas.
512 tcp exec Remote Process Execution Mengizinkan eksekusi proses jarak jauh dengan sistem autentifikasi berdasar file /etc/passwd.
513 tcp rlogin Remote Login Protocol Port inilah yang digunakan jika anda melakukan 'rlogin' ke suatu host. Dengan rlogin, user di host A tidak perlu melewati proses login lewat telnet ke host B seperti biasa, namun bisa langsung masuk ke home directorynya di host B (tanpa password). Jika seorang chracker berhasil menjebol root di salah satu host, rlogin adalah sarana paling cocok untuk digunakan 'meloncat' ke host lain dalam network yang sama dan mengambil alih kontrol.

Menonaktifkan controlling terminal (tty) di Ubuntu

Jika kita menekan kombinasi tombol Ctrl+Alt+F1 - F6 maka kita akan masuk ke modus terminal (satu layar penuh) dimana penamaannya akan berdasar kombinasi tombol yang kita tekan, misal: Ctrl+Alt+F1 maka kita akan mendapatkan 'tty1'.
Untuk menonaktifkannya cukup dengan menghapus file ttyx (dimana x adalah 1-6) di direktori:
/etc/event.d/.
Tapi jangan dihapus bila anda suatu saat masih memerlukannya, cukup membackupnya saja.

Membuat lokal repositori Fedora

1. Salin paket rpm ke direktori misal : /media/repo
2. Buat repository dengan createrepo, defaultnya belum diinstall, install saja paketnya:
# rpm -ivh createrepoxxx.rpm
# cd /media/repo
# createrepo .
Semakin banyak paket yang akan dijadikan repo, semakin lama....
3. gunakan editor kesayangan anda
# gedit /etc/yum.repos.d/fedora-core.repo
edit :
[fedora] / [core] pada fc6
name=Fedora $releasever - $basearch
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
baseurl=file:///media/repo
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY

edit disetiap *.repo terutama update dan extra(untuk fc6 kebawah)
berikan comment pada mirrorlist
set enabled = 1 untuk mengaktifkan dan 0 untuk me-nonaktifkan

4. Tinggal dicoba
# yum -y install mc

Rabu, 18 Juni 2008

Membuat lokal repositori Ubuntu

Copy file-file di folder ‘/var/cache/apt/archives’ ke suatu tempat. Misalnya ke usb flash disk dan disimpan di folder repo.

Setelah itu copy file yg tadi disimpan flash disk ke direktory, misalnya ‘/home/jun/Desktop’. Hingga hasil ahirnya seperti ini ‘/home/jun/Desktop/repo’.

install program bantuan agar proses ‘dpkg-scanpackages..’ bisa di execute. Nama programnya dpkg-dev. Hanya di komputer dimana proses pembuatan local repo dilaksanakan;

jun@jun-desktop:~$ sudo apt-get install dpkg-dev

Buat file Packages.gz. Caranya masuk ke direktory yg membawahi folder repo lalu jalankan perintah scanpackages:

jun@jun-desktop:~/Desktop$ cd /home/jun/Desktop
jun@jun-desktop:~/Desktop$ sudo dpkg-scanpackages repo /dev/null | gzip -9c > repo/Packages.gz

Jangan ada salah ketik. Bahkan penempatan spasi harus tepat. Hasilnya akan terlihat seperti ini:
** Packages in archive but missing from override file: **
adesklets amaya apport apport-gtk arts atlantik avidemux blinken
capplets-data clamav clamav-base clamav-freshclam dansguardian
dosbox edict enscript fb-music-high ffmpeg firehol fluxbox frozenWrote 305 entries to output Packages file……

Selesai. Di folder ‘/home/jun/Desktop/repo’ disamping dipenuhi file *.deb sekarang ada file baru dengan nama Packages.gz. Local repo siap digunakan. Tinggal setting di komputer yg akan memanfaatkan repo ini.

Setting di komputer pemakai:

Edit file ‘/etc/apt/sources.list’. Edit dengan cara memberi tanda pagar di awal baris untuk tiap-tiap alamat repo yang tidak terpakai lalu tambahkan baris berikut:

deb file:///home/jun/Desktop repo/

(menuliskan nama folder yg berisi repo harus memakai spasi dan di tutup dengan tanda ‘/’)

Perintah mengupdate repo:

jun@jun-desktop:~$/ sudo apt-get update

Setup selesai. Install program dengan menggunakan Synaptic.

Selasa, 17 Juni 2008

Mengontrol Run Level pada Linux

Saat kernel mulai berjalan, seluruh proses sepenuhnya dipegang oleh init process. Init proses menjadi proses pertama yang berjalan (PID 1). Merujuk pada isi dari file /etc/inittab (untuk distro berbasis RedHat dan SuSE).
Secara default run level diset ke 5 untuk desktop dan 3 untuk server (bila masuk dalam golongan distro RedHat atau SuSE). Runlevel harus berada dalam runlevel S,1,2,3,4,5.
Untuk melihat kita berada dalam runlevel yang mana, ketikkan ini pada terminal:

jun@jun-desktop:~$ runlevel
N 2

Pada contoh ini sistem boot pada runlevel 3, sehingga tidak ada runlevel yang lalu (N). Untuk mengganti runlevel cukup ketikkan:

jun@jun-desktop:~$ sudo init 5

Cara diatas akan menyebabkan kita masuk dalam modus X window (runlevel 5).

Jumat, 13 Juni 2008

Memberi Password Pada GRUB Bootloader

Memberi password pada GRUB bootloader adalah salah satu cara aman mengamankan OS kita dari penyalahgunaan. Caranya sangat mudah, langkahnya:
1. Buka terminal.
2. Ketikkan perintah berikut:

jun@jun-desktop:~$ sudo grub-md5-crypt
[sudo] password for jun:
Password:
Retype password:
$1$FSgIY$gABpy271ua9BIGQtB8.R8/

3. Baris terakhir adalah hasil enkripsi password dengan md5 yang nantinya dimasukkan dalam menu.lst.

4. Kemudian buka file /boot/grub/menu.lst dengan editor apapun (dengan login admin atau root atau menggunakan sudo). Tambahkan isinya, sebagai contoh:

title Ubuntu 8.04, kernel 2.6.24-16-386
password --md5 $1$FSgIY$gABpy271ua9BIGQtB8.R8/ //passwordnya
root (hd0,1)
kernel /boot/vmlinuz-2.6.24-16-386 root=UUID=02ef8d7e-b51e-462e-8065-09fc58b40673 ro quiet splash
initrd /boot/initrd.img-2.6.24-16-386
quiet

title Ubuntu 8.04, kernel 2.6.24-16-386 (recovery mode)
root (hd0,1)
kernel /boot/vmlinuz-2.6.24-16-386 root=UUID=02ef8d7e-b51e-462e-8065-09fc58b40673 ro single
initrd /boot/initrd.img-2.6.24-16-386

...

5. Kemudian save. Cobalah untuk restart komputer, maka ketika anda memilih untuk masuk akan ditanyakan password anda.

Menggunakan APT (Bagian I)

Bila kita pengguna distro basis Debian tentunya kita kenal dengan tool yang satu ini yaitu, 'apt'.
Bagaimanakah cara penggunaan tool 'apt' ini?
Saya akan menjelaskannya satu-persatu.

apt-get update
Merujuk pada /etc/apt/sources.list dan mengupdate database package. Selalu lakukan perintah ini bila terdapat perubahan pada sources.list.

apt-cache search
Pencarian bersifat case-insensitive pada package yang terdaftar di sources.list
Nama package dan deskripsinya akan ditampilkan.

apt-get install
Download dan menginstall package berdasar nama package yang diisikan dan terdaftar dalam database. Mulai dari APT versi 0.6, perintah ini akan otomatis melakukan verify package untuk gpg keys yang tercantum pada package.

apt-get -d install
Hanya mendownload package dan menempatkannya di /var/apt/cache/archives.

apt-cache show
Menampilkan informasi tentang package (informasi lengkap mulai dari versi, depedensi, md5sum, deskripsi, dll)

apt-get upgrade
Mengecek update dari package yang terinstall disistem, serta konfirmasi untuk installasi

apt-get dist-upgrade
Update seluruh sistem dengan rilis OS yang baru, sekalipun harus menghapus package lama yang sudah ada. Ini sangat tidak disarankan untuk mengupdate sistem

apt-get autoclean
Dapat dijalankan setiap waktu, dengan tujuan untuk menghilangkan package yang telah di download, atau package yang tidak diinstall

apt-get clean
Menghapus seluruh package yang terdapat dalam /var/apt/cache/archives.

apt-get --purge remove
Menghapus package beserta seluruh konfigurasinya. Hilangkan tambahan opsi '--purge' untuk tetap mempertahankan konfigurasi agar tidak dihapus.

apt-get -f install
Melakukan pengecekan terhadap dependesi semua package, menghindari dari pesan "unmet depedency".

apt-config -v
Menampilkan versi dari APT.

apt-key list
Menampilkan GPG key yang diketahui oleh APT.

apt-cache stats
Menampilkan statistik dari package yang terinstall.

apt-cache depends
Menampilkan depedensi dari package, baik itu terinstall atau tidak selama terdaftar dalam database.

apt-cache pkgnames
Menampilkan seluruh daftar package yang terinstall dalam sistem.

Melihat Kecepatan Akses Harddisk

Tidak perlu repot menginstallkan software tambahan sekelas SiSSoftSandra kalau kita bekerja di Linux. Ada tool 'hdparm' yang bisa kita gunakan untuk melihat kecepatan akses harddisk atau jenis media penyimapan data kita.

//Ketikkan perintah berikut di terminal:


root@jun-desktop:~# hdparm -vi -Tt /dev/sda

/dev/sda:
IO_support = 0 (default)
16-bit)
HDIO_GET_UNMASKINTR failed: Inappropriate ioctl for device
HDIO_GET_DMA failed: Inappropriate ioctl for device
HDIO_GET_KEEPSETTINGS failed: Inappropriate ioctl for device
readonly = 0 (off)
readahead = 256 (on)
geometry = 2434/255/63, sectors = 39102336, start = 0

Model=WDC WD200BB-75DEA0 , FwRev=05.03E05, SerialNo=WD-WMAD22578821
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=?8?
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=39102336
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: Unspecified: ATA/ATAPI-1,2,3,4,5

* signifies the current active mode

Timing cached reads: 538 MB in 2.00 seconds = 268.76 MB/sec
Timing buffered disk reads: 26 MB in 3.26 seconds = 7.97 MB/sec

Kamis, 12 Juni 2008

Cloning Manual Efektif

Tutorial ini ditujukan bagi pengguna Linux overall, tidak disarankan digunakan untuk yang masih beginner, guna menghindari kesalahan. Karena sedikit kesalahan bisa berakibat fatal.
Diasumsikan bahwa kita memiliki 2 harddisk yang dipasang dalam satu komputer.
  • Harddisk pertama adalah /dev/hda
  • Harddisk kedua adalah /dev/hdc
= Harddisk yang akan diclone
= Harddisk yang masih kosong

Buka terlebih dahulu terminal lalu ketikan:



vijaya@vijaya-desktop6:~$ sudo bash
Password:
root@vijaya-desktop6:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 6.5G 3.5G 2.7G 57% /
varrun 125M 128K 125M 1% /var/run
varlock 125M 4.0K 125M 1% /var/lock
udev 125M 120K 125M 1% /dev
devshm 125M 0 125M 0% /dev/shm
lrm 125M 19M 107M 15% /lib/modules/2.6.15-28-386/volatile
/dev/hda3 12G 3.8G 7.2G 35% /home
/dev/hda5 19G 1.2G 18G 6% /media/hda5

//Periksa terlebih dahulu harddisk source dan dest-nya. Dengan perintah:

root@vijaya-desktop6:~# fdisk -l /dev/hd
hda hda1 hda2 hda3 hda4 hda5 hdc

//Bila tidak ada jenis /dev/hdx maka kemungkinan harddisknya bertipe /dev/sdx,
//Tergantung dari jenis harddisk kita, apakah itu SATA (sdx) atau ATA (hdx)
//Misal harddisk yang ingin diformat adalah /dev/hdc

root@vijaya-desktop6:~# fdisk /dev/hdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.


The number of cylinders for this disk is set to 4865.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

//Untuk menampilkan help ketik 'm' lalu enter:

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

//Ketik 'n' untuk membuat partisi baru

Command (m for help): n
Command action
e extended
p primary partition (1-4)

//Pilih jenis partisi Primary (maksimal 4 per-harddisk) atau Extended, dimana
//'p' untuk Primary dan 'e' untuk Extended

p

//Pilih nomor partisi (urut):

Partition number (1-4): 1

//Biarkan dalam keadaan default

First cylinder (1-4865, default 1):

//Isikan besar partisi
//Ini diasumsikan sebagai partisi '/'

Last cylinder or +size or +sizeM or +sizeK (1-4865, default 4865): +5Gb

//Kemudian buat partisi lagi

Command (m for help): n
Command action
e extended
p primary partition (1-4)

//Jenisnya Primary

p

//Partisi dengan nomor urut ke-2

Partition number (1-4): 2
First cylinder (610-4865, default 610):
Using default value 610

//Isikan besarnya, ini diasumsikan sebagai partisi '/swap'

Last cylinder or +size or +sizeM or +sizeK (610-4865, default 4865): +1Gb

//Lihat partisi yang telah dibuat

Command (m for help): p

Disk /dev/hdc: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 609 4891761 83 Linux
/dev/hdc2 610 732 987997+ 83 Linux

//Buat partisi satu lagi

Command (m for help): n

Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):
Value out of range.
Partition number (1-4): 3
First cylinder (733-4865, default 733):
Using default value 733
Last cylinder or +size or +sizeM or +sizeK (733-4865, default 4865):
Using default value 4865

//Lihat partisi:

Command (m for help): p

Disk /dev/hdc: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 609 4891761 83 Linux
/dev/hdc2 610 732 987997+ 83 Linux
/dev/hdc3 733 4865 33198322+ 83 Linux

//Jalankan seluruh perintah yang telah dilakukan

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

//Cek ulang dengan fdisk:
//Ternyata partisi kedua harus diubah id sistemnya

root@vijaya-desktop6:~# fdisk /dev/hdc

The number of cylinders for this disk is set to 4865.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/hdc: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 609 4891761 83 Linux
/dev/hdc2 610 732 987997+ 83 Linux //Harus diganti nih...
/dev/hdc3 733 4865 33198322+ 83 Linux

//Gunakan perintah 't' untuk mengganti system id partition:

Command (m for help): t

//Pilih partisi nomor 2 yang akan digunakan sebagai partisi 'swap':

Partition number (1-4): 2

//Beri angka 82:
//Mengenai angka-angka ini bisa dipelajari dimanual fdisk

Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)

//Jalankan seluruh perintah:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

//Buat filesystem bertipe Ext3 pada /dev/hdc1 yang merupakan partisi '/':

root@vijaya-desktop6:~# mkfs.ext3 /dev/hdc1
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
611648 inodes, 1222940 blocks
61147 blocks (5.00%) reserved for the super user
First data block=0
38 block groups
32768 blocks per group, 32768 fragments per group
16096 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

//Buat filesystem bertipe Ext3 pada /dev/hdc3 yang merupakan partisi '/home':

root@vijaya-desktop6:~# mkfs.ext3 /dev/hdc3
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
4153408 inodes, 8299580 blocks
414979 blocks (5.00%) reserved for the super user
First data block=0
254 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
root@vijaya-desktop6:~# mkswap /dev/hdc2
Setting up swapspace version 1, size = 1011703 kB
no label, UUID=2560a048-ea51-4d72-b216-585b21f768c6

//Kemudian buat direktori /mnt/image, /mnt/hdbaru

root@vijaya-desktop6:~# mkdir /mnt/image
root@vijaya-desktop6:~# mkdir /mnt/hdbaru

//Mount partisi /dev/hdc1 pada direktori /mnt/hdbaru, dimana partisi ini merupakan '/'

root@vijaya-desktop6:~# mount /dev/hdc1 /mnt/hdbaru

//Masuk ke direktori /mnt/hdbaru:

root@vijaya-desktop6:~# cd /mnt/hdbaru/

//Tampilkan isinya:

root@vijaya-desktop6:/mnt/hdbaru# ls
lost+found
root@vijaya-desktop6:/mnt/hdbaru# cd ..
root@vijaya-desktop6:/mnt# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 6.5G 3.5G 2.7G 57% /
varrun 125M 128K 125M 1% /var/run
varlock 125M 4.0K 125M 1% /var/lock
udev 125M 144K 125M 1% /dev
devshm 125M 0 125M 0% /dev/shm
lrm 125M 19M 107M 15% /lib/modules/2.6.15-28-386/volatile
/dev/hda3 12G 3.8G 7.2G 35% /home
/dev/hda5 19G 1.2G 18G 6% /media/hda5
/dev/sda1 1.9G 1.8G 90M 96% /media/JUN
/dev/hdc1 4.6G 129M 4.3G 3% /mnt/hdbaru

//Mount /dev/hda1 pada direktori /mnt/image, dimana hda1 adalah partisi '/' dari harddisk source

root@vijaya-desktop6:/mnt# mount /dev/hda1 /mnt/image

//Masuk kedirektorinya:

root@vijaya-desktop6:/mnt# cd image/

//Tampilkan isinya:

root@vijaya-desktop6:/mnt/image# ls
bin etc initrd.img.old lost+found proc sys vmlinuz
boot home lib media root tmp vmlinuz.old
cdrom initrd lib64 mnt sbin usr
dev initrd.img linux-swap opt srv var
root@vijaya-desktop6:/mnt/image# cd ..
root@vijaya-desktop6:/mnt# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 6.5G 3.5G 2.7G 57% /
varrun 125M 128K 125M 1% /var/run
varlock 125M 4.0K 125M 1% /var/lock
udev 125M 144K 125M 1% /dev
devshm 125M 0 125M 0% /dev/shm
lrm 125M 19M 107M 15% /lib/modules/2.6.15-28-386/volatile
/dev/hda3 12G 3.8G 7.2G 35% /home
/dev/hda5 19G 1.2G 18G 6% /media/hda5
/dev/sda1 1.9G 1.8G 90M 96% /media/JUN
/dev/hdc1 4.6G 3.5G 927M 80% /mnt/hdbaru
/dev/hda1 6.5G 3.5G 2.7G 57% /mnt/image
/dev/hdc3 32G 3.0G 27G 10% /mnt/homebaru

//Setelah seluruh drive ter-mount, lakukan perintah 'cp -arvf' sesuai dengan fungsi dari masing-masing direktori, misal direktori '/home' dicopykan ke '/home' yang baru, sesuai dengan aturan ke

Kemudian edit /etc/fstab sesuai mount drive yang akan dijalankan.

lalu masuk perintah:
# grub
map (hd1) (hd0)
//map
root(hd0,0)
setup (hd0)

Cara Mengembalikan Bootloader Yang HIlang

Untuk mengembalikan GRUB bootloader ternyata tidak susah.
Kita bisa menggunakan Live-CD dari berbagai distro. Pada kasus ini saya menggunakan Ubuntu.
Cukup masuk ke Ubuntu Live-CD, lalu buka terminal, masuk sebagai root, kemudian ketikkan perintah berikut:
# grub
root(hd0,0)
setup (hd0)

Maka GRUB otomatis terinstall pada (hd0,0).