Selasa, 15 September 2009

Membangun intranet chat server dengan Openfire

Kebutuhan perusahaan dimana saya bekerja yang menuntut komunikasi yang lebih cepat
membuat saya cukup berpikir juga untuk mengimplementasikan hal itu, termasuk
komunikasi teks, komunikasi suara, pengiriman file, dan lain sebagainya.
Sebenarnya bisa saja menggunakan messenger yang sudah ada seperti Yahoo ataupun
yang lainnya, tetapi hal itu akan lebih memakan bandwidth dan lebih bersifat global,
karena bisa dan selalu berhubungan langsung dengan “dunia luar”.

Setelah mencoba googling, akhirnya saya menemukan server chat yang menurut saya sangat bagus. Dapat berjalan di platform Windows, Mac, dan Linux. Openfire, sebuah server chat Java yang menggunakan protokol XMPP dan bersifat opensource serta banyak sekali plugin-plugin yang dapat digunakan. Apa itu XMPP? Anda bisa klik disini untuk detailnya. Openfire mendukung beberapa database, termasuk MS SQL Server, MySQL, PostgreSQL, Oracle, DB2, Sybase, dan lain sebagainya, sehingga sangat memudahkan pengguna untuk memilih sesuai dengan database yang dipakai.

Sedangkan untuk client-nya menggunakan Spark Messenger. Spark adalah cross-platform instant messenger yang bersifat opensource dan cukup lengkap, mendukung group chat, computer-to-computer call, private chat, group chat room, spell check, dan lain sebagainya.
Untuk mendownload keduanya, silakan klik disini.

Untuk instalasi openfire relatif cukup mudah, untuk Windows misalnya, Anda cukup
menjalankan file Instalasi Openfire lalu ikuti petunjuk selanjutnya. Secara default,
aplikasi akan diinstall pada C:\Program Files\Openfire.

Untuk instalasi pada linux, disini saya menggunakan Centos 5.0. Untuk lebih mudahnya,
saya memilih paket RPM, karena sudah termasuk Java Runtime (JRE) didalamnya. Sedangkan
untuk paket tar.gz, belum termasuk JRE, untuk itu harus diinstal minimal JRE 1.5.0 terlebih dahulu. Sekarang saya lanjutkan dengan paket RPM. Pertama-tama download dulu disini, lalu pilih paket RPM. Setelah download selesai, jalankan perintah:

# rpm -ivh openfire-x.x.x.i386.rpm

Sesuaikan x.x.x dengan versi dari openfire yang didownload. Setelah selesai, paket instalasi secara default berada pada /opt/openfire. Jalankan openfire dengan perintah:

# service openfire start
atau
# /etc/init.d/openfire start

Yang kedua, setup database. Disini saya menggunakan database favorit saya, yaitu MySQL. Langkah awal, membuat database:

# cd /opt/openfire/resources/database
# mysqladmin -uroot -p create openfire
# mysql -uroot -p openfire < openfire_mysql.sql

Membuat user openfire, login ke MySQL:
# mysql -uroot -p

Membuat user: openfire, password: openfire123, dengan semua privileges hanya pada database openfire:
mysql> GRANT ALL PRIVILEGES ON `openfire`.* TO 'openfire'@'localhost'
mysql> IDENTIFIED BY 'openfire123' WITH GRANT OPTION;

Flush privileges.
mysql> FLUSH PRIVILEGES;

Keluar dari MySQL
mysql> quit;

Nah, setup database sudah selesai, sekarang saatnya untuk konfigurasi. Langkah pertama,
jalankan browser favorit Anda, kemudian buka halaman admin Openfire dengan alamat ip server
dimana Openfire terinstal:

http://192.168.0.1:9090

1. Memilih bahasa yang akan digunakan, karena bahasa Indonesia gak ada, pilih saja bahasa Inggris :p, setelah itu, Continue..
2. Konfigurasi domain. Domain akan otomatis terisi sesuai dengan hostname server dan biasanya kalo mengisi domain tidak sama dengan hostnamenya, akan terjadi error. Biarkan port tersebut standar, atau boleh saja diganti kalo emang pengen :D
3. Konfigurasi database, pilih saja Standar Database Connection untuk memilih database yang ingin digunakan.
4. Koneksi database menggunakan koneksi JDBC. Untuk database pilih MySQL, username dan
password sesuai dengan apa yang sudah dibuat sebelumnya.
JDBC Class Driver : com.mysql.jdbc.Driver
Database URL : jdbc:mysql://localhost:3306/openfire
Username : openfire
Password : openfire123
5. Konfigurasi profil, pilih saja Default
6. Konfigurasi email dan password Administrator. Anda boleh men-skip nya atau langsung mengisikan email dan password sesuai dengan keinginan. Jika Anda men-skip konfigurasi ini maka, username dan pasword login adalah sama, yaitu admin.
7. Konfigurasi sudah selesai, saatnya login sebagai Administrator
8. Halaman login Administrator.

Setelah masuk di halaman utama dapat dilakukan;
Cara membuat user baru

1. Pilih tab Users/Groups - Create new user
2. Isi username, password, dan confirm password
3. Cek list “Is Administrator?” kalo kamu pengen user ini bisa akses halaman admin.
4. Klik Create User

Membuat user interface untuk registrasi user
Maksudnya supaya admin ga kecapekan ngedaftarin user satu-satu, jadi si user bisa daftar sendiri tanpa perlu akses halaman admin. Gini lo caranya..

1. Download pluginnya dengan mengetik ini pada console

cd /var/lib/openfire/plugins/
wget http://www.igniterealtime.org/projects/openfire/plugins/registration.jar
2. Ya udah, gtu aja. sekarang buka tab Users/Groups. Ntar ada sub-tab judulnya User Registration kl ga salah di sebelah kiri.

Konfigurasi Client menggunakan Pidgin

Buka Pidgin, klik Account - Manage - Add
Isi parameter di bawah ini
tab Basic
Protocol = XMPP
Screen name = username
Domain = / nama Domain yang sudah terdaftar pada saat installasi
Password = password

tab Advanced
Connect port = 5222/5223
Connect server = IP_address_server
Klik Save

Konfigurasi Client menggunakan Spark

Buka Spark dan isi
username = username
password = password
server = IP_address_server
Klik login

Akhirnya selesai juga instalasi dan konfigurasi Openfire. Untuk Administration Console nya, silakan pelajari sendiri. Langkah terakhir sekarang yaitu mencobanya. Hal yang perlu dilakukan adalah menginstal instant messenger Spark atau pidgin pada komputer client.

Jumat, 11 September 2009

FTP Server sederhana yang mumpuni di Opensuse dengan VSFTPD

1. langkah pertama instal paket vsftpd

masuk ke yast->software management->search(vsfftpd)

selain openSUSE dapat di ambil di http://linux.softpedia.com/get/Utilities/vsftpd-5067.shtml

2. edit file di /etc/vsftpd.conf lalu modifikasi isi dari konfigurasi yang ada didalamnya

write_enable=YES
dirmessage_enable=YES
ftpd_banner=”Selamat Datang di FTP margie.”
local_enable=YES
local_umask=022
chroot_local_user=YES

anonymous_enable=NO
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
chown_uploads=YES
chown_username=margi

syslog_enable=YES
log_ftp_protocol=YES
vsftpd_log_file=/var/log/vsftpd.log
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log
connect_from_port_20=YES
data_connection_timeout=120
pam_service_name=vsftpd
listen=YES
ssl_enable=NO

3. setelah melakukan perubahan pada file /etc/vsftpd.conf, restart vsftpd
# chkconfig vsftpd on
# service vsftpd restart

4. lalu buat group untuk FTP dan Buat home directory untuk FTP
# groupadd ftp-margie
# mkdir /home/ftp-margie

5. ubah hak akses direktori ftp dan kepemilikan direktori ftp
# chmod 777 /home/ftp-margie
# chown root.ftp-margie /home/ftp-margie

6. buat user untuk akses ftp
# useradd -g ftp-margie -d /home/ftp-margie margi
# passwd margi


7. konfigurasi firewall di /etc/sysconfig/SuSEfirewall2

# vim /etc/sysconfig/SuSEfirewall2
lalu edit bagian:
FW_SERVICES_EXT_TCP=”http https xxx xxx ftp” (tambahkan tulisan ftp kalau belum ada)

FW_LOAD_MODULES=”ip_conntrack_ftp ip_nat_ftp”


restart vsftpd : # service vsftpd restart

lalu masuk ke yast-> pilih security and user -> pilih firewall
pilih allowed services lalu allowed services for selected zone pilih external
lalu add service to allowed –> vsftpd dan tftp (kalau sudah terinstall tftp)

 

Minggu, 09 Agustus 2009

Remote Desktop di linux VS Windows


Jika di windows memiliki software Pc Anywhere atau NetOP untuk melakukan Remote PC jarak jauh, maka di Linux pun bisa menggunakan VNC remote (Krdc) untuk membantu mengatasi masalah pada komputer client ditempat kerja anda dimana tempatnya yang terpisah ruangan ataupun terpisah gedung, maka seorang IT-Support tidak usah datang jauh-jauh hanya memperbaiki hal sepele, cukup dengan meremote desktop PC client dengan menggunakan VNC Remote pada linux OpenSuSe 10.2 atau 10.3 anda.

VNC adalah sebuah software remote control, dimana dg melalui software ini suatu komputer dapat melakukan akses untuk bekerja di suatu komputer lain yg terhubung dg jaringan. Hal ini dapat dilakukan baik dalam lingkungan LAN (Local Area Network) yg relatif berjarak dekat sampai dalam jaringan internet yg dapat berjarak ribuan kilometer.Teknologi remote control sebenarnya bukanlah barang baru. Kehadiran teknologi ini sudah cukup lama di dunia komputerisasi. Di dalam dunia operating system UNIX beserta keluarganya, komunikasi remote sudah sangat biasa dilakukan oleh penggunanya. Operating system yang berbasiskan UNIX memang telah dikenal lama sebagai salah satu operating system jaringan yang menonjol dalam aplikasi-aplikasi jaringan termasuk fasilitas untuk mengontrol komputer melalui jaringan dari jarak jauh yang juga telah dilengkapi dengan fasilitas keamanan yang sangat baik. Maka dari itulah teknologi remote control pada awalnya lebih banyak digunakan di lingkungan Unix, termasuk juga dalam operating system Linux.

Remote control di Linux/Unix yang secara native menggunakan command shell dilakukan hanya dengan menampilkan teks saja. Ini karena semua OS clone Unix dapat dioperasikan hanya dengan command text. Contoh yang paling banyak digunakan adalah koneksi SSH. SSH merupakan fasilitas remote yang building pada semua operating system Linux. Selain bisa menyediakan koneksi remote, SSH juga cukup aman untuk digunakan.

Setelah mengetikkan command text pada baris pertama, sistem akan meminta untuk dimasukkan password. Dan setelah password dimasukkan secara benar, maka tampilan prompt akan berubah menjadi tampilan prompt di komputer remote seakan-akan kita sedang berada di depan komputer remote yang mungkin saja berjarak beberapa meter ataupun ribuan kilometer dari komputer client.

Tetapi karena pada tahun2x belakangan ini, terutama dg berkembangnya sistem operasi Macintosh & Windows yang berbasis grafis (yg juga diikuti secara pesat oleh Linux), maka muncul kebutuhan yang lebih besar lagi untuk menggunakan remote control yang tidak sekedar dapat menampilkan text saja. Maka kemudian muncullah program-program remote control yg berbasis grafis seperti PCAnywhere, Radmin, dll. Salah satu dari software remote control berbasis grafis yang terkenal adalah VNC (Virtual Network Computing) yg akan kita pakai di sini.

Penggunaan Remote Control sangat membantu pekerjaan seorang administrator jaringan yang membutuhkan suatu tool yang handal untuk dapat menjangkau seluruh komputer yang ada dalam jaringannya atau karena suatu sebab tidak dapat berada di depan komputer yang bersangkutan, sehingga perbedaan lokasi yang jauh tidak menjadi masalah untuk dapat melakukan pekerjaan sehari-hari. Teknologi remote control saat ini sudah cukup maju dengan adanya software-software semacam VNC yang sangat powerfull karena kecepatannya, tampilannya yang berbasis grafis, dapat dijalankan menggunakan browser, dan dapat digunakan sama baiknya dalam platform komputer yang sama maupun dalam platform komputer yang berbeda seperti lintas platform antara Linux dan Windows.

Karakteristik VNC

Karekteristik yang merupakan keunggulan dari software VNC dibanding software-software sejenis adalah :
1. Multi platform. Software VNC ini dapat digunakan dengan baik di lingkungan Windows, Linux, Beos, Macintosh, Unix dll. bahkan penggunaannya juga dapat dilakukan secara lintas platform. VNC client & VCN server dapat saling diakses misalnya dari sistem Windows ke sistem Linux, maupun dari sistem Linux ke sistem Windows.
2. Client-server. Software terdiri dari aplikasi server & client dan harus diinstall di kedua sisi. Bagi orang-orang tertentu hal ini mungkin malah merepotkan, tapi ini juga berarti melindungi privacy komputer yg menggunakan VNC yang diniatkan untuk sesuatu yang positif.
3. HTTP support. VNC dapat diakses menggunakan default port 5900 atau 5901 untuk TCP maupun port 5800 atau 5801 untuk HTTP. Jadi sebuah VNC server juga dapat diakses oleh VNC client menggunakan sebuah browser seperti Mozilla Firefox, Opera, dan Internet Explorer dengan menggunakan java aplet.
4. Transparan. VNC adalah sebuah program yang sopan, tidak seperti beberapa software remote desktop lain yang menyembunyikan keberadaan dirinya dari user awam sehingga dapat dikategorikan sebagai sebuah software trojan yang akan dideteksi oleh software antivirus. Apabila sebuah komputer Windows dipasang VNC server, akan muncul sebuah icon kecil logo VNC di sebelah kanan taskbar yang akan berubah warna apabila komputer tersebut sedang diakses. VNC juga mengharuskan kita memasang password untuk bisa diaktifkan. Sebelum password dipasang, ia tidak akan mau bekerja.
5. Across internet. VNC dapat digunakan across internet. Cukup mengetahui nomor IP Address dan password VNC tujuan, kita dapat memperlakukannya menjadi program semacam PCAnywhere untuk mengontrol komputer dari jarak jauh melalui Internet.
6. Open Source. VNC bersifat Open Source dengan lisensi GPL (General Publik License). Dengan sifatnya ini, kita bisa dengan leluasa menggunakan dan mendistribusikannya, meski tentu saja harus mengikuti sifat lisensi open-source-nya. VNC telah disediakan secara gratis sejak tahun 1988 dan telah didownload lebih dari 50 juta copy

VNC menggunakan protokol yang sederhana berbasiskan RFB (Remote Frame Buffer). Protokol ini memungkinkan aplikasi remote mengupdate framebuffer yang ditampilkan di pengguna. Viewer di VNC tersedia untuk sistem UNIX, Linux, MS Windows, bahkan PDA. Saat ini VNC memang telah berkembang menjadi beberapa versi yg masing-masing juga dapat dijalankan dalam platform yang berbeda-beda, misalnya saja RealVNC (www.realvnc.com), TightVNC (www.tightvnc.com), dan metaVNC (http://sourceforge.net/projects/metavnc). RealVNC sekarang juga telah mempunyai versi Free, Personal edition, dan Enterprise edition, masing-masing punya harga & kemampuan yang berbeda-beda.

Instalasi VNC di Windows XP

Untuk platform Windows kita bisa menggunakan software RealVNC yg cukup bagus dan juga dapt digunakan secara gratis. Misalnya di sini kita memakai : vnc-3.3.7-x86_win32.exe.

Instalasi software VNC di Windows sangat mudah, hanya dengan menjalankan file executable instalasinya saja, mengikuti step-step instalasi yang semuanya menggunakan form-form grafis, kemudian VNC sudah siap untuk digunakan. Step-step singkat instalasinya adalah sebagai berikut :
1. Double-click pada file instalasinya, misalnya : VNC.3.3.7-x86_win32.exe.

vncwin1.jpg

2. Setelah tampilan window welcome & perjanjian lisensi, instalasi akan meminta memasukkan lokasi software & komponen apa saja yang dipilih.
3. Lalu setelah menentukan folder untuk start menu, instalasi akan meminta kita untuk memilih beberapa opsi tambahan berupa pembuatan icon di desktop & mendaftarkan sebagai system service.

vncwin5.jpg

4. Setelah tampilan review, instalasi akan berjalan sampai selesai. Setelah itu VNC akan meminta kita memasukkan password untuk dapat menjalankan service-nya dan memberi check pada bagian Accept Socket Connections. Enable Java Viewer akan mengaktifkan kemampuan akses VNC menggunakan Java aplet. Sedangkan beberapa opsi lain adalah untuk disconnect & tampilan secara remote. Setelah click Apply & OK maka instalasi VNC server & client di Windows XP telah selesai dan dapat langsung digunakan.

vncwin7.jpg

5. Sampai di sini service VNC di Windows telah dapat digunakan baik sebagai server maupun client.


Instalasi VNC di Linux Mandriva 2007.1

Untuk platform Linux di sini kita menggunakan software TightVNC yang merupakan pengembangan dari VNC standard yg juga dapat digunakan secara gratis. Versi VNC ini dirancang untuk penggunaan remote control untuk media jaringan yang lambat seperti koneksi dial-up modem. Karena itu akses dari VNC versi ini sangat cepat sesuai sifatnya yang memang dirancang untuk penggunaan jaringan dengan koneksi terbatas. Software ini sudah include dalam distro Linux Mandriva 2007.1 yang kita pakai di sini. Tinggal melakukan instalasi saja. Software-software tersebut adalah :
- tightvnc-server-1.2.9-16mdv2007.1
- tightvnc-doc-1.2.9-16mdv2007.1
- x11-server-xvnc-1.2.9-16mdv2007.1
- tightvnc-1.2.9-16mdv2007.1

Instalasi VNC di Linux secara basic adalah menggunakan command text yang diketikkan dalam shell. Misalnya untuk distro-distro Linux turunan Red Hat dapat menggunakan metode instalasi RPM (RedHat Package Manager).

Satu masalah yang sangat menyulitkan pengguna Linux dalam hal instalasi adalah masalah dependensi atau ketergantungan suatu software dengan software lain. Jadi kalau instalasi tidak mau berjalan karena software membutuhkan sebuah software lain yang jadi syaratnya, kita harus menginstalkan dulu software dependensi-nya itu yang mungkin juga masih membutuhkan software lain lagi untuk berjalan.

Karena di sini kita menggunakan Linux distro Mandriva 2007.1, sebuah distro yg juga merupakan turunan dari distro RedHat, jadi dalam penginstalan aplikasinya dapat menggunakan metode instalasi RPM yg lebih mudah daripada melakukan penginstalan dari source code. Bahkan dalam keluarga distro Mandrake/Mandriva seperti pada Mandriva 2007.1 ini sudah dilengkapi dengan tool tambahan untuk kemudahan penginstalan suatu paket software di dalam shell, yaitu “urpmi”. Bahkan keluarga distro ini juga sudah menyediakan suatu tool installer software berbasis grafis yg sangat bagus yg terdapat pada semacam control panel yg bernama MCC (Mandriva Control Centre). Instalasi via shell untuk software tightvnc seperti berikut (sebagi root) :

# urpmi vnc

maka software tightvnc akan terinstall lengkap dengan semua dependensinya.

Sedangkan instalasi dengan tampilan grafis menggunakan MCC adalah sebagai berikut :
1. Buka (double click) menu Configure Your Desktop di Linux Mandriva 2007.1 sehingga muncul window MCC Kemudian pilih tab sebelah kiri pada bagian Software Management
2. Buka bagian Install Software Packages, search dengan kata “vnc”, maka software2x yang berhubungan dengan vnc akan muncul. Kemudian pilih yang akan diinstall.

vnc_mdv5.jpg

3. Klik Apply, maka proses instalasi akan berjalan menginstalkan software yang dipilih berikut semua dependensi yang dibutuhkan olehnya.
4. Setelah semua software yang dibutuhkan terinstall, dapat dilakukan pengecekan dengan menggunakan RPM untuk memastikan semua software yang dibutuhkan sudah terinstall.

# rpm -qa |grep vnc

maka sistem akan menampilkan software2x yg berhubungan dg vnc yg telah terinstall.

5. Langkah berikutnya adalah melakukan setting terhadap aplikasi vncserver agar komputer Linux dapat di remote dari komputer lain melalui jaringan. Caranya adalah dengan mengetikkan :

# vncserver :1

Maksudnya adalah menyuruh vncserver untuk membuka koneksi remote dari luar untuk virtual desktop 1 (hal ini karena tidak seperti Windows, Linux mempunyai banyak virtual desktop). Kemudian sistem akan meminta untuk memasukkan password. Setelah password dimasukkan, maka vncserver sudah aktif dan siap untuk di remote dari komputer lain. VNC server juga akan membuat sebuah script yaitu .vnc/xstartup yang akan diletakkan di home direktori user yang digunakan waktu melakukan setting vncserver. Jadi letak dan isi dari file script ini akan berbeda tergantung dari siapa user yang sedang aktif saat melakukan setting, dan sistem Linux (distro) apa yang digunakan.

vnc_mdv6.jpg

6. Kemudian terakhir adalah memastikan service vncserver berjalan dengan baik dengan melakukan perintah :
# /etc/init.d/vncserver start
# /etc/init.d/vncserver restart

vnc_mdv7.jpg


Instalasi VNC di Linux Opensuse 10.x

Mirip dengan mandriva, pada Opensuse juga bisa menggunakan TightVNC atau Krdc. Saya lebih suka menggunakan krdc karena selain sudah terdistribusi pada paket opensuse, penggunaannya juga sangat mudah. Tambahan yang perlu dilakukan pada Opensuse adalah settingan di:
- Masuk ke Yast --> Hardware --> Grafick Card and Monitor--> Remote Access --> aktifkan pilihan
allow to display.....

-lalu masukan/lengkapi password dan http portnya ke 5800.


Menggunakan VNC di komputer Windows

Cara menggunakan VNC di desktop Windows sangat mudah, karena dapat langsung diakses dari menu Start ataupun dengan klik dua kali pada icon yang ada di desktop (kalau fasilitas ini diinstall pada saat instalasi program). Kemudian akan muncul sebuah window untuk memulai koneksi dengan memasukkan IP address atau nama komputer tujuan yang akan diakses.

vncwin8.jpg

vncwin10.jpg

Sebelum mulai membuka koneksi, kita masih bisa memilih beberapa opsi yang mungkin akan digunakan dengan mengklik tombol Options.. maka akan muncul window Connection Options… yang bisa digunakan untuk melakukan setting penggunaan mouse, kemudian untuk Display bisa dipilih hanya untuk view saja atau Full-screen mode. Sedang pada bagian Misc terdapat opsi-opsi untuk menshare koneksi dengan user lain dan mendisable clipboard transfer.

Menggunakan VNC di komputer Linux

Menggunakan VNC di komputer Linux sedikit lebih sulit karena biasanya VNC tidak langsung membuatkan menu atau sebuah icon shortcut di desktop, tapi kita harus mengetikkan perintahnya langsung dari shell atau membuat icon shortcut sendiri secara manual. Cara menjalankan VNC dari shell adalah dengan mengetikkan perintah sbb :

> vncviewer (Tekan Enter)

maka akan muncul menu untuk menuliskan IP address atau nama komputer dan password seperti ini :

vnc_suse8.jpg

vnc_suse9.jpg

Atau bisa juga dengan langsung menuliskan command-nya di shell secara lengkap dengan opsi-opsi yang diinginkan. Perintah-perintah VNC dapat dilihat dengan mengetikkan kata “vnc” diikuti dengan menekan tombol tab, sedangkan opsi-opsi tambahan untuk perintah-perintah VNC dapat dilihat di manualnya dengan menggunakan perintah man atau –help.

# man vncserver

atau

# vncviewer –help

Setelah address tujuan dan password dimasukkan akan terbuka sebuah window yang akan berisi tampilan desktop dari komputer yang sedang kita akses secara remote. Hasil tampilan dari komputer remote dengan menggunakan VNC di Linux tidak ada perbedaan dengan di Windows. Hanya saja pada tampilan VNC di Windows mempunyai beberapa fasilitas yang sulit dilakukan di Linux. Misalnya saja fasilitas untuk mengirimkan perintah Ctrl-Alt-Del yang lazim digunakan di komputer Windows, pada VNC di Windows hal ini dapat dilakukan dengan klik kanan di bagian atas konsol aksesnya, tapi di Linux tidak dapat dilakukan. Tapi kekurangan itu dapat diatasi dengan adanya kemampuan VNC untuk diakses melalui browser yang menyediakan fasilitas sama baiknya untuk Windows ataupun Linux.

tightvnc2.jpg

Menggunakan VNC secara lintas platform

Satu hal yang sangat menarik dari VNC adalah kemampuannya yang dapat dioperasikan secara lintas platform. Suatu VNC viewer yang dijalankan dari komputer platform apapun (Linux, Windows, Mac, dll.) dapat juga digunakan untuk mengakses komputer yang telah diinstall VNC server juga dalam platform apapun (Linux, Windows, Mac, dll.). Saya telah menggunakan VNC pada sesama komputer Windows, pada sesama komputer Linux, dari komputer Windows ke komputer Linux, dan dari komputer Linux ke komputer Windows, yang telah dicoba aksesnya menggunakan file vncviewer di Linux & Windows dan juga melalui browser Mozilla Firefox & Internet Explorer dari masing-masing platform, dan berjalan dengan baik. Gambar berikut adalah contoh penggunaan VNC viewer dari komputer Linux openSUSE 10.2 untuk mengakses secara remote komputer Windows XP Professional menggunakan port HTTP 5800 melalui browser Firefox.

vnc_mdv8.jpg

note: tampilan krdc dapat dilihat pada gambar paling awal.

Setting Samba Server

Samba digunakan di linux untuk compabilitas file sharing antara Linux dan windows,
dengan samba file dan printer antara linux dan windows akan dapat berkomunikasi
antara keduanya. Beberapa hal yang bisa dilakukan oleh samba :
  1. Sharing file di Linux dengan windows

  1. Akses sharing samba dan windows dengan Linux

Utility untuk menconfigurasi samba yang berbasis GUI
adalah GtkSamba ( http://www.open-systems.com/gtksamba.html )


Configurasi Samba (/etc/samba/smb.conf )

Tiap bagian di dalam configurasi samba, terdapat header-header seperti [global],
[homes], [printers]. [global] menyatakan akan configurasi global yang digunakan
samba untuk sharing file dan printer, [homes] menyatakan akan configurasi sharing
home directory dari tiap user di linux, [printers] menyatakan akan configurasi printer
yang di sharing

Contoh :

; /etc/samba/smb.conf

;

; Make sure and restart the server after making changes to this file, ex:

; # service stop

; # service start


[global]

; Uncomment this if you want a guest account

; guest account = nobody

log file = /var/log/samba-log.%m

lock directory = /var/lock/samba

share modes = yes

interfaces = 192.168.1.1/24


[homes]

comment = Home Directories

browseable = no

read only = no

create mode = 0750


[tmp]

comment = Temporary file space

path = /tmp

read only = no

public = yes


Salah satu utility yang dimiliki samba untuk menge-cek format yang
ada di smb.conf adalah testparm (manual ada di, man testparm), testparm
berguna untuk cek kebenaran format configurasi di file /etc/samba/smb.conf.
Entry Interface yang ada pada configurasi diatas menyatakan bahwa samba
akan bind ke interface yang mempunyai network ip 192.168.1.1 dan netmask /24.

1. Sharing file di Linux dengan windows

Contoh :

[public]

comment = Public Stuff

path = /home/public

public = yes

writable = yes

printable = no


Contoh configurasi sharing directory yang readable oleh public, dan
hanya writable oleh user yang ada di group staff
:

[public]

comment = Public Stuff

path = /home/public

public = yes

writable = yes

printable = no

write list = @staff


Sharing file dan printer antara Linux dan windows, memerlukan configurasi tambahan
karena sharing file di windows yang default menggunakan encrypted password,
sedangkan configurasi default dari samba di Linux belum menggunakan encrypted password,
maka entry di bawah ini harus ditambahkan di /etc/samba/smb.conf

encrypt passwords = yes

smb passwd file = /etc/smbpasswd

baca manual tentang encryption password di file ENCRYPTION.txt, Win95.txt
dan WinNT.txt yang ada di distribusi samba. Untuk configurasi windows client
untuk dapat melakukan koneksi dengan uncrypted password dapat dibaca juga pada file diatas.

Untuk Akses user ke home directory melalui samba, administrator harus membuatkan
user mapping antara username di Linux dan Username di windows client :

# smbadduser user_di_linux:windows_login

# smbadduser ichtus:admin


Untuk mengganti password suatu user :

# smbpasswd ichtus


Ada beberapa configurasi di samba untuk masalah compabilitas filename di windows dan Linux :

; Mangle case = yes seems to give the correct filenames

; for Win95/98/NT.

mangle case = yes


; If samba is case sensitive when looking for files

case sensitive = no

; Default case of files that are created

default case = lower


; Preserve case for all filenames

preserve case = yes


; Preserve case for dos (8.3) filenames

short preserve case = no


2. Akses sharing samba dan windows dengan Linux

Akses samba dari Linux client dapat dilakukan melalui utility smbclient:

# man smbclient

Untuk melihat sharing apa saja yang ada di samba server ataupun windows sharing

# smbclient -L host


host disini merupakan nama dari windows sharing atau samba server, karena
smbclient menggunakan NetBios name. Pada window sharing, maka nama host
merupakan Computer Name yang ada di Tab Identification pada Properties Network
atau dns name, Pada Linux client dapat diakses juga melalui dns name.

Contoh :

# smbclient -L mbone.petra.ac.id akses sharing ke linux/samba server.

# smbclient -L Desert\ Eagle akses sharing ke windows.

Sharename Type Comment

--------- ---- -------

NEW FOLDER Disk

BAGUS' DATA Disk

ADRIAN Disk

EYE'S ANGEL Disk

MY MUSIC Disk

IPC$ IPC Remote Inter Process Communication

Server Comment

--------- -------

DODO Pentium IV

HW_1

PKHW-INT

Workgroup Master

--------- -------

ELEKTRO ELEKTRO4

HARDWARE HW_1

MDKGROUP PETER2

MOLARD TORANUZ

PETRA PETRANTP2

PETRANET ELANGPERAK

PETRANET2000 MM01

Untuk akses ke file sharing :

# smbclient \\\\dodo.petra.ac.id\\New\ Folder atau

# smbclient //dodo.petra.ac.id/new\ folder

Unknown parameter encountered: "ssl CA certFile"

Ignoring unknown parameter "ssl CA certFile"

added interface ip=202.43.253.50 bcast=202.43.253.63 nmask=255.255.255.192

added interface ip=172.16.15.1 bcast=172.16.255.255 nmask=255.255.0.0

session request to DODO.PETRA.AC.I failed (Called name not present)

Password:

smb: \> ls

. D 0 Thu Jan 17 10:23:36 2002

.. D 0 Thu Jan 17 10:23:36 2002

disc1.dat R 765075068 Thu Nov 29 02:30:30 2001

disc2.dat R 761328332 Thu Nov 29 03:17:58 2001

jangan di hapus Tik.doc A 65024 Fri Mar 1 14:28:06 2002

y21123414.zip A 2750638 Sun Apr 28 12:30:16 2002

y21123414 D 0 Sun Apr 28 12:31:16 2002

59965 blocks of size 262144. 10310 blocks available


smb: \> h

ls dir du lcd cd

pwd get mget put mput

rename more mask del open

rm mkdir md rmdir rd

prompt recurse translate lowercase print

printmode queue cancel quit q

exit newer archive tar blocksize

tarmode setmode help ? !#



Contoh Lengkap file /etc/samba/smb.conf :

[global]

coding system =

client code page = 850

workgroup = LINUX

netbios name =

netbios aliases =

netbios scope =

server string = Hardware with Samba Server

interfaces =

bind interfaces only = No

security = USER

encrypt passwords = Yes

update encrypted = No

allow trusted domains = Yes

hosts equiv =

min password length = 5

map to guest = Never

null passwords = No

password server =

smb passwd file = /etc/samba/smbpasswd

root directory = /

passwd program = /bin/passwd

passwd chat = *new*password* %n\n *new*password* %n\n *changed*

passwd chat debug = No

username map = /etc/samba/smbusers

password level = 8

username level = 8

unix password sync = No

restrict anonymous = No

use rhosts = No

debug level = 2

syslog = 1

syslog only = No

log file = /var/log/samba/%m.log

max log size = 10

debug timestamp = Yes

debug hires timestamp = No

debug pid = No

debug uid = No

protocol = NT1

read bmpx = No

read raw = Yes

write raw = Yes

nt smb support = Yes

nt pipe support = Yes

nt acl support = Yes

announce version = 4.2

announce as = NT

max mux = 50

max xmit = 65535

name resolve order = host wins lmhosts bcast

max ttl = 259200

max wins ttl = 518400

min wins ttl = 21600

time server = No

change notify timeout = 60

deadtime = 0

getwd cache = Yes

keepalive = 300

lpq cache time = 10

max disk size = 0

max open files = 10000

read prediction = No

read size = 16384

shared mem size = 1048576

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

stat cache size = 50

load printers = Yes

printcap name = /etc/printcap

printer driver file = /etc/samba/printers.def

strip dot = No

character set =

mangled stack = 50

stat cache = Yes

domain groups =

domain admin group =

domain guest group =

domain admin users =

domain guest users =

machine password timeout = 604800

add user script =

delete user script =

logon script =

logon path = \\%N\%U\profile

logon drive =

logon home = \\%N\%U

domain logons = Yes

os level = 20

lm announce = Auto

lm interval = 60

preferred master = No

local master = Yes

domain master = No

browse list = Yes

dns proxy = No

wins proxy = No

wins server =

wins support = Yes

wins hook =

kernel oplocks = Yes

ole locking compatibility = Yes

oplock break wait time = 10

smbrun = /usr/bin/smbrun

config file =

auto services =

lock directory = /var/lock/samba

default service =

message command =

dfree command =

valid chars =

remote announce =

remote browse sync =

socket address = 0.0.0.0

homedir map = auto.home

time offset = 0

unix realname = No

NIS homedir = No

source environment =

panic action =

comment =

path =

revalidate = No

username =

guest account = guest

invalid users =

valid users =

admin users =

read list =

write list =

force user =

force group =

writeable = No

create mask = 0744

force create mode = 00

security mask = -1

force security mode = -1

directory mask = 0755

force directory mode = 00

directory security mask = -1

force directory security mode = -1

inherit permissions = No

guest only = No

guest ok = No

only user = No

hosts allow = 192.168. 127. 10. 202.43.253.

hosts deny =

status = Yes

max connections = 0

min print space = 0

strict sync = No

sync always = No

write cache size = 0

printable = No

postscript = No

printing = lprng

print command = lpr -r -P%p %s

lpq command = lpq -P%p

lprm command = lprm -P%p %j

lppause command =

lpresume command =

queuepause command =

queueresume command =

printer =

printer driver = NULL

printer driver location =

default case = lower

case sensitive = No

preserve case = Yes

short preserve case = Yes

mangle case = No

mangling char = ~

hide dot files = Yes

delete veto files = No

veto files =

hide files =

veto oplock files =

map system = No

map hidden = No

map archive = Yes

mangled names = Yes

mangled map =

browseable = Yes

blocking locks = Yes

fake oplocks = No

locking = Yes

oplocks = Yes

level2 oplocks = No

oplock contention limit = 2

strict locking = No

share modes = Yes

copy =

include =

preexec =

preexec close = No

postexec =

root preexec =

root preexec close = No

root postexec =

available = Yes

volume =

fstype = NTFS

set directory = No

wide links = Yes

follow symlinks = Yes

dont descend =

magic script =

magic output =

delete readonly = No

dos filetimes = No

dos filetime resolution = No

fake directory create times = No


[homes]

comment = Home Directories

writeable = Yes

browseable = No


[printers]

comment = All Printers

path = /var/spool/samba

printable = Yes

browseable = No


[tmp]

comment = Temporary file space

path = /tmp

writeable = Yes

guest ok = Yes


[public]

path = /home/public

writeable = Yes

guest only = Yes

    guest ok = Yes


Catatan Tambahan :

Dengan setting diatas, apabila diakses dari windows 9.x client, maka setting
username harus sesuai dengan login name yang ada di windows, karena file
server dengan menggunakan samba ini mempunyai kemampuan mirip dengan NT family.

Untuk dokumentasi yang lebih lengkap dapat diakses
di /usr/share/doc/samba-2.2.1a/, atau dapat mencari howto
di http://www.tldp.org (SMB-HOWTO).

Eksport MYSQL ke excel dengan PHP

catt: Referensi ini sudah dibuktikan..


Kadang-kadang data yang berada di database akan dicetak atau disimpan dalam format Excel atau spreedsheet. Beberapa aplikasi client database menyediakan fasilitas Export Data, baik ke dalam tabel html, DBF file, maupun Excel File.
Sekarang Kita akan melakukan export data MySQL ke file excel dengam menggunakan aplikasi yang dibuat dengan PHP. Berikut angkah-langkahnya,
Kita buat tabel contoh (id int(5), Nik varchar(8), nama varchar(25)) di dalam database test. lalu kita isi tabel tersebut dengan beberapa data dan kita export data tersebut ke dalam format file Excel.

Langkah pertama adalah melakukan konfigurasi koneksi ke server MySQL:

$host="localhost";
$user="whoami";
$pass="screet";
$db="test";
$conn=mysql_connect($host,$user,$pass) or die(mysql_error()."Koneksi Gagal");
?>

Setelah melakukan koneksi database dan koneksi berhasil, lalu kita buat tabel di atas, jangan lupa gunakan @ pada fungsi mysql_query, tanda @ digunakan untuk menghilangkan komentar error ketika ada kesalahan pembuatan tabel, hal ini dimaksudkan apabila tabel sudah ada, maka program tetap jalan tanpa ada pesan error.
Setelah Tabel selesai dibuat kita isi data tabel tersebut, berikut contoh script untuk membuat tabel dan mengisi datanya:
/* create database */
mysql_select_db($db);
$create="CREATE TABLE contoh (id INT( 5 ) NOT NULL AUTO_INCREMENT ,nik VARCHAR( 8 ) NOT NULL ,nama VARCHAR( 25 ) NOT NULL ,PRIMARY KEY ( id ) ,UNIQUE (nik)) TYPE = innodb";
$kueri_create=@mysql_query($create);
/* selesai create */

/* Insert data */
$insert="INSERT INTO `contoh` ( `id` , `nik` , `nama` )VALUES ('1', '00100001', 'Didik'), ('2', '00100002', 'Kurniawan')";
$kueri_insert=@mysql_query($insert);
?>

Setelah tabel siap dan data sudah ada, sekarang kita akan melakukan proses export data tersebut, berikut scriptnya:
$select = "select * from contoh order by nik";
//die($select);
$export = mysql_query($select);
$fields = mysql_num_fields($export);
for ($i = 0; $i < $fields; $i++) {
$header .= mysql_field_name($export, $i) . "\t";
}
while($row = mysql_fetch_row($export)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);
if ($data == "") {
$data = "n(0) Records Found!\n";
}
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=contoh.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
?>

Membangun Mail Server dengan Postfix dan UW-IMAP di Opensuse

Instalasi Postfix

Tambahkan alias untuk user postfix pada file /etc/aliases, jika belum ada.

# cp /etc/aliases /etc/aliases.save
# vi /etc/aliases dan ketik:

mailer-daemon: postmaster
postmaster: root
postfix: root

Listing 1. Daftar alias.
Perintah pertama dimaksudkan untuk menyimpan salinan file aliases agar jika terjadi masalah dengan cepat keadaan dapat dipulihkan seperti semula. Periksa baris-baris di atas apakah sudah ada, jika belum ada tambahkan. Kemudian rebuild file /etc/aliases.db dari file /etc/aliases, dengan perintah:

# newaliases

Jalankan daemon postfix dengan perintah:

# postfix start

Periksa apakah server sudah berjalan dan mendengarkan di port smtp yaitu port 25.

# netstat -tapn

Jika hasil perintah tersebut kira-kira di bawah ini maka server sudah berjalan.7

tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 28555/

Atau bisa juga diuji dengan perintah telnet menggunakan protokol smtp.
# telnet localhost 25

Jika server menanggapi dengan,

Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 localhost.localdomain ESMTP Postfix

berarti postfix memang sudah aktif. Ketikkan ‘quit’ diikuti dengan tombol ‘Enter’. Untuk menyesuaikan kelakuan server atur konfigurasi postfix, yaitu:

* /etc/postfix/main.cf,
* /etc/postfix/master.cf.

Nyaris semua konfigurasi bisa dilakukan pada file pertama. Sesuaikan nama host Anda pada file /etc/postfix/main.cf. Cari baris yang seperti dibawah ini:
myhostname = margie.com -------> silahkan diganti sesuai dgn yg diinginkan.

Listing 2. Konfigurasi postfix: myhostname.

Ganti nama lengkap hostname ini dengan nama host Anda. Kemudian restart server,
# service postfix restart

Mencoba Postfix

Untuk mencoba mail server dibuat user sembarang, katakanlah username ‘fakeuser’ dan passwordnya ‘fakepass’.
# useradd fakeuser
# passwd fakeuser

Masukkan password untuk fakeuser dua kali. Kemudian coba kirimkan email ke user tersebut dengan protokol smtp menggunakan program telnet.
[root@fariz root]# telnet margie.com 25
Trying 192.168.1.192…
Connected to margie.com
Escape character is ‘^]’.
220 margie.com ESMTP Postfix
mail from: sas@margie.com
250 Ok
rcpt to: fakeuser
250 Ok
data
354 End data with

Apakah uji coba ini bisa diterima?

Terima Kasih.


sas
.
250 Ok: queued as A7DC318073
quit
221 Bye
Connection closed by foreign host.

Jika tidak ada masalah atau pesan-pesan kesalahan atau peringatan maka kita bisa melihat email tersebut dalam file mail spool milik fakeuser. File spool ini bisa dilihat dengan perintah cat, less atau more.
[root@fariz root]# cat /var/spool/mail/fakeuser
From sas@margie.com Tue Sep 2 07:18:41 2003
Return-Path:

Apakah uji coba ini bisa diterima?

Terima Kasih.


Setelah itu tinggal buatkan user dan password untuk client-client yang berkepentingan sesuai dengan jumlah user yang ada.


POP/IMAP Server

Postfix adalah mail delivery system, artinya ia hanya berfungsi untuk mendistribusikan email antar komputer di jaringan. Fasilitas pengambilan email dari server ke komputer klien tidak diberikan. Anda harus menggunakan program lain untuk bisa memberikan fasilitas ini. Program yang bisa dipakai adalah:

* UW IMAP, dari http://www.washington.edu/imap/,
* Cyrus IMAP, yang bisa didapatkan dari http://asg.web.cmu.edu/cyrus/,
* Courier-Imap, yang bisa didapatkan dari http://www.inter7.com/courierimap/,
* Qpopper, dari http://www.eudora.com/qpopper/.

Paket yang sangat mudah diinstal adalah UW IMAP. Paket ini sudah menjadi standar distribusi Linux. Jika Anda memakai distro RedHat 9.0 paket ini terletak di CD kedua dengan nama imap-2001a-18.i386.rpm. Siapkan CD tersebut dan masukkan ke CD Drive, kemudian jalankan perintah:
# mount /mnt/cdrom
# rpm -ivh /mnt/cdrom/RedHat/RPMS/imap-2001a-18.i386.rpm

Kemudian aktifkan layanan ini dengan mengedit file /etc/xinetd.d/ipop3, sehingga isi file tersebut menjadi:

# vim /etc/xinetd.d/ipop3
# default: off
# description: The POP3 service allows remote users to access their mail \
# using an POP3 client such as Netscape Communicator, mutt, \
# or fetchmail.
service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += HOST DURATION
log_on_failure += HOST
disable = no
}

Listing 3. Konfigurasi server pop3 untuk xinetd di direktori /etc/xinetd.d/.

Perhatikan baris yang berisi kata disable, nilai untuk direktif ini semula adalah yes. Ganti dengan no. Langkah terakhir restart layanan xinetd.
# /etc/init.d/xinetd restart


Kalau aku pake yang di bawah ini karena imap tidak terdistribusi di opensuse !!!!

Instalasi Tarball UW IMAP

Langkah-langkah yang perlu Anda kerjakan untuk menginstal UW IMAP dari kodes sumber adalah,

1. Download file dari hyperlink download yang terdapat di http://www.washington.edu/imap/.
2. Jalankan proses kompilasi di bawah direktori

# cp imap.tar.Z /usr/local/src/
# cd /usr/local/src/
# tar -xzvf imap.tar.Z
# cd imap-2002d/
# make slx SSLTYPE=none

3. Salin program-program hasil kompilasi ini ke direktori /usr/sbin.

# cp ipopd/ipop2d /usr/sbin/
# cp ipopd/ipop3d /usr/sbin/
# cp imapd/imapd /usr/sbin/

4. Pastikan pada file /etc/services terdapat baris berikut:

pop3 110/tcp pop-3
pop3 110/udp pop-3

5. Kemudian buatlah file seperti ditunjukkan pada listing 3 di direktori /etc/xinetd.d/, jika server Anda memakai xinetd. Tapi jika Anda memakai inetd tambahkan pada file /etc/inetd.conf, baris-baris berikut:

pop stream tcp nowait root /usr/sbin/ipop2d ipop2d
pop3 stream tcp nowait root /usr/sbin/ipop3d ipop3d
imap stream tcp nowait root /usr/sbin/imapd imapd

6. Restart xinetd dengan perintah,

# /etc/init.d/xinetd restart

atau

# /etc/init.d/inet restart

Apabila sistem yang dipakai menggunakan inetd.

Jika kita akses server pop dengan protokol pop3, kira-kira seperti ini hasilnya.
[root@fariz root]# telnet margie.com 110
Trying 192.168.1.192…
Connected to margie.com
Escape character is ‘^]’.
+OK POP3 margie.com v2001.78rh server ready
user fakeuser
+OK User name accepted, password please
pass fakepass
+OK Mailbox open, 1 messages
list
+OK Mailbox scan listing follows
1 792
.
retr 1
+OK 792 octets
Return-Path:

Apakah uji coba ini bisa diterima?

Terima Kasih.


mrg
.
quit
+OK
Connection closed by foreign host.

Cara mounting hardisk baru di linux:

Cara mounting hardisk baru di linux:

kita bisa melakukan proses mount secara manual dengan langkah berikut :
1.Buat folder/direktori baru pada /mnt, contohnya folder backup , hasilnya seperti /mnt/backup
2.Periksa partisi dengan perintah cat /proc/partitions untuk mengetahui harddisk baru yang kita pasang letaknya ada dimana
3.Lakukan mount dengan perintah : mount -t file sistem device direktori. Misal hardisk baru terdeteksi sebagai hdb1.

#mount -t vfat /dev/hdb1 /mnt/backup

Untuk FAT / FAT32, menggunakan vfat, sedangkan untuk ntfs menggunakan ntfs.
Secara default, partisi ntfs di set read only, sedangkan partisi FAT/FAT32 dengan status read-write.

Proses mounting tadi sifatnya tidak permanen, artinya, saat Linux dimatikan, informasi posisi mounting akan hilang. Untuk membuatnya permanen, kita harus merubah file /etc/fstab.
# vi /et c/fstab

lalu tambahkan perintah di bawah ini lalu restart komputernya

/dev/hdb1 /mnt/backup auto auto,uid=1000 0 0
Perhatikan uid=1000. Ini adalah tergantung dari user yang akan dipakai. uid ini harus diisi karena agar hardisk yang dimounting bisa diakses oleh user tersebut dan bukan hanya user root. Untuk mengetahuinya berapa uid dari user selain root yang boleh mengakses hardisk tersebut adalah dengan perintah:

$ cat /etc/passwd|grep (user) misal mysql
$ cat /etc/passwd|grep mysql

dan akan tampil sbb:

mysql:x:1000:1000:mysql th3sn0wbr4in,,,:/home/mysql:/bin/bash

Dan angka 1000 setelah x itu adalah uidnya.

Setelah mounting hardisk Ok, berarti kita bisa melanjutkan ke langkah selanjutnya yaitu fungsi cron.

Rabu, 29 Juli 2009

Mematikan akses SSH untuk Root

Untuk menjaga keamanan dari server anda, disarankan (Wajib sih) mematikan login As Root Via SSH. Sehingga akses hanya bisa dilakukan oleh user biasa yang sudah pasti aksesnya terbatas. Caranya :

1. SSH Ke server yang mau di seting disable root login
2. Edit /etc/ssh/sshd_config
3. cari Protocol 2,1(Tanpa tanda kutip) dan rubah menjadi Protocol 2
4. selanjutnya cari PermitRootLogin yes dan rubah menjadi PermitRootLogin no
5. simpan dan keluar
6. Lalu restart ssh
/etc/rc.d/init.d/sshd restart

Selasa, 28 Juli 2009

Permanently IPTABLES

Penggunaan iptables sebagai salah satu security yang murah di linux memang diakui hanya bersifat sementara, dalam artian bahwa setelah komputer melakukan proses restart atau reboot maka settingan-setingan yang sudah dibuat dengan sendirinya akan hilang.

Nah, untuk menangani hal tersebut apa yang harus dilakukan....?
Ada 2 cara yang pernah saya lakukan untuk menangani hal tersebut di atas dan sebenarnya ini sangat mudah bahkan bagi newbie (user baru di linux) seperti saya. Dari 2 cara itu memang ada perbedaan dikarenakan ada 2 distro yaitu redhat dan opensuse. Caranya adalah sbb;

* Redhat dan turunannya...
Pertama masuk sebagai user root via console, lalu ketikkan perintah iptablesnya dan simpan di /etc/sysconfig/iptabes, misal:

[margie@server ~]$ su -
Password:
[root@server ~]# iptables -I INPUT -p tcp -s 192.168.1.100 --dport 3306 -j DROP
[root@server ~]# iptables-save > /etc/sysconfig/iptables

nah dari perintah di atas, iptables sudah tersimpan dan akan menjadi permanen sehingga ketika komputer melakukan restart maka hasil settingan tidak akan hilang. Kita dapat melihatnya dengan perintah
[root@server ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 192.168.1.100 0.0.0.0/0 tcp dpt:3306
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination


*Opensuse dan turunannya...
Berbeda dengan redhat, perintah iptables di opensuse tidak bisa dilakukan dengan cara seperti di atas. Maksudnya adalah kalau dilakukan dengan cara di atas maka hasil settingan masih tidak permanen atau akan hilang setelah komputer melakukan restart.
Cara yang digunakan memang sedikit agak berbeda yaitu karena perintah security termasuk iptables masuk di SuSEfirewall2. Maka sebelum kita melakukan perubahan kita stop dulu SuSEfirewall2nya dengan cara
"SuSEfirewall2 stop". Kemudian
Edit file /etc/sysconfig/SuSEFirewall2, lalu aktifkan bagian
FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
Secara default settingannya adalah FW_CUSTOMRULES=" ", jadi harus kita aktifkan. Kita bisa menggunakan editor vi atau yang lainnya.

vi /etc/sysconfig/SuSEFirewall2 dan lakukan perubahan seperti ini (harus dengan user root);
# Do you want to load customary rules from a file?
#
# This is really an expert option. NO HELP WILL BE GIVEN FOR THIS!
# READ THE EXAMPLE CUSTOMARY FILE AT /etc/sysconfig/scripts/SuSEfirewall2-custom
#
FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"
#FW_CUSTOMRULES=""

Setelah itu tekan tombol escape, lalu ketik :wq
Setelah itu kita lakukan perubahan atau penambahan di /etc/sysconfig/scripts/SuSEfirewall2-custom, pada baris di bawah tulisan "fw_custom_before_antispoofing()"

vi /etc/sysconfig/scripts/SuSEfirewall2-custom

fw_custom_before_antispoofing() {
# these rules will be loaded before any anti spoofing rules will be
# loaded. Effectively the only filter lists already effective are
# 1) allow any traffic via the loopback interface, 2) allow DHCP stuff,
# 3) allow SAMBA stuff [2 and 3 only if FW_SERVICE_... are set to "yes"]
# You can use this hook to prevent logging of uninteresting broadcast
# packets or to allow certain packet through the anti-spoofing mechanism.

#example: allow incoming multicast packets for any routing protocol
#iptables -A INPUT -j ACCEPT -d 224.0.0.0/24
iptables -I INPUT -p tcp -s 192168.1.100 --dport 3306 -j DROP

lalu tekan tombol escape, ketik :wq

Setelah tersimpan dengan wq, kita lakukan restart terhadap SuSEfirewall2 dengan perintah
SuSEfirewall2 start

Ok, kita tinggal cek dengan iptables -L -n

Security dengan IPTables

Lukman HDP/s3trum (lukman_hdp@yahoo.com)

August 5, 2003


Tulisan ini ditujukan untuk memberikan pengetahuan dasar mengenai pemfilteran paket menggunakan IPTables pada Linux. Tulisan ini bersifat general yang menjelaskan secara umum bagaimana sintaks IPTables dibuat. Beberapa (banyak?) bagian dari tulisan diambil dari official site IPTables. Tidak ada copyright apapun dalam dokumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli). Kritik, koreksi, saran dan lain-lain silahkan dialamatkan ke email tersebut di atas. Semoga bermanfaat.

1. Persiapan

Sebelum mulai, diharapkan pembaca sudah memiliki pengetahuan dasar mengenai TCP/IP karena hal ini merupakan dasar dari penggunaan IPTables. Ada (sangat) banyak resource yang mendokumentasikan konsep dasar tentang TCP/IP, baik itu secara online maupun cetak. Silahkan googling untuk mendapatkannya.

Hal berikutnya yang harus anda persiapkan adalah sebuah komputer yang terinstall Linux. Akan lebih baik jika komputer anda memiliki 2 buah network interface card, sebab bisa menjalankan fungsi packet forwarding. Disarankan anda menggunakan linux dengan kernel 2.4 ke atas, karena (setahu saya) linux dengan kernel 2.4 ke atas sudah memiliki dukungan IPTables secara default, sehingga anda tidak perlu mengkompilasi ulang kernel anda. Bagi anda yang menggunakan kernel 2.2 atau sebelumnya, anda harus melakukan kompilasi kernel untuk memasukkan dukungan IPTables. Silahkan lihat tutorial Kompilasi kernel 2.4.x di Linux oleh mas Asfik.

2. Pendahuluan

IPTables memiliki tiga macam daftar aturan bawaan dalam tabel penyaringan, daftar tersebut dinamakan rantai firewall (firewall chain) atau sering disebut chain saja. Ketiga chain tersebut adalah INPUT, OUTPUT dan FORWARD.

Pada diagram tersebut, lingkaran menggambarkan ketiga rantai atau chain. Pada saat sebuah paket sampai pada sebuah lingkaran, maka disitulah terjadi proses penyaringan. Rantai akan memutuskan nasib paket tersebut. Apabila keputusannnya adalah DROP, maka paket tersebut akan di-drop. Tetapi jika rantai memutuskan untuk ACCEPT, maka paket akan dilewatkan melalui diagram tersebut.

Sebuah rantai adalah aturan-aturan yang telah ditentukan. Setiap aturan menyatakan “jika paket memiliki informasi awal (header) seperti ini, maka inilah yang harus dilakukan terhadap paket”. Jika aturan tersebut tidak sesuai dengan paket, maka aturan berikutnya akan memproses paket tersebut. Apabila sampai aturan terakhir yang ada, paket tersebut belum memenuhi salah satu aturan, maka kernel akan melihat kebijakan bawaan (default) untuk memutuskan apa yang harus dilakukan kepada paket tersebut. Ada dua kebijakan bawaan yaitu default DROP dan default ACCEPT.

Jalannya sebuah paket melalui diagram tersebut bisa dicontohkan sebagai berikut:

Perjalanan paket yang diforward ke host yang lain

1. Paket berada pada jaringan fisik, contoh internet.
2. Paket masuk ke interface jaringan, contoh eth0.
3. Paket masuk ke chain PREROUTING pada table Mangle. Chain ini berfungsi untuk me-mangle (menghaluskan) paket, seperti merubah TOS, TTL dan lain-lain.
4. Paket masuk ke chain PREROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan DNAT (Destination Network Address Translation).
5. Paket mengalami keputusan routing, apakah akan diproses oleh host lokal atau diteruskan ke host lain.
6. Paket masuk ke chain FORWARD pada tabel filter. Disinlah proses pemfilteran yang utama terjadi.
7. Paket masuk ke chain POSTROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan SNAT (Source Network Address Translation).
8. Paket keluar menuju interface jaringan, contoh eth1.
9. Paket kembali berada pada jaringan fisik, contoh LAN.

Perjalanan paket yang ditujukan bagi host lokal

1. Paket berada dalam jaringan fisik, contoh internet.
2. Paket masuk ke interface jaringan, contoh eth0.
3. Paket masuk ke chain PREROUTING pada tabel mangle.
4. Paket masuk ke chain PREROUTING pada tabel nat.
5. Paket mengalami keputusan routing.
6. Paket masuk ke chain INPUT pada tabel filter untuk mengalami proses penyaringan.
7. Paket akan diterima oleh aplikasi lokal.

Perjalanan paket yang berasal dari host lokal

1. Aplikasi lokal menghasilkan paket data yang akan dikirimkan melalui jaringan.
2. Paket memasuki chain OUTPUT pada tabel mangle.
3. Paket memasuki chain OUTPUT pada tabel nat.
4. Paket memasuki chain OUTPUT pada tabel filter.
5. Paket mengalami keputusan routing, seperti ke mana paket harus pergi dan melalui interface mana.
6. Paket masuk ke chain POSTROUTING pada tabel NAT.
7. Paket masuk ke interface jaringan, contoh eth0.
8. Paket berada pada jaringan fisik, contoh internet.

3. Sintaks IPTables

iptables [-t table] command [match] [target/jump]

1. Table

IPTables memiliki 3 buah tabel, yaitu NAT, MANGLE dan FILTER. Penggunannya disesuaikan dengan sifat dan karakteristik masing-masing. Fungsi dari masing-masing tabel tersebut sebagai berikut :

  1. NAT : Secara umum digunakan untuk melakukan Network Address Translation. NAT adalah penggantian field alamat asal atau alamat tujuan dari sebuah paket.
  2. MANGLE : Digunakan untuk melakukan penghalusan (mangle) paket, seperti TTL, TOS dan MARK.
  3. FILTER : Secara umum, inilah pemfilteran paket yang sesungguhnya.. Di sini bisa dintukan apakah paket akan di-DROP, LOG, ACCEPT atau REJECT

2. Command

Command pada baris perintah IPTables akan memberitahu apa yang harus dilakukan terhadap lanjutan sintaks perintah. Umumnya dilakukan penambahan atau penghapusan sesuatu dari tabel atau yang lain.

Command

Keterangan

-A
--append

Perintah ini menambahkan aturan pada akhir chain. Aturan akan ditambahkan di akhir baris pada chain yang bersangkutan, sehingga akan dieksekusi terakhir

-D      
--delete

Perintah ini menghapus suatu aturan pada chain. Dilakukan dengan cara menyebutkan secara lengkap perintah yang ingin dihapus atau dengan menyebutkan nomor baris dimana perintah akan dihapus.

-R      
--replace

Penggunaannya sama seperti --delete, tetapi command ini menggantinya dengan entry yang baru.

-I      
--insert

Memasukkan aturan pada suatu baris di chain. Aturan akan dimasukkan pada baris yang disebutkan, dan aturan awal yang menempati baris tersebut akan digeser ke bawah. Demikian pula baris-baris selanjutnya.

-L      
--list

Perintah ini menampilkan semua aturan pada sebuah tabel. Apabila tabel tidak disebutkan, maka seluruh aturan pada semua tabel akan ditampilkan, walaupun tidak ada aturan sama sekali pada sebuah tabel. Command ini bisa dikombinasikan dengan option –v (verbose), -n (numeric) dan –x (exact).

-F      
--flush

Perintah ini mengosongkan aturan pada sebuah chain. Apabila chain tidak disebutkan, maka semua chain akan di-flush.

-N      
--new-chain

Perintah tersebut akan membuat chain baru.

-X      
--delete-chain

Perintah ini akan menghapus chain yang disebutkan. Agar perintah di atas berhasil, tidak boleh ada aturan lain yang mengacu kepada chain tersebut.

-P      
--policy

Perintah ini membuat kebijakan default pada sebuah chain. Sehingga jika ada sebuah paket yang tidak memenuhi aturan pada baris-baris yang telah didefinisikan, maka paket akan diperlakukan sesuai dengan kebijakan default ini.

-E      
--rename-chain

Perintah ini akan merubah nama suatu chain.

3. Option

Option digunakan dikombinasikan dengan command tertentu yang akan menghasilkan suatu variasi perintah.

Option
Command          Pemakai

Keterangan

-v      
--verbose
--list      
--append
--insert
--delete
--replace

Memberikan output yang lebih detail, utamanya digunakan dengan --list. Jika digunakan dengan
--list, akan menampilkam K (x1.000),
M (1.000.000) dan G (1.000.000.000).

-x      
--exact
--list

Memberikan output yang lebih tepat.

-n      
--numeric
--list

Memberikan output yang berbentuk angka. Alamat IP dan nomor port akan ditampilkan dalam bentuk angka dan bukan hostname ataupun nama aplikasi/servis.

--line-number
--list

Akan menampilkan nomor dari daftar aturan. Hal ni akan mempermudah bagi kita untuk melakukan modifikasi aturan, jika kita mau meyisipkan atau menghapus aturan dengan nomor tertentu.

--modprobe
All

Memerintahkan IPTables untuk memanggil modul tertentu. Bisa digunakan bersamaan dengan semua command.

4. Generic Matches

Generic Matches artinya pendefinisian kriteria yang berlaku secara umum. Dengan kata lain, sintaks generic matches akan sama untuk semua protokol. Setelah protokol didefinisikan, maka baru didefinisikan aturan yang lebih spesifik yang dimiliki oleh protokol tersebut. Hal ini dilakukan karena tiap-tiap protokol memiliki karakteristik yang berbeda, sehingga memerlukan perlakuan khusus.

Match

Keterangan

-p      
--protocol

Digunakan untuk mengecek tipe protokol tertentu. Contoh protokol yang umum adalah TCP, UDP, ICMP dan ALL. Daftar protokol bisa dilihat pada /etc/protocols.

Tanda inversi juga bisa diberlakukan di sini, misal kita menghendaki semua protokol kecuali icmp, maka kita bisa menuliskan --protokol ! icmp yang berarti semua kecuali icmp.

-s      
--src
--source

Kriteria ini digunakan untuk mencocokkan paket berdasarkan alamat IP asal. Alamat di sini bisa berberntuk alamat tunggal seperti 192.168.1.1, atau suatu alamat network menggunakan netmask misal 192.168.1.0/255.255.255.0, atau bisa juga ditulis 192.168.1.0/24 yang artinya semua alamat 192.168.1.x. Kita juga bisa menggunakan inversi.

-d      
--dst
--destination

Digunakan untuk mecocokkan paket berdasarkan alamat tujuan. Penggunaannya sama dengan match –src

-i      
--in-interface

Match ini berguna untuk mencocokkan paket berdasarkan interface di mana paket datang. Match ini hanya berlaku pada chain INPUT, FORWARD dan PREROUTING

-o      
--out-interface

Berfungsi untuk mencocokkan paket berdasarkan interface di mana paket keluar. Penggunannya sama dengan
--in-interface. Berlaku untuk chain OUTPUT, FORWARD dan POSTROUTING

5. Implicit Matches

Implicit Matches adalah match yang spesifik untuk tipe protokol tertentu. Implicit Match merupakan sekumpulan rule yang akan diload setelah tipe protokol disebutkan. Ada 3 Implicit Match berlaku untuk tiga jenis protokol, yaitu TCP matches, UDP matches dan ICMP matches.

a. TCP matches

Match

Keterangan

--sport      
--source-port

Match ini berguna untuk mecocokkan paket berdasarkan port asal. Dalam hal ini kia bisa mendefinisikan nomor port atau nama service-nya. Daftar nama service dan nomor port yang bersesuaian dapat dilihat di /etc/services.

--sport juga bisa dituliskan untuk range port tertentu. Misalkan kita ingin mendefinisikan range antara port 22 sampai dengan 80, maka kita bisa menuliskan --sport 22:80.

Jika bagian salah satu bagian pada range tersebut kita hilangkan maka hal itu bisa kita artikan dari port 0, jika bagian kiri yang kita hilangkan, atau 65535 jika bagian kanan yang kita hilangkan. Contohnya --sport :80 artinya paket dengan port asal nol sampai dengan 80, atau --sport 1024: artinya paket dengan port asal 1024 sampai dengan 65535.Match ini juga mengenal inversi.

--dport          
--destination-port

Penggunaan match ini sama dengan match --source-port.

--tcp-flags

Digunakan untuk mencocokkan paket berdasarkan TCP flags yang ada pada paket tersebut. Pertama, pengecekan akan mengambil daftar flag yang akan diperbandingkan, dan kedua, akan memeriksa paket yang di-set 1, atau on.

Pada kedua list, masing-masing entry-nya harus dipisahkan oleh koma dan tidak boleh ada spasi antar entry, kecuali spasi antar kedua list. Match ini mengenali SYN,ACK,FIN,RST,URG, PSH. Selain itu kita juga menuliskan ALL dan NONE. Match ini juga bisa menggunakan inversi.

--syn

Match ini akan memeriksa apakah flag SYN di-set dan ACK dan FIN tidak di-set. Perintah ini sama artinya jika kita menggunakan match --tcp-flags SYN,ACK,FIN SYN

Paket dengan match di atas digunakan untuk melakukan request koneksi TCP yang baru terhadap server

b. UDP Matches

Karena bahwa protokol UDP bersifat connectionless, maka tidak ada flags yang mendeskripsikan status paket untuk untuk membuka atau menutup koneksi. Paket UDP juga tidak memerlukan acknowledgement. Sehingga Implicit Match untuk protokol UDP lebih sedikit daripada TCP.
Ada dua macam match untuk UDP:

--sport atau --source-port
--dport atau --destination-port

c. ICMP Matches

Paket ICMP digunakan untuk mengirimkan pesan-pesan kesalahan dan kondisi-kondisi jaringan yang lain. Hanya ada satu implicit match untuk tipe protokol ICMP, yaitu :

--icmp-type

6. Explicit Matches

a. MAC Address

Match jenis ini berguna untuk melakukan pencocokan paket berdasarkan MAC source address. Perlu diingat bahwa MAC hanya berfungsi untuk jaringan yang menggunakan teknologi ethernet.

iptables –A INPUT –m mac –mac-source 00:00:00:00:00:01

b. Multiport Matches

Ekstensi Multiport Matches digunakan untuk mendefinisikan port atau port range lebih dari satu, yang berfungsi jika ingin didefinisikan aturan yang sama untuk beberapa port. Tapi hal yang perlu diingat bahwa kita tidak bisa menggunakan port matching standard dan multiport matching dalam waktu yang bersamaan.

iptables –A INPUT –p tcp –m multiport --source-port 22,53,80,110

c. Owner Matches

Penggunaan match ini untuk mencocokkan paket berdasarkan pembuat atau pemilik/owner paket tersebut. Match ini bekerja dalam chain OUTPUT, akan tetapi penggunaan match ini tidak terlalu luas, sebab ada beberapa proses tidak memiliki owner (??).

iptables –A OUTPUT –m owner --uid-owner 500

Kita juga bisa memfilter berdasarkan group ID dengan sintaks --gid-owner. Salah satu penggunannya adalah bisa mencegah user selain yang dikehendaki untuk mengakses internet misalnya.

d. State Matches

Match ini mendefinisikan state apa saja yang cocok. Ada 4 state yang berlaku, yaitu NEW, ESTABLISHED, RELATED dan INVALID. NEW digunakan untuk paket yang akan memulai koneksi baru. ESTABLISHED digunakan jika koneksi telah tersambung dan paket-paketnya merupakan bagian dari koneki tersebut. RELATED digunakan untuk paket-paket yang bukan bagian dari koneksi tetapi masih berhubungan dengan koneksi tersebut, contohnya adalah FTP data transfer yang menyertai sebuah koneksi TCP atau UDP. INVALID adalah paket yang tidak bisa diidentifikasi, bukan merupakan bagian dari koneksi yang ada.

iptables –A INPUT –m state --state RELATED,ESTABLISHED

7. Target/Jump

Target atau jump adalah perlakuan yang diberikan terhadap paket-paket yang memenuhi kriteria atau match. Jump memerlukan sebuah chain yang lain dalam tabel yang sama. Chain tersebut nantinya akan dimasuki oleh paket yang memenuhi kriteria. Analoginya ialah chain baru nanti berlaku sebagai prosedur/fungsi dari program utama. Sebagai contoh dibuat sebuah chain yang bernama tcp_packets. Setelah ditambahkan aturan-aturan ke dalam chain tersebut, kemudian chain tersebut akan direferensi dari chain input.

iptables –A INPUT –p tcp –j tcp_packets
Target

Keterangan

-j ACCEPT
--jump ACCEPT

Ketika paket cocok dengan daftar match dan target ini diberlakukan, maka paket tidak akan melalui baris-baris aturan yang lain dalam chain tersebut atau chain yang lain yang mereferensi chain tersebut. Akan tetapi paket masih akan memasuki chain-chain pada tabel yang lain seperti biasa.

-j DROP
--jump DROP

Target ini men-drop paket dan menolak untuk memproses lebih jauh. Dalam beberapa kasus mungkin hal ini kurang baik, karena akan meninggalkan dead socket antara client dan server.

Paket yang menerima target DROP benar-benar mati dan target tidak akan mengirim informasi tambahan dalam bentuk apapun kepada client atau server.

-j RETURN
--jump RETURN

Target ini akan membuat paket berhenti melintasi aturan-aturan pada chain dimana paket tersebut menemui target RETURN. Jika chain merupakan subchain dari chain yang lain, maka paket akan kembali ke superset chain di atasnya dan masuk ke baris aturan berikutnya. Apabila chain adalah chain utama misalnya INPUT, maka paket akan dikembalikan kepada kebijakan default dari chain tersebut.

-j MIRROR

Apabila kompuuter A menjalankan target seperti contoh di atas, kemudian komputer B melakukan koneksi http ke komputer A, maka yang akan muncul pada browser adalah website komputer B itu sendiri. Karena fungsi utama target ini adalah membalik source address dan destination address.

Target ini bekerja pada chain INPUT, FORWARD dan PREROUTING atau chain buatan yang dipanggil melalui chain tersebut.

Beberapa target yang lain biasanya memerlukan parameter tambahan:

a. LOG Target

Ada beberapa option yang bisa digunakan bersamaan dengan target ini. Yang pertama adalah yang digunakan untuk menentukan tingkat log. Tingkatan log yang bisa digunakan adalah debug, info, notice, warning, err, crit, alert dan emerg.Yang kedua adalah -j LOG --log-prefix yang digunakan untuk memberikan string yang tertulis pada awalan log, sehingga memudahkan pembacaan log tersebut.

iptables –A FORWARD –p tcp –j LOG --log-level debug
iptables –A INPUT –p tcp –j LOG --log-prefix “INPUT Packets”

b. REJECT Target

Secara umum, REJECT bekerja seperti DROP, yaitu memblok paket dan menolak untuk memproses lebih lanjut paket tersebut. Tetapi, REJECT akan mengirimkan error message ke host pengirim paket tersebut. REJECT bekerja pada chain INPUT, OUTPUT dan FORWARD atau pada chain tambahan yang dipanggil dari ketiga chain tersebut.

iptables –A FORWARD –p tcp –dport 22 –j REJECT --reject-with icmp-host-unreachable

Ada beberapa tipe pesan yang bisa dikirimkan yaitu icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unrachable, icmp-net-prohibited dan icmp-host-prohibited.

c. SNAT Target

Target ini berguna untuk melakukan perubahan alamat asal dari paket (Source Network Address Translation). Target ini berlaku untuk tabel nat pada chain POSTROUTING, dan hanya di sinilah SNAT bisa dilakukan. Jika paket pertama dari sebuah koneksi mengalami SNAT, maka paket-paket berikutnya dalam koneksi tersebut juga akan mengalami hal yang sama.

iptables –t nat –A POSTROUTING –o eth0 –j SNAT
--to-source 194.236.50.155-194.236.50.160:1024-32000

d. DNAT Target

Berkebalikan dengan SNAT, DNAT digunakan untuk melakukan translasi field alamat tujuan (Destination Network Address Translation) pada header dari paket-paket yang memenuhi kriteria match. DNAT hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau chain buatan yang dipanggil oleh kedua chain tersebut.

iptables –t nat –A PREROUTING –p tcp –d 15.45.23.67 --dport 80 –j DNAT
--to-destination 192.168.0.2

e. MASQUERADE Target

Secara umum, target MASQUERADE bekerja dengan cara yang hampir sama seperti target SNAT, tetapi target ini tidak memerlukan option --to-source. MASQUERADE memang didesain untuk bekerja pada komputer dengan koneksi yang tidak tetap seperti dial-up atau DHCP yang akan memberi pada kita nomor IP yang berubah-ubah.

Seperti halnya pada SNAT, target ini hanya bekerja untuk tabel nat pada chain POSTROUTING.

iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE

f. REDIRECT Target

Target REDIRECT digunakan untuk mengalihkan jurusan (redirect) paket ke mesin itu sendiri. Target ini umumnya digunakan untuk mengarahkan paket yang menuju suatu port tertentu untuk memasuki suatu aplikasi proxy, lebih jauh lagi hal ini sangat berguna untuk membangun sebuah sistem jaringan yang menggunakan transparent proxy. Contohnya kita ingin mengalihkan semua koneksi yang menuju port http untuk memasuki aplikasi http proxy misalnya squid. Target ini hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau pada chain buatan yang dipanggil dari kedua chain tersebut.

iptables –t nat –A PREROUTING –i eth1 –p tcp --dport 80 –j REDIRECT --to-port 3128

Tutuorial Squid bisa dilihat di Instalasi Squid, Banner Filter, Porn Filter, Limit Bandwith, Transparan Proxy bikinan mas Hanny.

4. Penutup

Demikian dasar-dasar dari IPTables beserta komponen-komponennya. Mungkin anda masih agak bingung tentang implementasi dari apa yang telah dijelaskan di atas. Insya Allah dalam tulisan yang akan datang, saya akan memberikan beberapa contoh kasus jaringan yang menggunakan IPTables. Yea.. may I have enough power to do it :)

5. Change Log

5 Agustus 2003

  • Penulisan pertama dokumen ini

6. Referensi

  1. www.netfilter.org
  2. Manual page iptables
  3. Beberapa sumber yang lain, tapi saya lupa :)