Wednesday, April 22, 2015

Implementasi HTTP Kickstart CentOS/Rhel 6.X

Buat temen2 yang sering banged main di data center seringkali dihadapkan pada situasi harus melakukan installasi OS di puluhan server. Kalau satu2 ribet kan?
Sebenernya ada cara mudah untuk melakukan instalasi secara otomatis yaitu menggunakan kickstart.

Metode ini memang konvensional karna zaman sekarang cloud sudah lebih populer yang dilengkapi dengan fitur cloning. Tapi di beberapa kasus masih sangat berguna banged fitur ini.

Nah kickstart ini biasanya digunakan untuk instalasi OS Linux, kickstart bakal men-generate sebuah file yang bisa digunakan sebagai template installer sebuah OS.

Langsung aja dibawah ini contohnya.

Langkah 1 - Install Kickstart Generator

[root@ip-local-private ~]# yum install system-config-kickstart

Langkah 2 - Generate Kickstart File

[root@ip-local-private ~]# system-config-kickstart

Akan muncul kickstart configurator, nah silahkan generate template sesuai yang anda inginkan. Dibawah ini langkah-langkah untuk mengenerate kickstart file.

- Setting TimeZone dan Password root


- Setting Partisi Harddisk yang digunakan, kalo dilinux temen2 harus perhatikan mount point yang wajib kudu itu / dan /boot. 

Contoh dibawah partisi mount point / dengan file system ext4 berukuran 10GB



Lalu setting partisi /boot 100 MB dengan filesystem ext4.



- Jangan lupa linux juga harus ada swap, maka bikinlah partisi swap. Contoh dibawah ini swapnya 100MB.


- Save kickstart file dengan cara pilih tab file - save.


Kickstart file sudah selesai di generate.

Langkah 3 - Pindahkan kickstart file ke direktori root HTTP

Setelah di save pindahin ke direktori root HTTP anda agar bisa diakses oleh server lain. Sebenernya metode carriernya macem2 bisa HTTP, FTP, dsb. 
Pada contoh ini saya sudah save kickstart filenya di direktori /root dengan nama ks.cfg dan akan dipindahkan ke /var/www/html

[root@ip-local-private ~]# cp ks.cfg /var/www/html/

Lalu verivikasi service HTTP anda ON karna semua server nanti akan mengakses file kickstart ini melalui HTTP service.
[root@ip-local-private ~]# /etc/init.d/httpd status
httpd (pid  2591) is running...

Lalu testing menggunakan curl, sebagai notes IP Address server saya adalah 192.168.99.103/

[root@ip-local-private ~]# curl http://192.168.99.103/ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
# Root password
rootpw --iscrypted $1$zrSCw4PY$M4XtjK3SS8OuQ0uxdAEkF/
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info

# System timezone
timezone --isUtc Asia/Jakarta
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all  
# Disk partitioning information
part swap --fstype="swap" --size=100
part / --fstype="ext4" --size=10000
part /boot --fstype="ext4" --size=100


Apabila output dari curl sudah seperti diatas artinya sudah OK. 
Output diatas itu merupakan hasil generate dari kickstart generator tadi.

Langkah 4 - Instalasi OS Centos

Sekarang anda dapat mencoba instalasi OS menggunakan kickstart ini. Caranya seperti dibawah ini.

- Ketika muncul gambar seperti dibawah tekan [tab] lalu tambahkan parameter kernel seperti dalam box merah pada gambar dibawah ini.


Kalau sudah kelar pencet [ENTER], maka proses instalasi akan berjalan secara otomatis.

Gampang kan?
Selamat mencoba guys.

Mengenal Apa Itu Systemd, Systemctl, dan Manajemen Services di CentOS 7

Dalam CentOS versi terbaru yaitu CentOS 7, system startup beserta proses server di manage oleh systemd dan service manager. Program ini memberikan sebuah metode untuk mengaktifkan system resources, daemons dan proses lainnya baik itu ketika booting maupun ketika system sedang berjalan.
Kita semua mengetahui bahwa selama bertahun-tahun sebelumnya process ID 1 dari Linux dan UNIX system adalah "init process" yang mana bertanggung jawab untuk mengaktifkan services lainnya dan mungkin inilah asal muasal istilah dari "init system".

Pada CentOS 7 prosess ID 1 adalah "systemd" yang merupakan init system baru, apa yang membuat systemd berbeda dengan initd?
  • Systemd merupakan enhancement dari initd yang memiliki kapabilitas paralel yang dapat meningkatkan proses boot speed dari OS meningkat lebih baik ketimbang sebelumnya.
  • On-demand start daemons tanpa membutuhkan service yang dipisahkan.
  • Automatic service dependency management yang bisa mencegah timeout panjang seperti menstart service network ketika network sedang tidak available.
  • Metode tracking process dengan menggunakan linux control groups.

Nah di CentOS 7 command yang digunakan untuk memanage tipe dari object systemd adalah "systemctl" dan dapat disebut dengan "units".
Berikut dibawah ini listing unit files systemctl yang bisa digunakan untuk memanage services di CentOS 7.

  • Services State/Status Services
    Format : systemctl status name.type
    Contoh : systemctl status httpd.service
    Status Output :
    loaded                = Configuration unit telah di proses.
    active (running) = Running dengan satu proses atau lebih.
    active (exited)    = Status aktif dan sukses (one-time configuration).
    active (waiting)  = Status running namun menunggu sebuah event.
    inactive              = Tidak aktif
    enabled              = Akan di start ketika boot (persistent).
    disabled             = Tidak akan di start ketika boot (tidak persistent).
  •  Listing Files Unit Menggunakan Systemctl

    Query state semua unit untuk memverifikasi sebuah startup system
    # systemctl

    Query state hanya dari unit service
    # systemctl --type=service

    Listing status sebuah services
    # systemctl status httpd.service -l
  • Manajemen Services Start, Stop, Persistent, dsb.

    Start/Jalankan Service
    # systemctl start httpd.service

    Verifikasi apakah sistem active
    # systemctl is-active httpd

    Restart Services
    # systemctl restart httpd.service

    Stop Services
    # systemctl stop httpd.service

    Reload Services
    # systemctl reload httpd.service

    Enable service ketika di booting (Persistent)
    # systemctl enable httpd.service

    Disabled Service ketika booting (Non-Persistent)
    # systemctl disable httpd.service

    Verifikasi apakah service di start ketika booting
    # systemctl is-enabled httpd

Semoga bermanfaat yah terutama buat yang ingin mencoba CentOS 7 ataupun RHEL 7.

Sunday, April 19, 2015

Command Konfigurasi Network CentOS 7

Ada banyak pembaharuan di CentOS 7 bukan hanya dari consolidate files yang membuat performance OS ini menjadi lebih baik namun juga beberapa command pun ada yang berubah terutama di bagian network dan services.

Kali ini saya mau coba share beberapa command yang sangat berguna untuk konfigurasi network di CentOS 7.

Display Status Network Menggunakan nmcli dan Beberapa Command Lainnya

- Display current IP Address dan Netmask di semua interfaces
# ip addr

- Display statistik untuk interface eth0
# ip -s link show eth0

- Display Informasi Routing
# ip route

- Traceroute command 
# tracepath google.com

- Display seluruh list connection
# nmcli con show

- Display connection yang active saja
# nmcli con show --active

- Display connection detail dari sebuah interface
# nmcli con show eth0

- Display device status connection dari semua device
# nmcli dev status

- Display device status connection dari interface yg spesifik
# nmcli dev show eth0


Membuat Network Connection Dengan nmcli

- Membuat koneksi default DHCP bedasarkan ethernet yang digunakan
# ip addr show (liat dulu ada interface apa yang digunakan)
# nmcli con add con-name "default" type ethernet ifname eth0

- Membuat koneksi bernama statik, medefine IP address & gateway, no persistent (autoconnect no)
# nmcli con add con-name "statik" ifname eth0 autoconnect no type ethernet ip4 192.168.99.19/24 gw4 192.168.99.5

- Membuat koneksi yang sama seperti diatas namun persistent (autoconnect automatically yes)
# nmcli con add con-name "statik" ifname eth0 type ethernet ip4 192.168.99.19/24 gw4 192.168.99.5

Notes :
Kalo autoconnect diganti menjadi yes atau gak dipake, maka ketika di reboot koneksi menjadi persistent.

-  Ubah jadi koneksi network menggunakan koneksi yang telah dibuat yaitu koneksi "statik".
# nmcli con up "static"

- Ubah lagi ke koneksi default "DHCP"
# nmcli con up "default"


Modifikasi Network Interfaces Dengan nmcli

- Turn off autoconnect
# nmcli con mod "statik" connection.autoconnect no

- Mendefine DNS Server
# nmcli con mod "statik" ipv4.dns 8.8.8.8

- Nambahin value dari DNS atau istilah menjadi DNS2
# nmcli con mod "statik" +ipv4.dns 8.8.4.4

- Replace statik IP address and gateway
# nmcli con mod "statik" ipv4.address "192.168.227.10/24 192.168.227.2"

- Nambahin secondary IP Address tanpa gateway
# nmcli con mod "statik" +ipv4.address 10.10.10.19/24

- Jangan lupa, "nmcli con mod" akan menyimpan setting ke file configuration namun belum aktif, untuk mengaktifkan perubahan maka koneksi butuh diaktifkan ulang.
# nmcli con up "statik"

- Reload Network Manager
# nmcli con reload

Konfigurasi Hostname

- Cek hostname yang digunakan
# hostname

- konfigurasi hostname 
# hostnamectl set-hostname arifzulfikar.com

- Cek status hostname
# hostnamectl status

Notes :
Apabila ingin mengignore auto dns atau peerdns dengan nmcli bisa gunakan command dibawah ini.
# nmcli con mod "statik" ipv4.ignore-auto-dns yes

Wednesday, April 15, 2015

7 Hal Penting di Operating System Berbasis Linux

Kalo buat temen-temen yang seneng bermain sama linux pasti tau hal-hal yang bakal saya sebut dibawah ini. Berikut dibawah ini 7 hal yang penting di OS Linux beserta penjelesan singkat dan fungsinya sebagai apa.
  1. Bootloader
    Bootloader adalah program pertama ketika OS linux dijalankan dan secara gak langsung bootloader merupakan elemen penting dari linux, itulah sebabnya kenapa saya ketika mengintall OS linux selalu memberikan partisi khusus untuk folder /boot sebab kalo sudah corrupt pusing troubleshootnya. Fungsi bootloader adalah meload dan memuat operating system ketika pertama kali di start, di linux mungkin kamu familiar kan dengan yang namanya grub loader? Grub loader lah yang menangani metode loader OS linux kamu.

  2. Kernel
    Saya pernah baca di sebuah forum bahwa ada yang bilang bahwa "Linux is not an Operating System, it's a kernel".  Statement itu memang bener bahwa linux itu adalah kernel, di dunia ini yang saya tau ada 3 kernel yang terkenal sebagai platform OS yaitu kernel windows, unix, dan linux yang merupakan turunan unix. Agar gak salah paham coba mindsetnya diubah menjadi seperti ini, linux itu adalah kernel yang merupakan Operating System itu adalah redhat, centos, ubuntu, fedora, dsb. Pertanyaan selanjutnya apa sih fungsi kernel? Kernel adalah program yang dibuat yang berfungsi sebagai bridge antara program dan mesin komputer, fungsinya itu agar intruksi-intruksi program dapat dieksekusi oleh hardware secara aman. Maka sebenernya sebelum program kamu di eksekusi oleh CPU atau masuk ke RAM sebenernya intruksi-intruksi tersebut melewati kernel terlebih dahulu sebelum di esksekusi oleh mesin komputer.

  3. Daemons
    Kalo bahasa indonesianya itu hantu ato dedemit hahahaha. Namun kalo di operating system daemons adalah sebuah program yang berjalan di background, mungkin karna itu disebut "Daemons". Kalo di linux hampir semua service dijalankan oleh daemon contohnya httpd, slapd, vsftpd, syslogd, dsb. Hampir semuanya berakhiran "D" yah haha, tapi yang umum itu adalah hampir di semua operating system yang servicenya dijalankan oleh daemon biasanya berjalan dalam waktu yang sangat lama bahkan harus terus-terusan berjalan.

  4. Shell
    Kalo sering bermain linux pasti tau apa itu shell, shell merupakan salah satu jenis program asli bawaan linux yang apabila digunakan menyediakan komunikasi langsung antara user dan kernel. Hampir semua distro linux saat ini default environment shellnya adalah bash yang merupakan improvement dari unix shell, tanpa adanya bash maka kamu gak akan pernah mengeksekusi perintah di command prompt. Kalo kamu gak percaya coba aja hapus file /bin/bash di OS linux kamu dan liat hasilnya apaan, inget buat uji coba di komputer sendiri yah jangan di komputer production hehehe....

  5. Shell Utilities
    Shell utilities adalah perintah built in yang merupakan bagian atau bawaan dari shell, maka kalo sudah ada shell/bash berarti sudah pasti ada sekumpulan perintah/command bawaan yang bisa digunakan dan command ini biasanya fungsinya penting banged contohnya cp, ls, mv, dsb. Command yang menjadi bagian dari shell utilities ini biasanya ada di folder /bin coba cek aja kalo gak percaya binary file seperti cp, gunzip, mv, mount, dsb biasanya ada di folder tsb. Hati2 yah jangan sampe kedelete.. ^,^

  6. X.org
    X.org adalah package graphical desktop yang biasanya terdapat di distro linux sehingga X.org ini bukan merupakan bagian dari kernel. X.org adalah package terpisah dan oleh sebab itu ketika kita install linux kita bisa pilih juga mau diinstall paket GUI-nya atau tidak, dan X.org ini sudah ada dari taun 1984 dari jaman jadul yang memang khusus dikembangkan OS berbasis UNIX memiliki kemampuan untuk di akses dan dimanage oleh GUI. Ada beberapa package yang terkenal untuk saat ini yaitu KDE, GNOME, XFCE, LXDE, dsb.

  7. Desktop Environment
    Kalo ngomongin linux desktop otomatis kita juga akan berbicara tentang desktop environment. Desktop environment terdiri dari icons, windows, toolbar, folders, dan lain sebagainya. Ada banyak desktop environment yang beredar saat ini. Ubuntu menggunakan Unity, Fedora menggunakan GNOME dan Mint menggunakan Cinnamon/Mate.

Nah semoga ada pencerahan yah hehehe..

Mengenal Apa Itu Fault Tolerance Di VMWare vSphere

Sebelumnya saya pernah menshare tentang apa itu High Availability atau yang di dunia persilatan lebih dikenal dengan HA, apabila temen-temen belum membaca bisa baca apa itu HA disini. Pada tulisan saya kali ini saya mau sedikit share tentang FT atau Fault Tolorance di VMware vSphere.
Apa sih Fault Tolerance? Kenapa sebutannya kaya gitu yah? Saya juga gak tau hahaha. Namun yang jelas menurut saya teknologi FT lebih canggih daripada HA, sebelum saya cerita panjang lebar mungkin saya coba jabarkan dulu yah apa itu FT.

Fault Tolerance adalah teknologi yang didesain sedemikian rupa untuk sebuah virtual machine yang memungkinkan terjadinya proses take over task tanpa adanya sebuah downtime dari service yang sedang berjalan, inilah kenapa saya sebut FT lebih canggih ketimbang HA karna dalam implementasinya dilapanga FT tidak ada downtime sedangkan HA ada downtime untuk proses restartnya ketika fail over terjadi.

Ada sebuah catatan kecil apabila temen-temen mau melakukan implementasi FT jangan semua virtual machine dalam host diimplemen FT. Karna teknologi ini memakan resource yang tinggi dari si hostnya, tipsnya adalah pilih VM yang paling critical semisalnya DB.


Nah gimana sih cara kerja FT sehingga memungkinkan tidak ada downtime? Sebelum saya jelaskan cara kerjanya coba temen-temen liat gambar dibawah ini.


Nah dari gambar diatas bisa terlihat yah, intinya adalah apabila kita ingin melakukan implementasi FT maka 3 host diatas harus dijadikan cluster HA terlebih dahulu. 
Cara kerjanya ialah FT akan membuat copy atau menduplikasi virtual machine di host yang berbeda dengan teknologi yang bernama vLockstep.

VMware vLockstep technology memastikan VM yang telah diduplikasi di host lain tetap bisa saling sinkronisasi dan memungkinkan beban kerja/workload dari kedua VM tersebut berjalan secara simultan di host yang berbeda, kalo saya sih lebih seneng nyebutnya Mirroring virtual machine. Konsepnya itu satu copy dari virtual machine tersebut bisa kamu sebut sebagai primary virtual machine, VM ini menjalakan informasi, melayani service dan aplikasi seperti biasanya. Salinan copy yang lainnya disebut secondary virtual machine, secondary VM ini juga menerima input yang sama percis yang diterima oleh si primary VM dan oleh sebab itulah kenapa saya sebut mirroring vm hehe. 

Pertanyaan selanjutnya, gimana mereka berkomunikasi dengan dunia luar? Menarik nih, external world itu hanya akan mengenal satu virtual machine saja which is artinya external world hanya mengenal satu buah IP Address dan satu buah MAC Address dan kita pun hanya perlu memanage satu virtual machine saja yaitu virtual machine primary.
Jika primary VM fail/down maka FT akan sesegera mungkin dalam sepersekian detik membuat copy dari VM yang fail tsb ke host lain dan mengassign VM tsb untuk menghandel task dari VM yang fail tsb, tentu saja VM di copy ke host yang ada dalam satu cluster.

Secara teknis sebelum kita implementasi FT ada beberapa hal yang kudu diperhatikan nih, antara lain adalah sebagai berikut ini.
  • Di dalam vSphere maksimal VM yang dapat menjalankan FT hanya 4 di setiap hostnya.
  • Pastikan juga Virtual Machine di create di shared storage.
  • Turn-off BIOS power management, hal ini dilakukan agar secondary VM mendapatkan resource CPU yang cukup ketika proses fail over terjadi. 

Nah demikian lah kira-kira konsep dan cara kerja fault tolerance di vSphere, semoga berguna yah buat temen-temen sekalian hehehe....

Monday, April 13, 2015

15 Command Linux Untuk System Information Overview

Banyak yang mengabaikan command sederhana dibawah ini padahal kadang di satu waktu fungsinya sangat dibutuhkan, karna pada saat itulah kita membutuhkan informasi yang bisa diberikan oleh command-command yang akan saya sebutkan ini.

Langsung aja yah, dibawah ini command yang mungkin sangat berguna untuk agan ketika menggunakan linux.
  1. arch
    Command diatas akan memberikan agan informasi mengenai arsitektur system yang sedang digunakan di operating system linux agan.
    Contoh
    [root@webmail ~]# arch
    x86_64

  2. uname -a
    Command ini akan memberitahu agan semua ringkasan informasi yang berkaitan dengan OS yang sedang agan gunakan. Informasi yang bisa agan dapatkan antara lain adalah kernel-name, nodename, kernel release, kernel version, hardware name, processor type, hardware platform, operating system.
    Contoh
    [root@webmail ~]# uname -a
    Linux webmail.uid.ac.id 2.6.32-504.8.1.el6.x86_64 #1 SMP Wed Jan 28 21:11:36 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

  3. dmidecode -q
    Memberikan agan informasi mengenai komponen hardware yang digunakan di Server/PC agan dalam human-readable format. Sangat berguna apabila agan ingin mengetahui informasi seperti Manufaktur Motherboard, ROM size, Bios Version, Memory Device Information, Processor Information, Cooling Device, Temperature probe, Management Device Component, dan lain sebagainya.
    Contoh
    [root@webmail ~]# dmidecode -q

    ........................................
    ........................................
    ........................................
    64-bit Memory Error Information
    Type: OK
    Granularity: Unknown
    Operation: Unknown
    Vendor Syndrome: Unknown
    Memory Array Address: Unknown
    Device Address: Unknown
    Resolution: Unknown

  4. hdparm -i /dev/hda
    Command ini dapat membantu kita dalam mencari tahu model beserta karakteristik hardisk yang sedang kita gunakan.
    Contoh
    [root@webmail ~]# hdparm -i /dev/sda
    /dev/sda:
     Model=Hitachi HDS721050CLA660, FwRev=JP2OA50E, SerialNo=JP1522FP2A4K8B
     Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
     RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=56
     BuffType=DualPortCache, BuffSize=14111kB, MaxMultSect=16, MultSect=16
     CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=976773168
     IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
     PIO modes:  pio0 pio1 pio2 pio3 pio4 
     DMA modes:  mdma0 mdma1 mdma2 
     UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
     AdvancedPM=yes: disabled (255) WriteCache=enabled
     Drive conforms to: unknown:  ATA/ATAPI-2,3,4,5,6,7

     * signifies the current active mode

  5. hdparm -tT /dev/sda
    Command ini sangat berguna ketika agan mau menjalankan testing cache reads & buffering disk read pada hardisk yang ada di Server/PC agan. Saya pribadi sering menggunakan command ini apabila server yang hendak saya gunakan akan difungsikan sebagai database yang memerlukan resource input-output yang harus benar-benar diperhitungkan.
    Contoh
    [root@web1 ~]# hdparm -tT /dev/sda
    /dev/sda:
     Timing cached reads:   10764 MB in  2.00 seconds = 5386.79 MB/sec
     Timing buffered disk reads: 444 MB in  3.01 seconds = 147.51 MB/sec

  6. cat /proc/cpuinfo
    Command yang sangat berguna untuk mencari tahu informasi lebih dalam tentang CPU yang sedang agan gunakan di Server/PC
    Contoh
    [root@web1 ~]# cat /proc/cpuinfo
    processor : 0
    vendor_id : GenuineIntel
    cpu family : 6
    model : 69
    model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
    stepping : 1
    cpu MHz : 2294.719
    cache size : 3072 KB
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 13
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb xsaveopt pln pts dts fsgsbase smep
    bogomips : 4589.43
    clflush size : 64
    cache_alignment : 64
    address sizes : 40 bits physical, 48 bits virtual

  7. cat /proc/vmstat
    Command ini berfungsi untuk memberi agan report mengenai penggunaan statistik dari virtual memory yang sedang digunakan. Informasi penting lainnya yang bisa agan dapatkan dengan command ini antara lain processes, memory, paging, block IO, traps, and cpu activity.
    Contoh
    [root@web1 ~]# cat /proc/vmstat 
    nr_free_pages 24073
    nr_inactive_anon 12334
    nr_active_anon 35183
    nr_inactive_file 14300
    nr_active_file 30294
    nr_unevictable 2599
    nr_mlock 2599
    nr_anon_pages 48048
    nr_mapped 16827
    nr_file_pages 46667
    nr_dirty 125
    nr_writeback 0
    nr_slab_reclaimable 2318
    nr_slab_unreclaimable 2426
    nr_page_table_pages 1823
    nr_kernel_stack 234
    nr_unstable 0
    nr_bounce 0
    nr_vmscan_write 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem 791
    nr_anon_transparent_hugepages 0
    pgpgin 716739
    pgpgout 84109
    pswpin 0
    pswpout 0
    pgalloc_dma 1454
    pgalloc_normal 631055
    pgalloc_high 0
    pgalloc_movable 0
    pgfree 656679
    pgactivate 38944
    pgdeactivate 11616
    pgfault 1108815
    pgmajfault 1655
    pgrefill_dma 0
    pgrefill_normal 11616
    pgrefill_high 0
    pgrefill_movable 0
    pgsteal_dma 64
    pgsteal_normal 64768
    pgsteal_high 0
    pgsteal_movable 0
    pgscan_kswapd_dma 32
    pgscan_kswapd_normal 53280
    pgscan_kswapd_high 0
    pgscan_kswapd_movable 0
    pgscan_direct_dma 32
    pgscan_direct_normal 21312
    pgscan_direct_high 0
    pgscan_direct_movable 0
    pginodesteal 565
    slabs_scanned 10624
    kswapd_steal 48597
    kswapd_inodesteal 1400
    kswapd_low_wmark_hit_quickly 174
    kswapd_high_wmark_hit_quickly 1
    kswapd_skip_congestion_wait 1
    pageoutrun 951
    allocstall 410
    pgrotated 0
    compact_blocks_moved 0
    compact_pages_moved 0
    compact_pagemigrate_failed 0
    compact_stall 0
    compact_fail 0
    compact_success 0
    htlb_buddy_alloc_success 0
    htlb_buddy_alloc_fail 0
    unevictable_pgs_culled 4756
    unevictable_pgs_scanned 0
    unevictable_pgs_rescued 2690
    unevictable_pgs_mlocked 8553
    unevictable_pgs_munlocked 4146
    unevictable_pgs_cleared 84
    unevictable_pgs_stranded 0
    unevictable_pgs_mlockfreed 0

  8. cat /proc/meminfo
    Command ini mampu memberikan informasi mendetail dan juga verifikasi terhadap memory yang sedang anda gunakan di Server/PC agan. Informasi penting yang dapat agan peroleh antara lain total memory, total free memory, total buffer, total cache, total swap cached, total swap, dan lain sebagainya.
    Contoh
    [root@web1 ~]# cat /proc/meminfo 
    MemTotal:         510780 kB
    MemFree:           86008 kB
    Buffers:           11208 kB
    Cached:           189308 kB
    SwapCached:            0 kB
    Active:           271868 kB
    Inactive:         106624 kB
    Active(anon):     136960 kB
    Inactive(anon):    49336 kB
    Active(file):     134908 kB
    Inactive(file):    57288 kB
    Unevictable:       10396 kB
    Mlocked:           10396 kB
    HighTotal:             0 kB
    HighFree:              0 kB
    LowTotal:         510780 kB
    LowFree:           86008 kB
    SwapTotal:       1048568 kB
    SwapFree:        1048568 kB
    Dirty:               628 kB
    Writeback:             0 kB
    AnonPages:        188420 kB
    Mapped:            66656 kB
    Shmem:              3164 kB
    Slab:              19324 kB
    SReclaimable:       9576 kB
    SUnreclaim:         9748 kB
    KernelStack:        1872 kB
    PageTables:         7264 kB
    NFS_Unstable:          0 kB
    Bounce:                0 kB
    WritebackTmp:          0 kB
    CommitLimit:     1303956 kB
    Committed_AS:     613540 kB
    VmallocTotal:     505848 kB
    VmallocUsed:        5184 kB
    VmallocChunk:     493712 kB
    HugePages_Total:       0
    HugePages_Free:        0
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    DirectMap4k:        8192 kB
    DirectMap2M:      516096 kB

  9. cat /proc/swaps
    Command ini memberikan informasi untuk agan mengenai swap devices files yang agan gunakan.

    Contoh

    root@web1 ~]# cat /proc/swaps
    Filename Type Size Used Priority
    /dev/sda3                               partition 1048568 8 -1

  10. cat /proc/version
    Command ini mampu memberikan agan informasi mengenai summary info dan kernel version yang digunakan oleh operating system linux di Server/PC agan.
    Contoh
    [root@web1 ~]# cat /proc/version
    Linux version 2.6.32-431.el6.i686 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 00:26:36 UTC 2013


  11. cat /proc/net/dev
    Agan bisa menggunakan command ini untuk mencari tau informasi mengenai network adapters yang digunakan di Server/PC agan, selain itu command ini juga mampu menampilkan statistik dari network adapters yang sedang agan gunakan loh.
    Contoh


  12. cat /proc/partitions
    Mau tau ada berapa partisi yang digunakan di Server/PC linux yang agan gunakan? Gunakan command diatas.
    Contoh
    [root@web1 ~]# cat /proc/partitions
  13. major minor  #blocks        name
  14.    8        0       20971520     sda
  15.    8        1       307200         sda1
  16.    8        2       19614720     sda2
  17.    8        3       1048576       sda3


  18. cat /proc/mounts
    Command ini jarang digunakan tapi kadang kepake kalo mau troubleshoot file system yang misalnya corrupt atau kasus unik lainnya. Command diatas nunjukin file system yang telah termounting (by system) di Server/PC linux agan.
    Contoh
    [root@web1 ~]# cat /proc/mounts
    rootfs / rootfs rw 0 0proc /proc proc rw,relatime 0 0sysfs /sys sysfs rw,relatime 0 0devtmpfs /dev devtmpfs rw,relatime,size=247196k,nr_inodes=61799,mode=755 0 0devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0tmpfs /dev/shm tmpfs rw,relatime 0 0/dev/sda2 / ext4 rw,relatime,barrier=1,data=ordered 0 0/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0/dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0vmware-vmblock /var/run/vmblock-fuse fuse.vmware-vmblock rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other 0 0

  19. lspci -tv
    Mau tau informasi mengenai PCI display dari device yang sedang agan gunakan? Gunakan command ini. 

    Contoh

    [root@web1 ~]# lspci -tv
    -[0000:00]-+-00.0  Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge           +-01.0-[01]--
    +-07.0  Intel Corporation 82371AB/EB/MB PIIX4 ISA
    +-07.1  Intel Corporation 82371AB/EB/MB PIIX4 IDE
    +-07.3  Intel Corporation 82371AB/EB/MB PIIX4 ACPI
    +-07.7  VMware Virtual Machine Communication Interface
    +-0f.0  VMware SVGA II Adapter
    +-10.0  LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI
    +-11.0-[02]--+-00.0  VMware USB1.1 UHCI Controller
    |            +-01.0  Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE]
    |            +-02.0  Ensoniq ES1371 [AudioPCI-97]
    |            \-03.0  VMware USB2 EHCI Controller
    +-15.0-[03]--
    +-15.1-[04]--
    +-15.2-[05]--
           +-15.3-[06]--
           +-15.4-[07]--
           +-15.5-[08]--
           +-15.6-[09]--
           +-15.7-[0a]--
           +-16.0-[0b]--
           +-16.1-[0c]--
           +-16.2-[0d]--
           +-16.3-[0e]--
           +-16.4-[0f]--
           +-16.5-[10]--
           +-16.6-[11]--
           +-16.7-[12]--
           +-17.0-[13]--
           +-17.1-[14]--
           +-17.2-[15]--
           +-17.3-[16]--
           +-17.4-[17]--
           +-17.5-[18]--
           +-17.6-[19]--
           +-17.7-[1a]--
           +-18.0-[1b]--
           +-18.1-[1c]--
           +-18.2-[1d]--
           +-18.3-[1e]--
           +-18.4-[1f]--
           +-18.5-[20]--
           +-18.6-[21]--
           \-18.7-[22]--


  15. lsusb -tv
        Digunakan apabila agan mau tau informasi mengenai USB devices.
        Contoh
        [root@web1 ~]# lsusb -tv
            Bus#  2
            `-Dev#   1 Vendor 0x1d6b Product 0x0001
             |-Dev#   2 Vendor 0x0e0f Product 0x0003
             `-Dev#   3 Vendor 0x0e0f Product 0x0002
             `-Dev#   4 Vendor 0x0e0f Product 0x0008
               Bus#  1
              `-Dev#   1 Vendor 0x1d6b Product 0x0002

Friday, April 10, 2015

Implementasi SPF, DKIM, DMARC dan Reverse DNS Sebagai Standard Protection dan Meningkatkan Email Integrity

Ketika kita membangun sebuah email server sering kita lupa bahwa ada konfigurasi tambahan yang harus kita lakukan. Konfigurasi ini termasuk kategori penting loh sebab ini terkait integritas email system yang telah kita bangun, pertanyaannya itu seberapa penting sih? 

Banyak Email System saat ini terutama seperti Gmail, Yahoo, AOL, sampe Email System Perbankan (Bank-Bank) biasanya sangat memperhatikan paramater-parameter seperti SPF, DKIM, DMARC, dan Resolve DNS yang digunakan oleh si pengirim email. Kenapa sih kok ribet amat yah? Itu karna mereka mengeluarkan banyak tenaga untuk bertarung melawan spam dan email spoofing. Inilah kenapa sebabnya biasanya paket email yang tidak terdapat SPF, DKIM, DMARC bahkan yang Resolve DNS nya kurang baik konfigurasinya sering dianggap spam dan lebih parahnya lagi bahkan di DROP oleh email system penerima.

By the way untuk tulisan ini best practicenya menggunakan platform zimbra. Namun, kudu diinget meskipun saya sebelumnya pernah berguru sama salah satu jagoan email server dgn platform zimbra di Indonesia, bukan berarti bahwa standard yang saya tulis ini hanya untuk platform zimbra saja, namun sebenernya juga untuk semua platform. Artinya ketika selesai mendeploy sebuah email system jangan cuma intinya bisa kirim dan terima email saja, sebaiknya jangan lupa juga tambahkan konfigurasi lainnya untuk meningkatkan proteksi dan juga email integrity, antara lain yaitu sebagai berikut ini :
  • Sender Policy Framework (SPF).
  • Domain Keys Identified Mail (DKIM).
  • Domain-Based Message Authentication, Reporting & Conformance (DMARC).
  • Reverse DNS.

Berikut beberapa penjelasan singkat termasuk best practice untuk membangun standard proteksi dan memperbaiki reputasi serta email integrity di email system yang kita bangun. Nah best practicenya baru mengacu pada platform zimbra nih hehe...

Sender Policy Framework (SPF)
Sender policy framework adalah sebuah email validation system yang sebenernya di desain untuk mencegah spoofing. Cara kerja SPF cukup sederhana yaitu SPF akan melakukan verifikasi Source IP dari email yang dikirim lalu mencocokannya dengan DNS TXT record menggunakan SPF content.
Dibawah ini kira-kira merupakan flow gimana kira-kira SPF bekerja.


Penjelasan :
Nah kalo dari flow diatas terlihat bahwa email system yang menerima email akan mengecek Sender-ID Framework dari tiap-tiap email yang mereka terima dengan cara menanyakan SPF record si pengirim email ke DNS.  Nah hasilnya hanya ada dua yaitu Pass atau Fail, apabila pass maka email biasanya akan di redirect ke folder inbox penerima dan apabila fail maka email akan diredirect ke folder Junk/Quarantine bahkan yang lebih parahnya lagi bisa saja di drop.
Sebenernya ada juga status selain Pass dan Fail yaitu neutral. Kalo statusnya neutral ada beberapa kemungkinan bisa saja masih menunggu propagasi DNS atau memang sudah di konfigurasi namun namun memang si admin menginginkan implementasi SPF tanpa policy.
Apa dampaknya kalo kita enggak buat SPF di email system kita? Biasanya kalo si penerima memang agak strict ya email kita di anggap spam bahkan bisa aja di drop karna dianggap tidak trusted.

Konfigurasi SPF?
Setelah saya ceritain dulu konsep SPF biar paham jadi gak cuma bisa konfig doang hehe, maka selanjutnya kita masuk ke proses konfigurasi SPF. Konfigurasinya standardnya sih sebenernya mudah kok, mungkin untuk beberapa kasus yang custom baru sedikit lebih rumit cuma saya coba share yang standard yah..

Format
"v=spf1 a mx include:servermta.domain.com ~all"

Contoh
"v=spf1 a mx include:mail.example.com ~all"

Kalo agan pake WHM contohnya seperti dibawah ini.


Notes :
  • Saya merahin karna pake domain orang, yang saya merahin seharusnya adalah nama domain agan. Nah yang saya kasih tanda panah isi dengan server mta yang sudah di isi dengan A Record di DNS agan.
  • Sebagai catatan tambahan aja kalo masih gak ngerti ~all, -all, ?all, +all bisa liat tabel dibawah ini.

Nah kalo sudah selesai agan tinggal nunggu propagasi DNS paling lama 1-2 hari. 

Pengecekan SPF
Kalo propagasi DNS sudah selesai agan bisa test SPF internet seperti mxtoolbox.com disini. Setelah itu cari box yang SPF lalu masukan domain agan. Kalo sudah selesai seharusnya hasil testing akan seperti dibawah ini.

Dan apabila agan coba ngirim email ke google dan show original code maka SPF akan terlihat pass.




Domain Keys Identified Mail (DKIM)
Domain keys adalah salah satu metode security pada email untuk mengasosiasikan domain name dengan email yang dikirim. Dengan adanya DKIM maka ini memungkinkan adanya proses signature pada masing-masing email yang dikirim oleh si pengirim dengan metode enkripsi asymetric dengan saling berbagi informasi mengenai public keys dan private keys yang digunakan.

Coba agan perhatikan gambar dibawah ini :

Penjelasan :
Nah dari gambar diatas terlihat bahwa MTA si pengirim mempublish public keys di DNS public lalu ketika proses pengiriman email terjadi, maka si penerima akan menggunakan public keys yang ada di DNS untuk mencocokan apakah match atau tidak, apabila match maka akan tertera bahwa email yang dikirim signed-by domain si pengirim.

Konfigurasi DKIM?
Konfigurasi DKIM lebih sedikit rumit daripada SPF namun enggak susah kok. Langkah-langkahnya itu adalah sebagai berikut ini, saya contohkan generate dengan zimbra yah.
  • Masuk ke server lalu masuk lagi ke user zimbra setelah itu cek dengan command ini "/opt/zimbra/libexec/zmdkimkeyutil -q -d contoh.com"
  • Kalau belum ada saatnya buat dengan format seperti dibawah ini :
    /opt/zimbra/libexec/zmdkimkeyutil -a -d example.com -s namadkim
  • Setelah selesai di generate maka akan muncul public key yang bisa di publish di DNS, agan bisa copas public key tersebut lalu buat lagi TXT record di DNS agan. Sebagai contoh hasil generate public key seperti dibawah ini :

    "v=DKIM1; k=rsa; "  "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2c4zVBYQtUsoeEGiqYKEZ7JLU3cbuQCOYvr+IDQJPOQjVlsSTapsu+4yUZ6OJ41RmzYQooneL+We1MMYDmGMAQmHNQAAfhoudLN/+aSC7ggo+rTAd4ipwMujgySB8SsKzKBeAFLth/WteAOrVMIfMrmNgKj0pLUfQp1sVpa1WGQIDAQAB"

    Hapus tanda-tanda petik diatas lalu coba copas ke website tools checker dkim di disini.
    Kalo hasilnya sudah seperti pada screenshot dibawah ini maka berarti DKIM untuk domain agan sudah berjalan.

  • Setelah selesai di cek copas key record yang sudah valid tsb ke WHM atau manajemen tools yang agan gunakan, buat TXT record yah. Sebagai contoh seperti dibawah ini :

Pengecekan DKIM
Untuk mengecek DKIM agan sudah berjalan atau belum agan bisa cek di link yang sama di dkimcore disini. Lalu masukan nama dkim yang agan generete tadi lalu domain seperti dikotak merah ini.


Kalo hasilnya sudah valid seperti gambar dibawah berarti DKIM anda sudah terecord di DNS.



Tinggal lanjutkan coba kirim email dari email agan ke google lalu cek parameter ini dan show original code, apabila sudah sesuai seperti dibawah ini harusnya DKIM sudah berjalan.

Show Original Code

Show Arrow Details


Keliatan kalo di original code bahwa dkim agan statusnya PASS dan di arrow details bisa dilihat signed-by nah yg garis merah seharusnya nama domain agan.
Kalo seperti ini lebih reliable dan trusted kan? hehe


Domain-Based Message Authentication, Reporting & Conformance (DMARC)
Selanjutnya kita membahas DMARC, sebenernya cara kerjanya hampir sama seperti dengan SPF namun metodenya dan fungsinya sedikit berbeda. Meskipun begitu nampaknya saat ini DMARC merupakan salah satu komponen penting juga yang kudu dikonfigurasi pada email system kita yang sudah established untuk meningkatkan email integrity.
DMARC sendiri adalah sebuah spesifikasi teknis yang dibuat oleh sekelompok organisasi yang ingin membantu mengurangi potensi penyalahgunaan email dengan metode email authentication protocol. Coba perhatikan cara kerjanya pada gambar dibawah ini.


Penjelasan :
DMARC melakukan standarisasi dengan mendeteksi bagaimana penerima email menjalankan autentikasi menggunakan mekanisme well-known SPF & DKIM yang telah ada di record DNS. Hal ini biasanya akan berdampak pada user experience pengirim email tersebut karna email yg dikirim akan menerima "Consistent Authentication Results" dari setiap penerima email mereka yg juga menjalankan mekanisme DMARC, yang jelas dengan menggunakan mekanisme ini komunikasi email yang terjadi antara pengirim dan penerima akan menjadi lebih reliable.

Konfigurasi DMARC?
Untuk melakukan konfigurasi DMARC sebaiknya lakukan dulu konfigurasi SPF dan DKIM di email system agan. Setelah itu agan bisa generate record untuk DMARC disini.

Nah coba isi parameter seperti contoh dibawah ini, lalu kalo sudah selesai tekan tombol "Get DMARC Record". Nama domain example.com ganti dengan nama domain masing-masing yah.


Dari policy diatas itu saya tentukan apabila status email paket fail maka akan di redirect ke quaratine. Sebenernya agan bisa juga pilih policy yang reject kalo mau lebih strict sih, cuma kekurangannya kita jadi gak bisa analisa aja itu email spam ato bukan karna langsung di drop emailnya. #CMIIW

Setelah dapet DMARC Record seperti gambar dibawah ini agan bisa masukan record yang ada di kotak merah dari gambar dibawah ini ke DNS agan, seperti biasa buat TXT record.


Copas record yang sudah di generate dari link diatas yg ada di kotak merah tsb lalu buat TXT Record di WHM ato cPanel ato DNS managemen agan lah pokoke seperti contoh gambar dibawah ini.


Kalo sudah selesai ketik OK/Apply Modification.

Pengecekan DMARC
Kamu bisa cek dari mxtoolbox.com disini lalu cari kotak box DMARC dan masukan domain agan, atau bisa juga di dmarcian.com disini dengan cara yang sama tinggal masukan domain agan. Sebagai contoh saya masukan domain google.com di mxtoolbox kalo domain agan yang dimasukan hasilnya sudah sesuai sama seperti gambar dibawah ini maka seharusnya mekanisme DMARC sudah berjalan di email system agan.


Agan bisa cek juga dengan kirim email ke gmail misalnya lalu di "Show Original Code" cari parameter DMARC, apabila sudah PASS seperti gambar dibawah ini artinya sudah berjalan nih mekanisme DMARC di email system agan.



Reverse & Resolve DNS
Sepertinya banyak engineer dan sysadmin yang kurang aware juga untuk hal yang satu ini, di beberapa email system yang sudah strict banged ada loh biasanya yang mereject pengirim email yang tidak memiliki Reverse DNS yang konsisten.
Gambaran proses untuk Resolve DNS bisa dilihat dari gambar dibawah ini.


Setelah liat gambar diatas harusnya dapet yah gambarannya? Kalo Resolution DNS itu menentukan IP Address yang diasosiasikan ke domain name, sedangkan kalo Reverse DNS itu sebaliknya Domain yang diasosiasikan ke IP Address.

Konfigurasi Reverse DNS?
Cara satu-satunya itu cuma bisa minta tolong ISP di tempat dimana agan berlangganan. Bilang aja ke mereka kalo kita punya IP Public pengen bikin PTR Record yang dipointing ke domain A dengan IP Public yang digunakan B, sesimple itu kok hehe.
Setelah itu jangan lupa edit SMTP Helo agan, kalo di zimbra bisa menggunakan command dibawah ini.

Perhatikan bahwa mail.example.com ganti dengan nama mx record yg digunakan di DNS agan yah.

Version 8.0.X
zmlocalconfig -e postfix_smtpd_banner="mail.example.com"
zmcontrol restart

Version 8.5 keatas
zmprov ms  `zmhostname` zimbraMtaSmtpdBanner mail.example.com
zmcontrol restart

Pengecekan Reverse DNS
Caranya gampang gan, tinggal pake mxtoolbox.com aja menggunakan link disini. Lalu agan tinggal masukan IP Address yang agan gunakan sebagai mail server agan yg juga digunakan sebagai MX Record. Kalo sudah sesuai artinya sudah tidak ada issue lagi dan dengan cara ini pastinya email integrity dari email system kita akan naik di pihak penerima email.


Done! 
Lumayan panjang yah? Namanya juga catetan pribadi, semoga bermanfaat terutama buat diri saya pribadi hehehe.....