Menangkal email palsu menggunakan ID pengirim atau menggunakan Sender Policy Framework (SPF) untuk memeriksa email yang masuk dan sebuah catatan “hard fail” SPF untuk membantu mencegah pemalsuan dari domain organisasi anda.
Dasar Pemikiran
SPF atau implementasi alternatif seperti ID Pengirim, membantu dalam pendeteksian email palsu dan mengurangi tingkat keberhasilan dari semacam metode instrusi siber.
Panduan implementasi
Konfigurasi catatan SPF untuk domain organisasi anda termasuk subdomainnya, dan konfigurasi sebuah wildcard catatan SPF untuk mencocokkan subdomain yang tidak ada;
ID Pengirim adalah sebuah versi alternatif dari SPF yang memeriksa keasilian dari alamat surat elektronik pengirim dimana muncul dan terlihat pada penerima surat elektronik. Implementasi tambahan termasuk DomainKeys Identified Mail (DKIM);
Domain‐based Message Authentication, Reporting and Conformance (DMARC) membuat standar bagaimana penerima surat elektronik melakukan otentikasi surat elektronik menggunakna mekanisme SPF dan DKIM;
Menolak surat elektronik dari Internet dimana domain organisasi anda sebagai pengirim surat elektronik tersebut.
Informasi lebih lanjut
Pandian lebih lanjut tentang strategi mitigasi email palsu tersedia pada:
Implementasi daftar putih domain web untuk seluruh domain, karena pendekatan ini lebih proaktif dan mendalam dibandingkan sebuah persentase yang kecil dari domain yang jahat.
Dasar Pemikiran
Mendefinisikan sebuah daftar putih akan membantu menghilangkan mayoritas pengiriman data dan teknik pengiriman data keluar oleh sebuah komputer yang digunakan program jahat.
Panduan implementasi
Mengurangi penolakan user dan kelebihan administratif yang secara potensial berhubungan dengan strategi mitigasi ini, implementasikan sebuah proses yang streamline untuk users dapat dengan mudah dan cepat menambahkan domain ke dalam daftar putih.
Melaksanakan isi web dari lalu-lintas data yang masuk dan keluar, buat daftar putih isi web yang diijinkan dari tipe isi web dan menggunakan analisis perilaku, peringkat reputasi berbasis Internet, heuristics dan tandatangan digital.
Dasar Pemikiran
Sebuah situs yang efektif mengurangi resiko dari infeksi sebuah program jahat atau isi web yang tidak sepatutnya untuk diakses, sama halnya untuk mempersulit musuh dunia maya untuk berkomunikasi dengan program jahat milik mereka. Menjelaskan sebuah daftar putih akan membantu penghapusan kebanyakan pengiriman data dan pengiriman data yang tidak sah keluar dari sebuah komputer yang digunakan oleh program jahat.
Panduan Implementasi
Miliki kecenderungan untuk menangkal semua isi yang dapat dieksekusi dengan program atau kode tertentu secara defalut dan gunakan sebuah proses untuk dapat mengaktifkan akses yang dipilih secara individual jika terdapat sebuah justifikasi proses bisnis
Miliki kecenderungan untuk menangkal akses ke situs dimana penyaringan isi web mempertimbangkan situs tersebut “tidak masuk kateori” atau di dalam sebuah kategori bahwa situs tersebut tidak dibutuhkan untuk tujuan bisnis;
Pelarangan ActiveX, Java tujuan Flash kecuali situs yang masuk kategori daftar putih yang membutuhkan fungsi-fungsi ini secara spesifik untuk tujuan bisnis (misal Flash dibutuhkan untuk menggunakan sebuah situs untuk tujuan bisnis,ijinkan hanya Flash tetapi bukan ActiveX atau Java)
Pelarangan HTML inline frame (pemasukan kode HTML ke dalam baris kode HTML sebuah situs) dan kode script java, kecuali untuk situs yang masuk daftar putih, dimana hal ini ideal sampai menantang karena jumlah situs yang banyak yang membutuhkan fungsi tersebut untuk tujuan bisnis,
Implementasikan sebuah solusi yang dapat memeriksa lalu-lintas SSL untuk isi/konten yang jahat, terutama komunikasi SSL dengan situs yang tidak dikenal.
Informasi lebih lanjut
Merujuk pada strategi mitigasi #6 ‘Automated dynamic analysis of email and web content run in a sandbox’ untuk rincian mengenai deteksi isi web yang memunculkan perilaku mencurigakan seperti lalu-lintas jaringan atau perubahan pada sistem file atau registry.
Lakukan penyaringan pada isi email, ijinkan hanya lampiran daftar putih dengan sebuah tipe file dan ekstensi file yang hanya dibutuhkan oleh fungsi bisnis;
Dasar Pemikiran
Miliki kecenderungan untuk menganalisis/mengkonversi/dan membersihkan hyperlinks, PDF dan lampiran Microsoft Office untuk melumpuhkan surat elektronik berbahaya;
Melarang atau karantina isi email yang tidak dapat diperiksa contohnya seperti arsip file ZIP yang dilindungi dengan parafrase;
Menolak email dari internet dimana terdaoat domain organisasi anda sebagai pengirim email;
Miliki kecenderungan mengarsip PDF dan lampiran Microsoft Office, dan pindai virus pada arsip tersebut setiap bulan atau beberapa bulan sekali;
Miliki kecenderungan untuk karantina lampiran dan melumpuhkan hyperlinks yang ada di dalam surat elektronik dari penyedia webmail yang menyediakan alamat email gratis untuk user Internet anonim, sejak intrusi siber biasanya termasuk penggunaan alamat email yang memiliki kekurangan pada atribusi;
Contoh plugin untuk Microsoft Exchange untuk melakukan sanitasi file PDF tersedia pada:
Lakukan pencatatan log tepusat dan mempunyai fitur sinkronisasi waltu dengan analisis log secara real time dan otomatis, penyimpanan catatan log minimal 18 bulan. Catatan log yang penting antara lain infomasi tentang DNS Server, web proxy yang berisi rincian koneksi termmasuk di dalamnya nilai-nilai dari user-agen, waktu lepas DHCP, catatan log firewall yang berisi rincian lalu-lintas jaringan yang keluar-masuk jaringan organisasi, dan metadata seperti Network Flow Data.
Pencatatan log yang terpusat dan sinkronisasi waktu dan analisis log yang tepat waktu akan meningkatkan kemampuan organisasi secara cepat mengidentifikasi pola perilaku mencurigakan dan log kejadian yang berhubungan dengan perilaku perangkat kerja dan server untuk memudahkan investigasi dan audit apabila terjadi insiden siber.
Panduan Implementasi
Lakukan analisis catatan log secara reguler yang berfokus pada koneksi dan jumlah data yang ditransfer oleh Most Likely Target untuk menandai lalu-lintas internal jaringan yang tidak normal seperti percobaan enumerasi pada jaringan yang dibagi dan informasi user termasuk akun honeytoken. Juga fokus pada lalu-lintas jaringan eksternal yang melewati batas perimeter antara lain:
1. periodic beaconing traffic ;
2. Sesi HTTP dengan rasio yang tidak tepat antara lalu-lintas data yang keluar dan data yang masuk
3. Lalu-lintas HTTP dengan sebuah nilai header “User-Agent” yang tidak berhubungan dengan software asli oleh user organisasi
4. DNS lookups untuk nama domain yang tidak ada dan bukan merupakan kesalahan pengetikan oleh user yang menandakan malware berkomunikasi kepada sebuah domain yang mendaftarkan diri melalui pihak ketiga (cyber adversaries)
5. DNS lookups untuk nama domain yang menggunakan sebuah alamat localhost (127.0.0.1) mencirikan malware dimana cyber adversaries tidak siap untuk berkomunikasi
#3 Log remote
mencoba membuat fitur remote logging pakai syslogd
Terdapat 3 cara untuk melakukan log pada pesan:
Logging pada server yang sama: Pesan ditulis di dalam lokal harddisk atau database.
Logging menggunakan sebuah remote server: Log akan dikirimkan melalui jaringan menuju sebuah server log terpusat. Pada server log pusat, pesan yang berasal dari berbagai macam sistem ditulis ke dalam lokal drive/database.
Relay logging: Cabang ‘A’ and Cabang ‘B’ merekam log pesan pada dua(2) server yang berbeda. Kedua server ini These mengirimkan log pesan ke ‘Head Office’.
Pada percobaan kali ini kita akan menggunakan percobaan 2 (Logging pada sebuah remote server). Ada dua host yaitu host untuk log server dan host client yang mengirimkan pesan log ke log server.
Host B (Client)-> Ubuntu 15.04 Virtual Host, Alamat IP:192.168.56.101
Pada Ubuntu kita dapat menggunakan fasilitas remote logging menggunakan rsyslogd secara default.
Pada percobaan kali ini kita akan mencoba menggunakan sebuah klien mengirimkan informasi syslog klien ke server syslog yang telah kita setting. Topologinya seperti dibawah ini:
Topologi Remote Log antara Klien dan Server
File Konfigurasi rsyslog.conf terdiri dari tiga(3) bagian yaitu:
Modules. Rsyslog terdiri dari arsitektur modular. Arsitketur tersebut membuat fungsionalitas ditambahkan secara dinamis melalui modul-modul tersebut. Modul tersebut yaitu:
Input Modules – Untuk mengumpulkan pesan log dari berbagai sumber
Output Modules – Untuk menulis pesan log ke berbagai tempat ( file, socket,dll)
Parser Modules – Untuk melakukan parsing isi pesan log
Configuration Directives. Seluruh perintah konfigurasi harus dispesifikasikan per baris dan harus dimulai dengan tanda dollar ($). Perintah konfigurasi ini akan berdampak pada rules yang kita buat.
Rule line. Setiap rule line terdiri dari dua(2) fields yaitu sebuah ‘selector field’ and sebuah ‘action field’. Selector field dibagi menjadi dua yaitu ‘facilities & priorities’. Action field menspesifikasikan langkah apa yang harus dilakukan untuk mencocokkan dengan rule yang sudah dibuat.
Tutorial
Konfigurasi di Host Log Server (192.168.10.43)
1. Open File di Terminal
sudo nano /etc/rsyslog.conf
2. Edit file (Ubah file konfigurasi seperti dibawah ini)
$ModLoad imuxsock # menyediakan dukungan untuk sistem log di lokal file $ModLoad imklog # menyediakan dukungan logging kernel #$ModLoad immark # menyediakan pesan –MARK–
# provides UDP syslog reception #$ModLoad imudp –>Hilangkan tanda “#” sehingga server mendengar port tertentu yang telah kita setting #$UDPServerRun 514 –> Hilangkan tanda “#” – spesifikasi nomor port UDP, secara default port 514
# provides TCP syslog reception
#$ModLoad imtcp –> Hilangkan tanda “#” sehingga server mendengar TCP port yang telah ditentukan
#$InputTCPServerRun 514 –> Hilangkan tanda “#” – Spesifiaksi nomor port, secara default port 514
Tambahkan pada baris selanjutnya:
# Ini adalah template untuk menghasilkan nama file log secara dinamis, tergantung pada alamat IP klien
$template FILENAME,”/var/log/%fromhost-ip%/syslog.log”
# Merekam seluruh pesan log ke file dalam bentuk tertentu secara dinamis. Setiap klien (misal alamat IP 192.168.56.101, 192.168.57..101, dll) akan dibuat sebuah direktori terpisah dengan template FILENAME
*.* ?FILENAME
Konfigurasinya seperti dibawah ini:
Konfigurasi rsyslog.conf pada log server
Setelah selesai konfigurasi restart service rsyslog, dengan mengetikkan di terminal:
/etc/init.d/rsyslog restart
Konfigurasi File di Klien
Kita akan melakukan konfigurasi di host klien (192.168.56.101)/Virtual Host
Buka terminal dan ketik sudo nano /etc/rsyslog.conf
Edit file konfigurasi seperti di bawah ini$ModLoad imuxsock$ModLoad imklogTambahkan di line file paling bawah:# Melakukan UDP forwarding. Alamat IP adalah Alamat IP Log Server
*.* @192.168.10.43:514Konfigurasi rsyslog.conf di klien
Simpan (Ctrl-X)
Restart service: /etc/init.d/rsyslog.conf restart. Catatan: 192.168.10.43 adalah ip log server
Verifikasi log dari klien (192.168.56.101) disimpan di log server (192.168.10.43)
Pada Syslog server (192.168.10.43) periksa direktori “/var/log” untuk melihat apakah direktori klien telah dibuat.
cd /var/log && ls
Jika kita lihat di Direktori /var/log, terdapat folder 192.168.10.43, jika kita buka maka akan terdapat file syslog.log yang menyimpan informasi log klien.
less syslog.log
Maka akan muncul tampilan dibawah ini:
syslog record klien (192.168.56.101)
Kita juga dapat menggunakan salah satu tools seperti LogAnalyzer untuk menampilkan GUI log server terpusat dengan membuat database mysql terlebih dahulu.
#2 Log aplikasi:
Wordpress + Mysql + web server.
Letak konfigurasi log aplikasi.
Apakah log dapat dilewatkan ke syslog + apakah ada untung ruginya.
Kita dapat mengetahui lokasi log di WordPress dengan mengintsall plugin. Salah satu plugin yang saya gunakan adalah Simple Login Log Versi 1.1.0. Fitur yang terdapat dalam Simple Login Log adalah :
Kemampuan untuk filter dari user name yang berhasil dan gagal login, termasuk timestamp waktunya
Dapat diekpor ke file CSV.
Log auto-truncation artinya jika rekaman log tidak pernah dihapus dalam log transaksi, maka log tersebut akan memenuhi kapasitast penyimpanan log secara fisik. Log truncation secara otomatis menghapus ruang dari log secara logika untuk digunakan kembali oleh log transaksi.
Tutorial Instalasi Plugin Simple Login Log
Dashboard Plugin di WordPress
Dashboard PluginUpload PluginMasukkan File PluginInstall Zip Plugin
Selesai Instalasi Plugin
Cara Menggunakan Simple Login Log:
Login log untuk melihat logDetail log yang masuk dan keluarKita dapat mengimport log ke file CSVSimpan file log dalam bentuk CSVFile log csv
Plugin wordpress lain untuk mengetahui username dan password antara lain WP Security Audit Log dan User Login Log. Plugin Simple User Login Log salah satu plugin yang mudah digunakan untuk log audit pada WordPress.
Konfigurasi log aplikasi di WordPress secara default berada di
Log dapat dilewatkan di syslog dengan melakukan konfigurasi terletak di.
Untungnya log dilewatkan di syslog adalah log terekam di dalam sistem . Ruginya adalah log yang dilewatkan di syslog akan menambah kapasitas fisik log pada sistem, single point of failure.
Authorization Log , merupakan log untuk otorisasi sistem, seperti Pluggable Authentication Module (PAM) system, the sudo command, dan remote logins to sshd. Authorization Log file dapat diakses di /var/log/auth.log.
Daemon Log adalah sebuah program yang berjalan di belakang sistem. Daemon log terletaak di /var/log/daemon.log.
Debug Log adalah log yang berisi pesan debug dari sistem Ubuntu dan aplikasi akan menyimpan di syslogd pada level DEBUG. Lokas Debug Log terdapat di /var/log/debug
Kernel Log adalah pesan log kernel Linux Ubuntu. Lokasi ada di var/log/kern/log
System Log berisi tentang log sistem Ubuntu. Lokasi ada di /var/log/syslog.
Rotasi Log
Ketika kita melihat direktori pada /var/log atau subdirektori di bawahnya, kita akan menemukan file log dengan nama seperti daemon.log.0, daemon.log.1.gz, dan seterusnya. Log file apakah ini? File ini adalah ‘rotated’ log files. File-file log tersebut secara otomatis diubah setelah jangka waktu tertentu dan sebuah file log baru dibuat. File log tersebut juga dikompresi dengan kompresi gzip misalnya menjadi daemon.log.1.gz. Tujuan dari rotasi log adalah untuk penyimpanan dan kompresi file log lama sehingga mengurangi kapasitasi penyimpanan harddisk, tetapi tetap tersedia sewaktu-waktu apabila dibutuhkan.
Perintah logrotate dipanggil system-wide cron script /etc/cron.daily/logrotate, dan didefinisikan pada file konfigurasi di /etc/logrotate.conf.
Apabila kita ingin menambahkan konfigurasi sendiri dapat di /etc/logrotate.d (Misal konfigurasi apache2 and mysql disimpan).
Log Aplikasi
Log aplikasi di Ubuntu secara default terletak di /var/log. Jika kita menginstall apache2 maka log aplikasi tersebut berada di /var/log/apache2.
Log aplikasi di /var/log/apache2 terdiri dari 2 yaitu:
/var/log/apache2/access.log – .Merekam setiap halaman yang ditampilkan oleh webserver.
access.log
/var/log/apache2/error.log – . Menyimpan seluruh pesan error yang dilaporkan oleh server HTTP
error.log
Log yang tidak bisa dibaca manusia
Beberapa file log di dalam subdirektori /var/log tidak dapat dibaca manusia karena bentuknya berupa binary.
Login Failures Log
Setiap kesalahan login akan dicatat di /var/log/faillog,dimana file log tersebut sebenarnya didesain untuk diparsing dan ditampilkan dengan perintah faillog.
faillog
Last Logins Log
Last logins log berada di /var/log/lastlog biasanya digabungkan dengan perintah lastlog. Cortoh untuk melihat daftar user apa saja yang login kita dapat menggunakan perintah lastlog dan untuk menampilkan satu halaman kita gunakan perintah less :
lastlog | less
Lastlog
Login Records Log
File /var/log/wtmp berisi tentang rekaman login, /var/log/wtmp perintah who untuk menampilkan daftar user yang baru saja logged in.
Sebelum anda menginstall wordpress anda membutuhkan LAMP (Linux, Apache, MySQL, and PHP). Cara menginstall LAMP di Ubuntu 14.04 :
Install Apache
Apache merupakan web server untuk hosting website kita.
Kita dapat menginstall Ubuntu’s package manager dengan perintah apt.
Ketik perintah sebagai berikut:
sudo apt-get update
sudo apt-get install apache2
Webserver telah terinstall. Tampilannya jika benar seperti ini:
TampilanApache
Anda dapat mengecek dengan melihat alamat IP public server anda di web browser.
http://your_server_IP_address
http://127.0.0.1
Server ip address anda bias berupa localhost: 127.0.0.1
Install MySQL
MySQL adalah system manajemen database. MySQL akan mengelola dan menyediakan akses ke database dimana
Ketikkan perintah sebagai berikut:
sudo apt-get install mysql-server php5-mysql
Selama instalasi, anda diminta untuk memilih sebuah password untuk MYSQL “root” user. Ini adalah sebuah akun administrator dalam MySQL.
Setelah instalasi selesai, kita harus menjalankan beberapa perintah tambahan untuk membuat lingkungan MySQL menjadi aman. Ketik perintah:
sudo mysql_install_db
Setelah itu, kita menjalankan sebuah kemanan untuk menghapus beberapa default berbahaya dan mengunci akses ke system database kita. Ketik perintah
sudo mysql_secure_installation
Anda kemudian akan ditanya tentang password untuk akun root MySQL. Jika anda setuju dengan password yang sudah anda buat dilangkah sebelumnya, ketik “n” pada command prompt terminal. Tekan “Enter” untuk pertanyaan-pertanyaan berikutnya sebagai default instalasi. Sampai dengan tahap ini anda telah menginstall MySQL.
Instalasi PHP
PHP adalah komponen untuk proses kode untuk menampilkan konten yang dinamis. PHP dapat menjalankan script, koneksi ke database MySQL untuk mendapatkan informasi, dan menampilka konten yang diproses ke tampilan di web server.
Kita ingin memodifikasi bahwa Apache melayani file ketika sebuah direktori diminta. Dasarnya, jika sebuah user meminta sebuah direktori dari server, Apache pertamakali akan melihat sebuah file dengan nama index.html.
Kita ingin web server untuk menggunakan file PHP, sehingga Apache akan melihat pertama kali pada file index.php
Untuk melakukan ini, kita harus membuka file dir.conf pada teks editor, ketik perintah:
Setelah selsai, simpan dan tutup file tersebut dengan menekan “CTRL-X”. Anda akan diminta konfirmasi untuk menyimpan file, tekan “Y” dan kemudian tekan “ENTER”.
Restart Apache, ketik perintah ini:
sudo service apache2 restart
Setelah anda melakukan instalasi Apache, MySQL, dan PHP maka anda dapat melanjutkan langkah di bawah ini:
Langkah 1 — Database MySQl dan User untuk WordPress
Setelah anda meginstall MySql, log into MySQL root dengan perintah sebagai berikut:
mysql -u root -p
Pertama, buat database WordPress contohnya dengan nama wordpress. Ketikkan perintah sebagai berikut:
CREATE DATABASE wordpress;
Buat akun dengan nama wordpressuser dan buat password dengan nama password. Catatan: akun dan password dapat anda pilih terserah anda. Ketikkan perintah sebagai berikut:
CREATE USER wordpressuser@localhost IDENTIFIED BY 'password';
Anda telah memiliki database dan akun user tetapi belum memiliki relationship dan user belum memiliki akses ke database.
Untuk memberikan akses pada user ke database yang tadi telah dibuat, ketikkan perintah sebagai berikut;
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost;
Now the user has access to the database. We need to flush the privileges so that the current instance of MySQL knows about the recent privilege changes we’ve made:
User telah punya akses ke database. Kita perlu flush privileges sehingga MySQL mengetahui perubahan privileges yang telah kita buat , dengan mengetikkan perintah sebagai berikut:
FLUSH PRIVILEGES;
Exit mysql;
exit;
Langkah 2- Download WordPress
Download wordpress yang paling up-to-date, dengan mengetikkan perintah
cd ~
wget http://wordpress.org/latest.tar.gz
Esktraksi file wordpress yang dikompres ke direktori home
tar xzvf latest.tar.gz
Maka wordpress akan ada di direktori home
Beberapa package yang perlu diinstall agar wordpress berkerja dengan images, install plugin dan update website dengan login SSH, maka kita ketikkan perintah dibawah ini
Mulai dengan pindahkan direktori WordPress yang telah diunpack tadi
cd ~/wordpress
Kita harus menyalin sample configuration ke default configuration supaya WordPress mengenali file. Ketikkan perintah sebagai berikut:
cp wp-config-sample.php wp-config.php
Kita ubah default configuration, ketik:
sudo nano wp-config.php
Kita harus menemukan settings untuk DB_NAME, DB_USER, and DB_PASSWORD supaya WordPress dapat terhubung dan terotentikasi dengan database yang telah kita buat.
Masukkan nilai dari parameters dengan infromasi untuk database yang telah anda buat sebelumnya. Tampilannya harusnya seperti ini:
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
Langkah 4 – Salin File ke Document Root
Setelah kita konfigurasi WordPress, selanjutnya kita menyalin ke Apache’s Document Root agar pengunjung dapat mengunjungi website kita
Salah satu cara untuk transfer file dari direktori ke direktori dengan perintah rsync
Lokasi dari Apache’s document root di var/www/html. Kita dapat menyalin direktori Wordpres yang diunpack di langkah sebelumnya ke direktori var/www/html, ketik:
sudo rsync -avP ~/wordpress/ /var/www/html/
Kita ke document root untuk melakukan perubahan permissions, ketik
cd /var/www/html/
Kita akan merubah ownership dari file wordpress kita untuk meningkatkan keamanan. Kita aan memberikan ownership user ke regular non-root user al (dengan sudo privileges). Hal ini juga dapat kita lakukan dengan membuat user tambahan.
Kita akan menggunakan akun yang sama untuk membuat initial server setup guide yang kita beri nama demo.
Kepemilikan grup kita akan berikan ke proses web server dalam hal ini yaitu www-data. Hal ini akan mengijinkan Apache untuk berinteraksi dengan konten seperlunya.
Kita dapat memberikan ownership ini dengan mengetikkan:
sudo chown -R demo:www-data *
Kemudian kita akan merubah kepemilikan untuk direktori upload. Buat direktori uploads di dalam direktori wp-content pada dokumen root.
mkdir /var/www/html/wp-content/uploads
Kita saat ini telah mempunyai sebuah direktori upload file, namun permission masih ketat. Kita harus mengijinkan web server untuk menulis ke dalam direktori.
Hardening adalah proses mengamankan sebuah sistem dengan mengurangi tingkat kerawanan di dalamnya.
NIST[08] membuat suatu panduan dasar untuk mengamankan sistem operasi antara lain:
Instalasi dan patch sistem operasi;
Hardening dan konfigurasi sistem operasi sesuai dengan persyaratan keamanan yang ditetapkan sistem antara lain:
Hapus layanan, aplikasi, dan protokol yang tidak diperlukan ;
Konfigurasi users, group, dan permissions
Konfiguasi resources control
Instalasi dan konfigurasi kontrol keamanan tambahan, seperti anti-virus, host-based firewalls, intrusion detection systems (IDS)
Ujicoba keamanan dari sistem operasi untuk memastikan bahwa langkah yang diterapkan sudah sesuai dengan persyratan keamanan
Instalasi
Instalasi Ubuntu Server dapat diinstal langsung pada harddisk atau menggunakan Virtual Box. Dalam kasus ini, saya mencoba menggunakan Oracle Virtual Box dengan sistem operasi host Windows 8.1 versi 64 bit.
Catatan: Iso Ubuntu Server berbeda dengan iso Ubuntu Desktop yang biasa kita gunakan. Iso Ubuntu Server umumnya tidak memiliki Graphical User Interface (GUI). Ubuntu Server berbeda dengan Ubuntu Desktop karena Ubuntu Server akan menginstall kernel yang dioptimasi untuk Server dan di dalam Ubuntu Server tidak terdapat X Windows.
Setelah anda selesai menginstall Oracle Virtualbox, jalankan maka akan muncul tampilan di dibawah ini:
GUI Oracle VirtualBox 4.4
Klik New, untuk instalasi iso Ubuntu Server 14.04. Load Iso Ubuntu Server yang telah kita download sebelumnya. Isikan nama : Ubuntu_Server, VirtualBox akan mendeteksi OS yang akan kita gunakan.
Langkah1_CreateVirtualMachine
Langkah2_PilihMemori
Pemilihan memori terserah anda, namun ingat pemilihan memori default umumnya direkomendasikan oleh VirtualBox. Saya pilih 512 MB, klik “Next”.
Langkah3_PilihHarddrive
Pilih Create a virtual harddrive now
Langkah3_PilihHarddrive2
Virtual Drive yang anda pilih adalah Virtual Disk Image (VDI).
Langkah3_PilihHarddrive3Langkah3_PilihHarddrive4
Langkah4_TampilanUbuntuServer
Langkah5_TampilanInstalasi
Langkah6_TampilanUbuntuServer
Ikuti langkah instalasi sampai selesai. Jika instalasi benar maka akan keluar tampilan diatas. Masukkan Username dan Password
Jika langkah di atas sudah dilakukan, maka anda dapat melakukan langkah dibawah ini:
Patch
Patch berguna untuk menambal dan mengupdate aplikasi, system, maupun distribusi system operasi Ubuntu Server 14.10. Instalasi patch pada Ubuntu Server ada 2 yaitu:
$ sudo apt-get update (Perintah ini untuk mengupdate folder dan file aplikasi yang ada di ubuntu dan file dependecynya) $ sudo apt-get dist-upgrade (Perintah ini untuk update Distribusi OS dengan major upgrade)
Untuk uninstall patch yang tidak diinginkan, ketik perintah:
$ sudo dpkg-reconfigure unattended-upgrade
Manajemen User
merupakan salah satu langkah mitigasi untuk menghindari user yang tidak terotorisasi masuk ke dalam root privileges. Manajemen User terdiri dari 4 bagian yaitu:
a. Menambahkan dan menghapus User
Menambahkan user -> $ sudo adduser username
Menghapus user -> $ sudo deluser username
Menghapus username tidak otomatis menghapus direktori home folder
b. Profil Keamanan User
Jika server anda terdiri dari banyak user, anda harus memperhatikan user home directory permissions untuk memastika kerahasiaan data di server. Secara default, user home directories di dalam Ubuntu dibuat dengan world read/execute permissions.
Untuk memastikan permission apa yang digunakan pada user/home/directory, kita dapat menggunakan perintah sebagai berikut:
$ls -ld /home/username
Output di bawah ini menunjukkan direktori home/username memiliki world readable permission:
Secara default, Ubuntu membutuhkan panjang password minimal 6 karakter dan pemeriksaan entropi sederhana. Nilai password ini disimpan di dalam /etc/pam.d/common-password, yang ditunjukan dibawah ini
Kita dapat melakukan konfigurasi password policy dengan perintah:
$sudo nano /etc/pam.d/environment
Kita dapat menampilkan status terbaru dari sebuah akun user, dengan perintah sebagai berikut:
$sudo chage -l username
Contoh hasilnya sebagai berikut:
Last password change : Jan 20, 2008
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
Kita dapat mengubah konfigurasi dengan contoh sebagai berikut :
expiration date (-E) to 01/31/2011, minimum password age (-m) of 5 days, maximum password age (-M) of 90 days, inactivity period (-I) of 5 days after password expiration, and a warning time period (-W) of 14 days before password expiration.
Disable Ctrl-Alt-Del agar tidak bisa reboot menggunakan Ctrl-Alt-del, dengan mengetikkan perintah sebagai berikut:
$sudo gedit /etc/init/control-alt-delete.conf
Di dalam control-alt-delete.conf kita dapat mengedit sebagai berikut:
Firewall
Konfigurasi firewall secara default pada Ubuntu adalah ufw. Ufw merupakan cara mudah untuk menambahkan dan/atau menghapus rules sederhana pada firewall. Hal ini biasanya digunakan pada host-based firewall.
Mengaktifkan firewall: $sudo ufw enable
Untuk membuka port 22 (ssh): $sudo ufw allow 22
Rule ditambahkan menggunakan format angka: $sudo ufw insert 1 allow 80
Untuk menutup sebuah port: $sudo ufw deny 22
Untuk menghapus sebuah rule:$sudo ufw delete deny 22
Menonaktifkan firewall: $sudo ufw disable
Melihat status firewall: $sudo ufw status
Melihat status informasi verbose: $sudo ufw status verbose
Apparmor
AppArmor adalah sebuah sistem Mandatory Access Control (MAC) dimana sebuah kernel untuk confine program dengan sumber daya yang terbatas. Model keamanan AppArmor adalah memasangkan atribut kontrol akses ke program daripada ke user.
AppArmor confinementmenggunakan profile yang dimasukkan ke dalam kernel dibandingkan ke dalam boot. Profile AppArmoe dibagi menjadi 2(dua) mode yaitu enforcement and complain.
Profile dalam mode enforcement akan menghasilkan pemaksaan kebijakan yang dedefinisikan di dalam profile sama halnya dengan percobaan pelanggaran kebijakan (baik melalui syslog maupun auditd).
Sedangkan profile dalam mode complain tidak akan memaksa kebijakan tetapi lebih ke pelaporan percobaan pelanggaran kebijakan.
Profiles loaded in enforcement mode will result in enforcement of the policy defined in the profile as well as reporting policy violation attempts (either via syslog or auditd). Profiles in complain mode will not enforce policy but instead report policy violation attempts.
Secara default aplikasi AppArmor sudah terinstall di Ubuntu 14.10
Untuk melihat status AppArmor kita dapat mengetikkan:
$sudo app_armor status
apparmor_status
Jika kita lihat gambar diatas, terdapat 22 profil dan 22 profil tersebut dalam enforce mode
Certificates (Sertifikat Digital)
Pembuatan sertifikat digital di Ubuntu dapat menggunakan openSSL. Kita akan membuat sertifikat digital dengan cara sebagai berikut:
Buat pasangan kunci privat dan kunci publik;
Buat sebuah certificate request berdasarkan kunci publik yang telah dibuat pada langkah 1. Certificate request berisi informasi tentang server anda dan perusahaan hosting server tersebut.
Kirim certificate request, bersama dengan dokumen yang membuktikan identitas anda ke sebuah CA.
Ketika anda setuju untuk menggunakan CA tertentu, anda harus mengikuti intruksi untuk memperoleh sertifikat digital dari CA tersebut
Instalasi sertifikat digital di dalam server anda dan konfigurasi aplikasi yang sesuai untuk penggunaan sertifikat digital tersebut.
eCryptfs
eCryptfs adalah sebuah aplikasi kriptografi sistem file yang bertumpuk (stacked). Pada lapisan atas sistem file eCryptfs melindungi file tidak peduli sistem file yang ada di bawahnya contoh tipe partisi, dll.
Selama instalasi terdapat sebuah pilihan untuk enkripsi partisi /home. Hal ini akan secara otomatis melakukan konfigurasi yang dibutuhkan untuk enkripsi dan mount partisi tersebut.
Sebagai contoh, kita akan melakukan enkripsi pada direktori /srv menggunakan eCryptfs
Pertama kita install eryptfs menggunakan terminal dengan mengetikkan perintah di bawah ini;
$ sudo apt-get install ecryptfs-utils
Kemudian kita akan mount dan enkripsi direktori /srv, ketikkan perintah dibawah ini;
$ sudo mount -t ecryptfs /srv /srv
mount -t artinya kita memilih aplikasi apa dan direktori mana yang akan dienkripsi
Maka akan muncul tampilan sebagai berikut:
ecyrptfs
Kita pilih algoritma enkripsi yang akan digunakan, misal pilih no 1, kemudian pilih kunci 1 (16 bytes)