Keamanan kini bukan lagi menjadi kebutuhan sampingan, melainkan menjadi kebutuhan utama. Hal ini dikarenakan majunya teknologi internet membuat pengembangan aplikasi beralih pada pengembangan berbasis web. Sebab pengembangan dalam bentuk web dapat dijalankan pada multi platform dan mendukung konektivitas yang tinggi dan mudah. Fenomena tersebut membutuhkan web server yang aman untuk mendukung keberjalanan fungsi dari aplikasi.
FreeBSD merupakan sebuah operating system Unix gratis. Sistem ini dikembangkan pertama kali pada 1993 hingga kini menjadi mayoritas dari web server pada internet. Hal ini dikarenakan karena mudah didapat dan mendukung banyak software linux secara built-in.
Tulisan ini memaparkan cara melakukan instalasi web server yang aman, hal-hal yang diperlukan untuk memperkuat web server dari gangguan, maintenance dan usaha khusus pada mesin dengan sistem operasi berbasis Linux/Unix. Web server yang akan di-install adalah apache pada mesin dengan OS FreeBSD. Kemudian ditambahkan MySQL untuk mendukung database. Berikutnya aplikasi yang akan ditambahkan adalah WordPress. Terakhir dilakukan hardening pada web server.
1. Instalasi
Pada bagian ini dijelaskan secara langkah demi langkah untuk melakukan instalasi FreeBSD, Apache, MySQL, PHP, dan aplikasi WordPress.
1.1 Instalasi FreeBSD
Check integritas FreeBSD
Untuk melakukan instalasi FreeBSD yang aman perlu dilakukan uji integritas data yang didownload dari internet. Yaitu memperhatikan nilai hash value file instalasi yang di-release pada https://www.freebsd.org/releases/9.2R/announce.html.
File FreeBSD yang digunakan untuk instalasi adalah FreeBSD-9.2-RELEASE-i386-dvd1.iso. Berikut dapat diamati nilai hash dari FreeBSD.
Gambar 1 Release hash value untuk pengujian integritas file
Untuk file .iso yang digunakan, dapat diamati nilai hash untuk pengujian integritas adalah :
MD5 : 917104df8d559f2ec981e98bfdf78e05
SHA-256 : a1bba5668792cfc8197c0f81b28cdd17e912a1ae5816887f8518bf1536a99af8
Pengujian di bawah ini dilakukan dengan menggunakan hashing pada library.php. Nerikut adalah source code program pengujian yang digunakan.
Gambar 2 source code pengecekan hash value
Hasil pengecekan:
Gambar 3 hasil pengecekan hash value
Didapatkan hasil sesuai dengan yang di-release oleh freebsd.org. Tingkat kesulitan dalam memanipulasi nilai hash SHA256 menjamin bahwa file yang akan digunakan untuk instalasi tidak diubah-ubah dan aman.
Karena file terjamin benar, instalasi FreeBSD dapat dilakukan dengan file FreeBSD-9.2-RELEASE-i386-dvd1.iso
.
Instalasi FreeBSD
FreeBSD digunakan sebagai OS pada mesin. Konfigurasi saat install adalah default sehingga yang perlu diatur adalah IP address.
IP address yang digunakan adalah static IP adress 192.168.10.135.
Instalasi Port
Port pada freeBSD digunakan untuk mengaktifkan services yang dapat digunakan pada mesin FreeBSD. Instalasi port dilakukan dengan mengikuti langkah-langkah sebagai berikut :
portsnap fetch
portsnap extract
portsnap fetch update
Instalasi Lynx
Lynx merupakan browser simpel yang dapat digunakan pada mesin FreeBSD, sehingga memudahkan proses debugging saat melakukan instalasi yang dekat hubungannya dengan website. langkah sebagai berikut :
cd /usr/ports/www/lynx
make install clean
Ubah Master Site
Master site merupakan prioritas utama mesin freeBSD untuk mencari update dan file-file instalasi :
MASTER_SITE_OVERRIDE=ftp://ftp.itb.ac.id/pub/FreeBSD/ports/dist
Setting Proxy
Proxy server menjadi trend dari suatu organisasi atau perusahaan untuk mengatur akses website keluar. Untuk mengatur mesin FreeBSD mendukung proxy maka pengaturan sebagai berikut menjadi penting :
setenv http_proxy http://[proxy username]:[proxy password]@proxy_domain:port/
setenv https_proxy http://[proxy username]:[proxy password]@proxy_domain:port/
setenv ftp_proxy http://[proxy username]:[proxy password]@proxy_domain:port/
1.2 Install Apache
Check Integritas Apache
Pengecekan integritas file dilakukan sama seperti pada proses di awal, yaitu saat mengecek integritas file installer FreeBSD. Lakukan proses pengecekan ini sebelum instalasi dilakukan.
Secara default, FreeBSD melakukan pengecekan terhadap semua file yang di-fetch dari ftp saat proses instalasi. Pengecekan secara otomatis dilakukan dengan menggunakan hash SHA-256. Di dalam port collection FreeBSD, terdapat nilai-nilai hash value dari semua file yang dapat di-install ke FreeBSD server. Nilai hash SHA-256 ini disimpan dalam file distinfo pada masing-masing folder program di dalam port. Misal, untuk Apache22, nilai hash value terdapat pada /usr/ports/www/apache22/distinfo
. Nilai hash inilah yang digunakan oleh FreeBSD untuk melakukan pengecekan SHA-256 pada file-file yang di-fetch.
Pengecekan dapat juga dilakukan secara manual dengan menggunakan source code yang ada di bagian pengecekan file FreeBSD. Nilai hash sebenarnya untuk pembanding sudah didapatkan di masing-masing folder dalam port collection FreeBSD. Untuk file yang didownload, dapat diperoleh dari /usr/ports/distfiles/
. Pengecekan dilakukan pada semua file yang ada.
Selain dengan membandingkan nilai hash dengan distinfo file, dapat juga dibandingkan dengan nilai hash yang di-release di internet.
Pengujian integritas apache22 dapat ditentukan dari file httpd-2.2.25.tar.bz2
yang diunduh. File unduhan tersebut dapat dihitung SHA256-nya dengan kode PHP dan dicocokkan dengan SHA256 yang terdapat pada file distinfo httpd-2.2.25.tar.bz2
. Hal tersebut ditunjukkan sebagai berikut :
Gambar 4 Pengecekan integritas apache22 menggunakan informasi pada distinfo
Pengujian integritas juga dapat dilakukan dengan mencocokkan nilai MD5 yang tersedia pada website apache yang diakses dengan secure (HTTPS) dengan hasil perhitungan dengan kode PHP seperti ditunjukkan sebagai berikut :
Gambar 5 MD5 hash value dari apache22 yang didapatkan dari internet
Gambar 6 Pengecekan integritas apache22 menggunakan md5 dengan informasi pada situs di atas
Terkadang pengecekan integritas tidak hanya menggunakan SHA256 dan MD5 saja, melainkan dengan memverifikasi apakah public key penyedia merupakan public key yang baik atau tidak. Pengujian ini dibantu dengan library gnupg pada mesin FreeBSD, yang perlu di-install terlebih dahulu. File yang akan diverifikasi merupakan httpd-2.2.25.tar.bz2.asc
dengan isi sebagai berikut :
Gambar 7 Isi file signature gpg dari httpd-2.2.25.tar.bz2
uji file dengan command
gpg httpd-2.2.25.tar.bz2.asc
yang dapat dilihat sebagai berikut :
Gambar 8 pengecekan gpg pada signature apache
Hasil yang didapatkan seperti gambar dibawah menyatakan bahwa public key yang diajukan tidak dikenal signature-nya. Hal ini disebabkan dalam lokal mesin yang tidak memiliki kunci tersebut.
Gambar 9 pengecekan signature tanpa public key untuk mendapatkan RSA key ID
Agar mesin FreeBSD dapat mengenali kunci tersebut maka perlu diperbaharui katalog kunci pada mesin FreeBSD. Hal ini dapat dilakukan dengan menggunakan keyserver yang terdapat pada MIT. hal ini dapat dilakukan dengan command sebagai berikut :
gpg –keyserver pgpkeys.mit.edu --recv-key [RSA Key ID]
hasilnya dapat dilihat sebagai berikut :
Gambar 10 pengecekan signature dengan mengambil public key menggunakan RSA key ID
Kemudian dengan menjalankan kembali command yang sebelumnya maka didapat kan hasil sebai berikut :
Gambar 11 pengecekan signature dengan public key yang didapatkan
Kemudian dapat terlihat fingerprint dari key tersebut adalah milik William A. Rowe, Jr. dengan user id dan email seperti tertera tersebut.
Gambar 12 validasi public key yang digunakan
Install Apache
Apache merupakan web server yang mudah digunakan. instalasi pada mesin FreeBSD sebagai berikut :
cd /usr/ports/www/apache22
make install clean
echo 'apache22_enable="YES"' >> /etc/rc.conf
kemudian edit konfigurasi pada httpd.conf
dengan :
ee /usr/local/etc/apache22/httpd.conf
uncomment ServerName host.example.com:80
ubah nama ServerName menjadi localhost
kemudian comment LoadModule unique_id_module sebagai berikut
Gambar 13 Hilangkan mod_unique_id
cari DirectoryIndex index.html -> DirectoryIndex index.html index.htm index.php
kemudian tambahkan line sebagai berikut :
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .php
tutup file httpd.conf. kemudian ketikkan :
/usr/local/etc/rc.d/apache22 start
dan uji dengan lynx dengan perintah sebagai berikut :
lynx localhost
hasilnya dapat dilihat sebagai berikut :
Gambar 14 Pengetesan Apache Web Server pada Lynx
1.3 Install MySQL
Check Integritas MySQL
Pengujian integritas mysql-5.5.34.tar.gz
seperti pengujian integritas httpd diatas. File unduhannya dapat dihitung nilai SHA256-nya dengan kode PHP dan dicocokkan dengan SHA256 yang terdapat pada file distinfo mysql-5.5.34.tar.gz
. Hal tersebut ditunjukkan sebagai berikut:
Gambar 15 Pengecekan integritas mysql server menggunakan informasi pada distinfo
Dapat dicocokkan nilai SHA256-nya dengan nilai yang tersedia di situs SkySQL. Situs tersebut diakses secara secure (HTTPS). Penulis tidak menemukan koneksi yang secure dan memberikan nilai SHA256 pada mysql.org. Walaupun demikian penulis menemukan nilai SHA256 pada situs SkySQL yang notabenenya merupakan situs salah satu pengembang MySQL dengan dokumentasi yang baik untuk semua released file MySQL. Kemudian nilai MD5 yang ditemukan di situs tersebut dibandingkan dengan nilai SHA256 yang dihitung di client dengan hasil sebagai berikut :
Gambar 16 Nilai hash MD5 dari mysql-5.5.34
Gambar 17 Pengecekan integritas mysql server menggunakan md5 yang direlease
Install MySQL
MySQL merupakan database simpel yang dapat digunakan pada web server. instalasi dapat dijalankan mengikuti langkah berikut :
cd /usr/ports/databases/mysql55-server
make install clean
echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start
/usr/local/bin/mysqladmin -u root password 'your-password'
Perhatian password ini merupakan password database yang sebaiknya tidak dilupakan
Apabila lupa, reset password mysql dapat dilakukan dengan mengikuti langkah-langkah seperti pada http://www.cyberciti.biz/faq/mysql-change-root-password/
1.4 Instalasi PHP
Check Integritas PHP
Pengujian integritas php-5.4.21.tar.bz2
seperti pengujian integritas httpd diatas. File unduhannya dapat dihitung nilai SHA256-nya dengan kode PHP dan dicocokkan dengan SHA256 yang terdapat pada file distinfo php-5.4.21.tar.bz2
. Hal tersebut ditunjukkan sebagai berikut :
Gambar 18 Pengecekan integritas php menggunakan informasi pada distinfo
Pengujian integritas juga dapat dilakukan dengan mencocokkan nilai MD5 yang tersedia pada situs php dengan hasil perhitungan dengan kode PHP seperti ditunjukkan sebagai berikut:
Gambar 19 Nilai hash MD5 dari php 5.4.21
Gambar 20 Pengecekan integritas PHP menggunakan md5 yang di-release
Install PHP
PHP adalah salah satu script programing yang lazim digunakan pada web server. PHP dapat digunakan pada mesin FreeBSD. Langkah instalasinya antara lain sebagai berikut :
1. masuk ke directory php5
cd /usr/ports/lang/php5
make config
2. pilih apache module
3. kemudian masukkan perintah berikut :
make install clean
4. pilih MySQL and MySQLi
5. kemudian tambahkan extension PHP5 dengan masuk ke directory php5-extensions
cd /usr/ports/lang/php5-extensions/
make config
6. pilih MySQL database Support and MySQLi database Support
7. Terakhir masukkan command berikut
make install clean
1.5 Instalasi WordPress
Check Integritas WordPressM
Pengujian integritas wordpress-3.7.1.tar.gz.md5
seperti pengujian integritas httpd diatas. File unduhannya dapat dihitung nilai MD5-nya dengan kode PHP dan dicocokkan dengan MD5 yang terdapat pada situs. Hal tersebut ditunjukkan sebagai berikut :
Gambar 21 Nilai hash MD5 file wordpress
Gambar 22 Pengecekan integritas wordpress menggunakan md5
Install WordPress
WordPress merupakan CMS (Content Management System) yang sering digunakan untuk blog, namun kini sudah marak digunakan sebagai CMS pada situs apapun. Instalasi wordpress dapat mengikuti langkah sebagai berikut :
cd
fetch http://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php
kemudian atur variabel database pada wordpress dengan perintah berikut :
ee ~wordpress/wp-config.php
atur variabelnya sebagai berikut :
db_name : dbwordpress
db_user : root
db_password : password
perhatian variabel diatas merupakan variabel yang disesuaikan dengan instalasi pada MySQL
Terkahir pindahkan file konfigurasi pada folder kerja dengan command berikut :
mv ~/wordpress/ /usr/local/www/apache22/data/
Hasil Instalasi WordPress
Gambar 23 Website diakses pada browser
Gambar 24 wp-admin login
Gambar 25 wordpress dashboard
2. Hardening
2.1 Menghilangkan Service, Aplikasi, dan Protokol yang tidak diperlukan
Jalankan Modul yang Dibutuhkan Saja
Jalankan hanya modul yang dibutuhkan sebagai web server
Sebagai web server, apache hanya membutuhkan modul sebagai berikut:
- core.c
- prefork.c
- httpd_core.c
- mod_so.c
Gambar 26 Jalankan hanya modul yang dibutuhkan
Lakukan configtest
apache untuk memastikan apache tetap berjalan
Gambar 27 Hasil pengecekan ulang apache
Sembunyikan informasi-informasi pada web server
Sembunyikan informasi mengenai server apache yang digunakan, karena informasi ini dapat dimanfaatkan oleh penyerang. Edit file /usr/local/etc/apache22/extra/httpd-default.conf
seperti pada gambar berikut. Edit bagian ServerTokens
yang tadinya bernila ‘Full’ menjadi ‘Prod’. Seperti terlihat pada Gambar, ServerTokens Full
akan menyediakan semua informasi mengenai tipe OS dan modul yang digunakan, sedangkan ‘Prod’ hanya menyediakan least information.
Gambar 28 ServerTokens masih bernilai Full
Gambar 29 ServerTokens diubah menjadi bernilai Prod
Masih pada file yang sama, ubah juga ‘ServerSignatures’ dari bernilai ‘On’ menjadi ‘Off’. Ini akan menyembunyikan informasi mengenai versi server yang digunakan dan lain-lain seperti terlihat pada Gambar berikut.
Gambar 30 ServerSignature masih bernilai On
Gambar 31 ServerSignature bernilai Off
Hilangkan kemungkinan user mendapatkan informasi mengenai file-file yang ada pada server dengan mematikan autoindex pada file yang sama dengan di atas.
Gambar 32 Nonaktifkan autoindex
Tambahkan TraceEnable Off
pada file httpd.conf
untuk menonaktifkan metoda Trace. Metoda ini sering digunbakan untuk XSS attack.
Gambar 33 Line tambahan untuk file httpd.conf
Sebelum ditambahkan TraceEnable Off
, trace dapat dilakukan seperti terlihat pada Gambar di bawah. Proses tracing tidak ditolak.
Gambar 34 Sebelum TraceEnable Off
Setelah ditambahkan, proses tracing ditolak dan menghasilkan halaman error 405.
Gambar 35 Metoda tracing ditolak, error 405
DNS Server Binding pada FreeBSD
FreeBSD menyediakan fasilitas untuk melakukan DNS Server Binding. Edit file /etc/rc.conf
seperti pada gambar di bawah ini.
2.2 Konfigurasi Users, Groups, dan Autentikasi
Password Hashing
Password yang ada pada server, disimpan pada file /etc/master.passwd
Gambar 37 Ubah isi /etc/master.passwd
Pada Gambar berikut, akan tampak bahwa password disimpan tidak dalam bentuk plaintext, namun dalam bentuk hash value.
Gambar 38 Password disimpan dalam bentuk hash
Pada gambar di atas, password untuk user ‘renard’ disimpan dengan nilai hash. Pada awal hash value, terdapat simbol $6, yang menunjukkan hashing dilakukan dengan SHA256 atau SHA512.
Penggunaan SHA512 dapat diubah-ubah sesuai keinginan (dapat menggunakan SHA256, MD5, blowfish, dan DES hash) pada file /etc/login.conf
seperti pada Gambar di bawah.
Gambar 39 SHA512 sebagai format password
SSH Allow User
Untuk hanya memperbolehkan beberapa login melalui remote komputer dengan SSH, dapat dilakukan dengan mengubah file /etc/ssh/sshd_config
.
Tambahkan baris baru seperti pada Gambar di bawah untuk memperbolehkan hanya root yang melakukan ssh melalui IP tertentu.
Gambar 40 Menentukan batasan IP remote login root
Setelah baris baru ditambahkan, reload service ssh dengan command service sshd reload
pada shell. Perintah-perintah di atas akan menyebabkan remote login dengan user lain tidak dapat dilakukan seperti pada gambar di bawah ini.
Gambar 41 Mencoba remote login selain root
Supaya user lain dapat melakukan login ssh juga, ganti AllowUsers
di atas menjadi:
Gambar 42 Memperbolehkan user lain untuk remote login
Cukup tambahkan root@192.168.10.135
dengan user lain dan alamat IP yang diperbolehkan. Setelah menambahkan user, lakukan reload service lagi (service sshd reload)
SSH Securing
Berikut adalah beberapa hal yang dapat dilakukan untuk mengamankan SSH yang digunakan:
Setting /etc/ssh/sshd_config
ubah :
– Waktu time-out login
ClientAliveInterval 600
ClientAliveCountMax 0
– Disable rhost file
IgnoreRhosts yes
– Disable host based authentication
HostbasedAuthentication no
– Empty password tidak diperbolehkan
PermitEmptyPasswords no
– Authentication, Uncomment:
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 6
MaxSessions 10
Gambar 43 Menentukan proses autentikasi
Gambar 44 Mematikan hostbased authentication
Gambar 45 Mematikan rhost file
Gambar 46 Melarang password kosong
Disable Root Login
Supaya tidak dapat dilakukan login langsung sebagai root. Privilege root hanya bisa dimiliki oleh suatu user yang ada di group wheel
. Group wheel
adalah grup yang ada pada FreeBSD yang dapat mengakses privilege root. Atur supaya memang hanya user yang memiliki kepentingan yang ada pada group wheel.
Untuk melakukan hal ini, ubah isi file /etc/ttys
, ganti semua secure menjadi insecure.
Gambar 47 Ubah isi file /etc/ttys
Autologout untuk root idle
Untuk membuat supaya ada waktu batasan dimana root tidak melakukan aktivitas, tambahkan baris berisi set autologout = x
seperti pada gambar di bawah. Dengan x adalah banyaknya menit dimana root tidak melakukan aktivitas sebelum auto logout dijalankan.
Gambar 48 Tambahan pada file /root/.profile
untuk pengaturan batas waktu
2.3 Konfigurasi Kendali untuk Resource
Process Accounting
Process Accounting digunakan untuk melakukan monitoring pada FreeBSD. Melakukan tracking command yang diberikan oleh user.
Log yang dihasilkan dapat dibaca dengan perintah sa FILES
dengan FILES
/var/account/acct
Berikut adalah command yang digunakan untuk mengaktifkan process accounting
# touch /var/account/acct
# chmod 600 /var/account/acct
# accton /var/account/acct
# echo 'accounting_enable="YES"' >> /etc/rc.conf
Berikut adalah contoh saat file acct dipanggil:
Gambar 49 Proses monitoring
Install Port Audit
Fasilitas Port audit dapat digunakan untuk mengawasi port collection pada FreeBSD.
Lakukan perintah sebagai berikut:
cd /usr/ports/ports-mgmt/portaudit && make install clean
Gambar 50 Instalasi Port Audit
/usr/local/sbin/portaudit -Fda
Gambar 51 Menjalankan port audit pertama kali dengan meng-update database auditfile
Berikutnya, hasil port audit -Fda dapat diamati sebagai berikut:
Gambar 52 Hasil proses port audit
Portaudit -Fda
digunakan untuk melakukan update database auditfile. Untuk berikutnya, jika hanya ingin melakukan audit saja, cukup dengan perintah portaudit -a
Jika terdapat masalah, user akan disarankan untuk melakukan instalasi ulang secepatnya.
Atur File Permission
untuk File dan Direktori pada WordPress.
Untuk File dan Direktori pada WordPress, atur supaya hanya pemilik yang memiliki akses penuh, yang dapat melakukan read dan write. Sedangkan untuk user lain, atur supaya hanya bisa read saja. Hal ini dapat dilakukan dengan menggunakan perintah chmod
seperti pada gambar di bawah ini.
Gambar 53 Pengaturan hak akses file wordpress
Khusus untuk file wp-config.php
, atur supaya user lain tidak dapat melakukan apapun, seperti pada gambar berikut.
Gambar 54 Pengaturan hak akses file wp-config.php
2.4 Pemasangan Kendali Keamanan Tambahan
Enabling Internet Protocol Firewall (IPFW)
IPFW adalah perintah untuk membantu filter paket IP. IPFW adalah fungsi bawaan dari FreeBSD, namun ter-install dalam modul terpisah sehingga perlu diaktifkan terlebih dahulu. langkah-langkahnya sebagai berikut :
edit file rc.conf
dengan perintah berikut :
ee /etc/rc.conf
kemudian tambahkan dua buah baris berikut pada file rc.conf
:
firewall_enable="YES"
firewall_script="/usr/local/etc/ipfw.rules"
tutup file rc.conf
. Berikutnya memasukkan rules firewall pada /usr/local/etc/ipfw.rules
dengan perintah berikut :
ee /usr/local/etc/ipfw.rules
kemudian tambahkan rule berikut pada file ipfw.rules
:
IPF="ipfw -q add"
ipfw -q -f flush
#loopback
$IPF 10 allow all from any to any via lo0
$IPF 20 deny all from any to 127.0.0.0/8
$IPF 30 deny all from 127.0.0.0/8 to any
$IPF 40 deny tcp from any to any frag
# statefull
$IPF 50 check-state
$IPF 60 allow tcp from any to any established
$IPF 70 allow all from any to any out keep-state
$IPF 80 allow icmp from any to any
# open port ftp (20,21), ssh (22), mail (25)
# http (80), dns (53) etc
$IPF 110 allow tcp from any to any 21 in
$IPF 120 allow tcp from any to any 21 out
$IPF 130 allow tcp from any to any 22 in
$IPF 140 allow tcp from any to any 22 out
$IPF 150 allow tcp from any to any 25 in
$IPF 160 allow tcp from any to any 25 out
$IPF 170 allow udp from any to any 53 in
$IPF 175 allow tcp from any to any 53 in
$IPF 180 allow udp from any to any 53 out
$IPF 185 allow tcp from any to any 53 out
$IPF 200 allow tcp from any to any 80 in
$IPF 210 allow tcp from any to any 80 out
# deny and log everything
$IPF 500 deny log all from any to any
kemudian lakukan reboot pada mesin FreeBSD
setelah reboot jalankan kembali ipfw.rules
dengan command berikut :
terakhir cek apakah rules sudah diimplementasikan oleh mesin FreeBSD dengan :
ipfw list
hasilnya dapat dilihat sebagai berikut :
Gambar 56 Hasil ipfw list
Instalasi Intrusion Detection System (IDS)
1. Tripwire
Tripwire dapat digunakan untuk mengawasi integritas file. Tripwire akan memberikan notifikasi apabila ada file yang diubah atau corrupt. Instalasi tripwire dapat diamati pada gambar berikut.
Gambar 57 Command untuk instalasi tripwire
Gambar 58 Proses Instalasi Tripwire berhasil
2. Advanced Intrusion Detection Environment (AIDE)
Sama seperti tripwire, AIDE digunakan untuk mengecek integritas file. Pengecekan integritas dengan AIDE dilakukan dengan mengecek config file
yang ada dan dibandingkan dengan database regex milik AIDE.
Proses instalasi dapat diamati seperti pada gambar berikut :
Gambar 59 Command untuk instalasi AIDE
Gambar 60 Proses Instalasi AIDE berhasil
3. Security Maintenance
3.1 Data backup
Backup server penting dilakukan sebagai langkah mitigasi seandainya terjadi kerusakan pada server, baik kerusakan secara fisik maupun software yang corrupt.
Backup server pada FreeBSD dapat dilakukan dengan menggunakan dump. Dump akan memeriksa file pada filesystem dan menentukan file yang perlu di-backup. File output memiliki tipe data dump dan bisa disimpan pada media lain sebagai backup.
Berikut adalah contoh penggunaan program dump. Pada kasus ini yang dipartisi adalah partisi disk ad0p3
dan di-backup ke /backup/ad0p3.dump
.
Gambar 61 Contoh Backup dengan Program Dump
4. Linux/Unix Security
4.1 Patch Management
Patch management diterapkan pada FreeBSD untuk selalu menjamin bahwa server selalu up-to-date, sehingga isu keamanan dapat diminimalisir. Hal ini dilakukan dengan cara terus memperbaharui software yang digunakan pada CPU.
Untuk dapat melakukan fungsi ini, kita akan menggunakan system tools sebagai berikut.
a. Portmanager – tools utama pada FreeBSD yang digunakan untuk melakukan utilitas port update
b. Portsnap – merupakan sistem yang digunakan untuk mendistribusikan FreeBSD ports tree. Portsnap akan memberikan snapshot dari ports tree setiap sekitar satu jam sekali. Snapshot ports ini akan dibangkitkan, dikemas ulang, dan akan ditandatangani secara kriptografik. File yang dihasilkan akan didistribusikan melalui HTTP
c. pkg_version – merupakan daftar dari package yang terinstal dengan versi yang lebih lama dibandingkan yang ada saat ini
ketiga utilitas di atas, akan bekerja bersama untuk menjaga FreeBSD agar tetap up-to-date. Untuk memaksimalkan ketiga utilitas tersebut, berikut adalah langkah-langkah yang akan dilakukan:
Instalasi portmanager
# cd /usr/ports/ports-mgmt/portmanager
# make install clean
Memperbaharui koleksi ports dari FreeBSD
# portsnap fetch extract
Menampilkan daftar ports yang kadaluarsa
# pkg_version -vIL=
Dengan:
- v : mengaktifkan output verbose
- I : menggunakan setting index file untuk menampilkan apakah package sudah kadaluarsa atau tidak (untuk menampilkan hasil lebih cepat)
- L= : membatasi output dari package dengan status flag yang tidak =
- L’<’ : membatasi output dari package dengan status flag yang tidak <
Contoh log hasil command tersebut, adalah:
bash-3.1.17 < needs updating (index has 3.2.17_2)
gettext-0.14.5_2 < needs updating (index has 0.16.1_3)
libtool-1.5.22_2 < needs updating (index has 1.5.22_4)
linux_base-fc-4_9 < needs updating (index has 4_10)
Untuk melakukan update pada ports yang ter-install, akan dijalankan baris perintah sebagai berikut:
# portmanager –u
Baris perintah ini akan melakukan update pada ports dengan urutan berdasarkan pada dependencies ports yang ter-install. Jika port gagal untuk diperbaharui, maka port tersebut akan ditandai “ignored”. Portmanager akan terus memperbaharui semua port yang tidak ditandai dengan flag “ignored”, selama ports tersebut tidak memiliki dependencies yang memiliki flag “ignored”.
Untuk melakukan proses update pada salah satu software saja dapat dilakukan dengan cara sebagai berikut: (contohnya memperbaharui port bash pada shell) ‘
# portmanager shells/bash -l -u –f
Baris perintah ini akan melakukan logging update ports yang dilakukan, dimana semua dependencies yang terkait dengan ports bash ini juga akan dilakukan proses update.
4.2 Application Security Using a Chroot Jail
FreeBSD jail merupakan suatu virtualisasi dari pembagian sistem-sistem yang ada di dalam FreeBSD menjadi suatu bagian yang lebih kecil. Setiap virtualisasi atau bagian kecil tersebut bagaikan berjalan pada masing-masing mesinnya. setiap program yang berjalan pada masing-masing jail tidak dapat dilihat dari program aslinya. Salah satu cara untuk membuat atau memodifikasi jail adalah dengan menggunakan ezjail.
Install ezjail
Pertama lakukan installasi ezjail port
# cd /usr/ports/sysutils/ezjail
# make install clean
# mkdir /usr/(nama folder jail)
# sysinstall
Pada saat sysinstall
, lakukan hal-hal berikut.
• Pada menu pilih “Custom”.
• Pilih “Options” dan tujukan kursor ke “Install Root /”. Tekan spasi dan ubah “/” ke “/usr/(nama folder jail)”. Tekan ‘q’ untuk keluar.
• Pilih “5 Distributions” -> “minimal”.
• Pilih “6 Media” , dan pilih media yang digunakan untuk installasi jail
• Jika sudah semua , pilih “7 Commit”.
• Jika muncul pertanyaan, “Visit the general configuration menu for a chance to set any last options?” , pilih NO
Jika berhasil maka akan terbentuk beberapa directory
# cd /usr/jails/webserver
# ls
.cshrc boot libexec rescue tmp
.profile dev media root usr
COPYRIGHT etc mnt sbin var
bin lib proc sys
#
Edit rc.local
Pada host machine, tambahkan di /etc/rc.local
:
ifconfig_em1_alias0="inet 192.168.0.240 netmask 255.255.255.255"
jail_set_hostname_allow="NO"
jail_enable="YES"
jail_list="webserver"
jail_interface="em1"
jail_devfs_enable="YES"
jail_procfs_enable="YES"
jail_webserver_rootdir="“/usr/(nama folder jail)"
jail_webserver_hostname="testjail"
jail_webserver_ip="192.168.0.240"
jail_webserver_devfs_ruleset="devfsrules_jail"
Catatan: jika terdapat banyak jail sesuaikan jail_list dengan nama jail yang ada
Edit rc.conf
Edit atau buat rc.conf
pada jailnya /usr/jails/webserver/etc/rc.conf
:
hostname="testjail"
ifconfig_rl0="inet 192.168.0.240 netmask 255.255.255.0"
defaultrouter="192.168.0.254"
rpcbind_enable="NO"
clear_tmp_enable="YES"
sendmail_enable="YES"
sshd_enable="YES"
Copy resolv.conf
# cp /etc/resolv.conf /usr/(nama folder jail)/etc/
Menjalankan jail
# /etc/rc.d/jail start
Configuring jails:.
Starting jails: testjail.
Jika berhasil , lihat jail yang berjalan sekarang
# jls
JID IP Address Hostname Path
1 192.168.0.240 testjail /usr/(nama folder jail)
Ubah password root
# jexec 1 touch /etc/fstab
# jexec 1 passwd
Changing local password for root
New Password:
Retype New Password:
Edit SSHD_config
Setelah itu buat user baru. aktifkan ssh, pada sshd_config, edit listen address-nya seperti ini :
ListenAddress 192.168.0.240
perintah-perintahnya :
# jexec 1 login
# su
# /etc/rc.d/sshd stop
# ee /etc/ssh/sshd_config
# /etc/rc.d/sshd start
Troubleshooting
Ketika tidak dapat melakukan ping ke jaringan lokal maka tambahkan pada host machine di /etc/sysctl.conf
:
security.jail.allow_raw_sockets=1
ketika mencoba menjalankan “named” di dalam freeBSD jail muncul error seperti ini :
/etc/rc.d/named: WARNING: devfs_domount(): Unable to mount devfs on /var/named/dev
devfs rule: ioctl DEVFSIO_RAPPLY: Operation not permitted
devfs rule: ioctl DEVFSIO_RAPPLY: Operation not permitted
untuk mengatasinya, tambahkan baris berikut pada /etc/rc.conf
di dalam jail
named_chrootdir=""
Kemudian jalankan perintah berikut pada host machine , sesuaikan dengan lokasi path masing2 jail
# mount -t devfs devfs /usr/jails/dnsserver/var/named/dev/
# devfs -m /usr/jails/dnsserver/var/named/dev/ rule -s 1 applyset
# devfs -m /usr/jails/dnsserver/var/named/dev/ rule apply path null unhide
# devfs -m /usr/jails/dnsserver/var/named/dev/ rule apply path random unhide
Penulis
Alan Yudhautama (23213028)
Elian Daiva (23213021)
Galih Gilang (23213098)
Hadi Rasyid Sono (13209107)
M Ridho Dewanto (23213088)
Mochammad Fadhli Zakiy (23213127)
Muhammad Abduh (23213153)
Muhammad Akbar Jamaludin (23213020)
Renard Xaviero Adhi Pramono (23213031)
Retri Derry (23213057)
Yoko Hugo (23213060)