PostgreSQL 8.4 Upgrade ke 9.5 (SPSE Master-Slave Streaming Replication #1)

Catatan ini akan dibuat secara bertahap dengan tujuan akhir ‘server SPSE yang bisa berjalan dengan sistem master-slave secara streaming’, sehingga bila server-master mengalami kegagalan perangkat dan tidak dapat difungsikan, dengan sedikit mengubah konfigurasi pada server-slave akan langsung menjalankan tugas menggantikan server-master.

Fitur streaming replication (dalam hal ini kita akan menggunakan hot_standby) hanya ada pada PostgreSQL 8.5 Alpha3 keatas, seperti dilansir oleh https://wiki.postgresql.org/wiki/Hot_Standby :
“Hot Standby is the name for the capability to run queries on a database that is currently performing archive recovery. Log Shipping replication allows you to create one or more standby nodes that are replicas of the primary node (or master node). Standby nodes can then be used for read-only query access.
Hot Standby was developed for inclusion in PostgreSQL 9.0 by Simon Riggs of 2ndQuadrant via public sponsorship.
The feature was committed in PostgreSQL 8.5 Alpha3 and is available in PostgreSQL 9.0 and above. See the Hot Standby docs for full details.
This feature augments streaming replication feature that was introduced in PostgreSQL 9.1, though it does not rely on it and has minimal interaction with it.”

Server SPSE menggunakan Centos 6 dan Postgresql 8.4, maka dilakukan upgrade database ke PostgreSQL 9.5, versi terbaru (stable) saat catatan ini ditulis. Postgresql 9.5 bisa di install berdampingan dengan Postgresql 8.4 tanpa saling mengganggu, proses instalasi ini dijalankan tanpa terlebih dahulu me-remove Postgresql 8.4 yang sedang berjalan.

1. yum update
2. yum upgrade
3. netstat -tulpn | grep postmaster
(127.0.0.1:5432 – ini adalah postgresql yang sedang berjalan/digunakan)
4. rpm -ivh https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-x86_64/pgdg-centos95-9.5-2.noarch.rpm
5. yum install postgresql95 postgresql95-server postgresql95-devel postgresql95-contrib
6. service postgresql-9.5 initdb
7. lakukan proses backup database dari Postgresql 8.4 :
su – postgres
psql -l (misal databasenya = epns-prod)
pg_dump -U postgres epns-prod -f epns-prod.sql (akan terbentuk file /var/lib/pgsql/epns-prod.sql)
8. nano /var/lib/pgsql/9.5/data/pg_hba.conf
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
9. service postgresql stop
service postgresql-9.5 start
10. chkconfig postgresql off
chkconfig postgresql-9.5 on
11. su – postgres
psql
CREATE USER epns password ‘epns’;
\q
createdb -U postgres -O epns epns-prod;
psql -U postgres -d epns-prod -f epns-prod.sql
exit
12. service postgresql-9.5 restart

Sampai sini proses upgrade dan pemindahan database ke Postgresql 9.5 sudah selesai, silakan melakukan check dan re-check kembali terhadap server SPSE anda, apakah sudah bisa berjalan dengan normal? Bila tidak ada masalah , lanjutkan dengan uninstall Postgresql 8.4 :

13. yum remove postgresql postgresql-server

Siap untuk melanjutkan ke SPSE Master-Slave Streaming Replication #2?…tunggu tanggal main nya!

Pengaturan Beda Bandwith IIX dan INTL Mikrotik

Pengaturan beda bandwith untuk mikrotik, contoh nya seperti dibawah ini (sesuaikan dengan kondisi jaringan anda) :

1. Persiapan NICE.RSC

/system scheduler
add comment=update-nice interval=1w name=update-nice-rsc on-event=”:if ([:len \
[/file find name=nice.rsc]] > 0) do={ /file remove nice.rsc }; /tool fetch\
\_address=ixp.mikrotik.co.id src-path=/download/nice.rsc mode=http; /impor\
t nice.rsc” policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
jan/01/1970 start-time=06:00:00

2. Persiapan Mangle

/ip firewall mangle
add action=mark-connection chain=forward dst-address-list=nice \
new-connection-mark=conn-IIX-04 src-address=192.168.12.0/24
add action=mark-connection chain=forward dst-address-list=!nice \
new-connection-mark=conn-INT-04 src-address=192.168.12.0/24
add action=mark-packet chain=forward connection-mark=conn-IIX-04 \
new-packet-mark=IIX-04
add action=mark-packet chain=forward connection-mark=conn-INT-04 \
new-packet-mark=INT-04

3. Persiapan Queue

/queue tree
add burst-limit=21M burst-threshold=1M burst-time=1m30s comment=”Main BW” \
max-limit=14M name=Total-Download parent=bridge1_dmz queue=default
add burst-limit=21M burst-threshold=1M burst-time=1m30s max-limit=14M name=\
Download-IIX parent=Total-Download queue=default
add burst-limit=21M burst-threshold=1M burst-time=1m30s max-limit=14M name=\
Download-INT parent=Total-Download queue=default

add name=lokal-041 \
packet-mark=IIX-04 parent=Download-IIX queue=default
add burst-limit=4M burst-threshold=512k burst-time=20s \
max-limit=2M name=lokal-042 \
packet-mark=INT-04 parent=Download-INT queue=default

Cara Reset Konfigurasi Cluster Proxmox

Create cluster pada proxmox bila dilakukan dengan perintah ‘cman’ selalu mensyaratkan nodes harus dalam kondisi kosong (tidak ada guest didalamnya), pada langkah-langkah berikut ini proses pemisahan (reset konfigurasi cluster) dan create ulang cluster pada proxmox dapat dilakukan tanpa mengosongkan dan mengganggu-gugat guest pada master maupun nodes :

Proses reset & create ulang cluster :
1. cp -a /etc/pve /root/pve_backup
2. /etc/init.d/pve-cluster stop
3. umount /etc/pve
4. /etc/init.d/cman stop
5. rm /etc/cluster/cluster.conf
rm -rf /var/lib/pve-cluster/*
6. /etc/init.d/pve-cluster start
7. pvecm create newcluster

Proses restore/pengembalian host/guest pada masing-masing master/nodes cluster :
8. cp /root/pve_backup/*.cfg /etc/pve/
cp /root/pve_backup/qemu-server/*.conf /etc/pve/qemu-server/
cp /root/pve_backup/openvz/* /etc/pve/openvz/

catatan tambahan :

9. untuk proxmox v5.2 diperlukan juga :

cp /root/pve_backup/lxc/* /etc/pve/lxc/

Bila masih ada nodes yang sudah dihapus pada proxmox nodes tree, dapat dihapus dengan perintah :
10. rm -rf /etc/pve/nodes/HOSTNAME

Langkah diatas sudah diujicobakan dan sukses pada proxmox v3.2/v3.4, selamat mencoba & yakinkan anda tahu apa yang sedang dilakukan D.W.Y.O.R !

(sumber : https://elkano.org/blog/how-to-reset-cluster-configuration-in-proxmox-2/)

Memperbaiki GRUB Problem Upgrade Proxmox 3.2 ke 3.4

Melakukan upgrading system adalah hal biasa bagi sysadmin, tapi hari ini luar biasa ketika melakukan upgrade salah satu server proxmox dari versi 3.2 ke 3.4, karena setelah langkah ‘apt-get update && apt-get dist-upgrade’ lancar, langkah selanjut adalah ‘reboot’ dan tadaaaa!…muncul pesan :

Welcome to GRUB!
error: unknown filesystem
grub rescue>

alamak!..ternyata GRUB nya gagal mencari posisi boot partition, google kesana-sini…lalu mencoba beberapa petunjuk, akhirnya bisa disusun langkah fix nya sebagai berikut :

1. persiapkan live-usb (saya menggunakan ubuntu 14.04 desktop x64 yang diburn menggunakan rufus ke dalam flashdisk sony 8gb, architecture pakai x64 biar sama dengan proxmox x64)
2. boot server ke usb tsb, jalankan live ubuntu tanpa melakukan instalasi, buka terminal
3. langkah berikut (disadur dari http://blog.michaelboman.org/2013/08/proxmox-ve-upgrade-fails-solution.html) :

$ sudo -s
# mkdir /mnt/pve
# mount /dev/pve/root /mnt/pve
then we mount the supporting devices so we get a complete system
# mount /dev/pve/data /mnt/pve/var/lib/vz
# mount /dev/sda1 /mnt/pve/boot
# mount –bind /dev /mnt/pve/dev
# mount –bind /proc /mnt/pve/proc
# mount –bind /sys /mnt/pve/sys
Then we go into the environment using chroot (change root)
# chroot /mnt/pve
# source /etc/profile
Ok, time to fix things. First I updated /etc/default/grub set

GRUB_DISABLE_LINUX_UUID=true

then I made a backup and re-generated the grub configuration file
# cp /boot/grub/grub.cfg /root/grub.cfg.bak
# grub-mkconfig -o /boot/grub/grub.cfg
and finally I installed the grub boot loader:
# grub-install ‘(hd0)’
Exit out of the chroot’ed environment (^D or # exit ) and reboot the system.

catatan : sesuaikan posisi hdd, contoh ini menggunakan /dev/sda1 dan hd0.

Demikian pelajaran setelah 12 jam dikerjai proxmox upgrade, D.W.Y.O.R !

Memperbaiki Error Slideshow dan Banner pada SPSE4

Request rekan Fredy LPSE HSS agar dibuatkan tuts untuk mengatasi error seperti ini ketika ingin menampilkan banner dan slideshow :

Ah6KrfsRTPfdWOZYQEu0-0nwiooXIER9rJ7lw1AnUEex

Step perbaikan error sebagai berikut (langkah-langkah dibawah ini dikerjakan pada terminal/console) :

1. su – postgres
2. psql -l (pada contoh ini database yang digunakan adalah : epns_latihan)
3. psql
4. kopi-paste perintah berikut :

\connect epns_latihan;
CREATE SEQUENCE seq_konten_multimedia
START WITH 100
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE public.seq_konten_multimedia OWNER TO epns;

5. \q
6. exit
7. service postgresql restart

Silakan mencoba kembali upload file banner dan slideshow pada SPSE4 anda… D.W.Y.O.R !

Koneksi SSH Dengan Port Knocking

Melanjutkan tulisan sebelumnya tentang Mengatur Firewall Centos 6, menarik untuk lebih meningkatkan lagi keamanan service yang dibuka pada server.

Port Knocking adalah teknik yang digunakan untuk mengamankan koneksi atau akses port dari pengguna yang tidak diinginkan. Dengan menggunakan teknik ini kita memelihara satu atau beberapa port yang dikonfigurasi sebelumnya ditutup dan ini hanya akan dibuka menggunakan urutan pengetukan (knocking) terhadap port-port komunikasi yang sudah ditetapkan, sebagai contoh : port 22 (default ssh) hanya akan dibuka jika sudah dilakukan ‘knocking’ pada port 1000, 2000 dan 3000 secara berurutan. Perintah knocking dari sisi client dapat menggunakan Nmap, Telnet atau aplikasi yang memang diperuntukan sebagai knocking client.

Let’s start!

Saya menggunakan Linux Centos 6.5 x64 (untuk distro lainnya silakan command disesuaikan)

1. yum install libpcap*
2. cd /usr/local/src
3. wget -c http://pkgs.repoforge.org/knock/knock-0.5-3.el6.rf.x86_64.rpm
4. rpm -ivh knock-0.5-3.el6.rf.x86_64.rpm
5. konfigurasi :

baris ini, pada tulisan saya sebelumnya silakan di ‘#’, karena nantinya akan dihandle oleh knockd :

## iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT

nano /etc/knockd.conf :

[options]
logfile = /var/log/knockd.log

[openSSH]
sequence = 1000,2000,3000
seq_timeout = 30
tcpflags = syn
Start_command = /sbin/iptables -I INPUT -s %IP% -p tcp –dport 22 -j ACCEPT

[closeSSH]
sequence = 1001,2002,3003
seq_timeout = 30
command = /sbin/iptables -D INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn

ctrl + x + s

6. service knockd start
7. chkconfig knockd on
8. reboot server

Cara knocking di client sebagai berikut :

9. Client Linux
open connection :
# nmap -p 1000 SERVER-IP
# nmap -p 2000 SERVER-IP
# nmap –p 3000 SERVER-IP

close connection :
# nmap -p 1001 SERVER-IP
# nmap -p 2002 SERVER-IP
# nmap –p 3003 SERVER-IP

10. Client Windows dapat mengunduh dari Knocking Client Windows

11. hasil log knockd
# tail /var/log/knockd.log

[2016-02-10 05:20] 10.0.0.99: openSSH: Stage 1
[2016-02-10 05:21] 10.0.0.99: openSSH: Stage 2
[2016-02-10 05:21] 10.0.0.99: openSSH: Stage 3
[2016-02-10 05:21] 10.0.0.99: openSSH: OPEN SESAME
[2016-02-10 05:21] openSSH:

Selamat Mencoba! D.W.Y.O.R

ref :
1. http://tecadmin.net/secure-ssh-connections-with-port-knocking-linux/#
2. http://gregsowell.com/?p=2020
3. https://en.wikipedia.org/wiki/Port_knocking

Solusi SPSE4 Logout ‘Forbidden’

SPSE4-latihan tidak mau logout dan menampilkan tulisan ‘Forbidden’, ketika di tail -f /var/log/error_log hasilnya sebagai berikut :

[Fri Feb 26 12:02:28 2016] [error] [client 10.0.0.99] ModSecurity: Warning. Match of “rx ^[\\\\x20-\\\\x7f]+$” against “REQUEST_BODY” required. [file “/etc/httpd/conf/httpd.conf”] [line “1125”] [id “1234582”] [hostname “192.168.100.195”] [uri “/eproc4lat/user/logout”] [unique_id “VtCFJH8AAAEAACPYALsAAAAB”]

berikan saja tanda ‘#’ dibaris ‘1125’ pada file ‘/etc/httpd/conf/httpd.conf’ dan restart layanan httpd dengan ‘service httd restart’.

## SecRule REQUEST_BODY “!^[\x20-\x7f]+$””id:1234582”

D.W.Y.O.R (**Selalu backup file conf asal sebelum dilakukan perubahan, agar tidak ‘nyanyuk’)

*UPDATE 2016-10-25 :

setelah mendapat pencerahan dari om guntur, ada solusi lain tanpa ‘##’ untuk ‘logout forbidden’, dengan menambahkan baris sbb untuk mendisable id 1234582 pada saat mengakses /eproc4 :

<IfModule mod_security2.c>
<Location /eproc4>
SecRuleEngine Off
SecRuleRemoveById 1234582
</Location>
</IfModule>

sehingga baris :

SecRule REQUEST_BODY “!^[\x20-\x7f]+$””id:1234582”

tetap aktif/enable ketika mengakses spse v3.6

solusi ini sebenarnya juga berlaku untuk semua “SecRule..Id” dengan menambahkan “SecRuleRemoveById #nomorid” yang menyebabkan masalah (DENIED) pada /eproc4.

Solusi APENDO4 ‘Gagal Kirim’

Rekan Trainer kesulitan melanjutkan proses simulasi lelang pada SPSE4-latihan dikarenakan setiap dokumen penawaran dikirim menggunakan Apendo (v4.1.1) muncul pesan : “gagal dikirim”.

Dilakukan penelusuran dan torch terhadap aktifitas Apendo4, tidak ada yang janggal dan port yang digunakan pun masih sesuai dengan yang dipakai oleh server SPSE4-latihan.

Troubleshooting dilanjutkan dengan mengakses langsung port_java yang menjalankan SPSE4-latihan, ternyata Apendo4 berhasil mengirim dokumen penawaran dengan mulus bila SPS4-latihan diakses dengan cara sebagai berikut :

http://ip_SPSE4-latihan:port_java/eproc4lat atau http://domain_SPSE4-latihan:port_java/eproc4lat

(* ini dijadikan solusi sementara untuk bisa melanjutkan simulasi SPSE4-latihan)

Dari sini diketahui bahwa masalah terjadi ketika httpd mentranslatekan port 80 (web) menjadi port 9090 (spse4_java), yang dihandle oleh ProxyPass dan ProxyPassReverse, hasil dari tail -f /var/log/httpd/error_log :

[Fri Feb 26 11:56:01 2016] [error] [client 10.0.0.99] ModSecurity: Access denied with code 400 (phase 2). Match of “eq 0” against “REQBODY_ERROR” required. [file “/etc/httpd/conf.d/modsecurity.conf”] [line “60”] [id “200002”] [msg “Failed to parse request body.”] [data “Multipart: Multiple boundary parameters in C-T.”] [severity “CRITICAL”] [hostname “192.168.100.195”] [uri “/eproc4lat/lt17/upload”] [unique_id “VtCDoX8AAAEAAAWzANgAAAAA”]

[Fri Feb 26 11:58:12 2016] [error] [client 10.0.0.99] ModSecurity: Access denied with code 400 (phase 2). Match of “eq 0” against “MULTIPART_STRICT_ERROR” required. [file “/etc/httpd/conf.d/modsecurity.conf”] [line “81”] [id “200003”] [msg “Multipart request body failed strict validation: PE 1, BQ 0, BW 0, DB 0, DA 0, HF 0, LF 0, SM 0, IQ 0, IP 0, IH 0, FL 0”] [hostname “192.168.100.195”] [uri “/eproc4lat/lt17/upload”] [unique_id “VtCEJH8AAAEAACOoANQAAAAC”]

“ModSecurity : Access denied with code 400” ternyata Apendo4 tidak bisa konek ke port aplikasi SPSE4-latihan karena Mod_Security memblokir koneksi dan menganggap koneksi tersebut berbahaya dengan warning ‘[severity “CRITICAL”]’.

Karena ini adalah server latihan dan faktor security masih bisa dikompromikan, langsung menuju baris 60 dan 81 di /etc/httpd/conf.d/modsecurity.conf dan berikan tanda # untuk disable.

Restart layanan httpd : service httpd restart

Selamat Mencoba, D.W.Y.O.R

(**Biasakan mencantumkan kode sumbernya ketika anda mengkopi-paste tulisan dari blog ini**)