Rabu, 26 September 2012

Keamanan Sistem Part 2

Untuk menjaga sistem Linux Anda aman, perhatikan pemakaian user root, akses terhadap file, pengaturan  login, password, dan enkripsinya.

Beberapa poin ini merupakan lanjutan petunjuk pengamanan root  yang telah disinggung di
bagian pertama. Batasi penggunaan konsol untuk  login sebagai root hanya pada konsol 1 dan
2 dengan cara menghapus tty3 dan tty4. Untuk membatasinya, Anda bisa melakukan editing pada  /etc/securetty, seperti tampak pada gambar berikut:
  

Batasi waktu penggunaan account root,  ini berguna jika pada suatu saat Anda lupa melakukan  logout  dari
account root. Anda perlu membatasi waktu  time out pada saat account root nonaktif. Cara membatasinya
waktunya sebagai berikut:
Edit file /root/.bashrc
Tambahkan variabel di bawah ini:
HISTFILESIZE=100
HISTSIZE=30
TMOUT=900

Variabel TMOUT berfungsi untuk menghitung waktu pada saat user root sedang tidak aktif. Lamanya
dihitung berdasarkan detik (second). Jadi jika Anda menginginkan account root untuk otomatis logout dari  shell selma 15 menit tidak ada aktivitas, Anda bisa melakukan setting 60 detik x 15 menit = 900. HISTSIZE berguna untuk membatasi history pengetikan yang dilakukan oleh root sampai dengan 30 baris. Sedangkan
HISTFILESIZE berfungsi untuk membatasi ukuran file .bash_history sampai dengan 100 byte saja
selanjutnya akan dihapus. Dengan demikian, akan mengecoh orang lain yang ingin melakukan pengintipan di
.bash_history. Anda juga bisa memasangnya di  /etc/profile, untuk menerapkannya terhadap seluruh user.
Untuk melihat efeknya, Anda harus logout terlebih dahulu. Kemudian login kembali sebagai user root.
Untuk lebih mengamankan account root, edit file /root/.bashrc, dan isikan variabel berikut:
cat /dev/null > /root/.bash_history

Variabel di atas akan mengakibatkan sistem secara otomatis akan mengosongkan .bash_history pada
saat user root melakukan login. Variabel ini bisa juga Anda masukkan di file .bashrc pada masing-masing home user untuk keamanan mereka sendiri.
Anda juga bisa memasukkan perintah pengosongan history melalui  crontab, seperti berikut ini : 
[root@localhost: ~] # crontab -e
[Insert]
59 * * * * cat /dev/null > /root/
.bash_history
[Esc]
:wq [Enter]

Perintah di atas akan mengakibatkan sistem mengosongkan file .bash_history pada direktori /root setiap satu jam sekali.

Pengamanan file dan sistem File
Mengamankan file dan sistem file sangat penting, karena akan sangat berarti bagi penyusup untuk menggunakan file yang ada demi kepentingan penyusup. Misalnya, penggunaan gcc untuk kompilasi program, akan sangat berbahaya jika dilakukan oleh user yang tidak bisa dipercaya. Beberapa menit persiapan dan perencanaan sebelum menaruh sistem Anda online  dapat membantu melindungi sistem Anda, dan data yang disimpan. Berikut ini beberapa tips untuk mengamankan file dan sistem file Anda.

Tidak ada alasan untuk menjalankan program SUID/SGID dari home user.
Gunakan opsi “nosuid” dalam /etc/ fstab untuk partisi yang dapat ditulis oleh orang selain root. Anda bisa juga menambahkan “nodev” dan “noexec” di partisi $HOME/user, juga di /var, yang melarang eksekusi program, dan penciptaan device  karakter atau blok, yang sebenarnya tidak perlu. Misalnya untuk mengamankan direktori /tmp dan direktori /home, contohnya sebagai berikut:
/dev/hda7 /tmp ext2 nosuid,defaults 1 1
/dev/hdc2 /home ext2 nodev.noexec,defaults 1 2

Konfigurasi  umask  penciptaan file user sistem Anda perlu dijaga seketat mungkin. Setting yang biasa
digunakan adalah 022, 033, dan yang paling ketat adalah 077, dan ditambahkan ke  /etc/profile. 
Set limit sistem file. Anda dapat mengendalikan limit tiap pemakai menggunakan module PAM dan  /etc/security/limits.conf. 
Sebagai contoh  limit untuk kelompok “users” mungkin tampak sebagai berikut:
@users     hard  core    0
@users     hard  nproc   50
@users     hard  rss     5000

Perintah ini berarti melarang penciptaan file core, membatasi jumlah proses hingga 50, dan membatasi penggunaan memory tiap user hingga 5M. File  /var/log/wtmp dan /var/run/utmp berisi catatan login
seluruh pemakai sistem Anda. Integritasnya harus dipelihara karena dapat digunakan untuk menentukan kapan dan dari mana seorang pemakai (atau penyusup potensial) memasuki sistem Anda. File-file ini harus memiliki permisi 644, tanpa mempengaruhi operasi sistem normal.

Jika Anda mengekspor sistem file menggunakan NFS, pastikan mengonfigurasi /etc/exports dengan akses yang seketat mungkin. Artinya tidak menggunakan wildcard, tidak membolehkan root akses menulis, dan
melakukan mount read-only  jika mungkin. 
Bit immutable dapat digunakan untuk mencegah penghapusan atau penimpahan sebuah file yang harus
dilindungi tanpa sengaja. Juga dapat mencegah seseorang menciptakan  link simbolik ke file ini, yang telah
merupakan sumber penyerangan melibatkan penghapusan  /etc/passwd atau /etc/shadow. Misalkan melindungi kedua dile tersebut di atas, caranya adalah sebagai berikut:
masaji:/etc # chattr +ua shadow
masaji:/etc # chattr +ua passwd

Perintah di atas akan mengakibatkan file shadow dan passwd tidak akan bisa dihapus dan hanya bisa
ditambahi saja (append). File-file SUID dan SGID pada sistem Anda adalah risiko keamanan potensial, dan harus diawasi dengan baik. Oleh karena program-program ini memberi izin khusus bagi pemakai yang mengeksekusinya, maka perlu dipastikan bahwa program yang tidak aman tidak diinstalasi. Trik favorit cracker  adalah mengeksploitasi program SUID “root”, lalu meninggalkan program SUID sebagai
backdoor untuk masuk di saat lain, meski lubang yang asli telah ditutup.
Carilah seluruh program SUID/SGID di sistem Anda, dan catatlah, sehingga Anda mengerti setiap perubahan yang dapat mengindikasikan penyusup potensial. Gunakan perintah berikut untuk mencari seluruh program SUID/SGID di sistem Anda.

Perketat sekuriti Anda dengan menyunting file  /etc/login.defs, dengan melakukan editing pada
bagian ini:
# Password aging controls:
#
# PASS_MAX_DAYS   Maximum number of days a password may be used.
# PASS_MIN_DAYS   Minimum number of days allowed between password changes.
# PASS_MIN_LEN    Minimum acceptable password length.
# PASS_WARN_AGE   Number of days warning given before a password expires.
  #
    PASS_MAX_DAYS   30
    PASS_MIN_DAYS   0
    PASS_MIN_LEN    8
    PASS_WARN_AGE   28
Berikan akses seminim mungkin bagi daemon atau program yang berjalan dan bila mungkin masukkan program tersebut ke dalam chrooted-jail, tentunya akses yang Anda berikan jangan sampai “menjerat” program/daemon tersebut hingga mati.
Monitor selalu proses (‘ps ax’), log (‘/var/log/’), dan file file yang terbuka (‘lsof’).
Perhatikan pula  socket  yang terbuka, dan  socket connections, dengan netstat, contoh: [root@hartx /root]# netstat -atn
Berikan perhatian ekstra jika Anda menjalankan layanan ftp publik (anonymous ftp) terutama sekali jika
Anda menggunakan Wu-ftpd, juga pada DNS Server Anda jika Anda menggunakan BIND, karena kedua
service ini paling rentan terhadap

masalah keamanan (terbukti sering terjadi “tambal sulam” pada dua program ini).
Akhirnya, sebelum mengubah perizinan di sembarang sistem file, pastikan Anda paham apa yang Anda
lakukan. Jangan pernah mengubah permisi suatu file hanya karena ini tampaknya merupakan cara termudah
menyelesaikan sesuatu. Selalu tentukan mengapa file memiliki permisi tersebut sebelum mengubahnya.

Pemeliharaan System Account Data
Sangat penting bahwa informasi yang berasal dari syslog belum diganggu. Membuat file dalam  /var/log dapat dibaca dan ditulis oleh sejumlah pemakai terbatas adalah awal yang baik. Yakinkan untuk memperhatikan apa yang ditulis di sana, khususnya dalam fasilitas ‘auth’. Banyaknya kegagalan  login, sebagai
contoh, dapat mengindikasikan usaha break-in.
Ke mana untuk melihat file log Anda tergantung pada distribusi Anda. Dalam sistem Linux yang sesuai dengan “Linux Filesystem Standard”, seperti Red Hat, Anda ingin melihat ke /var/log dan memeriksa pesan-pesan, mail.log  dan lainnya.

Anda dapat menemukan di mana distribusi Anda mencatat dengan melihat pada file  /etc/syslog.conf. Ini file yang memberitahu  syslogd  (the system logging daemon) di mana mencatat berbagai pesan. Anda mungkin ingin mengkonfigurasi  script log-rotating Anda atau daemon untuk menjaga log lebih panjang sehingga Anda memiliki waktu untuk memeriksanya. Lihat paket ‘logrotate’ dalam sistem Linux versi terbaru.
Jika file log Anda telah diganggu, lihat bila Anda dapat menentukan kapan terjadinya, dan hal-hal apa yang
diganggu. Apakah ada periode waktu yang tidak dapat dihitung? Periksa  tape back-up (jika Anda punya) untuk file log yang tidak terganggu adalah ide yang baik. File log umumnya dimodifikasi oleh penyusup dalam rangka menutup jejaknya, tetapi mereka harus juga memeriksa kejadian-kejadian aneh. Anda mungkin memperhatikan penyusup berusaha memperoleh jalan masuk, atau mengeksploitasi program dalam rangka
memperoleh rekening root. Anda mungkin melihat masukan log sebelum penyusup memiliki waktu memodifikasi mereka.
Anda harus juga yakin untuk memisahkan fasilitas ‘auth’ dari data log lain, termasuk usaha untuk mengganti
pemakai menggunakan ‘su’, usaha login, dan informasi akuntansi pemakai lainnya.
Jika mungkin, konfigurasi syslog untuk mengirim salinan data yang paling penting ke sistem yang aman. Hal ini
akan mencegah penyusup menutupi jejaknya dengan menghapus usaha login /su/ftp/etc. Lihat syslog.conf man page, dan acu pilihan ‘@’.

Akhirnya, file log kurang berguna ketika tak seorang pun membacanya. Lihatlah log file Anda sewaktu-waktu, dan kenali tampaknya untuk hari normal. Dengan mengetahui hal ini dapat membantu mengenali hal-hal yang tidak biasa.
Perizinan file
Seorang sistem administrator perlu memastikan bahwa file-file pada sistem 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. Penjelasannya demikian :
Read (Baca):
Mampu melihat isi file.
Mampu membaca direktori.
Write (Menulis):
Mampu menambah atau mengubah file.
Mampu menghapus atau memindah file dalam sebuah direktori.

Execute (Eksekusi):
Mampu menjalankan program biner atau  script shell.
Mampu mencari dalam sebuah direktori, dikombinasikan dengan permisi  read.
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 izin 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.

Pengamanan password dan enkripsi
Salah satu fitur keamanan yang penting yang digunakan saat ini adalah password. Penting bagi Anda dan seluruh pemakai  server Anda untuk memiliki password yang aman dan tidak dapat diterka. Kebanyakan distribusi Linux terbaru menyertakan program ‘passwd’ yang tidak membolehkan Anda menset password yang mudah diterka. Pastikan program passwd Anda terbaru dan memiliki fitur ini.
Kebanyakan  unicies  (dan Linux bukanlah perkecualian) utamanya menggunakan algoritma enkripsi satu
arah (one-way), disebut DES (Data Encryption Standard) untuk mengenkripsi password Anda. Password
terenkripsi ini kemudian disimpan di /etc/passwd  atau di /etc/shadow. Ketika Anda berusaha login, apapun yang Anda ketikkan dienkripsi dibandingkan dengan masukkan dalam file yang menyimpan password Anda. Jika cocok, pastilah password-nya sama, dan Anda dibolehkan mengakses. Meskipun DES merupakan algoritma enkripsi dua arah (Anda dapat meng-code  dan mendecode pesan, dengan memberi kunci yang tepat), varian yang digunakan kebanyakan unicies adalah satu arah. Artinya tidak mungkin membalik enkripsi untuk memperoleh password dari isi  /etc/passwd (atau /etc/shadow).

Serangan brute force, seperti “Crack” atau “John the Ripper” sering dapat digunakan untuk menerka password meski password Anda cukup acak. Modul PAM memungkinkan Anda menggunakan rutin enkripsi yang berbeda dengan password Anda (MD5 atau sejenisnya).

Shadow passwords
Shadow password adalah suatu cara menjaga password terenkripsi Anda dari pemakai normal. Normalnya, password terenkripsi ini disimpan di file  /etc/passwd dapat dibaca semua pemakai.
Mereka lalu dapat menjalankan program penerka password dan berusaha menentukan password-nya. Shadow password menyimpan informasi ini ke file /etc/shadow yang hanya dapat dibaca oleh pemakai yang berhak. Dalam rangka menjalankan shadow password Anda perlu memastikan bahwa seluruh utilitas
Anda yang perlu mengakses informasi password dikompilasi ulang untuk mendukungnya. PAM juga
membolehkan Anda untuk hanya memasukkan modul shadow dan tidak perlu mengkompilasi ulang eksekutabel. Anda dapat mengacu pada Shadow Password HOWTO untuk informasi lebih lanjut jika perlu. 
Contohnya sebagai berikut :
tamu:x:502:100:Hanya Tamu:/home/tamu:/
bin/bash
hartx:x:503:100:Agus Hartanto:/home/
hartx:/bin/bash

Pada contoh di atas, password dari user hartx dan tamu hanya disimboliskan sebagai  x, karena yang sesungguhnya ada dan tersimpan di file /etc/shadow. Mari kita lihat isi password yang sebenarnya :

tamu:AdtjiuUotiABk:11625:0:99999:7:0::
hartx:SbTexoIdqe4IQ:11631:0:99999:7:0::

Terlihat bahwa dengan penggunaan shadow, password dari user yang bersangkutan sudah dienkripsi
sedemikian rupa, sehingga hanya dengan super komputer saja password tersebut dapat diuraikan. Dan kalau ingin lebih cepat, tentu saja melalui metode pendekatan personal).

SSH (Secure Shell), stelnet
SSH dan stelnet adalah program yang memungkinkan Anda untuk login ke sistem remote dan memiliki koneksi yang terenkripsi. SSH adalah paket program yang digunakan sebagai pengganti yang aman untuk rlogin, rsh dan rcp. Ia menggunakan  public-key cryptography untuk mengenkripsi komunikasi antara dua host, demikian pula untuk autentikasi pemakai. Ia dapat digunakan untuk login secara aman ke remote host atau menyalin data antar-host, sementara mencegah man-in-the-middle attacks  (pembajakan sesi) dan DNS spoofing. Ia akan melakukan kompresi data pada koneksi Anda, dan komunikasi X11 yang aman
antar-host. SSH homepage dapat dijumpai di  http://www.cs.hut.fi/ssh. Anda dapat pula menggunakan SSH dari stasiun kerja Windows Anda ke server SSH Linux. Terdapat beberapa implementasi client Windows yang tersedia gratis, termasuk satu di http://guardian.htu.tuwien.ac.at/therapy/ssh/ dan juga implementasi komersial dari DataFellows, di  http://www.datafellows.com.

SSLeay adalah implementasi bebas protokol Secure Sockets Layer Netscape, termasuk beberapa aplikasi, seperti Secure telnet, modul untuk Apache, beberapa database, dan juga beberapa algoritma termasuk DES, IDEA dan Blowfish. Dengan menggunakan pustaka ini, pengganti secure telnet telah diciptakan yang melakukan enkripsi pada koneksi telnet. Tidak seperti SSH, stelnet menggunakan SSL, protokol Secure Sockets Layer yang dikembangkan Netscape. Anda dapat menjumpai Secure telnet dan Secure FTP dengan melihat dulu SSLeay FAQ, tersedia di http://www.psy.uq.oz.au.


Tidak ada komentar: