Category Archives: Information Technology

Google Geotargeting

Beberapa waktu yang lalu, saya mengganti alamat blog ini dari yang tadinya koole.web.id menjadi blog.ariw.net. Proses perpindahan domain ini sebenernya ngga sulit, cuma memang ada beberapa langkah yang sedikit “techie” semisal melakukan “search and replace” di database, dan langkah yang paling penting adalah memberikan “301 redirect” pada domain yang lama. 301 redirect gunanya supaya search engine seperti Google ngga meng-index lagi domain yang lama, tapi mulai meng-index domain baru tanpa mengorbankan “score SEO” yang dimiliki domain lama.

Ah tapi saya ngga akan terlalu jauh ngebahas soal itu. Yang mau saya bahas kali ini adalah tentang Google Geotargeting. Sebenernya saya tau tentang istilah ini juga baru beberapa jam yang lalu. Yaitu ketika saya mulai penasaran, kok pengunjung yang datang dari Google ke blog ini sekarang NGGA ADA? Dari yang tadinya ~50-60 hits per hari (yang datang dari Google) sekarang cuma 0 atau paling banyak 1. Setelah Googling ternyata dugaan saya bener, Google memberikan hasil pencarian berdasarkan Country Code Top Level Domain, selain juga berdasarkan bahasa yang digunakan di website, IP address, dan beberapa faktor lainnya.

Jadi misalnya gini, domain saya sebelumnya adalah koole.web.id yang merupakan Country Code Top Level Domain (ccTLD) Indonesia (.id), sehingga website saya nantinya akan (lebih sering) muncul pada hasil pencarian user yang berasal dari Indonesia atau berbahasa Indonesia. Nah berhubung domainnya sekarang menggunakan TLD .net maka website ini pun ngga lagi dikhususkan untuk user yang berbahasa atau berlokasi di Indonesia. Tapi bukan berarti domain .net ini ngga muncul sama sekali di Indonesia, cuma memang Google akan memberikan “weight / score” tersendiri.

Untungnya Google memberikan fasilitas “Geographic target” di Google Webmaster Tools. Kita harus daftar dulu dan verifikasi kepemilikan domain untuk menggunakan fasilitas ini. Jadi kalau kita udah mengeset Geographic target, misalnya ke Indonesia, walaupun domain yang digunakan TLD general atau negara lain, maka Google akan memberikan score lebih kepada domain tersebut untuk ditampilkan pada hasil pencarian user Indonesia. Untuk mengeset Geographic target di Google Webmaster Tools:

  1. Di Home Page Webmaster Tools, klik website yang diinginkan (kita bisa menambahkan banyak site / domain di Webmaster Tools)
  2. Pada Site Configuration, klik Settings
  3. Di bagian Geographic target, pilih negara yang diinginkan. Kalau Anda ngga mau domainnya terasosiasi dengan negara atau region tertentu, maka pilih Unlisted

Untuk mengetahui lebih lengkap tentang Geotargeting, faktor-faktor yang digunakan, dan daftar domain International / General bisa merujuk ke halaman ini:http://support.google.com/webmasters/bin/answer.py?hl=en&answer=62399

Merubah Timezone CentOS / Red Hat

Untuk mengetahui waktu dan timezone di server:

[root@lifebit ~] date 
Sun Feb 19 21:42:06 CST 2012

Dari contoh di atas terlihat bahwa server menggunakan timezone CST, atau Central Standard Time (GMT -6). Untuk merubah timezone menjadi Indonesia / Jakarta (GMT +7), execute perintah ini:

[root@lifebit ~] ln -s /usr/share/zoneinfo/Asia/Jakarta /etc/localtime

Kalau kita lihat sekarang, waktu di server udah menggunakan timezone lokal Jakarta:

[root@lifebit ~] date Mon Feb 20 10:49:31 WIT 2012

Setting SSH Menggunakan Certificate (Debian – Mac)

ssh_rsaTutorial ini akan menunjukkan gimana caranya mengkonfigurasi SSH agar bisa login menggunakan certificate tanpa password, pada komputer client Mac dan server Debian. Harusnya juga bisa untuk OS lainnya tapi saya belum pernah coba. Alasan orang menggunakan certificate untuk SSH mereka rata-rata adalah demi keamanan, karena orang yang ngga punya private key ngga akan bisa login ke server sekalipun di-brute force attack. Tapi alasan saya pribadi adalah karena males mengetikkan password di terminal, ehehe..

Pertama, buka dulu program Terminal yang ada di Mac (⌘ + spasi dan ketik “terminal”) lalu ketikkan perintah ini untuk menggenerate key pair (private & public key):

ssh-keygen -t rsa -b 2048

Kita akan diberikan beberapa pertanyaan:

Enter file in which to save the key (/home/username/.ssh/id_rsa): (Tekan Enter) 
Enter passphrase (empty for no passphrase): (Tekan Enter) 
Enter same passphrase again: (Tekan Enter)

Sampai sini di komputer Mac kita udah ada pasangan key, yaitu private key (id_rsa) dan public key (id_rsa.pub) yang lokasinya ada di /Users/YOURUSERNAMEHERE/.ssh/. Private key (id_rsa) bisa diibaratkan anak kunci yang selalu kita bawa kemana-mana untuk membuka gembok server (public key / id_rsa.pub). Private key ada di sisi client, sedangkan public key kita letakkan di server. Masih di Terminal, ketikkan perintah ini:

cat /Users/YOURUSERNAMEHERE/.ssh/id_rsa.pub

Perintah cat fungsinya untuk melihat isi file id_rsa.pub. Kemudian copy isi file id_rsa.pub tadi (ctrl + c) dan nantinya akan kita paste di server. Berikutnya login ke server menggunakan SSH, lalu edit / paste isi file id_rsa.pub tadi kedalam file ini:

vi /home/YOURUSERNAMEHERE/.ssh/authorized_keys

Langkah terakhir, edit file /etc/ssh/sshd_config dan tambahkan / ubah sehingga jadi begini:

RSAAuthentication yes 
PubkeyAuthentication yes 
PasswordAuthentication no 
UsePAM no

Seperti contoh di atas, PasswordAuthentication dan UsePAM saya set menjadi no gunanya untuk mendisable login menggunakan username & password, sehingga certificate adalah satu-satunya cara untuk masuk ke server. Untuk login ke server caranya begini:

ssh [email protected]

Karena file id_rsa (private key) tadi lokasinya masih default, yaitu di /Users/YOURUSERNAMEHERE/.ssh/ jadi kita ngga perlu mendefinisikan lagi lokasinya, SSH akan mencari otomatis di lokasi tersebut.

Convert DMG ke ISO (Mac OS X)

Kadang kita perlu mengkonversi file DMG ke ISO entah karena program yang ngga support DMG, file tersebut akan di gunakan di MS Windows, atau karena alasan lain. Ngga perlu download program shareware yang katanya bisa mengkonversi DMG ke ISO, karena kita bisa melakukannya langsung di Terminal Mac OS X, menggunakan perintah hdiutil. Pertama buka dulu program Terminal (⌘ + spasi dan ketik “terminal”), kemudian;

hdiutil convert imagefile.dmg -format UDTO -o imagefile.iso

Perintah ini sebenarnya akan membuat file baru ber-extension .cdr, sehingga filenya menjadi imagefile.iso.cdr. Tapi kita tinggal rename aja jadi imagefile.iso dengan perintah ini;

mv imagefile.iso.cdr imagefile.iso

Selesai! Gampang, kan? 😀

Instalasi OpenVPN Pada Debian & Ubuntu

Instalasi OpenVPN ini dikerjakan pada mesin Debian. Harusnya juga bisa untuk turunan Debian lainnya seperti Ubuntu, Mint, dll. Tujuan saya menggunakan OpenVPN biasanya untuk tunneling aja, menggunakan IP address luar, mem-bypass restriksi oleh ISP, dll. Fitur enkripsi dan login menggunakan certificate akan saya disable supaya koneksi semakin ringan dan stabil, lalu sebagai gantinya proses login nanti akan menggunakan username & password. Enkripsi cuma akan menambah overhead di trafik. Cek dulu TUN / TAP sudah enabled apa belum;

root@starscream:~# cat /dev/net/tun 
cat: /dev/net/tun: File descriptor in bad state

Kalau outputnya seperti di atas, berarti TUN / TAP sudah enabled. Jadi kita bisa lanjut ke proses instalasi.

apt-get install openvpn pam-devel

Pada beberapa instalasi Debian terbaru, mungkin akan muncul error seperti ini:

E: Unable to locate package pam-devel

Kalau kasusnya seperti itu, paket pam-devel ngga perlu diinstall. Copy contoh file konfigurasi yang udah ada ke /etc/openvpn untuk selanjutnya kita edit;

cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/
chmod -R 755 /etc/openvpn/
cd /etc/openvpn/easy-rsa/2.0/

Lalu kita edit file vars (optional). Biasanya saya edit jadi seperti ini;

vi vars
# Increase this to 2048 if you 
# are paranoid. This will slow 
# down TLS negotiation performance 
# as well as the one-time DH parms 
# generation process. 
export KEYSIZE=384 
# In how many days should the root CA key expire? 
export CAEXPIRE=3650 
# In how many days should certificates expire? 
export KEYEXPIRE=3650 
# These are the default values for fields 
# which will be placed in the certificate. 
# Don't leave any of these fields blank. 
export KEYCOUNTRY="ID" 
export KEYPROVINCE="JKT" 
export KEYCITY="Jakarta" 
export KEYORG="blog.ariw.net" 
export KEYEMAIL="[email protected]" 
export KEYCN=vpn.blog.ariw.net 
export KEYNAME=blog.ariw.net 
export KEYOU=blog.ariw.net 
export PKCS11MODULEPATH=changeme 
export PKCS11PIN=666666

setelah di-edit dan save, lalu;

source ./vars
./vars
./clean-all
./build-ca
Generating a 384 bit RSA private key.
++++++++++++++++++ ................++++++++++++++++++ 
writing new private key to 'ca.key' 
----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- 
Country Name (2 letter code) [ID]: 
State or Province Name (full name) [JKT]: 
Locality Name (eg, city) [Jakarta]: 
Organization Name (eg, company) [blog.ariw.net]: 
Organizational Unit Name (eg, section) [blog.ariw.net]: 
Common Name (eg, your name or your server's hostname) [vpn.blog.ariw.net]: 
Name [blog.ariw.net]: 
Email Address [[email protected]]:
./build-key-server vpn.blog.ariw.net

Perhatikan ketika execute perintah build-key-server di atas, value nya harus sama dengan Common Name, atau KEY_CN yaitu vpn.blog.ariw.net

Generating a 384 bit RSA private key ............++++++++++++++++++ ..++++++++++++++++++ 
writing new private key to 'vpn.blog.ariw.net.key' ----- 
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- 
Country Name (2 letter code) [ID]: 
State or Province Name (full name) [JKT]: 
Locality Name (eg, city) [Jakarta]: 
Organization Name (eg, company) [blog.ariw.net]: 
Organizational Unit Name (eg, section) [blog.ariw.net]: 
Common Name (eg, your name or your server's hostname) [vpn.blog.ariw.net]: 
Name [blog.ariw.net]: 
Email Address [[email protected]]: 
Please enter the following 'extra' attributes to be sent with your certificate request 
A challenge password []: 
An optional company name []: 
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf 
Check that the request matches the signature Signature ok 
The Subject's Distinguished Name is as follows 
countryName :PRINTABLE:'ID' 
stateOrProvinceName :PRINTABLE:'JKT' 
localityName :PRINTABLE:'Jakarta' 
organizationName :PRINTABLE:'blog.ariw.net' 
organizationalUnitName:PRINTABLE:'blog.ariw.net' 
commonName :PRINTABLE:'vpn.blog.ariw.net' 
name :PRINTABLE:'blog.ariw.net' 
emailAddress :IA5STRING:'[email protected]' 
Certificate is to be certified until Jan 4 06:27:10 2022 GMT (3650 days) 
Sign the certificate? [y/n]:y 
1 out of 1 certificate requests certified, commit? [y/n]:y 
Write out database with 1 new entries Data Base Updated
./build-dh

Selanjutnya kita buat file konfigurasi server;

cd /etc/openvpn
vi udp53.conf

Pada konfigurasi server saya isinya kurang lebih seperti ini;

port 53 
proto udp 
dev tun 
ca easy-rsa/2.0/keys/ca.crt 
cert easy-rsa/2.0/keys/vpn.blog.ariw.net.crt 
key easy-rsa/2.0/keys/vpn.blog.ariw.net.key 
dh easy-rsa/2.0/keys/dh384.pem 
plugin /usr/lib/openvpn/openvpn-auth-pam.so /etc/pam.d/login 
client-cert-not-required 
username-as-common-name 
server 10.53.0.0 255.255.255.0 
ifconfig-pool-persist ipp.txt 
push "redirect-gateway def1" 
push "dhcp-option DNS 8.8.4.4" 
push "dhcp-option DNS 208.67.220.220" 
keepalive 2 30 
comp-lzo 
cipher none 
persist-key 
persist-tun 
status udp53.log 
verb 3

Setelah di-edit dan save, restart service openvpn;

/etc/init.d/openvpn restart

Sampai sini service OpenVPN udah start dan client bisa login, tapi belum bisa melakukan koneksi ke internet karena belum diforward. Untuk itu edit file /etc/rc.local;

vi /etc/rc.local

dan tambahkan script ini;

echo 1 > /proc/sys/net/ipv4/ip_forward 
iptables -F 
iptables -X 
iptables -t nat -F iptables -t nat -A POSTROUTING -s 10.53.0.0/24 -j SNAT --to 209.141.55.165

10.53.0.0/24 adalah alamat jaringan local VPN yang saya masukkan di konfigurasi udp53.conf tadi, sedangkan 209.141.55.165 adalah IP public server saya. Setelah di-edit dan save, lalu;

sh /etc/rc.local

Langkah selanjutnya kita buat user untuk login ke VPN;

useradd -m -s /bin/false scylla

Konfigurasi di sisi server udah selesai, sekarang lakukan konfigurasi client. Karena aplikasi client untuk konek ke OpenVPN server ada beberapa macam (OpenVPN, Viscosity, dll) dan beda platform (Linux, Windows, Mac OSX) maka saya cuma akan menampilkan konfigurasinya secara general aja. Gimana cara install, konfigurasinya di mana, dll, cari dan coba2 sendiri ya. Atau bisa juga ditanyakan di kolom komentar di bawah.

## Contoh konfigurasi OpenVPN client (*.ovpn) ## 
client 
dev tun 
proto udp #protocol 
remote 209.141.55.165 53 #IP address server dan port 
resolv-retry infinite 
route-method exe 
nobind 
persist-key 
persist-tun 
ca ca.crt #file ini yang kita download dari server, dan diletakkan di folder yang sama. 
auth-user-pass 
comp-lzo 
cipher none #disable enkripsi 
verb 3

Di sisi client, yang kita butuhkan cuma file ca.crt yang ada di server tadi, jadi jangan lupa untuk dicopy / download dulu ke client.