Mengamankan Server Linux Menggunakan LIDS (Linux Intrusion Detection System)
Oleh: Irvan S,Kom http://irvan.or.id
[email protected]
Mengamankan Server Linux Menggunakan LIDS (Linux Intrusion Detection System)
1. Pengantar Keamanan pada internet hingga saat ini masih merupakan suatu hal yang sangat rentan. Berbagai cara, bermacam teknik untuk melakukan penyusupan terhadap sebuah system melalui jaringan internet cepat sekali ditemukan oleh berbagai kalangan. Seperti yang diketahui bahwa hacker memiliki berbagai cara untuk menemukan sebuah celah pada sebuah system. Tambal sulam mungkin merupakan kata yang tepat untuk menggambarkan suasana keamanan pada komputer, jaringan komputer atau pun internet. Para hacker berlomba-lomba mencari celah pada sebuah system, sementara para vendor pembuat system tersebut berlomba-lomba untuk menutup celah tersebut. Bak sebuah permainan yang menyenangkan atau bahkan merupakan kebanggaan tersendiri bagi seorang yang dapat menemukan celah keamanan pada sebuah system dan mempublikasikannya di internet untuk keperluan pendidikan atau pun dengan maksud agar vendor pembuat system tersebut dapat segera menutup kembali. Itu bagi mereka yang mau berbagi ilmu demi kebaikan, namun bagaimana jadinya bila mereka yang menemukan celah keamanan tersebut tidak sebaik yang kita pikirkan? Ia tidak mau mempublikasikan penemuannya kepada publik atau pun kepada vendor yang berkaitan? Apa mungkin hal seperti ini dapat terjadi? Sangat memungkinkan sekali! Hacker, sebuah kata yang mungkin sangat menyeramkan di telinga anda. Jika anda mendengar kata hacker saya berani bertaruh bahwa yang ada pada benak anda adalah seorang penjahat komputer, tukang bobol system, penyusup server dan lain sebagainya. Hal ini sangat dimaklumi karena pandangan kita sebagai orang awam selalu di suguhkan dengan sajian Hollywood yang memberikan gambaran mengenai hacker seperti itu. Saya pribadi tidak berani memberikan definisi yang sangat jelas mengenai hacker. Bagi saya hacker itu adalah seorang penggila komputer yang sangat pintar, namun tidak menutup kemungkinan jika ia menjadi seorang yang jahat, karena manusia dapat berbuat jahat atau pun baik. Jika pada satu sisi terdapat hacker yang selalu mencari tahu kelemahan sebuah system, anda juga perlu tahu bahwa banyak hacker yang berusaha mencari tahu dan mengembangkan berbagai cara untuk melindungi sebuah system dari serangan-serangan yang sangat tidak diinginkan. Seperti halnya hacker yang mengembangkan LIDS untuk mengamankan Sistem Operasi Linux.
2. Sistem Operasi GNU/Linux Kata Linux atau GNU/Linux saat ini sudah tidak asing lagi ditelinga kita. Sudah bukan suatu hal yang aneh lagi mendengar kata Linux saat ini. GNU/Linux atau yang lebih sering disebut dengan Linux merupakan sebuah Sistem Operasi yang saat ini sedang naik daun.Kepopulerannya saat ini merupakan ancaman yang serius bagi perusahaan software raksasa sekelas Microsoft. Linux adalah sebuah system operasi yang diklaim merupakan tiruan dari Unix merupakan sebuah system operasi yang dibuat oleh seorang hacker berasal dari Finlandia bernama Linus Torvalds. Sistem operasi Linux itu sendiri terdiri dari sebuah kernel yang dibungkus dengan shell, serta aplikasi-aplikasi lainnya dikemas sedimikian rupa sehingga menjadi sebuah distribusi system operasi. Kepopuleran dan perkembangan Linux yang melesat dengan cepat salah satunya disebabkan karena Linux beserta aplikasi-aplikasi yang mendukungnya berada di bawah bendera Open Source dan Free Software. Keterbukaan atas source code linux serta bebasnya biaya pendistribusian ulang atau penggandaan linux memiliki daya tarik tersendiri bagi para penggila komputer. Source code linux yang tersedia dengan bebas di internet, membuat para hacker dengan bebas memodifikasi, menambahkan fitur, serta mengkustomasikan sesuai kebutuhan mereka. Dengan demikian bermunculan berbagai distribusi system operasi linux.
3. Kernel Linux Berbicara mengenai sebuah system operasi tak lepas dari kernel. Kernel merupakan inti dari sebuah system operasi. Kernel lah yang menjembatani interaksi manusia, aplikasi dengan perangkat-perangkat yang ada pada komputer. Dan jika berbicara mengenai system operasi linux maka kita pun akan berbicara mengenai kernel linux itu pula. Kernel itu sendiri hanya lah sekumpulan baris-baris program. Jika digambarkan dalam sebuah gambar maka kernel dapat digambarkan seperti berikut
Aplikasi
Shell
Hardware
Kernel
Dari gambar di atas bias dilihat bahwa software dan hardware pada linux atau pun OS lainnya tidak berkomunikasi secara langsung. Komunikasi antara pengguna dan hardware terjadi pada saat kita mengetikkan suatu perintah atau menjalankan sebuah aplikasi, dimana perintah atau aplikasi tersebut dikirimkan kepada kernel dan kernel akan menterjemahkannya kepada hardware.
4. Shell pada Linux Perhatikan kembali gambar di atas terlihat jelas bahwa shell merupakan jembatan antara aplikasi dengan kernel walau terkadang aplikasi dapat langsung berhubungan dengan kernel. Shell bertugas meneruskan perintah dari user ke OS yang dalam hal ini adalah kernel. Bila anda telah akrab dengan windows anda pasti mengenal DOS prompt, seperti itu lah gambaran yang sangat mudah untuk menjelaskan mengenai shell, meski shell memiliki kelebihan daripada hanya sekedar command prompt.
5. Patch Kernel Salah satu keunggulan dari keterbukaan source code pada linux terutama kernel adalah memudahkan para programmer untuk memodifikasi kernel sesuai dengan kebutuhan. Patch (Tambalan) adalah cara yang sering digunakan oleh para programmer, developer ataupun para hacker yang ingin menambahkan sebuah fungsi tertentu pada
kernel Linux. Patching (Penambalan) sering juga dilakukan untuk menutup sebuah celah yang terdapat pada kernel. Terdapat berbagai jenis patch yang bertebaran di internet baik dari para developer resmi kernel atau pun pihak ketiga yang ingin membuat linux lebih optimal pada fungsi tertentu. Patch pada linux dapat dikelompokkan menjadi beberapa bagian diantaranya: Patch untuk kinerja kernel, patch untuk dukungan hardware, patch untuk dukungan aplikasi serta patch untuk keamanan (security patch). Pada pertemuan kali ini saya akan mencoba untuk mengulas bagian patch untuk keamanan (security patch) pada kernel. Seperti halnya pengelompokkan patch kernel, patch keamanan (security patch) ini pun banyak jenis, atau lebih tepat dikatakan banyak vendor yang berusaha untuk membuatnya. Ada pun security patch yang terdapat di internet diantaranya: 1. Patch dari GRSECURITY (grsec patch) dapat di lihat pada situs resminya http://www.grsecurity.net 2. Patch dari OPENWALL (openwall patch) dapat dilihat pada situs resminya http://www.openwall.com 3. Patch dari NSA yang bernama SELINUX (Security Enchaned Linux) dapat di lihat pada situs resminya 4. Patch dari LIDS (Linux Intrusion Detection System) dapat dilihat pada situs resminya http://www.lids.org 5. dll Patch keamanan ini cukup banyak, namun untuk pertemuan kali ini saya akan mencoba untuk mengulas patch yang bernama LIDS (Linux Intrusion Detection System)
LIDS (Linux Intrusion Detection System) 1. Apa itu LIDS? Ketika pertama kali mendengar nama LIDS (Linux Intrusion Detection System) yang langsung terbayang di benak saya adalah sebuah aplikasi yang berfungsi sebagai sistem pendeteksi penyusup pada network semacam SNORT, namun saya keliru besar, karena ternyata yang dimaksud itu adalah NIDS (Network Intrusion Detection System). Tapi lain halnya dengan LIDS, LIDS adalah sebuah patch dan tool admin untuk mengoptimalkan fungsi keamanan pada kernel Linux. LIDS merupakan sebuah implementasi dari reference monitor pada kernel.LIDS juga merupakan sebuah Mandatory Access control pada kernel.
2. Mengapa Menggunakan LIDS?
Mungkin pertanyaan ini akan kerap kali muncul, “Mengapa menggunakan LIDS?” sementara banyak security patch yang dibuat oleh berbagai pihak. Jawabannya cukup sederhana, “Sesuai dengan kebutuhan”, atau lebih cocok dengan istilah “Use the right tools for the right jobs”. Masing-masing patch yang dikeluarkan tentunya memiliki kelebihan tersendiri, dan itu semua kembali kepada anda, patch mana yang paling cocok untuk keperluan anda. Namun yang perlu diperhatikan adalah beberapa permasalahan yang ada pada system operasi Linux secara umum, yaitu: - File system tidak memiliki proteksi atau pengamanan. - Proses yang berjalan tidak memiliki proteksi atau pengamanan - Administrasi terhadap system tidak terlindungi - Super User (root) meiliki kekuasaan penuh yang dapat melanggar hak - Model dari Access Control List (DAC) pada Linux belum lah cukup Begitulah beberapa permasalah umum yang terdapat pada system operasi linux. Tapi isu yang paling besar dari permasalahan di atas adalah account “Maha Dewa” root. Permasalahan ini pun mungkin terdapat pula pada system *NIX yang lainnya. Jika sebuah proses atau user memiliki privileges root, maka tidak ada sedikit pun alasan yang dapat mencegah proses atau user tersebut untuk menghancurkan system. Tidak heran jika account atau privileges root sangat diminati oleh para intruder. Hal ini sangat membuat mereka yang bertugas sebagai sysadmin harus menderita sakit kepala, pusing tujuh keliling. Permasalah ini lah yang ingin ditangani oleh LIDS dengan mengimplementasikan Access Control Lists (ACLs) mencegah mereka yang ingin merusak system, meski mereka memiliki privileges root sekali pun. Dengan ACLs LIDS ini mampu melakukan proteksi terhadap file dan proses.
3. Fitur-fitur pada LIDS Fitur yang ditawarkan oleh LIDS cukup banyak dan cukup untuk melindungi mesin Linux anda dari tangan-tangan jahil para intruder. Fitur-fitur tersebut adalah: - Perlindungan atau proteksi terhadap file dan direktori dari apa pun termasuk root pun tidak dapat melakukan perubahan dari file atau direktori yang diproteksi. Bahkan sebuah file pun dapan disembunyikan (hidden) - Perlindungan atau proteksi terhadap proses dari apa pun termasuk root pun tidak dapat mematikan proses yang diproteksi. Bahkan sebuah proses dapat disembunyikan (hidden) - Access Control Lists yang lebih baik. - Dapat menggunakan dan menambahkan kapabilitas untuk mengontrol seluruh system. - Peringatan terhadap keamanan langsung dari kernel. - Pendeteksi port scanner pada kernel - Mendukung framework LSM (Linux Security Model) pada kernel2.5.x dan 2.6.x - Pembatasan (restriction) terhadap akses proses jaringan.
4. Kekurangan LIDS Jika sebuah system memiliki kelebihan tentu ia juga akan memiliki kekurangan, demikian juga dengan LIDS. Beberapa kekurangan LIDS yang saya amati diantaranya: - Setiap file dan proses yang berada pada system linux harus memiliki ACLs, hal ini tentu akan cukup merepotkan. Namun hal ini dapat dimaklumi karena keamanan berbanding terbalik dengan kenyamanan. - Kesalahan dalam mendefinisikan ACLs akan mengunci kita pada system sehingga tidak dapat berbuat apa pun. - Karena setiap file harus memiliki ACLs yang jelas, tak terkecuali untuk file yang berisi scripting. Untuk hal ini ACLs juga harus diturunkan terhadap file lain yang akan dipanggil oleh skrip tersebut. - LIDS belum mampu untuk mendeteksi keanehan-keanehan atau penyerangan pada level aplikasi, contohnya seperti penyerangan terhadap web melalui protocol http, sql injection.
5. Implementasi LIDS Di atas telah dibahas mengenai kelebihan, kekurangan serta fitur-fitur yang ditawarkan oleh LIDS, namun bagaimana implementasinya pada dunia nyata? Bagaimana LIDS dapat membantu anda mengamankan mesin Linux anda? Berikut implementasi LIDS dalam dunia nyata untuk mengamankan mesin Linux anda. Beberapa metode penyerangan secara remote (jarak jauh) yang umum dilakukan oleh para intruder, dan bagaimana LIDS mencegahnya: a. Intruder melakukan port scanning
Port Scanning Oleh intruder
LIDS Mendeteksi PortScanning
Menutup semua port
Email alert kepada admin
b. Remote exploit untuk mendapatkan privilege root
Intruder melakukan fingerprinting
Ditemukan aplikasi yang vulnerable
Intruder melakukan Remote exploit
LIDS melaporkan log tersebut melalui email
Tanpa disadari LIDS mencatat anomaly pada file log
Intruder sukses mendapatkan account root dari exploit
Intruder mulai menjelajahi system
ACLs LIDS menyatakan semua file penting hidden
Intruder tidak dapat melakukan apa pun
c. Remote exploit untuk melakukan port binding / connect back
Intruder melakukan fingerprinting
Ditemukan aplikasi yang vulnerable
Remote exploit dilakukan oleh intruder
LIDS melaporkan log tersebut melalui email
Tanpa disadari LIDS mencatat anomaly pada file log
Intruder sukses mendapatkan account root dari exploit
Intruder mulai menjelajahi system
Intruder mendapatkan gcc dan wget
System mengijinkan user untuk mendownload
LIDS mendeteksi dan mencocokan dengan ACLs
Backdoor dijalankan untuk membuka port baru
Backdoor didownload dan dikompile Intruder
Tidak ada ACLs untuk membuka port baru
Backdoor dimatikan oleh LIDS
Berikut meupakan salah satu dari metode penyerangan secara local yang umum dilakukan oleh para intruder dan bagaimana LIDS mencegahnya a. Expolit lokal terhadap sebuah daemon yang berjalan
Intruder melakukan login secara sah sebagai user.
Intruder berusaha melihat proses yang berjalan
Beberapa proses disembunyikan oleh LIDS
Port terbuka tapi tidak ada proses yang berjalan?
Intruder mencari tahu port yang terbuka
Intruder tidak dapat menemukan daemon target
Intruder menebak daemon yang berjalan
Intruder melakukan exploit secara random
Dari sekian exploit terdapat satu yang cocok
Expolit gagal
ACLs mengatakan bahwa daemon read only
LIDS mendeteksi dan mencocokan dengan ACLs
Di atas hanya lah sebagian kecil teknik yang dilakukan oleh para intruder untuk mendapatkan akses root terhadap system, serta bagaimana LIDS mempersulit intruder dalam mendapatkan akses terhadap root atau bahkan akses penuh terhadap system. Masih banyak teknik yang digunakan oleh para intruder untuk menguasai system, di sini lah LIDS bertugas untuk mempersulit mereka agar tidak menguasai bahkan merusak system. Namun sekali pun anda menggunakan patch pengamanan berlapis tujuh sekelas LIDS, tapi jika anda malas mengikuti perkembangan dan memperbaharui system anda semua ini akan sia-sia.
Instalasi dan konfigurasi LIDS Pada tulisan kali ini penulis berasumsi bahwa pembaca memiliki pengetahuan dasar tentang kernel serta cara melakukan kompilasi kernel. Distribusi linux yang digunakan pada tulisan ini adalah RedHat Linux 9.0, terinstalasi lengkap dengan paket development. Kebutuhan awal: 1. Kernel versi 2.4.29 dapat diambil dari situs resmi kernel http://www.kernel.org atau mirror terdekat http://kambing.vlsm.org/kernel-linux 2. LIDS versi 1.2.2 untuk kernel 2.4.29 bernama linux-2.4.29-lids1.2.2-ow1.diff.bz2, dapat diambil dari http://www.lids.org atau http://irvan.or.id/download.php 3. LIDS Tool versi 0.5.6 dapat diambil dari http://lids.planetmirror.com/download/lidstools/lidstools-0.5.6.tar.gz , atau dari mirror terdekat http://irvan.or.id/download.php 4. Paket development pada linux sperti gcc, gnumake, ncurses dll.
Tahapan Instalasi dan Konfigurasi LIDS Baik lah saat ini kita akan masuk kepada tahapan Instalasi dan Konfigurasi LIDS untuk melindungi mesin dari tangan intruder, dengan paket-paket yang telah dikumpulkan. Tahapan ini dibagi lagi menjadi beberapa langkah, yaitu: Patching dan kompilasi kernel linux dengan lids Instalasi lids tool Konfigurasi ACLs pada LIDS Mari kita mulai tahapan-tahapan tersebut.
1. Patching dan Kompilasi Kernel Linux dengan LIDS Pertama-tama agar semua paket tersusun rapih, buat direktori yang bernama lids dibawah direktori /var/tmp
#mkdir -p /var/tmp/lids
Lalu salin semua paket yang dibutuh kan ke dalam direktori /var/tmp/lids kemudian pindah ke direktori /usr/src #cd /usr/src
Ekstrak paket kernel linux-2.4.29.tar.bz2 #tar -jxvf /var/tmp/lids/linux-2.4.29.tar.bz2
Buatkan symbolic link #ln -s linux-2.4.29 linux
Salin dan ekstrak linux-2.4.29-lids1.2.2-ow1.diff.bz2 #cp /var/tmp/lids/linux-2.4.29-lids1.2.2-ow1.diff.bz2 #bunzip2 linux-2.4.29-lids1.2.2-ow1.diff.bz2
Patch kernel linux dengan lids #cd linux #patch -p1 < ../linux-2.4.29-lids1.2.2-ow1.diff
Konfigurasikan kernel #make mrproper #make menuconfig
Dari perintah make menuconfig akan menghasilkan tampilan konfigurasi seperti gambar berikut:
Pada menu pertama terdapat pilihan Code maturity level options masuk pada menu tersebut dan aktifkan pilihan Prompt for incomplete driver... Hal ini sangat dianjurkan pada HOWTO dari situs yang bersangkutan sebelum kita mengaktifkan LIDS. Ketika kernel telah di-patch, maka akan tampil satu menu yaitu menu Linux Intrusion Detection System
Untuk dapat menggunakan LIDS seperti yang ditunjukan pada HOWTO dari situs yang terkait, anda harus mengaktifkan beberapa pilihan pada menu Linux Intrusion Detection System. Untuk kebutuhan awal hanya dengan konfigurasi dasar, sudah sangat cukup untuk melindungi system anda dari tangan-tangan intruder. Baik lah, masuki menu Linux Intrusion Detection System dan aktifkan pilihan yang ada seperti berikut: [*] Linux Intrusion Detection System support (EXPERIMENTAL) --- LIDS features (512) Maximum protected objects to manage (512) Maximum ACL subjects to manage (512) Maximum ACL objects to manage [ ] Hang up console when raising a security alert [*] Security alert when execing unprotected programs before sealing LIDS [ ] Do not execute unprotected programs before sealing LIDS [*] Attempt not to flood logs (60) Authorised time between two identic logs (seconds) [*] Allow switching LIDS protections/features [*] Allow switching LIDS/LIDS_GLOBAL [*] Implicitly protect LIDS admin passwd [ ] Restrict mode switching to specified terminals (3) Number of attempts to submit password (3) Time to wait after a fail (seconds) [ ] Allow any program to switch LIDS protections [*] Allow reloading config. file [*] Port Scanner Detector in kernel [*] Send security alerts through network
[*] Hide klids kernel thread (3) Number of connection tries before giving up [*] Attempt not to flood logs (60) Authorised time between two identic logs (seconds) [*] Allow switching LIDS protections/features [*] Allow switching LIDS/LIDS_GLOBAL [*] Implicitly protect LIDS admin passwd [ ] Restrict mode switching to specified terminals (3) Number of attempts to submit password (3) Time to wait after a fail (seconds) [ ] Allow any program to switch LIDS protections [*] Allow reloading config. file [*] Port Scanner Detector in kernel [*] Send security alerts through network [*] Hide klids kernel thread (3) Number of connection tries before giving up (30) Sleep time after a failed connection (16) Message queue size [*] Enable security network [*] Enable NETFILTER MARK [*] Enable Trusted Path Execution (TPE) mode feature [ ] Enable Trusted Domain Enforcement (TDE) feature [ ] Enable CAP_LIDS_SANDBOX_EFF_SET [ ] LIDS Debug
Keluar dan simpan konfigurasi tersebut serta lakukan kompilasi kernel linux #make dep clean module module_install bzImage
Salin kernel dan System.map yang baru ke direktori /boot #cp /usr/src/linux/arch/i368/boot/bzImage /boot/vmlinuz-2.4.29 #cp /usr/src/linux/System.map /boot/System.map-2.4.29
Edit file konfigurasi boot loader anda, sesuaikan partisi harddisk anda Untuk lilo, pada /etc/lilo.conf tambahkan baris kernel baru sebagai berikut: image=/boot/vmlinuz-2.4.27 label=linux read-only root=/dev/hda5
Simpan konfigurasi tersebut lalu keluar dari editor dan ketik: #lilo
Untuk grub, tambahkan baris berikut pada /etc/grub.conf:
title Red Hat Linux, LIDS Kernel root (hd0,4) kernel /boot/vmlinuz-2.4.29 root=/dev/hda5 ro
Sekali lagi, sesuaikan posisi partisi root sesuai dengan partisi harddisk anda
2. Instalasi lidstools Selanjutnya kita akan melakukan instalasi paket lidstools. Lidstools adalah paket yang berisi tools administrasi LIDS digunakan untuk membuat ACLs. Berikut langkah-langkah dalam menginstall lidstools. Pindah direktori ke /usr/src dan ekstrak paket source lidstools #cd /usr/src #tar -zxvf /var/tmp/lids/lidstools-0.5.6.tar.gz
Pindah ke direktori source code lidstools #cd lidstools-0.5.6
Konfigurasi, compile dan install lidstools dengan langkah berikut: #./configure KERNEL_DIR=/usr/src/linux #make #make install
Isi kan password jika ditanyakan. Selanjutnya edit file /etc/lids/lids.ini, ubah paramater ACL_DISCOVERY=0
menjadi ACL_DISCOVERY=1
Hal ini dimaksudkan untuk membantu anda dalam membuat ACLs. Selanjutnya simpan konfigurasi dan restart mesin anda dengan kernel yang baru
3. Konfigurasi ACLs LIDS Jika tidak menemui kendala pada langkah pertama dan kedua, anda akan berada pada shell dengan kernel yang baru. Langkah berikutnya adalah langkah yang sangat penting, yaitu mengkonfigurasikan ACLs LIDS pada sistem. Bagian ini lah yang menentukan
dalam melindungi sistem anda. Sebelumnya mari kita bahas terlebih dahulu langkah yang kita lakukan sebelumnya. Pada bagian pertama kita melakukan patching terhadapa kernel dengan menggunakan LIDS dan mengaktifkan fungsi-fungsi keamanan pada saat konfigurasi kernel. Lalu pada langkah kedua yang kita lakukan adalah menginstall lidstools, yaitu tools yang digunakan untuk melakukan administrasi terhadap lids serta mengatur ACLs pada LIDS. lidstools terdiri dari 2 aplikasi yaitu lidsadm dan lidsconf. Lidsadm digunakan untuk melakukan administrasi kemampuan (capability) dari LIDS, sedangkan lidsconf digunakan untuk membuat ACLs pada sistem. File-file konfigurasi berada pada direktori /etc/lids. Bagi anda yang telah familiar dengan sintaks iptables maka anda tidak akan kesulitan untuk membuat ACLs LIDS. Pada LIDS yang menjadi subjek adalah semua program yang bisa berjalan pada linux seperti binary file, shell script, sedangkan yang menjadi objek adalah apa saja yang ingin diakses oleh subjek termasuk file, direktori, capability dan lainnya. Berikut contoh penulisan sintaks dari lidadm dan lidsconf: Untuk perintah lidsadm: #lidsadm -[S|I] -- [+|-][LIDS_FLAG] [...] #lidsadm -h
LIDS_FLAG pada perintah pertama merupakan capability yang dapat dilihat pada bagian appendix atau pada perintah kedua seperti di atas. Untuk perintah lidsconf: #lidsconf -A [-s subject] -o object [-d] [-t from-to] [-i level] -j ACTION
Keterangan parameter dari perintah di atas dapat dilihat dengan menjalankan perintah #lidsconf -h Baiklah, selanjutnya kita akan melakukan konfigurasi dasar untuk ACLs. Ketikkan perintah berikut langsung pada shell atau masukkan kedalam sebuah file script. /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf
-A -A -A -A -A
-o -o -o -o -o
/sbin /bin /usr /usr/local /lib
-j -j -j -j -j
READONLY READONLY READONLY READONLY READONLY
/sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf
-A -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A -A
/sbin/lidsconf -A /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf /sbin/lidsconf
-A -A -A -A
/sbin/lidsconf -A /sbin/lidsconf -A /sbin/lidsconf -A /sbin/lidsconf -A
-o -o -o -o -o -s -s -s -s -s -o -o -s -o -s -s -s -s -s -s -s -o -s -o -s -s -s -s -o -s -o -s -o -s -o -s
/opt -j READONLY /etc -j READONLY /usr/local/etc -j READONLY /etc/shadow -j DENY /etc/lilo.conf -j DENY /bin/login -o /etc/shadow -j READONLY /usr/bin/vlock -o /etc/shadow -j READONLY /bin/su -o /etc/shadow -j READONLY /bin/su -o CAP_SETUID -j GRANT /bin/su -o CAP_SETGID -j GRANT /boot -j READONLY /root -j READONLY /bin/bash -o /root/.bash_history -j WRITE /var/log -j APPEND /bin/login -o /var/log/wtmp -j WRITE /bin/login -o /var/log/lastlog -j WRITE /sbin/init -o /var/log/wtmp -j WRITE /sbin/init -o /var/log/lastlog -j WRITE /sbin/halt -o /var/log/wtmp -j WRITE /sbin/halt -o /var/log/lastlog -j WRITE /etc/rc.d/rc.sysinit \ /var/log/wtmp -i 1 -j WRITE /etc/rc.d/rc.sysinit \ /var/log/lastlog -i 1 -j WRITE /sbin/hwclock -o /etc/adjtime -j WRITE /sbin/init -o CAP_INIT_KILL -j GRANT /sbin/init -o CAP_KILL -j GRANT /etc/rc.d/init.d/halt \ CAP_INIT_KILL -i 1 -j GRANT /etc/rc.d/init.d/halt \ CAP_KILL -i 1 -j GRANT /etc/rc.d/init.d/halt \ CAP_NET_ADMIN -i 1 -j GRANT /etc/rc.d/init.d/halt \ CAP_SYS_ADMIN -i 1 -j GRANT /sbin/update -o CAP_SYS_ADMIN -j GRANT
Setelah ACLs dasar tersebut telah dibuat selanjutnya kita lakukan pengetesan terhadap system yang telah dilindungi oleh LIDS dengan cara menonaktifkan “capabilty” dari ACL_DISCOVERY dengan perintah berikut: #lidsadm -S -- -ACL_DISCOVERY
Masukkan password, lalu dengan menggunakan account root, cobalah untuk membuat sebuah file kosong pada direktori home root Sampai di sini kita telah mengkonfigurasikan LIDS untuk kebutuhan dasar system. ACLs tersebut dapat ditambahkan sesuai kebutuhan dengan sintaks yang sama namun menggunakan paramater yang berbeda sesuai kebutuhan.
Kesimpulan Account root pada system operasi *NIX dan variannya ternyata memiliki masalah yang sangat besar, dengan kemampuannya untuk melakukan apa saja terhadap system menjadi target yang banyak dicari oleh para intruder. Untuk itu diperlukan sebuah aturan yang dapat membatasi root. Sehingga sekalipun intruder mendapatkan account root terhadap system ia tidak dapat melakukan apapun. LIDS (Linux Intrusion Detection System) merupakan patch keamanan pada kernel Linux memiliki kemampuan untuk melindungi system bahkan dari account root sekali pun. Namun LIDS bukan lah segalanya, perlindungan terhadap system tidak lah cukup dengan hanya melakukan patch terhadap system, sebab keamanan adalah sebuah proses. “Tidak ada system di dunia ini yang 100% aman” selama system itu dibuat oleh manusia masih banyak cara untuk menyusupinya sekali pun kemungkinan itu sangat kecil. Untuk itu menjaga keamanan sebuah system bukan lah bergantung pada sebuah patch, tools, dan lainnya, tetapi bergantung pada user yang menggunakan system tersebut. “It’s not about the gun, but the man behind the gun”
APPENDIX LIDS CAPABILITY ### 0: In a system with the _POSIX_CHOWN_RESTRICTED option defined, this overrides the restriction ### 0: of changing file ownership and group ownership. # +0:CAP_CHOWN ### 1: Override all DAC access, including ACL _POSIX_ACL is defined. Excluding ### 1: DAC access covered by CAP_LINUX_IMMUTABLE. # +1:CAP_DAC_OVERRIDE
execute
access
if
### 2: Overrides all DAC restrictions regarding read and search on files and directories, including ### 2: ACL restrictions if _POSIX_ACL is defined. Excluding DAC access covered by ### 2: CAP_LINUX_IMMUTABLE. # +2:CAP_DAC_READ_SEARCH ### 3: Overrides all restrictions about allowed operations on files, where file owner ID must be equal ### 3: to the user ID, except where CAP_FSETID is applicable. It doesn't override MAC and DAC ### 3: restrictions. # +3:CAP_FOWNER ### 4: Overrides the following restrictions that the effective user ID shall match the file owner ID ### 4: when setting the S_ISUID and S_ISGID bits on that file; that the effective group ID (or one of ### 4: the supplementary group IDs) shall match the file owner ID when setting the S_ISGID bit on ### 4: that file; that the S_ISUID and S_ISGID bits are cleared on successful return from chown(2) ### 4: (not implemented). # +4:CAP_FSETID ### 5: Overrides the restriction that the real or effective user ID of a process sending a signal must ### 5: match the real or effective user ID of the process receiving the signal. # +5:CAP_KILL ### 6: - Allows setgid(2) manipulation ### 6: - Allows setgroups(2) ### 6: - Allows forged gids on socket credentials passing. # +6:CAP_SETGID
### 7: - Allows set*uid(2) manipulation (including fsuid). ### 7: - Allows forged pids on socket credentials passing. # +7:CAP_SETUID ### 8: Transfer any capability in your permitted set to any pid, remove any capability in your ### 8: permitted set from any pid. # -8:CAP_SETPCAP ### 9: Allow modification of S_IMMUTABLE and S_APPEND file attributes. # +9:CAP_LINUX_IMMUTABLE ### 10: Allows binding to TCP/UDP sockets below 1024. # +10:CAP_NET_BIND_SERVICE ### 11: Allow broadcasting, listen to multicast. # +11:CAP_NET_BROADCAST ### 12: - Allow interface configuration ### 12: - Allow administration of IP firewall, masquerading and accounting ### 12: - Allow setting debug option on sockets ### 12: - Allow modification of routing tables ### 12: - Allow setting arbitrary process / process group ownership on sockets ### 12: - Allow binding to any address for transparent proxying ### 12: - Allow setting TOS (type of service) ### 12: - Allow setting promiscuous mode ### 12: - Allow clearing driver statistics ### 12: - Allow multicasting ### 12: - Allow read/write of device-specific registers # +12:CAP_NET_ADMIN ### 13: - Allow use of RAW sockets ### 13: - Allow use of PACKET sockets # +13:CAP_NET_RAW ### 14: - Allow locking of shared memory segments ### 14: - Allow mlock and mlockall (which doesn't really have anything to do with IPC) # +14:CAP_IPC_LOCK ### 15: Override IPC ownership checks. # +15:CAP_IPC_OWNER ### 16: Insert and remove kernel modules. # -16:CAP_SYS_MODULE
### 17: - Allow ioperm/iopl and /dev/port access ### 17: - Allow /dev/mem and /dev/kmem acess ### 17: - Allow raw block devices (/dev/[sh]d??) acess # +17:CAP_SYS_RAWIO ### 18: Allow use of chroot() # +18:CAP_SYS_CHROOT ### 19: Allow ptrace() of any process # +19:CAP_SYS_PTRACE ### 20: Allow configuration of process accounting # +20:CAP_SYS_PACCT ### 21: ### 21: - Allow configuration of the secure attention key ### 21: - Allow administration of the random device ### 21: - Allow device administration (mknod) ### 21: - Allow examination and configuration of disk quotas ### 21: - Allow configuring the kernel's syslog (printk behaviour) ### 21: - Allow setting the domainname ### 21: - Allow setting the hostname ### 21: - Allow calling bdflush() ### 21: - Allow mount() and umount(), setting up new smb connection ### 21: - Allow some autofs root ioctls ### 21: - Allow nfsservctl ### 21: - Allow VM86_REQUEST_IRQ ### 21: - Allow to read/write pci config on alpha ### 21: - Allow irix_prctl on mips (setstacksize) ### 21: - Allow flushing all cache on m68k (sys_cacheflush) ### 21: - Allow removing semaphores ### 21: - Used instead of CAP_CHOWN to "chown" IPC message queues, semaphores and shared memory ### 21: - Allow locking/unlocking of shared memory segment ### 21: - Allow turning swap on/off ### 21: - Allow forged pids on socket credentials passing ### 21: - Allow setting readahead and flushing buffers on block devices ### 21: - Allow setting geometry in floppy driver ### 21: - Allow turning DMA on/off in xd driver ### 21: - Allow administration of md devices (mostly the above, but some extra ioctls) ### 21: - Allow tuning the ide driver ### 21: - Allow access to the nvram device ### 21: - Allow administration of apm_bios, serial and bttv (TV) device ### 21: - Allow manufacturer commands in isdn CAPI support driver ### 21: - Allow reading non-standardized portions of pci configuration space ### 21: - Allow DDI debug ioctl on sbpcd driver ### 21: - Allow setting up serial ports ### 21: - Allow sending raw qic-117 commands ### 21: - Allow enabling/disabling tagged queuing on SCSI controllers and sending arbitrary SCSI commands ### 21: - Allow setting encryption key on loopback filesystem
# +21:CAP_SYS_ADMIN ### 22: Allow use of reboot() # +22:CAP_SYS_BOOT ### 23: - Allow raising priority and setting priority on other (different UID) processes ### 23: - Allow use of FIFO and round-robin (realtime) scheduling on own processes and setting ### 23: the scheduling algorithm used by another process. # +23:CAP_SYS_NICE Override resource limits. Set resource limits. ### 24: - Override quota limits. ### 24: - Override reserved space on ext2 filesystem ### 24: NOTE: ext2 honors fsuid when checking for resource overrides, so you can override ### 24: using fsuid too ### 24: - Override size restrictions on IPC message queues ### 24: - Allow more than 64hz interrupts from the real-time clock ### 24: - Override max number of consoles on console allocation ### 24: - Override max number of keymaps # +24:CAP_SYS_RESOURCE ### 25: - Allow manipulation of system clock ### 25: - Allow irix_stime on mips ### 25: - Allow setting the real-time clock # +25:CAP_SYS_TIME ### 26: - Allow configuration of tty devices ### 26: - Allow vhangup() of tty # +26:CAP_SYS_TTY_CONFIG ### 27: Allow the privileged aspects of mknod() ### +27:CAP_MKNOD ### 28:Allow taking of leases on files */ ### +28:CAP_LEASE
### 29: Restricts viewable processes by a user. # +29:CAP_HIDDEN ### 30: Allow killing protected processes. # -30:CAP_KILL_PROTECTED