![]() |
![]() |
Kestabilan Linux dan keamanan linux dalam hal jaringan disamping gratis membuatnya menjadi salah satu pilihan bagi warnet-warnet dan perusahaan yang menginginkan fasilitas Internet Sharing bagi jaringan lokal. Tulisan ini akan memberikan beberapa alternatif didalam pemanfaatan Linux sebagai kotak ICS, yaitu dengan Masquerading, Proxy Server, Socks Server.
Salam,
Hendra & Susan Dewichan
(c) 1998-1999 oleh Mark Roberts
Tulisan ini mengasumsikan bahwa komputer dengan sistem operasi Linux yang akan digunakan sebagai gateway ke internet telah dapat mengakses internet dengan baik. Tulisan ini akan membahas apa yang dapat anda lakukan agar komputer-komputer yang berada dalam LAN dapat mengakses internet melalui komputer Linux tersebut. Perhatikan Gambar 1 untuk jelasnya.
Gambar 1, Contoh Jaringan dengan Linux Gateway.
Pada Gambar 1, terlihat bahwa jaringan anda memiliki satu alamat IP yang nyata (real) [yang diberikan oleh ISP anda ketika melakukan koneksi dialup] pada komputer Linux Masq-gate yang dapat langsung mengakses internet, sedangkan komputer-komputer lainnya (dalam hal ini disebut klien) dalam LAN anda hanya memiliki alamat IP lokal (192.168.1.x), sehingga akses ke internet harus melalui Linux Masq-gate. Dalam hal ini pada komputer Linux tersebut harus bertindak Proxy Server atau dengan mengaktifkan kemampuan Masquerading pada Linux.
Masquerading adalah suatu solusi tingkat rendah (low level) - dengan melakukan perubahan informasi yang terkandung dalam paket TCP/IP dengan melakukan pencatatan terhadap koneksi pada suatu interface dan mem-forward paket tersebut ke interface lain. Pada masquerading, program/sistem klien tidak menyadari proses tersebut. Dalam hal ini bertindak sebagai firewall, dimana semua klien tersembunyi dibelakangnya, sehingga semua akses ke internet dan sebaliknya harus melalui firewall tersebut.
_________________________________________ | __________ LAN _______________ | _/\__/\_ | | | | | | | | | | Firewall | | Masqueraded | | / Internet \--(PPP0)--| System |--(ETH0)--| Workstation/s | | \_ _ _ _/ | |__________| |_______________| | \/ \/ \/ |_________________________________________|
Sedangkan Proxy Server adalah suatu solusi tingkat tinggi (high level) - program/browser pada setiap klien harus dikonfigurasi untuk melakukan permintaan ke server dan bertindak sebagai klien.
Berdasarkan keterangan diatas, Masquerading nampaknya lebih mudah untuk dilakukan dan merupakan suatu pilihan yang mudah dipahami. Tetapi sebenarnya suatu Proxy Server memiliki fungsi lebih dari sekedar hanya melayani permintaan klien, suatu Proxy Server mengerti jenis data yang diminta oleh klien, dan dapat juga melakukan cache terhadap data tersebut, Sebagai contoh, suatu Proxy HTTP dapat melakukan cache terhadap halaman web yang pernah diakses, dan pada permintaan klien terhadap halaman yang sama, maka halaman yang berada dalam cache tersebut akan diberikan, sehingga akan menghemat bandwidth jaringan komunikasi ke internet yang secara langsung akan meningkatkan unjuk kerja sistem.
Anda dapat juga mengabungkan kedua teknik diatas untuk memperoleh suatu konfigurasi yang optimal, dimana Proxy Server digunakan untuk melayani permintaan HTTP, sedangkan Masquerading digunakan untuk permintaan non HTTP, seperti IRC, TELNET, SMTP, POP3, dll
Masquerading bekerja dengan menggunakan paket filter. Paket filter memakai sejumlah Rules (aturan) untuk mengarahkan paket dari suatu interface ke interface lain, misalnya dari ETH0 ke PPP0, dengan melakukan perubahan data terhadap bagian header pada paket TCP/IP.
Untuk menggunakan paket filter di Linux, anda harus menggetahui versi kernel yang anda gunakan, karena pada kernel 2.0.x paket filter standarnya adalah ipfwadm, sedangkan pada kernel kernel 2.1.x dan 2.2.x telah diganti dengan ipchains. Cara melakukan konfigurasi Masquerading sangat tergantung kepada jenis paket filter yang anda gunakan.
Catatan : Pemakaian Masquerading/ Firewall dapat menyebabkan gangguan operasi internet pada beberapa game.
Sebagai contohnya adalah game yang diproduksi oleh perusahaan Blizzard yang mana memerlukan koneksi ke Battle.net, misalnya pada game Diablo, dan Starcraft. Masalah ini dapat saja diatasi, sejauh mengetahui nomor port/IP address yang digunakan oleh aplikasi game tersebut untuk melakukan koneksi.
Untuk kernel release 2.0.x dan sebelumnya, paket filtering mengunakan ipfwadm. Berikut ini adalah script sederhana yang memungkinkan komputer pada Gambar 1 untuk menangani pesan dikirim melalui gateway anda ke internet
/etc/rc.d/init.d/pfilter:
#!/bin/sh
# pfilter -- start/stop (IP) packet filter services
# Allow use of autoconfiguration (RH 5.2)
# chkconfig: 345 90 25
#
NAME=$0
case "$1" in
start)
echo -n "Memulai Paket Filter... "
# Mengosongkan setting sebelumnya:
/sbin/ipfwadm -O -f
/sbin/ipfwadm -I -f
/sbin/ipfwadm -F -f
# policy defautnya adalah "deny"
/sbin/ipfwadm -F -p deny
# melakukan brokir terhadap trafik autodial pada Windows, misalnya:
/sbin/ipfwadm -F -a deny -P tcp -S 0.0.0.0/0 137:139
# /sbin/ipfwadm -F -a deny -P udp -S 0.0.0.0/0 137:139
# untuk menyediakan service masquerade bagi komputer lokal - perbaiki
# alamat-alamat berikut sesuaikan dengan LAN anda dan pastikan juga
# untuk komputer Linux-nya !
/sbin/ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 -P all
# install module-module berikut ini jika anda membutuhkannya...
/sbin/insmod ip_masq_cuseeme
/sbin/insmod ip_masq_ftp
/sbin/insmod ip_masq_irc
/sbin/insmod ip_masq_quake
/sbin/insmod ip_masq_raudio
/sbin/insmod ip_masq_vdolive
echo "Selesai."
;;
stop)
echo -n "Menghentikan Paket Filter..."
/sbin/rmmod ip_masq_cuseeme
/sbin/rmmod ip_masq_ftp
/sbin/rmmod ip_masq_irc
/sbin/rmmod ip_masq_quake
/sbin/rmmod ip_masq_raudio
/sbin/rmmod ip_masq_vdolive
/sbin/ipfwadm -F -f
echo "Selesai."
;;
*)
echo "Pemakaian: $NAME {start|stop}"
exit 1
;;
esac
exit 0
Masquerading harus diaktifkan setelah service network bekerja. Hal tersebut dapat dilakukan dengan salah satu cara sebagai berikut ini :
a) dengan menambahkan command
/etc/rc.d/init.d/pfilter
kedalam file /etc/rc.d/rc.local sehingga Masquerading akan dijalankan pada setiap bootup sistem.
b) cara yang lebih baik adalah jika sistem anda mendukung pemakaian chkconfig adalah menggunakan perintah
chkconfig --add pfilter
Perintah diatas akan membuat suatu link start dan stop ke masq script untuk semua runlevel
ipfwadm bisa saja menyebabkan pemblokiran terhadap beberapa paket ip yang perlu dilewatkan ke internet untuk game-game tertentu. Hal tersebut dapat diatasi dengan menggunakan suatu paket ipautofw. Bacalah dokumentasi tentang ipautofw. Suatu percobaan yang sederhana perlu dilakukan untuk mendapatkan nomor port yang digunakan oleh aplikasi game tersebut :
misalnya : Sisipkan kode startup berikut pada packet filtering:
Fix untuk Starcraft/ Brood - Belum dicoba !
/usr/sbin/ipautofw -A -r tcp 6112 6112 -h <your client ip>
/usr/sbin/ipautofw -A -r udp 6112 6112 -h <your client ip>
Fix untuk Diablo - Belum dicoba !
/usr/sbin/ipautofw -A -r udp 6112 6112 -c tcp 116/usr/sbin/ipautofw -A -r udp 6112 6112 -c tcp 118
Pada umumnya Kernel yang modern telah mendukung "ipchains". IP Chains adalah suatu penulisan ulang terhadap ip.
Berikut ini adalah script sederhana untuk memungkinkan komputer pada sistem Gambar 1 menangani pesan melalui gateway anda ke internet.
/etc/rc.d/init.d/pfilter:
#!/bin/sh
# pfilter -- start/stop packet filter services
# Allow use of autoconfiguration (RH 5.2)
# chkconfig: 345 90 25
#
NAME=$0
case "$1" in
start)
echo -n "Memulai Packet Filter... "
# 2.1.x/2.2.x secara default menonaktifkan IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# menghapus setting sebelumnya:
/sbin/ipchains -F
# policy defaultnya adalah "deny"
/sbin/ipchains -P forward DENY
# melakukan brokir terhadap trafik autodial pada Windows, misalnya:
/sbin/ipchains -A forward -j DENY -p tcp -s 0.0.0.0/0 137:139
# /sbin/ipchains -A forward -j DENY -p udp -s 0.0.0.0/0 137:139
# menyediakan layanan masquerade bagi komputer lokal
# masquerade interface ppp0 - ganti/ tambah interface lainnya sesuai
dengan kebutuhan
/sbin/ipchains -A forward -j MASQ -i ppp0
# mungkin saja anda membutuhkan yang berikut ini pada
# install module ini jika anda membutuhkannya
# /sbin/insmod ip_masq_cuseeme
# /sbin/insmod ip_masq_ftp
# /sbin/insmod ip_masq_irc
# /sbin/insmod ip_masq_quake
# /sbin/insmod ip_masq_raudio
# /sbin/insmod ip_masq_vdolive
echo "Selesai."
;;
stop)
echo -n "Menghentikan..."
# don't think you need these with IP chains - let me know !!
# install these modules if you have a need for them...
# /sbin/rmmod ip_masq_cuseeme
# /sbin/rmmod ip_masq_ftp
# /sbin/rmmod ip_masq_irc
# /sbin/rmmod ip_masq_quake
# /sbin/rmmod ip_masq_raudio
# /sbin/rmmod ip_masq_vdolive
# /sbin/ipchains forward -F
echo "Done."
;;
*)
echo "Usage: $NAME {start|stop}"
exit 1
;;
esac
exit 0
Masquerading harus diaktifkan setelah service network bekerja.
Hal ini dapat dilakukan dengan salah satu cara berikut ini :
a) menambah command
/etc/rc.d/init.d/pfilter
dalam file /etc/rc.d/rc.local sehingga masquerading akan dijalankan pada setiap bootup sistem.
b) metode yang lebih baik dilakukan jika sistem anda mendukung pemakaian chkconfig adalah dengan menggunakan perintah
chkconfig --add pfilter
Perintah diatas membuat suatu start dan stop links ke masq script untuk semua runlevel
ipchain bisa saja menyebabkan pemblokiran terhadap beberapa paket ip yang perlu dilewatkan ke internet pada game-game tertentu. Hal ini diatasi dengan menggunakan suatu paket ipmasqadm. Bacalah dokumentasi tentang ipmasqadm. Suatu percobaan yang sederhana perlu dilakukan untuk mendapatkan nomor port yang digunakan oleh aplikasi game tersebut :misalnya.
Sisipkan kode startup berikut untuk packet filtering:
Fix untuk Starcraft/ Brood War fix - belum dicoba !
ipmasqadm autofw -A -r tcp 6112 6112 -h <your client ip>ipmasqadm autofw -A -r udp 6112 6112 -h <your client ip>
Fix untuk Diablo fix - belum dicoba !
ipmasqadm autofw -A -r udp 6112 6112 -c tcp 116ipmasqadm autofw -A -r udp 6112 6112 -c tcp 118
Bagian ini akan mediskusikan bagaimana melakukan setup suatu proxy server dan paket apa yang tersedia pada service proxy untuk jaringan anda.
Apache adalah salah satu web server yang paling banyak digunakan, dan disebarkan melalui banyak distribusi Linux. Sesuatu hal yang jarang diketahui, adalah Apache dapat juga berfungsi sebagai suatu proxy server untuk jaringan, supaya dapat melakukan hal ini, anda perlu melakukan edit terhadap konfigurasi file Apache Web yang terdapat pada direktori /etc/httpd/conf dan menambahkan baris-baris berikut:
httpd.conf:
# Proxy Server directives. Uncomment the following line to
# enable the proxy server:
ProxyRequests On
# To enable the cache as well, edit and uncomment the following lines:
CacheRoot /var/cache/httpd
CacheSize 5
CacheGcInterval 4
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
NoCache <alamat situs web yang tidak ingin di cache>
Apache juga mampu melakukan FTP proxying, dan dapat juga
dikombinasikan dengan SOCKS (lihat yang berikut ini).
Socks adalah suatu mekanisme proxy pada jaringan dimana memungkinkan host-host yang berada pada sisi SOCKS server mendapatkan akses penuh ke host-host yang berada di sisi lain dari SOCKS server tanpa menggunakan IP yang dapat dicapai secara langsung. Hal ini bekerja dengan mengarahkan kembali permintaan koneksi (connection requests) dari suatu host pada satu sisi ke host yang berada di sisi lain pada SOCKS server, dalam hal ini akan melakukan identifikasi yang memperbolehkan akses tersebut atau tidak, membangun suatu koneksi proxy untuk melewatkan data yang masuk dan keluar. Hal ini tepatnya berfungsi sebagai suatu firewall jaringan yang mana memungkinkan host-host yang berada dibelakang suatu SOCKS server untuk mendapatkan akses penuh ke internet dan dapat mencegah akses yang yang tidak diperbolehkan dari internet ke host-host internal.
Socks datang dengan 2 paket, yaitu :
- satu untuk server yang mana diinstall paada komputer Linux
gateway,
- satu lagi untuk klien [SocksCap16/32 unttuk Windows , atau
runsocks untuk Linux] yang harus diinstall pada sistem klien.
Anda perlu melakukan setup program socks klien pada setiap program yang membutuhkan socks service.Socks juga dapat mendukung UDP proxy, hal ini berarti dia juga dapat bekerja pada sejumlah games. Socks5 menggunakan suatu konfigurasi file pada server (Sistem Unix : file ini adalah /etc/socks5.conf).
httpd.conf:
auth - - -
interface 192.168.1. - -
permit - - 192.168.1. - - -
Suatu paket alternatif yang sering digunakan untuk memungkinkan service proxy adalah squid. Squid bertindak sebagai suatu proxy caching server yang berkemampuan tinggi untuk FTP, Gopher dan HTTP (Web)
Pemakaian proxy caching server akan menghemat waktu akses dan bandwidth, karena proxy caching server akan melakukan cache terhadap data yang telah diminta dari internet pada proxy server lokal, dan hasil cache tersebut dapat digunakan kembali untuk melayani permintaan berikutnya akan data yang sama.
Secara default, squid diinstall kedalam direktori /usr/local/squid . File konfigurasi squid.conf. dapat saja berada pada suatu subdirektori etc dalam direktori tertentu, atau berada pada subdirektori /etc yang sebenarnya Konfigurasi file berikut mengandung perintah yang mana menentukan siapa saja yang diperbolehkan untuk menggunakan proxy server.Suatu contoh untuk file squid.conf adalah:
squid.conf:
daftar Access control. Hal ini sangat penting karena mencegah
pencurian resource jaringan oleh orang lain. Isikan pada "allowed_hosts"
ACL,dengan alamat jaringan (misalnya 192.168.200.0 dan mask jaringan
anda (misalnya 255.255.255.0):
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
acl allowed_hosts src 192.168.1.0/255.255.255.0
http_access deny manager all
http_access allow allowed_hosts
http_access deny all
icp_access allow allowed_hosts
icp_access deny all
Pada contoh diatas, ganti bagian yang ber-cetak tebal network dan netmask dengan alamat IP dan netmask yang sesuai dengan jaringan anda. Setelah melakukan konfigurasi, pertama kali squid perlu diaktifkan dengan parameter -z yang berfungsi untuk melakukan setup suatu cache direktori. Akhirnya, suatu startup script harus di buat untuk memulai operasi squid. Suatu contoh startup script untuk squid pada RH5.2 adalah:
/etc/rc.d/init.d/squid:
!/bin/bash
# squid This shell script takes care of starting and stopping
# Squid Internet Object Cache
#
# chkconfig: - 90 25
# description: Squid - Internet Object Cache. Internet object caching is
\
# a way to store requested Internet objects (i.e., data available \
# via the HTTP, FTP, and gopher protocols) on a system closer to the \
# requesting site than to the source. Web browsers can then use the \
# local Squid cache as a proxy HTTP server, reducing access time as \
# well as bandwidth consumption.
# pidfile: /var/run/squid.pid
# config: /etc/squid.conf
PATH=/usr/bin:/sbin:/bin:/usr/sbin
export PATH
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# check if the squid conf file is present
[ -f /etc/squid.conf ] || exit 0
# determine the name of the squid binary
[ -f /usr/sbin/squid ] && SQUID=squid
[ -f /usr/sbin/squid.novm ] && SQUID=squid.novm
[ -z "$SQUID" ] && exit 0
# determine which one is the cache_swap directory
CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid.conf | \
grep cache_dir | sed -e 's/cache_dir//' | \
tr -d '\n'`
[ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/spool/squid
# default squid options
# -D disables initial dns checks. If you most likely will not to have an
# internet connection when you start squid, uncomment this
#SQUID_OPTS="-D"
case "$1" in
start)
echo -n "Starting $SQUID: "
[ ! -d $CACHE_SWAP/00 ] && \
echo -n "init_cache_dir $CACHE_SWAP... " && $SQUID -z -F 2>/dev/null
$SQUID $SQUID_OPTS &
echo $SQUID
touch /var/lock/subsys/$SQUID
;;
stop)
echo -n "Stopping $SQUID: "
$SQUID -k shutdown &
rm -f /var/lock/subsys/$SQUID
while : ; do
[ -f /var/run/squid.pid ] || break
sleep 2 && echo -n "."
done
echo "done"
;;
restart)
$SQUID $SQUID_OPTS -k reconfigure
exit $?
;;
status)
status $SQUID
$SQUID -k check
exit $?
;;
probe)
exit 0;
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit 0
Jika anda telah memilih proxy service untuk layanan jaringan anda, anda perlu melakukan konfigurasi pada web browser di setiap komputer klien (kecuali komputer gateway anda) agar dapat menggunakan fasilitas proxy server tersebut.
Anda tidak perlu melakukan hal ini pada Masquerading/Packet Filtering!
Pada Netscape hal ini dapat ditemukan pada menu Preferences dan didalam Advanced/Proxies. Pilih Manual Configuration yang mana akan memungkinkan anda untuk mengisi alamat IP dan port dari komputer proxy server. Setting standard untuk port proxy server adalah :
http: 80
ftp: 21
gopher: 70
Apache Web Server: http://www.apache.org/
Socks: http://www.socks.nec.com/
Squid : http://squid.nlanr.net/
IP-Chains HowTo : http://www.rustcorp.com/linux/ipchains/HOWTO-3.html
Halaman manual pada :
ipfwadm [kernel 1.x/ 2.0.x only]
ipchains [kernel 2.1.x/2.2.x only]