Tuesday, October 28, 2014

Contoh simpel Instalasi OS Linux Centos/RHEL menggunakan kickstart melalui HTTP

Sekalian review ilmu2 lama.

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 contoh simpel yang digunakan.

- 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





















Setting partisi /boot 100 MB dengan filesystem type EXT4




















- Jangan lupa, linux jg kudu ada partisi buat 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.

Wednesday, October 15, 2014

Update BASH Package di CENTOS/RHEL 6.4

Artikel ini saya buat mengingat beberapa waktu lalu ada isu terkait kehebohan BUGS Shell Shock yang katanya rentan terhadap serangan hacker yang ngebuat banyak industri terutama perbankan jadi paranoid gitu deh.

Untuk link beritanya bisa cekidot ini http://inet.detik.com/read/2014/09/27/095649/2702923/323/bug-shellshock-bisa-ancam-perbankan

Untuk panduan solusi lebih lengkap bisa baca artikel resmi redhat di https://access.redhat.com/solutions/1207723

Nah dibawah ini saya akan share sedikit untuk update di RHEL/Centos versi 6.4. Bedasarkan artikel redhat diatas, RHEL/Centos versi 6.4 harus diupdate dengan bash versi bash-4.1.2-15.el6_5.1

[NOTES]:
- Operating System yang digunakan adalah RHEL/Centos 64 bit.
- Pastikan anda terkoneksi internet untuk mendownload paket bashnya, apabila tidak terkoneksi internet, download manual rpm bash-4.1.2-15.el6_5.1 lalu upload ke server yang ingin di update.

1)  Testing apakah paket bash yang sudah terinstall di server rentan atau tidak menggunakan command dibawah ini.

[root@ip-local-private ~]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
=====================================
Apabila outputnya seperti dibawah ini :
vulnerable
this is a test
Maka server anda rentan dan harus diupdate paket bashnya.

=====================================
Apabila outputnya seperti dibawah ini :
this is a test
ataupun seperti dibawah ini :
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'

this is a test

Maka server anda tidak harus di update paket bashnya.

2) Download Paket Bash Lalu Update

Silahkan gunakan command dibawah ini untuk download dari mirroring centos.
[root@ip-local-private ~]# wget http://mirror.centos.org/centos/6/updates/x86_64/Packages/bash-4.1.2-15.el6_5.1.x86_64.rpm

Update paket bashnya dengan menggunakan command.
[root@ip-local-private ~]# rpm -Uvh bash-4.1.2-15.el6_5.1.x86_64.rpm

 3) Verifikasi 

Setelah upgrade, gunakan command yang sama untuk memastikan bahwa bash sudah tidak rentan lagi.

[root@ip-local-private ~]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test" 
bash: warning: x: ignoring function definition attempt 
bash: error importing function definition for `x' 
this is a test

ataupun seperti dibawah ini 
[root@ip-local-private ~]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test" 
this is a test

==================================
Gimana gampang kan?
Semoga berguna hehe ^^

Tuesday, October 14, 2014

Membuat Lokal Repository HTTP di Centos 6.4/RHEL 6.4

Kalo sering pake linux pasti udah pada sering dong pake command yum?
Gak perlu dijelasin dong yah apa itu yum, yang jelas command ini berguna banged buat instalasi paket2 di linux dengan segala dependensi rpm nya yang ngejelimet.

Alasan nulis tutorial ini :
- Catetan Pribadi
- Sharing Knowledge

Keuntungan membuat repository lokal :
- Lebih cepat karna paket2 ada di lokal server/network anda sendiri
- Bisa digunakan apabila server anda tidak terkoneksi ke internet.

Langsung aja begini cara membuat lokal repository yum menggunakan protokol HTTP.

[PREREQUIREMENT/NOTES]
- Dalam tutorial ini status iptables saya adalah mati, untuk matiinnya gunakan command /etc/init.d/iptables stop
- Status selinux saya juga disabled, untuk mengeceknya gunakan command getenforce. Untuk disabled gunakan command setenforce 0. Untuk disabled persistent edit file /etc/selinux/config
- IP Address yang digunakan 192.168.99.103

1) Download ISO Centos 6.4 
Anda bisa langsung aja cekidot URL http://kambing.ui.ac.id/iso/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso

[NOTES] :
Apabila server anda terkoneksi dengan internet bisa langsung menggunakan command dibawah ini.
wget http://kambing.ui.ac.id/iso/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso 


2) Upload ISO ke server yang ingin dijadikan Repository Lokal anda. Pada contoh ini saya upload ke direktory /home/student/iso

[root@ip-local-private iso]# ll /home/student/iso/
total 11737924
-rw-rw-r--  1 student student 6942410752 Oct 14 21:57 CentOS-6.4-x86_64-bin-DVD1.iso
drwxrwxr-x 14 student student       4096 Oct 13 20:28 vcenter
-rw-rw-r--  1 student student 2997100544 Oct 13 20:24 win2008-r2-x64.iso
-rw-rw-r--  1 student student 4283871232 Oct 14 21:05 WindowsServer2012R2.ISO

3) Buat direktori untuk mount ISO yang telah di download.
[root@ip-local-private ~]# mkdir /mnt/iso
[root@ip-local-private iso]# mount -o loop CentOS-6.4-x86_64-bin-DVD1.iso /mnt/iso/

Cek direktori /mnt/iso apakah sudah termounting terutama direktori Packages
[root@ip-local-private ~]# ll -h /mnt/iso/
total 676K
-r--r--r-- 2 root root   14 Mar  6  2013 CentOS_BuildTag
dr-xr-xr-x 3 root root 2.0K Mar  5  2013 EFI
-r--r--r-- 2 root root  212 Mar  3  2013 EULA
-r--r--r-- 2 root root  18K Mar  3  2013 GPL
dr-xr-xr-x 3 root root 2.0K Mar  5  2013 images
dr-xr-xr-x 2 root root 2.0K Mar  5  2013 isolinux
dr-xr-xr-x 2 root root 634K Mar  6  2013 Packages
-r--r--r-- 2 root root 1.4K Mar  3  2013 RELEASE-NOTES-en-US.html
dr-xr-xr-x 2 root root 4.0K Mar  6  2013 repodata
-r--r--r-- 2 root root 1.7K Mar  3  2013 RPM-GPG-KEY-CentOS-6
-r--r--r-- 2 root root 1.7K Mar  3  2013 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r-- 2 root root 1.7K Mar  3  2013 RPM-GPG-KEY-CentOS-Security-6
-r--r--r-- 2 root root 1.7K Mar  3  2013 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r-- 1 root root 3.4K Mar  6  2013 TRANS.TBL

Keliatan diatas terlihat bahwa ISO sukses dimounting dan sudah ada direktori Packages.

4) Install HTTP buat direktory repo lalu create direktori tersebut sebagai repo anda.

[root@ip-local-private ~]# yum install httpd -y

- Matikan IPTABLES <Dianjurkan apabila anda belum paham benar iptables linux>
[root@ip-local-private ~]# /etc/init.d/iptables stop

- Buat direktori repo didalam /var/www/html
[root@ip-local-private ~]# mkdir /var/www/html/repo

- Copy file dari /mnt/iso/Packages ke /var/www/html/repo
[root@ip-local-private ~]# cp /mnt/iso/Packages/* /var/www/html/repo/

- Install Packages Createrepo
[root@ip-local-private ~]# cd /var/www/html/repo/
[root@ip-local-private repo]# rpm -ivh createrepo-0.9.9-17.el6.noarch.rpm
[root@ip-local-private repo]# cd

- Build direktori /var/www/html/repo sebagai repository baru anda dengan command createrepo
[root@ip-local-private ~]# createrepo -v /var/www/html/repo/

- Buat persistent service httpd anda lalu start/restart service httpd.
[root@ip-local-private ~]# chkconfig httpd on
[root@ip-local-private ~]# /etc/init.d/httpd start

5) Pointing Repository 
Setelah semua proses diatas, selesai anda harus melakukan pointing repository anda ke server yang telah dijadikan repository lokal ini. Hal ini dilakukan agar command yum yang digunakan akan mencari paket2 yang ada dari server yang telah anda build menjadi repository lokal ini.

    a) Hapus/Backup semua file yang ada di /etc/yum.repos.d/
       - Untuk hapus gunakan command
       [root@ip-local-private ~]# rm /etc/yum.repos.d/*

       - Untuk backup gunakan command mv sebagai contoh.
       [root@ip-local-private ~]# mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak
   
     b) Buat pointing file repo
         [root@ip-local-private ~]# vim /etc/yum.repos.d/lokal.repo
       
         #Lalu tulis dengan parameter dibawah ini
   
          [lokal]
          name=lokal
          baseurl=http://192.168.99.103/repo/
          enabled=1
          gpgcheck=0

          #Save Lalu Quit

       c) Clean repo lalu listing repo
           [root@ip-local-private ~]# yum clean all
           [root@ip-local-private yum.repos.d]# yum repolist
           Loaded plugins: product-id, refresh-packagekit, security, subscription-manager, versionlock
           This system is not registered to Red Hat Subscription Management. You can use subscription-            manager to register.
           lokal                                                                                                    | 2.9 kB     00:00  
           repo id                                                       repo name                                             status
           lokal                                                         lokal                                                       3958
           repolist: 3958

Selesai.
Gimana gampang kan?

Se

Sunday, October 12, 2014

Instalasi Zabbix Monitoring Server Versi 2.4.1 di Centos 6.4

Notes ini dibuat gak cuma buat sekedar di share, tapi biar inget juga kalo next time disuruh install beginian lagi hehe.
Silahkan di cekidot yah, langkah2 instalasinya adalah sebagai berikut :

Pre-Requirement :
Sebelum melakukan instalasi source packagesnya, zabbix membutuhkan paket2 yang harus di install agar bisa berjalan.

- Install Database MySQL Server dan Zabbix database
1) yum install mysql-server -y
2) /etc/init.d/mysqld start
3) chkconfig mysqld on
4) mysql_secure_installation (Optional untuk mengamankan db anda)

Setelah selesai buat database zabbix di dalam mysql menggunakan command dibawah ini :
# mysql -uroot -p<passwordrootdbanda>
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> exit

- Buat User Zabbix dan Group Zabbix sebagai root
# groupadd zabbix
# useradd -g zabbix zabbix

- Copy bin file "zabbix_server" dan "zabbix_agentd" ke /etc/init.d/
# cd /root/zabbix-2.4.1/misc/init.d/fedora/core5
# cp zabbix* /etc/init.d/

Note : 
* Direktori fedora custom, liat distronya kalo debian gunakan binary file yang ada di direktori debian dst.

- Install Fronted Requirement
1) yum install httpd php gd php-bcmath php-ctype php-xml php-xmlreader php-xmlwriter php-session php-sockets php-mbstring php-gettext libxml2 php-gd php-mysql -y
2) yum install zlib-devel mysql-devel glibc-devel curl-devel gcc automake mysql libidn-devel openssl-devel net-snmp-devel rpm-devel OpenIPMI-devel -y

- Install Zabbix Source & Web Frontend
Instalasi zabbix ada dua cara bisa dari packages(menggunakan repo zabbix) bisa dari sourcenya.
Pada contoh ini saya akan share menggunakan source zabbix version 2.4.1 yang bisa di download di http://www.zabbix.com/download.php lalu download zabbix source versi 2.4.1




Setelah di download, upload ke server yg ingin di install zabbix. Lanjutkan langkah dibawah ini :

1) Install Tabel Zabbix ke dalam database
Extract zabbix sourcenya lalu masuk ke direktori template MySQL.
[root@zabbix ~]# tar -xvzf zabbix-2.4.1.tar.gz
[root@zabbix ~]# cd zabbix-2.4.1/database/mysql

Insert tabel template zabbix ke database zabbix yang telah dibuat.
[root@zabbix ~]# mysql -uroot -p<passworddbanda> zabbix < schema.sql 
[root@zabbix ~]# mysql -uroot -p<passworddbanda> zabbix < images.sql 
[root@zabbix ~]# mysql -uroot -p<passworddbanda> zabbix < data.sql

2) Instalasi Paket2 Zabbix
[root@zabbix ~]# cd zabbix-2.4.1
[root@zabbix zabbix-2.4.1]# ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl--with-png-dir --with-jpeg-dir --with-freetype-dir
[root@zabbix zabbix-2.4.1]# make install

3) Edit Config File
[root@zabbix ~]# vim /usr/local/etc/zabbix_server.conf
edit bagian2 dibawah ini :
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

4) Jalankan daemon dan pastikan daemon berjalan dengan command ps -ef | grep zabbix
[root@zabbix etc]# zabbix_server 
[root@zabbix etc]# zabbix_agentd

5) Install Zabbix Web Interface
[root@zabbix ~]# cd zabbix-2.4.1
[root@zabbix zabbix-2.4.1]# cp -r frontends/php/ /var/www/html/
[root@zabbix zabbix-2.4.1]# mv /var/www/html/php/ /var/www/html/zabbix

[NOTES] :
Untuk zabbix versi 2.4.1 ini anda harus melakukan tuning di php.ini agar instalasi frontend dapat dilakukan. Langkahnya adalah dibawah ini :
[root@zabbix ~]# vim /etc/php.ini
Lalu edit parameter dibawah ini :
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Jakarta

Lalu jangan lupa jalankan service httpd-nya :
[root@zabbix zabbix-2.4.1]# /etc/init.d/httpd start
Setelah itu finishing instalasi zabbix frontend dengan mengakses URL http://<server_ip>/zabbix

Installasi frontend
Step 1
Setelah mengakses URL anda akan melihat screen dari frontend installation wizard.
Step 2
Pastikan pre-requisites dibawah ini terpenuhi (Syarat dibawah inilah yg menjadi alasan kenapa kita melakukan tuning php di /etc/php.ini pada langkah sebelumnya).
Step 3
Menghubungkan zabbix ke database, masukan parameter sesuai dengan proses instalasi database pada langkah sebelumnya.
Step 4
Masukan zabbix server details (opsi dibawah adalah default dan optional)
Step 5
Review a summary of settings.
Step 6
Download configuration file dan tempatkan pada direktori /var/www/html/zabbix/conf.

Step 7
Finish.
Step 8
Zabbix frontend sudah selesai di install, default user name adalah Admin, password zabbix.

Gimana gampang kan?
Selamat mencoba yah ^^

Wednesday, October 8, 2014

HTTP Load Balancer menggunakan HAPROXY di CENTOS 6.4/RHEL 6.4

Kira2 skenarionya seperti dibawah.

Note :
- Pastikan masing2 server terhubung ke internet yah.
- Percobaan dibawah ini dengan keadaan iptables dan selinux dalam keadaan off.
- Untuk yang menggunakan redhat, repository bisa jg diarahkan menggunakan repo centos agar bisa menginstall haproxy 

Topologinya kira2 seperti di bawah ini.




Summary Topologi :
LB-Haproxy = Load Balancer (misal IP Address 192.168.99.20)
Web1 = Webserver1 (misal IP Address 192.168.99.21)
Web2 = Webserver2 (misal IP Address 192.168.99.22)

User = Terserah yang penting dalam range area network 192.168.99.0/24

1. Instalasi di LB-Haproxy ( IP Address - 192.168.99.20 ) :

- yum install haproxy
- vim /etc/haproxy/haproxy.cfg
tambahin konfigurasi ini di paling bawah.

#[HTTP Site Configuration]
listen     http_web 192.168.99.20:80
          mode http
        balance roundrobin
    option httpchk
    option forwardfor
    server web1 192.168.99.21:80 weight 1 maxconn 512 check
    server web2 192.168.99.22:80 weight 1 maxconn 512 check

- /etc/init.d/haproxy start
- chkconfig haproxy on

Note : 
- Yang listen http_web 192.168.99.20:80 itu IP server LB kamu.
- server web1 192.168.99.21:80 weight 1 maxconn 512 check dan server web1 192.168.99.22:80 weight 1 maxconn 512 check IP webserver kamu.
- Di server LB ini jangan kamu install httpd karna nanti konflik sebab dia listen port 80 juga.

2. Instalasi Web1 (IP Address - 192.168.99.21) :

- yum install httpd
- vim /var/www/html/index.html
tambahin file ini :
<!DOCTYPE html>
<html>
<body>

<h1>This is WEB1</h1>

</body>
</html>


-  /etc/init.d/httpd start
- chkconfig httpd on

3. Instalasi Web2 (
IP Address - 192.168.99.22) :
- yum install httpd
- vim /var/www/html/index.html
tambahin file ini :
<!DOCTYPE html>
<html>
<body>

<h1>This is WEB2</h1>

</body>
</html>


-  /etc/init.d/httpd start
- chkconfig httpd on



CARA NGETES :
Buka web browser, trus masukin IPAddress LB nya. Kalo dari contoh aku pake ip 192.168.99.20.
Outputnya pasti antara 2 :

This is web1 
atau 
This is web2

Tutorial HTTP Load Balancer dengan NGINX/EngineX di Centos 6.4

Udah lama gak nulis lagi, banyak kerjaan haha.
Langsung aja kali ini bakal ngeshare gimana caranya ngebuat Load Balancer HTTP menggunakan EngineX/Nginx Web Server di Centos.

Kira2 topologinya seperti ini, terdiri dari 3 server yaitu :
- Server EngineX/Nginx ( IP Address 192.168.99.23 )
- Web1 ( IP Address 192.168.99.21 )
- Web2 ( IP Address 192.168.99.22 )

Note : 
- Pastikan masing2 server terhubung ke internet yah.
- Percobaan dibawah ini dengan keadaan iptables dan selinux dalam keadaan off.

1. Install Paket Nginx di server 192.168.99.23
    
    vim /etc/yum.repos.d/nginx.repo
    tambahkan wording dibawah ini

    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=0
    enabled=1

    Lalu jalankan command yum install nginx sebagai root.

    Edit file /etc/nginx/conf.d/default.conf
    Lalu tambahkan konfigurasi seperti dibawah ini :
    
    upstream web {
        server 192.168.99.21;
        server 192.168.99.22;
    }

     server {
     listen 80; # Listen on the external interface
     server_name  192.168.99.23;
      location / {
        proxy_pass http://web;
        } 
     }

     Jalankan command /etc/init.d/nginx start dan chkconfig nginx on

2. Install Paket Apache di server 192.168.99.21 dan 192.168.99.22

Instalasi Web1 (webserver1 - 192.168.99.21) :

- yum install httpd
- vim /var/www/html/index.html

Tambahin file ini :
<!DOCTYPE html>
<html>
<body>

<h1>This is WEB1</h1>

</body>
</html>

-  /etc/init.d/httpd start
- chkconfig httpd on

Instalasi Web2 (webserver2 - 
192.168.99.22) :

- yum install httpd
- vim /var/www/html/index.html
tambahin file ini :
<!DOCTYPE html>
<html>
<body>

<h1>This is WEB2</h1>

</body>
</html>

-  /etc/init.d/httpd start
- chkconfig httpd on


3. Cara Ngetes
Buka web browser, trus masukin IPAddress LB nya. Kalo dari contoh di sini menggunakan ip 192.168.99.23.

Outputnya pasti antara 2 :
This is web1 

atau 
This is web2