LINUX DAN SECURITY


Tedi Heriyanto

September 2000


Materi ini disampaikan pada Seminar Nasional Komputer II di

Universitas Gadjah Mada Jogjakarta pada bulan September 2000


Abstraksi


Dalam makalah akan dibahas mengenai beberapa isu keamanan yang umum ditemui pada sistem operasi Linux yaitu keamanan pada host dan keamanan pada jaringan. Dalam keamanan host, akan dibahas mengenai password, services, program-program SUID, serta enkripsi data, sementara pada keamanan jaringan, yang akan dibahas adalah ftp, telnet, keamanan email, dan keamanan web. Di bagian akhir makalah, akan dibicarakan mengenai beberapa buah tools yang dapat digunakan untuk memperbaiki keamanan jaringan anda.



Keamanan Host (host security)


Password


Untuk dapat mengakses sistem operasi Linux digunakan mekanisme password. Pada distribusi-distribusi Linux yang lama, password tersebut disimpan dalam suatu file teks yang terletak di /etc/passwd. File ini harus dapat dibaca oleh setiap orang (world readable) agar dapat digunakan oleh program-program lain yang menggunakan mekanisme password tersebut.


Berikut ini adalah contoh isi file /etc/passwd :


root:..CETo68esYsA:0:0:root:/root:/bin/bash

bin:jvXHHBGCK7nkg:1:1:bin:/bin:

daemon:i1YD6CckS:2:2:daemon:/sbin:

adm:bj2NcvrnubUqU:3:4:adm:/var/adm:

rms:x9kxv932ckadsf:100:100:Richard M Stallman:/home/rms:/bin/bash

dmr:ZeoW7CaIcQmjhl:101:101:Dennis M Ritchie:/home/dmr:/bin/bash

linus:IK40Bb5NnkAHk:102:102:Linus Torvalds:/home/linus:/bin/bash


Keterangan :

Field pertama : nama login

Field kedua : password yang terenkripsi

Field ketiga : User ID

Field keempat : Group ID

Field kelima : Nama sebenarnya

Field keenam : Home directory user

Field ketujuh : User Shell

Password login yang terdapat pada file /etc/passwd dienkripsi dengan menggunakan algoritma DES yang telah dimodifikasi [1]. Meskipun demikian hal tersebut tidak mengurangi kemungkinan password tersebut dibongkar (crack). Karena penyerang (attacker) dapat melakukan dictionary-based attack dengan cara :


Untuk mengatasi permasalahan ini pada distribusi-distribusi Linux yang baru digunakan program utility shadow password yang menjadikan file /etc/passwd tidak lagi berisikan informasi password yang telah dienkripsi, informasi tersebut kini disimpan pada file /etc/shadow yang hanya dapat dibaca oleh root.


Berikut ini adalah contoh file /etc/passwd yang telah di-shadow :


root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:

daemon:x:2:2:daemon:/sbin:

adm:x:3:4:adm:/var/adm:

rms:x:100:100:Richard M Stallman:/home/rms:/bin/bash

dmr:x:101:101:Dennis M Ritchie:/home/dmr:/bin/bash

linus:x:102:102:Linus Torvalds:/home/linus:/bin/bash


Dengan demikian, penggunaan shadow password akan mempersulit attacker untuk melakukan dictionary-based attack terhadap file password.


Selain menggunakan shadow password beberapa distribusi Linux juga menyertakan program hashing MD5 yang menjadikan password yang dimasukkan pemakai dapat berukuran panjang dan relatif mudah diingat karena berupa suatu passphrase.


Mekanisme yang telah disediakan sistem operasi tersebut di atas tidaklah bermanfaat bila pemakai tidak menggunakan password yang "baik". Berikut ini adalah beberapa kriteria yang dapat digunakan untuk membuat password yang "baik" [2] :


Contoh distribusi Linux yang telah menyertakan utility shadow password dan MD5 hash adalah : RedHat 6.2, Trustix Secure Linux 1.1.


Services


Beberapa distribusi Linux pada saat instalasi secara default memasang semua service-service yang ada pada host, misalnya web service, email service, dan sebagainya. Hal ini tentu saja sangat merugikan dipandang dari segi keamanan, karena bukan tidak mungkin service-service tersebut tidak digunakan dan bahkan lebih parah lagi service-service tersebut dapat menjadi hole yang memungkinkan attacker menyerang sistem maupun jaringan anda. Untuk mengatasi hal tersebut, sebaiknya service-service yang tidak digunakan dimatikan dengan menggunakan script-script tertentu atau ditiadakan dengan cara dihapus.


Misalnya pada distribusi Red Hat 6.2, bila anda tidak membutuhkan service sendmail, maka hapuslah software tersebut dengan cara :


rpm -e sendmail.


Namun sebelumnya anda mungkin perlu mematikan service tersebut :


/etc/rc.d/init.d/sendmail stop


Beberapa buah service yang dapat dimatikan bila komputer anda adalah komputer host :


Bila anda tidak mengetahui kegunaan suatu service, sebaiknya tiadakan service tersebut. Editlah file /etc/inetd.conf dan berikan tanda komentar (#) untuk service-service yang tidak anda butuhkan. Anda dapat memeriksa service-service lainnya dengan cara meng-grep baris-baris yang tidak berawalan dengan #, menggunakan :


grep -v "^#" /etc/inetd.conf


Kemudian restart inetd (Internet Super Server) dengan cara :


kill -HUP inetd


Dalam Trustix Secure Linux (TSL), service-service yang terdapat pada INETD Super Server secara default ditiadakan. Berikut ini adalah cuplikan file /etc/inetd.conf yang disertakan pada Trustix Secure Linux :


#

# 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>

#

# Modified for TSL by Erlend Midttun <erlendbm@trustix.com>

#

#########################################################################

# A word of warning: This is a place where little is better.

#

#########################################################################

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

#

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

# There are certain security aspects of these. Recommended setting is

# off.

#

# 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.

#

# Telnet allows for user logins using plain text passwords.

# A far superior way is using SSH (www.ssh.org) for this

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

#

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

#

# Again, these allow for sending plain text passwords over the wire,

# and again SSH proves better.

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

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

#

# 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

#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



SUID Root Programs


SUID Root Program adalah program-program yang berjalan dengan akses root, meskipun yang menjalankannya bukan root. Program-program tersebut akan sangat berbahaya terutama bila user dapat menulis padanya. Untuk itu perlu diperiksa dengan cara :


mkdir -m700 /etc/info

find / -type f \( -perm -04000 -o -perm -02000 \) -ls > /etc/info/suid-results


Kemudian anda harus memikirkan program-program SUID apa yang dibutuhkan dan lokasinya dan biarkan program-program tersebut. Namun bila program-program SUID tersebut tidak anda butuhkan atau ketahui manfaatnya, rubahlah permisi mereka menjadi 700 (chmod 700 *) atau bahkan lebih baik lagi dengan merubah permisi mereka menjadi 700 dan memindahkannya ke direktori temporer hingga dapat dipastikan mereka tidak dibutuhkan, lalu dapat dihapus.



Data Encryption


Untuk mengamankan data, dapat digunakan beberapa program enkripsi seperti GNU Privacy Guard (www.gnupg.org) ataupun Pretty Good Privacy (www.pgpi.com). Kedua program ini tersedia secara bebas dan tersedia untuk berbagai sistem operasi utama.


Kedua program tersebut dapat digunakan untuk mengenkripsi/mendekripsi data ataupun email. Selain itu keduanya dapat digunakan untuk enkripsi data menggunakan metode private key maupun public key.

Keamanan Jaringan (network security)


FTP


FTP merupakan protokol yang mendefinisikan standar untuk mentransfer data melalui jaringan (RFC 765). Program-program ftp dapat dikategorikan menjadi dua yaitu ftp server dan ftp client. FTP mulanya ditujukan untuk memudahkan transfer data dari beragam komputer yang berjauhan letaknya. Hal ini dapat diketahui berdasarkan tujuan yang ingin dicapai oleh FTP sebagaimana terdapat pada RFC 765 :

The objectives of FTP are :

  1. to promote sharing of files (computer programs and/or data),

  2. to encourage indirect or implicit (via programs) use of remote computers,

  3. to shield a user from variations in file storage systems among Hosts, and

  4. to transfer data reliably and efficiently. FTP, though usable directly by a user at a terminal, is designed mainly for use by programs.


Oleh karena itu isu keamanan menjadi kurang penting, namun dengan semakin luasnya penggunaan Internet, maka keamanan menjadi salah satu isu yang utama.


FTP memiliki beberapa kelemahan sebagai berikut :


Selain itu jika di server anda terdapat suatu direktori yang dapat digunakan oleh semua orang untuk memasukkan datanya maka ada kemungkinan server anda akan digunakan sebagai pirate softwares repository.


Beberapa hal yang dapat dilakukan untuk mengurangi kemungkinan holes pada FTP server anda adalah :

dan set seluruh ownership file-file di atas kepada root

chown -R root [ftp-home] ftp/



Email


Email merupakan salah satu fasilitas Internet yang paling banyak digunakan oleh orang. Protokol yang digunakan untuk transpor email adalah Simple Mail Transport Protocol (SMTP). Server SMTP memiliki cara kerja sebagai berikut :


Server SMTP memiliki kelemahan utama yaitu mereka mempercayai setiap orang, sehingga pemakai dapat menentukan alamat email yang mereka inginkan dan server SMTP akan memproses email dengan alamat palsu ini.


Ada dua hal yang harus dilakukan untuk mengatasinya yaitu :


Untuk mengirimkan email, selain diperlukan SMTP server juga dibutuhkan Mail Transport Agent (MTA). Salah satu MTA yang paling banyak digunakan adalah sendmail. Pada distribusi Red Hat 7.2, jika menggunakan instalasi default, sendmail akan diinstal dan dijalankan sebagai salah satu service di host anda.


Sendmail sering menjadi sasaran para attacker karena :

Untuk melindungi sistem anda dari serangan attacker yang berusaha memanfaatkan kelemahan sendmail dapat dilakukan beberapa hal berikut :

Gunakan MTA pengganti : qmail (www.qmail.org), postfix (www.postfix.org). Jika anda kesulitan dengan semua hal tersebut, mungkin sebaiknya anda menggunakan MTA lain.



Telnet


Tujuan protokol telnet adalah menyediakan fasilitas komunikasi dua arah, berorientasi 8-bit. Tujuan utamanya adalah memungkinkan sebuah metode standar interfacing peralatan-peralatan terminal dan proses berorientasi terminal satu sama lainnya.


Telnet terdiri dari dua buah program yaitu telnetd, yang berfungsi sebagai server, dan telnet, yang berfungsi sebagai client. Secara umum telnet adalah program yang memungkinkan seseorang untuk mengakses komputer dari remote machine. Oleh karena tidak didesain dengan mempertimbangkan keamanan maka banyak kelemahan yang mengemuka yaitu :


Disarankan untuk mengganti telnet dengan program lain seperti secure shell (SSH), tetapi apabila tetap ingin menggunakannya ada beberapa program pengganti yang relatif lebih aman :




Web


Web Server


Web server merupakan service yang harus dijalankan apabila kita ingin agar site yang telah dibangun dapat diakses dari Internet. Berikut ini adalah beberapa program web server yang banyak digunakan :


Dengan memasang web server untuk dapat diakses oleh banyak orang, maka terbuka peluang bagi attacker untuk menyerang web server anda. Untuk mengurangi kemungkinan attacker menyerang data yang terdapat pada web server, maka sebaiknya data yang ditaruh pada web server tidaklah bersifat rahasia, namun dokumen publik. Selain itu, komputer yang berfungsi sebagai web server sebaiknya meminimalkan software-software yang terinstal, karena dengan semakin banyaknya software yang terinstal, kemungkinan terdapatnya bugs yang mengganggu sistem akan semakin besar. Selain itu minimalkan service-service yang terinstalasi.


Jika suatu komputer hanya berfungsi sebagai web server maka beberapa service berikut dapat ditiadakan :


Selanjutnya setelah mengamankan web server anda, perlu diamankan software web server. Yang akan dibicarakan di sini adalah Apache, karena Apache merupakan software web server yang paling banyak digunakan saat ini, seluruh distribusi Linux telah menyertakan Apache sebagai software web servernya.


Apache merupakan pengganti httpd dari National Center for Supercomputer Applications. Apache telah menyediakan mekanisme keamanan yang telah built-in, termasuk :


Berikut ini adalah beberapa options yang dapat mempengaruhi keamanan web server :


Apache dapat pula dikonfigurasi dengan menambahkan proteksi password dan akses kendali pada tingkat direktori dengan htpasswd. Sistem htpasswd memberikan kendali akses pada level pemakai dan kelompok melalui tiga buah file konfigurasi, yaitu :


Web Client


Penggunaan browser seperti Netscape Communicator dan Internet Explore juga memiliki risiko keamanan. Karena program-program tersebut tidak bebas dari bugs software. Selain itu dengan semakin banyaknya site yang memanfaatkan teknologi dynamic web seperti Javascript, ActiveX akan semakin meningkatkan risiko keamanan.


Pada bulan Agustus 2000, Netscape Communicator versi 4.0 hingga 4.74 untuk sistem operasi Windows, UNIX dan Macintosh memiliki kelemahan pada distribusi Java yang disertakan, yang memungkinkan Java membuka suatu server yang dapat diakses oleh sembarang client, selain itu juga memungkinkan Java mengakses sembarang URL termasuk file lokal [3].



Tool untuk keamanan jaringan anda


Sniffer


Sniffer adalah alat yang terhubung dengan jaringan komputer dan mendengarkan seluruh lalu lintas jaringan [4]. Sebuah program sniffing memungkinkan seseorang mendengarkan percakapan-percakapan pada komputer.


Sniffer biasanya digunakan untuk hal-hal berikut ini :


Sniffer dapat berupa hardware maupun software, biasanya sniffer ini memperoleh data dari transaksi yang berlangsung dan dapat mengambil data dari berbagai macam protokol (TCP/IP, IPX/SPX dan sebagainya).


Berikut ini adalah macam-macam sniffer yang dapat diperoleh secara bebas :


Secara teori, mustahil untuk dapat mendeteksi program sniffer karena mereka hanya mengumpulkan paket, mereka tidak mentrasmisikan apapun. Namun secara praktis, terkadang mungkin untuk mendeteksi program sniffer.


Berikut ini adalah beberapa alat yang dapat digunakan untuk mendeteksi sniffer :


Secara default, workstation mendengarkan dan menanggapi hanya paket-paket yang dialamatkan padanya. Namun, bila network interface workstation dialihkan ke mode promiscuous, workstation dapat memonitor dan menangkap seluruh lalu lintas jaringan dan paket-paket yang lewat, tanpa memperdulikan tujuannya.


Untuk mendeteksi apakah sebuah interface berada pada mode promiscuous pada host lokal anda, gunakan ifconfig.


Berikut ini adalah laporan ifconfig mengenai status seluruh interface tanpa adanya sniffer :

eth0 Link encap:Ethernet HWaddr 00:50:DA:0C:16:19
inet addr:192.168.21.12 Bcast:192.168.21.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1869 errors:0 dropped:0 overruns:0 frame:0
TX packets:1090 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0xb000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

Sementara tampilan berikut adalah status seluruh interface dengan adanya sniffer :


eth0 Link encap:Ethernet HWaddr 00:50:DA:0C:16:19
inet addr:192.168.21.12 Bcast:192.168.21.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:1869 errors:0 dropped:0 overruns:0 frame:0
TX packets:1090 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0xb000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0


Terlihat bahwa interface eth0 berjalan pada mode promiscuous.



ifstatus memeriksa seluruh interface jaringan pada sistem dan melaporkan interface yang berada pada mode debug atau promiscuous.


ifstatus dapat diperoleh di http://cert.unisa.it/pub/Tools/Network/ifstatus/



Merupakan alat pendeteksi sniffer yang paling komprehensif. Antisniff dapat diperoleh di http://www.l0pht.com/antisniff/



Sebuah tool dari The Apostols yang dapat mendeteksi sniffer yang berjalan pada segmen lokal. NePED dapat diperoleh dari http://www.apostols.org/projectz/neped/



Scanner


Scanner adalah alat keamanan yang memeriksa celah-celah keamanan. Scanner dapat dibedakan menjadi dua yaitu :


System Scanner


Untuk melihat celah keamanan pada localhost, biasanya terjadi karena kesalahan pada pemberian akses file, default account, UID yang duplikat.


Contoh sistem scanner adalah COPS (Computer Oracle and Password System). COPS ditulis oleh Dan Farmer. COPS menganalisis sistem anda untuk mencari permasalahan konfigurasi umum, dan tanda-tanda yang masih ada pada sistem UNIX, termasuk :

- file, direktori dan permisi device yang tidak valid atau errorneous.

- password yang lemah.

- keamanan yang buruk pada file password dan kelompok.

- bit-bit SUID/SGID yang tidak tepat pada file-file.

- perubahan-perubahan yang mencurigakan dalam checksum file.


Network Scanner


Network scanner digunakan untuk melihat celah keamanan pada jaringan. Contoh-contoh network scanner adalah :


Firewall


Firewall adalah sistem atau sekelompok sistem yang menetapkan kebijakan kendali akses antara dua jaringan. Secara prinsip, firewall dapat dianggap sebagai sepasang mekanisme : yang pertama memblok lalu lintas, yang kedua mengijinkan lalu lintas jaringan. Firewall dapat digunakan untuk melindungi jaringan anda dari serangan jaringan oleh pihak luar, namun firewall tidak dapat melindungi dari serangan yang tidak melalui firewall dan serangan dari seseorang yang berada di dalam jaringan anda, serta firewall tidak dapat melindungi anda dari program-program aplikasi yang ditulis dengan buruk.


Secara konseptual, terdapat dua macam firewall yaitu network level dan application level. Firewall network level mendasarkan keputusan mereka pada alamat sumber, alamat tujuan dan port yang terdapat dalam setiap paket IP. Network level firewall sangat cepat dan sangat transparan bagi pemakai. Application level firewall biasanya adalah host yang berjalan sebagai proxy server, yang tidak mengijinkan lalu lintas antar jaringan, dan melakukan logging dan auditing lalu lintas yang melaluinya. Application level firewall menyediakan laporan audit yang lebih rinci dan cenderung lebih memaksakan model keamanan yang lebih konservatif daripada network level firewall.


Free Firewall:


Berikut ini adalah beberapa commercial firewall :



Referensi :








1Pada DES, diperlukan sebuah kunci untuk melakukan enkripsi dan dekripsi. Namun pada versi DES yang telah dimodifikasi, hasil enkripsi tidak dapat dikembalikan ke bentuk semula (dekripsi), metode ini biasa disebut one way function.

2David A Curry, Improving The Security of Your Unix System, (http://www.alw.nih.gov/Security/Docs/unix-security.html)

3www.brumleve.com/BrownOffice/

4Robert Graham, Sniffing FAQ, (http://www.robertgraham.com/pubs/sniffing-faq.html)

15