Keamanan LINUX Keamanan merupakan isu utama dalam jaringan. Apalagi jika seluruh host tersambung ke Internet. Melindungi jaringan, berarti melindungi setiap host yang ada dalam jaringan, baik workstation maupun server. Arsitektur kemanan di Linux, mempunyai enam komponen :
Account Pemakai (User Account) Kontrol Akses secara Diskresi (Discretionary Access Control) Kontrol Akses Jaringan (Network Access Control) Enkripsi (Encryption) Logging Deteksi penyusupan (Intrusion Detection)
Account Pemakai (User Account) Kekuasaan dalam mengadministrasi sistem secara keseluruhan berada dalam satu account, yakni root. Dengan root, Anda bisa mengontrol sistem file, user, sumber daya (devices), bahkan akses jaringan. Model diktatorial ini memudahkan administrator dalam menangani sistem. Jika ada satu user yang melanggar aturan, root bisa membuat account-nya beku, tanpa mengganggu yang lain. Atau mengatur siapa-siapa saja yang boleh mengakses suatu file, memberikan hak khusus pada user-user tertentu.. Setiap user diatur pula lingkungan di mana dia boleh main-main sepuasnya, atau cuma melihat-lihat. Hal ini memberikan keuntungan bagi pemakai maupun sistem :
Kecerobohan salah satu pemakai tidak akan berpengaruh terhadap sistem secara keseluruhan Masing-masing pemakai memiliki privacy yang ketat
Untuk itu account root biasanya hanya digunakan saat-saat tertentu saja. Misalnya perbaikan sistem. Dan biasanya account root dipergunakan pada modus single user. Dapat Anda bayangkan apa yang terjadi dengan jaringan Anda jika penyusup dari luar memperoleh akses root. Kontrol Akses secara Diskresi (Discretionary Access Control) Setiap pemakai Linux, memiliki account tersendiri, yang masing-masing dibedakan dengan user name dan password. Setiap file memiliki atribut kepemilikan, group, dan user umum. Satu file, bisa diberikan atribut tertentu, sehingga hanya dapat dibaca atau dieksekusi oleh pemiliknya saja. Pembatasan ketat ini dinamakan Discretionary Access Control (DAC). Hal ini pula yang menyebabkan virus jarang ditemui atau jarang tersebar di Linux. Sebab virus biasanya menulis file ke dalam sistem. Dengan DAC, virus hanya berpengaruh pada file-file yang dimiliki oleh salah seorang user yang mengeksekusi virus tersebut. Sedangkan sistemnya sendiri tidak tersentuh. Root merupakan satu-satunya account yang punya akses penuh ke seluruh sistem. Root juga dipakai untuk mengadministrasi seluruh sistem, mengganti atribut file, hingga mengadministrasikan divais. Karena itu, demi keamanan, root biasanya hanya dipakai untuk
perawatan atau perbaikan sistem saja. dengan Discretionary Access Control :
Beberapa
program
penting
berkaitan
su (Substitute User). Jangan menggunakan user root untuk penggunaan sehari-hari. Jika memang mendesak, jalankan program su. Program ini memungkinkan Anda menggunakan account root untuk sementara. Caranya : ~$ su Lalu Anda akan diminta password. password : Setelah Anda isi dengan benar, prompt akan berubah menjadi pagar. Jika telah selesai, ketik exit ~# exit ~$ Kembali ke prompt user. Selain su, dapat dipakai pula program sudo, yakni memberikan beberapa user untuk dapat mengeksekusi program tertentu sebagai root. Konfigurasi filenya berada di /etc/sudoers shadow. Secara default, instalasi binary slackware, telah mengaktifkan shadow password. shadow adalah program yang membuat file /etc/passwd menjadi dapat dibaca (readable) tetapi tidak lagi berisi password, dan sebagai gantinya disimpan di file /etc/shadow.Berikut contoh tipikal file passwd : halt:x:7:0:halt:/sbin:/sbin/halt root:x:0:0::/root:/bin/bash operator:x:11:0:operator:/root:/bin/bash shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown sync:x:5:0:sync:/sbin:/bin/sync bin:x:1:1:bin:/bin: ftp:x:404:1::/home/ftp:/bin/bash daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: lp:x:4:7:lp:/var/spool/lpd: mail:x:8:12:mail:/var/spool/mail: news:x:9:13:news:/usr/lib/news: uucp:x:10:14:uucp:/var/spool/uucppublic: man:x:13:15:man:/usr/man: games:x:12:100:games:/usr/games:
guest:x:405:100:guest:/dev/null:/dev/null nobody:x:65534:100:nobody:/dev/null: fade:x:1000:103:,,,:/home/fade:/bin/bash alias:x:7790:2108::/var/qmail/alias:/bin/true qmaild:x:7791:2108::/var/qmail:/bin/true qmaill:x:7792:2108::/var/qmail:/bin/true qmailp:x:7793:2108::/var/qmail:/bin/true qmailq:x:7794:2107::/var/qmail:/bin/true qmailr:x:7795:2107::/var/qmail:/bin/true qmails:x:7796:2107::/var/qmail:/bin/true Satu baris mencerminkan satu user, lengkap dengan atributnya. Berikut keterangan tiap field : Username:password:UserID:GroupID:keterangantambahan:homedirektori:shell Ambil contoh dari user fade : fade:x:1000:103:,,,:/home/fade:/bin/bash Keterangan dari line tersebut :
Username : fade Password :x User ID (UID) : 1000 Group ID (GID) : 103 Keterangan tambahan : Home Direktori : /home/fade Shell Default : /bin/bash
Password dalam file ini dapat dibaca oleh setiap user, tapi yang tampak hanya x saja. Password yang sebenarnya disimpan di file shadow (terenkripsi). Berikut file shadow dari password diatas : root:pCfouljTBTX7o:10995:0::::: halt:*:9797:0::::: operator:*:9797:0::::: shutdown:*:9797:0::::: sync:*:9797:0::::: bin:*:9797:0::::: ftp:*:9797:0::::: daemon:*:9797:0::::: adm:*:9797:0::::: lp:*:9797:0::::: mail:*:9797:0::::: news:*:9797:0::::: uucp:*:9797:0::::: man:*:9797:0::::: games:*:9797:0::::: guest:*:9797:0::::: nobody:*:9797:0::::: fade:OihQw6GBf4tiE:10995:0:99999:7:::
alias:!:10995:0:99999:7::: qmaild:!:10995:0:99999:7::: qmaill:!:10995:0:99999:7::: qmailp:!:10995:0:99999:7::: qmailq:!:10995:0:99999:7::: qmailr:!:10995:0:99999:7::: qmails:!:10995:0:99999:7::: Sebagai salinan dari /etc/passwd, shadow menyimpan satu record dalam satu baris yang dibagi menjadi 9 bagian (dipisahkan oleh titik dua) :
Nama user Password user Jumlah hari digantinya password sejak 1 Januari 1970 Jumlah hari sebelum user diijinkan untuk mengubah password Jumlah hari sebelum user dipaksa untuk mengganti password Jumlah hari sebelum user diingatkan untuk mengganti password Jumlah hari yang tersisa di mana user harus mengganti password sebelum user tersebut dihapus. Jumlah hari dihapusnya password sejak 1 Januari 1970 Field terakhir dipakai sendiri oleh shadow
Pro aktif Password Linux menggunakan metode enkripsi DES (Data Encription Standard) untuk passwordnya. Namun seketat apapun enkripsi yang dilakukan akan menjadi percuma jika user memilih password yang mudah ditebak. User biasanya memilih hal-hal umum sebagai password, misalnya :
Tanggal lahir (dirinya sendiri atau salah satu anggota keluarga) Nomor Mobil Nama salah satu anggota keluarga (baik ditulis langsung, atau dengan variasi huruf besar/dibalik dan sebagainya) Kata-kata yang ada di kamus, ditulis terbalik Nama favorit (pacar, artis, penyanyi, dan sebagainya)
Pilihan ini sangat riskan, sebab program semacam crack, dapat menebaknya dengan mencocokkan kamus yang ada dengan mudah. Bahkan program ini dapat diberikan pilihan kombinasi. Untuk itu perlu dibuat kebijakan yang baik untuk password. Network Access Control Linux dapat memilih komputer mana saja yang dapat mengaksesnya. Pembatasan antar jaringan ini dinamakan Network Access Control. Alat pengontrolan akses jaringan ini dinamakan firewall.
Secara umum, firewall biasanya menjalankan fungsi:
Analisa dan filter paket Data yang dikomunikasikan lewat protokol di internet, dibagi atas paket-paket. Firewall dapat menganalisa paket ini, kemudian memperlakukannya sesuai kondisi tertentu. Misal, jika ada paket a maka akan dilakukan b. Untuk filter paket, dapat dilakukan di Linux tanpa program tambahan.
Bloking isi dan protokol Firewall dapat melakukan bloking terhadap isi paket, misalnya berisi applet Jave, ActiveX, VBScript, Cookie.
Autentikasi koneksi dan enkripsi Firewall umumnya memiliki kemampuan untuk menjalankan enkripsi dalam autentikasi identitas user, integritas dari satu session, dan melapisi transfer data dari intipan pihak lain. Enkripsi yang dimaksud termasuk DES, Triple DES, SSL, IPSEC, SHA, MD5, BlowFish, IDEA dan sebagainya.
Tipe firewall : 1. Network-Level Firewall Filter paket dilakukan biasanya dijalankan di router. Filter ini dapat dijalankan dengan memberlakukan rule set tertentu. Contoh tipikal dari Network-Lever Firewall adalah TCP Wrappers. Filter paket di Linux akan dibahas pada bagian selanjutnya. 2. Application-Proxy Firewall/Application Gateways Berbeda dengan firewall sebelumnya yang memfilter dan bloking paket, ApplicationProxy firewall meneruskan paket yang ada ke host internal yang dituju. Firewall ini bisa dikatakan sebagai jembatan. Application-Proxy Firewall biasanya berupa program khusus. Filter Paket di Linux Program paling populer untuk filter paket (dan dimasukkan hampir kesemua distribusi Linux) adalah TCP Wrappers, dibuat oleh WIETSE VENEMA. Aplikasinya berada di /usr/sbin/tcpd Untuk melihat bagaimana TCP umum : ftp stream tcp nowait root telnet stream tcp nowait root shell stream tcp nowait root login stream tcp nowait root pop3 stream tcp nowait root
Wrappers ini bekerja, lihat sampel /etc/inetd.conf secara /usr/sbin/ftpd /usr/sbin/telnetd /usr/sbin/rshd /usr/sbin/rlogind /usr/sbin/pop3d
Ambil contoh salah satu, yakni telnetd :
telnet stream tcp
nowait root /usr/sbin/telnetd
Penjelasan dari entri telnet tersebut adalah :
Service yang dijalankan adalah telnet Tipe soket STREAM Protokol yang digunakan TCP Nowait berarti bahwa inetd harus memanggil program telnetd pada saat dibutuhkan. Root berarti bahwa telnetd harus dijalankan dengan user root /usr/sbin/telnetd menunjukkan letak program telnetd.
Jika ada permintaan telnet dari klien, maka inetd akan memanggil program telnetd untuk melayaninya. Dengan demikian, server akan dijalankan oleh satu buah daemon, yakni inetd, jika ada permintaan. Masalahnya adalah, program daemon tidak bisa menyeleksi tiap koneksi yang masuk. Untuk itu dijalankan TCP Wrappers. Catatan : Binary Slackware, SuSE dan Wrapper begitu selesai instalasi.
RedHat
secara
otomatis
sudah
menjalankan TCP
Dengan TCP Wrapper, tcpd akan memotong permintaan inetd kepada semua service. Dalam contoh di atas, saat ada user menjalankan telnet di port 25, inetd akan memanggil telnetd. Tapi sebelum ke telnetd, dipotong dulu oleh tcpd, dicocokkan dengan beberapa rule set yang telah diatur. Jika memenuhi syarat, akan diteruskan ke telnetd. Jika tidak, permintaan diputus. Enkripsi Enkripsi adalah proses mengacak data sehingga tidak dapat dibaca oleh pihak lain. Pada kebanyakan proses enkripsi, Anda harus menyertakan kunci sehingga data yang dienkripsi dapat didekripsikan kembali. Ilmu yang mempelajari teknik enkripsi disebut kriptografi. Gambaran sederhana tentang enkripsi, misalnya mengganti huruf a dengan n, b dengan m dan seterusnya. Model penggantian huruf sebagai bentuk enkripsi sederhana ini sekarang tidak dipergunakan secara serius dalam penyembunyian data. ROT-13 adalah program yang masih suka dipergunakan. Intinya adalah mengubah huruf menjadi 23 huruf didepannya. Misalnya b menjadi o dan seterusnya. Pembahasan enkripsi akan terfokus pada enkripsi password dan enkripsi komunikasi data. Enkripsi Password Password di Linux dibuat dengan menggunakan metode tingkat lanjut dalam enkripsi, yakni DES (Data Encryption Standard). Menurut Federal Processing Standards Publication 46-2, DES didefinisikan sebagai ; Sebuah algoritma matematika untuk menjalankan enkripsi (enchypering) dan dekripsi (dechypering) informasi koding binary. Enkripsi mengkonversikan data menjadi bentuk yang sulit ditebak, disebut chyper. Proses dekripsi cypher mengkonversikan data kedalam bentuk aslinya, disebut plain-text. (terjemahan bebas) Enkripsi dan dekripsi dilakukan tergantung pada kunci (key). Kunci ini dibuat berdasarkan masukan dari user pada saat mengetikkan password terdiri dari binary 64 digit. Jika password yang diketikkan kurang dari binary 64 digit, maka DES akan menambahkannya secara
otomatis. Dari binary 64 digit, 56 dipergunakan untuk enkripsi, dan 8 dipergunakan untuk cek kesalahan (error checking). Saat seorang penyusup (atau siapa saja) akan melakukan crack terhadap password di Linux, mereka biasanya mempergunakan kamus (dictionary attack). Saat melakukan crack, penyusup akan mengambil kata-kata dari kamus, kemudian mengenkripsinya dengan DES. Dalam proses ini, kata demi kata diberikan secara terus menerus, kemudian diproses sebagaimana Linux memproses passwordnya. Hasilnya akan dicocokkan dengan daftar yang ada di /etc/passwd. Jika cocok, program cracker akan memberitahukan kepada penyusup, bahwa password sudah berhasil ditemukan. Enkripsi komunikasi data Di dalam Internet (atau intranet) data yang dikirimkan dari satu komputer ke komputer lainnya, pasti melewati komputer-komputer lain. Ambil contoh, pada saat Anda memasukkan password untuk mengecek account email di hotmail, data akan dikirim dalam bentuk teks biasa melewati beberapa host sebelum akhirnya diterima oleh hotmail. Pernahkah kita berfikir bahwa salah satu dari komputer yang dilewati oleh data kita dipasangi program sniffer? Sniffer adalah program yang membaca dan menganalisa setiap protokol yang melewati mesin di mana program tersebut diinstal. Secara default, sebuah komputer dalam jaringan(workstation) hanya mendengarkan dan merespon paket-paket yang dikirimkan kepada mereka. Namun demikian, kartu jaringan (network card) dapat diset oleh beberapa program tertentu, sehingga dapat memonitor dan menangkap semua lalu lintas jaringan yang lewat tanpa peduli kepada siapa paket tersebut dikirimkan. Secure Shell (SSH) Menurut RFC (Request For Comment) dari Secure Shell (SSH): Secure Shell adalah program yang melakukan loging terhadap komputer lain dalam jaringan, mengeksekusi perintah lewat mesin secara remote, dan memindahkan file dari satu mesin ke mesin lainnya. Algoritma enkripsi yang didukung oleh SSH di antaranya BlowFish (BRUCE SCHNEIER), Triple DES (Pengembangan dari DES oleh IBM), IDEA (The International Data Encryption Algorithm), dan RSA (The Rivest-ShamirAdelman). Dengan berbagai metode enkripsi yang didukung oleh SSH, Anda dapat menggantinya secara cepat jika salah satu algoritma yang Anda terapkan mengalami gangguan.
SSL (Secure Socket Layer) SSL merupakan salah satu metode enkripsi dalam komunikasi data yang dibuat oleh Netscape Communication Corporation. SSL adalah Protokol berlapis. Dalam tiap lapisannya, sebuah data terdiri dari panjang, deskripsi dan isi. SSL mengambil data untuk dikirimkan, dipecahkan kedalam blok-blok yang teratur, kemudian dikompres jika perlu, menerapkan MAC, dienkripsi, dan hasilnya dikirimkan. Di tempat tujuan, data didekripsi, verifikasi,
dekompres, dan disusun kembali. Hasilnya dikirimkan ke klien di atasnya. (terjemahan bebas). SSL hanya mengenkripsikan data yang dikirim lewat http. Bagaimana SSL berjalan dapat digambarkan sebagai berikut :
Pada saat koneksi mulai berjalan, klien dan server membuat dan mempertukarkan kunci rahasia, yang dipergunakan untuk mengenkripsi data yang akan dikomunikasikan. Meskipun sesi antara klien dan server diintip pihak lain, namun data yang terlihat sulit untuk dibaca karena sudah dienkripsi. SSL mendukung kriptografi public key, sehingga server dapat melakukan autentikasi dengan metode yang sudah dikenal umum seperti RSA dan Digital Signature Standard (DSS). SSL dapat melakukan verifikasi integritas sesi yang sedang berjalan dengan menggunakan algoritma digest seperti MD5 dan SHA. Hal ini menghindarkan pembajakan suatu sesi.
Logging Linux memiliki fasilitas logging yang sangat komprehensif. Untuk yang baru saja bermigrasi ke Linux, mungkin belum terbiasa memanfaatkan logging. Pada sistem operasi non UNIX, kebanyakan meminimalkan logging, bahkan tidak ada sama sekali. Logging adalah prosedur di mana sebuah sistem operasi atau aplikasi merekam setiap kejadian dan menyimpan rekaman tersebut untuk dapat dianalisa di kemudian hari. Kejadian yang direkam ini bisa saja menyangkut sistem operasi, atau khusus program-program tertentu saja. Semua file log di Linux disimpan dalam direktori /var/log. Beberapa program/file log yang penting adalah : lastlog Berisi rekaman kapan user login terakhir kali. Yang ditampilkan adalah nama login, port dan waktu login terakhir kali. Untuk memanggilnya cukup ketikkan lastlog. access_log Berisi rekaman untuk layanan http (HyperText Transfer Protocol) atau layanan web server. Access_log biasanya terdiri dari Nomor IP dari pengakses, jam dan tanggal akses, printah atau permintaan, dan kode status. # less /var/log/ access_log error_log Berisi rekaman pesan kesalahan atas service http atau web server. Error_log terdiri dari jam dan waktu, tipe kesalahan, alasan kesalahan, layanan, dan perintah yang dijalankan berikutnya (kadang-kadang). # less /var/log/error_log
messages Rekaman kejadian sistem dan kernel, ditangani oleh dua daemon :
syslogd merekam semua program yang dijalankan. Untuk mengkonfigurasikannya dapat mempergunakan syslog.conf. klogd, menerima dan merekam pesan kernel
File messages dapat dilihat di /var/log/messages. Berikut contohnya : # less /var/log/messages Deteksi Penyusupan (Intrusion Detection) Deteksi penyusupan adalah aktivitas untuk mendeteksi penyusupan secara cepat dengan menggunakan program khusus yang otomatis. Program yang dipergunakan biasanya disebut sebagai Intrusion Detection System (IDS). Tipe dasar dari IDS adalah:
Rule-based systems - berdasarkan atas database dari tanda penyusupan atau serangan yang telah dikenal. Jika IDS mencatat lalulintas yang sesuai dengan database yang ada, maka langsung dikategorikan sebagai penyusupan. Adaptive systems - mempergunakan metode yang lebih canggih. Tidak hanya berdasarkan database yang ada, tapi juga membuka kemungkinan untuk mendeteksi terhadap bentuk bentuk penyusupan yang baru.
Bentuk yang sering dipergunakan untuk komputer secara umum adalah rule-based systems. Pendekatan yang dipergunakan dalam rule-based systems ada dua, yakni pendekatan pencegahan (preemptory) dan pendekatan reaksi (reactionary). Perbedaannya hanya masalah waktu saja. Pendekatan pencegahan, program pendeteksi penyusupan akan memperhatikan semua lalu lintas jaringan. Jika ditemukan paket yang mencurigakan, maka program akan melakukan tindakan yang perlu. Pendekatan reaksi, program pendeteksi penyusupan hanya mengamati file log. Jika ditemukan paket yang mencurigakan, program juga akan melakukan tindakan yang perlu. Beberapa contoh program IDS di antaranya: 1. chkwtmp Program yang melakukan pengecekan terhadap entri kosong. Dalam arti, wtmp mencatat sesuatu tapi isinya kosong. Program 2. tcplogd Program yang mendeteksi stealth scan. Stealth scan adalah scaning yang dilakukan tanpa harus membuat sebuah sesi tcp. Sebuah koneksi tcp dapat terbentuk jika klien mengirimkan paket, dan server mengirimkan kembali paketnya dengan urutan tertentu, secara terus menerus sehingga sesi tcp dapat berjalan. Stealth
scan memutuskan koneksi tcp sebelum klien menerima kembali jawaban dari server. Scaning model ini biasanya tidak terdeteksi oleh log umum di Linux. 3. hostsentry Program yang mendeteksi login anomali. Anomali disini termasuk perilaku aneh (bizzare behaviour), anomali waktu (time anomalies), dan anomali lokal (locale anomalies). Ringkasan Dari sini, kita sudah mulai mempunyai kepedulian yang cukup terhadap keamanan jaringan dan sistem operasi yang kita pergunakan. Secara singkat, sudah kita pelajari bersama bagaimana arsitektur keamanan di Linux. Jika keamanan sudah diset secara maksimal menurut perspektif kita, maka yang diperlukan hanyalah kerajinan untuk membaca file-file log yang dibuat oleh Linux. Meskipun bisa dibilang bahwa jaringan tidak mempunyai datadata keamanan yang penting, tapi kepedulian terhadap masalah keamanan ini akan memudahkan pekerjaan di kemudian hari. Dengan pesatnya perkembangan sistem informasi, maka perlu bagi para pemelihara jaringan untuk tetap terlibat dalam isu-isu terakhir dalam bidang teknologi. Ketinggalan informasi terhadap isu bug, virus, dan isu keamanan lainnya, akan membuat jaringan yang dirawat menjadi rawan akan penyusupan
TUGAS MATA KULIAH KEAMANAN KOMPUTER KEAMANAN SISTEM OPERASI LINUX
DISUSUN OLEH : ARISTA RAMADHAN (10109305) STEFANUS DWI PUTRA (11108869) STEPHANUS RIAN (10109175) SURYANA SAPUTRA (13109415) VITTO SANDRO (10109633) YOKE SIMEON (13109257)
FAKULTAS ILMU KOMPUTER SISTEM INFORMASI UNIVERSITAS GUNADARMA 2012/2013