Recovery Password Root Menggunakan SystemRescueCD

Tag

, , ,

Salah satu partisi pada hardisk full hingga 100%, mengakibatkan tidak dapat login ke dalam sistem. Hal ini menyebabkan akses tidak dapat dilakukan dan harus menggunakan mode recovery.

Mimpi buruk terjadi, saat untuk login pun tidak bisa dilaksanakan.

Percobaan pertama adalah melakukan dari recovery, tidak dapat login karena password ditolak.

Percobaan kedua mencoba untuk melakukan proses reset password root dengan menggunakan langkah yang dijabarkan oleh https://www.itzgeek.com/how-tos/linux/debian/how-to-reset-root-password-on-debian-9-stretch.html, namun ternyata sistem tidak dapat mendeteksi keyboard yang digunakan. Langkah terakhir adalah mengakses dari live usb.

SystemRescueCd saya download, kemudian menggunakan tool Rufus (https://rufus.akeo.ie/) saya memindahkannya agar bisa diload menggunakan USB karena ketiadaan CD Drive di server.

USB di colok ke port dan sistem di restart!

Sukses masuk dan kemudian menggunakan perintah fdisk mencoba mencari dev yang bisa diakses. Di sini folder root ada pada /dev/sda2 maka langkah berikutnya adalah untuk melakukan persiapan menjalankan chroot.

# mkdir /mnt/sys
# mount /dev/sda2 /mnt/sys
# mount -o bind /proc /mnt/sys/proc
# mount -o bind /dev /mnt/sys/dev
# mount -o bind /sys /mnt/sys/sys
# chroot /dev/sda2

Bila tidak ada permasalahan akan muncul tampilan shell untuk root dan tinggal lakukan proses perubahan password dengan perintah passwd.

Langkah lainnya adalah melakukan pencarian terhadap partisi yang penuh serta melakukan pembersihan yang dibutuhkan.

Sumber:

  1. http://www.system-rescue-cd.org/disk-partitioning/Repairing-a-damaged-Grub/
  2. https://rufus.akeo.ie/
  3. https://www.howtogeek.com/howto/linux/reset-your-ubuntu-password-easily-from-the-live-cd/
  4. https://techtalk.gfi.com/top-5-free-rescue-discs-for-your-sys-admin-toolkit/
  5. https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-windows#5
Iklan

Menggunakan Rsnapshot Untuk Melakukan Backup Db PostgreSQL

Tag

,

Setelah melaksanakan proses backup menggunakan rsnapshot, terdapat database PostgreSQL yang juga  harus di backup.

Untuk itu agar lebih ringkas digunakan perintah backup_script yang terdapat di rsnapshot, sehingga proses backup PostgreSQL dapat dilaksanakan. Akan tetapi dibutuhkan beberapa setting tambahan di server.

Membuat file password di /root/.pgpass

localhost:*:db:user:pass

Kemudian tidak lupa untuk melakukan setting hak akses pada file password tersebut agar root saja yang dapat membacanya.

# chmod go-rwx /root/.pgpass

Langkah selanjutnya adalah membuat script untuk melakukan backup yang disimpan di /usr/local/bin/postgresql-backup.sh.

# nano /usr/local/bin/postgresql-backup.sh

Untuk isi script tersebut adalah:

#!/bin/bash
export PGPASS=/root/.pgpass
pg_dump -w -h localhost -U user db > postgresql-dump.sql
gzip -f postgresql-dump.sql

Jangan lupa untuk memastikan bahwa hanya root yang bisa melakukan eksekusi terhadap script ini.

# chmod u+x,o-rwx /usr/local/bin/postgresql-backup.sh

Kemudian pastikan dapat dieksekusi dengan baik.

# /usr/local/bin/postgresql-backup.sh

Langkah selanjutnya adalah menambahkan perintah pada file konfigurasi rsnapshot untuk menjalankan script ini.

# di tempat saya ditambahkan pada bagian terakhir perintah setelah
# backup file/folder yang lain
backup_script /usr/local/bin/postgresql-backup.sh data-db/

Selesai!

Sumber:

 

Cloning Partisi GPT

Tag

,

Ada kebutuhan untuk melakukan cloning terhadap partisi device dengan GPT partition structure di situ, menggunakan sfdisk bukan pilihan sehingga menggunakan sgdisk adalah jawabannya.

# sgdisk /dev/sumber -R /dev/target
# sgdisk -G /dev/target

Perintah terakhir agar GUID masing-masing struktur bisa di randomize.

Sumber:

 

Instalasi Manual mod-security Di Debian 8

Tag

,

Saat menggunakan debian 8 dan ingin menggunakan mod-security di apache2 kami mendapatkan adanya kesalahan terhadap kode rule manual yang diakibatkan versi yang tidak kompatibel di salah satu server, sehingga penggunaan paket default milik mod-security bukanlah pilihan. Oleh karena hal tersebut maka harus dilakukan proses intalasi manual terhadap mod-security yang kompatibel, di mana versi yang bisa digunakan adalah modsecurity-apache_2.6.5.

Singkat cerita setelah melakukan download terhadap source code modsecurity-apache_2.6.5 dilakukan terlebih dahulu instalasi terhadap module yang dibutuhkan.

# apt-get install apache2-dev libxml2-dev libpcre3 libpcre3-dev libcurl4-openssl-dev

Kemudian source code modsecurity di ekstrak dan mulailah dilakukan proses instalasi secara manual.

# tar -xvzf modsecurity-apache_2.6.5
# cd modsecurity-apache_2.6.5
# ./configure --with-apxs2=/usr/bin/apxs2 && make && make install

Proses sangat panjang dan apabila tidak ada pesan error maka semestinya hasil compile secara default akan ditempatkan di /usr/local/modsecurity/lib/mod_security2.so.

Agar dapat digunakan oleh apache2 terdapat beberapa proses yang harus dilakukan, yaitu membuat setting module yang kita beri nama security2 serta meloadnya di apache2.

# nano /etc/apache2/mods-available/security2.load

Isi dari file tersebut adalah seperti berikut:

LoadModule security2_module /usr/local/modsecurity/lib/mod_security2.so

Setelah itu tidak lupa proses pengaktifkan module yang baru di install ini yang dilanjutkan dengan melakukan restart pada service apache2.

# ap2enmod security2
# service apache2 restart

Referensi:

Insiasi PostgresREST

Tag

,

Setelah mendapatkan kebutuhan untuk membuat reporting sederhana terhadap data yang telah terkumpul menggunakan PostgreSQL, maka terdapat beberapa pilihan apabila aplikasi yang ingin dikembangkan berbasis Web. Salah satunya adalah penggunaan Javascript Framework yang mengakses ke PostgreSQL melalui REST API. Untuk pengembangan REST API selain menggunakan beberapa pilihan framework pengembangan, ternyata ada satu pilihan menarik menggunakan PostgresREST.

Salah satu impresi yang saya dapatkan dari ujicoba sederhana kali ini, penggunaan PostgresREST membuat pengembangan REST API lebih cepat karena kita tidak perlu lagi menuliskan kode yang repetitive untuk backend-nya. Alih-alih mengembangkan sendiri proses otorisasi dan autentifikasi, kita bisa langsung menggunakan schema dan role serta privilege yang ada di PostgreSQL.

Agar bisa menggunakan PostgresREST dibutuhkanPostgreSQL minimal versi 9.3, sehingga untuk percobaan ini saya harus melakukan proses upgrade untuk versi PostgreSQL yang digunakan di salah satu mesin server.

Sebagai informasi bawah saya memiliki sebuah database bernama mydb dengan user mydbuser dan password mydbpass serta schema yang digunakan adalah default yaitu public.

Pada kebutuhan saya nantinya user tidak perlu melakukan proses login, dengan beberapa table yang bisa diakses pada schema public tanpa melakukan login. Untuk itu saya buat role di PostgreSQL bernama web_public yang nantinya memiliki hak akses ke salah satu table bernama informasi_publik. Agar kebutuhan ini terpenuhi maka saya harus login sebagai super user ke PostgreSQL, di mana prosesnya bisa dijabarkan berikut ini:

# su - postgres
postgres $ psql
psql > \c mydb
You are now connected to database "mydb" as user "postgres".
psql > create role web_public nologin;
CREATE ROLE
epns=# grant web_public to mydb;
GRANT ROLE
epns=# grant usage on schema public to web_public;
GRANT
epns=# grant select on public.informasi_public to web_public;

Saya menggunakan Debian Jessie 64 dan memilih postgrest-0.4.2.0-ubuntu-x32.tar.xz dari https://github.com/begriffs/postgrest/releases/latest. Sebelum itu dilakukan terlebih dahulu instalasi libpq-dev yang merupakan library PostgreSQL. Adapun alasannya memilih ini, karena menggunakan pilihan yang lain tidak bisa berjalan 😦

# apt-get install libpq-dev
# wget https://github.com/begriffs/postgrest/releases/download/v0.4.2.0/postgrest-0.4.2.0-ubuntu-x32.tar.xz
# tar xfJ postgrest-0.4.2.0-ubuntu-x32.tar.xz
# ./postgrest --help

Langkah selanjutnya adalah konfigurasi terhadap koneksi ke database dan untuk ini saya buat sebuah file bernama testkonfigurasi.conf dengan isinya:

db-uri = "postgres://mydbuser:mydbpass@localhost/mydb"
db-schema = "public"
db-anon-role = "web_public"

Kemudian server PostgresREST dijalankan.

# ./postgres testkonfigurasi.conf
Listening on port 3000
Attempting to connect to the database...
Connection successful

Untuk testing diakses dengan curl

$ curl localhost:3000/informasi_public

Referensi:

Upgrade PostgreSQL v 9.1 to v 9.4

Tag

Ada beberapa kebutuhan yang memaksa untuk melakukan proses upgrade PostgreSQL, di mana saat ini menggunakan Debian jessie.

# apt-get install postgresql-9.4

Kemudian menggunakan tool pg_dropcluster maka terlebih dahulu mematikan dahulu yang baru supaya bisa menggunakan tool pg_ugpradecluster.

Mematikan dulu cluster yang baru …

# pg_dropcluster --stop 9.4 main

Kemudian melakukan proses upgradecluster …

# pg_upgradecluster -v 9.4 9.1 main

Namun didapatkan pesan error …

Stopping old cluster...
pg_ctl: server does not shut down
HINT: The "-m fast" option immediately disconnects sessions rather than
waiting for session-initiated disconnection.
Error: Could not stop old cluster

Saya kira dengan mengulang lagi bisa berjalan, ternyata tidak …

# pg_upgradecluster -v 9.4 9.1 main
psql: FATAL: the database system is shutting down
psql: FATAL: the database system is shutting down
Use of uninitialized value $out in pattern match (m//) at /usr/share/perl5/PgCommon.pm line 915.
psql: FATAL: the database system is shutting down
Use of uninitialized value $out in pattern match (m//) at /usr/share/perl5/PgCommon.pm line 921.
Use of uninitialized value $ctype in scalar chomp at /usr/share/perl5/PgCommon.pm line 924.
Use of uninitialized value $collate in scalar chomp at /usr/share/perl5/PgCommon.pm line 925.
Error: could not get cluster locales

Kemudian dicoba untuk mematikan service postgresql yang lama dan dilanjutkan dengan menjalankan proses ulang …

# service postgresql stop
# service postgresql stop
# pg_upgradecluster -v 9.4 9.1 main
Disabling connections to the old cluster during upgrade...
Restarting old cluster with restricted connections...
Creating new cluster 9.4/main ...
config /etc/postgresql/9.4/main
data /var/lib/postgresql/9.4/main
locale en_US.UTF-8
Flags of /var/lib/postgresql/9.4/main set as ---------------C
port 5433
Disabling connections to the new cluster during upgrade...
Roles, databases, schemas, ACLs...
Fixing hardcoded library paths for stored procedures...
Upgrading database template1...
Analyzing database template1...
Fixing hardcoded library paths for stored procedures...
Upgrading database epns_lat...
Analyzing database epns_lat...
Fixing hardcoded library paths for stored procedures...
Upgrading database epns_latihan...
Analyzing database epns_latihan...
Fixing hardcoded library paths for stored procedures...
Upgrading database postgres...
Analyzing database postgres...
Fixing hardcoded library paths for stored procedures...
Upgrading database epns...
Analyzing database epns...
Re-enabling connections to the old cluster...
Re-enabling connections to the new cluster...
Copying old configuration files...
Copying old start.conf...
Copying old pg_ctl.conf...
Copying old server.crt...
Copying old server.key...
Stopping target cluster...
Stopping old cluster...
Disabling automatic startup of old cluster...
Configuring old cluster to use a different port (5433)...
Starting target cluster on the original port...
Success. Please check that the upgraded cluster works. If it does,
you can remove the old cluster with

pg_dropcluster 9.1 main

Kemudian test bahwa data yang di upgrade memiliki data yang benar, karena kalau tidak maka selamat tinggal data kalau tidak di backup lebih dahulu 😀
Bila sudah yakin benar, maka baru yang cluster 9.1 di hapus …

# pg_dropcluster 9.1 main

Referensi:

Instalasi Ajenti di Debian 8

Instalasi Ajenti di Debian 8 sangat mudah …

# wget http://repo.ajenti.org/debian/key -O- | apt-key add -
# echo "deb http://repo.ajenti.org/debian main main debian" >> /etc/apt/sources.list
# apt-get update && apt-get install ajenti
# service ajenti restart

Namun ternyata tidak berjalan sempurna, terdapat error yang menyebabkan di instalasi saya hanya tampil halaman tanpa menu. Kemudian mendapatkan informasi permasalahan saat instalasi di Debian 8 Jessie, karena ada bagian module python yang digunakan ajenti harus di upgrade dengan menggunakan jessie-backports.

Untuk itu tinggal gunakan jessie-backports dengan panduan di https://backports.debian.org/Instructions/ kemudian lakukan upgrade gevent-socketio.

# apt-get -t jessie-backports install python-gevent
# wget -c http://repo.ajenti.org/debian/pool/ubuntu/g/gevent-socketio/python-gevent-socketio_0.3.7.99-1_all.deb
# dpkg -i python-gevent-socketio_0.3.7.99-1_all.deb
# apt-get install ajenti

Lalu silahkan akses lagi dan kali ini akan muncul menu dll.

Sumber:

Backup Data dan Aplikasi SPSE Ke Google Drive Menggunakan rclone

Tag

Selain melakukan backup ke hardisk eksternal, untuk amannya juga memiliki backup ke server lain yang tidak satu lokasi dengan server production; dalam hal ini saya memilih untuk menggunakan layanan milik Google menggunakan Google Drive. Alasannya? cepat dan gratis 😀

Untuk itu setelah memiliki account di Google, dilanjutkan dengan melakukan penginstalan rclone di server LPSE menggunakan petunjuk seperti yang dituliskan di instalasi rclone dan menghubungkannya dengan Google Drive pada tulisan sebelumnya.

Setelah itu buat sebuah file shell untuk melakukan copy aplikasi spse yang kita miliki, misalnya di dengan cara membuat file di /home/backuptogdrive-mingguan.sh.


#/bin/sh
# lakukan backup ke google drive setiap minggu
# backup etc
/usr/sbin/rclone copy /etc/ gdrive:/backupsite/etc/ 2> /home/backuptogdrive-etc.log
# backup aplikasi epns 3.6, jangan copy logs dan git
/usr/sbin/rclone --exclude='/logs/' --exclude='/.git/' copy /home/appserv/epns-prod-3.6sp3/ gdrive:backupsite/epns-prod-3.6sp3/ 2> /home/backuptogdrive-app36.log
# backu aplikasi epns 4.1, jangan copy logs dan git
/usr/sbin/rclone --exclude='/webapp/logs/' --exclude='/.git/' copy /home/appserv/spse-prod-4.1/ gdrive:backupsite/spse-prod-4.1/ 2> /home/backuptogdrive-app4.log

Silahkan lakukan penyesuaian yang disesuaikan dengan instalasi di masing-masing server.

Langkah berikutnya tinggal buat agar bisa dieksekusi dan hanya bisa dieksekusi oleh root.


# chown root:root /home/backuptogdrive-mingguan.sh
# chmod o-rwx,u+x /home/backuptogdrive-mingguan.sh

Kemudian tambahkan di crontab …


# backup ke google drive setiap hari sabtu jam 1.00
0 1 * * 6 /home/backuptogdrive-mingguan.sh

Selesai dan check di Google Drive.

NB: saya tidak memasukkan sisi keamanan dengan menambahkan enkripsi pada aplikasi dan datanya, silahkan dilakukan eksplorasi sendiri