membuat BOT telegram yang selalu update status hasil backup pada server

yak, backup adalah komponen yang sangat penting dalam sebuah sistem, pertahanan terakhir ketika semuanya sudah “hangus” .

backup digunakan untuk melakukan recovery, agar sistem kembali pulih. karenanya, backup menjadi hal wajib bahkan tertuang dalam ISO keamanan sistem informasi.

beberapa kendala dalam melakukan proses backup diataranya :

  1. SDM, ya, sistem informasi itu ragamnya beda-beda, ada yang bisa dilakukan backup dengan mudah, ada juga yang sangat sulit , umumnya, semua dapat dilakukan jika SDM tersebut dapat mempelajari alur dari sistem itu sendiri. tapi terkadang, malas jadi hambatan utama SDMnya, wkwkwkwk
  2. resource, backup itu memerlukan resource 2 kali lipat daripada server production, karena dia harus menyimpan setidaknya file 2 hari sebelumnya. maka dibutuhkan resource yang lebih besar daripada server production
  3. monitoring, jadi salah satu kelemahan dari proses backup adalah monitoring. ini terdampak pada sebuah organisasi yang memiliki banyak sistem informasi. hmmmm, kalau cuma satu sih, relatif aman. karena proses backup bisa dilakukan manual. atau automation dengan monitor ketat. namun jika banyak ? huft. itu sulit sekali termonitor. padahal, backup itu tidak hanya cukup backup, namun harus ada pengujian restore untuk memastikan semua sistem dapat dipulihkan. bisa dibayangkan jika yang harus di uji restore itu sistemnya adalah puluhan bahkan ratusan ?

oke, pada tulisan kali ini, saya mau berbagi pengalaman saya di sebuah instansi dalam hal membuat ROBOT, atau kami sering bilang BOT, yaitu sistem yang secara mandiri melakukan pengecekan dan melaporkan ke kita melalui notifikasi. tentunya, telegram menjadi chanel andalan kita.

  1. sebelumnya, sistem backup sudah dibuat, biasanya, saya menggunakan Rsync. toturial backup menggunakan rsync sudah banyak diinternet, saya juga pernah menuliskan dalam tulisan ini https://mandrivaputri.info/2020/08/membangun-data-ware-house-yang-aman/ .
  2. membuat BOT pada telegram dengan menghubungi BotFather : Buka telegram kamu > cari akun BotFather > beri salam 😀 > /newbot

3. mendapatkan ChatID telegram. pada tahapan ini, kitatentukan, apakah kita akan berkomunikasi langsung dengan BOT, atau melalui sebuah grup chat. pada case kali ini saya ingin berkomunikasi langsung dengan BOT. maka langkahnya adalah :

  • buka link ini di browser. https://api.telegram.org/bot<YourBotToken>/getUpdates . nah, YourBotToken, kamu ganti dengan BOT token yang kamu dapatkan dari hasil chat dengan BotFather.
  • setelah terbuka, kamu chat si Bot kamu, chat asal-asal saja, trus kamu kembali lagi ke link browser, kamu refresh linknya. maka akan muncul seperti gambar dibawah ini.

nah, yang ijo itulah chatID.

4. menambahkan Script pada system backup. caranya adalah, kamu bisa masuk ke tiap node, server atau perangkat yang sudah kamu pasang system backup. kemudian menambahkan beberapa script yang bertugas untuk mengecek dan mengirimkan notifikasi ke telegram BOT yang terhubung ke kamu.

nah, seperti ini scriptnya, sengaja saya buat dalam bentuk gambar biar kamu ndak bisa copypaste script, :p

5. nah, setelah script itu jalan, maka kamu tinggal tunggu report di telegram, apakah backup berhasil atau gagal dijalankan. seperti ini notifnya

begitulah , metode sederhana dalam monitoring system backup.

pada tulisan berikutnya, saya ingin berbagi bagaimana membuat sistem autorestore dari hasil backup agar kita mengetahui bahwa file backup yang kita buat dapat digunakan untuk recovery sistem.

seru kan?, mari tutup mata dan telinga kita dari segala hal buruk di lingkungan kita, ciptakan kreasi dan sibukkan diri dengan hal positif. tetap semangat… !!!!

Bagikan saja, itu tidak berat

misi ambisius yang gagal itu diselesaikan oleh orang lain.

halo , halo. udah lama gak nulis nih, mumpung lagi rada santai, mau nulis di blog ini, biar gak sia-sia di bayar tiap tahun, wkwkwk. jadi pada tulisan kali ini, gw mau ngulas beberapa misi ambisius gw yang gagal namun berhasil, duh, gimana sih, oke kita ulas aja.

tahun 2018, gw gabung dengan salah satu Kementerian, kita sebut saja, mawar. wkwkw. gw gabung sebagai tim IT. tugas dan fungsi gw adalah menjalankan tata kelola IT, menyelesaikan masalah, dan membuat terobosan-terobosan baru dalam hal teknologi informasi.

sepanjang tahun gw jalanin tugas gw dengan enjoy. kelola baremetal, virtualizor, problem solving, sampai dengan memunculkan terobosan-terobosan dalam hal IT. salah satunya adalah PAPERLESS. ini gw lakuian, karena di instansi mawar itu emang belum PAPERLESS dan gw liat anggaran untuk ATK itu masih gede banget.

2019. gw mulai menyusun presentasi, intinya dengan PAPERLESS ada beberapa keuntungan :

  1. memangkas anggaran ATK sampai dengan 70 %
  2. persuratan, tata naskah dinas dll bisa dilakukan dimanapun dan kapanpun
  3. aman, karena esign gak bisa dipalsuin.
  4. meningkatkan kemampuan penggunaan teknologi informasi bagi pegawai.

setelah usulan ini gw bawa kemana-mana, akhirnya disetujui dan gw diminta untuk mengawalnya.

2020, COVID-19. disini dunia kacau balau, orang-orang meninggal. dan dilarang bersentuhan. ini adalah moment untuk menerapkan PAPERLESS, karena salah satunya adalah tidak perlu bertatap muka, dan bersentuhan jika hanya ingin berikirim surat maupun tanda tangan.

2020 awal, gw mulai bangun sistem, mendatangkan BSSN ke kantor mawar untuk urusan esign. dan mulai sosialisasi. sistem selesai, orang-orang bisa tanda tangan digital dan sah secara undang-undang. walaupun waktu itu gw punya beban terhadap BSSN, karena gw ditantang untuk benar-benar menggunakan sistem esign ini.

dan tara~~~, gagal, ya, U KNOW lah, rupanya merubah mindset itu lebih sulit daripada merubah sistem. banyak alasan, mulai dari tidak terbiasa, dan lain-lain, sampai saya nemu alasan sebenernya, yaitu tiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiitttttttttttttttttttttttttttttttttt…………………. u know lah ya, anggaran ATK itu gimana, wkwkwk.

hanya 1 pejabat, yaitu Kapusdatin bapak Ivanovich Agusta yang secara konsisten pakai esign dan sistem persuratan itu. entah karena emang satu frekuensi dengan gw, entah hanya karena beban moral karena do’i kapusdatin , wkwkwk. tapi keren loh, orang-orang ngumpulin laporan kinerja cukup dengan softcopy darimana aja , gk perlu print2 dan pak kapusdatinnya esign sambil rebahan dirubah. wkwkwk. coba, kalo ini dipakai seluruh kementerian mawar itu, berapa banyak bisa hemat kertas, waktu dll ? . tapi ya sudahlah…..

dan akhirnya muncul sistem persuratan terpusat yang diminta digunakan oleh semua K/L. PAPERLESS ? gak sama sekali. tapi syukurnya, MoU dengan BSSN yang dulu gw gawangin sampe sekarang masih dipakai untuk manage esign.

tahun terus berjalan, hingga akhirnya awal tahun 2025 ini, muncul kebijakan efisiensi, memangkas anggaran ATK sampai 90 %. whatt ???, gw dulu yang narget cuma 70 % aja susah banget, ini Sri Mulyani langsung bilang 90 %. kok bisa ? hahaha.. ya gw ngakak aja sih sekarang, baru pada tau kan lu pade, wkwkw

ya jelas bisa donk, karena Kementerian Keuangan selama ini sudah melakukan itu kok, dan tebakan gw ya selama ini instansi lain cuma di VOOR aja, biarkan main-main dulu sama ATK, ntr juga ada waktunya dipangkas, wkwkwkw… kementerian lain bisa nolak ? enggak deh kyknya wkwkw.

sekarang gw udah gak gabung sama mawar, gak tau deh updatenya gimana itu Kementerian.

jadi, point pentingnya kalau u hidup dinegara ini, gak cukup dengan u pinter aja, u gk akan bisa ngerubah apa-apa.

u pinter dan punya power, masih belum bisa buat ngerubah apa-apa. gw punya temen yang pinter dan punya power, akhirnya terdepak juga. hehehehe….

jadi kombinasinya yang tepat kalo u mau ngubah dunia adalah : u pinter, punya power, dan deket sama penguasa. , bu Sri Mulyani contohnya….

tamat.

Bagikan saja, itu tidak berat

Jiwa hobi itu kadang ngerusak pikiran dan kesehatan, jam 01.00 buka laptop gara-gara scroll medsos

jadi seperti orang normal biasanya, sebelum tidur, saya scroll-scroll medsos untuk sekedar melihat aktifitas rekan-rekan medsos. biar cepet ngantuk sih maksudnya…

nah, pas lagi scroll medsos, ada temen yang posting lagi disebuah acara, sepertinya di hotel, acara launching aplikasi, dan yang lauching Mentri.

acaranya di hotel , mewah, dihadiri menteri dan pejabat, serta kolega pastinya. saya yakin, ini program yang baik dan akan berhasil dikemudian hari, seperti program-program berbasis aplikasi lainnya, punya pemerintah tentunya….

karena saya insan IT, tentunya fokus saya tertuju pada platform yang digunakan, bukan pada core bisnis programnya lah ya, terlalu luas ah. fokus aplikasinya saja..

iseng saja buka di HP, kok ya bikin penasaran aplikasi, akhirnya memutuskan untuk membuka laptop, padahal udah jam 01 malam, resiko terbesar saya jika buka laptop jam segitu adalah aungan istri, karena kalau asam lambung saya kambuh, istri yang paling berjasa di hidup saya. sambil melipir intip istri yang sudah tidur, saya mengendap-endap buka laptop…

kemudian saya buka aplikasinya menggunakan laptop, hal pertama yang saya lakukan adalah intercept aplikasi tersebut. aplikasinya berbasis web,

Intercept atau pengintersepsian dalam dunia keamanan siber dan pengembangan perangkat lunak mengacu pada tindakan mencegat atau memotong komunikasi antara dua pihak, sering kali untuk memeriksa, memodifikasi, atau menyadap data yang dikirimkan. Dalam konteks web atau jaringan, intercept umumnya berarti menangkap data yang dikirim antara klien (misalnya, browser pengguna) dan server.

dari proses intercept, terdapat beberapa informasi, diantaranya :

  1. ada 2 node yang merespon, frontend dan backend ( API )
  2. server menggunakan ubuntu linux dengan web servernya nginx
  3. bahasa pemograman menggunakan next.js untuk front endnya.

nah, dari informasi awal tersebut, sudah bisa dilakukan langkah selanjutnya. ini aplikasi bersifat register, saya sudah register akun, ada beberapa file upload, dan memiliki potensi untuk dilakukan injeksi backdoor didalamnya, namun, karena bahasa pemograman menggunakan java, menurut saya agak efford untuk melakukannya.

kemudian, saya melirik ke respon disisi backend, yaitu API respon.

masih pada mode intercept, struktur folder pada API dapat dilakukan crawling, sehingga mengetahui berbagai respon dari API.

nah, yang paling mengejutkan, ada Bug IDOR pada API tersebut,

IDOR (Insecure Direct Object References) terjadi ketika aplikasi tidak mengamankan akses ke sumber daya atau data berdasarkan identitas pengguna, sehingga pengguna dapat mengakses data milik pengguna lain hanya dengan mengubah ID dalam URL atau parameter.

IDOR nya seperti apa sih, yaitu terdapat informasi sensitif dan ter-expose ke publik, tentunya ini sangat berbahaya, karena data dan informasi tersebut dapat digunakan untuk berbagai tindak kejahatan,

terdapat, nama , email, dan nomor telp

nah, pas saya mau explore untuk Bug berikutnya, tiba-tiba laptop saya low batere, saya juga jadi ke inget asam lambung saya. akhirnya saya memutuskan untuk membiarkan laptop saya sampai mati total. dan tidur……

pointnya , tujuan hacker / peretas itu ada 2,

  1. menguasai sistem, setelah dikuasai, mereka bisa menjarah data, dan memanfaatkan sistem atau infrastuktur untuk kebutuhan mereka.
  2. mendapatkan data sensitif, biasanya mereka mencari data sensitif untuk dijual, dibuat kejahatan, atau sekedar membuat ancaman.

jadi, waspadalah.

tulisan ini hanya bersifat informasi dan pembelajaran, gunakan dengan bijak.

oiya, saya juga baru lulus sertifikasi Alibaba Cloud Security . kalau kamu butuh jasa saya untuk membantu manage cloud boleh donk japri kesaya. 😀 😀

Bagikan saja, itu tidak berat

Install SSL pada zimbra server dengan private key

Persiapan

  1. SSL Certificate: siapkan ini:
    • file sertifikat (e.g., your_domain.crt)
    • Intermediate sertifikat (e.g., intermediate.crt or CA_bundle.crt)
    • Private key (e.g., your_domain.key)
  2. Akses ke Zimbra Server: butuh root atau sudoers Zimbra server.

tahapan instalasi

1. Upload SSL Files ke Zimbra Server

Upload SSL pada folder,, misalnya /tmp/ssl.

2. pindah ke Zimbra User

pindah ke Zimbra user untuk instalasi:

sudo su - zimbra

3. yang lama di backup dulu

gini caranya:

cp /opt/zimbra/ssl/zimbra/commercial/commercial.key /opt/zimbra/ssl/zimbra/commercial/commercial.key.bak
cp /opt/zimbra/ssl/zimbra/commercial/commercial.crt /opt/zimbra/ssl/zimbra/commercial/commercial.crt.bak
cp /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt.bak

4. di replace ya yang lama

Copy SSL yang baru ke folder kerja:

cp /tmp/ssl/your_domain.crt /opt/zimbra/ssl/zimbra/commercial/commercial.crt
cp /tmp/ssl/your_domain.key /opt/zimbra/ssl/zimbra/commercial/commercial.key
cp /tmp/ssl/intermediate.crt /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt

pastikan permisinya file:

chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.crt
chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key
chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt
chmod 640 /opt/zimbra/ssl/zimbra/commercial/commercial.key

5. Verifikasi Certificate dan Key

gini caranya , ini nyambung terus ya:

/opt/zimbra/bin/zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key /opt/zimbra/ssl/zimbra/commercial/commercial.crt /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt

6. Deploy SSL yang baru

Deploy dengan cara berikut, ini nyambung terus ya:

/opt/zimbra/bin/zmcertmgr deploycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.crt /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt

7. Restart Zimbra Services

Restart servicenya untuk menerapkan:

zmcontrol restart

begitulah kira-kira. ulangin tahapan ini pada semua server zimbra jika server lebih dari satu.

install SSL gak sembarangan, setelah install kamu bisa cek di https://sectigostore.com/ssl-tools/ssl-checker.php untuk memastikan semua komponen terpenuhi

Bagikan saja, itu tidak berat

website diretas dan diinject link slo*t gac*or , kita perbaiki.

sudah lama banget saya gak nulis di blog ini. entah karena sibuk, atau males. kombinasi sih kayaknya hehe.

padahal, banyak banget kerjaan yang bisa di dokumentasiin di blog ini, ya bisa untuk sekedar kenangan, atau portofolio wkwkw

kali ini, saya lagi benerin sebuah website punya client, goverment yang laporannya ada link sl*ot g*acor di dalam website itu. si client meminta saya untuk membersihkan link dan menutup atau mencari tau celah keamanannya.

perpus5

hal pertama yang saya sampaikan kepada client adalah : “apakah sistem masih berjalan normal ?” , “ya, masih normal, jawab sang client”

saya meminta ke client untuk segera melakukan takedown atau memutus trafik ke website dari luar atau dari public. hal ini untuk kepentingan mitigasi.

setelah itu, saya meminta akses server kepada client, dan meminta untuk melakukan karantina, selain saya, jangan ada yang mengakses server tersebut.

kemudian, saya melihat websitenya. dari tampilan websitenya, ini adalah website perpustakaan yang source codenya berasal dari sebuah lembaga yang mengampu terkait perpustaaan, ya, benar, itu PERPUSNAS. dengan engine websitenya yang diberi nama INLISLite . 

INLISLite dibangun menggunakan bahasa pemograman PHP dan database MySql dengan memanfaatkan framework YII.

kemudian saya mencari kemungkinan Vulnerability yang terdapat pada INLISLite ataupun framework YII di mesin pencari google.

saya menemukan vulnerability pada INLISLite. berikut referensinya : Inlislite 3.2 Insecure Settings ≈ Packet Storm (packetstormsecurity.com)

hmmm, kemudian saya lakukan PoC pada website si client, namun tidak bisa. ini dikarenakan kredential tidak valid, ya bisa dirubah oleh admin, atau oleh siperetasnya. hehe

oke, lanjut kemudian saya login ke server. hal yang saya lakukan adalah melihat file log berikut besarannya. apakah syslog yang dibuat oleh administrator itu baik atau tidak. melihat dari sizenya, masih kurang baik sih.

saya tidak langsung membaca isi dari file log, karena bisa mual. saya berselancar dahulu sambil berenang renang ke folder aplikasi itu berada. folder yang saya sorot adalah folder yang memiliki permission full oleh web server. kebetulan, webservernya apache. biasanya, folder website yang memiliki full permission adalah folder dimana user bisa melakukan CRUD pada file/folder.

perpus1

nah, ada yang aneh satu, saya lanjut berselancar lagi deh di folder folder lainnya.

perpus2

nah, nemu lagi deh, coba saya pastikan isi filenya apa

perpus6

fix, ini php backdoor.

disini sekalian saya lihat, kapan siperetas melakukannya.

dan kemudian saya mencari file-file backdoor lainnya.

dari hasil analisis ini, menghapus file backdoor saja tidak cukup. karena pasti peretasnya akan kembali. saya lanjut analisis untuk menemukan celah keamanan pada web tersebut.

nah, saatnya berpusing ria, hehe. file log ini isinya ribuan, bahkan ada jutaan baris. dari hasil analisis diatas, saya sedikit trckly untuk menemukan celah keamanannya.

file backdoor sudah ketemu, berarti saya mencari log yang berkaitan dengan file backdoor tersebut.

perpus3

dari hasil percarian yang bernilai 200 , artinya 200 ini adalah respon ditanggapi oleh server. terlihat peretasan dilakukan sekitar 27 may 2023. namun, posisi file backdoor sudah terupload, belum kelihatan dari mana dia melakukan upload file backdoor tersebut yang disinyalir disitu letak celah keamanannya.

dari hasil percarian diatas, terlihat kan ya IP dari peretas, so sudah pasti dia pakai VPN. saya lanjut mencari tau celah keamanannya dengan membaca log dari IP tersebut. tentunya yang dilakukan pada tanggal 27 may 2023 atau sebelumnya.

perpus4

nah. sampai disini, bisa keliatan kalau emang bug atau vulnerabilitynya itu sama seperti yang saya sampaikan direferensi. berarti emang kredentialnya udah dirubah sama siperetas.

oke, saya lanjut, darimana dia berhasil upload backdoor itu. saya melanjutkan membaca log yang memiliki nilai POST pada diretory backend.

perpusdari hasil pencarian, ketemu. jadi celah keamanannya pada modul katalog dengan cara menambahkan konten-digital, darisinilah peretas mengunggah file backdoor pertamanya.

jadi kesimpulannya :

*peretas memanfaatkan celah keamanan atau vulnerability yang terdapat pada INLISLite

*peretas mengexploitasi celah keamanan dengan mengunggah backdoor atau malware dengan melakukan baypass file upload pada menu konten digital.

*tujuan peretas adalah membuat link sl*ot gac*or pada website

*motif peretas adalah ekonomi.

untuk saat ini, saya lagi bersihin backdoornya, dan ini butuh waktu. karena gak bisa dilakukan dengan bantuan antivirus atau anti anti lainnya, apalagi anti nyamuk.

setelah saya bersihin, baru saya backup database dan file appsnya. untuk jaga-jaga kalau rupanya siperetas punya hidden malware. utamanya, nutup celah kemanannya dengan menghapus folder backend atau merubah kredentialnya.

udah ah, segitu dulu ya. hehe.

 

Bagikan saja, itu tidak berat

Forgot password ubuntu 20.04 server on Vmware Vsphere

lupa password server, atau tidak diberikan password server oleh pemegang sebelumnya adalah hal yang menyebalkan. jika servernya berbentuk fisik, kamu harus mendatangi data center dimana letak server tersebut berada untuk melakukan reset password.

untungnya, dunia sudah canggih, saat ini hampir 90 % server berbentuk virtual. maka kegiatan reset password dapat dilakukan secara remote.

oh, iya, kegiatan ini adalah rangkaian dari sebuah kegiatan diantaranya reserve engineering sebuah server. oke langsung saja ke cara mereset password ubuntu 20.04 server di vmware vsphere.

  1. login kedalam dashboard vmware, kemudian, edit server virtual yang akan di reset.

reset

2. pada tab vm options, menu boot options, isikan lama delay server saat boot, terserah, saya isi dengan 10 sec.

reset23. kemudian, reboot server

Screenshot (3)_LI4. setelah reboot, akan muncul boot option seperti dibawah ini

reset-root-password-on-ubuntu-20-04-015. ketik “e” tanpa kutip untuk edit file boot . maka akan muncul tampilan seperti ini

reset-root-password-on-ubuntu-20-04-026. perhatikan, dan fokus hanya pada tulisan ro quiet splash $vt_handoff

reset-root-password-on-ubuntu-20-04-037. ganti tulisan tersebut menjadi rw init=/bin/bash

reset-root-password-on-ubuntu-20-04-048. setelah selesai edit, tekan Ctrl+x untuk reboot servernya.

9.server akan reboot dan akan menampilkan seperti dibawah ini

reset-root-password-on-ubuntu-20-04-0510. ketik mount | grep -w / pada console untuk verifikasi letak disk OS ubuntu nya

reset-root-password-on-ubuntu-20-04-0611. jika sudah tepat, ketik passwd pada console untuk merubah password root server

reset-root-password-on-ubuntu-20-04-0712. setelah berhasil, ketik exec /sbin/init untuk reboot server, dan silahkan, server sudah bisa login dengan user root dan password yang baru dibuat.

 

terima kasih.

Bagikan saja, itu tidak berat

konfigurasi mysql database master-slave untuk replikasi searah

ide ini sudah muncul sedari lama, namun saya baru bisa mengeksekusi akhir-akhir ini. awal munculnya ide ini karena ada kebutuhan dan permasalahan yang dihadapi oleh client dimana saya sebagai konsultannya.

awal permasalahannya adalah client tidak memiliki sistem backup sama sekali. untuk tindakan urgensi, saat itu saya membuatkan system backup yang berjalan setiap jam tertentu. namun, system backupnya hanya berbentuk dump dengan file ekstensi .sql. langkah ini saya tawarkan karena kebutuhan mendesak dan harus segera dieksekusi untuk melindungi data dari kegagalan fungsi sebuah system.

system backup yang berbentuk file hasil dump tersebut saya kirim dari server production ke server backup dengan tujuan jika ada kegagalan fungsi pada server production, mereka masih memiliki data hasil backup terjadwal.

sejauh ini, metode diatas sangat bermanfaat, terbukti beberapa kali server production mengalami gagal fungsi, antara lain: disk crash, network fail, system error dll, untuk mengembalikan system agar berjalan kembali, tentunya di restore dari file hasil backup tersebut.

namun, permasalahan berikutnya pasti akan muncul. tentunya ini berdasarkan tuntutan ya, jika client tidak nuntut, harusnya masih nyaman-nyaman saja dengan metode diatas. yang ada dalam benak saya beberapa waktu lalu, bagaimana jika client menuntut untuk data backup itu realtime,? artinya, jika data di input, misalnya huruf A pada server production, data huruf A tersebut juga langsung berada pada server backup secara realtime? tentunya metode backup terjadwal bukan lagi jawaban atas masalah ini.

mysql database master-slave adalah solusinya. dengan konfigurasi ini, maka data akan dikirim secara realtime dengan jeda data loss sangat kecil, ya sekian detiklah. ini tergantung dari kecepatan Network antara database master yang mengirim ke database slave, selain network, kecepatan menulis dan membaca pada disk atau yang dalam bahasa IT nya IOPS juga sangat berpengaruh.

untuk melakukan konfigurasi tersebut, gampang-gampang susah, jika anda hoki, mungkin mengikuti tutorial yang bertebaran di internet, bisa langsung implementasi. tapi saran dari saya, sebaiknya anda khatam dulu tentang Server dasar, kemudian khatam database enginer. kemudian memperkaya jam terbang dengan menyelesaikan berbagai persoalan hidup server. dengan begitu, anda akan paham dengan apa yang anda ketik, yang anda lalukan diserver. jadi kemungkinan salah eksekusi sangat tipis. jika anda tidak memahami itu, bisa saja anda salah eksekusi, misalnya menghapus database, atau mengubah privileges dari user server, seperti yang sering saya temui.

Screenshot_18

gambar diatas adalah salah satu perintah fatal yang dilakukan didalam server yang saya temui.

oke, kita langsung saja masuk ya ke teknisnya, sekarang saya memiliki dua server, yang pertama adalah master, dan yang kedua adalah slave. inti dari replikasi ini adalah bagaimana server slave dapat membaca binary log dari server master. maka, konfigurasi awal adalah pada server master

konfigurasi pada server master.

edit file berikut dan masukkan konfigruasi atau sesuaikan

[root@Master ~]# vim /etc/my.cnf
[mysqld]
log-bin=/data/bin/mysql-bin
binlog-format=row
server-id=1

2. membuat direktory binary log

[root@Master ~]# mkdir /data/bin
[root@Master ~]# chown -R mysql:mysql /data/bin

3. restart service mysql

[root@Master ~]# systemctl restart mysql

4. lihat hasil konfigurasi dengan perintah

[root@Master ~]# mysql -e "SHOW MASTER LOGS;"
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |     26753 |
+------------------+-----------+

5. membuat user mysql untuk melakukan replikasi

"GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'IP SERVER SLAVE' IDENTIFIED BY 'DISIPASSWD';"

Konfigurasi pada server slave.

  1. tambahkan atau modifikasi file berikut
[root@Slave ~]# vim /etc/my.cnf
[mysqld]
read-only
server-id=2

2. restart service mysql

[root@Slave ~]# systemctl restart mysql

3. menambahkan konfigurasi pada mysql

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='IP MASTER', MASTER_USER='repluser', MASTER_PASSWORD='PASSWDYGTADI', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=26753;
MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G

jika konfigurasi berhasil, harusnya akan muncul tampilan seperti dibawah ini.

Screenshot_8

sampai disini, tujuan sudah tercapai, yaitu mysql database replikasi searah secara realtime. disini perlu adanya monitoring dan throubleshooting jika ada error pada system replikasi. selain monitoring dan throubleshooting, diperlukan juga tunning database untuk performa lebih baik.

Saya Riyanto, seorang Sysadmin. familiar dengan linux server dan Open source. jika butuh dukungan, bisa hubungi saya pada surel riyanto1337@gmail.com

Bagikan saja, itu tidak berat

mengatasi masalah blank page index.php pada codeigniter

setelah sekian lamanya mencari tau masalah error blank page pada codeigniter, akhirnya bisa ketahuan dengan menghidupkan error log pada file index.php nya karena error log tidak terbaca pada nginx.

cara nya adalah dengan edit file index.php pada root directory codeigniternya dan merubah production menjadi development.

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

kemudian, buka kembali aplikasi melalui browser, maka akan muncul error penyebab index.php nya blank.

A PHP Error was encountered

Severity: Warning

Message: pg_connect(): Unable to connect to PostgreSQL server: FATAL: database "sidesa_neiw" does not exist

Filename: postgre/postgre_driver.php

Line Number: 154

Backtrace:

nah, dari sana kelihatan penyebab error blanknya, yaitu database yang tidak sesuai. dari sana tinggal perbaiki penyebabkan.

 

oke sekian

Bagikan saja, itu tidak berat

Mengatasi masalah mailer LPSE

masalah ini pertama muncul saat saya mendapat laporan dari UKPBJ bahwasannya penyedia tidak mendapatkan balasan email, baik pendaftaran maupun reset password

hal yang saya lakukan adalah login ke server, memastikan koneksi ke mailer lkpp terkoneksi, setelah saya cek, rupanya tidak terkoneksi mailernya dari server lpse ke server lkpp.

status connect, tapi tidak respon

status connect, tapi tidak respon

pengujian dengan mengetikkan perintah

telnet mail.lpse.lkpp.go.id 465

kemudian, saya doble check dengan telnet dari laptop local saya. hasilnya

nah ini yang benar

nah ini yang benar

rupanya error terjadi karena server mail lpse lkpp IP nya berubah. cara perbaikan di server lpse nya adalah dengan melakukan edit file hosts, dengan perintah

nano /etc/hosts

sesuaikan seperti ini

sesuaikan seperti ini

jika sudah, jangan lupa save, kemudian lakukan perintah pengujian telnet seperti diatas

telnet mail.lpse.lkpp.go.id 465

dan pastikan, responnya sudah seperti gambar dibawah ini :

nah ini yang benar

nah ini yang benar

jika sudah seperti gambar tsb, berarti sudah berhasil di perbaiki dan silahkan di coba dengan mendaftarkan penyedia,

SARAN : gunakanlah mailer sendiri, karena mialer LKPP saya lihat sudah ngos ngosan.

 

terima kasih.

 

Bagikan saja, itu tidak berat

High avaibility moodle server using nginx load balancer and nfs server

nah loh, judulnya pakai bahasa inggris , yaitu High avaibility moodle server using nginx load balancer and nfs server , biar keren aja sih, karena saya akan tetap menulisnya dalam bahasa indonesia, saya kan cinta negeri ini, hehehe

oiya, hari ini saya sedang cukup bahagia, sebabnya saya iseng-iseng cek judul artikel, eh, muncul di page one nya google. gimana gak bahagia coba, artikel saya bersaing paling banyak di lihat dengan website-website kelas kakap di dunia. hahaha.

http://mandrivaputri.info

http://mandrivaputri.info

artikel yang mana ? yang ini http://mandrivaputri.info/2018/07/cara-load-balancing-web-server-dengan-haproxy-dan-glusterfs/

nah, artikel yang saya tulis ini adalah sambungan dari artikel diatas, hanya berbeda metode dan kebutuhan. maksudnya tetap sama.

selamat membaca dan selamat berbahagia untuk kalian yang sedang berlibur panjang dengan keluarga. salam hangat dari saya yang tersandar sendirian di kamar kosan. apalah daya, keluarga jauh. semoga harapan kita semua bisa tercapai 🙂 🙂 🙂 🙂 🙂 😉 😉 🙁 🙁 ;'(

jadi, saya mendapatkan tugas, ya sekalian saya anggap sebagai tantangan, sejauh mana kemampuan otak dan tenaga saya mampu menyelesaikan tugas tersebut.

tugasnya adalah : membangun dan mengoptimasi website learning manajement system dengan moodle

sebelumnya, website ini sudah ada, tapi diaksesnya lambat, dan terdapat beberapa trouble yang lumayan bikin bingung untuk mengatasinya.

sebelum melakukan aksi, terlebih dahulu saya menggali informasi tentang aplikasi tersebut, khususnya user akses. yang perlu di ketahui adalah :

  1. berapa banyak user yang akan mengakses aplikasi tersebut ?
  2. apakah random, atau concurrent ?
  3. berapa besar BW internet yang tersedia?
  4. berapa besar resource server yang tersedia ?

dari analisa diatas, dapat dihitung kebutuhannya. misalnya BW yang dibutuhkan, jumlah core CPU, jumlah RAM dan disk. disini saya memutuskan awal menggunakan total RAM 15 GB , CPU 4 core pada setiap server.

setelah melakukan analisa, saya mulai mengeksekusi tugas tersebut. oh, hal ini yang dinamakan analis sistem. tugasnya seorang sistem analis, tapi pada kasus kebanyakan, yang analis juga yang mengeksekusi, wkwkwkw. ya gapapalah, yang penting nambah ilmu, minimal jadi portofolio kali aja saya ditendang dari sini dan pindah ke tempat baru hahahaha

solusi dari permasalah diatas adalah saya menawarkan load balancing server. karena menggunakan moodle, yaitu sebuah aplikasi open source, maka kita tidak terlalu banyak bisa mengoptimasi sari sisi codingnya.

nah, mahalnya disini. ketika ada solusi. 😀 , kalau eksekusi kan hanya tinggal jalankan saja.

load balancing adalah membagi beban aplikasi yang di distribusikan ke beberapa server. 

begini diagramnya.

begini diagramnya.

metode diatas menggunakan tiga buah server apps, satu buah server load balancer, satu buah server database, dan satu buah server NFS. akan lebih baik jika server databasenya juga ada tiga, di cluster. tapi ya itu nantilah, dipengembangan berikutnya, dan seberapa penting ini aplikasi digunakan :p

senjata yang saya gunakan adalah :

  1. nginx
  2. nfs
  3. postgresql
  • server load balancer IP 192.168.85.10
  • server A IP 192.168.85.1
  • server B IP 192.168.85.2
  • server C IP 192.168.85.3
  • server NFS IP 192.168.87.3
  • server database IP 192.168.87.4

A. install dan konfig server load balancer

yang pertama adalah instalasi nginx load balancer pada server load balancer. ini instalasi nginx seperti biasa, hanya script untuk configurasinya menggunakan load balancer dengan metode round robind. yang pernah kuliah harusnya tau nih :p . ada beberapa metode, seperti least conn, ya tergantung kebutuhan aja sih, silangkan di explore.

ant@loadbalancer:~$ yum update -y

ant@loadbalancer:~$ yum install -y nginx

ant@loadbalancer:~$ systemctl enable nginx

ant@loadbalancer:~$ systemctl start nginx

ant@loadbalancer:~$ systemctl status nginx

 

nginx

nginx

membuat script configurasi vhost pada nginx

ant@loadbalancer:~$ vi /etc/nginx/conf.d/loadbalancer.conf

isinya :

upstream backend {

server 192.168.85.1;
server 192.168.85.2;
server 192.168.85.3;
}

server {
listen 80;
server_name xxxx.id;
return 301 https://$server_name$request_uri;
location / {
proxy_buffering on;
proxy_buffer_size 1k;
proxy_buffers 24 4k;
proxy_busy_buffers_size 8k;
proxy_max_temp_file_size 2048m;
proxy_temp_file_write_size 32k;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://backend;
}
}

upstream backendssl {

server 192.168.85.1:443;
server 192.168.85.2:443;
server 192.168.85.3:443;
}

server {
listen 443 ssl;
server_name xxxx.id;
ssl_certificate /etc/nginx/serti/bundle.crt;
ssl_certificate_key /etc/nginx/serti/priv.key;

location / {
proxy_buffering on;
proxy_buffer_size 1k;
proxy_buffers 24 4k;
proxy_busy_buffers_size 8k;
proxy_max_temp_file_size 2048m;
proxy_temp_file_write_size 32k;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://backendssl;
}
}

 

disini, SSL dari aplikasi akan di handle oleh server loadbalancer.

B. Instalasi nginx pada semua server A,B,C

ant@server-A:~$ yum update -y

ant@server-A:~$ yum install -y nginx

ant@server-A:~$ systemctl enable nginx

ant@server-A:~$ systemctl start nginx

ant@server-A:~$ systemctl status nginx

membuat konfigurasi vhost pada server A,B dan C

server {
listen *:443 ssl;
listen [::]:443 ssl;
root /usr/share/nginx/html/moodle/moodle/;
index index.php index.html index.htm;
server_name 192.168.85.1;

ssl_certificate /etc/nginx/serti/bundle.crt;
ssl_certificate_key /etc/nginx/serti/priv.key;

location / {
try_files $uri $uri/ =404;
}

location /dataroot/ {
internal;
alias /data/moodledata/;
}

location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
include fastcgi_params;
proxy_buffering on;
proxy_buffer_size 1k;
proxy_buffers 24 4k;
proxy_busy_buffers_size 8k;
proxy_max_temp_file_size 2048m;
proxy_temp_file_write_size 32k;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

}

disini, moodledata diarahkan pada server NFS.

C. instalasi postgresql server.

ant@db-server:~$ rpm -Uvh https://yum.postgresql.org/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

ant@db-server:~$ yum -y install postgresql11-server postgresql11

ant@db-server:~$ /usr/pgsql-11/bin/postgresql-11-setup initdb

ant@db-server:~$ systemctl enable postgresql-11.service

ant@db-server:~$ systemctl start postgresql-11.service

konfigurasi agar server database postgresql dapat di akses dari luar server. tutorialnya banyak di google, hehe

D. instalasi dan konfigurasi server NFS ke server A,B,C

ant@nfs-server:~$ yum install nfs-utils

ant@nfs-server:~$ mkdir /data/moodledata

ant@nfs-server:~$ vi /etc/exports

/data/moodledata 192.168.85.1(rw,sync,no_root_squash,no_all_squash)
/data/moodledata 192.168.85.2(rw,sync,no_root_squash,no_all_squash)
/data/moodledata 192.168.85.3(rw,sync,no_root_squash,no_all_squash)

ant@nfs-server:~$ systemtl enable nfs-server

ant@nfs-server:~$ systemctl start nfs-server

disini, saya membuat folder /data/moodledata untuk di mount ke server A,B,C

E. mounting disk pada server NFS ke server A,B,C

ant@nfs-server:~$ mkdir /data

ant@nfs-server:~$ mount 192.168.87.3:/data/moodledata /data

tambahkan script ini agar auto mount saat server restart

ant@nfs-server:~$ vi /etc/fstab

192.168.87.3:/data/moodledata /data nfs  defaults    0       0

cek, apakah disk server NFS sudah termount dengan perintah df -h

Screenshot_24

fuih,, capek ya. selanjutnya, siap untuk instalasi moodle nya.

oiya, saya males nulis tutorial install moodle, karena sudah banyak di internet, bisa di pelajari disini : https://docs.moodle.org/39/en/Installing_Moodle

yang perlu diperhatikan pada saat instalasi moodle :

  1. pastikan database sudah di buat di server database postgresql
  2. arahkan moodledata pada folder /data
  3. arahkan database pada IP 192.168.87.4

udah, sekian dulu, kalau tidak berhasil alias gagal, coba di perhatikan gagalnya dimana, atau bisa bertanya pada kolom komentar ya. capek banget saya nulisnya wkwkwkwk.

sekian dulu tulisan tentang High avaibility moodle server using nginx load balancer and nfs server.

sampai bertemu di lain artikel…. :*

 

 

Bagikan saja, itu tidak berat