KEAMANAN JARINGAN

(NETWORK SECURITY)

1. Pendahuluan

Terhubungnya LAN atau komputer ke Internet membuka potensi adanya lubang keamanan lain (security hole) yang tadinya telah teratasi dengan mekanisme keamanan secara fisik dan lokal. Jaringan, terutama internet, merupakan sebuah jaringan komputer yang sangat terbuka di dunia. Konsekuensi yang harus di tanggung adalah tidak ada jaminan keamanan bagi jaringan yang terkait ke internet. Artinya jika operator jaringan tidak hati-hati dalam men-set up sistem dan menerapkan policy-nya, maka kemungkinan besar jaringan yang terkait ke Internet akan dengan mudah dimasuki orang yang tidak di undang dari luar.

Merupakan tugas dari administrator jaringan yang bersangkutan, untuk menekan resiko tersebut seminimal mungkin. Pemilihan strategi dan kecakapan administrator jaringan ini, akan sangat membedakan dan menentukan apakah suatu jaringan mudah ditembus atau tidak.

Yang perlu untuk diketahui adalah bahwa kemudahan (kenyamanan) mengakses informasi berbanding terbalik dengan tingkat keamanan sistem informasi itu sendiri. Semakin tinggi tingkat keamanan, semakin sulit (tidak nyaman) untuk mengakses informasi. Sebelum memulai segalanya, ada baiknya menentukan terlebih dahulu tingkat ancaman yang harus diatasi dan resiko yang harus diambil maupun resiko yang harus dihindari, sehingga dapat dicapai keseimbangan yamg optimal antara keamanan dan kenyamanan.

2. Pengenalan Keamanan Jaringan

Keamananan komputer yang tidak terhubung (stand alone), hanya terhubung ke jaringan/LAN dan terhubung ke internet tentu mempunyai perbedaan. Dengan menghubungkan suatu jaringan ke internet, resiko keamanan yang akan dihadapi akan semakin banyak. Serangan bisa terjadi kapan saja, dari mana saja dan oleh siapa saja. Ingat, internet adalah jaringan yang bersifat global. Untuk itu, pengamanan harus dilakukan dengan hati-hati. Walaupun demikian, kemungkinan terjadinya masalah sekuriti di kemudian hari masih akan tetap ada. Tidak ada jaminan bahwa sistem yang kita konfigurasi akan benar-benar aman. Yang bisa kita lakukan hanyalah menekan seminimal mungkin kemungkinan terjadinya masalah sekuriti.

Untuk itu, ada beberapa cara yang dapat dilakukan, antara lain menutup port-port yang tidak dipakai, meletakkan firewall, menggunakan aplikasi yang reliable (misalkan webserver dengan apache), melakukan konfigurasi program-program aplikasi internet (misalkan melakukan konfigurasi keamanan pada apache dan mengintegrasikannya dengan SSL), menggunakan program-program sekuriti (misalkan scan listener dengan menggunakan portsentry), dan lain-lain. Pada bab ini kita akan membahas mengenai internet daemon (inetd) yang digunakan untuk mengelola beberapa aplikasi internet (misal : telnet, ftp, ssh, dll). Untuk versi Redhat yang terbaru (misal Redhat 7.1), inetd ini sudah digantikan posisinya oleh xinetd. Perbedaannya antara lain adalah sintaks-sintaks yang digunakan dan juga xinetd menggunakan satu buah file untuk satu servis sedangkan inetd menggunakan satu buah file untuk semua servis (file /etc/inetd.conf). Selain inetd, pada bab ini kita juga akan membahas TCP Wrappers yang akan kita pakai untuk `membungkus` inetd (internet daemon) agar lebih aman. Penasaran ? Mari kita pelajari bagian berikutnya.

3. Service inetd (internet daemon)

Secara default sistem kita akan menjalankan beberapa servis internet yang mungkin sebagian di antaranya tidak kita gunakan/perlukan. Untuk meningkatkan keamanan, lebih baik servis-servis (misalkan finger, telnet, dll) yang tidak terlalu kita butuhkan dimatikan/ditutup saja. Sudah banyak kasus yang menunjukkan kesalahan penggunaan (abuse) dari servis tersebut, atau ada kemungkinan lubang keamanan dalam servis tersebut akan tetapi sang administrator tidak menyadari bahwa servis tersebut dijalankan di komputernya. Kebanyakan servis yang berhubungan dengan internet (misalkan : ftp, telnet , ssh, dll) akan dijalankan melalui inetd (internet daemon).

Dengan melakukan pengeditan pada /etc/inetd.conf (konfigurasi utama internet daemon : superserver) maka kita dapat melakukan modifikasi-modifikasi yang diperlukan misalkan saja mematikan servis- servis yang tidak digunakan (dengan menambahkan tanda komentar (#) pada awal baris). Agar lebih jelas mari kita pelajari sintaks pada file /etc/inetd.conf :

Sintaks

service tipe_socket protocol flag user server_path argumen

KETERANGAN

service

Menjelaskan nama servis yang ditranslasikan ke nomor port dengan melihat file /etc/services

tipe_socket

Berisi jenis/tipe socket yaitu (ada dua) : stream (bersifat connection oriented digunakan untuk TCP) dan dgram (digunakan untuk UDP)

protocol

Berisi jenis protokol yang digunakan

flag

Di isi dengan wait atau nowait. Jika berisi wait maka inetd hanya menjalankan satu server pada port yang telah ditentukan. Sebaliknya dengan option nowait maka server dapat dijalankan lebih dari satu tanpa perlu menunggu selesainya eksekusi sebelumnya. Jika kita menggunakan option stream maka flag nowait harus digunakan.

user

Berisi login ID dari user yang akan memiliki proses dari perintah yang dijalankan. Kebanyakan menggunakan user root. Tetapi ada beberapa proses yang tidak menggunakan root tetapi memakai user lain (misal : nobody, news, dll) dengan alasan security.

server_path

Berisi full path dari program server yang akan dijalankan.

argumen

Berisi perintah yang akan dijalankan serta beberapa argumen yang diperlukan. Akan bernilai kosong/tidak diisi jika kita menggunan option internal (menggunakan servis internal) pada bagian server. Contoh file /etc/inetd.conf :

# inetd.conf This file describes the services that will be available

# through the INETD TCP/IP super server. To re-configure

# the running INETD process, edit this file, then send the

# INETD process a SIGHUP signal.

# Version: @(#)/etc/inetd.conf 3.10 05/27/93

# Authors: Original taken from BSD UNIX 4.3/TAHOE.

# Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>

# Modified for Debian Linux by Ian A. Murdock <imurdock@shell.portal.com>

# Modified for RHS Linux by Marc Ewing <marc@redhat.com>

# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>

#

# Echo, discard, daytime, and chargen are used primarily for testing.

# To re-read this file after changes, just do a ‘killall -HUP inetd’

#echo stream tcp nowait root internal

#echo dgram udp wait root internal

#discard stream tcp nowait root internal

#discard dgram udp wait root internal

#daytime stream tcp nowait root internal

#daytime dgram udp wait root internal

#chargen stream tcp nowait root internal

#chargen dgram udp wait root internal

#time stream tcp nowait root internal

#time dgram udp wait root internal

#

# These are standard services.

#

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

#

# Shell, login, exec, comsat and talk are BSD protocols.

#

#shell stream tcp nowait root /usr/sbin/tcpd in.rshd

#login stream tcp nowait root /usr/sbin/tcpd in.rlogind

#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd

#comsat dgram udp wait root /usr/sbin/tcpd in.comsat

talk dgram udp wait nobody.tty /usr/sbin/tcpd in.talkd

ntalk dgram udp wait nobody.tty /usr/sbin/tcpd in.ntalkd

#dtalk stream tcp wait nobody.tty /usr/sbin/tcpd in.dtalkd

#

# Pop and imap mail services et al

#

#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d

#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d

#imap stream tcp nowait root /usr/sbin/tcpd imapd

#

# The Internet UUCP service.

#

#uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l

#

# Tftp service is provided primarily for booting. Most sites

# run this only on machines acting as “boot servers.” Do not uncomment

# this unless you *need* it.

#

#tftp dgram udp wait root /usr/sbin/tcpd in.tftpd

#bootps dgram udp wait root /usr/sbin/tcpd bootpd

#

# Finger, systat and netstat give out user information which may be

# valuable to potential “system crackers.” Many sites choose to disable

# some or all of these services to improve security.

#

#finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd

#cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd

#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx

#netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet

#

# Authentication

#

# identd is run standalone now

#

#auth stream tcp wait root /usr/sbin/in.identd in.identd -e -o

#

# End of inetd.conf

smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd

#linuxconf stream tcp wait root /bin/linuxconf linuxconf –http

Terlihat pada file /etc/inetd.conf di atas ada beberapa servis yang didisable untuk menghindari hal-hal yang tidak diinginkan. Di antaranya adalah linuxconf, finger, rlogin, dll.

4. Pengenalan Firewall

Firewall merupakan sebuah perangkat yang diletakkan antara Internet dengan jaringan internal. Informasi yang keluar atau masuk harus melalui firewall ini. Tujuan utama dari firewall adalah untuk menjaga agar akses (ke dalam maupun ke luar) dari orang yang tidak berwenang (unauthorized access) tidak dapat dilakukan. Konfigurasi dari firewall bergantung kepada kebijaksanaan (policy) dari organisasi yang bersangkutan.

Firewall merupakan alat untuk mengimplementasikan kebijakan security (security policy). Sedangkan kebijakan security, dibuat berdasarkan perimbangan antara fasilitas yang disediakan dengan implikasi security-nya. Semakin ketat kebijakan security, semakin kompleks konfigurasi layanan informasi atau semakin sedikit fasilitas yang tersedia di jaringan. Sebaliknya, dengan semakin banyak fasilitas yang tersedia atau sedemikian sederhananya konfigurasi yang diterapkan, maka semakin mudah orang orang ‘usil‘ dari luar masuk kedalam sistem (akibat langsung dari lemahnya kebijakan security).

Firewall bekerja dengan mengamati paket IP (Internet Protocol) yang melewatinya. Berdasarkan konfigurasi dari firewall maka akses dapat diatur berdasarkan IP address, port, dan arah informasi. Detail dari konfigurasi bergantung kepada masing-masing firewall. Firewall dapat berupa sebuah perangkat keras yang sudah dilengkapi dengan perangkat lunak tertentu, sehingga pemakai (administrator) tinggal melakukan konfigurasi dari firewall tersebut. Firewall juga dapat berupa perangkat lunak yang ditambahkan kepada sebuah server (baik UNIX maupun Windows NT), yang dikonfigurasi menjadi firewall.

Firewall pada dasarnya dapat dikategorikan menjadi 2 berdasarkan cara fungsi kerjanya (keduanya dapat dilakukan pada sebuah perangkat komputer (device) atau dilakukan secara terpisah), yaitu :

1. Fungsi filtering

Firewall bekerja pada level jaringan (network-level firewall) biasa disebut packet filter.

Firewall tipe ini biasanya berupa router yang melakukan fungsi packet filtering berdasarkan parameter-parameter tertentu : alamat sumber, protokol, nomor port dan isi. Dari membandingkan informasi yang diperoleh pada paket-paket trafik dengan kebijaksanaan yang ada pada tabel akses, maka tindakan yang diberlakukan adalah :

· Melewatkan paket data ke tujuannya (client atau server)

· Memblok paket data

2. Fungsi proxy

Firewall pada level aplikasi (application level gateway) ini berfungsi sebagai penghubung antara komputer client dengan jaringan luar. Pada koneksinya, paket-paket IP tidak pernah diteruskan secara langsung, namun ditranslasi dan diwakilkan oleh gateway aplikasi tersebut yang berfungsi sebagai saluran dan penterjemah dan menggantikan fungsi client. Proxy akan merelai semua request dari client kepada server yang sesungguhnya, kemudian merelai balik semua hasil response real server kepada client kembali. Ditengah proses di atas, maka proxy server berkesempatan untuk melakukan pembatasan “relai” berdasarkan tabel akses yang sudah dibuat.

Fungsi proxy dapat dilakukan oleh berbagai software tergantung kepada jenis proxy yang dibutuhkan, misalnya web proxy, rlogin proxy, ftp proxy dan seterusnya. Di sisi client sering kali dibutuhkan software tertentu agar dapat menggunakan proxy server ini, seperti misalnya dengan menggunakan SOCKS. Beberapa perangkat lunak berbasis UNIX untuk proxy antara lain: Socks (proxy server oleh NEC Network Systems Labs), Squid (web proxy server).

5.Packet Filterring

5.1 TCP Wrappers

Secara default redhat akan mengizinkan servis-servis tertentu (misal : telnet) dengan tanpa pembatasan. Untuk itu diperlukan pembatasan-pembatasan (proteksi) tertentu sehingga dapat mengurangi kerawanan keamanan jaringan.

Salah satu aplikasi pada sistem UNIX yang digunakan untuk melakukan packet filtering adalah TCP Wrappers. TCP Wrappers biasanya sudah terinstal secara default waktu penginstalan Linux.

Program ini bekerja dengan cara membungkus inetd (internet daemon : aplikasi yang menjalankan servis-servis internat) agar lebih aman. Sebagai contoh ada permintaan koneksi telnet dari internet, jika sistem kita tidak mempunyai tcp wrappers maka inetd akan memanggil telnetd dan session telnet akan terbentuk tanpa melakukan pembatasan apapun. Hal ini berbeda dengan TCP Wrappers yang telah terinstal, sebelum memanggil telnetd, TCP Wrapper akan memeriksa dulu berdasarkan pembatasan-pembatasan yang telah disetting kemudian memutuskan apakah koneksi tersebut akan diizinkan atau tidak.

5.2 Konfigurasi TCP Wrappers

File-file yang perlu diperhatikan dalam penyetingan TCP Wrappers antara lain :

1. /etc/inetd.conf (konfigurasi internet daemon)

2. /etc/hosts.allow (konfigurasi host-host yang diizinkan)

3. /etc/hosts.deny (konfigurasi host-host yang ditolak)

Pastikan dahulu bahwa TCP Wrappers sudah terinstal pada sistem kita. Untuk mengeceknya dapat dilihat pada file /etc/inetd.conf. Dalam inetd.conf, layanan tanpa TCP Wrapper akan dituliskan dalam bentuk sebagai berikut, misal :

telnet stream tcp nowait nobody /usr/etc/telnetd in.telnetd –b /etc/issue

Jika internet daemon sudah dikonfigurasi dengan TCP Wrapper maka akan terbaca seperti ini :

telnet stream tcp nowait nobody /usr/local/bin/tcpd

Biasanya tcpwrappers dirakit menjadi “tcpd”. Apabila servis di server anda (misalnya telnet atau ftp) dijalankan melalui tcpd, maka server anda menggunakan tcpwrappers.

TCP Wrappers mengkonfigurasikan Network Access Control pada file /etc/hosts.allow dan /etc/hosts.deny. File /etc/hosts.deny ini berisi mengenai servis dari user/host/network mana saja yang akan ditolak sedangkan file /etc/hosts.allow berisi mengenai servis dari user/host/network mana saja yang akan diterima. Secara garis besar kedua file tersebut mempunya sintaks sbb :

5.3 Daemon_list : client_host_list

Daemon List merupakan daftar daemon seperti telnetd, fingerd, ftpd, ssh, dll. Client Host List merupakan daftar user/host/network dan mempuyai bentuk sbb :

ALL : semua host

KNOWN : host yang terdaftar pada DNS server

LOCAL : host yang tidak dipisahkan oleh . (dot)

PARANOID : mempunyai nama dan IP address yang tidak sesuai jika dilacak dan dibandingkan antara pelacakan dari nama dengan dari nomor IP

UNKNOWN : host yang hanya mempunyai nomor IP tanpa nama internet

.itb.ac.id : host dengan domain itb.ac.id

167.205.206.107 : host dengan IP adress tertentu

Agar lebih jelas dapat dibaca manualnya :

[user]$ man hosts_options

5.4 IPfwadm, IPchains, NetFilter dan IP Tables

Selain dengan aplikasi TCP Wrappers kita dapat juga menggunakan ipfwadm (berbasis kernel 2.0), ipchains (berbasis kernel 2.2), dan Netfilter dengan IP Tables (berbasis kernel 2.4) untuk melakukan packet filtering. Baik ipfwadm, ipchains, maupun netfilter dan ip tables bersifat saling menggantikan, dan kita cukup menggunakan salah satu saja. Ipchains (berbasis kernel 2.2.16) sudah dibahas pada bab koneksi internet.