Rabu, 28 September 2011

RSYNC: Fasilitas Salin Data Skala Raksasa

Pengambilan berkas melalui Internet dapat dilakukan dengan berbagai cara. Cara mudah dan interaktif dapat dilakukan memanfaatkan browser seperti "Galeon", "Konqueror", "Mozilla", "Opera", dan sejenisnya. Apa bila mengambil beberapa berkas, dapat menggunakan shell atau perl script yang berbasis protokol ftp/http. Namun, semua metoda tersebut di atas tidak dirancang untuk penyalinan data skala besar sebuah mirror-server. Penyalinan data pada Mirror Server biasanya memanfaatkan "rsync".

Program "rsync" dapat dimanfaatkan untuk berbagai keperluan. Namun perlu diingat bahwa "rsync" rakus sumber daya seperti memori dan CPU. Jadi, janganlah menggunakan ini secara masal yang hanya mengambil satu atau dua berkas.


Ilustrasi sederhana: menyalin isi direktori

Menyalin utuh sebuah direktori (umpama /sumber/ ) ke direktori lain (umpama /tujuan/ ) dapat dilakukan dengan perintah "cp":


cp -a /sumber/* /tujuan/
Perintah "rsync" yang setara ialah:


rsync -av /sumber/ /tujuan/
Perbedaan akan terasa, jika melakukan perubahan/penambahan isi direktori /sumber/. Perintah "cp" akan menyalin ulang SEMUA berkas, namun "rsync" lebih cepat karena hanya akan menyalin berkas yang ditambah/diubah. Apa bila ingin menghapus berkas di /tujuan/ yang tidak ada di /sumber/, gunakan:


rsync -av --delete /sumber/ /tujuan/
Jika penghapusan hanya boleh setelah penyalinan sukses:


rsync -av --delete --delete-after /sumber/ /tujuan/
Terkadang ada berkas yang kita tidak ingin salin (umpama *.bak):


rsync -av --exclude '*.bak' /sumber/ /tujuan/
Tentu saja, silakan menggabungkan opsi-opsi seperti "--delete" dan dan "exclude" tersebut di atas.


Menyalin "Anonymous" Dari Situs Jaringan

Walau pun perintah dapat digunakan untuk keperluan lokal seperti contoh di atas, lazimnya perintah "rsync" digunakan antar komputer melalui jaringan. Tentunya, ini hanya dapat dilakukan, jika komputer tersebut dikonfigurasi untuk keperluan tersebut! Cara mengkonfigurasi, akan dijabarkan pada bagian akhir tulisan ini.

Melihat daftar modul yang tersedia pada situs ibiblio.org:


rsync ibiblio.org::
Maka akan muncul "Message of today" dan daftar-daftar modul.


-------------------------------------------------------------------------
Welcome to the ibiblio rsync server!
[SISA "MESSAGE OF TODAY" DIHAPUS]

pub EVERYTHING in our FTP tree (use this only for subdirectories)
chinese-music Chinese music collection
CPAN CPAN
distros Linux Distributions (use this to get at particular distros)
Docsouth Documenting the American South
Dr-Fun Doctor Fun
freedos FreeDOS
gentoo Gentoo Linux Distribution
ggi GGI
gnome Gnome stable tree
gnu GNU software
grass GRASS mirror
gutenberg Project Gutenberg
htdig htdig mirror
iupac iupac downloads
kde our KDE mirror (complete)
kernel.org the kernel.org mirror
ldp_mirror Linux Documentation Project
Linux ibiblio linux archive
maven maven
mutopia mutopia archive
obp Open Book Project
pld PLD Linux Distribution
rpmhelp rpmhelp
sourcemage sourcemage
sun-info Sun Info
sun-packages Sun Solaris Packages
-------------------------------------------------------------------------
Untuk mencari kernel linux terakhir, silakan melihat dengan perintah:


rsync ibiblio.org::kernel.org/pub/linux/kernel/
Untuk menyalin isi direktori kernel tersebut ke /tujuan/


rsync -av --delete ibiblio.org::kernel.org/pub/linux/kernel/ /tujuan/
Silakan menyimak kembali, opsi-opsi yang dijabarkan pada butir dua di atas.


Setting "rsync"

Langkah pertama ialah menginstall program "rsync" ke direktori "/usr/bin/" (atau direktori lainnya). Jika tidak tersedia paket tersebut, silakan mengkompail source yang dapat diambil di "http://samba.anu.edu.au/rsync/" atau mirror dekat anda.

rsync bisa digunakan sebagai rsyncd, serta dipanggil melalui "/etc/inetd.conf". Jadi, silakan menambahkan ke berkas "/etc/inetd.conf" baris berikut ini:

# ----------------------------------------------------------
# /etc/inetd.conf

rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

# asumsi, "rsync" ada di "/usr/bin/"
#-----------------------------------------------------------
silakan membuat berkas text (ASCII) "/etc/rsyncd.motd" yang berisi pesan "Message of today" yang sesuai dengan selera anda.
silakan membuat berkas konfigurasi "/etc/rsyncd.conf" dengan isi:

# ----------------------------------------------------------------
# /etc/rsyncd.conf

# nama berkas "message of the day" yang dibuat di atas
motd file = /etc/rsyncd.motd

# berapa concurrent connections?
max connections = 2

# syslog ke mana?
syslog facility = local3

# Alamat atau blok IP mana yang diizinkan mengakses "rsync"?
# /32 --> satu host;
# /16 --> 64k host; dst.
hosts allow = \
10.118.0.0/16 \
192.168.1.2/32 \
127.0.0.0/8

# labelmodul:
[labelmodul]
comment = Komentar ini dapat dibaca dengan perintah "rsync nama.host::"
path = /var/dir/yang/mau/di/sync
read only = yes
use chroot = yes
list = yes
uid = nobody
gid = nogroup

#---------------------------------------------------------------
Harap mengganti "labelmodul" dengan nama modul, dan "/var/dir/yang/mau/di/sync" dengan direktori tempat modul

Agar "rsyncd" dapat berfungsi, silakan restart "initd" anda.


kill -1 "PID_INITD"
(mungkin juga menggunakan "initd restart"; tergantung variasi linux anda).

Silakan mencoba rsyncd dengan perintah:

rsync localhost::
Seharusnya akan keluar pesan "Message of today" yang diikuti dengan daftar modul yang ada.


Rsync anda siap digunakan!

PS example code :
rsync -va ubuntu@ubuntu.com:/sumber/ /tujuan/

Jail User + phpmyadmin

Set untuk jail linux user not tested if there is a bug that can be exploited as a hole to be used as escalation hacking method

1. sudo apt-get install scponly
2. sudo chsh -s /usr/bin/scponly
3. sudo dpkg-reconfigure -plow scponly
4. cd /usr/share/doc/scponly/setup_chroot
5. sudo gunzip setup_chroot.sh.gz
6. sudo chmod +x setup_chroot.sh
7. sudo ./setup_chroot.sh

follow on screen instructions


64 bit ada beberapa file yng tidaj tereksekusi oleh script .sh diatas

sudo cp /lib/libnss_files* -av /home/(namauser)/lib

+ HIDE phpmyadmin annoying database :p

sudo nano /usr/share/phpmyadmin/config.inc.php

if (!isset($cfg['Servers'][$i]['hide_db'])) {
$cfg['Servers'][$i]['hide_db'] = 'information_schema';
}