Wednesday, October 28, 2009

Mengamankan Linux Anda

--< Table Of Contents: -------------------------------------------------------------
I. Preface
II. Apa saja yang sebaiknya anda lakukan??
01. Pengamanan terhadap mode single user
02. Melakukan pemeriksaan file-file log pada Linux
03. Melakukan backup
04. Memproteksi perintah-perintah linux tertentu
05. Merestriksi perintah su
06. Mengkonfigurasi file /etc/inittab dan file /etc/fstab
07. Mensetting unmask dan time out
08. Mengkonfigurasi file /etc/issue dan issue.net serta file/etc/securetty
09. Merestriksi diirektori /etc/rc.d dari user selain root
10. Mengkonfigurasi file /etc/sysctl.conf
III. Penutup
-------------------------------------------------------------------------------------





I. Preface
-----------


Linux, yang disebut-sebut sebagai "The Hackers OS", dewasa ini menjadi Operating System yang populer. Perjuangan para pecinta Open Source dalam Me-Linux-kan masyarakat tampaknya tidak sia-sia. Linux disukai karena FREE, secure dan tampilan grafisnya yang kini kian menawan saja. Walaupun sudah diakui ketangguhannya, namun bukan berarti Linux 100% secure. Tentu masih ada beberapa celah di dalamnya yang bisa dijadikan sebagai jalan masuk bagi pihak-pihak yang tidak bertanggungjawab (hayoo... siapa yang suka iseng... ^_^)

Karena itulah, dalam tutorial ini, saya bermaksud untuk berbagi informasi mengenai bagaimana cara-cara mengamankan mesin Linux anda. Semoga bermanfaat.


II. Apa saja yang sebaiknya anda lakukan??
------------------------------------------

-----[01]. Pengamanan terhadap mode Single User


Pertama-tama, kita harus membuat password lilo. Edit dan tambahkan option-option di bawah ini pada file /etc/lilo.conf (file utama pengaturan option-option pada LILO) :
Contoh file /etc/lilo.conf

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=00 #tambahkan !
default=linux
restricted # tambahkan !
password=t3rs3r4h # tambahkan !
image=/boot/vmlinuz-2.2.12-20
label=linux
initrd=/boot/initrd-2.2.12-10.img
root=/dev/sda6
read-only

:: Keterangan parameter selengkapnya:

boot=
Memberitahu device yang memiliki boot sector. Boot sector dibaca dari device ini dan di mount sebagai root.

Linear
Mengenerate linear sector addrress. Lihat dokumentasi LILO.

install=
Menginstal file yang telah ditentukan sebagi boot sector yang baru. Jika install tidak dipakai, /etc/lilo/boot.b dipakai sebagi default.

message=
Untuk menampilkan file teks, besarnya maksimum 65,535 byte.

verbose=
Menampilkan progress reporting. Option lain seperti -v dan -q. Lihat dokumentasi LILO.

backup=
Menyalin boot sector asli ke file .

force-backup
Sama dengan backup. Option ini menimpa salinan backup yang telah dibuat dan akan mengabaikan option backup bila keduanya dipakai.

Prompt
Meminta masukan saat boot.

timeout=
Mengeset waktu tunggu keyboard sebelum menjalankan option berikutnya. Defaultnya 5 detik. Masukkan value 0 jika ingin LILO menunggu sampai ada masukkan darii keyboard.

serial=
Mengijinkan masukan dari serial line dan keyboard ke LILO.

ignore-table
Mengabaikan tabel partisi yang corrupt.

password=
Memasang password untuk melindungi boot images.

restricted digunakan bersama dengan option password, restricted di sini berarti password lilo hanya akan berlaku/ditanyakan jika user MENULISKAN/MENGGUNAKAN paramater atau option tertentu pada saat booting linux (misalkan LILO: linux –s, linux root=/dev/hda1 rw init=/bin/sh, dll). Dan password TIDAK akan ditanyaakan jika kita booting TIDAK MENGGUNAKAN parameter (misalkan Lilo: linux).
password=t3rs3r4h berisi password lilo untuk booting (dalam hal ini berarti password lilonya adalah t3rs3r4h). Baca baca manualnya dengan mengetik perintah:
[root]# man lilo.conf

Setelah itu settinglah agar file /etc/lilo.conf hanya dapat terbaca oleh root.
[root]# chmod 600 /etc/lilo.conf

Jangan lupa untuk mengupdate konfigurasi /etc/lilo.conf yang baru.
[root]# /sbin/lilo

dan buat agar file /etc/lilo.conf bersifat immute (sehingga file /etc/lilo.conf ini tidak akan bisa diubah/diedit tanpa melakukan un-immute) :
[root]# chattr +i /etc/lilo.conf

Untuk melakukan perubahan/mengedit file /etc/lilo.conf harus dilakukan un-immute terlebih dahulu dengan perintah :
[root]# chattr -i /etc/lilo.conf



-----[02]. Melakukan pemeriksaan file-file log pada Linux


Cobalah periksa file-file log Linux anda (terutama yang terletak di direktori /var/log).
[root]# less /var/log/messages
[root]# less /var/log/maillog
[root]# less /var/log/xferlog



-----[03]. Melakukan backup

Seringkali penyusup masuk ke dalam sistem dan merusak dengan menghapus berkas/data yang dapat ditemui. Jika intruder ini berhasil menjebol sistem dan masuk sebagai super user (administrator), maka ada kemungkinan dia dapat menghapus seluruh berkas. Untuk itu, adanya backup yang dilakukan secara rutin merupakan sebuah hal yang esensial.


Untuk sistem yang sangat esensial, secara berkala perlu dibuat backup yang letaknya berjauhan secara fisik. Hal ini dilakukan untuk menghindari hilangnya data akibat bencana seperti kebakaran, banjir, gempa dan lain lain. Apabila data-data dibackup akan tetapi diletakkan pada lokasi yang sama, kemungkinan data akan hilang jika tempat yang bersangkutan mengalami bencana


Backup lebih baik dilakukan secara rutin dan secara menyeluruh. Kita bisa melakukan backup tiap hari misalnya atau tiap jangka waktu tertentu sesuai dengan kebutuhan dan tuntutan keamanan sistem kita. Sebagai medianya dapat digunakan harddisk, atau tape (lebih baik). Untuk melakukan backup direktori home (misal : /home) dan di bawahnya pada file /root/bkhome.tar.gz di hard sik yang sama, gunakan perintah berikut :

[root]# tar –cvzf ~/bkhome.tar.gz /home


Untuk keamanan yang lebih baik, ada beberapa file pada Linux yang perlu untuk kita konfigurasi. Kebanyakan file yang akan kita manipulasi ada di direktori /etc karena file-file konfigurasi terletk disana.



-----[04]. Memproteksi perintah-perintah linux tertentu

Kita bisa juga memproteksi/merestriksi perintah-perintah tertentu agar cuma bisa dijalankan oleh root. Ada kalanya perintah/program yang diinstal pada linux harus dilindungi agar tidak disalah gunakan oleh user lain sehingga dapat mengganggu keamanan sistem atau mengganggu user yang lain (misal : rpm, wall, mc, nmap, repeat, dll). Gunakan perintah chmod agar perintah tersebut cuma bisa dieksekusi oleh root (700), misalnya untuk merestriksi perintah rpm :
[root]# chmod 700 /bin/rpm
Cobalah untuk merestriksi perintah-perintah lainnya (contoh : wall, repeat, reboot, shutdown, poweroff, halt, dll).



-----[05]. Merestriksi perintah su (substitute user)


Untuk meningkatkan keamanan, kita perlu untuk membatasi jumlah user/menghalangi user tertentu agar tidak bisa menjadi root dengan perintah su (substitute user). Edit file /etc/pam.d/su :
[root]# vi /etc/pam.d/su

auth required /lib/security/pam_pwdb.so shadow nullok
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow use_authtok nullok
session required /lib/security/pam_pwdb.so
session optional /lib/security/pam_xauth.so

tambahkan 2 baris berikut ini :
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel

Baris di atas mengandung arti hanya anggota group wheel (user dengan gid = 10) saja yang bisa menjalankan perintah su menjadi root. Setelah itu, gunakan perintah berikut untuk memilih user-user mana saja yang bisa memakai su untuk root (bisa juga melalui userconf) :
[root]# usermod -G10 hakim

G adalah supplementary groups di mana user juga merupakan anggota dari group tersebut. “10” adalah nomor id dari group “wheel” dan hakim adalah nama usernya. Dengan perintah di atas, maka user dengan nama hakim akan dimasukkan ke dalam grup wheel. Untuk mengeceknya dapat digunakan perintah id :
[root]# id hakim

-----[06]. Mengkonfigurasi file /etc/inittab dan file /etc/fstab


:: Konfigurasi file /etc/inittab :


#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.

# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Things to run in every runlevel.
ud::once:/sbin/update

# Trap CTRL-ALT-DELETE
# ca::ctrlaltdel:/sbin/reboot -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon


KETERANGAN KONFIGURASI :

id:3:initdefault:
Kita bisa mengeset default run level sehingga secara otomatis akan booting dengan run level yang diinginkan (Jangan menggunakan run level 0 (halt) dan 6 (reboot)). Konfigurasi di atas berarti default runlevel adalah 3 (Full Multi User).

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/reboot
Dengan PERINTAH di atas maka tombol CTRL-ALT-DELETE akan dianggap sebagai perintah reboot. Untuk mendisablenya dapat dilakukan dengan cara menambahkan tanda komentar (#) sehingga perintah tersebut tidak akan dieksekusi :
# Trap CTRL-ALT-DELETE
# ca::ctrlaltdel:/sbin/reboot

# Run gettys in standard runlevels
Di bawah komentar ini berisi tty yang diaktifkan pada server yang secara default akan ada enam (tty1 – tty6). Virtual console ini dapat kita kurangi (misal : menjadi lima) dengan cara menambahkan tanda komentar (#):
# 6:2345:respawn:/sbin/mingetty tty6

Jangan lupa jalankan perintah berikut agar perubahan yang kita lakukan dibaca ulang :
[root]# /sbin/init q
Manual file /etc/inittab dapat dilihat dengan perintah :
[root]# man inttab


:: Konfigurasi /etc/fstab

File ini berisi filesistem-filesistem yang dimount secara otomatis pada saat sistem startup. Jika kita membagi partisi sistem dengan optimum, tentu akan lebih memudahkan dalam memanage sistem kita. Keuntungan dari multiple partition antara lain :
• Memudahkan mengatur back up dan upgrade
• Lebih cepat dalam proses booting (kasus tertentu)
• Kemampuan mengontrol file system yang dimount
• Proteksi dari SUID program
Kita bisa membuat option-option tertentu (misal noexec, nodev, dan nosuid) untuk partisi-partisi yang telah kita buat. Contoh isi file /etc/fstab :
/dev/hda11 / ext2 defaults 1 1
/dev/hda1 /boot ext2 nodev,noquota 1 2
/dev/hda8 /home ext2 exec,nodev,nosuid,rw,usrquota 1 2
/dev/hdc1 /var/www ext2 exec,nodev,suid,rw 1 2
/dev/hdc2 /var/ftp ext2 exec,nodev,suid,rw 1 2
/dev/hdc3 /cache ext2 exec,nodev,suid,rw 1 2
/dev/hdc4 /home2 ext2 exec,nodev,nosuid,rw,usrquota 1 2
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/hda9 /usr ext2 exec,dev,suid,rw 1 2
/dev/hda10 /var ext2 exec,dev,suid,rw 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda5 swap swap defaults 0 0
/dev/hda6 swap swap defaults 0 0
/dev/hda7 swap swap defaults 0 0

defaults berarti membolehkan semuanya (quota, read-write, and suid) dalam partisi tersebut. noquota berarti tidak mengeset users quotas dalam partisi ini. nosuid berarti tidak mengeset SUID/SGID access dalam partisi ini. nodev berarti tidak mengeset character atau special devices access dalam partisi ini. noexec berarti tidak mengeset eksekusi binary apapun dalam partisi ini. quota membolehkan users quotas dalam partisi ini. ro membolehkan read dalam partisi ini. rw membolehkan read-write dalam partisi ini. suid membolehkan SUID/SGID access dalam partisi ini. Pastikan untuk menambahkan option nosuid pada partisi-partisi tertentu terutama partisi home untuk menghindari kemungkinan pengaksesan root dengan program SUID. Agar lebih jelas, dapat lihat manualnya dengan perintah :
[root]# man fstab
Yang perlu kita perhatikan di sini adalah mengaktifkan nosuid, yang berarti tidak mengizinkan adanya file suid (misalkan pada direktori /home).





-----[07]. Mensetting unmask dan time out



::unmask

Perintah umask digunakan untuk menentukan mode penciptaan file baku/secara otomatis pada sistem. Jika file diciptakan tanpa mengindahkan setting permisi, pemakai secara tidak sengaja mungkin 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. Pastikan untuk membuat umask root 077, yang akan meniadakan permisi membaca, menulis, dan mengeksekusi bagi pemakai lain, kecuali dirubah secara eksplisit menggunakan chmod.

::Pembatasan waktu (time out)
Kita bisa mengeset berapa lama waktu logout secara otomatis jika ada shell yang tidak dipakai selama jangka waktu tertentu (time out), misal = 5 menit = 300 detik. Edit file /etc/profile (File ini berisi environment dan startup program). Pada bagian :
TMOUT=7200
ganti 7200 dengan 300
Dengan begitu jika ada console yang tidak kita gunakan dalam waktu tertentu/kita lupa tidak menutupnya maka secara otomatis akan menutup dalam waktu 300 detik.




-----[08]. Mengkonfigurasi file /etc/issue dan issue.net serta file/etc/securetty


::File etc/issue dan issue.net

File ini akan menampilkan jenis sistem operasi kita (sekaligus kernelnya) pada waktu telnet (file /etc/issue.net) dan waktu login secara lokal/langsung (file /etc/issue). Lebih baik kita mengganti isi file /etc/issue dan /etc/issue.net, sehingga dapat meminimalkan kerawanan keamanan jaringan.
[root]# vi /etc/issue
[root]# vi /etc/issue.net
Contoh isi file /etc/issue dan /etc/issue.net :
Welcome to spyrozone.net

::File /etc/securetty
File ini mengizinkan TTY device mana saja yang dapat dipakai oleh root untuk login. Edit file /etc/securetty dan disable TTY device dengan memberi tanda comment pada awal baris (#).


tty1 menjadi #tty1
tty2 #tty2
tty3 #tty3
tty4 #tty4
tty5 #tty5
tty6 #tty6
tty7 #tty7
tty8 #tty8



Dengan demikian tidak ada user yang bisa langsung menggunakan root untuk login, tetapi harus menggunakan user biasa baru setelah itu menggunakan program su (substitute user) untuk berbah menjadi root.




-----[09]. Proteksi Direktori /etc/rc.d/*


Direktori /etc/rc.d/ ini sangat penting karena file-file pada direktori akan dijalankan ketika sistem startup/booting. Khusus direktori /etc/rc.d/init.d/* berisi servis-servis yang akan dijalankan pada saat startup sebagai daemon. Pastikan direktori ini tidak bisa diakses oleh user selain root :
[root]# chmod -R 700 /etc/rc.d/*




-----[10]. Konfigurasi file /etc/sysctl.conf


File ini merupakan file konfigurasi kernel parameter pada saat run time. Ada baiknya file ini juga kita konfigurasikan, misal :
# Enable ignoring ping request (untuk mengkonfigurasi agar sistem kita ignore terhadap ping request)
net.ipv4.icmp_echo_ignore_all = 1
# Enable ignoring broadcasts request (agar sistem ignore terhadap broadcast request)
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable TCP SYN Cookie Protection (agar sistem terlindung dari SYN attack, yaitu salah satu jenis Denial of Service Attack (Dos))
net.ipv4.tcp_syncookies = 1
# Disable ICMP Redirect Acceptance (melindungi dari kemungkinan perubahan routing tables)
net.ipv4.conf.all.accept_redirects = 0
# Enable always defragging Protection (harus diaktifkan jika sistem kita adalah gateway untuk IP Masquerading)
net.ipv4.ip_always_defrag = 1

Agar konfigurasi di atas dieksekusi, jangan lupa untuk menjalankan perintah berikut :

[root]# /etc/rc.d/init.d/network restart

atau bisa juga dengan perintah :

[root]# service network restart







III. Penutup

------------



Wah, sebenarnya masih banyak lagi hal-hal yang harus anda lakukan untuk meningkatkan keamanan mesin anda. Namun, sepertinya kita harus berpisah sampai disini karena keterbatasan waktu ;)



Sampai jumpa... ^_^

0 komentar

Post a Comment

Thank You For Comment in My Site

Followers

Call me

My e-mail is
1. andraeinstein@yahoo.co.id
2. andrachemical@yahoo.com
3. andraeinstein@gmail.com

My site is
1. andrachemical.blogspot.com
2. andraeinstein.blogspot.com
3. creamcommunity.blogspot.com
4. andrachemical.cc.cc

  ©This Website is Edited by Nusendra Hanggarawan Copyright at 2009 and this site is protected by COPYSCAPE.