Upgrade mariadb Debian 9

Tag

,

Secara default mariadb yang di-install pada debian 9 adalah versi 10.1, pada beberapa project karena keterbatasan besar nilai index pada field dengan tipe varchar, menyebabkan salah satu solusi adalah melakukan upgrade ke versi mariadb di atas versi 10.2.2.

Untuk itu satu-satunya cara (paling tidak setahu saya) adalah melakukan upgrade langsung dari repo mariadb, tidak menggunakan repo default Debian 9.

Langkah Pertama tambahkan repo dan kunci digital.

# apt install software-properties-common dirmngr
# apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
# add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.nodesdirect.com/mariadb/repo/10.4/debian stretch main'

Langkah Kedua adalah update package di Debian 9, serta lakukan instalasi. Namun tentu saja, adalah langkah bijak untuk segera melakukan backup terhadap data yang ada di server sebelum melaksanakan instalasi.

# apt-get update
# apt-get install mariadb-server

Apabila proses telah selesai, maka yang ter-install adalah mariadb versi 10.4.

# mysql --version
mysql  Ver 15.1 Distrib 10.4.8-MariaDB, for debian-linux-gnu (i686) using readline 5.2

Referensi:

https://linuxize.com/post/how-to-install-mariadb-on-debian-9/

Menggunakan Utility du dan sort Untuk Investigasi Root Hampir Penuh

Tag

,

Pada salah satu server partisi root hampir penuh, maka dibutuhkan investigasi terhadap folder mana saja yang menyebabkan partisi untuk root ini penuh.

Salah satu yang bisa dipakai adalah utility du, di mana utility ini telah tersedia pada distro standar Linux, digunakan untuk melakukan estimasi terhadap penggunaan space oleh file yang ada di sistem.

Berikut adalah kondisi saat ini pada salah satu server yang dijadikan sebagai contoh; perintah df saya gunakan untuk mendapatkan prosentasi penggunaan space di masing-masing partisi, di mana bila diperhatikan partisi root tersebut sudah hampir mencapai 90% sebagaimana hasil perintah pada cuplikan di bawah ini.

root@uluhitahkia:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       9.1G  7.5G  1.1G  88% /
/dev/sdb1       917G  557G  314G  64% /data
/dev/sda4       525G  204G  294G  41% /home
--- hasil yang lainnya ---

Di server saya memisahkan partisi untuk data dan home serta root, sehingga apabila saya ingin melakukan investigasi terhadap bagian mana dari folder system di root yang memiliki ukuran paling besar, saya harus menentukan terlebih dahulu nama-nama foldernya yang berada pada partisi root. Di server yang saya gunakan saya menentukan bahwa folder yang saya akan periksa adalah opt var lib edise usr tmp lib64 etc.

Untuk memeriksanya saya menjalankan perintah du sebagai root agar tidak terkena masalah hak akses pada folder sistem serta menuliskan nama-nama folder secara terpisah sebagai parameternya. Kemudian karena saya hanya ingin mengetahui nilai totalnya saja dari masing-masing folder yang ada di root, maka saya tambahkan parameter s (summary) dan h untuk tampilan ukuran yang mudah dipahami serta c untuk menampilkan totalnya, sebagaimana yang ditampilkan pada perintah di bawah ini.

root@uluhitahkia:/# du -shc opt var lib edise usr tmp lib64 etc
409M    opt
2.2G    var
403M    lib
0       edise
4.4G    usr
27M     tmp
4.0K    lib64
8.1M    etc
7.4G    total

Bisa terlihat bahwa folder usr memiliki nilai yang paling besar. Agar lebih memudahkan maka saya akan melakukan sorting terhadap tampilannya sehingga memudahkan proses analisa menggunakan perintah sort.

root@uluhitahkia:/# du -shc opt var lib edise usr tmp lib64 etc | sort -hr
7.4G    total
4.4G    usr
2.2G    var
409M    opt
403M    lib
27M     tmp
8.1M    etc
4.0K    lib64
0       edise

Demikian dan proses investigasi lanjut bisa dilakukan ke dalam masing-masing folder.

Sumber:

Shorewall Di Stretch Tidak Otomatis Berjalan Setelah Sistem Restart

Tag

,

Saat melakukan pemeriksaan pada log status fail2ban, terdapat notice bahwa fail2ban telah melakukan ban pada IP yang melakukan brute force pada port SSH di server. Log tersebut seperti yang terlihat di bawah ini:

2018-12-18 10:17:02,644 fail2ban.actions        [1061]: NOTICE  [sshd] 58.242.83.18X already banned
2018-12-18 10:17:03,522 fail2ban.filter         [1061]: INFO    [sshd] Found 58.242.83.18X
2018-12-18 10:17:04,048 fail2ban.filter         [1061]: INFO    [sshd] Found 58.242.83.18X
2018-12-18 10:17:06,178 fail2ban.filter         [1061]: INFO    [sshd] Found 58.242.83.18X
2018-12-18 10:17:06,223 fail2ban.filter         [1061]: INFO    [sshd] Found 58.242.83.18X
2018-12-18 10:17:08,612 fail2ban.filter         [1061]: INFO    [sshd] Found 58.242.83.18X
2018-12-18 10:17:08,643 fail2ban.filter         [1061]: INFO    [sshd] Found 58.242.83.18X
2018-12-18 10:17:08,651 fail2ban.actions        [1061]: NOTICE  [sshd] 58.242.83.18X already banned

Terlihat bahwa semestinya IP 58.242.83.18X tersebut harusnya setelah di ban, tidak akan kembali melakukan proses koneksi, namun ternyata koneksinya tidak di banned! Karena untuk iptables saya menggunakan shorewall sebagai managemennya, saat dilakukan proses banned pada IP yang bermasalah, bila saya check di shorewall, harusnya akan terlihat IP apa saja yang di banned. Namun muncul error saat dijalankan perintah:

# shorewall show dynamic
   ERROR: Chain 'dynamic' is not recognized by /sbin/iptables.

Saat dijalankan perintah untuk menampilkan status shorewall ditemukan permasalahannya, shorewall tidak berjalan!

# shorewall status
Shorewall-5.0.15.6 Status at apuy-kambe - Tue Dec 18 10:20:19 WIB 2018

Shorewall is stopped
State:Started Fri Nov 16 10:44:49 WIB 2018 from /etc/shorewall/ (/var/lib/shorew                                                           all/firewall compiled Fri Nov 16 10:44:48 WIB 2018 by Shorewall version 5.0.15.6                                                           )

Ternyata setelah server hidup kembali akibat mati listrik di lokasi server berada, didapatkan informasi shorewall tidak berjalan otomatis di Debian Stretch, walaupun telah melakukan setting startup=1 di /etc/default/shorewall. Perlu dilakukan perintah untuk menambahkan shorewall sebagai service yang berjalan otomatis saat sistem berjalan pertamakalinya.

# systemctl enable shorewall
Synchronizing state of shorewall.service with SysV service script with /lib/syst                                                           emd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable shorewall
insserv: warning: current stop runlevel(s) (0 6) of script `shorewall' overrides                                                            LSB defaults (0 1 6).
insserv: warning: current stop runlevel(s) (0 6) of script `shorewall' overrides                                                            LSB defaults (0 1 6).

Setelah itu shorewall dijalankan.

# shorewall start
Compiling using Shorewall 5.0.15.6...
Processing /etc/shorewall/params ...
Processing /etc/shorewall/shorewall.conf...
Loading Modules...
Compiling /etc/shorewall/zones...
Compiling /etc/shorewall/interfaces...
..

Kemudian fail2ban di restart.

# service fail2ban restart

Lalu saat di check kembali pada log, barulah fail2ban dapat berjalan dengan normal dan IP tersebut sukses di banned.

Sumber:

Screen: Alat Remote Bermanfaat

Tag

Suatu saat saya pernah login untuk melakukan serangkaian kegiatan administrasi di server remote, akan tetapi belum selesai salah satu proses selesai, koneksi SSH saya terputus dan demikian pula dengan proses yang sedang dijalankan. Akibatnya fatal, saya harus melakukan serangkaian langkah tersebut dari awal lagi. Hal tersebut sebelum saya mengenal screen.

Menggunakan screen saya dapat membuat beberapa virtual terminal, di mana virtual terminal ini akan tetap ada dan terus berjalan, walaupun saya kehilangan koneksi ke mesin server yang sedang saya remote.

Untuk melakukan instalasi apabila belum terinstall:

# apt-get install screen

Langkah selanjutnya apabila ini adalah sesi pertama saya tinggal jalankan perintah

# screen

Untuk keluar dari sesi virtual saat itu tinggal di tekan tombol ctrl-a-d (tekan tombol Control lanjut tombol a dan lanjut tombol d).

Untuk menampilkan daftar sesi screen yang sedang berjalan tinggal ketikkan:

# screen -ls
There is a screen on:
        25167.pts-0.uluhitahkia (12/17/2018 09:54:19 AM)        (Detached)
1 Socket in /run/screen/S-root.

Untuk masuk ke dalam salah satu sesi screen tinggal lakukan perintah:

# screen -r 25167

Perintah screen -r <kode_id> sebagaimana yang ditayangkan di atas, maka kita akan masuk ke dalam sesi pada terminal screen yang kita jalankan sebelumnya.

Apabila kita ingin menghentikan sesi saat itu, benar-benar menghentikannya , maka kita tekan tombol ctrl-a dan dilanjutkan pengetikan :quit.

Referensi:

Upgrade Postgresql 9.6 Ke 10 Pada Debian Stretch

Tag

Persyaratan salah satu proses upgrade di sistem kami adalah penggunaan Postgresql 10. Saat ini, yang digunakan adalah postgresql versi 9.6. Untuk itu, dibutuhkan upgrade ke versi 10.

Sebelumnya setelah berhasil melakukan upgrade pada Sistem Operasi yang kami gunakan, dari Debian Jessie ke Debian Stretch, juga telah melakukan terlebih dahulu proses upgrade dari Postgresql 9.1 ke Postgresql 9.4, dilanjutkan ke Postgresql 9.6.

Agar bisa dilaksanakan pada langkah sebelumnya telah dilakukan proses penambahan repository milik postgresql, dengan menambahkan file di /etc/apt/sources.list.d/pgdg.list berisi perintah sebagai berikut:

deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main

Kemudian langkah yang dilakukan selanjutnya adalah menambahkan kunci digital milik repository, dilanjutkan perintah update paket sebagaimana perintah di bawah (diketikkan pada satu baris).

# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# sudo apt-get update

Kemudian dilanjutkan dengan melakukan instalasi postgresql 10.

# apt-get install postgresql-10

Bila telah terinstal, bila dijalankan perintah pg_listcluster, cluster dari postgresql 10 berada pada posisi hidup berdampingan dengan versi 9.6. Untuk melanjutkan proses upgrade cluster 10 harus dimatikan lebih dahulu.

# pg_dropcluster 10 main --stop

Setelah itu dilanjutkan dengan melakukan proses upgrade terhadap cluster yang digunakan saat ini yaitu 9.6.

# pg_upgradecluster 9.6 main

Pada proses upgrade ini akan berlangsung proses upgrade serta beberapa otomatisasi lainnya, di mana lamanya proses bergantung dari besarnya data yang ada. Setelah berhasil maka bila dilakukan perintah pg_lscluster akan terlihat bahwa cluster 9.6 mati dan 10 hidup.

# pg_lscluster
Ver Cluster Port Status Owner    Data directory               Log file
9.4 main    5433 down   postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log
9.6 main    5434 down   postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
10  main    5432 online postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log

Di tempat saya karena cluster dari versi sebelumnya tidak dihapus, masih terlihat status 9.4 dan 9.6 ada. Kemudian aplikasi di test dan apabila telah berhasil serta tidak ada yang bermasalah kita tinggal melakukan drop pada cluster yang lain.

# pg_dropcluster 9.6 main

Referensi:

fail2ban Bermasalah Setelah Upgrade Debian 8 Ke Debian 9

Tag

Aplikasi fail2ban merupakan aplikasi yang sangat berguna sangat ingin melakukan langkah pengamanan terhadap sistem.

Setelah melakukan upgrade ke Debian 9 fail2ban menolak untuk berjalan sebagaimana mestinya. Untuk ini saya tinggal lakukan proses uninstall dan install ulang 😀

# apt-get --purge remove fail2ban
# apt-get install fail2ban

Referensi:

Shorewall Bermasalah Setelah Upgrade Ke Debian 9

Tag

Setelah melakukan upgrade dari Debian 8 (Jessie) ke Debian9 (Stretch), pada saat proses upgrade terdapat pemberitahuan untuk melakukan perubahan pada konfigurasi Shorewall di /etc/shorewall/shorewall.conf.

Secara default proses upgrade terhadap konfigurasi, sistem memilih untuk tidak melakukan penimpaan terhadap konfigurasi yang sudah ada, saya pun memilih untuk opsi default. Akan tetapi pada proses ini ternyata terdapat perubahan pada konfigurasi shorewall yang mengharuskan untuk melakukan update terhadap konfigurasinya.

Untuk proses update tinggal menjalankan perintah:

# shorewall update

Dilanjutkan dengan check terhadap konfigurasi, dilanjutkan dengan proses untuk menjalankan service.

# shorewall check
# shorewall start

Upgrade Debian 8 Ke Debian 9

Tag

, ,

Berikut ini merupakan catatan saya terkait proses upgrade pada server production yang kami gunakan saat ini.

Langkah pertama yang dilakukan adalah melakukan backup terhadap beberapa data penting, di server kami menggunakan database mysql, postgres, serta melakukan backup terhadap konfigurasi pada folder /etc. Untungnya pada semua server yang kami gunakan telah rutin di-backup menggunakan rsnapshot. Untuk berjaga-jaga, dilakukan beberapa backup secara manual.

# mysqldump --defaults-file=/etc/mysql/debian.cnf -cCeQ --hex-blob --quote-names --routines --events --triggers --all-databases -r all_databases.sql
# tar -pczf etc.tar.gz /etc

Perintah di atas melakukan proses backup terhadap database mysql dikarenakan terdapat perubahan aplikasi, di mana Debian 9 memutuskan untuk menggunakan MariaDB.

Langkah kedua yang dilakukan adalah melakukan perintah update dan upgrade serta dilanjutkan dengan dist-upgrade pada sistem yang berjalan, di mana versi yang digunakan sebelum upgrade adalah debian 8.11 (jessie).

# apt-get update
# apt-get upgrade
# apt-get dist-upgrade

Setelah proses selesai dilanjutkan dengan Langkah Ketiga untuk melakukan pemeriksaan terhadap konsistensi paket aplikasi yang ada, atau apakah ada paket yang sudah tidak mendapatkan upgrade di Debian 9.

# dpkg -C
# apt-mark showhold

Bila tidak ada yang permasalahan yang muncul, di tempat saya ke-dua perintah di atas tidak menghasilkan keluaran apa-apa, maka bisa dilanjutkan untuk melakukan tahapan upgrade berikutnya. Bila tidak, maka perlu dipikirkan untuk melakukan tindakan lanjutan terhadap paket yang bermasalah tersebut.

Langkah Keempat adalah melakukan update terhadap repository. Saya melakukan backup terhadap konfigurasi lama dan melakukan perubahan terhadap nama versi Debian dari jessie ke stretch.

# cp /etc/apt/sources.list /etc/apt/sources.list.ori
# nano /etc/apt/sources.list

Berikut ini adalah contoh isi konfigurasi tersebut.

deb http://kambing.ui.ac.id/debian stretch main non-free contrib
deb-src http://kambing.ui.ac.id/debian stretch main non-free contrib
deb http://ftp.debian.org/debian stretch-backports main

deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

Karena ada instalasi paket tambahan, di server terdapat PHP dan Postgresql, dilakukan pula untuk konfigurasi tersebut.

# cat /etc/apt/sources.list.d/pgdg.list
#deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main
deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main
# cat /etc/apt/sources.list.d/php.list
#deb https://packages.sury.org/php/ jessie main
deb https://packages.sury.org/php/ stretch main

Setelah proses tersebut selesai, lakukan update.

# apt-get update

Setelah proses selesai, maka coba test untuk melihat paket apa saja yang akan di-upgrade dengan menjalankan perintah:

# apt list --upgradable

Kemudian langkah terakhir adalah dua langkah penentu, melakukan upgrade pada masing-masing paket dan upgrade ke Debian stretcth.

# apt-get upgrade
# apt-get dist-upgrade

Setelah ini semestinya proses telah selesai, dan lakukan reboot bila dibutuhkan.

# reboot

Referensi:

Mengakses Komputer Lokal Dari Internet Tanpa IP Publik

Tag

Pada laptop yang saya gunakan terdapat integrated webcam, namun tidak pernah digunakan. Hingga saat saya memutuskan untuk membeli paket Internet yang ditawarkan oleh Indihome. Ide pun muncul, bagaimana bila saya memberdayakan saja laptop yang lebih sering ditinggal di rumah ini untuk untuk memonitor isi rumah? Karena webcam nya ada, saya pikir jaringan internet di rumah kalau saya tinggal harus ada gunanya. Untuk itu, muncul kebutuhan untuk melakukan remote dari Internet ke komputer laptop di rumah.

Apabila IP Publik merupakan fasilitas yang didapatkan dari paket indihome, maka tentu saja semuanya akan lebih mudah. Namun, saat mengakses ke router saya kecewa karena yang saya dapatkan bukan merupakan IP Public.

Bila saja ada IP Public tentu saja saya tinggal melakukan setting IP Forwarding di router, agar mem-forward request dari WAN ke service laptop saya. Tidak kekurangan akal, hasil dari pencarian di internet menggunakan google, saya dapatkan informasi menggunakan layanan milik ngrok.com.

Secara sederhana Ngrok membuat tunneling diantara komputer dan saya yang mengaksesnya dari luar jaringan lokal rumah. Karena Ngrok , saya tidak perlu lagi melakukan setting tambahan di router Indihome, selama terdapat akses internet maka saya dapat mengakses komputer di rumah.

Di Ubuntu instalasinya sangat mudah, tinggal melakukan download terhadap binary client ke laptop, dilanjutkan inisiasi otentifikasi token yang didapatkan setelah mendaftar di web ngrok.com, saya dapat langsung menggunakan layanannya yang gratis.  Untuk detailnya silahkan diakses pada web ngrok.com.

Langkah selanjutnya pada laptop dengan webcam tadi saya tinggal menjalankan perintah:

$ ./ngrok http 8081

di mana webcam server yang saya install nanti menggunakan port 8081 dan melayani request menggunakan protokol http.

 

 

Reload nginx Setelah Letsencrypt Berhasil Terupdate

Tag

, ,

Pada salah satu server web yang menggunakan Letsencrypt untuk sertifikat SSL-nya, untuk proses pembaharuan kami menggunakan crontab sebagaimana yang biasanya dilakukan.

0    0,12    *    *    *   certbot renew  >/dev/null 2>&1

Akan tetapi pada aplikasi server yang digunakan, di mana kami menggunakan nginx, ternyata tidak secara otomatis melakukan pembaharuan pula terhadap sertifikat yang digunakan oleh salah satu domain. Akibatnya, Letsencrypt telah melakukan pembaharuan, nginx tidak melakukannya.

Sebagai solusi sebenarnya sangat sederhana, yaitu dengan menjalankan perintah reload untuk server nginx-nya menggunakan perintah service nginx reload.

Agar proses reload server nginx dapat dilaksanakan secara otomatis setelah pembaharuan berhasil, maka pada salah satu konfigurasi milik Letsencrypt di /etc/letsencrypt/renewal/domain.com.conf tinggal ditambahkan perintah nginx untuk reload.

# Options used in the renewal process
[renewalparams]
renew_hook = service nginx reload

Setelah itu semestinya nginx akan di reload pada saat Letsencrypt berhasil melakukan pembaharuan.