Instalasi OpenVPN pada Linux

A.Pengantar

VPN (Virtual Private Network) adalah jaringan kusus yang bersifat virtual, kenapa dibilang private karena komunikasi antara client dan server akan menggunakan tunnel (terowongan tersendiri) jadi sifatnya tidak share. OpenVPN adalah VPN yang bersifat opensource. VPN biasanya digunakan untuk menghubungkan kantor yang berbeda lokasi lewat jaringan Internet, atau orang yang ingin mengakses jaringan internal kantor lewat Internet.

B. Topology
topologi - vpn
Client A dan Client B yang terhubung ke Internet akan bisa mengakses aplikasi ftp.agro.com yang sebenarnya tidak terdaftar di Internet, dengan VPN koneksi dari client yang menggunakan Internet akan dapat mengakses aplikasi internal di kantor pusat.

C. Instalasi VPN Server

OS yang digunakan untuk instalasi VPN server adalah CentOS 5.3, VPN server akan bertindak sebagai gateway dengan menggunakan dua NIC untuk menghubungkan network internal dan publik.

Download paket yang dibutuhkan dari Internet:
yum install gcc rpm-build automake openssl-devel pam-devel pkgconfig
wget -c http://pkgs.repoforge.org/lzo/ l zo-2.06 – 1.el5.rf.x86_64.rpm
wget -c http://pkgs.repoforge.org/lzo/lzo-devel-2.06-1.el5.rf.x86_64.rpm
wget -c http://pkgs.repoforge.org/pkcs11-helper/pkcs11-helper-1.08 1.el5.rf.x86_64.rpm
wget -c http://pkgs.repoforge.org/pkcs11-helper/pkcs11-helper-1.08-1.el5.rf.x86_64.rpm
wget -c http://pkgs.repoforge.org/pkcs11-helper/pkcs11-helper-devel-1.08-1.el5.rf.x86_64.rp m
wget –c http://swupdate.openvpn.org/community/releases/openvpn-2.2.2.tar.gz

Install paket tersebut:
rpm -ivh lzo-devel-2.06-1.el5.rf.x86_64.rpm
rpm -ivh lzo-2.06-1.el5.rf.x86_64.rpm
rpm -ivh pkcs11-helper-1.08-1.el5.rf.x86_64.rpm
rpm -ivh p kcs11-helper-devel-1.08 –
1.el5.rf.x86_64.rpm
rpmbuild -tb openvpn-2.2.2.tar.gz
rpm -ivh /usr/src/redhat/RPMS/i386/openvpn-2.2.2-1.i386.rpm

Copy folder easy-rsa ke /etc/openvpn/
cp -rvf /usr/share/doc/openvpn-2.2.2/easy-rsa/ /etc/openvpn/
cd /etc/openvpn/easy-rsa/2.0/
source ./vars
./vars
./clean-all

Create sertifikat CA
./build-ca

Create Key VPN Client
./build-key client-A

Create key VPN Server
./build-key-server server-HO

Create Key Dhilee Holfmann
./build-dh

Copy semua key directory /etc/openvpn/
cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/
cp /etc/openvpn/easy-rsa/2.0/keys/serverhpi.crt /etc/openvpn/
cp /etc/openvpn/easy-rsa/2.0/keys/serverhpi.key /etc/openvpn/
cp /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem /etc/openvpn/
cp /usr/share/doc/openvpn-2.2.2/sample configfiles/server.conf /etc/openvpn/

edit konfigurasi server.conf
vi /etc/openvpn/server.conf
pastikan ini sesuai :
#IP WAN dari VPN-server
#;local a.b.c.d
local 110.139.110.156
#sesuaikan dengan file yang dibuat, pastikan lokasi benar
ca ca.crt
cert server-HO.crt
key server-HO.key
# This file should be kept secret
dh dh1024.pem
#Range IP untuk Tunnel
server 10.8.0.0 255.255.255.0
#untuk menyimpan IP yang sudah pernah diberikan ke client
ifconfig-pool-persist ipp.txt
#berfungsi untuk membuat gateway client ke tunnel
push “redirect-gateway def1 bypass-dhcp”
#Memberikan DNS ke client
push “dhcp-option DNS 192.168.1.5”

Pastikan VPN server sebagai router dan memiliki fungsi NAT supaya user bisa mengakses semua IP local:
– Route  di VPN-server : /etc/sysconfig/network-scripts/
route-eth0 = 0.0.0.0/0 via 110.139.110.156
route-eth1 = 192.168.1.0/24 via 192.168.1.1
– Biar berfungsi sebagai gateway:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

– NAT tunelling, ini berfungsi untuk melakukan NAT ip Tunneling menjadi IP  LAN VPN-server (eth1)
iptables -t nat -A POSTROUTING -o eth1 -s 10.8.0.0/24 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables
service iptables restart

Jalankan service OpenVPN:
/etc/init.d/openvpn start|stop|restart
Periksa ip address dengan perintah ifconfig, akan menghasilkan ip tunnel.

D. Instalasi VPN Client
Install openvpn-install-2.3.0-I001-i686.exe, pastikan tunnel terinstal
Copy file ca.crt, client-A.ovpn, client-A.crt, client-A.key ke C:\Program Files\OpenVPN\config
Pastikan isi dari client.ovpn sebagai berikut:
remote 110.139.110.156 1194
ca ca.crt
cert client-A.crt
key client-A.key

Double klik OpenVPN-GUI, klik kanan di sisi kanan bawah icon VPN, trus pilih connect, seharusnya client dapat IP tunnel dan bisa ping ke ip internal.

 E. Troubleshooting
Pastikan client bisa ping IP WAN VPN Server bisa di ping dari sisi client
Menambah key untuk client baru :
cd /etc/openvpn/easy-rsa/2.0/
. ./vars
./build.key nama_client
Apabila nanti muncul Sign The Certificate pilih Yes karena key akan dimasukkan ke dalam Root CA.

Menghapus certificate client:
Tambahkan di sisi server.conf : crl-verify /etc/openvpn/crl.pem
Copy file crl.pem dari foler key ke /etc/openvpn/
restart service openvpn
. ./vars
./revoke-full nama_client
./list-crl

Posted in Linux | Leave a comment

Backup Data dengan RSYNC:

Pengantar:
Rsync adalah sebuah tool backup di linux yang melakukan sinkronisasi data diantara dua lokasi yang berbeda.
Lokasi yang dimaksud bisa berada dalam 1 komputer tetapi beda path atau partisi, bisa juga melibatkan komputer yang berbeda.

Skenario:
Pada skenario ini rsync akan di implementasikan antara 2 server, dimana Server-A adalah server utama dan server-B adalah server backup.
Rsync akan dijalankan melalui server-A dimana data akan disinkronisasikan dari server-A terhadap server-B. Karena sinkronisasi data
melibatkan 2 komputer maka diperlukan authentikasi menggunakan ssh-keygen dari server-A ke server-B, authentikasi ini bertujuan untuk
mengindari penggunaan password pada saat menjalin komunikasi.

Perintah dari rsync adalah sebagai berikut:
rsync [option] [source] [destination]
source: sumber data yang akan dicopy
destination : tujuan penyimpanan data

Pastikan paket berikut sudah terinstall di server-A dan server-B : rsync dan openssh-server

1. Login sebagai root di server-A:
Create key:
#ssh-keygen -t rsa

Copy file id_rsa.pub (publik key) dari direktory /root/.ssh/id_rsa.pub ke sisi server-B.
#scp /root/.ssh/id_rsa.pub rsync.user@ip-server-B:/home/rsync.user/id_rsa.pub_server-A

2. Login sebagai rsync.user di server-B:
Create key:
$ssh-keygen -t rsa
$cat /home/rsync.user/id_rsa.pub_server-A >> /home/rsync.user/.ssh/authorized_keys

testing ssh dari server-A lewat user root, seharusnya komunikasi terjalin tanpa pasword:
ssh rsync.user@ip-server-B

3. Sinkronisasi data dari server-A ke server-B
Login sebagai root di server A:
#rsync -avz /exports/share/IT/test-rsync/ –delete -e ssh rsync.user@ip-server-B:/backup/test-rsync/

opsi : -a = merupakan mode archive yang akan menyalin semua atribut file atau folder
-v = menampilkan data yang disalin pada layar
-z = kompresi data ketika terjadi penyalinan data
–delete (minus minus delete) = menghapus file yang ada di destination akan tetapi tidak ada di source dengan melakukan perbandingan terlebih dahulu.
-e = remote yang digunakan adalah ssh

Catatan : – pastikan user-rsync sudah memiliki akses ke folder destination.
– rsync hanya akan mengkopi file yang ada di source akan tetapi tidak ada di   destination dan file yang tanggal modifikasinya lebih baru di source dibanding dengan destination.
– hati-hati dengan opsi –delete, pastikan path destination dengan benar karena opsi ini akan menghapus semua folder dan file yang ada di dalam folder destination akan tetapi tidak ada di source.
– sinkronisasi sebaiknya dilakukan dengan penjadwalan di crontab.

Posted in Linux | Leave a comment

Ssh-keygen

Ssh-keygen berfungsi untuk menghasilkan  private key dan public key yang akan digunakan untuk authentikasi ketika terjadi komunikasi antara dua host. Fungsi ssh-keygen sangat dibutuhkan oleh system admin ketika mengakses server, dengan ssh-keygen maka system admin tidak perlu repot-report mengetikkan password lagi. Berikut contoh instalasi ssh-keygen dimana sebuah server akan diakses oleh client-A dan client-B tanpa menggunakan password. Sistem operasi yang digunakan dalam instalasi ini adalah CentOS-5.8.

A. Client A (192.168.1.21)

Jalankan perintah berikut sebagai user root untuk membuat private dan public key di sisi Client-A, file yang terbentuk di dalam folder /root/.ssh/ adalah id_rsa (private key) dan id_rsa.pub (public key).

[root@client-A~]#ssh-keygen -t rsa

Copy public key ke Server (192.168.1.20), public key ini nanti akan disimpan di sisi Server.

[root@client-A~]#scp /root/.ssh/id_rsa.pub root@192.168.1.20:/root/id_rsa.pub_client-A

B. Client B (192.168.1.22)

Jalankan perintah berikut sebagai user budi untuk membuat private dan public key di sisi Client-B, file yang terbentuk di dalam folder /home/budi/.ssh/ adalah id_rsa (private key) dan id_rsa.pub (public key).

[root@client-B~]#ssh-keygen -t rsa

Copy public key ke Server (192.168.1.20), public key ini nanti akan disimpan di sisi Server.

[root@client-B~]# scp /home/budi/.ssh/id_rsa.pub root@192.168.1.20:/root/id_rsa.pub_client-B

C. Server (192.168.1.20)

Jalankan perintah berikut sebagai root untuk membuat private dan public key di sisi server, kedua file ini akan tersimpan di folder /root/.ssh/ dan kedua key ini tidak digunakan karena yang akan diremote adalah server sendiri.

[root@server~]#ssh-keygen -t rsa

Masukkan isi publik key ke dua server ke dalam file authorized_keys di sisi server.

[root@server~]#cat id_rsa.pub_client-A >> /root/.ssh/authorized_keys

[root@server~]#cat id_rsa.pub_client-B >> /root/.ssh/authorized_keys

Isi dari file authorized_keys :

ssh-rsa AAAAB3NzaC1y-xxxxx-C7YYvL+dJUe+B5qo06IaQ== root@client-A

ssh-rsa AAAAB3NzaC1yc-xxxxx-cikUG150uhz8im8NNVyw== budi@client-B

D. Kesimpulan

– Jika user root pada client-A melakukan ssh ke sisi server maka tidak membutuhkan username dan password lagi, begitu juga dengan user budi pada client-B.

-Jika server melakukan remote ke client-A atau client-B akan tetap meminta password, hal ini terjadi karena public key server tidak disimpan di sisi client-A dan client-B.

Posted in Linux | 1 Comment

Pemain Sepak Bola

Hampir setiap hari kita mendengar dan melihat berita tentang sepak bola. Apasih enaknya sepak bola ? apakah karena gaji besar ? apa karena hobbi menjadi sebuah pekerjaan ? yang ingin saya bahas adalah hubungan antara keahlian dan penghasilan. Di negri Indonesia masih sering kita mendengar yang namanya nepotisme, dimana seseorang bisa bekerja karena ada hubungan kekeluargaan, karena uang sogok. Tapi kita belum pernah mendengar nepotisme untuk menjadi pemain sepak bola, kenapa hal ini bisa terjadi karena penonton akan menilai secara langsung keahlian dari si pemain tanpa kompromi, “Anda punya keahlian maka Anda akan dibayar mahal untuk memberikan kemenangan” . Dalam dunia kerja pun keadaan hampir tidak jauh beda karena keahlian pun sangat dibutuhkan walaupun nepotisme masih memungkinkan, ayo asah keahlian, jangan habiskan nafas hidup Anda di atas ranjang tempat tidur.

Posted in Inpirasi Hidup | Leave a comment

Pengendalian diri

Banyak orang yang hebat dan sukses pada akhirnya akan jatuh karena tidak bisa mengendalikan diri, masih ingat dengan hitler, dibawah pemerintahan hitler Jerman sangat hebat dalam hal teknologi perang. Kejayaan mereka hampir membuat seluruh eropa tunduk dalam waktu yang singkat, akan tetapi keadaan mulai berubah dimana Jerman dikepung dari segala sisi hingga pada akhirnya hitler bunuh diri. Kita pun bisa seperti hitler (suatu saat akan jatuh) kalau kita tidak bisa mengendalikan diri. Ada banyak hal yang membuat kita tidak dapat mengendalikan diri, seperti:

– Di kantor mungkin kita terkadang merasa tidak diperhatikan, kita tidak ingin merasa disaingi, kita menjadi sok tau, tidak menghormati orang yang lebih tua dari kita, bekerja sendiri dan tidak mau berbagi ilmu, dan merasa iri karena gaji teman lebih besar.

– Di rumah mungkin kita ingin menjadi orang yang memiliki karir lebih sukses, ingin menguasai harta.

– Disekolah mungkin ingin menjadi orang paling pintar

Ketika kita memiliki tujuan “menjadi orang paling” maka kita sudah hilang kendali atas hidup ini, kita harus memiliki tujuan “memberikan yang terbaik” maka dengan tujuan seperti ini akan terjadi kerja sama dan rasa memiliki.

Posted in Inpirasi Hidup | 1 Comment

Mengatur hak akses file dengan ACL pada linux

Access Control List (ACL) pada Linux berfungsi untuk mengatur hak akses user terhadap file atau folder dalam sistem. Secara umum pengaturan hakses terhadap file atau folder pada Linux adalah sebagai berikut :

rwx (user)  | rwx   (group)   | rwx (other)

Untuk mempermudah memahami ACL mari kita lihat contoh berikut:

Ada sebuah group dengan nama IT-Groups, usernya ada 2 orang yaitu hendra.manto.s dan ahmad.azhari, user hendra.manto.s memiliki hak akses penuh terhadap folder Test-Acl sementara ahmad.azhari hanya bisa read dan eksekusi. Untuk kasus seperti ini harus menggunakan ACL, dengan permission biasa hal ini tidak bisa karena mereka satu Group, apalagi kalau usernya banyak maka ACL adalah solusi yang tepat.

sebelum menerapakan lakukan hal berikut, jika sudah ada sebelumnya maka tidak perlu dilakukan lagi.

1. vim /etc/fstab
# Tambahkan acl pada partisi dimana ACL akan diterapkan
/dev/VolGroupKMT/LogVolShare          /data/share          ext3    defaults,acl,grpquota   1 2

2. Remount file system:
mount -o remount /data/share

Contoh penggunaan ACL pada linux: (/data/share/Test-Acl)

#buat folder Test-Acl dengan kepemilikan user admin dan group adamin
mkdir Test-Acl
chown -R fsadmin:’Domain Admins’ Test-Acl
chmod 2550 Test-Acl

#untuk admin
setfacl -R -m u:hendra.manto.s:rwx Test-Acl/
setfacl -R -d -m u:hendra.manto.s:rwx Test-Acl/

#untuk user biasa
setfacl -R -m u:ahmad.azhari:r-x Test-Acl/
setfacl -R -d -m u:ahmad.azhari:r-x Test-Acl/

#menghapus ACL dari satu user
setfacl -R -x u:hendra.manto.s Test-Acl

#menghapus default ACL dari satu user
setfacl -R -d -x u:hendra.manto.s Test-Acl

#menghapus semua konfigurasi ACL pada satu direktory saja
setfacl -b Test-Acl

#menghapus semua konfigurasi ACL pada direktory secara Recursif
setfacl -R -b Test-Acl

Note:
-R untuk recursif (perulangan)
-d berarti untuk inheritance
-m modifikasi
-b untuk menghapus acl tambahan

untuk melihat konfigurasi suatu file/folder yang diberi ACL:
getfacl namafile/direktory

default acl hanya berlaku untuk direktory (inheritance, opsi -d)

Tambahan:
File permission dan Folder permission di linux mengandung arti yang sedikit berbeda, walaupun notasi dan penulisan nya bisa saja sama.

Folder
read (r) = user diperbolehkan melihat file yang ada didalamnya contohnya dengan mengetik ls untuk melihat isi folder tersebut
write (w) = user diperbolehkan untuk membuat file baru didalam folder tersebut, kadang ini juga berarti bahwa user yang bersangkutan
diperbolehkan untuk merubah dan menghapus file didalam folder tersebut.
Eksekusi (x) = user diperbolehkan untuk berpindah atau masuk kedalam folder tersebut.

File
read (r) = user diperbolehkan untuk melihat / membaca isi file tersebut
write (w) = user diperbolehkan untuk merubah dan menghapus file tersebut
eksekusi (x) = apabila file tersebut bisa dieksekusi (aplikasi atau script) user tersebut diperbolehkan untuk mengeksekusi / menjalankan nya.

Posted in Linux | Leave a comment

Install Ulang Linux (CentOS)

Bagi kebanyakan orang melakukan install ulang sistem operasi Windows merupakan hal biasa tapi untuk sistem operasi Linux mungkin merupakan suatu yang membingungkan. Pemisahan partisi sistem operasi dengan data-data adalah hal yang harus dilakukan untuk menghindari hilangnya data ketika instalasi ulang dilakukan. Instalasi ulang kemungkinan akan dilakukan ketika sistem sudah tidak bisa diperbaiki lagi.

Partisi hardisk sebelum dilakukan instalasi ulang:

Tabel Partisi : (fdisk -l)
Device      Boot      Start       End      Blocks           Id     System
/dev/hda1     *           1          25         200781          83    Linux
/dev/hda2                  26       13054    104655442+  8e    Linux LVM

Penggunaan Hardisk : (df -h)
Filesystem            Size     Used     Avail      Use%     Mounted on
/dev/mapper/VolGroupKaltim-LogVolRoot
9.7G     2.8G     6.5G       30%        /
/dev/mapper/VolGroupKaltim-LogVolUsers
20G      180M   19G         1%         /data/users
/dev/mapper/VolGroupKaltim-LogVolTmp
2.0G      68M     1.8G        4%         /tmp
/dev/mapper/VolGroupKaltim-LogVolShare
64G        2.6G     58G         5%         /data/share
/dev/hda1           190M      13M    168M        7%        /boot

Pada partisi diatas bahwa data-data user disimpan di dalam partisi /data/users dan /data/share. Pada saat instalasi ulang sistem operasi Linux yang perlu dihindari adalah melakukan format ulang terhadap dua partisi tersebut, karena kalau dilakukan format ulang maka data-data yang ada di dalam partisi tersebut akan hilang.

Yang perlu diperhatikan ketika melakukan instalasi ulang adalah :
1.    Pilih custom layout untuk mengatur partisi.

2.    Mount ulang setiap partisi
Sebagai contoh LogVolShare di mount ke /data/share, perlu diperhatikan jangan pernah memilih Format partition as, karena apabila itu dipilih maka partisi tersebut akan dihapus. Apabila tidak dipilih mount partition maka pada saat sitem sudah up partisi tidak termount secara otomatis akan tetapi dapat dilakukan mount manual.

Kusus untuk partisi /, /boot, /tmp, dan swap pilih Format partition, karena data-data user tidak tersimpan di dalam partisi ini.

3.    Jalankan step instalasi selanjutnya

Setelah selesai instalasi data-data user yang ada di dalam partisi /data/users dan /data/share masih ada dan tidak mengalami perubahan.

Apabila setelah melakukan edit file /etc/fstab terjadi permasalahan ketika booting dimana file /etc/fstab sifatnya readonly maka jalankan perintah berikut  mount -n -o remount / kemudian edit file /etc/fstab.

Posted in Linux | Leave a comment

Partisi linux (CentOS)

Dalam instalasi linux perlu dipahami pembagian partisi, supaya ketika terjadi sesuatu pada sistem operasi, data-data Anda tidak hilang. Pada saat instalsi Linux ada 3 partisi utama yang harus anda buat yaitu :

1.    Partisi /boot sebagai tempat file-file yang akan dijalankan ketika booting.
2.    Partisi / sebagai tempat penyimpanan file system
3.    Partisi swap, dimana swap berfungsi sebagai virtual memory.

Untuk data-data user sebaiknya menggunakan partisi tersendiri karena apabila Anda menyimpan file di dalam partisi root (/) maka ketika sesuatu terjadi pada system operasi dan harus dilakukan instalasi ulang maka data user ikut juga terhapus. Untuk yang biasa dengan Windows maka partisi itu ibarat drive, apabila drive C rusak maka ketika dilakukan instalasi ulang maka drive D tidak akan terhapus.

Contoh partisi Linux :
Kapasitas Hardisk = 100 GByte

boot    200MB    /boot
LVM VolGroupKaltim
LogVolSwap    2048MB
LogVolTmp    2048MB    /tmp
LogVolRoot    10240MB        /
LogVolUsers    20480MB        /data/users
LogVolShare    67384MB        /data/share

Untuk mempermudah manajemen hardisk lebih baik digunakan konsep LVM (Logical Volume Manager), dengan menggunakan LVM maka kapasitas hardisk dapat ditambah dan dikurangi, jadi tidak terpusat pada ukuran partisi awal. Perlu diingat bahwa partisi boot harus berdiri sendiri dan tidak masuk dalam anggota LVM.

Perintah-perintah linux yang perlu dipahami dalam memahami partisi linux adalah : /sbin/fdisk –l dan df –sh

Posted in Linux | 1 Comment

Mimpi

Pernahkan Anda bermimpi ? Mimpi adalah suatu harapan, apabila kita meyakininya maka kita akan memperolehnya. Apabila kita melihat kembali ke belakang mengenai perjalanan hidup ini, maka kita dapat menyimpulkan bahwa kita sampai ke posisi sekarang berkat mimpi-mimpi yang kita yakini. Hidup adalah perjuangan, tapi kalau tidak disertai suatu keyakinan maka semua mimpi-mimpi indah akan hilang. Ada beberapa mimpi yang sudah terwujud, diantaranya :
1. Saya pernah bermimpi untuk tinggal di asrama, setelah saya kuliah di sebuah politeknik 3 tahun lamnya saya hidup di asrama.
2. Saya pernah mengatakan kepada abang saya, saya harus kuliah di jawa, kenyataannya saya saya mengambil s1 di jakarta.
3. Saya memiliki mimpi untuk kuliah sambil kerja, kenyataannya saya dulu waktu mengambil s1 kuliah sambil kerja.
4. Saya pernah memiliki angan-angan akan bekerja di pontianak, kenyataannya saya kerja di pontianak ketika menulis blog ini.

Semua mimpi akan terwujud, beranilah semua hanya masalah waktu, buka mata Anda, jangan hidup dalam kotak kecil, dunia ini luas.

semoga mimpi saya berikutnya terwujud, thanks buat imel yang mengatakan “Nothing is imposible” saya yakin s2 dan pekerjaan doses terwujud.

Posted in Inpirasi Hidup | Leave a comment

Manusia berada dalam lingkaran waktu

Kita dilahirkan ke dunia ini untuk berkarya, dalam berkarya manusia akan diberikan batas yaitu waktu. Waktu itu sangat adil, tidak berpihak kepada siapapun, selama pengalaman hidup saya belum pernah waktu menjadi lambat atau cepat. Kenapa waktu selalu konsisten dan manusia tidak dapat mengubahnya? Jawabannya adalah supaya manusia menghargai waktu dan berkarya seiring waktu.

jam

Dalam berkarya kita harus memperhatikan waktu, karena apabila kita salah maka kesalahan tersebut hanya bisa diperbaiki untuk waktu berikutnya, waktu tidak mengenal kata mundur. Marilah kita renungkan sisa hidup yang singkat ini dengan menanyakan pertanyaan berikut kepada diri kita sendiri.

Apa karya yang akan saya lakukan detik ini, menit ini, jam ini, dan hari ini.

Posted in Inpirasi Hidup | 2 Comments