Restore Single Database dari Hasil Full MySQL Dump

Tag

,

Pada mesin yang kami handle agar bisa dilakukan proses tracking maka dilakukan full dump terhadap semua database di MySQL. Permasalahan terjadi saat akan memindahkan mesin dan kami hanya ingin satu database yang direstore.

Misalkan database yang ingin direstore adalah db_main dan nama file hasil dump adalah mysqldumpall.sql, maka langkah yang dilakukan tinggal lewat shell:

$ mysql -u root -p --one-database db_main < mysqldumpall.sql

Mengakses MS Access Database Di Ubuntu

Kebutuhan salah satu client untuk melakukan proses migrasi dari sistem yang lama menggunakan MS Access ke sistem yang baru berbasiskan web based application. Sayangnya secara default LibreOffice Base tidak dapat melakukan akses terhadap MS Access. Untungnya terdapat driver JDBC untuk itu menggunakan UCanAccess.

Untuk cara lengkapnya bisa dilihat di sini:

  1. http://askubuntu.com/questions/187389/is-it-possible-to-open-an-access-2010-database-file-without-using-wine-or-virtua/519571
  2. http://ucanaccess.sourceforge.net/site.html

java 64 error file not found debian 7

Kasus yang aneh saat ingin melakukan instalasi java dari oracle melalui http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html dan mengambil yang untuk 64 bit, setelah saya melakukan instlasi open-jdk-7. Menggunakan wget:

wget --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u74-b02/jdk-8u74-linux-x64.tar.gz

Langkah selanjutnya adalah melakukan extract


# mv jdk-8u74-linux-x64.tar.gz /usr/local/src
# cd /usr/local/src/
# tar -zxf jdk-8u74-linux-x64.tar.gz
# cd jdk1.8.0_74/bin/
# ./java

Setelah melakukan eksekusi didapatkan error kurang lebih: No such file or directory.

Dari beberapa referensi didapatkan bahwa hal ini terjadi karena terdapat requirement file yang tidak didapatkan. Pada kasus ini didapatkan hasil …

# strings java
/lib64/ld-linux-x86-64.so.2
libpthread.so.0
_Jv_RegisterClasses
libjli.so
__gmon_start__
JLI_Launch
libdl.so.2
libc.so.6
__libc_start_main
lib.so
$ORIGIN/../lib/amd64/jli:$ORIGIN/../lib/amd64
SUNWprivate_1.1
GLIBC_2.2.5
fff.
fffff.
l$ L
t$(L
|$0H
1.8.0_74-b02
java

Patut dilihat pada bagian baris /lib64/ld-linux-x86-64.so.2, rujukan yang bisa dijadikan acuan tentang file library yang menjadi referensi berjalannya java, yang pada saat itu tidak ada di OS yang digunakan.

Untuk mendapatkan paket file ini dari beberapa penelusuran didapatkan ada paket yang mesti diinstal, yaitu libc6-amd64.

# apt-get install libc6-amd64
# /usr/local/src/jdk1.8.0_74/bin/java -version
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

Langkah selanjutnya tinggal melakukan upgrade terhadap java yang aktif pada lingkungan debian menggunakan update-alternatives.

Sumber:

  1. https://packages.debian.org/search?keywords=libc6
  2. http://stackoverflow.com/questions/9467952/what-libraries-are-needed-for-this-binary-to-run
  3. http://unix.stackexchange.com/questions/45277/executing-binary-file-file-not-found

 

Let’s Encrypt Untuk Aplikasi LPSE SPSE 3.6

Menggunakan instalasi yang dilakukan pada tulisan sebelumnya maka selanjutnya adalah untuk instalasi pada LPSE  3.6.

Pada arsitektur aplikasi LPSE (SPSE 3.6), kita bisa melakukan pemilihan apakah implementasi SSL akan dilakukan di tomcat server atau pada Apache2. Dari beberapa permasalahan sejenis pada literatur (bisa dilihat di bawah) ternyata akan lebih mudah apabila dilakukan saja pada Apache2, jadi proses yang terjadi adalah CLIENT > HTTPS > Proxy Apache2 > Aplikasi. Tentu saja ada beberapa implikasi keamanan pada perancangan seperti ini, selain itu aplikasi SPSE ada pada server yang sama.

Namun kendala yang terjadi adalah bahwa aplikasi SPSE ini berjalan di belakang Apache2 (Apache2 berlaku sebagai proxy), sehingga agar Let’s Encrypt bisa melakukan proses verifikasi kepemilikan domain kita harus menyediakan akses dari Internet terhadap file hasil generate Let’s Encrypt yang ada pada folder  .well-known/ (sila lihat tulisan sebelumnya) melalui URL LPSE sehingga Let’s Encrypt dapat mengaksesnya ke web.lpse.go.id/eproc/.well-known/<file-lainnya>.

Banyak cara untuk solusinya, namun saya memilih agar tidak sampai layanan berhenti atau saya harus terlalu banyak melakukan perubahan. Karena itu salah satu pemecahan yang dipilih adalah dengan menambahkan perintah redirect, sehingga saat Let’s Encrypt melakukan proses validasi maka apache2 akan melakukan redirect ke folder .well-known.

... (pada file virtual host SPSE) ...
# Let's encrypt
Redirect /.well-known/ http://web.lpse.go.id/eproc/.well-known/
... (baris config yang lain) ...

Lalu melakukan generate certkey …

# ./letsencrypt-auto certonly --webroot -w /web/root/path/eprocnya -d web.lpse.go.id

Kemudian akan muncul beberapa dialog seperti pengisian email dan user agreement. Apabila berhasil akan muncul folder untuk certificate key yang bisa digunakan di Apache2 server SPSE, biasanya ada di folder /etc/letsencrypt/live/web.lpse.go.id/.

Langkah selanjutnya adalah menambahkan setting virtual host agar melayani HTTPS pada file config virtual host web SPSE yang sudah ada, kurang lebih seperti ini…

<VirtualHost *:443>
SSLEngine On
LogLevel warn
SSLCertificateKeyFile /etc/letsencrypt/live/web.lpse.go.id/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/web.lpse.go.id/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/web.lpse.go.id/chain.pem
CustomLog /var/log/apache2/ssl_access_kalteng.log
RedirectMatch ^/$ /eproc/
RedirectMatch ^/latihan$ /latihan/
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/x-httpd-php
SetInputFilter DEFLATE
SetOutputFilter DEFLATE
</VirtualHost>

Kemudian pastikan bahwa module ssl sudah on dan restart service apache2.

# a2enmod ssl
# service apache2 restart

Silahkan lakukan test untuk ini dengan mengakses https://web.lpse.go.id dan pastikan firewall tidak melakukan blocking ke port HTTPS di 443.

Sumber:

  1. http://www.apachetutor.org/admin/reverseproxies
  2. https://maximilian-boehm.com/hp2121/Create-a-Java-Keystore-JKS-from-Let-s-Encrypt-Certificates.htm
  3. https://www.digitalocean.com/community/tutorials/how-to-secure-haproxy-with-let-s-encrypt-on-ubuntu-14-04
  4. http://serverfault.com/questions/505316/ssl-setup-with-apache-in-front-of-tomcat
  5. https://confluence.atlassian.com/jira/integrating-jira-with-apache-using-ssl-203395380.html
  6. https://community.letsencrypt.org/t/how-to-use-the-certificate-for-tomcat/3677/2
  7. http://serverfault.com/questions/505316/ssl-setup-with-apache-in-front-of-tomcat
  8. http://serverfault.com/questions/486042/use-apache-as-a-https-to-http-proxy

Let’s Encrypt Pada Apache2 Debian 6

Let’s Encrypt merupakan layanan yang menyediakan sertifikat SSL gratis, singkatnya demikian. Namun langkah instalasi yang mudah tersebut tidak dapat berjalan dengan baik saat dilaksanakan melalui Debian 6 karena paket Python serta beberapa dependencies tidak update. Karena itu di server saya tidak dapat menggunakan layanan let’s encrypt dengan salah satu plugin apache dan harus secara manual melakukan generate sertifikatnya saja.

Untuk melakukannya saya harus melakukan instalasi git …

# apt-get install git

Langkah berikutnya adalah melakukan cloning repository Let’s Encrypt

# git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
# cd /opt/letsencrypt
# ./letsencrypt-auto --help

Langkah berikutnya adalah melakukan generate sertifikat dengan model certonly.

# ./letsencrypt-auto certonly --webroot -w /var/www/webku.com -d webku.com

Pastikan bahwa webku.com dapat diakses dan lestencrypt akan membuat sebuah folder pada web root dengan nama folder .well-known/<karakter lainnya>, pastikan bahwa folder tersebut dan isi lainnya dapat diakses publik. Agar bisa aktif pula pada domain dengan CNAME http://www.<domainnya&gt; maka tambahkan lagi perintah di atas dengan -d www·webku.com.

Apabila berhasil akan ada beberapa dialog yang meminta email dan juga user agreement, pastikan bahwa hal tersebut terpenuhi hingga kemudian muncul pernyataan berhasil.

Hasil generate oleh Let’s Encrypt akan terdapat pada folder /etc/letsencrypt/live/webku.com/ yang nanti akan digunakan oleh apache2.

Dilanjutkan setting pada apache2, dengan melakukan aktifasi HTTPS di Apache; modul ssl harus diaktifkan.

# a2enmod ssl

Kemudian pastikan bahwa port 443 diaktifkan, pada setting di server saya harus melakukan deklarasi secara eksplisit terhadap port untuk HTTPS …


# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen ABC.DEF.GHI.JKL:443

Kemudian tambahkan pada bagian virtual host agar apache2 menggunakan certificate yang telah digenerate menggunakan Let’s Encrypt.

... (isi virtual host lain ) ...
SSLCertificateKeyFile /etc/letsencrypt/live/webku.com/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/webku.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/webku.com/chain.pem
... (isi virtual host lain) ...

Langkah selanjutnya adalah restart service apache2.
service apache2 restart

Jangan lupa pada firewall agar membuka akses ke port HTTPS di 443. Karena sya menggunakan shorewall maka saya buka akses tersebut di /etc/shorewall/rules


HTTPS/Accept net $FW

Tentu saja untuk testing pastikan sudah bisa diakses menggunakan HTTPS.

Sumber:

Login Tanpa Password Menggunakan ssh

Tag

Untuk melakukan ini kita harus melakukan generate kunci private dan publik pada mesin yang kita gunakan serta hasil generate key yang menghasilkan kunci publik akan di-upload ke server.

Pada komputer saya:

$ ssh-keygen -t rsa

Pada permintaan untuk melakukan entry passphrase saya tidak memasukkan password, kecuali kita menginginkan security yang lebih maka disarankan untuk dimasukkan permintaan untuk password. Namun disini karena komputer saya hanya saya yang menggunakan dan kebutuhan saya untuk password-less, maka saya tidak memasukkannya.

Kemudian hasil dari generate ssh-keygen tersebut akan menghasilkan dua buah file ( default akan ada di ~/.ssh/ ) dengan nama file: id_rsa dan id_rsa.pub dengan masing-masing file merupakan kunci private dan kunci public. Untuk kunci publik akan saya copy-kan ke server yang saya kelola.

Sekarang saya tinggal copy-kan ke server yang beralamat di AAA.BBB.CCC.DDD port 7890 dan user saya adalah ‘usersaya’.

$ cat ~/.ssh/id_rsa.pub | ssh AAA.BBB.CCC.DDD -p 7890 -l usersaya 'cat >> ~/.ssh/authorized_keys'

Apabila tidak ada masalah maka akan muncul permintaan password, saat diketikkan password maka kunci publik telah di-copy-kan ke server pada file ~/.ssh/authorized_keys.

Untuk mengujinya saya kemudian login seperti biasa dan semestinya permintaan untuk password tidak muncul lagi.

nginx Menggantikan Apache di Paket lampp/xampp

Tag

, ,

Untuk tulisan ini saya memiliki XAMPP yang telah digunakan untuk melakukan developing beberapa project aplikasi berbasis WEB menggunakan Apache + MySQL + PHP5.

Akan tetapi dikarenakan komputer yang semakin menua, serta sudah beberapa kali komputer yang saya gunakan untuk melakukan pengembangan mengalami gagal loading akibat proses yang terlalu berat saya pikir sudah saatnya untuk melakukan perubahan dengan cara menggantikan komponen Apache dengan Nginx. Akan tetapi untuk MySQL dan komponen lain yang saya anggap penting seperti PHPMyAdmin saya tetap menggunakan milik XAMPP. Baca lebih lanjut

Instalasi dan Upgrade Apache2 modsecurity Di Debian 6

Tag

,

Ada fungsi dari modsecurity yang ingin saya gunakan, tapi tidak dapat digunakan pada modsecurity yang dimiliki oleh paket standar milik Debian 6. Fungsi ini adalah penggunaan SecReadStateLimit yang ada pada modsecurity versi 2.5.13 yang digunakan untuk menghalau Slow HTTP Dos Attacks, sedangkan paket yang saya gunakan adalah versi 2.5.12.

Dari beberapa searching di google didapatkan bahwa backports package yang dimiliki oleh Debian 6 telah melakukan upgrade terhadap modsecurity ke versi 2.6.6. Hal ini cukup menggembirakan, sehingga saya putuskan untuk menambahkan alamat repository backports untuk Debian 6 ke sources.list.

# nano /etc/apt/sources.list

Isi yang ditambahkan:

deb http://kambing.ui.ac.id/debian-backports squeeze-backports main

Kemudian saya lakukan update untuk paket Debian agar bisa menjangkau paket ini, setelah itu melakukan instalasi.

# apt-get update
# apt-get -t squeeze-backports install libapache-mod-security

Karena apache2 yang digunakan adalah versi standar ( lagi-lagi yang versi lama kalau Debian sih😀 ) maka akan terdapat bug pada setting load untuk modsecurity ini karena tidak dapat menemukan libxml2.so.2 secara otomatis. Saya melakukan Edit pada file /etc/apache2/mods-available/mod-security.load dan ubah baris ke satu menjadi …

LoadFile /usr/lib/libxml2.so.2

Setelah itu saya mengaktifkan modsecurity dengan cara melakukan copy file configurasi modsecurity yang ada di /etc/modsecurity.


# cp /etc/modsecurity/modsecurity.conf.example /etc/modsecurity/modsecurity.conf
# nano /etc/modsecurity/modsecurity.conf

Saya ubah nilai SecRuleEngine menjadi On.


SecRuleEngine On

Langkah selanjutnya adalah menambahkan modsecurity Core Rule Set yang compatible dengan versi yang digunakan sekarang ( versi 2.6.6.6~bpo60+1 – didapatkan dari perintah dpkg -s libapache-mod-security | grep Version ). Core Rule Set adalah aturan yang nantinya digunakan oleh modsecurity saat melakukan analisa terhadap request yang dilakukan oleh client dan pihak owasp yang baik hati telah menyediakan rule yang bisa kita gunakan dengan gratis.


# mkdir -p /home/owasp-csr
# cd /home/owasp-csr
# wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/v2.2.5 -O owasp-crs.tar.gz
# tar -zxvf owasp-crs.tar.gz
# chmod -R 644 /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52

Saya membuat folder baru di /home/owasp-csr sebagai tempat download CRS dan saya extract hasil downloadnya yang dalam hal ini ada di SpiderLabs-owasp-modsecurity-crs-5c28b52, lalu saya buat symbolic links ke /etc/modsecurity semua file CRS yang ada.

# cd /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52/base_rules/
# for f in * ; do ln -s /home/owasp-csr/modsecurity-April2014/SpiderLabs-owasp-modsecurity-crs-5c28b52/base_rules/$f /etc/modsecurity/$f ; done
# cd /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52/optional_rules/
# for f in * ; do ln -s /home/owasp-csr/modsecurity-April2014/SpiderLabs-owasp-modsecurity-crs-5c28b52/optional_rules/$f /etc/modsecurity/$f ; done

Tidak lupa untuk role utama milik CRS juga diset dan dibuatkan symlink ke /etc/modsecurity.

# cd /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52/
# cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf
# ln -s /home/owasp-csr/SpiderLabs-owasp-modsecurity-crs-5c28b52/modsecurity_crs_10_setup.conf /etc/modsecurity/modsecurity_crs_10_setup.conf

Untuk menghindari pesan kesalahan dengan bunyi kurang lebih: Invalid command ‘RequestHeader’ maka Saya lakukan aktifasi terhadap modules apache Header dan dilanjutkan dengan module modsecurity.


# a2enmode headers
# a2enmode mod-security

Salah satu cara untuk melakukan testing apakah sudah berjalan, maka saya tambahkan sebuah rule yang dituliskan pada bagian paling akhir dar file /etc/modsecurity/modsecurity.conf:


SecRule ARGS "HARUSNYA_DENY"\
"phase:1,log,deny,status:503"

Kemudian Apache di restart …


# service apache2 restart

Untuk melakukan test pada URL saya, saya coba dengan menggunakan rule yang saya tambahkan barusan.


http://domain.saya.com/test=HARUSNYA_DENY

Kalau berjalan maka tampilan akan menampilkan pesan error. Apabila dilihat pada file log yang default di /var/log/apache2/modsec_audit.log maka akan tampil log kurang lebih …


Message: Access denied with code 503 (phase 1). Pattern match "HARUSNYA_DENY" at ARGS:test. [file "/etc/modsecurity/modsecurity.conf"] [line "208"]
Action: Intercepted (phase 1)
Stopwatch: 1398326266940342 922 (- - -)
Stopwatch2: 1398326266940342 922; combined=135, p1=15, p2=0, p3=0, p4=0, p5=120, sr=0, sw=0, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.6.6 (http://www.modsecurity.org/); OWASP_CRS/2.2.5.
Server: Apache

Sumber:

Check Dulu Baru Action

Tag

,

Fileserver yang kami gunakan adalah nas4free dengan space mencapai 1,8 TB serta dipersenjatai RAID 5.

Namun hal yang paling menyedihkan adalah, karena keterbatasan dana maka sistem tidak dipersenjatai dengan backup yang mencukupi. Hal ini semestinya dilakukan mengingat RAID digunakan bukanlah sebagai salah satu solusi untuk backup (lengkapnya bisa ditelusuri dari sumber diskusi berikut di servervault).

Maka disaat hari yang genting, diawali dengan komplain dari Rekan kerja saat tidak dapat mengakses fileserver di jaringan.

Check-up standard dilakukan dengan mengakses langsung ke WEB Administration (yang untungnya sangat membantu) pada bagian Status > Disks. Didapatkan disitu dari 3 disks ada 2 disks yang memiliki status MISSING😦 .

Berdasarkan pengalaman dan dari dokumentasi nas4free didapatkan cara untuk melakukan rebuild disks tersebut, tapi karena 2 dari 3 RAID 5 maka peluangnya adalah sangat kecil.

Hingga tanpa sengaja melakukan checking terhadap dmesg yang dimiliki oleh nas4free yang menggunakan FreeBSD 9.X. 

Ternyata pada saat startup tidak mendapati 2 hardisk yang seharusnya terdeteksi.

Mesin di restart dan masuk ke BIOS; BENAR. Hardisk dengan SATA connector yang saya gunakan tidak dideteksi juga oleh BIOS.

Maka di check dan recheck, konektor dari hardisk ke board agak kendor. Hal ini salah satunya mungkin karena masalah cuaca, perbedaan suhu atau karena memang mesin yang kami gunakan bukan untuk server😀 ( kami hanya menggunakan komputer PC biasa dengan memory 2 GB dan 3 buah hardisk SATA saja ).

Konektor diperbaiki dan dipasang lagi dengan menambahkan ikatan pada kabel konektor dan kali ini semoga lancar jaya :) 

Selanjutnya komputer dihidupkan dan server kembali berjalan seperti biasa, walaupun nas4free complaint akibat nilai hash dari RAID disks berbeda. Tapi tidak masalah karena proses rebuild memang biasa harus dilakukan.

Tidak bisa dipikirkan apa jadinya kalau tadi langsung saja melakukan proses recovery tanpa lebih dahulu melakukan checking terhadap permasalahan awal, yaitu keberadaan hardisk ;) 

 

Ikuti

Kirimkan setiap pos baru ke Kotak Masuk Anda.