Next Previous Contents

5. Keamanan File dan Sistem File

Beberapa menit persiapan dan perencanaan sebelum menaruh sistem anda online dapat membantu melindungi sistem anda, dan data yang disimpan.

5.1 Setting Umask

Perintah umask dapat digunakan untuk menentukan mode penciptaan file baku di sistem anda. Ia merupakan komplemen oktal mode file yang diinginkan. Jika file diciptakan tanpa mengindahkan setting permisi, pemakai secara tidak sengaja dapat memberi permisi membaca atau menulis kepada seseorang yang tidak seharusnya memiliki permisi ini. Umumnya setting umask mencakup 022, 027, dan 077, yang paling terbatas. Normalnya umask diset dalam /etc/profile, sehingga berlaku untuk semua pemakai sistem. Sebagai contoh, anda mungkin memiliki sebuah baris yang tampak seperti berikut:


                       # Set the user's default umask
                       umask 033

Pastikan untuk membuat umask root 077, yang akan meniadakan permisi membaca, menulis, dan mengeksekusi bagi pemakai lain, kecuali dirubah secara eksplisit menggunakan chmod(1).

Jika anda menggunakan RedHat, dan mengikuti skema penciptaan ID pemakai dan kelompok (User Private Groups), hanya perlu menggunakan 002 sebagai umask. Hal ini disebabkan kenyataan bahwa konfigurasi baku adalah satu orang untuk satu kelompok.

5.2 Permisi File

Penting untuk memastikan bahwa file sistem anda tidak terbuka untuk pengeditan oleh pemakai dan grup yang tidak seharusnya melakukan pemeliharaan sistem semacam itu.

UNIX membedakan kendali akses pada file dan direktori berdasarkan tiga karakteristik: pemilik (owner), grup, dan yang lain (other). Selalu terdapat satu pemilik, sejumlah anggota grup, dan setiap orang lain.

Penjelasan singkat permisi UNIX:

Kepemilikan - Pemakai dan grup mana saja yang memperoleh kendali atas setting permisi node dan node induk.

Permisi - Bit yang mampu diset atau direset untuk memungkinkan beberapa tipe akses tertentu terhadapnya. Permisi direktori mungkin memiliki arti berbeda dengan permisi set yang sama untuk file.

Read (Baca):

Write (Menulis):

Execute (Eksekusi):

Menyimpan atribut teks: (untuk direktori) Bit sticky juga memiliki arti lain ketika diaplikasikan pada direktori. Jika bit sticky diset pada direktori, maka seorang pemakai hanya boleh menghapus file yang dimiliki atau diberi ijin menulis secara eksplisit, walaupun ia memiliki akses ke direktori. Hal ini dirancang untuk direktori seperti /tmp, yang bersifat world-writable, tetapi tidak diinginkan setiap pemakai dapat menghapus file sesukanya. Bit sticky dilihat sebagai sebuah 't' dalam daftar direktori.

Atribut SUID: (untuk file) Atribut ini menggambarkan permisi set ID pemakai atas file. Ketika mode akses permisi set ID diset dalam permisi pemilik, dan file adalah eksekutabel, proses yang menjalankannya diberi ijin akses kepada sumber daya sistem berdasarkan pemakai yang membuat proses. Inilah penyebab eksploitasi 'buffer overflow'.

Atribut SGID: (untuk file) Jika diset dalam permisi grup, bit ini mengendalikan status "set group id" file. Ia berlaku serupa dengan SUID, kecuali grup terpengaruh. File harus eksekutabel agar dapat berlaku.

Atribut SGID: (untuk direktori) Jika anda menset bit SGID pada direktori (dengan "chmod g+s direktori"), file yang tercipta di direktori akan memiliki grup yang sama dengan grup direktori.

Anda - Pemilik file

Grup - Grup anda berada.

Orang lain - Setiap orang yang ada di sistem yang bukan pemilik atau anggota grup.

Contoh File :

               -rw-r--r--  1 kevin  users         114 Aug 28  1997 .zlogin
               1st bit - direktori?               (tidak)
                2nd bit - baca oleh pemilik?       (ya, oleh kevin)
                 3rd bit - tulis oleh pemilik?      (ya, oleh kevin)
                  4th bit - eksekusi oleh pemilik?   (tidak)
                   5th bit - baca oleh grup?          (ya, oleh users)
                    6th bit - tulis oleh grup?         (tidak)
                     7th bit - eksekusi oleh grup?      (tidak)
                      8th bit - baca oleh tiap orang?    (ya, o/ tiap orang)
                       9th bit - tulis oleh tiap orang?   (tidak)
                        10th bit - eksekusi o/ tiap orang? (tidak)

Baris berikut merupakan contoh set minimum permisi yang dibutuhkan untuk melakukan akses yang dideskripsikan. Anda mungkin ingin memberi permisi lebih daripada yang ditampilkan, tetapi ini akan mendeskripsikan apa yang dilakukan oleh permisi minimum :

      -r--------  Membolehkan akses baca file oleh pemilik
      --w-------  Membolehkan pemilik untuk modifikasi/hapus file
      ---x------  Pemilik dapat mengeksekusi program, tapi bukan shell script,
                  yang masih perlu ijin baca
      ---s------  Akan mengeksekusi dengan ID pemakai efektif = pemilik
      -------s--  Akan mengeksekusi dengan ID pemakai efektif = grup
      -rw------T  Tdk ada update "last modified time". Biasanya untuk file swap
      ---t------  Tidak ada efek. (dulunya bit sticky)

Contoh direktori:

              drwxr-xr-x  3 kevin  users         512 Sep 19 13:47 .public_html/
              1st bit - direktori?             (ya, berisi banyak file)
               2nd bit - baca oleh pemilik?     (ya, oleh kevin)
                3rd bit - tulis oleh pemilik?    (ya, oleh kevin)
                 4th bit - eksekusi oleh pemilik? (ya, oleh kevin)
                  5th bit - baca oleh grup?        (ya, oleh pemakai)
                   6th bit - tulis oleh grup?       (tidak)
                    7th bit - eksekusi oleh grup?    (ya, oleh pemakai)
                     8th bit - baca oleh tiap orang?  (ya, oleh setiap orang)
                      9th bit - tulis oleh tiap orang?  (tidak)
                       10th bit - eksekusi oleh everyone? (ya, oleh tiap orang)

Baris-baris berikut adalah contoh set permisi minimum yang diperlukan untuk melakukan akses yang dideskripsikan. Anda mungkin ingin memberi lebih permisi daripada yang didaftarkan, namun contoh ini dapat menggambarkan apa yang dilakukan permisi minimum pada direktori:

     dr--------  Isi dpt ditampilkan, tapi atribut file tidak dapat dibaca
     d--x------  Direktori dapat dimasuki, dan digunakan dl path eksekusi penuh
     dr-x------  Atribut file dapat dibaca oleh pemilik
     d-wx------  File dapat diciptakan/dihapus, meski bukan direktori saat ini
     d------x-t  Mencegah file dihapus oleh orang lain dengan akses tulis.
                 Digunakan di /tmp
     d---s--s--  Tidak ada efek

File konfigurasi sistem (biasanya di /etc/) biasanya mode 640 (-rw-r-----), dan dimiliki oleh root. Tergantung pada persyaratan keamanan site anda, anda mungkin perlu menyesuaikannya. Jangan pernah meninggalkan file sistem dapat ditulisi oleh grup atau tiap orang. Beberapa file konfigurasi, termasuk /etc/shadow, hanya boleh dibaca oleh root, dan direktori dalam /etc tidak boleh diakses oleh orang lain.

Script Shell SUID Script shell SUID merupakan risiko keamanan yang serius, dan oleh karena itu kernel tidak akan menganggapnya. Meski anda menganggap betapa aman script shell, ia dapat dieksploitasi untuk memberi cracker shell root.

5.3 Pemeriksaan Integritas dengan Tripwire

Cara baik lain untuk mendeteksi serangan lokal (dan juga jaringan) pada sistem anda adalah dengan menjalankan pemeriksa integritas seperti Tripwire. Tripwire menjalankan sejumlah checksum di seluruh file biner dan config penting anda dan membandingkannya dengan database terdahulu, yang diketahui baik sebagai referensi. Oleh karena itu, setiap perubahan dalam file akan diketahui.

Merupakan ide yang baik untuk menginstal tripwire ke floppy, dan kemudian mengeset write protect secara fisik pada floppy. Dengan demikian penyusup tidak dapat mengganggu tripwire atau merubah database. Sekali anda telah memiliki setup tripwire, merupakan ide yang baik untuk menjalankannya sebagai tugas administrasi keamanan normal anda untuk melihat jika ada perubahan.

Anda bahkan dapat menambahkan entry crontab untuk menjalankan tripwire dari floppy setiap malam dan mengirimkan hasilnya kepada anda di pagi hari. Sesuatu seperti :


                       # set mailto
                       MAILTO=kevin
                       # run tripwire
                       15 05 * * * root /usr/local/adm/tcheck/tripwire

akan mengirimkan laporan kepada anda di jam 5:15 pagi hari.

Tripwire dapat pula menjadi petunjuk yang baik untuk mendeteksi penyusup sebelum anda mengetahuinya. Oleh karena banyaknya file yang berubah pada rata-rata sistem, anda harus berhati-hati tentang aktivitas cracker dan apa yang anda lakukan.

5.4 Trojan Horses (Kuda-kuda Troya)

Kuda troya diambil namanya dari fabel sastra besar Homer. Idenya adalah anda menaruh program atau biner yang tampaknya bagus, dan membuat orang lain mendownloadnya dan menjalankannya sebagai root. Kemudian, anda dapat mengganggu sistem mereka sementara mereka tidak memperhatikan. Sementara mereka berpikir bahwa file biner yang mereka ambil hanya melakukan satu hal (dan mungkin sangat baik), namun ia juga mengganggu keamanan mereka.

Anda perlu waspada terhadap program apa yang anda instal di mesin anda. RedHat menyediakan checksum MD5, dan tanda PGP, file RPM sehingga anda dapat memverifikasi bahwa anda menginstal hal yang sebenarnya. Distribusi lain memiliki metode yang serupa. Anda sebaiknya tidak menjalankan sembarang file biner yang kode sumbernya tidak anda miliki atau kenal sebagai root! Sedikit penyerang yang bersedia mengeluarkan kode sumber untuk dilihat publik.

Meski dapat menjadi kompleks, pastikan anda memperoleh kode sumber untuk beberapa program dari site distribusi sebenarnya. Jika program akan berjalan sebagai root pastikan anda atau seseorang yang anda percayai telah melihat kode sumber dan memverifikasinya.


Next Previous Contents