Secure Webserver Installation, Hardening, Security Maintenance and Adding Linux/Unix Security Only Configuration

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.




Gambar 36 DNS server binding

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 :




Gambar 55 ipfw.rules

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)

Hardening CentOS Security

William Stallings dan Lawrie Brown dalam bukunya yang berjudul Computer Security: Principles and Practice menulis tentang langkah-langkah pengamanan sistem yang menggunakan sistem operasi Linux / UNIX. Secara garis besar, langkah-langkah tersebut adalah:

  • Patch Management
  • Application and Service Configuration
  • Users, Groups, and Permissions
  • Remote Access Controls
  • Logging
  • Application Security Using a chroot jail
  • Security Testing

Berikut adalah langkah-langkah implementasi di atas secara spesifik pada sistem operasi CentOS. Setelah selesai proses basic instalasi pastikan terhubung dengan internet, sebelum dilakukan patching atau pembaharuan dan instalasi paket periksa alamat repositori yang dituju apakah sudah benar dan terpecaya.

Patch Management

Update CentOS untuk memastikan sistem dan aplikasi yang terpasang menggunakan security patch terbaru. Perintah yang digunakan untuk melakukan update CentOS adalah menggunakan perintah “yum install update”.

Application and Service Configuration

Instalasi aplikasi-aplikasi, seperti apache dan mysql, dilakukan dengan menggunakan yum. Khusus untuk OpenSSH-server instalasi dilakukan secara manual karena versi OpenSSH yang ada pada repository CentOS bukan merupakan versi OpenSSH terbaru. OpenSSH versi terbaru digunakan karena pada versi terbaru celah-celah keamanan yang ada pada versi-versi sebelumnya telah diperbaiki. Langkah-langkah instalasi OpenSSH-server secara manual dilakukan dengan menggunakan referensi berikut:  Quick and dirty manual compile of OpenSSH on CentOS 5. Walaupun referensi tersebut menginstalasi OpenSSH versi 5.0p1 pada CentOS 5, namun tetap relevan untuk melakukan instalasi OpenSSH versi 6.4p1 pada CentOS 6.

Setelah selesai melakukan instalasi OpenSSH terbaru, dilakukan konfigurasi aplikasi dan servis. Konfigurasi aplikasi dan servis yang dilakukan kali ini adalah konfigurasi apache, mysql, firewall, rkhunter (aplikasi untuk memindai rootkit) dan terakhir dilakukan konfigurasi sistem untuk membuang aplikasi / servis yang tidak diperlukan.

Konfigurasi apache dilakukan apabila diperlukan saja. Dalam kasus ini, webserver tidak melayani permintaan HTTPS sehingga konfigurasi apache akan memastikan apache tidak mendengar (Listen) port yang biasa digunakan HTTPS yaitu port 443. Untuk memastikan hal tersebut, pastikan tidak ada baris “Listen 443” pada file konfigurasi apache (/etc/httpd/conf/httpd.conf).

Konfigurasi mysql dilakukan untuk menambahkan password pada account root mysql dan mematikan fitur jaringan pada mysql karena pada kasus ini webserver dan database berada pada mesin yang sama. Dengan mematikan fitur jaringan mysql, kemungkinan terjadinya eksploitasi pada mysql dari pihak luar dapat diminimalisir.

Apabila pertama kali dijalankan, account root pada mysql belum memiliki password. Untuk menambahkan password pada account root ketika mysql pertama kali dijalankan adalah dengan menggunakan perintah “mysqladmin -u root password NEWPASSWORD”. Pastikan root tidak bisa diakses tanpa menggunakan password.

Langkah konfigurasi berikutnya untuk mysql adalah mematikan fitur jaringan (menghentikan Listen ke port 3306). Langkah ini dapat dilakukan dengan cara menambahkan baris “skip-networking” pada file config mysql di /etc/my.cnf.

Configure Firewall dilakukan untuk menutup port-port yang tidak digunakan. Apabila port-port Listen yang tidak digunakan dibiarkan begitu saja, maka port-port tersebut bisa menjadi celah keamanan yang bisa dimanfaatkan oleh pihak luar. Dalam kasus ini, konfigurasi dilakukan untuk menutup port SSH dan HTTPS yang tidak digunakan. Sebagaimana sudah dijelaskan di atas, port HTTPS tidak digunakan karena webserver tidak melayani permintaan HTTPS. Sedangkan untuk port SSH ditutup karena untuk melakukan SSH ke mesin ini digunakan port lain, bukan port default. Untuk memudahkan konfigurasi firewall digunakan tools “system-config-firewall-tui” yang menyediakan konfigurasi berbasis Text-based User Interface (TUI).

Setelah selesai melakukan konfigurasi firewall, dilanjutkan dengan instalasi dan konfigurasi aplikasi bernama rkhunter. Rkhunter (Rootkit Hunter) adalah tools untuk melakukan pemindaian pada sistem berbasis Unix / Linux. Rkhunter akan memindai backdoor, rootkit, dan local exploit yang ada pada sistem. Hal lain yang akan dipindai oleh rkhunter adalah: hidden files, wrong permissions set on binaries, suspicious strings in kernel etc. Detail lain mengenai rkhunter dapat diliat langsung pada situs resminya yaitu http://www.rootkit.nl/. Langkah-langkah instalasi dan konfigurasi rkhunter dilakukan dengan menggunakan referensi berikut: Install Linux Rkhunter (Rootkit Hunter) in RHEL, CentOS and Fedora.

Langkah terakhir pada konfigurasi aplikasi dan servis adalah memeriksa aplikasi yang terinstalasi pada sistem. Apabila ada aplikasi atau servis yang tidak perlu sebaiknya aplikasi atau servis tersebut dihapus saja. Pemeriksaan aplikasi yang terinstalasi dapat dilakukan dengan menggunakan perintah “rpm -qa”. Sedangkan untuk menghapus dapat menggunakan yum dengan perintah “yum remove package-name”

User, Group, and Permission

Pemeriksaan user dilakukan dengan melihat isi file /etc/passwd. User dengan user ID dan grup ID lebih kecil dari 500 merupakan user dan grup standar dari sistem operasi (baik user dan grup untuk aplikasi ataupun servis). Pada kasus ini hanya satu  user yang memiliki user ID 500  dan user tersebut merupakan user yang biasa dipakai pada server sehingga tidak perlu tindakan lebih lanjut.

Pemeriksaan group dilakukan dengan melihat isi file /etc/group. File ini mempunyai format nama-grup:x:grupID:user1,user2,dst. Grup dengan grup ID lebih kecil dari 500 merupakan grup standar dari sistem operasi (baik grup untuk aplikasi ataupun servis). Pada kasus ini hanya satu  grup yang memiliki grup ID 500 sehingga tidak perlu tindakan lebih lanjut.

Remote Access Control

Pembatasan remote akses dilakukan dengan mengkonfigurasi ssh. Konfigurasi yang dilakukan adalah menolak root login pada ssh dan mengganti port default dari ssh. Langkah untuk menolak root login dan pengubahan port ssh dilakukan dengan merubah isi file sshd_config. Karena OpenSSH diinstalasi secara manual maka letak file ada di /usr/local/etc/sshd_config. Apabila instalasi ssh dilakukan oleh yum maka letak file ada di /etc/ssh/sshd_config. Tambahkan baris “PermitRootLogin no” untuk menolak root login dan ubah nilai Port untuk mengganti default port.

Logging

Untuk mempermudah logging, digunakan aplikasi Logwatch. Logwatch berfungsi untuk mengirimkan log pada sistem operasi dalam bentuk email. Log dikirimkan ke administrator yang terdaftar pada konfigurasi Logwatch agar mesin tidak perlu mengurusi penyimpanan file log. Untuk melakukan instalasi dan konfigurasi Logwatch dapat mengikuti referensi berikut: Logwatch How to Install on CentOS. Pada dasarnya langkah yang dilakukan adalah:

  • instalasi logwatch melalui yum dengan perintah “yum install logwatch”
  • edit “MailTo=” pada config logwatch di /usr/share/logwatch/defaults.conf/logwatch.conf

Logwatch pada CentOS secara default menggunakan sendmail MTA (message transfer agent) untuk mengirimkan email ke mailhub yang lalu mengirimkan email ke administrator. Pada kasus ini digunakan email dari gmail sehingga MTA harus dikonfigurasi untuk terhubung dengan gmail. Setelah beberapa saat mencoba konfigurasi sendmail dirasa sangat sulit dan rumit, ditemukan aplikasi yang lebih sederhana yang hanya berfungsi mengirim email dari komputer ke mailhub (tidak bisa terima) yaitu ssmtp. Langkah instalasi dan konfigurasi ssmtp serta membuatnya ssmtp menjadi default MTA dapat menggunakan referensi berikut: Use Gmail SMTP with sendmail on CentOS 6.3 using SSMTP. Pada referensi tersebut langkah-langkah yang dilakukan adalah:

  • mematikan servis sendmail

  • menambahkan alamat repository pada yum untuk mendapatkan ssmtp package

  • install ssmtp

  • konfigurasi ssmtp (seperti pada referensi)

FromLineOverride=YES
root=username@gmail.com
mailhub=smtp.gmail.com:587
UseTLS=YES
UseSTARTTLS=YES
AuthUser=username
AuthPass=password

  • menggunakan ssmtp sebagai default MTA

Setelah selesai melakukan koonfigurasi jalankan perintah “logwatch” (dengan root permission) untuk menjalankan Logwatch. Apabila ingin diatur laporan perhari dapat menggunakan cron job. Berikut penggalan contoh hasil laporan Logwatch pada mesin yang dicobakan:

Application Security Using a chroot jail

Server memiliki beberapa service yang diberikan akses ke publik dan privat yang diakses melalui sebuah jaringan yang besar. service tersebut tidak sepenuhnya memerlukan fitur yang lengkap dari sistem operasi tersebut melainkan hanya beberapa fungsi saja, seperti file data dan direktori untuk layanan tersebut beroperasi. Hal ini dikenal dengan istilah Chroot Jail.

Contoh yang umum digunakan pada Chroot Jail adalah service dari FTP, HTTP, dan lain sebagainya. Kesemua fitur ini biasanya sering diakses baik pengunduhan maupun pengunggahan, sehingga sangat retan diserang apabila diberikan akses ke seluruh sistem. Apabila terserang maka penyerang tersebut dapat mengakses data yang lain dari sistem tersebut. Sistem pada Unix atau Linux menyediakan mekanisme untuk menjalankan layanan tersebut di Chroot Jail, yang membatasi pandangan server dari sistem file untuk hanya sebagian ditentukan.

Security Testing

Setelah selesai mengkonfigurasi aplikasi dan servis, perlu dilakukan beberapa pengujian untuk memastikan hasil konfigurasi. Berikut adalah pengujian-pengujian yang dilakukan.

Verifikasi integritas package yang terinstalasi dengan rpm.

Memastikan server hanya LISTEN ke port yang dikenali saja.

Port 2345 merupakan port yang digunakan untuk SSH, sedangkan port 80 merupakan port yang digunakan apache untuk memberi layanan web. Port HTTPS (443) pada apache sengaja ditutup.

Ditulis oleh:  Adrian Dwiananto A (23212035) & Mulkan Fadhli (23212034)

Hardening WordPress Configuration

William Stallings dan Lawrie Brown dalam bukunya yang berjudul Computer Security: Principles and Practice pada bagian Application Security (Chapter 12) merupakan bagian terpenting setelah melakukan proses pengamanan Sistem Operasi. Pada kasus ini apikasi utama pada server berjalan adalah WordPress. Oleh karenanya, proses pengamanan WordPress dimasukkan dalam bahagian tersendiri.

Agar WordPress dapat berjalan maka ada beberapa prasyarat yang harus terpenuhi, yaitu :

  • Apache Deamon sudah aktif
  • MySQL Deamon sudah aktif
  • PHP

Ketiga proses tersebut telah dijelaskan pada bahagian Application and Service Configuration, gunakan versi terbaru. satu lagi paket yang harus dimiliki yaitu WordPress source biasanya dalam bentuk .zip atau .tar.gz apabila diunduh dari situs resmi https://wordpress.org/. Berikut langkah-langkah instalasi dan konfigurasi wordpress.

  • Memastikan Prasyarat dari WordPress.

Untuk PHP ketikkan :

Untuk MySql ketikkan :

Untuk Apache ketikkan :

  • Download WP terbaru

Setelah semua aplikasi di atas terinstal dan terkonfigurasi, periksa apakah sudah jalan dengan benar. Selanjutnya unduh wordpress versi terbaru dari situsnya dengan memberikan perintah wget –secure-protocol=auto https://wordpress.org/latest.tar.gz

Dikarenakan fitur wget yang tersedia (versi terbaru) belum mendukung protokol sekuriti yang terdapat pada situs https://wordpress.org maka WP versi terbaru yaitu wordpress v3.7.1 diunduh dengan menggunakan browser terlebih dahulu.

setelah proses pengunduhan selesai, untuk alasan keamanan maka disarankan untuk

  • Extract file nya dan mounting di direktori apache nya

[root@localhost /]# tar -xvzf latest.tar.gz
[root@localhost /]# cp -R wordpress-3.3.1 /var/www/html/blog

  • Buka browser anda dan arahkan urlnya ke localhost/blog maka proses instalasi akan muncul apabila tidak maka arahkan ke //localhost/blog/wp-admin/install.php

Securing WordPress

Setelah selesai melakukan instalasi WordPress, langkah selanjutnya adalah mengamankannya dari berbagai macam kemungkinan celah keamanan. Adapun langkah-langkah mengamankannya, yaitu :

  • Gunakan password yang tangguh

Gunakan password dengan kombinasi yang tangguh sehingga sulit untuk dicoba-coba secara acak. Minimalkan penggunaan akun admin dalam mengisi konten. Dan untuk menjaga keamaan akun anda agar tidak mudah diretas melalui password berikut diberikan tips sehingga akan akun akan sulit diretas :

Password yang kuat adalah:

Minimal 8 karakter (lebih banyak lebih baik)
Mengandung lebih dari 1 huruf kecil, 1 huruf besar, 1 angka dan 1 simbol
Setiap karakter selang-seling antara huruf kecil, huruf besar, angka & simbol
Tanpa ada karakter yang sama atau berulang

Password yang ideal adalah:

Mudah diingat
Beda akun/ web/ aplikasi, beda password
Diganti setidaknya sebulan sekali

Password yang harus dihindari adalah:

Berupa kata yang ada di kamus dalam bahasa apapun
Singkatan-singkatan yang umum
Karakter berurutan baik angka maupun huruf pada keyboard
Informasi pribadi seperti nama atau tanggal lahir

  • Lindungi akses admin wordpress

Rubahlah username default dari administrator. Pada bagian Users di halaman admin, terdapat bagian pengaturan profil.

  • Update wordpress

Ini sangat penting untuk memperbarui WordPress anda dari bugs dan masalah keamanan. Anda dapat menggunakan Automatic Upgrade (Tools > Upgrade), atau 3 langkah upgrade manual.

  • Hapus file WordPress/../readme.html

Selalu periksa file readme.html apabila masih ada segera hapus, karena dengan mengetahui versi yang sedang digunakan mempermudah salah satu langka peretas dalam menyusup.

  • Konfigurasi file .htaccess untuk tutorial lengkap dapat dilihat ada creativebloq.com

Lindungi direktori WP-Admin dengan password dari sisi server. Letakkan file .htaccess pada direktori yang ingin anda amankan. Berikut adalah kode dari file .htaccess

AuthName “WP-Admin”
AuthType Basic
AuthUserFile /path/ke/passwd  #(direktori tujuan file .htpasswd)
Require valid-user

Gunakan htpasswd untuk membuat file passwd (.htpasswd) dan letakkan file ini pada direktori yang tidak bisa diakses dari web (htpasswd -c /tujuan/direktori/passwd username).

  • Monitor Malware

Instal plugin yang terpercaya guna melakukan monitoring terhadap malware serta memberikan laporan kepada admin web apabila ada malware detection sehingga apabila terindikasi dapat dihapus.

  • Lindungi dari serangan “brute force” untuk tutorial dapat dilihat pada copyblogger.com

Kadangkalanya sebuah web diserang secara ‘brute force’/acak, sehingga akan terdapat laporan percobaan penyusupan hingga berkali-kali. Blok IP yang kelihatan mencoba secara terus menerus dan berkala.

  • Block Akses Search Engine ke Direktori WP-

Direktori WP- tidak perlu di-index oleh search engine, jadi blok saja akses ke direktori ini. Anda bisa menggunakan konfigurasi berikut di file robots.txt.

              Dissalow: /wp-*

  • PLugin

Kelola plugin yang digunakan secara bijak. pastikan plugin yang digunakan berasal dari sumber yang sangat aman. Periksa daftar plugin yang sudah aktif di web, selanjutnya optimalkan dengan cara menghapus plugin yang tidak digunakan

  • Backup

Ini adalah aturan dasar yang sederhana yang dapat menyelamatkan web dalam banyak kasus. Jangan lupa untuk selalu mem-backup website (root folder dan semua file-file yg ada) dan database secara berkala, agar website dapat dikembalikan apabila terjadi serangan.

Dapat dilakuan dengan menggunakan PhpMyAdmin untuk backup database. Bukalah database anda, klik tab Export, pilih semua tabel pada pilihan SQL (jangan lupa centang “Add DROP TABLE“). Selain itu, gunakan fungsi GZIP Compression.

Kompresi adalah cara cepat dan efektif untuk menghemat bandwidth dan mempercepat website.Apache memungkinkan kompresi melalui mod_deflate dan tambahkan kode berikut di dalam file .htaccess sehngga akan mengaktifkan kompresi GZIP pada halaman web Anda.

# BEGIN GZIP
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/xml text/css application/x-javascript application/javascript
</ifmodule>
# END GZIP

Ditulis oleh:  Adrian Dwiananto A (23212035) & Mulkan Fadhli (23212034)

CentOS Secure Installation

Langkah paling utama dan pertama yang harus dilalui adalah mengamankan pondasi yaitu Sistem Operasi. Diawali dengan memastikan sumber paket instalasi tersebut berasal dari sumber yang benar. Banyak cara memastikanya, pertama gunakan paket instalasi resmi (berbeli atau unduh dari situs yang meyakinkan misalnya secure web). kedua periksa md5sum serta sha*-nya apakah sesuai dengan informasi yang tertera pada situs resmi CentOS. Langkah kedua ini berlaku untuk semua aplikasi yang bersumber dari pengunduhan.

Sistem Operasi Centos merupakan turunan dari RedHat, versi terbaru dari Centos sekarang adalah 6.4. Sistem Operasi Centos dapat diunduh dari salah satu mirror yang terdaftar pada situs resminya http://www.centos.org. Untuk pengunduhan sistem operasi centos tersedia dalam beberapa versi, Live CD (tidak dapat digunakan untuk instalasi), Minimal, Full Service. Pada versi fulservice sudah tersedia banyak aplikasi yang dibutuhkan. Pada laporan ini digunakan OS Centos yang full service akan tetapi proses instalasi menggunakan sistem Minimal, dengan tujuan mengurangi beban server. Setelah mengunduh pastikan md5sum, sha1sum, dan sha256sum sesuai dengan yang diberikan oleh situs mirror dan situs http://www.centos.org.

Jalankan CD Instalasi CentOS, setelah proses booting akan tampil tampilan depan dari CentOS. Tersedia beberapa pilihan untuk dilakukan instalasi, untuk alasan keamanan maka pilih instalasi minimal atau instalasi basic sehingga aplikasi yang terinstal hanyalah aplikasi yang dibutuhkan saja.

Setelh memilih basic instalasi selanjutnya akan muncul tampilan media testing

Akan membutuhkan waktu yang sangat lama untuk menyelesaikan pengecekan, apabila anda yakin dengan CD instalasi yang anda miliki maka disaran untuk memilih skip saja. selanjutnya pilih Bahasa yang akan digunakan pada sistem operasi.

Selesaikan semua konfigurasi yang dibutuhkan hingga proses instalasi berjalan. Untuk proses instalasi dapat dilihat pada situs  howtoforge.com.

 

Strategi Pengamanan WordPress pada Sistem Operasi Centos

Penggunaan sistem komputer di banyak perusahaan sudah menjadi kebutuhan yang sangat mendukung jalannya proses bisnis perusahaan tersebut. Sistem komputer klien dan server merupakan komponen utama dari infrastuktur IT, sistem klien menyediakan akses ke data dan aplikasi yang digunakan perusahaan. Proses tersebut didukung oleh komputer server yang menyimpan dan menjalankan aplikasi serta datanya. Sistem yang berjalan secara umum sangat mudah untuk diserang baik dari luar maupun dalam, sehingga diperlukan beberapa langkah sehingga terbentuknya sistem yang tangguh. Strategi untuk penguatan sistem yang diusulkan yaitu Perencanaan, Intalasi, Konfigurasi, Pembaharuan, dan Pemeliharaan untuk sistem operasi dan aplikasi yang berjalan.

Langkah – langkahnya dibagi kedalam 3 kelompok besar yaitu :

  1. Secure Instalation CentOS
  2. Hardening CentOS Security
  3. Hardening WordPress Configuration

Ditulis oleh:  Adrian Dwiananto A (23212035) & Mulkan Fadhli (23212034)

Instalasi Secure WordPress pada Sistem Operasi Ubuntu

Abstrak

Blog merupakan sebuah situs yang terdiri dari halaman-halaman yang memuat berbagai tulisan dalam format teks yang dapat disisipi gambar dan konten lainnya. Manajemen sistem konten / artikel secara gratis ini tersedia cukup banyak, beberapa diantaranya yang paling populer adalah blogger dan wordpress. Blog digemari banyak orang karena gartis dan kemudahan untuk melakukan konfigurasinya. Namun, seiring perkembangan zaman, sekarang blog menjadi incaran serangan para hacker karena biasanya blog tidak diamankan oleh adminnya. Beberapa contoh serangan terhadap keamanan blog adalah pembobolan akun, SQL injection, Cross-site Scripting, Spaming komentar, Deface, DoS attack, dan masih banyak lagi. Oleh sebab itu pada artikel kali ini akan dibahas mengenai beberapa langkah instalasi wordpress dengan aman pada sistem operasi Ubuntu. Tujuan dari artikel ini adalah agar wordpress yang dibuat dapat terhindar dari serangan-serangan para hacker, walaupun tidak terjamin 100 %.

Secara umum, artikel ini terbagi dalam dua bagian, yaitu bagian 1 menjelaskan instalasi server wordpress dan bagian 2 menjelaskan cara menguatkan pertahanan wordpress (hardening). Bagian 1 diawali dengan proses instalasi Apache, php5, serta Mysql sacara aman dengan membandingkan hash MD5-nya. Berikutnya dijelaskan mengenai proses instalasi wordpress secara aman juga.

Bagian 2 diawali dengan cara mengamankan phpmyadmin. Lalu dijelaskan mengenai cara mengamankan dengan mematikan service yang tidak diperlukan. Selanjutnya akan dijelaskan cara mengecek file log apache. Berikutnya diabahas cara melakukan hashing password. Lalu dijelaskan cara mengaktifkan SSL agar pertukaran data antara server dan client terenkripsi. Selanjutnya akan dijelaskan cara mengaktifkan firewall. Pada kesempatan kali ini, firewall yang digunakan adalah iptables. Berikutnya diabahas cara instalasi SSH dan cara konfigurasinya untuk memberikan akses hanya kepada user tertentu saja.

Pada dasarnya tidak ada standar baku cara mengamankan web server. Pengamanan yang dilakukan akan bergantung dari jenis serangan apa yang ingin diredam. Oleh sebab itu dengan artikel ini diharapkan dapat membantu orang-orang yang ingin mengamankan wordpressnya.

Bagian 1: Instalasi Server WordPress

Proses instalasi merupakan suatu proses yang penting dalam awal pembuatan suatu sistem, oleh karena itu diperlukan suatu keamanan yang dilakukan dari awal instalasi. Untuk mengamankan segala aplikasi desktop yang tidak diperlukan, maka proses instalasi dan download menggunakan Ubuntu server 13.04 yang hanya terdiri dari terminal saja.

Dalam menjaga integritas isi file, download software wordpress dari situs yang terpecaya, dalam hal ini ialah https://wordpress.org. Kemudian, untuk melakukan pengecekan terhadap file wordpress yang telah berhasil di download, dapat digunakan metode menggunakan hash MD5, dimana nilai hash file yang berhasil di download nantinya harus sama dengan hash yang ada pada referensi.

Berikut nilai dari hash yang berasal dari website wordpress.

Gambar a

Gambar 1

Gambar b

Gambar 2

Berikutnya, buka folder dimana terdapat file wordpress-3.7.1.tar.gz, lalu kemudian ketikkan perintah berikut.

md5sum wordpress-3.7.1.tar.gz

Gambar c

Gambar 3

Setelah itu, bandingkan hasil nilai hash5 antara referensi dengan hasil yang berhasil di download pada Ubuntu.  Pada gambar diatas, dapat dilihat bahwa hasil MD5 yang dihasilkan nilainya sama, hal ini menunjukkan bahwa file yang di download sesuai.

Berikutnya dalam membuat webserver perlu dilakukan penginstallan Apache, php5, dan Mysql. Penginstallan dilakukan dengan menggunakan apt-get install. Setelah melakukan apt-get, setiap hasil installan dengan menggunakan cara ini akan masuk ke dalam temporary folder:

/var/cache/apt/archives

Setelah berjalan proses instalasi tersebut, maka setiap file yang masuk ke dalam folder archives diatas akan mempunyai ekstensi file .deb. Deb merupakan ekstensi dari debian software pack age. Kemudian sama seperti cara yang sebelumnya, lakukan pengecekan setiap file Apache, php5, serta Mysql yang telah terinstall tersebut. Pengecekan juga dilakukan dengan menggunakan hash MD5.

Berikut ini, untuk melakukan pengecekan terhadap file Apache, ketikkan perintah berikut.

md5sum apache2_2.2.22-6ubuntu5.1_i386.deb

Gambar d

Gambar 4

Gambar e

Gambar 5

Gambar fGambar 6

Setelah itu, bandingkan hasil nilai hash5 antara referensi dengan hasil yang berhasil di install pada Ubuntu.  Pada gambar diatas, dapat dilihat bahwa hasil MD5 yang dihasilkan nilainya sama, hal ini menunjukkan bahwa file yang di download sesuai.

Berikut ini, untuk melakukan pengecekan terhadap file php5, ketikkan perintah berikut.

md5sum php5_5.4.9-4ubuntu2.3_all.deb

Gambar g

Gambar 7

Gambar h

Gambar 8

Gambar i

Gambar 9

Setelah itu, bandingkan hasil nilai hash5 antara referensi dengan hasil yang berhasil di install pada Ubuntu.  Pada gambar diatas, dapat dilihat bahwa hasil MD5 yang dihasilkan nilainya sama, hal ini menunjukkan bahwa file yang di download sesuai.

Berikut ini, untuk melakukan pengecekan terhadap file Mysql, ketikkan perintah berikut.

md5sum mysql-server_5.5.34-0ubuntu0.13.04.1_all.deb

Gambar j

Gambar 10

Gambar k

Gambar 11

Gambar l

Gambar 12

Setelah itu, bandingkan hasil nilai hash5 antara referensi dengan hasil yang berhasil di install pada Ubuntu.  Pada gambar diatas, dapat dilihat bahwa hasil MD5 yang dihasilkan nilainya sama, hal ini menunjukkan bahwa file yang di download sesuai.

Untuk memeriksa integritas dari file ISO Ubuntu yang diunduh dari internet, nilai MD5 Hash dari file ISO yang diunduh dapat dicocokkan dengan nilai MD5 Hash dari file tersebut pada website resmi Ubuntu. Pada contoh kali ini, digunakan file ISO dari Ubuntu 12.04.1. Cara untuk melakukan penghitungan nilai MD5 Hash adalah dengan mengetikkan perintah sebagai berikut.

 md5sum ubuntu-12.04.1-desktop-i386.iso

Sehingga pada terminal akan muncul nilai MD5 Hash dari file tersebut.

Gambar m

Gambar 13

Selanjutnya, nilai tersebut dicocokkan dengan nilai MD5 Hash file tersebut pada website resmi Ubuntu. Apabila nilainya sama, maka dapat dipastikan bahwa file ISO tersebut terjamin integritasnya.

Gambar n

Gambar 14

Install and Setup Apache2, Php5, Mysql on Ubuntu Server (LAMP)

1. Login sebagai root.

sudo su

Gambar o

Gambar 15

2. Install Mysql 5

apt-get install mysql-server mysql-client

Pada tahap ini akan ditanyakan password untuk root user pada Mysql

Gambar p

 Gambar 16

3. Install Apache2

apt-get install apache2

Gambar q

 Gambar 17

Gambar r

Gambar 18

4. Install PHP5

apt-get install php5 libapache2-mod-php5

Gambar s

Gambar 19

Berikutnya restart Apache2 untuk dapat bekerja dengan PHP5.

Gambar t

Gambar 20

5. Untuk mengetes apakah PHP 5 berjalan dengan baik, buat info.php dalam direktori root “/var/www/”.

nano /var/www/info.php

Didalam info.php, masukkan kode sebagai berikut:

Gambar u

Gambar 21

Kemudian masuk kedalam browser kembali, lalu ketikkan IP server/info.php.

Gambar v

Gambar 22

6. Untuk mendapatkan support Mysql dalam PHP 5, install packages berikut:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Gambar w

Gambar 23

Kemudian restart Apache2 servis:

/etc/init.d/apache2 restart

Gambar x

 Gambar 24

7. (Opsional) Install phpMyAdmin sebagai web interface database Mysql.

Gambar y

Gambar 25

Install WordPress on Ubuntu 13.04 Server

Untuk melakukan instalasi WordPress, pertama kali lakukan login Ubuntu server sebagai root, kemudian lakukan langkah-langkah berikut ini:

1. Login Mysql sebagai root user.

Mysql –u root –p

Gambar z

Gambar 26

2. Membuat database. Ubah database-name menjadi nama database yang diinginkan.

CREATE DATABASE database-name;

3. Membuat user. Ubah database-user menjadi nama user yang diinginkan.

CREATE USER database-user@localhost;

4. Membuat password. Ubah password-here menjadi password yang diinginkan.

SET PASSWORD FOR database-user@localhost= PASSWORD(“password-here”);

Gambar aa

Gambar 27

5. Memberikan privileges kepada user baru.

GRANT ALL PRIVILEGES ON database-name.* TO database-user@localhost IDENTIFIED BY ‘password-here’;

Gambar ab

Gambar 28

6. Kemudian refresh dan exit Mysql.

Normal
0

false
false
false

EN-US
X-NONE
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;}
FLUSH PRIVILEGES;

exit

7. Download dan ekstrak software wordpress terbaru.

Normal
0

false
false
false

EN-US
X-NONE
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;}
wget http://wordpress.org/latest.tar.gz

Normal
0

false
false
false

EN-US
X-NONE
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;}
tar -xzvf latest.tar.gz

Gambar ac

Gambar 29

8. Berikutnya copy konfigurasi sample file untuk membuat backup dengan cara sebagai berikut:

 cd wordpress && cp wp-config-sample.php wp-config.php

9. Kemudian lakukan edit pada konfigurasi file dengan cara mengetikkan perintah berikut ini:

nano wp-config.php

10. Kemudian lakukan edit pada file konfigurasi, dimana dilakukan perubahan terhadap database-name, database-user, dan password-here yang telah dibuat sebelumnya.

Gambar ad

Gambar 30

11. Berikutnya untuk mengecek database apa saja yang telah dibuat, dapat dilakukan dengan mengetikkan perintah berikut:

show databases

Gambar aeGambar 31

Selanjutnya dilakukan restart apache dengan memberikan perintah “service apache2 restart”.

12. Pada web browser, buka “localhost/wordpress” sehingga muncul halaman muka dari WordPress.

Selanjutnya dilakukan pembuatan web serta akun admin blog dengan mengisi form yang tersedia.

Gambar af

Gambar 32

(https://assets.digitalocean.com/articles/community/Wordpress-FinishInstall.png)

13. Agar blog dapat diakses oleh orang lain, URL web diubah dengan suatu IP statik yaitu dengan memilih menu Dashboard, klik Settings, klik General, kemudian mengubah WordPress Address (URL) dan Site Address (URL) dengan “[IP address]/wordpress”.

Gambar agGambar 33

14. Untuk menambahkan user baru pada wordpress yang berasal dari client, pertama-tama server perlu melakukan setting terlebih dahulu pada bagian dashboard dari wordpress.

Gambar ahGambar 34

15. Berikut merupakan tampilan wordpress yang telah dibuat Rizka Widyarini dan Mukti Winanda dari dua server yang berbeda.

Gambar ai

 Gambar 35

Gambar aj

Gambar 36

16. Apabila pada web browser dimasukkan alamat http://167.205.67.188/wp-login.php?action=register, akan muncul tampilan sebagai berikut untuk melakukan log in dan sign up akun baru.

Gambar akGambar 37

Bagian 2: Keamanan

Tujuan dari mengamankan adalah agar menghindari server dari akses orang yang tidak berkepentingan dan vulnerabilites dari server tidak dapat dimanfaatkan orang yang tidak berkepentingan.

2.1 Mengamankan PHPMYADMIN

Alamat “localhost/phpmyadmin” pada awalnya dapat diakses oleh semua alamat ip dimana seharusnya database MYSQL tidak boleh diakses oleh user maka diperlukan cara untuk mengamankan agar tidak dapat dimanfaatkan oleh orang yang tidak berkepentingan. Cara untuk mengamankannya adalah sebagai berikut ini.

2.1.1 Kondisi Sebelum Diamankan

 15a

Gambar 38

Dari gambar diatas dapat dilihat bahwa sebelum diamankan user dapat mengakses phpmyadmin dengan membuka alamat “192.168.1.19/phpmyadmin”.

2.1.2 Proses Mengamankan

Untuk melakukan mengamankan “localhost/phpmyadmin” agar hanya dapat diakses di localhost adalah sebagai berikut:

1. Masuk ke direktori “/opt/lampp/etc/extra/httpd-xampp.conf”

2. Edit file httpd-xampp.conf dengan command “sudo gedit httpd-xampp.conf” dan ubah file tersebut menjadi :

#<IfDefine PHP4>

#LoadModule php4_module        modules/libphp4.so

#</IfDefine>

#<IfDefine PHP5>

#LoadModule php5_module        modules/libphp5.so

#</IfDefine>

# We will enable it by default

#<IfDefine PHP>

LoadModule php5_module        modules/libphp5.so

#</IfDefine>

LoadModule perl_module        modules/mod_perl.so

Alias /phpmyadmin “/opt/lampp/phpmyadmin”

Alias /phpsqliteadmin “/opt/lampp/phpsqliteadmin”

# since XAMPP 1.4.3

<Directory “/opt/lampp/phpmyadmin”>

AllowOverride AuthConfig Limit

Require all granted

Allow from 127.0.0.1/8

</Directory>

<Directory “/opt/lampp/phpsqliteadmin”>

AllowOverride AuthConfig Limit

Order allow,deny

#Allow from all

Allow from 127.0.0.1/8

</Directory>

# since LAMPP 1.0RC1

AddType application/x-httpd-php .php .php3 .php4

XBitHack on

# since 0.9.8 we’ve mod_perl

<IfModule mod_perl.c>

AddHandler perl-script .pl

PerlHandler ModPerl::PerlRunPrefork

PerlOptions +ParseHeaders

PerlSendHeader On

</IfModule>

# demo for mod_perl responsehandler

#PerlModule Apache::CurrentTime

#<Location /time>

#      SetHandler modperl

#      PerlResponseHandler Apache::CurrentTime

#</Location>

# AcceptMutex sysvsem is default but on some systems we need this

# thanks to jeff ort for this hint

#AcceptMutex flock

#LockFile /opt/lampp/logs/accept.lock

# this makes mod_dbd happy – oswald, 02aug06

# mod_dbd doesn’t work in Apache 2.2.3: getting always heaps of “glibc detected *** corrupted double-linked list” on shutdown – oswald, 10sep06

#DBDriver sqlite3

#

# New XAMPP security concept

#

<LocationMatch “^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))”>

Order deny,allow

Deny from all

Allow from 127.0.0.1/8

#Allow from ::1 127.0.0.0/8

#fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

#fe80::/10 169.254.0.0/16

ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var

</LocationMatch>

3. Restart service lamppnya. Nanti yang akan terjadi adalah phpmyadmin hanya bisa dibuka di “localhost”.

 2.1.3 Sesudah Mengamankan

Hasil yang didapatkan setelah mengamankan adalah sebagai berikut :

16a

Gambar 39

Dari gambar diatas dapat kita lihat bahwa user yang ingin mengakses alamat “192.168.1.19/phpmyadmin” tidak diperbolehkan karena hak akses phpmyadmin telah kita batasi.

17a

Gambar 40

Dari gambar diatas dapat kita lihat bahwa “localhost/phpmyadmin” hanya dapat diakses pada server.

 2.2 Mengamankan Port Server dengan  Mematikan Service yang tidak diperlukan

Pengamanan port server diperlukan agar port yang tidak dipakai service tidak digunakan oleh orang yang tidak berkepentingan untuk melakukan tindakan yang tidak diharapkan dengan memanfaatkan vulnerabilities server. Cara untuk mengamankannya adalah sebagai berikut.

2.2.1 Sebelum Diamankan

2.2.1.1 Server

Untuk mengecek port yang terbuka, kita gunakan perintah:

netstat -ntl

  18a

Gambar 41

Dari gambar di atas dapat dilihat bahwa:

  • Port 80 (http) dapat diakses oleh semua ip address.
  • Port 443 (https) dapat diakses oleh semua IP.
  • Port 631 memang harus dibuka karena protocol UDP/TCP memerlukan akses terhadap port tersebut.
  • Port 21(ftp) dapat diakses oleh semua ip.

2.2.1.2 User

Sebelum Diamankan dapat dilihat dari sisi user bahwa port yang terbuka adalah 21, 80, 443. Port yang kita butuhkan untuk aktif hanya 80 dan 443. Jadi kita harus mematikan service yang menyebabkan port 21 terbuka.

 19a

Gambar 42

2.2.2 Proses Mengamankan

1. Ubah file autoboot service LAMPP yang telah dibuat dengan perintah “sudo gedit /etc/init.d/lampp” menjadi :

#!/bin/bash

/opt/lampp/lampp startapache

/opt/lampp/lampp startmysql

2.   Kemudian setiap kali reboot maka yang hanya dijalankan hanya service apache dan MYSQLnya saja.

 2.2.3 Sesudah Diamankan

2.2.3.1 Server

20a

Gambar 42

 2.2.3.2 User

 21a

Gambar 43

Dari kedua gambar pada bagian 2.2.3 kita dapat melihat bahwa port yang aktif hanya port 80 dan 443 dan dapat dikatakan bahwa port 21 (ftp) yang tidak digunakan telah diamankan untuk mengurangi vulnerabilities server (prinsip “Least Privilege”).

2.4 Checking Logfile pada Apache

Secara default log pada LAMPP sudah aktif jadi tidak diperlukan lagi pengaturan untuk mengaktifkan log. Log merupakan bagian yang penting untuk dicek berfungsi atau tidaknya karena dari log kita dapat mendeteksi jenis-jenis error atau siapa saja yang masuk ke dalam server. Log terdapat pada bagian “/opt/lampp/logs”.

 22a

Gambar 43

Gambar diatas merupakan contoh dari access log pada server apache. Access log memberikan informasi tentang user dengan ip berapa saja yang melakukan koneksi dan mencatat kegiatan apa saja yang dilakukan.

24a

Gambar 44

Gambar diatas merupakan contoh dari error log pada service LAMPP. Error_log membantu dalam mendebugging service yang tidak jalan.

2.5 Hashing Password

Password merupakan salah satu hal yang penting dalam keamanan informasi. Oleh karena itu agar password menjadi rahasia dan hanya diketahui oleh pemilik id tersebut saja maka diperlukan hashing agar administrator juga tidak tahu isi dari password aslinya. Secara default aplikasi wordpress telah melakukan hashing password pada database MYSQL seperti gambar dibawah ini.

24a

Gambar 45

 2.6 Enabling SSL

Fungsi dari mengaktifkan SSL adalah agar tidak pertukaran data antara server dan client terenkripsi. Berikut ini adalah cara-cara untuk menghidupkan protokol SSL server.

2.6.1 Sebelum Diamankan

25a

Gambar 46

Dapat dilihat pada gambar diatas bahwa protokol yang digunakan masih http biasa.

2.6.2 Proses Mengamankan

1. Download Plugin SSL dari website http://wordpress.org/plugins/wordpress-https/installation/

2. Kemudian extract file yang didownload tersebut

3.  Pindahkan file tersebut ke direktori “/opt/lampp/htdocs/wordpress/wp-content/plugins” dengan perintah “mv direktori_file /opt/lampp/htdocs/wordpress/wp-content/plugins“.

4. Kemudian buka “localhost” kemudian masukkan password admin anda.

5. Klik “Installed Plugins” pada menu seperti gambar dibawah ini.

 26a

Gambar 47

 6. Enable “Wordpress HTTPS” seperti gambar dibawah ini.

27a

Gambar 48

7. Lalu klik “Apply”.

8. Kemudian klik gambar gembok seperti gambar di bawah ini untuk melakukan konfigurasi SSLnya.

28a

Gambar 49

9. Check semua pilihan dan “Save Changes”.

10. Edit file httpd-ssl.conf dengan cara “gedit /opt/lampp/httpd-ssl.conf” kemudian file tersebut ubah menjadi :

# This is the Apache server configuration file providing SSL support.

# It contains the configuration directives to instruct the server how to

# serve pages over an https connection. For detailed information about these

# directives see <URL:http://httpd.apache.org/docs/trunk/mod/mod_ssl.html>

#

# Do NOT simply read the instructions in here without understanding

# what they do.  They’re here only as hints or reminders.  If you are unsure

# consult the online docs. You have been warned.

#

# Required modules: mod_log_config, mod_setenvif, mod_ssl,

#          socache_shmcb_module (for default value of SSLSessionCache)

#

# Pseudo Random Number Generator (PRNG):

# Configure one or more sources to seed the PRNG of the SSL library.

# The seed data should be of good random quality.

# WARNING! On some platforms /dev/random blocks if not enough entropy

# is available. This means you then cannot use the /dev/random device

# because it would lead to very long connection times (as long as

# it requires to make more entropy available). But usually those

# platforms additionally provide a /dev/urandom device which doesn’t

# block. So, if available, use this one instead. Read the mod_ssl User

# Manual for more details.

#

#SSLRandomSeed startup file:/dev/random  512

#SSLRandomSeed startup file:/dev/urandom 512

#SSLRandomSeed connect file:/dev/random  512

#SSLRandomSeed connect file:/dev/urandom 512

#

# When we also provide SSL we have to listen to the

# standard HTTP port (see above) and to the HTTPS port

#

# Note: Configurations that use IPv6 but not IPv4-mapped addresses need two

#       Listen directives: “Listen [::]:443” and “Listen 0.0.0.0:443”

#

Listen 443

##

##  SSL Global Context

##

##  All SSL configuration in this context applies both to

##  the main server and all SSL-enabled virtual hosts.

##

#   SSL Cipher Suite:

#   List the ciphers that the client is permitted to negotiate.

#   See the mod_ssl documentation for a complete list.

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

#   Speed-optimized SSL Cipher configuration:

#   If speed is your main concern (on busy HTTPS servers e.g.),

#   you might want to force clients to specific, performance

#   optimized ciphers. In this case, prepend those ciphers

#   to the SSLCipherSuite list, and enable SSLHonorCipherOrder.

#   Caveat: by giving precedence to RC4-SHA and AES128-SHA

#   (as in the example below), most connections will no longer

#   have perfect forward secrecy – if the server’s key is

#   compromised, captures of past or future traffic must be

#   considered compromised, too.

#SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5

#SSLHonorCipherOrder on

#   Pass Phrase Dialog:

#   Configure the pass phrase gathering process.

#   The filtering dialog program (`builtin’ is an internal

#   terminal dialog) has to provide the pass phrase on stdout.

SSLPassPhraseDialog  builtin

 

#   Inter-Process Session Cache:

#   Configure the SSL Session Cache: First the mechanism

#   to use and second the expiring timeout (in seconds).

#SSLSessionCache         “dbm:/opt/lampp/logs/ssl_scache”

SSLSessionCache        “shmcb:/opt/lampp/logs/ssl_scache(512000)”

SSLSessionCacheTimeout  300

##

## SSL Virtual Host Context

##

<VirtualHost _default_:443>

#   General setup for the virtual host

#DocumentRoot “/opt/lampp/htdocs”

DocumentRoot “/opt/lampp/htdocs/wordpress”

ServerName 192.168.1.19:443

ServerAdmin you@example.com

ErrorLog “/opt/lampp/logs/error_log”

TransferLog “/opt/lampp/logs/access_log”

#   SSL Engine Switch:

#   Enable/Disable SSL for this virtual host.

SSLEngine on

#   Server Certificate:

#   Point SSLCertificateFile at a PEM encoded certificate.  If

#   the certificate is encrypted, then you will be prompted for a

#   pass phrase.  Note that a kill -HUP will prompt again.  Keep

#   in mind that if you have both an RSA and a DSA certificate you

#   can configure both in parallel (to also allow the use of DSA

#   ciphers, etc.)

#   Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)

#   require an ECC certificate which can also be configured in

#   parallel.

SSLCertificateFile “/opt/lampp/etc/ssl.crt/server.crt”

#SSLCertificateFile “/opt/lampp/etc/server-dsa.crt”

#SSLCertificateFile “/opt/lampp/etc/server-ecc.crt”

#   Server Private Key:

#   If the key is not combined with the certificate, use this

#   directive to point at the key file.  Keep in mind that if

#   you’ve both a RSA and a DSA private key you can configure

#   both in parallel (to also allow the use of DSA ciphers, etc.)

#   ECC keys, when in use, can also be configured in parallel

SSLCertificateKeyFile “/opt/lampp/etc/ssl.key/server.key”

#SSLCertificateKeyFile “/opt/lampp/etc/server-dsa.key”

#SSLC

#   Server Certificate Chain:

#   Point SSLCertificateChainFile at a file containing the

#   concatenation of PEM encoded CA certificates which form the

#   certificate chain for the server certificate. Alternatively

#   the referenced file can be the same as SSLCertificateFile

#   when the CA certificates are directly appended to the server

#   certificate for convenience.

#SSLCertificateChainFile “/opt/lampp/etc/server-ca.crt”

#   Certificate Authority (CA):

#   Set the CA certificate verification path where to find CA

#   certificates for client authentication or alternatively one

#   huge file containing all of them (file must be PEM encoded)

#   Note: Inside SSLCACertificatePath you need hash symlinks

#         to point to the certificate files. Use the provided

#         Makefile to update the hash symlinks after changes.

#SSLCACertificatePath “/opt/lampp/etc/ssl.crt”

#SSLCACertificateFile “/opt/lampp/etc/ssl.crt/ca-bundle.crt”

#   Certificate Revocation Lists (CRL):

#   Set the CA revocation path where to find CA CRLs for client

#   authentication or alternatively one huge file containing all

#   of them (file must be PEM encoded).

#   The CRL checking mode needs to be configured explicitly

#   through SSLCARevocationCheck (defaults to “none” otherwise).

#   Note: Inside SSLCARevocationPath you need hash symlinks

#         to point to the certificate files. Use the provided

#         Makefile to update the hash symlinks after changes.

#SSLCARevocationPath “/opt/lampp/etc/ssl.crl”

#SSLCARevocationFile “/opt/lampp/etc/ssl.crl/ca-bundle.crl”

#SSLCARevocationCheck chain

#   Client Authentication (Type):

#   Client certificate verification type and depth.  Types are

#   none, optional, require and optional_no_ca.  Depth is a

#   number which specifies how deeply to verify the certificate

#   issuer chain before deciding the certificate is not valid.

#SSLVerifyClient require

#SSLVerifyDepth  10

#   Access Control:

#   With SSLRequire you can do per-directory access control based

#   on arbitrary complex boolean expressions containing server

#   variable checks and other lookup directives.  The syntax is a

#   mixture between C and Perl.  See the mod_ssl documentation

#   for more details.

#<Location />

#SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/

#            and %{SSL_CLIENT_S_DN_O} eq “Snake Oil, Ltd.”

#            and %{SSL_CLIENT_S_DN_OU} in {“Staff”, “CA”, “Dev”}

#            and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5

#            and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20       )

#           or %{REMOTE_ADDR} =~ m/^192.76.162.[0-9]+$/

#</Location>

#   SSL Engine Options:

#   Set various options for the SSL engine.

#   o FakeBasicAuth:

#     Translate the client X.509 into a Basic Authorisation.  This means that

#     the standard Auth/DBMAuth methods can be used for access control.  The

#     user name is the `one line’ version of the client’s X.509 certificate.

#     Note that no password is obtained from the user. Every entry in the user

#     file needs this password: `xxj31ZMTZzkVA’.

#   o ExportCertData:

#     This exports two additional environment variables: SSL_CLIENT_CERT and

#     SSL_SERVER_CERT. These contain the PEM-encoded certificates of the

#     server (always existing) and the client (only existing when client

#     authentication is used). This can be used to import the certificates

#     into CGI scripts.

#   o StdEnvVars:

#     This exports the standard SSL/TLS related `SSL_*’ environment variables.

#     Per default this exportation is switched off for performance reasons,

#     because the extraction step is an expensive operation and is usually

#     useless for serving static content. So one usually enables the

#     exportation for CGI and SSI requests only.

#   o StrictRequire:

#     This denies access when “SSLRequireSSL” or “SSLRequire” applied even

#     under a “Satisfy any” situation, i.e. when it applies access is denied

#     and no other module can change it.

#   o OptRenegotiate:

#     This enables optimized SSL connection renegotiation handling when SSL

#     directives are used in per-directory context.

#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire

<FilesMatch “.(cgi|shtml|phtml|php)$”>

SSLOptions +StdEnvVars

</FilesMatch>

<Directory “/opt/lampp/cgi-bin”>

SSLOptions +StdEnvVars

</Directory>

#   SSL Protocol Adjustments:

#   The safe and default but still SSL/TLS standard compliant shutdown

#   approach is that mod_ssl sends the close notify alert but doesn’t wait for

#   the close notify alert from client. When you need a different shutdown

#   approach you can use one of the following variables:

#   o ssl-unclean-shutdown:

#     This forces an unclean shutdown when the connection is closed, i.e. no

#     SSL close notify alert is sent or allowed to be received.  This violates

#     the SSL/TLS standard but is needed for some brain-dead browsers. Use

#     this when you receive I/O errors because of the standard approach where

#     mod_ssl sends the close notify alert.

#   o ssl-accurate-shutdown:

#     This forces an accurate shutdown when the connection is closed, i.e. a

#     SSL close notify alert is send and mod_ssl waits for the close notify

#     alert of the client. This is 100% SSL/TLS standard compliant, but in

#     practice often causes hanging connections with brain-dead browsers. Use

#     this only for browsers where you know that their SSL implementation

#     works correctly.

#   Notice: Most problems of broken clients are also related to the HTTP

#   keep-alive facility, so you usually additionally want to disable

#   keep-alive for those clients, too. Use variable “nokeepalive” for this.

#   Similarly, one has to force some clients to use HTTP/1.0 to workaround

#   their broken HTTP/1.1 implementation. Use variables “downgrade-1.0” and

#   “force-response-1.0” for this.

BrowserMatch “MSIE [2-5]”

nokeepalive ssl-unclean-shutdown

downgrade-1.0 force-response-1.0

#   Per-Server Logging:

#   The home of a custom SSL log file. Use this when you want a

#   compact non-error SSL logfile on a virtual host basis.

CustomLog “/opt/lampp/logs/ssl_request_log”

“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x “%r” %b”

</VirtualHost>

 

10. Kemudian untuk menguji SSL yang dibuat dengan menggunakan alamat https://192.168.1.19/wp-login.php?redirect_to=https%3A%2F%2F192.168.1.19%2Fwp-admin%2F&reauth=1”.

11. Akan keluar gambar seperti dibawah ini dan pilih “Proceed anyway”.

29a

Gambar 50

 2.6.3 Sesudah Diamankan

30a

Gambar 51

Dari gambar diatas dapat dilihat bahwa pada saat login pada user telah terkonfigurasi dengan protokol SSL.

2.7 Firewall

Firewall merupakan bagian penting untuk pengamanan jaringan sehingga server harus diinstall firewall agar dapat memfilter yang tidak diijinkan untuk dilewati agar tidak terjadi insiden yang tidak diharapkan. Firewall yang saya gunakan untuk server ubuntu ini adalah iptables. Cara untuk melakukan setting firewall adalah sebagai berikut ini.

2.7.1 Sebelum Pemasangan Firewall

ICMP Protocol Active

 31a

Gambar 52

Dari gambar diatas dapat dilihat bahwa paket ICMP masih aktif sehingga ada kemungkinan server dapat di DOS attack.

 Null Scanning Scanning Active 32a

Gambar 53

Dari gambar diatas dapat kita lihat bahwa port scanning yang dilakukan dengan nmap berhasil yaitu port yang active pada saat ini adalah port 80 (HTTP), 443 (SSL), dan port 22 (SSH).

2.7.2 Proses Pemasangan Firewall

1. Edit file “/etc/rc.local” dengan perintah “gedit /etc/rc.local

2. Kemudian masukkan rules dibawah ini di dalam filenya.

#!/bin/sh -e

#

# rc.local

#

# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will “exit 0” on success or any other

# value on error.

#

# In order to enable or disable this script just change the execution

# bits.

#

# By default this script does nothing.

#Allow HTTP,HTTPS,SSH Packet

iptables -A INPUT -i eth0 -p tcp -m state –state NEW -m multiport –sports ssh,http,https -j ACCEPT

 

#Drop ICMP Packet

iptables -A INPUT -p icmp -j DROP

iptables -A OUTPUT -p icmp -j DROP

 

#Block Port Scan

#iptables -A port-scan -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j RETURN

#iptables -A port-scan -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j RETURN

 

#Get log file

#iptables -N LOGGING

#iptables -A INPUT -j LOGGING

#iptables -A LOGGING -m limit –limit 2/min -j LOG –log-prefix “IPTables Packet Dropped: ” –log-level 7

 

#Block SYN packet CHeck

iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP

 

#Block Force Fragments Packets Check

iptables -A INPUT -f -j DROP

 

#Block Malformed XMAS Packet

iptables -A INPUT -p tcp –tcp-flags ALL ALL -j DROP

 

#Drop all Null packets

iptables -A INPUT -p tcp –tcp-flags ALL NONE -j DROP

 

exit 0

 

3. Gunakan perintah “sudo iptables -F” untuk menghapus rule dari iptables.

4. Gunakan perintah “/etc/rc.local restart” untuk merestart rule yang telah diubah.

5. Untuk melihat rules dari iptables yang telah dibuat gunakan perintah “iptables –L –n”.

6. Kemudian start service iptables dengan perintah “sudo service iptables-persistent start”. Service akan automatically di load pada saat awal booting dari sistem operasi.

2.7.3 Sesudah Pemasangan Firewall

ICMP Packet Filtering

33a

Gambar 54

Gambar diatas menunjukan bahwa paket ICMP telah didenied oleh filtering firewall.

Null Scanning Filtering

Perintah untuk melakukan Null scanning adalah “nmap –v SN 192.168.1.1934a

Gambar 55

Dari gambar diatas dapat dilihat bahwa scanning Null telah tidak dapat dilakukan lagi karena telah difiltering oleh firewall.

2.8 Install SSH dan Pengaturan SSH

SSH merupakan digunakan untuk melakukan remote login ke dalam suatu server. Pengamanan yang dilakukan adalah dengan memberikan user tertentu yang dapat mengakses servernya. Cara install ssh adalah sebagai berikut ini.

1. Install SSH Server di Ubuntu Desktop dengan menggunakan perintah “sudo apt-get install “openssh-server”.

2. Konfigurasi file sshnya dengan perintah “sudo nano /etc/ssh/sshd_config”.

3. Kemudian lakukan konfigurasi seperti tabel dibawah ini.

# Package generated configuration file

# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for

Port 22

AllowUsers chandra

# Use these options to restrict which interfaces/protocols sshd will bind to

#ListenAddress ::

#ListenAddress 0.0.0.0

Protocol 2

# HostKeys for protocol version 2

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

HostKey /etc/ssh/ssh_host_ecdsa_key

#Privilege Separation is turned on for security

UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key

KeyRegenerationInterval 3600

ServerKeyBits 768

# Logging

SyslogFacility AUTH

LogLevel INFO

# Authentication:

LoginGraceTime 120

PermitRootLogin yes

StrictModes yes

RSAAuthentication yes

PubkeyAuthentication yes

#AuthorizedKeysFile  %h/.ssh/authorized_keys

# Don’t read the user’s ~/.rhosts and ~/.shosts files

IgnoreRhosts yes

# For this to work you will also need host keys in /etc/ssh_known_hosts

RhostsRSAAuthentication no

# similar for protocol version 2

HostbasedAuthentication no

# Uncomment if you don’t trust ~/.ssh/known_hosts for RhostsRSAAuthentication

#IgnoreUserKnownHosts yes

 

# To enable empty passwords, change to yes (NOT RECOMMENDED)

PermitEmptyPasswords no

 

# Change to yes to enable challenge-response passwords (beware issues with

# some PAM modules and threads)

ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords

#PasswordAuthentication yes

# Kerberos options

#KerberosAuthentication no

#KerberosGetAFSToken no

#KerberosOrLocalPasswd yes

#KerberosTicketCleanup yes

# GSSAPI options

#GSSAPIAuthentication no

#GSSAPICleanupCredentials yes

X11Forwarding yes

X11DisplayOffset 10

PrintMotd no

PrintLastLog yes

TCPKeepAlive yes

#UseLogin no

#MaxStartups 10:30:60

#Banner /etc/issue.net

# Allow client to pass locale environment variables

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to ‘yes’ to enable PAM authentication, account processing,

# and session processing. If this is enabled, PAM authentication will

# be allowed through the ChallengeResponseAuthentication and

# PasswordAuthentication.  Depending on your PAM configuration,

# PAM authentication via ChallengeResponseAuthentication may bypass

# the setting of “PermitRootLogin without-password”.

# If you just want the PAM account and session checks to run without

# PAM authentication, then enable this but set PasswordAuthentication

# and ChallengeResponseAuthentication to ‘no’.

UsePAM yes

4. Buatlah user dengan nama “chandra” seperti gambar dibawah ini dengan mengetikkan perintah “adduser chandra”. 35a

Gambar 56

 5. Ikutin langkah-langkah seperti mengisi password dan lainnya.

6. Kemudian berikan perintah “service ssh start”. Service ssh akan selalu diload pada awal booting dari sistem operasinya. Kemudian buka putty untuk melakukan remote access.

7. Masukkan ip address server “192.168.1.19” dan buat nama saved sessions apa saja. Lalu tekan “Open” pada bagian bawah.

 36a

Gambar 57

8. Tekan “Yes” untuk melakukan instalasi RSA key pada client.

37a

Gambar 58

9. Kemudian masukkan username dan password dengan username chandra yang telah buat seperti gambar dibawah ini.

38a

Gambar 59

10. Username yang dapat dimasukan hanyalah username “chandra” karena di dalam file “/etc/ssh/sshd_config” kita telah melakukan pengaturan “AllowUsers chandra” sehingga hanya user dengan nama chandra yang diperbolehkan untuk login pada SSH. Berikut ini adalah jika login dengan username milik ardy maka tidak akan dapat melakukan remote login.

39a

Gambar 60

Dimana jika tidak dilakukan pengaturan tersebut hasilnya adalah sebagai berikut ini.

40a

Gambar 61

11. Dengan begitu berarti kita telah mengamankan server karena hanya user biasa yang dapat melakukan login dengan SSH.

 

Referensi:

  1. https://help.ubuntu.com/community/HowToMD5SUM
  2. http://serverfault.com/questions/136458/why-am-i-getting-403-forbidden-after-enabling-https-for-apache-on-mac-os-x
  3. http://wordpress.org/plugins/wordpress-https/installation/
  4. http://www.howtogeek.com/howto/ubuntu/change-ubuntu-server-from-dhcp-to-a-static-ip-address/
  5. http://ubuntuforums.org/showthread.php?t=1933974
  6. https://bbs.archlinux.org/viewtopic.php?pid=645922
  7. https://www.digitalocean.com/community/articles/how-to-set-up-a-firewall-using-ip-tables-on-ubuntu-12-04
  8. http://www.liberiangeek.net/2012/03/enable-ssh-secure-shell-in-ubuntu-12-04-precise-pangolin/
  9. http://ubuntuforums.org/showthread.php?t=159661
  10. http://www.techrepublic.com/blog/10-things/10-iptables-rules-to-help-secure-your-linux-box/

Artikel ini dibuat oleh:

  1. Rizka Widyarini-23213018
  2. Ardy Pratama-23213056
  3. Muhammad Erza Aminanto-23213058
  4. Harry Chandra-23213066
  5. Sundari Mega-23213069
  6. Dea Rahmatia-23213084
  7. Mukti Winanda-23213094
  8. Pertiwi Sapta Rini-23213095
  9. Alissa Ully Ashar-23213129

Normal
0

false
false
false

EN-US
X-NONE
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;}