31 Oct 2014

root@singaraja:~# mkdir /etc/openvpn/easy-rsa
root@singaraja:~# cp -ai /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa/
root@singaraja:~# cd /etc/openvpn/easy-rsa/2.0/
root@singaraja:/etc/openvpn/easy-rsa/2.0# nano vars
root@singaraja:/etc/openvpn/easy-rsa/2.0# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
root@singaraja:/etc/openvpn/easy-rsa/2.0# ./clean-all
root@singaraja:/etc/openvpn/easy-rsa/2.0# ./build-ca
Generating a 1024 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) [JB]:
Locality Name (eg, city) [Bandung]:
Organization Name (eg, company) [passionit]:
Organizational Unit Name (eg, section) [changeme]:singaraja
Common Name (eg, your name or your server’s hostname) [changeme]:semar
Name [changeme]:semar
Email Address [awangga@passionit.co.id]:
root@singaraja:/etc/openvpn/easy-rsa/2.0# ./build-key-server semar
Generating a 1024 bit RSA private key
writing new private key to ‘semar.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) [JB]:
Locality Name (eg, city) [Bandung]:
Organization Name (eg, company) [passionit]:
Organizational Unit Name (eg, section) [changeme]:serversemar
Common Name (eg, your name or your server’s hostname) [semar]:serversemar
Name [changeme]:serversemar
Email Address [awangga@passionit.co.id]:

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:’JB’
localityName :PRINTABLE:’Bandung’
organizationName :PRINTABLE:’passionit’
commonName :PRINTABLE:’serversemar’
name :PRINTABLE:’serversemar’
emailAddress :IA5STRING:’awangga@passionit.co.id’
Certificate is to be certified until Oct 28 12:02:09 2024 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
root@singaraja:/etc/openvpn/easy-rsa/2.0# ./build-key iqromedia
Generating a 1024 bit RSA private key
writing new private key to ‘iqromedia.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) [JB]:
Locality Name (eg, city) [Bandung]:
Organization Name (eg, company) [passionit]:
Organizational Unit Name (eg, section) [changeme]:iqromedia
Common Name (eg, your name or your server’s hostname) [iqromedia]:
Name [changeme]:iqromedia
Email Address [awangga@passionit.co.id]:

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:’JB’
localityName :PRINTABLE:’Bandung’
organizationName :PRINTABLE:’passionit’
commonName :PRINTABLE:’iqromedia’
name :PRINTABLE:’iqromedia’
emailAddress :IA5STRING:’awangga@passionit.co.id’
Certificate is to be certified until Oct 28 12:03:25 2024 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
root@singaraja:/etc/openvpn/easy-rsa/2.0# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
root@singaraja:/etc/openvpn/easy-rsa/2.0# cd ..
root@singaraja:/etc/openvpn/easy-rsa# cd ..
root@singaraja:/etc/openvpn# cp ./easy-rsa/2.0/keys/ca.crt .
root@singaraja:/etc/openvpn# cp ./easy-rsa/2.0/keys/semar.key .
root@singaraja:/etc/openvpn# cp ./easy-rsa/2.0/keys/semar.crt .
root@singaraja:/etc/openvpn# cp ./easy-rsa/2.0/keys/dh1024.pem .

root@singaraja:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .
root@singaraja:/etc/openvpn# gunzip server.conf.gz
root@singaraja:/etc/openvpn# nano server.conf

# [server.conf]
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS"
push "dhcp-option DNS"
keepalive 10 120
user nobody
group nogroup
status openvpn-status.log
verb 3

root@singaraja:/etc/openvpn# service openvpn start
[ ok ] Starting virtual private network daemon: server.
root@singaraja:/etc/openvpn# ifconfig
eth0 Link encap:Ethernet HWaddr 74:d4:35:e0:7d:10
inet addr: Bcast: Mask:
inet6 addr: fe80::76d4:35ff:fee0:7d10/64 Scope:Link
RX packets:165854998 errors:17 dropped:0 overruns:0 frame:8
TX packets:184415361 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:109560987302 (102.0 GiB) TX bytes:158607736676 (147.7 GiB)
Interrupt:20 Memory:d3800000-d3820000

lo Link encap:Local Loopback
inet addr: Mask:
inet6 addr: ::1/128 Scope:Host
RX packets:1234141 errors:0 dropped:0 overruns:0 frame:0
TX packets:1234141 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1405142544 (1.3 GiB) TX bytes:1405142544 (1.3 GiB)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr: P-t-P: Mask:
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

root@singaraja:/etc/openvpn# cat /proc/sys/net/ipv4/ip_forward
root@singaraja:/etc/openvpn# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface UG 0 0 0 eth0 UG 100 0 0 eth0 UG 0 0 0 tun0 UH 0 0 0 tun0 U 0 0 0 eth0

root@singaraja:/etc/openvpn# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ./easy-rsa/2.0/keys/
root@singaraja:/etc/openvpn# nano ./easy-rsa/2.0/keys/client.conf

# [client.conf]
dev tun
proto udp
remote 1194
resolv-retry infinite
user nobody
group nogroup
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client_kevin.crt
key /etc/openvpn/client_kevin.key
ns-cert-type server
verb 3

on 31 Oct 2014 12:33 PM
Bahasa resminya BBMPork adalah aplikasi logical forensics berlisensi MIT yang dikembangkan menggunakan IGN-SDK dengan fungsi utama untuk melakukan analisis percakapan BlackBerry Messenger yang berjalan di ponsel bersistem operasi Android. Saat ini fitur utamanya melakukan Forensik berupa mengakuisisi basis data dan menganalisis percakapan BBM di Android.

Rencananya BBMPork akan dipresentasikan Indonesia Security Conference 2014 di sesi hari pertama(01/10). Sebenarnya BBMPork ini masih berupa purwarupa jadi masih banyak fitur-fitur yang belum sempurna. Namun kami tim pengembang mencoba untuk mengembangkan dasar dari forensika gemerak. Penampakan BBMPork dapat dilihat di Youtube.

Saat ini BBMPork hanya berjalan di sistem operasi Linux dan Mac OS X. Saya sendiri mencoba di LinuxMint 17.1 sedangkan dalam penampakan tersebut BBMPork berjalan di Mac OS X. 
on 31 Oct 2014 11:09 AM

Perkakas fail2ban adalah aplikasi yang membaca gegagat jahat suatu IP dengan menggunakan log peladen. Perkakas ini memasukkan IP yang bermasalah kepada daftar cekal. Asyiknya, aplikasi ini mendukung juga NGINX.

on 31 Oct 2014 07:29 AM

Pada tulisan kali ini akhirnya saya akan menuliskan tentang BGP (Border Gateway Protocol) yaitu suatu protocol yang mengijinkan kita untuk saling bertukar tabel routing dengan mesin lain. Pada lab kali ini saya menggunakan GNS3 di Ubuntu, untuk device cisco saya menggunakan router 7200 NPE400, sedangkan untuk vyatta saya menggunakan versi 6.6, dan untuk mikrotik saya menggunakan versi 6.19.


Pada lab kali ini topologi yang akan digunakan adalah sebagai berikut:


Untuk mesin vyatta akan menggukan sebutan Router 1 (R1), untuk cisco menggunakan sebutan Router 2 (R2) dan dan Router 3 (R3) untuk Mikrotik. Sedangkan network yang akan digunakan adalah network, dengan rincian sebagai berikut:

  1. Pada router 1, memiliki jaringan, dan tersambung dengan router 2 (cisco) dengan network
  2. Pada router 2, memiliki jaringan, dan tersambung dengan router 1 dengan network dan tersambung dengan router 3 dengan network
  3. Pada router 3, meiliki jaringan dan tersambung dengan router 2 dengan network
  4. Untuk network digunakan untuk ip loopback.


Langkah awal, kita harus mengatur alamat ip terlebih dahulu.


vyatta@vyatta:~$ configure 
vyatta@vyatta# set interfaces loopback lo address
vyatta@vyatta# set interfaces ethernet eth0 address
vyatta@vyatta# commit


Cisco#conf t
Cisco(config)#int Loopback 0
Cisco(config-if)#ip address
Cisco(config)#int gi0/0
Cisco(config-if)#ip address  
Cisco(config-if)#no shut
Cisco(config)#int Gi1/0
Cisco(config-if)#ip address
Cisco(config-if)#no shut


[admin@MikroTik] > /interface bridge add name=loopback0
[admin@MikroTik] > /ip address add interface=loopback0 address=
[admin@MikroTik] > /ip address add interface=ether1 address=

Pastikan bahwa semua perangkat telah terhubung.

vyatta@vyatta# ping
PING ( 56(84) bytes of data.
64 bytes from icmp_req=1 ttl=255 time=14.0 ms
64 bytes from icmp_req=2 ttl=255 time=11.6 ms
--- ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 11.666/12.864/14.062/1.198 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to, timeout is 2 seconds:
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/8/12 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to, timeout is 2 seconds:
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/9/12 ms
[admin@MikroTik] > ping
HOST                                     SIZE TTL TIME  STATUS                                                                                                         56 255 10ms                                56 255 8ms                                56 255 8ms  
    sent=3 received=3 packet-loss=0% min-rtt=8ms avg-rtt=8ms max-rtt=10ms 

[admin@MikroTik] > 

Pengaturan BGP

Pada pengaturan BGP, router 1 (vyatta) akan menggunakan as 11, router 2 (cisco) akan menggunakan as 22, dan router 3 (mikrotik) akan menggunakan as 33


vyatta@vyatta# set protocols bgp 11 parameters router-id
vyatta@vyatta# set protocols bgp 11 parameters log-neighbor-changes
vyatta@vyatta# set protocols bgp 11 neighbor remote-as 22
vyatta@vyatta# set protocols bgp 11 neighbor soft-reconfiguration inbound
vyatta@vyatta# exit
Warning: configuration changes have not been saved.


Cisco(config)#router bgp 22
Cisco(config-router)#bgp router-id
Cisco(config-router)#default bgp log-neighbor-changes
Cisco(config-router)#neighbor remote-as 11
Cisco(config-router)#neighbor remote-as 22
Cisco(config-router)#address-family ipv4
Cisco(config-router-af)#neighbor soft-reconfiguration inbound
Cisco(config-router-af)#neighbor soft-reconfiguration inbound
Cisco(config-router-af)#neighbor activate
Cisco(config-router-af)#neighbor activate


[admin@MikroTik] > /routing bgp
[admin@MikroTik] /routing bgp> instance set default router-id= as=33
[admin@MikroTik] /routing bgp> peer add name=to-cisco remote-address= remote-as=22 disabled=no 

Cek status bgp peer

vyatta@vyatta:~$ show ip bgp sum
BGP router identifier, local AS number 11
IPv4 Unicast - max multipaths: ebgp 1 ibgp 1
RIB entries 0, using 0 bytes of memory
Peers 1, using 2524 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd     4    22      15      15        0    0    0 00:12:01        0

Total number of neighbors 1
Cisco#sh ip bgp sum
BGP router identifier, local AS number 22
BGP table version is 1, main routing table version 1

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd     4           11      15      17        1    0    0 00:12:23        0     4           33      11      11        1    0    0 00:08:42        0
[admin@MikroTik] /routing bgp> peer print 
Flags: X - disabled, E - established 
 0 E default    22

Pada dasarnya, bgp peering semuanya sudah berjalan namun bgp belum melakukan pertukaran tabel routing? bagaimana bisa? hal ini dikarenakan di semua device diatas belum melakukan advertise prefix. Hal ini dapat di lihat dari mesin cisco pada output show ip bgp sum pada kolom State/PfxRcd terlihat 0 yang berarti tidak ada prefix yang diterima.

Untuk melakukan advertise (distibusi prefix) bisa menggunakan berbagai cara bisa dengan redistribusi prefix yang tersambung (connected), statis, ospf dan lain lain. Kali ini kita akan mengadvertise ip loopback dan network yang dialokasikan.


vyatta@vyatta:~$ configure 
vyatta@vyatta# set protocols bgp 11 network
vyatta@vyatta# set protocols bgp 11 network
vyatta@vyatta# commit
vyatta@vyatta# exit
Warning: configuration changes have not been saved.


Cisco#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Cisco(config)#router bgp 22
Cisco(config-router)#address-family ipv4
Cisco(config-router-af)#network mask
Cisco(config-router-af)#network mask 
Cisco(config)#ip route Null 0


[admin@MikroTik] /routing bgp> network add network= synchronize=yes
[admin@MikroTik] /routing bgp> /ip route add dst-address= type=blackhole

Cek dengan tabel route

vyatta@vyatta:~$ sh ip route 
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, > - selected route, * - FIB route

C>* is directly connected, lo
C>* is directly connected, lo
B>* [20/0] via, eth0, 00:10:39
B>* [20/0] via, eth0, 00:00:03
C>* is directly connected, eth0
S>* [1/0] is directly connected, Null0, bh
B>* [20/0] via, eth0, 00:08:09
B>* [20/0] via, eth0, 00:07:17
Cisco#sh ip ro
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set is subnetted, 3 subnets
B [20/1] via, 00:09:43
C is directly connected, Loopback0
B [20/0] via, 00:00:08 is variably subnetted, 2 subnets, 2 masks
C is directly connected, GigabitEthernet0/0
L is directly connected, GigabitEthernet0/0 is variably subnetted, 2 subnets, 2 masks
C is directly connected, GigabitEthernet1/0
L is directly connected, GigabitEthernet1/0
B [20/0] via, 00:08:43
S is directly connected, Null0
B [20/0] via, 00:07:22
[admin@MikroTik] /routing bgp> /ip route pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, 
B - blackhole, U - unreachable, P - prohibit 
 #      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
 0 ADb                         20
 1 ADb                         20
 2 ADC     loopback0                 0
 3 ADC     ether1                    0
 4 ADb                        20
 5 ADb                        20
 6 A SB                                              1
[admin@MikroTik] /routing bgp> 

Prefix di vyatta, cisco dan mikrotik sudah menerima prefix dari bgp yang ditandai dengan huruf tebal.

Langkah selanjutnya adalah cek koneksi pada router ujung ke ujung apakah sudah benar tersambung.

[admin@MikroTik] > /tool traceroute src-address= count=1
1 0% 1 8.8ms 8.8 8.8 8.8 0
2 0% 1 17.7ms 17.7 17.7 17.7 0

[admin@MikroTik] >

Hal ini berarti perangkat sudah saling terhubung.

Pengaturan bgp pada ketiga perangkat tersebut dapat dilihat di sini; Mikrotik, Cisco, dan Vyatta

on 31 Oct 2014 07:07 AM

30 Oct 2014

Masih ingat Suara.com ? Portal berita ini tergolong pendatang baru, baru diluncurkan di sekitar Maret 2014 lalu. Dan dalam hitungan bulan, hari ini (Oktober 2014) saya lihat di Alexa, peringkatnya sudah di posisi 40 untuk Indonesia. Ini artinya Suara.com adalah situs yang jumlah pengunjungnya tertinggi nomor 40 se-Indonesia (setidaknya versi Alexa).

Dulu saya sempat menduga kalau sumber trafik mereka akan sangat banyak didongkrak oleh SEO, berhubung brand “Suara.com” sendiri sepertinya belum seperti Detikcom. Dari info di Alexa tersebut memang awal-awal terlihat sumber trafik kebanyakan dari search (hampir 20% dari total trafik), tetapi ternyata belakangan hanya sekitar 5% nya saja dari hasil search.

Lalu darimana Suara.com bisa mencapai trafik sebesar itu dalam waktu singkat? Dugaan ngasal saya sih sebagian disumbang dari digital-ads. Cukup sering saya melihat iklan mereka di Facebook. Dan belakangan sudah cukup sering terlihat ada teman-teman saya yang share berita dari Suara.com. Cukupkah digital-ads menyumbang trafik begitu besar sehingga bisa mendongkrak trafik sebesar itu? Menurut saya sih tidak. Tapi saya tidak tahu darimana lagi sumber trafiknya itu berasal. Ya, bisa jadi memang pengunjung organiknya sendiri sudah tumbuh besar. Entahlah.

Tim redaksi Suara.com sendiri sepertinya juga mengalami perubahan (perkembangan), dan nama Yan Gunawan yang dulu tertera di halaman Redaksi sekarang tidak tertera lagi. Tetapi sepertinya Yan Gunawan tetap menjadi salah satu (?) pemilik portal berita ini.

Lalu akan kemana kah Suara.com setelah mencapai ranking 40 di Indonesia? Mari kita lihat nanti. ;)


on 30 Oct 2014 02:42 AM

29 Oct 2014

Bosan dengan logo Apple atau Logo yang ada tutup layar Laptop ? saya mempunyai solusi cukup bikin mood lihat laptop jadi greget. Yup pasang saja Decal Sticker, kali ini saya tidak membeli Decal sticker yang sudah banyak di pasaran,, alasan cukup sederhana dipasaran Desainnya tidak ada yang selera dengan yang saya ingin tempelkan. Kemudian saya buat sendiri dengan dengan mendesain di Inkscape kemudian diimplementasikan ke tempat pembuatan Sticker. Disini saya menggunakan cutting sticker jadi penampakan sticker jadi lebih hidup. Sebernarnya Decal stiker ini sudah lama saya lihat pada waktu Iklan Apple dan beberapa video Youtube, kok rasanya bagus juga saya pandang, kemudian coba desain sendiri dengan tema saya sendiri tentunya dan menghasilkan sticker seperti gambar dibawah :D 

Bagaimana keren stickernya ? Mau pasang juga ? Silahkan cetak sendiri ya... silahkan unduh source sticker di mari
on 29 Oct 2014 11:49 PM

28 Oct 2014

Konon ceritanya MEGA yang merupakan transformasi dari Mega Upload mengimplementasikan RSA-2048bit dalam penyimpanan awannya. Selain itu kapasitas yang ditawarkan 50GB. Besar bukan? Makanya saya tertarik untuk menggunakan MEGA.

Pada awalnya MEGA belum menyediakan untuk sistem operasi Linux. Namun saat ini sudah menyediakan untuk sistem operasi Linux. Lebih keren lagi, MEGA telah menyediakan untuk Ubuntu 14.10, MEGAsync. Tambahkan repositori deb http://mega.co.nz/linux/MEGAsync/xUbuntu_14.10/ ./ kemudian sudo apt-get update && sudo apt-get install megasync nautilus-megasync untuk menginstall MEGA sync.

Setelah proses installasi, Anda konfigurasi MEGAsync supaya dapat selaras data di komputer dan di awan milik MEGA. Sebaiknya telah memiliki atau mendaftar akun di http://mega.co.nz.
1. Saya pilih I have MEGA account

2. Masukan data akun Anda

3. Saya memilih direktori yang akan diselaraskan, Selective sync

4. Proses penyelarasan data yang saya miliki

on 28 Oct 2014 07:20 AM

27 Oct 2014

JSON formatter bookmarklet

Fajran Iman Rusadi

At work I need to read JSON document pretty often and making it pretty will help me pretty much. Last time I showed how to prettify a JSON document using Python script. But since I am working mostly in a browser, having to switch from browser to terminal is a bit cumbersome. There are a lot of online JSON formatter out there but I think it’s too much if I need to make a remote request just to do the formatting. Also the JSON document I need to format can be a sensitive document so it’s also not a good idea to use an online service.

Then I realized browser nowadays has in-browser JSON formatter function: JSON.stringify. I just need to find a way to make using it a bit easier. So I made the following bookmarklet.

');">Prettify JSON

Drag the link above to bookmark bar in your browser. If you need to format a JSON document, you can click it, then paste the JSON document (make sure it’s valid), and finally click the button there. Voila!

on 27 Oct 2014 11:02 AM

perangkat linux yang akan diremote pertama kali harus meremote ssh ke server yang memiliki ip publik dengan menggunakan perintah :

ssh -fN -R singaraja@singaraja.ddns.net adalah ip lokal intranet server agar kita bisa meremote dari LAN. dan2202 adalah port LAN tersebut.

singaraja.ddns.net merupakan ip publik server

Kemudian, dari server tersebut kita bisa meremote kepada perangkat linux tadi

on 27 Oct 2014 02:27 AM

26 Oct 2014

Setelah setahun, sertifikat SSL gratisan yang saya dapat dari StartSSL akhirnya kadaluarsa. Kalau mau lanjut, tentu saja saya harus pengajukan pembaruan dan memperbarui sertifikat yang sekarang dipakai. Proses ngurus sesuatu di StartSSL itu aga2.. er… ribet :/ jadi males xD

Namun.. berhubung sekarang Cloudflare menyediakan sertifikat SSL gratisan, saya memutuskan tuk pindah saja haha :D Kebetulan domain ini emang sudah ditangani oleh Cloudflare jadi mestinya saya cukup mengatur agar segala lalul intas melewati server Cloudflare dulu. Gak masalah lah ini :D


Tapi sebelum itu, saya jg harus mengaktifkan dukungan SSL di Cloudflare. Dari empat opsi penggunaan SSL yang ada, saya memilih Full SSL supaya koneksi dari Cloudflare ke server tempat saya naro blog ini juga tetap menggunakan HTTPS. Pakai sertifikat yang mana? tentu saja pakai yg sudah kadaluarsa itu hihi :D


Memakai sertifikat SSL gratisan dari Cloudflare ini bukan ngga ada resikonya. Salah satunya adalah browser pengunjung udah mesti punya SNI (Server Name Indication, bukan Standar Negara Indonesia :P). Walau udah banyak browser yang mendukung SNI, tapi si Cloudflare bilang cuma sekitar 52% pengunjung dari Indonesia yang memakai browser ber-SNI (eh?).

Selain itu, Cloudflare memasukkan lebih dari satu domain agar terdaftar dalam sertifikat yang sama. Jadi semacam bbrp orang berbagi KTP yang sama walau di KTP tersebut tertulis setiap nama orang yang ikutan berbagi.


Keuntungannya? Dapet wildcard certificate! Sub domain jadi bisa dipasangi HTTPS juga tanpa sertifikat tambahan!

on 26 Oct 2014 07:47 PM

24 Oct 2014


Fajran Iman Rusadi

Masih ada yang make apt-web kah? :D

on 24 Oct 2014 05:16 PM


Halo, jumpa lagi di hari Jumat!

Karena isu keamanan akhir-akhir ini semakin ketat, saya merasakan perlunya pembelajaran kepada masyarakat Indonesia mengenai penggunaan enkripsi yang tepat. Entahlah, mungkin ini juga karena saya meneliti Owncloud terlalu jauh. Atau mungkin ini sekedar tulisan menambah kuota tulisan saya di blog. Ilmu memang untuk dibagi.

Orang pasti sudah tahu tentang BEAST, CRIME, dan HEARTBLEED. BEAST adalah proof-of-concept serangan terhadap enkripsi TLSv1.0 yang menyebabkan sebuah domain dapat dibajak dari implementasi TLS v1.0 yang buruk di sistem operasi. Lalu, ada CRIME yang menyerang implementasi kompresi HTTP pada TLS dan SPDY. Yang menghebohkan berikutnya adalah HEARTBLEED yang menyerang implementasi cacat OpenSSL pada implementasi ekstensi TLS heartbeat.

Yang terakhir dan teranyar adalah POODLE, eksploit terhadap SSLv3 yang menyebabkan sekarang ini orang dipaksa untuk mematikan SSLv3. Ya, kecuali Anda menggunakan IE6/7 pada Windows XP yang belum diperbaharui, sebenarnya SSLv3 sudah lama tidak diperlukan. Bahkan, sebaiknya Anda memaksa peramban Anda langsung menggunakan TLS v1.2.

Ekstensi AES-NI

Tapi… tapi… bukankah menggunakan enkripsi membuat peladen kurang responsif?

Itu dulu! Sekarang, ‘kan, sudah ada ekstensi AES-NI pada prosesor x86. Jadi, enkripsi dilakukan secara langsung oleh CPU. Saya melakukan eksperimen kecil untuk memperlihatkan perbedaan operasi biasa dan menggunakan AES-NI.

Operasi biasa menggunakan instruksi CPU normal.

$ OPENSSL_ia32cap="~0x200000200000000" openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 34349970 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 8984170 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 2337382 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 589989 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 74022 aes-128-cbc's in 3.00s
OpenSSL 1.0.1i 6 Aug 2014
built on: Fri Aug  8 06:23:32 WIB 2014
options:bn(64,64) rc4(8x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) 
compiler: x86_64-pc-linux-gnu-gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -O2 -pipe -march=native -mtune=native -fomit-frame-pointer -flto=8 -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block -ftree-vectorize -fno-strict-aliasing -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-cbc     183199.84k   191662.29k   199456.60k   201382.91k   202129.41k

Sedangkan berikut operasi menggunakan instruksi AES-NI.

$ openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 99416661 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 27157194 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 7746016 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 2005119 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 253147 aes-128-cbc's in 3.00s
OpenSSL 1.0.1i 6 Aug 2014
built on: Fri Aug  8 06:23:32 WIB 2014
options:bn(64,64) rc4(8x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) 
compiler: x86_64-pc-linux-gnu-gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -O2 -pipe -march=native -mtune=native -fomit-frame-pointer -flto=8 -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block -ftree-vectorize -fno-strict-aliasing -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-cbc     530222.19k   579353.47k   660993.37k   684413.95k   691260.07k

Berikut tabel hasilnya:

Instruksi CPU Tipe 16-bit 64-bit 256-bit 1024-bit 8192-bit
AES-NI aes-128-cbc 530222,19 579353,47 660993,37 684413,95 691260,07
Normal 183199,84 191662,29 199456,6 201382,91 202129,41
Performa 2,8942284557 3,0227827811 3,313970909 3,3985701667 3,4198886248
Total Performa AES-NI 3,2098881874

Tampak bahwa dalam kasus ini, penggunakan AES-NI pada OpenSSL meningkatkan performa 3 kali lipat.

Dukungan AES-NI

Untuk mengetahui apakah prosesor peladen Anda mendukung AES-NI, silakan lihat dengan:

$ cat /proc/cpuinfo  | grep aes
flags           : ... aes ...

Kalau didukung, akan ada tulisan ‘aes’. Biasanya, sih, untuk prosesor AMD dan Intel yang baru [baca: keluaran tahun-tahun ini] sudah mendukung instruksi AES-NI. Kalau pun belum, bisa langsung saja mengompilasi OpenSSL dengan menggunakan instruksi SSE4 atau AVX. Ya, tapi itu di luar cakupan tulisan ini agar tidak terlalu rumit.

Untuk Debian Wheezy, OpenSSL 1.0.1e yang digunakan akan secara otomatis mendeteksi AES-NI. Tidak perlu mengompilasi sendiri untuk versi Debian tersebut. Untuk sistem operasi yang lain, silakan konsultasi kepada Mbah Gugel.

Bila Anda menggunakan KVM atau Proxmox, pastikan Anda menggunakan tipe CPU Host. Cara lain adalah pastikan instruksi AES-NI diperbolehkan untuk KVM.

Konfigurasi NGINX

Karena OpenSSL transparan, maka tidak ada yang perlu dipusingkan oleh NGINX untuk menggunakan AES-NI. NGINX hanya perlu memberitahukan protokol enkripsi yang dipakai untuk HTTPS.  Untuk itu, perhatikan contoh konfigurasi NGINX:

server {
        listen   80;
        listen  [::]:80 ipv6only=on;
        server_name  www.contoh.aja;
        server_name_in_redirect on;
        port_in_redirect on;

        access_log  /var/log/nginx/normal.access.log;
        error_log  /var/log/nginx/normal.error.log;

        ## redirect http to https ##
        rewrite        ^ https://$server_name$request_uri? permanent;

server {
        listen   443 ssl spdy;
        listen [::]:443 ipv6only=on ssl spdy;

        server_name  www.contoh.aja;
        server_name_in_redirect on;
        port_in_redirect on;

        ssl  on;
        ssl_certificate /etc/nginx/ssl.cert;
        ssl_certificate_key /etc/nginx/ssl.key;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;

        access_log  /var/log/nginx/ssl.access.log;
        error_log  /var/log/nginx/ssl.error.log;


Saya akan mencoba menjelaskan beberapa bagian yang penting. Saya mengasumsikan Anda sudah tahu mengonfigurasi NGINX secara dasar sehingga saya tak perlu menjelaskan semuanya. Atau, setidaknya Anda bisa mencari langsung di Internet.

Saya sengaja tidak menyertakan aturan FastCGI PHP dan aturan-aturan rewrite untuk mengurangi kompleksitas kode. Ada banyak tutorial dasar untuk menyertakan aturan FastCGI. Lagipula, untuk aturan-aturan rewrite tergantung kepada aplikasi yang kita gunakan (Drupal, WordPress, dsb.).

Yak, langsung saja.

Mendengar di IPv4 dan IPv6

Berikut sintaksis agar NGINX mendengar semua antarmuka jaringan (IPv4 dan IPv6).

listen   80;
listen  [::]:80 ipv6only=on;

Ada alasan mengapa mengaktifkan dual stack. Universitas Indonesia (UI) sudah sejak lama memiliki satu blok (/16) IPv4 kelas B. Karena termasuk historical member dari IANA, UI juga beruntung mendapatkan satu blok /48 IPv6. Itu sebabnya, hampir semua peladen UI sudah memiliki IPv6 sendiri berikut IPv4 publik.

Mengarahkan Semua ke HTTPS

Berikut sintaksis untuk mengarahkan koneksi HTTP ke HTTPS.

rewrite        ^ https://$server_name$request_uri? permanent;

Ada tutorial lama yang menyampur koneksi HTTPS dan HTTP. Hal ini tidak sesuai dengan prinsip keamanan. Bila memang situs ingin aman sepenuhnya, maka harus semuanya harus menggunakan HTTPS. Konten campuran (berisi HTTP dan HTTPS) tidak disarankan dan beberapa peramban akan cerewet tentang itu.

Mengaktifkan SPDY

Berikut sintaksis agar NGINX menggunakan SSL (HTTPS) dengan SPDY.

listen   443 ssl spdy;
listen [::]:443 ipv6only=on ssl spdy;

Untuk akselerasi HTTPS, Google mengembangkan teknik SPDY. Hampir semua peramban modern mendukung protokol SPDY. Saya pernah membahas ini.

Mengaktifkan SSL

Baris-baris inilah yang mengaktifkan enkripsi HTTPS (SSL).

ssl  on;
ssl_certificate /etc/nginx/ssl.cert;
ssl_certificate_key /etc/nginx/ssl.key;

Baris ssl_certificate mengarahkan ke berkas sertifikat peladen. Ada tiga jenis skenario untuk berkas sertifikat peladen:

  1. Untuk menambah legitimasi, biasanya sertifikat ditandatangani oleh Certificate Authority (CA) yang sudah diakui. StartSSL menyediakan layanan ini dengan gratis. Kalau mau yang murah ada RapidSSL atau Komodo. Kalau mau lebih bonafide, gunakan VeriSign. Mereka ini biasanya sertifikat utamanya (root certificate) sudah dipasang di sistem operasi/peramban. Root certificate adalah sertifikat CA yang dipakai untuk melegitimasi sertifikat sebuah server.
  2. Ada juga organisasi yang membuat root certificate sendiri. Biasanya, mereka memasang sendiri root certificate ke sistem operasi/peramban pengguna. Ada banyak tutorial tentang itu, terutama Windows Server dan UNIX.
  3. Yang paling jamak digunakan di tutorial-tutorial biasanya menggunakan sertifikat yang ditandatangani sendiri (self-signed).

Silakan pilih skenario yang terbaik. Untuk situs bisnis biasanya menggunakan CA pihak ketiga (poin 1). Namun, untuk Intranet biasanya menggunakan poin 2.

Baris berikutnya ssl_certificate_key mengarahkan berkas kunci privat peladen. Pastikan berkas ini hanya bisa diakses baca-saja oleh root (0400).

Parameter Tambahan

Berikut parameter tambahan yang opsional. Parameter-parameter ini yang memperkuat enkripsi situs.

Hanya Gunakan TLS

Protokol SSLv3 sudah tamat semenjak POODLE beberapa hari yang lalu. Banyak yang menyarankan untuk mematikan protokol ini. Ya, berhubung protokol ini sudah sangat lama, wajar saja. Lagipula, hanya IE6/7 yang menggunakan Windows XP SP3 yang belum ditambal saja yang terpengaruh. Sisanya, dunia sudah mengenal TLS sejak lama.

Ya sudah, cukup aktifkan semua versi protokol TLS saja.

ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;

Protokol TLS pun sebenarnya tidak begitu aman. Kalau mau paranoid, hanya aktifkan TLSv1.2 saja. Tentu saja, ini mengurangi jumlah pengunjung dan peramban yang bisa mengakses situs kita.

Gunakan SHA256 AES-GCM dengan Forward Secrecy dan RC4 Sebagai Cadangan

Semenjak tahun 2011, SHA1 dianggap sudah tidak aman lagi. Lebih parah lagi, Google akan mempenalti situs-situs yang masih menggunakan SHA1 pada 1 Januari 2017. Artinya, semua situs yang masih memakai sertifikat dengan tanda tangan SHA1 akan dianggap tidak aman oleh produk-produk Google.

Bila Anda masih baru mau memasang sertifikat, gunakan sertifikat dengan tanda tangan SHA256. Atau kalau lebih bagus lagi, gunakan SHA387. Tetapi, untuk SHA387 masih jarang dan lagi mahal.

Ada banyak protokol pertukaran kunci dan saya tidak mau terlalu detail. Saat ini protokol yang aman dari gangguan adalah AES-GCM dan RC4. Protokol RC4 sudah lama dan relatif aman. Sedangkan GCM masih relatif baru, sehingga beberapa peramban lama tidak mendukung.

[Lama itu hitungannya 10 s.d. 20 tahun yang lalu, ya, kawan-kawan.]

Saat ini RC4 disarankan untuk ditinggalkan. Bukan berarti dia tidak aman. Sudah ada metodenya, tetapi untuk bisa membobol RC4 saat ini memerlukan sumber daya yang sangat besar. Jadi, RC4 relatif cukup aman.

Penggunaan AES-GCM disarankan oleh karena adanya instruksi AES-NI yang mempercepat percepat perhitungan.  Teknik ini peningkatan implementasi dari AES-CBC dengan menggunakan instruksi perangkat keras. Itu sebabnya, AES-CBC disarankan ditinggalkan.

Berikut instruksinya.


Oh, iya, satu lagi. Dalam konfigurasi ini diaktifkan mode Forward Secrecy yang ada di TLSv1.2.

Mengaktifkan Urutan Enkripsi Di Sisi Server


ssl_prefer_server_ciphers on;

Instruksi ini mengakibat peladen akan menyuruh klien untuk menggunakan metode enkripsi yang diinginkan sesuai dengan urutan. Ini mengurangi kemungkinan klien yang sudah mendukung TLSv1.2 malah menggunakan versi terdahulu karena konfigurasi perambannya. Hal ini bisa memitigasi terhadap serangan BEAST.

Menyimpan Sesi SSL


ssl_session_cache   shared:SSL:10m;
ssl_session_timeout 10m;

Untuk keperluan optimasi, NGINX dapat menyimpan sesi SSL pada tembolok. Ada dua jenis yang didukung. Yang pertama, tembolok tersebut disimpan oleh NGINX sehingga bisa diakses oleh sesama proses-proses pekerja NGINX. Yang kedua, per pekerja menggunakan tembolok yang disediakan oleh OpenSSL. Disarankan untuk menggunakan tembolok NGINX saja.

Menurut NGINX, 1 MB mampu menampung 4000 sesi. Konfigurasi ini menggunakan 10MB sehingga kira-kira ada 40000 sesi yang didukung. Setiap sesi ini disimpan selama 10 menit saja. Silakan dikonfigurasikan sesuai kemampuan peladen Anda.


Setelah semua selesai, silakan menyalakan ulang NGINX. Mari saya rekap untuk Anda:

  1. Gunakan SPDY untuk mempercepat koneksi HTTPS.
  2. Gunakan kunci dengan algoritma SHA256 atau lebih yang sudah divalidasi oleh CA.
  3. Gunakan protokol TLS teranyar dengan AES-GCM dengan RC4 sebagai cadangan.
  4. Gunakan tembolok untuk mengoptimasi penggunaan TLS.

Anda pun sudah memiliki peladen yang cukup handal. Anda bisa mempelajari teknik-teknik tambahan lain mengenai SSL, misalnya menggunakan OCSP.

Terakhir, Anda perlu mengedukasi pengguna Anda agar tidak memberikan sandi kepada siapa pun dan mengganti sandi secara periodik, misalnya 6 bulan sekali. Percuma punya infrastruktur yang handal tanpa pengguna yang paham.

Nota Bene

Gunakan pihak ketiga untuk menguji SSL. Saya menggunakan perkakas dari Qualys SSL Lab. Contoh hasil pengujian konfigurasi SSL pada Blog Staff UI.

SSL Labs test on Blog Staff UI. Yeah, we need to upgrade into SHA256. The certificate is issued not long ago.

SSL Labs test on Blog Staff UI. Yeah, we need to upgrade into SHA256. The certificate is issued not long ago.

Bacaan Lebih Lanjut

on 24 Oct 2014 03:24 AM

22 Oct 2014

The other day, I had problem accessing an HTTPS site from a Python script. Since I had no time to spend figuring out why (it was for a personal project anyway), I decided to make a reverse proxy using Apache. However, unlike the commonly setup reverse proxy, this one is to make an HTTPS site available as HTTP site.

This is what I needed to put in my Apache config.

    SSLProxyEngine On
    ProxyPass / https://that.secure.site/
    ProxyPassReverse / https://that.secure.site/

I also had to enable mod_proxy and mod_ssl which can be done easily (on Debian based system) by running the following command

# a2enmod proxy ssl

Then reload or restart Apache

# service apache2 reload

The most important bit in the config above is SSLProxyEngine On. Without this the proxy would not work!

on 22 Oct 2014 02:48 AM

Masalah lain yang saya temui setelah nyadar kalo tempat saya naro file RSS blog gak bisa diakses adalah ternyata si jadul PlanetPlanet kombinasi dg Python 2.7 punya masalah saat nyedot data dari situs https ini. Entah apakah ini kasus spesifik atau ngga, saya kurang tau :P

Saat saya menjalankan si PlanetPlanet, tiba2 dia ngeluarin exception di bawah ini.

Traceback (most recent call last):
  File "/anu/itu/planet/feedparser.py", line 1893, in _open_resource
    return opener.open(request)
  File "/usr/lib/python2.7/urllib2.py", line 400, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 418, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1215, in https_open
    return self.do_open(httplib.HTTPSConnection, req)
  File "/usr/lib/python2.7/urllib2.py", line 1174, in do_open
    h.request(req.get_method(), req.get_selector(), req.data, headers)
  File "/usr/lib/python2.7/httplib.py", line 958, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 992, in _send_request
  File "/usr/lib/python2.7/httplib.py", line 954, in endheaders
  File "/usr/lib/python2.7/httplib.py", line 814, in _send_output
  File "/usr/lib/python2.7/httplib.py", line 776, in send
  File "/usr/lib/python2.7/httplib.py", line 1161, in connect
    self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
  File "/usr/lib/python2.7/ssl.py", line 381, in wrap_socket
  File "/usr/lib/python2.7/ssl.py", line 141, in __init__
TypeError: must be _socket.socket, not _socketobject

Nanya2 oom google ngga membawa hasil yang menggembirakan. Berhubung saya lagi males ngecek2 lebih jauh, jadi saya putuskan tuk bikin situs blog ini tersedia dalam modus http juga walau cuma bisa diakses dari localhost :P ehh ternyata sepertinya si wordpress kekeuh sekali https, tetap https (duh). Berhubung yg ini gagal, saya coba cara lain dg bikin reverse proxy aja :D proxy yang membungkus situs https tuk disediakan dalam http.

Kira2 begini konfigurasinya


    SSLProxyEngine On
    ProxyPass / https://fajran.web.id/
    ProxyPassReverse / https://fajran.web.id/


Nyalakan modul mod_proxy dan mod_ssl dan restart/reload si apache.

Konfigurasi di atas mirip dg cara membuat reverse proxy biasa, namun ada bagian penting yang ngga boleh kelupaan ditulis: SSLProxyEngine On. Tanpa ini, proxy dari http ke https ngga bisa jalan.

on 22 Oct 2014 02:39 AM

21 Oct 2014

Malam ini saya iseng sedang cari domain baru dot id dengan niche android. Tidak sengaja saya coba cek who is alias cek pemilik nama domain android.co.id.

Ternyata domain tersebut sudah dimiliki oleh Google sang pembesut OS Android. Namun ada yang sedikit janggal di who is domain tersebut. Pada kolom Registrant Contact terdapat nama LeeT HaXor yang jika saya search Google adalah hacker yang pernah hack Google malaysia.

Saya rasa google kurang memperhatikan domain-domain yang berada di bawah naungannya, sehingga tidak menyadari jika salah satu domainnya telah diretas.

on 21 Oct 2014 02:10 PM

18 Oct 2014

OS X Yosemite sudah dirilis kemarin tanggal 17 Oktober 2014, tepat beberapa jam setelah Apple Live Event untuk memperkenalkan beberapa produk baru Apple. OS X Yosemite banyak miliki perubahan dari sisi desain, perubahan desain besar besaran OS X yang meninggalkan desain Skeuomorphism (desain dengan meniru object asli sebagai inspirasi) ke Desain Flat seperti UI iOS 7 yang sudah mengggunakan desain flat terlebih dahulu. Disamping beberapa perubahan desain banyak perubahan system lain yang makin nyaman menggunakan OS X.
Saya sendiri sudah mencoba OS X Yosemite sejak Publik Beta, pertama saya install adalah mecoba beberapa aplikasi yang saya gunakan sehari hari untk berkerja. dari beberapa aplikasi yang migrasi dari OS X Mavericks ke Yosemite memang mengalami masalah, terutama dari beberapa aplikasi yang menggunakan engine X11 gagal untuk membuka aplikasi secara normal seperti Inkscape, dan Gimp. Masalah ini terjadi engine Xquartz masih dalam pengembangan yang mengakibatkan Library Xquartz tidak berjalan di OS X Yosimite, tapi bagi saya menunggu rilis versi Xquartz yang baru terlalu lama dengan tidak mencoba OS X Yosemite yang baru dengan beberapa kebutuhan lain, yang saya butuhkan di Yosemite misalnya Xcode iOS 8.1.
Bagi Designer FOSS seperti saya kedua aplikasi ini sangat penting bagi kelangsungan pekerjaan saya, untuk migrasi ke Yosemite saya harus memastikan kedua aplikasi ini berjalan mulus di Yosemite. Setelah rillis OS X Yosemite versi final Inkscape dan Gimp masih menjadi kendala, tapi bagi saya yang sudah mencoba OS X Yosemite sejak beta publik tidak jadi masalah bagi saya. Inkscape dan Gimp tidak bisa berjalan di engine X11 bagi saya tidak masalah karena Inkscape versi Native OS X masih menjadi pilihan. Memang ada beberapa kekurang menggunakan Inkscape versi native yaitu beberpa yang saya rasakan pada saat perubahan warna dari suatu object render warna terasa lebih lamban, tapi yang saya suka di Inkscape Native adalah short cut keyboard sudah menyesuaikan standar OS X misalnya untuk copy object tinggal menggunakan shortcut (Command + C) tanpa perlu lagi menggunakan shortcut keyboard standar X11.
Untuk mendapatkan Inkscape versi Native saya sebenarnya sudah mencobanya sejak OS X Montain Lion tapi dikarenakan engine X11 masih berjalan lancar penggunaan Inkscape Native belum saya maksimalkan, setelah rilis OS X Yosemite Inkscape Native saya gunakan untuk menopang pekerjaan saya.

Inkscape Native OS X Yosemite dapat diunduh di sini
Gimp Native OS X Yosemite unduh di sini

Inkscape Native ini sudah saya Kustiomisi dengan Flat style UI, jadi yang menggunakan Inkscape Native OS X dari blog ini, akan terasa perbedaannya dari segi UI Inkscape yang seragam dengan aplikasi lain di OS X Yosemite.

on 18 Oct 2014 02:26 AM

17 Oct 2014

Untuk memenuhi kuota menulis, saya akan menulis mengenai pemasangan Owncloud. Ini bukan karena Snowden yang memberitahukan untuk menghindari menggunakan Facebook, Google, dan Twitter. Tetapi, karena saya memang sedang iseng tentang perangkat lunak ini. Coba ada yang meminta untuk mencoba sesuatu yang lain, saya pasti menulis tentang itu.

Berbeda dengan konfigurasi biasa, saya menggunakan NGINX sebagai peladen HTTP dan PHP-FPM sebagai penyedia PHP. Hal ini karena ada WAF yang bisa dikonfigurasi nantinya apa bila Anda mau membuat ini serius. Ada banyak tambahan yang bisa dibuat dari Owncloud.

Yak, tanpa banyak basa-basi, mari kita memasang. Saya asumsikan Anda telah memasang NGINX dan MySQL pada peladen Anda. Saya juga mengasumsikan Anda menggunakan Debian atau turunannya (BlankOn atau Ubuntu).

Menyiapkan Basisdata

Pertama-tama, siapkan basisdata terlebih dahulu, masuk ke dalam terminal MySQL sebagai Administrator:

sudo mysql --defaults-file=/etc/mysql/debian.cnf

Buat basisdata dan berikan hak akses ke klien Owncloud:

CREATE DATABASE awansendiribd;
GRANT ALL PRIVILEGES ON awansendiribd.* TO 'megawan'@'localhost' IDENTIFIED BY 'week^u2heoQuuv]ah9sah]B~ahShie?t';

Saya menggunakan pwgen untuk membuat sandi yang aman:

pwgen -y 32

Anda bisa buat sendiri sandi Anda, ganti nama basisdata, dan nama klien basisdata yang akan digunakan. Hal ini agar Owncloud Anda bisa aman. Belajarlah untuk aman.

Menyiapkan Rumah

Pada konfigurasi kali ini, saya menggunakan pengguna tersendiri untuk Owncloud. Bukan pengguna baku www-data, tetapi yang berbeda — Anda pun bisa berbeda dari tutorial ini. Caranya:

sudo adduser --home /srv/awani --disabled-password awani

Saya membedakan instalasi Owncloud dengan datanya. Mari buat kedua direktori tersebut.

sudo -u awani mkdir /srv/awani/{app,data}

Selanjutnya, unduh dan pasang Owncloud. Pada penulisan ini, yang terbaru adalah Owncloud 7.0.2. Silakan cek versi terbaru yang mungkin sudah ada saat Anda mencoba ini lagi di masa mendatang.

wget https://download.owncloud.org/community/owncloud-7.0.2.tar.bz2 -O- | \
sudo -u awani tar xvfj - -C /srv/awani/app --strip 1

Sesuaikan dengan direktori Anda sendiri.

Menyiapkan konfigurasi Peladen

Ada dua yang perlu disiapkan:

  1. Peladen PHP-FPM untuk konfigurasi PHP5.
  2. Peladen NGINX untuk HTTPS.

Sekarang konfigurasi PHP-FPM.

Konfigurasi PHP-FPM

Buat berkas konfigurasi /etc/php5/fpm/pool.d/owncloud yang berisi:

;; I'm using Socket-based connection because it's safer.
;; Set only Owncloud user
user = awani
group = awani
listen = /tmp/php5-awan-awan.sock
listen.owner = awani
listen.group = awani
listen.mode = 0660

;; Set default server pools
pm = dynamic
pm.max_children = 20 
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5 

;; Set PHP5 logging
chdir = /
php_admin_value[error_log] = /var/log/fpm-php.awan-awan.log
php_admin_flag[log_errors] = on

;; Longer execution time and bigger upload size.
php_admin_value[max_execution_time] = 300 
php_admin_value[upload_tmp_dir] = /tmp
php_admin_value[upload_max_filesize] = 16G
php_admin_value[post_max_size] = 16G

Jumlah peladen itu tidak saya rubah. Silakan Anda sesuaikan dengan kebutuhan dan kemampuan mesin Anda. Berkas yang bisa diunggah pun sampai 16GB. Secara teori, sih, berkat Menkominfo yang mau turun, tidak mungkin ada berkas sebesar itu yang diunggah.

Setelah selesai, aktifkan Owncloud dan muat ulang PHP-FPM Anda.

sudo invoke-rc.d php5-fpm restart

Sekarang saatnya mengonfigurasi NGINX.

Konfigurasi NGINX

Asal Anda tahu, CA yang beredar di pasaran masih menggunakan enkripsi 1024-bit dan 2048-bit. Kalau pun ada yang 4096-bit, mereka menjual sertifikat dengan harga mahal. Itu sebabnya, saya menggunakan sertifikat yang ditandatangani sendiri.

Sedikit tambahan, Debian dan distro GNU/Linux terbaru lainnya menolak menyertakan CA yang masih 1024-bit. Makanya tempo hari kita gagal memasang Origin. Hal ini karena Origin masih menggunakan CA yang 1024-bit. Ya, itulah nasib keamanan sebatas ilusi.

Membuat Sertifikat Ditandatangani Sendiri (Self-signed Certificate)

Mari membuat sertifikat yang bisa ditandatangani sendiri:

sudo openssl req -newkey rsa:4096 -sha512 -x509 -days 3650 -nodes -out /etc/nginx/awan-awan.pem -keyout /etc/nginx/awan-awan.key

Selanjutnya membuat konfigurasi NGINX.

Membuat Konfigurasi NGINX

Buat berkas konfigurasi /etc/nginx/sites-available/owncloud dengan isi sebagai berikut:

server {
        listen 80;
        server_name awan.contoh.aja; # CHANGE THE HOSTNAME!
        return 301 https://$server_name$request_uri;  # enforce https

server {
        listen 443 ssl;
        server_name awan.contoh.aja; # CHANGE THE HOSTNAME!

        keepalive_timeout   70;

        ## DISABLE SSLv3 only TLS!
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
        ssl_certificate     awan-awan.pem;
        ssl_certificate_key awan-awan.key;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;

        # Path to the root of your installation
        root /srv/awani/app;

        client_max_body_size 16G; # set max upload size
        fastcgi_buffers 64 4K;

        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

        rewrite ^/f/(.*)$       /public.php?service=files&t=$1;

        index index.php;
        error_page 403 /core/templates/403.php;
        error_page 404 /core/templates/404.php;

        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;

        location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
                deny all;

        location / {
                # The following 2 rules are only needed with webfinger
                rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

                rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
                rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

                rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

                try_files $uri $uri/ index.php;

        #Path to default data directory
        location ~ ^/srv/awani/data/ {
            root /;

        location ~ ^(.+?\.php)(/.*)?$ {
                try_files $1 = 404;

                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$1;
                fastcgi_param PATH_INFO $2;
                fastcgi_param HTTPS on;
                fastcgi_pass unix:/tmp/php5-awan-awan.sock;

        # Optional: set long EXPIRES header on static assets
        location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires 30d;
                # Optional: Don't log access to assets
                access_log off;

Perhatikan kalau saya menghapus SSLv3 dari muka bumi. Setahu saya, hanya IE6 yang masih menggunakan SSLv3. Peramban modern sudah mendukung TLS. Bahkan, kalau mau lebih aman, silakan hapus selain TLSv1.2 agar aman dari gangguan SHARK.

Jalankan ulang NGINX.

sudo ngxensite owncloud 
sudo invoke-rc.d nginx restart

Sekarang saatnya memulai pemasangan.

Menyiapkan Konfigurasi Owncloud

Setelah semua berjalan sebagai mana mestinya, saatnya membuka peramban dan mengarahkan ke alamat yang telah dibuat. Nanti ada wisaya yang berisi satu halaman konfigurasi pengguna awal (Administrator), letak data, dan konfigurasi basisdata. Saya malas membuat cuplikannya, lebih baik saya arahkan saja.

Bagian pertama adalah membuat Administrator Owncloud.

Create an admin account

  • superman
  • r4NdomP4$sW()Rd

Bagian berikutnya adalah direktori menaruh data.

Data folder

  • /srv/awani/data

Lalu konfigurasi MySQL.

Configure the database

  • megawan
  • week^u2heoQuuv]ah9sah]B~ahShie?t
  • awansendiribd
  • localhost

Setelah itu semua selesai, lalu tekan tombol Finish Setup.

Tunggu sebentar dan hasilnya Anda siap untuk masuk.

Owncloud Login page

Owncloud Login page

Selamat mencoba dan bereksplorasi! Mohon bagi-bagi ilmu kalau ada yang baru.

Bacaan Lebih Lanjut

on 17 Oct 2014 07:35 AM

14 Oct 2014

Ternyata install Ubuntu Server di Windows Azure sangat mudah. Ubuntu Server yang saya coba adalah Ubuntu Server 14.04 LTS. Proses installasi berbeda yang biasa saya coba selama ini. Sebagai pengguna Ubuntu dan sejenisnya proses yang ditunjukan di dalam Windows Azure sangat memudahkan. Saya sempat mencatat proses installasi tahap demi tahap seperti tampak dibawah ini.

Jika Anda ingin mengetahui lebih lanjut Ubuntu di Windows Azure bisa mengikuti acara yang diselenggarakan MIC UGM, 17 Oktober 2014.
on 14 Oct 2014 12:19 PM

13 Oct 2014

Training Cisco Jakarta

Dedi Gunawan

ID-Networkers, Training Cisco Jakarta, Mikrotik,Juniper

1. Expert Level Trainer

Kami satu-satunya tempat training di indonesia yang memiliki Expert trainer di semua kompetensi perangkat jaringan.

2. Modul Bahasa Indonesia

Kami satu-satunya tempat training di indonesia yang mau repot-repot berbulan-bulan menyusun materi training sendiri dalam bahasa indonesia

Ini bukti komitmen kami sebagai upaya untuk memudahkan orang indonesia belajar networking dalam bahasanya sendiri sehingga lebih mudah untuk dipahami.

3.Gratis Ngulang Seumur Hidup

Kami memulai gerakan ini, agar misalnya seseorang yang sudah ikut training dan kemudian karena sesuatu hal seperti misalnya, pekerjaan tidak di network, setelah beberapa bulan karena jarang belajar kemudian lupa dll anda masih bisa masuk kembali ke dalam kelas secara gratis.

4. Garansi Lulus Ujian

selama mengikuti arahan yang kita berikan, untuk exam ccna, ccnp, mtcna, mtcre, mtcine, jncia, jncip dll,  mengikuti tahap2 an belajar yang diberikan, maka tidak perlu khawatir tidak lulus exam, sejauh ini ya lulus-lulus aja. adapun jika misalnya karena sesuatu hal tidak lulus, anda boleh mengambil training lain secara gratis, bahkan boleh training level diatasnya yang harganya lebih tinggi.

5. Komunitas Networkers Paling Aktif

Selesai training bukan kemudian sudah, justru menjadi awal bergabungnya seseorang dengan komunitas networkers, yang mana tiap bulan diskusinya sangat aktif dan produktif seputar networking dan permasalahan-permasalah di pekerjaan sehari-harinya melalui milis id-networkers. diluar training juga secara rutin diselenggarakan workshop2 dengan materi seputar networking yang biayanya sangat murah yakni 50rb saja dan bahkan gratis.


on 13 Oct 2014 02:11 AM

10 Oct 2014

Beberapa bulan lalu saya diajak untuk berkolaborasi dalam acara Microsoft Azure Developer Camp 2014. Dari materi yang akan disampaikan, saya menyatakan kesediannya untuk ikut bergabung. Acara yang diselenggarakan oleh Microsoft Innovation Center UGM ini topiknya cukup padat dan bisa membuka wawasan kita bidang komputasi awan.

Microsoft Azure Developer Camp 2014 bakal diselenggarakan di Lab Jaringan Komputer Jurusan Teknik Elektro dan Teknologi Informasi UGM pada hari Jumat, 17 Oktober 2014 pukul 08.00 s.d. 15.30. Pada prinsipnya fasilitas Lab. Komputer telah mendukung pelatihan ini jika Anda ingin membawa komputer jinjing sendiri diperkenankan dengan persyaratan:
1. Windows 8.1, http://aka.ms/win8installer atau Windows 7 SP1 
2. Visual Studio Express 2013 atau versi lebih baru (Professional / Ultimate), http://aka.ms/vs12ex 
4. Akun Microsoft atau Live ID, http://account.live.com

Saya duga ada yang bertanya-tanya, wah... milisdad mulai menggunakan teknologi dari Microsoft. Saya tekankan bahwa saya belajar teknologi apapun selama saya mampu. Pada pelatihan ini fokus pada kolaborasi, sekali lagi kolaborasi.  Jika Anda berminat untuk mengikuti pelatihan ini klik tautan http://mic.ms/azurecampoct14. Pendaftaran paling lambat 15 Oktober 2014. Sampai jumpa di Microsoft Azure Developer Camp 2014.

on 10 Oct 2014 06:56 AM

Pada saat hendak mengunduh sebuah permainan, Origin selalu pada keadaan “Preparing Download”. Rasanya tidak mungkin semalaman ditinggal masih pada status tersebut. Ketika WINE dijalankan dari terminal GNU/Linux, saat mengunduh permainan ada pesan ini berulang-ulang:

fixme:netprofm:list_manager_GetConnectivity 0x17a640, 0x33cd98

Setelah saya mencari tahu, ternyata ada masalah pada Qt5Network.dll yang dipakai oleh Origin. Intinya, karena proses pemanggilan (system call) pada wineserver terlalu panjang, unduhan tak juga diproses. Maka, solusinya Qt5Network.dll harus ditambal untuk menggunakan tembolok pada TcpSockets. Hal ini mengurangi system call yang berlebihan sehingga unduhan bisa berjalan.

Ya, sudah, selanjutnya silakan pergi ke direktori Origin. Kebetulan saya menggunakan Playonlinux, normalnya ada di “~/.wine/drive_c/Program Files/Origin/”

cd "~/PlayOnLinux's virtual drives/wine_csmt/drive_c/Program Files/Origin"

Lalu, selanjutnya unduh tambalan untuk Qt5Network.dll.

wget "https://bugs.winehq.org/attachment.cgi?id=47911" -O Qt5Network.bin.patch

Selanjutnya, buat salinan Qt5Network.dll untuk berjaga-jaga.

cp Qt5Network.dll{,.orig}

Terakhir, tambalan dimulai.

patch -Np0 -i ~/Unduhan/Wine/Qt5Network.bin.patch

Lalu jalankan Origin dan siap untuk mengunduh.

Bacaan Lebih Lanjut

on 10 Oct 2014 12:26 AM

09 Oct 2014

Saya sebenarnya tidak menyukai EA dan Ubisoft. Praktik DRM mereka tidak saya sukai. Namun, rekan saya menyuruh saya untuk obyektif.

Ada permainan-permainan gratis yang diberikan oleh EA saat ini. Mungkin mereka berusaha merebut potongan kue yang lebih besar dari Steam. Ya, sudah, saya pun mencoba langsung memasang Origin.

Eh, ternyata ada galat seperti ini:

Origin: Online login is currently unavailable

Origin: Online login is currently unavailable

Yah. Untung saya cepat menemukan masalahnya. Menurut Galat #35902, galat ini disebabkan oleh karena sertifikat CA yang digunakan oleh EA sudah dibuang dari paket kumpulan CA Certifacates GNU/Linux yang terbaru. Hal ini karena GTE CyberTrust Global menggunakan 1024-bit. Astaga, di saat orang-orang sudah mulai menggunakan 4096-bit masih saja ada yang menggunakan enkripsi sepanjang itu.

Ah, sudahlah, saya tak sudi memasang sertifikat itu di komputer saya. Saya hanya akan memasang di lokal WINE saja. Intinya saya dapatkan dari artikel WineHQ.

Sebelum dimulai, saya mendapatkan sertifikat GTE CyberTrust Global dari TBS Internet. Caranya:

wget http://www.tbs-x509.com/GTECyberTrustGlobalRoot2018.crt

Atau gunakan aplikasi selain WGET untuk mengunduhnya.

Pertama-tama, pasang Internet Explorer 6. Cara paling mudah:

winetricks ie6

Atau gunakan PlayOnLinux untuk memasang komponen IE6.

Selanjutnya,  buka Control Panel. Caranya:

wine control

Lalu kemudian masuk ke Internet Options ▶ Content ▶ Certificates… ▶ Trusted Certification Authorities

Internet Properties

Internet Properties with Content tab open for installing certificate

Kemudian, pada Trusted Certification Authorities tekan tombol Import… dan pilih sertifikat yang kita sudah unduh (GTECyberTrustGlobalRoot2018.crt).

Trusted Certificate with GTE root certificate installed

Trusted Certificate with GTE root certificate installed

Selesai dan jalankan Origin seperti biasa.

on 09 Oct 2014 11:34 PM

04 Oct 2014

SANE going in-SANE

Arif Syamsudin

SANE is goin' wild!!! Yahoo!!! Heboh dikit gapapa lah ya :D. Lama ngga' memperbarui isi blog ini. Sebetulnya udah terfikir beberapa hal yang mau ditulis. Cuman realisasinya ajah yang dintar-ntar :).

Sekarang, mumpung lagi sempet ngoprek dikit, jadi saya coba tulis. Siapa tau ada yang ngalamin hal sama. Ini tentang kelakuan pemindai (scanner) yang ngga' kedeteksi pas dijalanin sama aplikasi, yang alih-alih malah kebuka webcam.

Webcam? Iya, webcam. Jadi begitu saya buka aplikasi pemindai seperti SIMPLE SCAN, yang terdeteksi oleh aplikasi SIMPLE SCAN malah webcam. Jadi, yang ketangkep sama malah poto. Macam begini:

Gambar 1. Pembuktian dengan aplikasi SIMPLE SCAN
Bahkan, dengan aplikasi yang sedikit "canggih" seperti GSCAN2PDF, yang kedetek cuman si webcam. Padahal, kabel data pemindai serta kabel tenaga sudah tercolok dengan baik dan rapih pada laptop dan pencetak semua-jadi-satu yang saya gunakan. Hasil tangkepan layar pakek GSCAN2PDF kek gini nih:

Gambar 2. Profil pemindai menggunakan GSCAN2PDF
Oia, sebagai informasi perangkat-perangkat yang saya gunakan adalah:

  1. Laptop Sony VAIO VPCEG1BFX
  2. Sistem operasi GNU/Linux BlankOn 9 a.k.a Suroboyo
  3. Pencetak semua-jadi-satu HP Deskjet F2401 
  4. Aplikasi pemindai GSCAN2PDF
Lantas, apa mesti saya mula-ulang dan menggunakan MS-Windows supaya saya bisa menggunakan pemindainya? Hmmm, yang kepikiran cuman repot salin tempel datanya sich. Walaupun ujung-ujungnya itu hasil pindai akan saya unggah ke layanan-di-awan.

Akhir, secara liar, terfikir untuk mencari tau apakah aplikasi SANE sudah terpasang.

# aptitude search sane

Loh, ternyata sudah. Apalagi ya? Ah...coba pasang aplikasi LIBSANE-DEV ajah lah kalo begituh.

# apt-get install libsane-dev

Baiklah. Setelah terpasang, saya coba ulang lagi pengidentifikasian pemindai menggunakan SIMPLE SCAN dan GSCAN2PDF. Hmmm, masih belom bisa jugak. Mula-ulang! Hmmm...setelah masuk, buka GSCAN2PDF, eh...eh...bisa. BISA!!! Pemindainya sudah terdeteksi sekarang. Walaupun ada pilihan si webcam. Tapi gapapa, yang penting udah bisa :D. Alhamdulillah. Pemindai terpasang, semoga bisnis jadi lancar ;).

Solusi yang saya tuliskan di sini, bisa jadi belom tentu aplikatif ketika diterapkan di sistem lain. Jadi, silahkan mengeksplorasi internet untuk bahan bacaan lebih lanjut. Demikian, semoga membantu ya :).
on 04 Oct 2014 05:04 PM

03 Oct 2014

Kebetulan hari ini saya mengubah tata letak meja kerja saya, eh malamnya ada mensen dari +Dedy Hariyadi yang menujukkan tatak letak meja komputer dari +David Revoy designer FOSS Prancis, memang meja dari David lumayan keren degan beberapa perangkat lunak Free Open Source. Saya keseharian kerja saya menggunakan Aplikasi Desain Grafis FOSS, hanya bedanya dengan David saya menggunakan Sistem Operasi OS X. 

Perangkat lunak yang saya gunakan 100% Bebas digunakan :
1. Inkscape (Open Source) 
Saya menggunakan Inkscape untuk mendesain vector terutama untuk membangun dari design Fluid UX dan penerapan UI Mobile iOS, Android, Web Design, dan mendesain Launcher Icons Aplikasi untuk aplikasi mobile. situs http://www.inkscape.org/

2. Gimp (Open Source)
saya menggunakan GIMP untuk banyak manipulasi pada warna, atau format file gambar tertentu.

3. Skala View (Freeware) 
Skala view saya gunakan khusus untuk desain mobile. saya bisa melihat live preview langsung dari pixel per pixel resolusi layar dari perangkat mobile iphone, android dan beberapa tablet, untuk mendapatkan akurasi tatak letak dan warna yang sesuai dengan perangkat mobile. Aplikasi ini sangat membantu saya :) situs : http://bjango.com/mac/skalapreview/

4. Imagesmagick (Open Source)
Images Magic aplikasi yang membantu saya tapi saya biasanya saya gunakan untuk convert format gambar svg ke format png dan saya gunakan resize ukuruan hasil export gambar dari icons dalam julmah banyak hanya menggunakan satu perintah konsole, tentunya aplikasi ini saya jalankan dari Konsole Terminal OS X. situs : http://www.imagemagick.org/

5. Sublime Text Editor (Freeware)
Sublime Text Editor saya gunakan untuk convert gambar dari mockup UI Website Desain ke code HTML atau HTML5. situs : http://www.sublimetext.com/

Perangkat Keras yang saya gunakan :
Saya menggunakan satu MacBook Pro dengan terhubung dengan monitor IPS DELL Full HD. Untuk menggambar saya serahkan ke Apple Keyboard berpasangan dengan Apple Magic Trackpad dengan gesture yang nyaman saya gunakan untuk mendesain berbagai gambar maupun UX dan UI. Satu MacBook Pro dengan spesifikasi lumayan upgarade dengan SSD+HDD dengan upgrade ram 16GB dan beberapa perangkat mobile dengan berbagai resolusi layar. 

1. Laptop MacBook Pro 8.1
Procesor Intel Core i5 2.3 GHz 
SSD 120GB (OS X) 
HD 500GB (Data) 
VGA IntelHD 3000 512MB

2. Monitor DELL S2240L
Display wide 22 inches 
IPS angle 179°
Full HD 1080p
Resolusi 1920x1080px
Color Gammut 80%

3. Drawing Apple Magic Trackpad
Five Multi Touch Gesture 
Tracking drawing wide 5 inches

4. Preview Mobile Design
iPhone 4, iPhone 5, Xiaomi Redmi 1S, HTC One V, dan Ainol Novo 7.

Desain Letak Meja Kerja :
Desain tatak letak perangkat keras yang saya desain cenderung menggunakan konsep simple dan Clean, dengan penempatan MacBook Pro non mainstream. Saya sebut non mainstream karena MacBoook Saya letaknya tepat di belakang monitor, dengan sedikit jepitan agar bisa berdiri tegak, sebenarnya docking MacBook sudah ada yang memproduksi dengan desain yang lumayan bagus, tapi karena saya malas indent dari Negara luar, saya putuskan untuk meletakkan MacBook Pro dengan letak non Mainstream, dengan Letak seperti ini temperatur MacBook juga terjaga stabil, lagi lagi dengan sedikit penambahan Kipas kepiting di atas MacBook.
Baiklah segitu dulu sekelumit tata letak meja dan beberapa alat perang yang saya gunakan setiap hari untuk berkerja.  Bagaimana Dengan anda desain meja Kerja anda hari ini ? 

Tampak Samping : 

Tampak Belakang :

Tampak Atas :
on 03 Oct 2014 07:46 PM
Lubang keamanan shellshock pada beberapa mesin bersistem operasi juga berimbas ke Network Attached Storage (NAS). Apalagi NAS seperti QNAP masih menggunakan BASH v3.x tentu menjadi "sasaran empuk". Namun dengan sigap pihak QNAP melakukan perbaikan keamanan tersebut.

Langkah awal lakukan pemutakhiran firmware terlebih dahulu ke v4.1.1build0927, klik Control Panel | Firmware Update | Check for Update | Bersabar menunggu proses mengunduh dan menginstall. Walaupun sudah menggunakan firmware v4.1.1build0927 dan diuji menggunakan perintah env x='() { :;}; echo vulnerable' bash -c "echo this is a test" dengan hasil bahwa QNAP aman tetapi perlu ditambal.

2. Unduh Qfix for Bash security patch (For QTS4.1.1 only) v1.0.1_x86_ARM 20141001
3. Ekstrak berkas Qfix_Bash_update_1.0.1_20141001_x86_ARM.zip
4. Unggah Shellshock_1.0.1_all.qfix, Control Panel | Firmware Update | Firmware Update | Browse | Update System
5. Tentu sedikit bersabar untuk proses installasi dan reboot.

QNAP dengan firmware v4.1.1build0927 masih menggunakan Bash v3.x namun melalui perbaikan ini sudah terhindar dari shellsock.
on 03 Oct 2014 09:57 AM

29 Sep 2014

Ada teori diet atkins, diet keto (low-carb), diet low-fat, food combining, diet low-calorie, 3-hours diet, intermittent-fasting, paleo diet, dst..dst. Masing-masing teori ini sebagian besar dicetuskan oleh mereka yang punya latar belakang akademik yang bukan sembarangan. Masing-masing teorinya pun didukung dengan berbagai riset yang diklaim ilmiah. Masing-masing punya pengikut, dan masing-masing punya cerita sukses……. dan cerita gagal.

Lalu mana sebenarnya teori diet yang paling tepat, yang paling cepat menurunkan berat badan?


Pernah lihat atau minimal dengar tentang buku-buku atau seminar cara jadi kaya? Pernah menemukan orang-orang yang mengikuti petunjuk dari buku atau seminar tersebut lalu berhasil? Ada juga yang gagal?

Lalu sebenarnya mana teori tentang cara jadi kaya ini yang benar?

Kurang lebih jawabannya sama dengan yang di atas tadi menurut saya.

on 29 Sep 2014 09:13 AM

24 Sep 2014

Ceritanya lagi belajar Oracle pake ASM, saat coba menaikkan ASM secara manual (karena tiba-tiba saat server dinyalakan ASM nya nggak naik otomatis) muncul galat seperti dibawah ini:

-bash-3.2$ . oraenv
ORACLE_SID = [orcl] ? +ASM
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is /u01/app/oracle

-bash-3.2$ asmcmd
Connected to an idle instance.
ASMCMD> startup
ORA-01078: failure in processing system parameters
ORA-29701: unable to connect to Cluster Synchronization Service
Connected to an idle instance.

Solusinya :

Keluar dari asmcmd, kemudian jalankan command di bawah ini (jangan lupa pastikan SID=+ASM)

-bash-3.2$ crsctl start resource ora.cssd
CRS-2672: Attempting to start 'ora.cssd' on 'dbserver'
CRS-2679: Attempting to clean 'ora.diskmon' on 'dbserver'
CRS-2681: Clean of 'ora.diskmon' on 'dbserver' succeeded
CRS-2672: Attempting to start 'ora.diskmon' on 'dbserver'
CRS-2676: Start of 'ora.diskmon' on 'dbserver' succeeded
CRS-2676: Start of 'ora.cssd' on 'dbserver' succeeded

kemudian coba start kembali ASM via “asmcmd”.

-bash-3.2$ asmcmd
Connected to an idle instance.
ASMCMD> startup
ASM instance started

Total System Global Area  284565504 bytes
Fixed Size                  1336036 bytes
Variable Size             258063644 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted

ASMCMD> exit

Kemudian coba start database “orcl” nya.

-bash-3.2$ . oraenv
ORACLE_SID = [+ASM] ? orcl
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle

-bash-3.2$ sqlplus / as sysdba

SQL*Plus: Release Production on Wed Sep 24 09:47:41 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  347340800 bytes
Fixed Size                  1336456 bytes
Variable Size             297798520 bytes
Database Buffers           41943040 bytes
Redo Buffers                6262784 bytes
Database mounted.
Database opened.


on 24 Sep 2014 07:33 AM

09 Sep 2014

Pada bulan Mei lalu, saya mendapat kesempatan untuk presentasi dalam PyCon APAC 2014. Ini merupakan proposal pertama saya dalam PyCon. Masih banyak yang bisa diperbaiki! Saya masih perlu banyak belajar.

Brian Curtin, salah seorang direktur PSF, menulis di dalam blog, tentang bagaimana menulis proposal PyCon. Selamat membaca, semoga bermanfaat.

on 09 Sep 2014 08:26 PM

Rilis Video DebConf14

Zaki Akhmad

Komunitas Debian baru saja usai dengan debconf14. Tim video sudah merilis video konferensi ini. Wow, bananastastic!.

Saya jadi teringat, bagaimana saya berusaha membuat rekaman video kopdar Python Indonesia dengan segala keterbatasan sumber daya yang ada. Salut lah untuk tim video debconf14.

Di Indonesia sebenarnya saya lihat banyak pengguna Debian. Teman-teman di UI/ITB, misalnya. Namun belakangan dengan munculnya Ubuntu, saya kira generasi muda di Indonesia rasanya jadi lebih banyak yang menggunakan Ubuntu. Err tapi setahu saya sekarang teman-teman Blankon menggunakan Debian sebagai sistem base.

Selamat menonton! Bagi yang sudah menonton, tulisan resensi video akan berguna.

on 09 Sep 2014 06:43 AM

02 Sep 2014

masih ngomongin ngebangun usaha.
seperti artikel sebelumnya, sangat kecil kemungkinannya ketika memulai usaha, kemudian bisa langsung sukses.
yang sudah-sudah pasti gagal dan gagal lagi, gagal terus dan terus.
entah karena sepi, gak laku, kurang rame ataupun kurang sesuai target yang diinginkan

berikut beberapa mantan usaha yang sudah pernah saya jalani, gagal, kurang berhasil dan sudah saya tinggalkan tanpa pernah saya sesali...
- jualan kacang presto
- jualan nasi
- Pe eS an
- studio musik
- bikin web
- nulis buku
- jualan komputer
- kursus internet
- rental cd software
- google ads
- jualan anime naruto
- jualan dvd tutorial
- dll

ketika gagal, terjatuh dan kemudian bangkit lagi, kita sudah jauh lebih kuat, lebih terlatih, lebih berilmu daripada saat kita awal memulai.

seperti halnya orang belajar naik sepeda, ketika terjatuh semangat sekali untuk bangun kembali dengan satu keyakinan, saya coba lagi, tinggal dikit lagi saya akan bisa...

maka tips nya
1. sedini mungkin melatih diri memulai usaha, tujuannya buat menghabiskan jatah gagal dulu, karena apa? karena pasti gagal tidak mungkin tidak. usia2 anak sekolah adalah usia ideal untuk memulai usaha, usia anak kuliahan dah agak terlambat, tapi tidak mengapa. usia orang bekerja jg tetap masih bagus untuk mulai

2. kalau belajar berenang, jangan langsung pilih di lautan, minimal di kolam renang yang dangkal dulu.

banyak saya dengar kerja dulu buat kumpulin modal dulu yang banyak, kalau dah kumpul terus usaha, yang begini dah pasti gagalnya berdarah-darah, gak siap gagal, uangnya habis

gak percaya silahkan tanya yang abis dapet pesangon trus bikin usaha, yang abis jual tanah warisan trus dipake modal usaha dll tanpa pernah punya pngalaman usaha sebelumnya, banyak yg gagalnya parah.

untuk awal belajar usaha, jangan langsung di modal puluhan juta, ratusan juta dst nya, main di modal recehan dulu. ingat dalam usaha yang harus banyak bukanlah modal, ini pemikiran yang salah dan sesat.

yang lebih pas, yang harus banyak adalah keuntungan serta manfaat. contoh dulu saya jualan dvd tutorial untungnya bisa dapet jutaan padahal modal cuman 1 box dvd kosong yang harganya gak nyampe 50rb untungnya ratusan persen jauh diatas modalnya.
on 02 Sep 2014 10:35 PM

28 Aug 2014

Wanita Memang Menggoda

Dedi Gunawan

Kisah pilu seorang tabiin yg hafidz qur'an namun murtad pd saat berjihad. Hny krn asmara..

Lelaki gagah itu mengayunkan pedangnya menebas tubuh demi tubuh pasukan romawi. Ia adalah seorang tabiin (270H) yg hafal qur'an. Namanya adalah sebaik-baik nama, Abdullah bin Abdurrahim.

Keimanannya tak diragukan. Adakah bandingannya didunia ini seorang mujahid nan hafal quran. Namun lacur akhir hayatnya mati dalam kemurtadan dan hilang hafalannya melainkan 2 ayat saja yg tersisa. Yaitu surah al hijr ayat 2-3, rubamaa yawaddulladziina kafaru lau kaanu muslimiin, dzarhum ya`kulu wayatamatta'u wayulhihimul amal-fasaw faya'lamuun. (Org2 kafir itu diakhirat nnt sering menginginkan andai didunia dulu mrk muslim. Biarkanlah mrk mkn dn senang2, dilalaikan oleh angan2 kosong belaka, kelak mrk akan tahu akibatnya).

Seolah ayat ini adalah kutukan sekaligus peringatan اَللّه yg terakhir namun tak digubrisnya. Apakah penyebabnya?

Penyebabnya adalah wanita. Inilah kisahnya;

Pedangnya masih berkilat2 memantul sinar mentari. Masih segar berlumur merahnya darah org romawi. Ia hantarkan org romawi itu ke neraka dg pedangnya. Tak disangka nantinya dirinyapun dihantar ke neraka oleh seorang wanita romawi, tdk dg pedang melainkan dg asmara. Kaum muslimin sedang mengepung kampung romawi. Tiba2 mata Abdullah tertuju kpd seorang wanita romawi di dalam benteng. Kecantikan dan pesona wanita pirang itu begitu dahsyat mengobrak-abrik hatinya. Dia lupa bahwa tak seorangpun dijamin tak lolos su'ul khotimah.

Dia lupa bahwa maksiat dan pandangan haram adalah gerbang kekufuran. Tak tahan, iapun mengirimkan surat cinta kpd wanita itu. Isinya kurang lebih: "Adinda, bgm caranya agar aku bs smp ke pangkuanmu?" Perempuan itu mjwb: "Kakanda, masuklah agama nashrani maka aku jd milikmu."

Syahwat telah memenuhi relung hati Abdullah sampai2 ia mjd lupa beriman, tuli peringatan dan buta alquran. Hatinya terbangun tembok anti hidayah.

Khotamallaahu 'ala qulubihim wa'ala sam'ihim wa'ala abshorihim ghisyawah...
Astaghfirullah, ma'adzallah. Pesona wanita itu telah mampu mengubur imannya di dasar samudra. Demi tubuh cantik nan fana itu ia rela tinggalkan islam. Ia rela murtad.

Menikahlah dia didalam benteng. Kaum muslimin yg menyaksikan ini sngt terguncang.

Bgm mungkin? How come? Bgm bisa seorg hafidz yg hatinya dipenuhi alqur'an meninggalkan اَللّه dn mjd hamba salib? Ketika dibujuk utk taubat ia tak bs.

Dikatakannya bhw ia telah lupakan qur'an kecuali 2 ayat diatas sj dan ia bahagia hidup berlimpah harta dan keturunan bersama kaum nashrani. Dalam keadaan spt itulah dia sampai wafatnya.

Ya اَللّه seorang hafidz nan mujahid saja bs Kau angkat nikmat imannya berbalik murtad jika sudah ditetapkan murtad, apa lg hamba yg bnyk cacat ini. Tak punya amal andalan.

Saudaraku, doakan aku dan aku doakan pula kalian agr اَللّه lindungi kt dr fitnah wanita dan fitnah dunia serta dihindarkan dr ketetapan yg buruk diakhir hayat.

Ma taraktu ba'di fitnatan adhorro 'ala ar rijaal min nisaa...

"Tidaklah aku tinggalkan setelahku fitnah yg maha dahsyat bahayanya bagi lelaki kecuali fitnah wanita" (muttafaq 'alaih).

Disarikan dr tulisan DR. Hamid Ath Thahir dlm buku Dibawah Kilatan Pedang (101 kisah heroik mujahidin)
on 28 Aug 2014 01:04 PM


Pada tulisan kali ini, saya akan membahas tentang replikasi master-slave di mysql pada Ubuntu (Catatan: Di debian pun dengan cara yang sama). Untuk melakukan replikasi kita membutuhkan setidaknya dua buah host, pada kali ini saya menggunakan dua mesin dengan rincian:

  • master
  • slave

Setup mysql

Dengan asumsi kita mempunyai hak ases sudo dan belum terpasang maka kita harus melakukan pemasangan mysql server dengan cara sebagai berikut:

udienz@ubuntu:~$ sudo apt-get install mysql-server -y

Membuat pengguna replika

Dalam replikasi, kita membutuhkan user yang mempunyai hak untuk melakukan ke semua/satu database. Untuk itu silakan lakukan perintah dibawah ini pada master dan slave:

udienz@ubuntu:~$ mysql -u root -p

Anda akan di tanyakan kata sandi dari root, silakan isi kata sandi root anda. Setelah itu silakan ketik perintah dibawah ini:

mysql> create user 'penyalin'@'%' identified by '17agustusmerdeka!';
Query OK, 0 rows affected (0.00 sec)

mysql> grant replication slave on *.* to 'penyalin'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


Mengatur master

Untuk mengatur salah satu mesin menjadi master, silakan mengikuti langkah berikut:

udienz@master:~$ sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.orig
udienz@ubuntu:~$ sudo vim /etc/mysql/my.cnf

Langkah selanjutnya adalah mengubah harga dari variabel berikut:

  • server-id, silakan tanda # dibuang (yang biasanya di sebut dengan tanda komentar) dan diberikan nilai idientik dan tidak boleh sama dengan server lain
  • log_bin, silakan menghilangkan tanda # sehingga menjadi log_bin = /var/log/mysql/mysql-bin.log
  • bind-address, silakan di isi dengan ip yang ada atau untuk running di semua ip yang tersedia di mesin.
  • Saya menambahkan isian untuk mengatur agar mysql tidak mereplikasi dan tidak memasukkan beberapa database ke log.

Dan berikut adalah perbedaan dari pengaturan yang saya buat

udienz@master:~$ diff -Nurp /etc/mysql/my.cnf.orig /etc/mysql/my.cnf
--- /etc/mysql/my.cnf.orig	2014-08-28 11:48:09.054434158 +0700
+++ /etc/mysql/my.cnf	2014-08-28 11:50:40.920524933 +0700
@@ -44,7 +44,7 @@ skip-external-locking
 # Instead of skip-networking the default is now to listen only on
 # localhost which is more compatible and is not less secure.
-bind-address		=
+bind-address		=
 # * Fine Tuning
@@ -84,10 +84,18 @@ log_error = /var/log/mysql/error.log
 # The following can be used as easy to replay backup logs or for replication.
 # note: if you are setting up a replication slave, see README.Debian about
 #       other settings you may need to change.
-#server-id		= 1
-#log_bin			= /var/log/mysql/mysql-bin.log
+server-id		= 1921685727
+log_bin			= /var/log/mysql/mysql-bin.log
 expire_logs_days	= 10
 max_binlog_size         = 100M
 #binlog_do_db		= include_database_name
 #binlog_ignore_db	= include_database_name

Kemudian cek kondisi master dengan perintah berikut:

mysql> show master status;
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                                 |
| mysql-bin.000001 |      969 |              | information_schema,phpmyadmin,performance_schema |
1 row in set (0.01 sec)

Dari hasil diatas mohon untuk mengingat hasil dari File yaitu mysql-bin.000001 dan Position yaitu 969 karena nantinya akan berguna bagi slave.

Langkash selanjutnya adalah mengexport database yang ada pada mesin master untuk diimport pertamakali di slave. Kenapa? dengan asumsi database sudah ada di master yang kemudian di slave, maka slave membutuhkan posisi start awal untuk melakukan replikasi, buka dari posisi awal database di master melainkan posisi sekarang di master.

udienz@master:/tmp$ mysqldump -u root -p pdns > pdns.sql
Enter password: 
udienz@master:/tmp$ ls -lah
total 16K
drwxrwxrwt  2 root   root   4.0K Aug 28 12:23 .
drwxr-xr-x 22 root   root   4.0K Aug 27 11:30 ..
-rw-rw-r--  1 udienz udienz 5.7K Aug 28 12:23 pdns.sql

Pengaturan slave

Silakan mengatur mysql di slave, pada intinya hampir sama dengan master, namun terdapat penambahan opsi relay-log dan server-id yang berbeda. Pada slave saya perbedaan dari config awal adalah sebagai berikut:

udienz@slave:~$ diff -Nurp /etc/mysql/my.cnf.orig /etc/mysql/my.cnf
--- /etc/mysql/my.cnf.orig	2014-08-28 12:25:37.864440783 +0700
+++ /etc/mysql/my.cnf	2014-08-28 12:27:19.495167636 +0700
@@ -44,7 +44,7 @@ skip-external-locking
 # Instead of skip-networking the default is now to listen only on
 # localhost which is more compatible and is not less secure.
-bind-address		=
+bind-address		=
 # * Fine Tuning
@@ -84,10 +84,17 @@ log_error = /var/log/mysql/error.log
 # The following can be used as easy to replay backup logs or for replication.
 # note: if you are setting up a replication slave, see README.Debian about
 #       other settings you may need to change.
-#server-id		= 1
-#log_bin			= /var/log/mysql/mysql-bin.log
+server-id		= 192168577
+log_bin			= /var/log/mysql/mysql-bin.log
+relay-log               = /var/log/mysql/mysql-relay-bin.log
 expire_logs_days	= 10
 max_binlog_size         = 100M
 #binlog_do_db		= include_database_name
 #binlog_ignore_db	= include_database_name

Restart daemon dari mysql dan import database dari master.

udienz@slave:~$ scp -r . 
The authenticity of host ' (' can't be established.
ECDSA key fingerprint is 4a:2b:a5:69:ee:98:72:f2:7a:e1:ff:22:09:83:ee:73.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '' (ECDSA) to the list of known hosts.
udienz@'s password: 
pdns.sql                                                                                                                          100% 5827     5.7KB/s   00:00    
udienz@slave:~$ sudo /etc/init.d/mysql restart
 * Stopping MySQL database server mysqld                                                           [ OK ] 
 * Starting MySQL database server mysqld                                                                                                                     [ OK ] 
 * Checking for tables which need an upgrade, are corrupt or were 
not closed cleanly.
udienz@slave:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql&gt; create database pdns;
Query OK, 1 row affected (0.00 sec)

mysql&gt; exit
udienz@slave:~$ mysql -u root -p pdns &lt; pdns.sql 
Enter password: 

Masuk lagi ke mysql di slave untuk mengatur server master yang akan di replika

udienz@slave:~$ mysql -u root -p
mysql> slave stop; 
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CHANGE MASTER TO MASTER_HOST = '', MASTER_USER = 'penyalin', MASTER_PASSWORD = '17agustusmerdeka!', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 969; 
Query OK, 0 rows affected (0.07 sec)

mysql> slave start;
Query OK, 0 rows affected (0.00 sec)

Kemudian cek status dari slave, pastikan bahwa Slave_IO_Running dan Slave_SQL_Running mempunyai nilai YES

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_User: penyalin
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 969
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
          Replicate_Ignore_DB: performance_schema,test,information_schema
                   Last_Errno: 0
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 969
              Relay_Log_Space: 409
              Until_Condition: None
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
               Last_SQL_Errno: 0
             Master_Server_Id: 1921685727
1 row in set (0.00 sec)


Dan pastikan di master sudah ada slave yang tersambung

mysql> show slave hosts;
| Server_id | Host | Port | Master_id  |
| 192168577 |      | 3306 | 1921685727 |
1 row in set (0.00 sec)

Jika terdapat problem silakan ketik


Bagaimana membuktikan kalau replikasi master-slave nya berhasil? silakan membuat database baru di master, atau membuat record baru di master. maka akan tampil di slave.


mysql> INSERT INTO domains (id, name, master, last_check, type, notified_serial, account) VALUES ('', 'ubuntu-xxx.com', NULL, NULL, 'NATIVE', NULL, NULL);
Query OK, 1 row affected, 1 warning (0.10 sec)


mysql> select * from domains;
| id | name           | master | last_check | type   | notified_serial | account |
|  2 | ubuntu-xxx.com | NULL   |       NULL | NATIVE |            NULL | NULL    |
1 row in set (0.00 sec)
on 28 Aug 2014 06:11 AM

27 Aug 2014

Lihat Penerapan Powerdns untuk blocking situs porno (part 1) untuk part 1

Download list situs porno.

Untuk mendapatkan list situs porno, saya menggunakan urlblacklist sebagai acuan. Silakan download pada halaman berikut

ubuntu:/tmp$ w3m http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&amp;file=bigblacklist
ubuntu:/tmp$ ls -1
ubuntu:/tmp$ tar -xzvf bigblacklist.tar.gz
ubuntu:/tmp$ cd blacklists/porn/
ubuntu:/tmp/blacklists/porn$ ls
domains  expressions  urls
ubuntu:/tmp/blacklists/porn$ mv domains domains-dump

Langkah selanjutnya adalah memastikan bahwa daftar domain tersebut (filename domains) memiliki content yang benar dengan syarat merupakan domain , bukan PTR maupun daftar IP.

ubuntu:/tmp/blacklists/porn$ egrep -v -e '[0-9]$' -e '^\.' domain-dump |  sed -e '/\//d' > domains


  • Egrep merupakan perintah untuk menampilkan kontent dengan kondisi tertentu
  • -v merupakan kebalikan dari match, contoh secara umum bila kita ingin mengetahui ada kata linux di berkas, cukup dengan perintah ‘grep linux *’. Jadi bila menerapkan -v maka yang terjadi adalah ‘semua dimunculkan kecuali xxxx’
  • -e ‘[0-9]$’, merupakan regex yang memastikan bahwa tidak ada dalam daftar yang mempunyai akhiran numerik. Ini untuk mengantisipasi dalam daftar mengandung IP address
  • -e ‘^\.’, expresi ini akan mencari kondi dimana dalam daftar tersebut mempunyai awalan ‘\.’ dibaca ‘slash dan titik’. contoh \.udienz.my.id
  • domain-dump, berkas yang berisikan daftar domain
  • sed -e ‘/\//d’, merupakan perintah untuk membuang karakter / di akhiran domain, contoh: udienz.my.id/

Langkah selanjutnya adalah bagaimana caranya dari daftar domain berikut (dalam hal ini isi dari berkas domains) diimport ke powerdns. Dikarenakan powerdns menggunakan mysql record dalam melakukan tugasnya, maka kita tinggal membuat membuat semacam database untuk daftar domain porno. Saya membuat bash script kecil kecilan untuk import domain ke database.

Catatan: Bila diperhatikan dari script diatas, perhatikan letak berkas domains yang berisikan daftar domain porno.

Setelah saya eksekusi script diatas, pastikan di mysql database sudah tersedia records dns nya dengan cara sebagai berikut:

ubuntu:~$ mysql -u pdns -p17agustus pdns -e 'select * from domains limit 0,10;'
| id | name                      | master | last_check | type   | notified_serial | account |
|  1 | -xxx.com                  | NULL   |       NULL | NATIVE |            NULL | NULL    |
|  2 | 0--0--7--hardcoresex.dk   | NULL   |       NULL | NATIVE |            NULL | NULL    |
|  3 | 0--ass-cinema-newsp.da.ru | NULL   |       NULL | NATIVE |            NULL | NULL    |
|  4 | 0--bondage.dk             | NULL   |       NULL | NATIVE |            NULL | NULL    |
|  5 | 0--fightingshaving.da.ru  | NULL   |       NULL | NATIVE |            NULL | NULL    |
|  6 | 0--foodwarez.da.ru        | NULL   |       NULL | NATIVE |            NULL | NULL    |
|  7 | 0--gratis.dk              | NULL   |       NULL | NATIVE |            NULL | NULL    |
|  8 | 0--lesbians.dk            | NULL   |       NULL | NATIVE |            NULL | NULL    |
|  9 | 0--oralsex.dk             | NULL   |       NULL | NATIVE |            NULL | NULL    |
| 10 | 0--sex.dk                 | NULL   |       NULL | NATIVE |            NULL | NULL    |

Pastikan juga domain nya mempunyai record A/NS/SOA di database dengan cara sebagai beikut (misal domain 0–sex.dk dengan domain id 10):

ubuntu:~$ mysql -u pdns -p17agustus pdns -e 'select type,content from records where domain_id = '10' limit 0,10;'
| type | content                                                                          |
| SOA  | pdns.sby.rad.net.id hostmaster.sby.rad.net.id 2014082716 10800 1800 604800 86400 |
| A    |                                                                        |
| NS   | localhost                                                                        |
| MX   | 0--sex.dk                                                                        |
| A    |                                                                        |

Cek juga dengan dig

ubuntu:~$ dig any @localhost 0--sex.dk

; <<>> DiG 9.9.5-3-Ubuntu <<>> any @localhost 0--sex.dk
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35740
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

; EDNS: version: 0, flags:; udp: 2800
;0--sex.dk.			IN	ANY

0--sex.dk.		3600	IN	SOA	pdns.sby.rad.net.id. hostmaster.sby.rad.net.id. 2014082716 10800 1800 604800 86400
0--sex.dk.		3600	IN	MX	0 0--sex.dk.
0--sex.dk.		3600	IN	NS	localhost.
0--sex.dk.		3600	IN	A

;; Query time: 2 msec
;; WHEN: Wed Aug 27 17:31:12 WIB 2014
;; MSG SIZE  rcvd: 159

Selamat pdns anda sudah bisa melakukan bloking situs porno!

on 27 Aug 2014 10:34 AM

Untuk membloking situs porno, sebenarnya bisa dilakukan dengan powerdns. Berikut adalah langkah langkahnya.

Persiapan sistem

Sebelum memasang powerdns, alangkah baiknya memastikan sistem telah mendapatkan database paket terbaru. Saya menggunakan sumber dari buaya.klas.or.id untuk mendapatkan paket Ubuntu seperti dibawah:

Silakan simpan di /etc/apt/sources.list, kemudian update system.

$ sudo apt-get update
$ sudo apt-get dist-upgrade -y

Instalasi powerdns

Silakan ketik perintah dibawah ini untuk melakukan instalasi powerdns.

ubuntu:~$ sudo apt-get install mysql-server -y

Pada saat instalasi mysql-server kita akan ditanya kata sandi untuk mysql-server, kali ini saya menggunakan kata sandi merdeka. Selanjutnya melakukan pemasangan powerdns dan backendnya.

ubuntu:~$ sudo apt-get install pdns-server pdns-backend-mysql -y

Pada saat istalasi kita akan di beripilihan untuk mengatur database paket pdns-backend-mysql dengan dbconfig-common, saya memilik untuk YES. Kemudian silakan isikan katasandi mysql, dan memasukkan lagi kata sandi mysql untuk paket pdns-backend-mysql, kali ini saya menggunakan password 17agustus. Silakan pengaturan powerdns dengan perintah berikut:

ubuntu:~$ sudo cat /etc/powerdns/pdns.d/pdns.local.gmysql.conf 
# MySQL Configuration
# Launch gmysql backend

# gmysql parameters
# gmysql-socket=

Dikarenakan kita tidak menggunakan bind sebagai backend, maka kita harus mendisable pengaturan bind. Kemudian mengatur agar powerdns bisa menjadi resolver dengan menambahkan kolom recursor.

ubuntu:~$ cd /etc/powerdns/pdns.d/  
ubuntu:/etc/powerdns/pdns.d$ sudo mv pdns.simplebind.conf pdns.simplebind.conf.disabled
ubuntu:/etc/powerdns/pdns.d$ cd ..
ubuntu:/etc/powerdns$ sudo cp pdns.conf pdns.conf.orig
ubuntu:/etc/powerdns$ sudo sed -i -e '/^#/d' -e 's/ //g' -e '/^$/d' pdns.conf
ubuntu:/etc/powerdns$ sudo cat pdns.conf
ubuntu:/etc/powerdns$ sudo service pdns restart
 * Restarting PowerDNS Authoritative Name Server pdns

Langkah selanjutnya adalah mencoba apakah powerdns dapat berfungsi sebagai resolver dengan cara sebagai berikut:

ubuntu:/etc/powerdns$ host ubuntu.com localhost
Using domain server:
Name: localhost

ubuntu.com has address
ubuntu.com mail is handled by 10 mx.canonical.com.

Tips: Bila anda mempunyai network lain secarai client, anda dapat menambahkan network nya di isian allow-recursion

Selanjutnya di part 2

on 27 Aug 2014 08:32 AM

26 Aug 2014

Failed to run Bumblebee

Ronald Gautama

I have the common issue. When I try to run something through optirun, I get the following: [13395.278406] [ERROR]Cannot access secondary GPU - error: [XORG] (EE) intel(0): [drm] failed to set drm interface version: Permission denied [13]. [13395.278522] [ERROR]Aborting because fallback start is disabled. Specification: Ubuntu GNOME 14.04 NVIDIA Corporation GeForce GT 520M Nvidia 331 […]
on 26 Aug 2014 04:27 AM

25 Aug 2014

Now let’s try to write simple code.
Open your Arduino IDE and type the codes below. I will not explain about the coding in this article yet. Just try it first.
This code will tell arduino to turn on and turn off the led light on arduino board or supply 5 volt to pin 13 every 1 second continuously.

/* Program: Hello Word!!
   Code by: Taufan     */

const int pinLED = 13; // set pinLED as integer (number) with value13
void setup() {
pinMode(pinLED, OUTPUT); //set pin number 13 as Output.

void loop() {
digitalWrite(pinLED, HIGH); //supply voltage 5 volt via pin 13
delay(1000); //delay (keep turn on) for 1000 milli second (1 second).
digitalWrite(pinLED, LOW); //turn off the voltage at pin 13.
delay(1000); // keep turn off for 1 second
//repeat again.. (loop)
After you type the codes, you verify it first or upload it to arduino board to run the program.
To verify the program, just click the ‘verify button’ with sign ‘‘. Verify mean, it only check if there is any error codes.
Or, you can press ‘Upload button’. It will verify and upload the codes at the same time to Arduino board.

Compiling in process…

Compiling and uploading the codes to arduino board is done. You can see the information at the bottom. Your total codes is 1,076 bytes of 32,256 byte maximum that you upload to arduino.

You can check the result at your arduino board. The program will tell arduino board to turn on the led light for 1 second, turn it off for 1 second then turn it on again. It will be repeated until we upload another code to the arduino board. The codes will stay in the board even the power source is plug off.

You can insert the Led light directly to pin 13. The long leg is Anode (+) and Short Leg is Cathode (-). It’s recommended to use resistor to decrease the current otherwise it will burn your Led. But, you don’t need it for pin 13 in arduino. It has built in resistor already.
If you want to try with LED light, plug in the long leg to pin 13 and the short leg to GRN (ground) pin.
Well… happy trying.

on 25 Aug 2014 09:01 PM

Before we start, I will explain a bit about few terminologies that you should know first.

Since Arduino is a type of a micro-controller, so what is Micro-Controller?
Micro-controller is a small computer on single integrated circuit board containing a processor core, memory and programmable input/output peripherals. Processor is the brain that do the process for all instructions given from the programmer. Memory is the temporary place to keep all instructions before processed by the processor. And programmable input/ouput mean that we can program Arduino to do something and change it with new program in the future.

What is the benefit using Arduino?
You can program arduino to control anything. From the simple one, light on an LED light to more complicated one. You can use it to monitor the temperature, wind speed, home automation (Music, TV, Fan, Pump, Lamps, water plant), check gas leaking, motion sensor, light sensor, heart beat sensor, robot etc. etc..
The limitation from the implementation arduino is your idea.

What you should know if you want to use Arduino?
You have to know at least basic C programming language and basic function of electronics like transistor, resistor, diode, relay, AC power and DC power. Because basically arduino is only supply and receive electric DC current through its pins, digital and analog. Just simple like that.

What are the types of Arduino?
First generation of manufactured Arduino is NG (new generation). NG used the Atmega8 chip running at 16MHz, 6K memory and run at 19200 baud. The next version was Diecimila with Atmega168 chip, 16MHz, 16 kilo byte (K) memory but still still run at 19200 baud.

In 2009 Duemilanove was released with Atmega328, 32K memory and run at 57600 baud. There is a good thing in this version. The power supply can be switched from USB to DC. Finally Arduino can be stand alone.

All of the above version use 2KB bootloader and FTDI (FT232RL) chip to control the USB interface. FT232RL is royalty free driver but it is only act as USB port. You can can’t use it with keyboard, mouse, MIDI etc.

In 2010, we got Uno. Uno in Italian mean ‘One’. It’s named to mark the upcoming release of Arduino 1.0. The Uno and version 1.0 will be the reference versions or Arduino. Uno still use Atmega328 but has smaller bootloader (521bytes) mean that you get another additional 1.5K free extra flash memory for programming. It also has atmega8u2 chip to replace FT232RL which allows various type USB interface. Now it runs at 115K baud. You can upload your codes in 3 seconds.

Arduino Uno board (front side)

Arduino Uno board (back side)
Until this version, Arduino chip only can run at max 16Mhz because it’s only 8-bit. May be it is not really intended for fast processing. Arduino also is still open source electronics prototyping platform for the software and the hardware.

When I write this article, Arduino Uno has already got revision 2 and revision 3.

In revision 2, there is additional resistor pulling the 8U2 HWB line to ground, make it easier to put into DFU (Device Firmware Update) mode. Mean, now you update your firmware without need to replace the chip.

In revision 3, added SDA and SCL pin that are near to the AREF pin and 2 other new pins placed near to the RESET pin, the IOREF that allow ‘shields’ to adapt to the voltage provided from the board. Atmega16U2 replace the 8U2.


Microcontroller ATmega328
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (ATmega328) of which 0.5 KB used by bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock Speed 16 MHz

You can power Arduino Uno using USB connection or an external power supply. The power source is selected automatically. The external (non USB) power can come from an AC-to-DC adapter or battery. The board can operate on an external supply of 6 to 20 volts.
The recommended range is 7 – 20volts.
If the supply is lower than 7 volts the 5V pin may supply less than 5 volt and the board maybe unstable.
If the supply is more than 12 volts, the voltage regulator may over heat and damage the board.

What OS that I can use to upload codes to the Arduino?
You can use Linux, Mac or Windows.
The good thing is for Mac and Linux user, you don’t have to install the driver. Unfortunately for Windows you have to do manually (update the .INF file).

I don’t know if it apply to Mac. I’ve tried with Windows and Linux. The speed of uploading code in Linux is much faster compare to Windows.

Before I explain further about Arduino, it will be easier if we experience it ourself. In this tutorial I use Arduino Uno. To write the codes and upload it into Arduino board you need an open source Arduino IDE (Integrated Development Environment) application.

You can download it free from www.arduino.cc .
The last version that I downloaded is arduino-1.0.5-linux32.tgz.

How to install Arduino IDE in Linux Ubuntu?
There are few files library that need to be installed before you can run the arduino IDE.
These library files are:

You can install are the libraries through Linux Terminal.
Make sure you are connected to the Internet.
Open you Linux Terminal, then type the command below:

taufanlubis@taufanlubis:~$ sudo apt-get install gcc-avr avr-libc avrdude
[sudo] password for taufanlubis:
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
Suggested packages:
avrdude-doc task-c-devel gcc-doc gcc-4.2
The following NEW packages will be installed:
avr-libc avrdude binutils-avr gcc-avr
0 upgraded, 4 newly installed, 0 to remove and 7 not upgraded.
Need to get 14.6MB of archives.
After this operation, 52.8MB of additional disk space will be used.
Do you want to continue [Y/n]? y
WARNING: The following packages cannot be authenticated!
binutils-avr gcc-avr avr-libc avrdude
Install these packages without verification [y/N]? y
Get:1 http://archive.ubuntu.com/ubuntu/ lucid/universe binutils-avr 2.20-2 [3,966kB]
Get:2 http://archive.ubuntu.com/ubuntu/ lucid/universe gcc-avr 1:4.3.4-1 [5,347kB]
Get:3 http://archive.ubuntu.com/ubuntu/ lucid/universe avr-libc 1:1.6.7-1ubuntu2 [5,117kB]
Get:4 http://archive.ubuntu.com/ubuntu/ lucid/universe avrdude 5.10-1ubuntu1 [198kB]
Fetched 14.6MB in 14min 48s (16.5kB/s)
Selecting previously deselected package binutils-avr.
(Reading database … 172336 files and directories currently installed.)
Unpacking binutils-avr (from …/binutils-avr_2.20-2_i386.deb) …
Selecting previously deselected package gcc-avr.
Unpacking gcc-avr (from …/gcc-avr_1%3a4.3.4-1_i386.deb) …
Selecting previously deselected package avr-libc.
Unpacking avr-libc (from …/avr-libc_1%3a1.6.7-1ubuntu2_all.deb) …
Selecting previously deselected package avrdude.
Unpacking avrdude (from …/avrdude_5.10-1ubuntu1_i386.deb) …
Processing triggers for man-db …
Setting up binutils-avr (2.20-2) …
Setting up gcc-avr (1:4.3.4-1) …
Setting up avr-libc (1:1.6.7-1ubuntu2) …
Setting up avrdude (5.10-1ubuntu1) …
taufanlubis@taufanlubis:~$ sudo apt-get install openjdk-6-jre
[sudo] password for taufanlubis:
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
icedtea-6-plugin icedtea-netx icedtea6-plugin
Suggested packages:
The following NEW packages will be installed:
icedtea-6-plugin icedtea-netx
The following packages will be upgraded:
icedtea6-plugin openjdk-6-jre
2 upgraded, 2 newly installed, 0 to remove and 5 not upgraded.
Need to get 924kB of archives.
After this operation, 844kB of additional disk space will be used.
Do you want to continue [Y/n]? y
WARNING: The following packages cannot be authenticated!
icedtea6-plugin openjdk-6-jre icedtea-netx icedtea-6-plugin
Install these packages without verification [y/N]? y
Get:1 http://security.ubuntu.com/ubuntu/ lucid-security/main icedtea6-plugin 6b21.2.3-0ubuntu0.10.04.1 [936B]
Get:2 http://security.ubuntu.com/ubuntu/ lucid-security/main openjdk-6-jre 6b31-1.13.3-1ubuntu1~ [219kB]
Get:3 http://security.ubuntu.com/ubuntu/ lucid-security/main icedtea-netx 1.2.3-0ubuntu0.10.04.1 [508kB]
Get:4 http://security.ubuntu.com/ubuntu/ lucid-security/main icedtea-6-plugin 1.2.3-0ubuntu0.10.04.1 [197kB]
Fetched 924kB in 54s (17.1kB/s)
(Reading database … 174112 files and directories currently installed.)
Preparing to replace icedtea6-plugin 6b20-1.9.10-0ubuntu1~10.04.2 (using …/icedtea6
plugin_6b21.2.3-0ubuntu0.10.04.1_all.deb) …
Unpacking replacement icedtea6-plugin …
Preparing to replace openjdk-6-jre 6b20-1.9.10-0ubuntu1~10.04.2 (using …/openjdk-6-jre_6b31-1.13.3-1ubuntu1~ …
Unpacking replacement openjdk-6-jre …
Selecting previously deselected package icedtea-netx.
Unpacking icedtea-netx (from …/icedtea-netx_1.2.3-0ubuntu0.10.04.1_i386.deb) …
Selecting previously deselected package icedtea-6-plugin.
Unpacking icedtea-6-plugin (from …/icedtea-6-plugin_1.2.3-0ubuntu0.10.04.1_i386.deb) …
Processing triggers for hicolor-icon-theme …
Processing triggers for desktop-file-utils …
Processing triggers for python-gmenu …
Rebuilding /usr/share/applications/desktop.en_US.utf8.cache…
Processing triggers for menu …
Processing triggers for man-db …
Processing triggers for python-support …
Setting up openjdk-6-jre (6b31-1.13.3-1ubuntu1~ …
Setting up icedtea-netx (1.2.3-0ubuntu0.10.04.1) …
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/itweb-settings to provide /usr/bin/itweb-settings (itweb-settings) in auto mode.
Setting up icedtea-6-plugin (1.2.3-0ubuntu0.10.04.1) …
Setting up icedtea6-plugin (6b21.2.3-0ubuntu0.10.04.1) …
Processing triggers for menu …

After all library files are installed then you can extract the arduino IDE files and run the application.
In order to do that, just go your download folder, select the file, right-click mouse button then select “Extract Here” menu to extract the zip file.

You will get ‘arduino-1.0.5′ folder.

Go inside the folder and there is file name ‘arduino’. That’s the shell script file that we need to run to get the arduino IDE screen. Just double click the file.

If everything run smoothly, you will the screen below.
The default port is COM1. You have to tell Arduino IDE which Arduino type that you have.

Connect your arduino using the USB cable.

Go to ‘Tools > Board‘ menu then select your arduino type.
On the right buttom screen you will the connection status.

My arduino is connected via/dev/ttyACM0.
That’s it. Now you are connected and ready to upload your codes.

on 25 Aug 2014 08:56 PM

Screen Shot 2014-08-25 at 2.37.04 PM
By default instalation of apache and php in centos 6.3 or ther el6. to have php can use email function to send email by script. you must be set the selinux boolean setting. by typing this :

[root@postel ~]# sestatus -b | grep -i sendmail
httpd_can_sendmail on
logging_syslogd_can_sendmail off
[root@postel ~]# setsebool -P httpd_can_sendmail 1
[root@postel ~]# setsebool -P httpd_can_network_connect on

on 25 Aug 2014 07:38 AM

23 Aug 2014

Hari-hari yang melelahkan karena sempat menyita pikiran dan pertimbangan pelaksanaan Kurikulum 2013 atau KTSP 2013. Kenapa saya masih memakai istilah KTSP? Bukankah KTSP hanya sampai KTSP 2006? Mari kita lihat sebentar apa yang ada dan tertera pada Peraturan Menteri Pendidikan dan Kebudayaan Republik Indonesia (Permendikbud RI) No. 81A Tahun 2013 yang ditetapkan pada tanggal 27 […]
on 23 Aug 2014 06:39 PM

22 Aug 2014

sumber foto : kompas.com – KOMPAS/RIZA FATHONI

Tadinya saya membaca di Kompas.com, Dahlan Iskan (Menteri BUMN) menyatakan Karen Agustiawan mundur dari posisinya sebagai CEO Pertamina. Tentunya banyak spekulasi yang beredar karena informasi ini. Dahlan Iskan lalu menjelaskan kalau Karen mundur karena mau mengajar di Harvard. Dahlan tidak menyebut Karen jadi dosen sih, cuma “mengajar”.

Kalau di Tribunnews.com, judul beritanya menyebutkan “Jadi Dosen Harvard Karen Agustiawan Mundur dari Pertamina”.

Tetapi saya tidak menemukan satupun media online yang melakukan cek silang ke Harvard untuk mengkonfirmasi hal ini. Dan entah kenapa, untuk hal ini saya begitu penasaran hingga saya mengirimkan email ke bagian PR nya Harvard (seperti tercantum di situsnya Harvard.edu) untuk mengkonfirmasi hal ini.

2 hari kemudian, inilah jawaban dari Daniel Harsha (Associate Director for Communications and Government Relations, Harvard Kennedy School) :

The Ash Center for Democratic Governance and Innovation is pleased to announce Ms. Karen Agustiawan’s appointment as a Senior Visiting Fellow at the Asia Energy and Sustainability Initiative (AESI) at the Harvard Kennedy School.  AESI is a research based collaboration among the School’s Ash Center, Belfer Center, and the Sustainability Science Program.  As a Senior Visiting Fellow, Ms. Agustiawan will conduct research relating to the intersection of innovation, energy policy and technology, and environmental outcomes in Asia.

For more information on AESI, please visit the program’s website at: www.ash.harvard.edu/Home/Programs/Institute-for-Asia/AESI

Daniel Harsha
Associate Director for Communications and Government Relations
Ash Center for Democratic Governance and Innovation
Harvard Kennedy School
79 John F. Kennedy Street, Box 74
Cambridge, MA 02138

Apa itu Senior Visiting Fellow? Silahkan googling sendiri ya. :P

on 22 Aug 2014 09:24 AM