Langkah Hardening Sistem Operasi Fedora-Server 21 (2/2)

Sebelumnya mari ingat kembali langkah-langkah hardening sistem operasi yang diusulkan oleh NIST, yaitu:
a. memasang dan menambal (patch) sistem operasi
b. menghapus layanan, aplikasi, dan protokol yang tidak diperlukan
c. mengkonfigurasi pengguna-pengguna, grup-grup, dan otentikasi
d. mengkonfigurasi kontrol sumberdaya-sumberdaya
e. memasang dan mengkonfigurasi kontrol keamanan tambahan, seperti anti-virus, firewall berbasis host, dan sistem deteksi intrusi (IDS), jika diperlukan
f. menguji keamanan dari dasar sistem operasi untuk memastikan langkah yang dilakukan sesuai dengan yang dibutuhkan keamanan

Pada artikel sebelumnya, “Langkah Hardening Sistem Operasi Fedora-Server 21 (1/2)” sudah dibahas mengenai langkah hardening (a), (b), (c), dan (d). Dalam artikel ini akan dibahas mengenai langkah (e) dan (f).

Catatan:

- Setiap perintah dalam tutorial ini diakhiri dengan menekan tombol "Enter".
- Tambahkan "sudo" di depan perintah jika diperlukan akses sebagai root.
- Perintah yang berwarna merah disesuaikan dengan keinginan sendiri.
- Tagar di depan perintah menunjukkan komentar, tidak perlu diketik.

e. Memasang dan Mengkonfigurasi Kontrol Keamanan Tambahan

Sebenarnya dalam Fedora-Server 21 terdapat kontrol keamanan tambahan yang secara bawaan sudah terpasang, yaitu firewall dan SELinux.

1. Firewall

  • Setiap paket data yang diterima oleh Fedora-Server 21 akan diperiksa oleh layanan “Iptables”. “Iptables” akan melakukan pemeriksaan dengan memasukkan setiap paket data ke dalam tabel-tabel.

“Iptables” memiliki 3 buah tabel built-in, yaitu :

  • mangle, digunakan untuk manipulasi paket data, misalnya melakukan perubahan TCP header
  • filter, digunakan untuk melakukan filter paket data yang keluar/masuk firewall
  • nat, digunakan untuk menerjemahkan alamat jaringan (NAT)

Setiap tabel memiliki rule-rule atau aturan-aturan yang disebut chain. Macam-macam chain dari tiap tabel Iptables adalah sebagai berikut.

1. Built-in chains untuk tabel “filter”:

INPUT — memfilter paket yang ditujukan kepada firewall.
OUTPUT — memfilter paket yang akan keluar dari firewall.
FORWARD — memfilter paket yang diteruskan dari suatu NIC ke NIC lain pada firewall.

2. Built-in chains untuk tabel “nat”:

PREROUTING — menerjemahkan alamat paket data sebelum proses routing
POSTROUTING — menerjemahkan alamat paket data sesudah proses routing
OUTPUT — menerjemahkan alamat paket data yang berasal dari firewall itu sendiri sebelum dikeluarkan

3. Built-in chains untuk tabel “mangle”:

INPUT — mengubah paket jaringan yang ditujukan kepada firewall
OUTPUT — mengubah paket data yang berasal dari firewall itu sendiri sebelum dikeluarkan
FORWARD — mengubah paket jaringan yang melalui firewall
PREROUTING — mengubah paket masuk sebelum di-routing
POSTROUTING — mengubah paket jaringan sebelum dikeluarkan

Chain akan memeriksa paket-paket yang masuk sesuai dengan kriteria yang sudah ditentukan. Pemeriksaan biasanya dilakukan dengan mencocokan TCP Header dari paket data dengan suatu aturan yang sudah di tentukan pada chain. Jika cocok, maka chain akan melakukan jump atau eksekusi terhadap paket tersebut. Jump bawaan dapat berupa “DROP” (buang) atau “ACCEPT” (terima).

Dalam proses pencocokan kriteria paket pada chain digunakan beberapa perintah sebagai berikut :

-t table
# mendefinisikan tabel yang akan digunakan (mangel, filter atau nat). # bila tidak didefinisikan, asumsi yang digunakan adalah tabel filter.
-j jump
# mendefinisikan jump yang akan diberlakukan pada suatu paket yang cocok dengan kriteria (rule) yang diterapkan.
-A 
# menambahkan chain baru sesudah chain terakhir.
-F
# menghapus semua chain pada suatu tabel.
-p protocoltype   
# mencocokan protokol yang digunakan (TCP, UDP, ICMP dan lain-lain)
-s sourceIPaddr  
# mencocokan alamat IP asal pada paket data
-d destinationIPaddr       
# mencocokan alamat IP tujuan pada paket data
-i interfacename    
# mencocokan input interface di mana paket akan diterima.
-o interfacename   
# mencocokan output interface di mana paket akan dikirimkan.

Contoh:

iptables -A INPUT -s 192.168.0.149 -j DROP

# artinya:
# firewall memblok paket yang masuk dari alamat IP 192.168.0.149

Untuk pencocokan kriteria berdasarkan protokol TCP dan UDP, terdapat beberapa perintah tambahan, yaitu :

-p tcp --sport portnumber   
# port asal TCP, dapat berupa suatu port atau rentang port.
# untuk menggunakan rentang port formatnya adalah startport:endport
-p tcp --dport portumber  
# port tujuan TCP
-p tcp --syn                       
# mencocokan TCP Request Connection yang baru
-p udp --sport portnumber  
# port asal UDP, dapat berupa suatu port atau rentang port. 
# untuk menggunakan rentang port formatnya adalah startport:endport
-p udp --dport portnumber 
# port tujuan UDP

Contoh:

iptables -A INPUT -s 192.168.0.250 -p tcp --dport 23 -j DROP

# artinya:
# firewall memblok layanan telnet (port 23) yang berasal dari alamat IP 192.168.0.250

2. SELinux (Security-Enhanced Linux)

SELinux merupakan implementasi dari mekanisme MAC (Mandatory Access Control) pada kernel linux yang memeriksa operasi-operasi yang diizinkan setelah DAC (Discretionary Access Control) standar diperiksa.

DAC adalah jenis kontrol akses di mana pengguna yang memutuskan bagaimana pengguna melindungi dan membagikan (share) data-datanya melalui sistem komputer untuk membatasi akses ke suatu objek berdasarkan identitas dan atau kelompok yang dimiliki. Pada DAC, pengguna diklasifikasikan berdasarkan kepemilikan atau grup. Umumnya sistem operasi menggunakan kontrol akses jenis ini.

Sedangkan MAC adalah jenis kontrol akses di mana sistem yang memutuskan bagaimana data akan diakses atau dibagikan atau melakukan beberapa jenis operasi pada objek. Pada MAC, pengguna diklasifikasi berdasarkan level dan lebih aman dibanding DAC.

  • Untuk mengetahui status dari SELinux, gunakan perintah berikut:
sestatus
Gambar 1: Tampilan status SELinux
  • Untuk melihat/ mengubah konfigurasi SELinux, gunakan perintah berikut:
vi /etc/selinux/config

Berikut konfigurasi SELinux secara bawaan pada Fedora:

Gambar Konfigurasi SELinux
Gambar 2: Konfigurasi bawaan SELinux pada Fedora

Penjelasan:
Opsi “SELINUX” mengatur mode SELinux yang berjalan. Terdapat tiga macam mode SELinux, yaitu:

  1. Enforcingdalam mode ini Linux memberlakukan kebijakan SELinux dan menolak akses berdasarkan peraturan kebijakan SELinux. Secara default, Fedora memilih mode ini.
  2. Permissive, mode ini hampir sama dengan Enforcing, hanya saja mode ini mengeluarkan pesan peringatan jika terjadi sesuatu.
  3. Disabled, dalam mode ini SELinux dimatikan.

Opsi “SELINUXTYPE” mengatur kebijakan SELinux yang digunakan. Terdapat tiga macam kebijakan, yaitu:

  1. Targeted, kebijakan untuk melindungi proses-proses yang targeted. Secara default, Fedora menggunakan kebijakan ini.
  2. Minimum, kebijakan untuk melindungi proses-proses yang dipilih
  3. MLS, kebijakan untuk perlindungan keamanan multi-level.

Saat menggunakan SELinux, berkas-berkas, termasuk direktori-direktori dan perangkat-perangkat, disebut sebagai objek. Proses-proses, seperti menjalankan suatu perintah atau menggunakan suatu aplikasi, disebut sebagai subjek.

Proses-proses dan berkas-berkas diberi label dengan konteks SELinux yang berisi informasi tambahan, seperti pengguna SELinux, peran, tipe, dan level (opsional). Saat menjalankan SELinux, semua informasi ini digunakan untuk membuat keputusan kontrol akses. Di Fedora, SELinux menyediakan kombinasi Role-Based Access Control (RBAC), Type Enforcement (TE), dan juga Multi-Level Security (MLS) yang opsional. Gunakan perintah berikut untuk melihat konteks SELinux dari suatu berkas atau direktori:

ls -Z namafile/direktori
Gambar 3: Konteks SELinux dari suatu berkas

Konteks SELinux mengikuti sintaks berikut: SELinux user:role:type:level.

a. Pengguna SELinux (SELinux user)

Identitas pengguna SELinux adalah sebuah identitas yang dikenal oleh kebijakan targeted yang diberi kewenangan akan sekumpulan peran dan range  MLS/ MCS  tertentu. Setiap pengguna Linux dipetakan ke pengguna SELinux melalui kebijakan SELinux. Jalankan perintah berikut sebagai root untuk melihat daftar pemetaan antara akun pengguna Linux dan SELinux (perlu memasang paket policycoreutils-python terlebih dahulu).

semanage login -l
Gambar 4: Pemetaan pengguna Linux ke pengguna SELinux

b. Peran (Role)

Bagian dari SELinux adalah model keamanan Role-Based Access Control (RBAC). Peran adalah atribut dari RBAC. Pengguna-pengguna SELinux diberi kewenangan akan peran-peran, dan peran-peran diberi kewenangan akan domain-domain. Peran berfungsi sebagai perantara antara domain dan pengguna SELinux. Peran yang dapat dimasukkan menentukan domain mana yang dapat dimasukkan, sehingga membuat SELinux dapat mengontrol jenis objek mana yang dapat diakses. Hal ini membantu mengurangi kerentanan terhadap serangan eskalasi hak istimewa.

c. Tipe (Type)

Tipe adalah atribut dari TE. Tipe mendefinisikan domain untuk proses, dan tipe dari berkas. Aturan kebijakan SELinux menentukan bagaimana tipe-tipe dapat mengakses satu sama lain, baik suatu domain mengakses suatu tipe, atau suatu domain mengakses domain lain. Akses hanya diperbolehkan jika ada aturan kebijakan SELinux yang membolehkan hal tersebut.

d. Level

Level adalah atribut dari MLS dan MCS. MLS range adalah sepasang level, ditulis sebagai lowlevel-highlevel jika level-nya berbeda, atau lowlevel jika level-nya sama (s0-s0 sama dengan s0). Setiap level merupakan pasangan sensitivitas-kategori, di mana kategorinya opsional. Jika ada kategori, level ditulis sebagai sensitivity:category-set.

Di Fedora, kebijakan SELinux memaksa MCS diberlakukan. Dalam MCS hanya terdapat satu sensitivitas yaitu s0. MCS di Fedora mendukung 1024 kategori yang berbeda, mulai dari c0 sampai c1023. s0-s0: c0.c1023 merupakan sensitivitas s0 dan berwenang untuk mengakses semua kategori.

Untuk memahami lebih lanjut mengenai SELinux pada Fedora, silakan baca dokumen berikut.

f) Menguji Keamanan Sistem Operasi

Salah satu cara menguji keamanan sistem operasi adalah dengan menggunakan Nmap. Untuk memasang Nmap, gunakan perintah berikut.

yum install nmap

Untuk menguji keamanan, cek port berapa saja yang terbuka (port scanning) dengan perintah berikut.

nmap -p 1-65535 alamatIPtarget

Lalu akan muncul hasil port scanning seperti gambar berikut.

Gambar
Gambar 5: Hasil scanning port dengan Nmap

Selain itu, periksa versi layanan apa saja yang berjalan (services scanning) dan deteksi  jenis OS apa yang digunakan dengan perintah berikut.

nmap -sV -O alamatIPtarget
Gambar 6:
Gambar 6: Hasil scanning layanan dengan Nmap

Dari hasil scanning di atas, terlihat ada tiga port tcp yang terbuka dan satu port yang terfilter. Port terfilter karena packet filtering mencegah komunikasi dengan port tersebut. Dengan begitu, kemungkinan munculnya serangan dapat diminimumkan.

Untuk hasil deteksi OS, Nmap tidak spesifik menyebutkan jenis sistem operasi dari digunakan target. Seharusnya hasil yang benar adalah Fedora release 21 dengan kernel Linux 3.19.

Demikian pembahasan mengenai langkah hardening (e) dan (f). Semoga bermanfaat 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *