Kamis, 25 Juli 2013

Windows XP Error : "l_intl.nls is missing"

Para pemakai sistem operasi Windows XP, mungkin pernah mengalami pesan kesalahan (error) seperti itu pada saat menyalakan komputer (booting). Tidak perlu panik.. hal ini terjadi karena file tersebut rusak. Untuk memperbaiki kerusakan file tersebut silahkan mengikuti langkah-langkah di bawah ini.

  •  Syarat : wajib memiliki CD installer Windows XP sesuai dengan yang terpasang di komputer Anda 
  •  Caranya :


    1. Pastikan komputer Anda sudah diatur agar bisa booting dari cd/dvd drive (silahkan diatur melalui BIOS)
    2. Masukkan CD installer Windows XP ke cd/dvd rom dan nyalakan komputer, tunggu beberapa saat
    3. Jika sudah muncul perintah "press any key to start install" pilih "R" (Recovery console)
    4. Kemudian ketik "1" (pilihan default drive instalasi windows) kemudian masukkan password administrator
    5. Jika sudah berhasil login, ketikkan perintah ini :
    6. e:\expand e:\i386\L_INTL.NL_ c:\Windows\system32\L_INTL.NLS
      (catatan E = drive CD-rom, C = letak instalasi Windows XP)
      
    7. Setelah selesai reboot komputer Anda


Semoga sukses !!

Kamis, 07 Maret 2013

Instalasi Apache2, PHP5 & MySQL di Linux Ubuntu

Singkat kata singkat cerita... (seperti syair lagu saya nih) berikut ini langkah2 instalasi Apache2, PHP5 & MySQL di Linux Ubuntu via terminal :
1. Instalasi Apache (Web Server)
- Buka Terminal (Application -> Accessories -> Terminal)
- Jalankan perintah :
$ sudo apt-get install apache2
- Tunggu & perhatikan proses hingga selesai. Jika sudah selesai jalankan Apache Web Server dengan perintah :
 $ sudo /etc/init.d/apache2 start
- Jika berhasil dijalankan, coba cek dengan cara. buka browser dan ketikkan http://localhost. jika ada tulisan " It's works! ” , maka Apache sudah berjalan dengan baik.
2. Instalasi PHP5
- Dari terminal, jalankan perintah berikut :
# sudo apt-get install php5 libapache2-mod-php5
- Tunggu & perhatikan proses hingga selesai. Jika sudah selesai maka restart Apache dengan cara :
# sudo /etc/init.d/apache2 restart
- Untuk mengecek apakah PHP berjalan di atas web server Apache, coba buat suatu file dengan nama info.php di dalam path /var/www/ , isikan file tersebut dengan isi sebagai berikut :

- sekarang coba buka kembali browser, dan ketikan url http://localhost/info.php , jika tampil text yang berupa informasi konfigurasi php maka php sudah berhasil diinstal.
3. Instalasi MySQL
- Dari terminal, ketikkan perintah berikut :
$ sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql
- Tunggu & perhatikan proses hingga selesai. Jika sudah selesai maka akan muncul tampilan untuk memasukan password root/admin mysql. Silahkan memasukan password root/admin mysql yang diinginkan.
- Kemudian jalankan service mysql dengan mengetikan :
$ sudo /etc/init.d/mysql start
- Selanjutnya coba login ke mysql melalui konsol dengan perintah :
$ mysql -u root -p
- Jika diminta password, masukan password root/admin mysql sesuai dengan sewaktu instalasi. Jika berhasil login, maka akan muncul tampilan konsol mysql seperti berikut ini :
Your MySQL connection id is 63
Server version: 5.1.41-3ubuntu12.6 (Ubuntu)
   
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
mysql>
- Informasi port dan versi server mungkin akan berbeda dengan tampilan di tempat Anda.
- Silahkan keluar dari konsol mysql dengan perintah :
mysql >quit;
- sampai di sini instalasi apache, php & mysql sudah berhasil dilakukan, baik apache dan mysql masih dalam kondisi berjalan sebagai service.
4. Instalasi Modul2 pendukung php dan mysql
- Dari terminal, matikan service apache dan mysql terlebih dahulu dg perintah :
$ sudo /etc/init.d/apache2 stop
$ sudo /etc/init.d/mysql stop
- Instalkan modul2 pelengkap berikut ini dan tunggu hingga proses selesai (atau pilih yang diperlukan saja) :
$ sudo apt_get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json

- Jika Anda hanya membutuhkan beberapa modul saja silahkan buang yang tidak diperlukan, misalnya seperti perintah di bawah ini :
$ sudo apt_get install php5-curl php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-mysql php5-gd

- setelah proses instalasi modul2 pelengkap selesai, jalankan kembali apache dan mysql server dengan perintah :
$ sudo /etc/init.d/apache2 start
$ sudo /etc/init.d/mysql start
- Sekarang apache dan mysql telah siap digunakan untuk membangun aplikasi web !!
5. Instalasi PHPMyAdmin (jika diperlukan)
- Dari terminal ketikkan perintah berikut ini :
$ sudo apt-get install phpmyadmin
- Saat menjalankan instalasi phpmyadmin, maka akan muncul tampilan untuk memilih webserver yang akan digunakan untuk PHPMyAdmin, pilih Apache2 yg baru kita Install.
- setelah proses instalasi phpmyadmin selesai, jalankan perintah dibawah untuk memindahkan folder phpmyadmin.
$ sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin
- Sekarang buka kembali browser, dan masukan url http://localhost/phpmyadmin/index.php - Untuk login, masukan username root dan password sesuai yg dimasukkan untuk root/admin mysql.
6. Tips/Informasi - mysql server dapat juga dijalankan service-nya dengan perintah seperti ini :
$ start mysql
- dan dimatikan dengan perintah :
$ stop mysql
- lokasi database mysql berada di path /var/lib/mysql/
- lokasi skrip php berada di path /var/www/
- Konfigurasi mysql server seperti di atas hanya dapat dijalankan sebagai localhost dan tidak bisa diakses dari host/komputer lain yang terhubung di dalam 1 jaringan. Ga percaya??? buktikan sendiri !! :D 
Misalnya komputer Anda (localhost) mempunyai alamat ip 192.168.0.1, silahkan coba mengakses dari komputer lain tersebut melalui web browser, buka alamat http://192.168.0.1/phpmyadmin/ kemudian silahkan login dg user & password untuk user root mysql, lihat apa yang terjadi... pasti muncul informasi ERROR kalau mysql tidak dapat diakses. Lalu bagaimana jika ingin agar mysql dapat diakses dari host/komputer lain ??

Gampang... caranya seperti ini :

1. Buka dan edit file my.cnf (biasanya terletak di /etc/mysql/my.cnf )
a. Cara mengeditnya jika melalui terminal gunakan "salah 1" dari perintah ini sesuai dengan kebiasaan Anda :
$ sudo nano /etc/mysql/my.cnf
$ sudo vi /etc/mysql/my.cnf
b. Jika melalui aplikasi grafis (GUI) :
- jika menggunakan desktop Gnome, klik Start Menu, Run atau tekan tombol Alt+F2, ketikkan perintah ini :
gksu gedit /etc/mysql/my.cnf
- jika menggunakan desktop KDE, klik Start Menu, Run atau tekan tombol Alt+F2, ketikkan perintah ini :
kdesu kate /etc/mysql/my.cnf
- Kedua perintah di atas jika meminta password root silahkan dimasukkan

2. Jika file my.cnf sudah berhasil dibuka, carilah bagian/entry untuk pengaturan skip-networking yaitu pada bagian ini :
bind-address = 127.0.0.1
- Tutup bagian itu dengan cara memberi awalan karakter # atau mengganti perintahnya menjadi :

$ # BAGIAN/ENTRY DI BAWAH INI DIMATIKAN AGAR BISA DIAKSES DARI REMOTE HOST/KOMP. LAIN
$ # bind-address = 127.0.0.1
- Simpan file tersebut, keudian restart mysql server Anda dari terminal dengan perintah :
$ sudo /etc/init.d/mysql restart
3. Selanjutnya login ke mysql Anda, dan lakukan perintah-perintah sebagai berikut:
$ mysql -u root -p  Enter password:
$ mysql> use mysql; 
$ mysql> insert into user (Host,User,Password) values ('%','root',password('root'));
$ mysql> grant all privileges on *.* to 'root'@'%';
$ mysql> flush privileges;
$ mysql> quit;
4. Sekarang dari komputer lain silahkan coba lagi , dari browser buka alamat http://192.168.0.1/phpmyadmin/ dan coba lagi untuk login dengan user dan password root mysql
Nah.. sudah bisa kan..



Semoga bermanfaat !!

Selasa, 05 Maret 2013

Instalasi Modem USB chipset Qualcomm di Linux

Para pengguna Linux sering kali kesulitan saat mau menginstall modem usb, hal ini karena kebiasaan saat masih menggunakan sistem operasi Windows yang seringkali tinggal tancap & pakai alias plug & play. Namun dibalik itu semua para pengguna Windows banyak yang tidak tahu cara memaksimalkan modemnya (ngoprek). Jika kita menggunakan Linux banyak hal yang bisa kita pelajari. Biar tidak bosan/ngantuk.. sebaiknya siapkan secangkir kopi & camilan secukupnya :D
Oke.. bro/sist.. tdk usah lama2.. kopinya keburu dingin nih.. langsung saja kita praktekkan bagaimana cara install modem usb dengan chipset Qualcomm di linux seperti judulnya. Ikuti langkah2 sebagai berikut :

1. Deteksi Modem -- #1
Buka aplikasi terminal lalu tancapkan modem, tunggu sebentar sampai dengan lampu indikator modem menyala hijau. Deteksi modem dengan perintah $ ls usb seperti pada gambar di bawah ini :

Perhatikan bahwa modem terdeksi sebagai media penyimpan bukan perangkat modem, lihat pada baris Bus 003 Device 003: ID 05c6:1000 Qualcomm, Inc. Mass Storage Device . Hal ini terjadi karena adanya aturan di usb_modeswitch yang mendeteksi modem sebagai media penyimpan (di dalam modem ada 2 slot chip utk kartu memory & kartu cdma). Selanjutnya lakukan langkah 2.

2. Edit file /lib/udev/rules.d/40-usb_modeswitch.rules
Agar modem terdeksi dengan benar dari terminal ketikkan perintah :

$ sudo gedit /lib/udev/rules.d/40-usb_modeswitch.rules 
Carilah baris :
ATTRS{idVendor}=="05c6",ATTRS{idProduct}=="1000",RUN+="usb_modeswitch'%b/%k'"
Jika sudah ketemu, tambahkan tanda # (hash tag) diawal baris tersebut atau ubah menjadi #ATTRS{idVendor}=="05c6",ATTRS{idProduct}=="1000",RUN+="usb_modeswitch'%b/%k'"
Jika sudah selesai simpan kembali file tersebut dan silahkan modemnya dicabut. Lanjutkan ke langkah 3.

3. Deteksi Modem -- #2
Karena sebelumnya telah terjadi perubahan pada pengaturan usb_modeswitch maka perlu dilakukan penyalaan ulang/restart modul usb_modeswitch, masih dari terminal ketikkan perintah ini :

$ sudo udevadm control --reload-rules
Sekarang tancapkan kembali modem dan tunggu sebentar sampai dengan lampu indikator modem menyala hijau. Sekarang deteksi modem sekali lagi dari terminal dengan perintah $ ls usb seperti pada gambar di bawah ini.

Loh.. kok masih terdeteksi sebagai Mass Storage??? eeeiitt.. tunggu dulu.. jika tadi modem terbaca pada Bus 003 Device 003 maka sekarang modem terbaca sebagai "Bus 003 Device 005: ID 05c6:1000 Qualcomm, Inc. Mass Storage Device" yang artinya sudah ada perubahan device. Nah karena Linux membacanya device Mass Storage terlebih dahulu maka device tersebut perlu dikeluarkan/dilepas agar yang terbaca device modemnya. Caranya... coba perhatikan pada bagian "[ 5.192894] sr 1:0:0:1: Attached scsi CD-ROM sr0", artinya perangkat ini dibaca sebagai sr0, nah... bagian itulah yang harus dilepas. Jika di komputer Anda dibaca sebagai sr1 atau sr2 atau yang lain tidak masalah, gunakan perintah $ dmesg | grep CD-ROM atau $ dmesg | grep sr untuk melihat pembacaan perangkat. Selanjutnya silahkan melepas/mengeluarkan Mass Storage dengan perintah :
$ eject /dev/sr0
Lanjutkan dengan mendeteksi modem sekali lagi dengan perintah $ ls usb dan hasilnya modem sudah terdeksi sebagai modem seperti pada gambar di bawah ini :
Sekarang modem sudah terdeteksi sebagi "Bus 003 Device 006: ID 1d09:4306 TechFaith Wireless Technology Limited ". Lanjutkan ke langkah 4.

4. Jalankan Modem
Lakukan pengenalan modul modem dengan perintah sebagai berikut :

$ sudo modprobe usbserial vendor=0x1d09 product=0x4306
Sampai di sini modem sudah bisa dioperasikan untuk koneksi internet, baik menggunakan wvdial atau melalui network manager. Jika Anda lebih suka cara klasik seperti saya, lanjutkan dengan konfigurasi wvdial dengan perintah ini :
sudo wvdialconf
hasilnya seperti pada gambar di bawah ini :

Lalu edit & simpan file wvdial.conf dengan perintah $ sudo /etc/wvdial.conf dengan editor teks gedit atau nano dan isikan seperti ini :
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
Baud = 9600
New PPPD = yes
Modem = /dev/ttyUSB0
ISDN = 0
Phone = #777
Password = smart
Username = smart
Stupid Mode = 1
Terakhir ... Anda tinggal mencoba menjalankan modem dengan perintah $ sudo wvdial seperti gambar di bawah ini :

** Tips Untuk selanjutnya, agar setiap menggunakan modem tidak perlu mengetikan perintah satu persatu, silahkan buat file teks di direktori /home/[user_anda] seperti ini misalnya :

#! /bin/bash
# Untuk menjalankan modem 
# -----------------------
 
lsusb
clear
echo "Keluarkan CD-ROM modem"
echo "tunggu sebentar ...."
eject /dev/sr0
sleep 5
lsusb
clear
echo " Masukkan password utk registrasi perangkat modem !!"
sleep 1
sudo modprobe usbserial vendor=0x1d09 product=0x4306
sleep 3
clear
sudo wvdialconf
sleep 2
sudo wvdial
Setelah disimpan misalnya dengan nama modem_on, ubah hak aksesnya menjadi 774 (rwx-rwx-r-x). Selanjutnya setiap kali akan menjalankan modem setelah modem ditancapkan dan indikator lampu menyala hijau/kuning, dari terminal Anda tinggal mengetikkan $ ./modem_on dan selamat berinternet ria :D

Demikian cara instalasi modem usb berchipset Qualcomm. Di internet bertebaran cara-cara yang lain, silahkan pilih cara yang cocok untuk Anda. Teknik ini tentunya juga bisa digunakan untuk modem2 dengan chipset yang berbeda. Semoga bermanfaat ... (nyruput kopi dulu)

Cara menghapus/uninstall KDE

Jika Anda menggunakan Linux dengan desktop KDE dan ingin beganti desktop/window manager lainnya, cara menghapus KDE dari ubuntu adalah sbb :
sudo aptitude purge kubuntu-kde4-desktop
sudo aptitude purge kdm-kde4
sudo dpkg-reconfigure kdm
sudo aptitude purge ~nkde4
Selanjutnya Anda tinggal menginstall paket2 desktop/window manager yang diinginkan

Kamis, 12 Juli 2012

8 Tips Mengamankan MySQL di Server Unix Multiuser | Tutorial

Sebagian besar dari kita, apalagi para programer dan sysadmin Web Unix, pasti sudah cukup familiar dengan software ini. MySQL merupakan server RDBMS open source terpopuler, terutama untuk aplikasi Web. Artikel kali ini akan membahas isu-isu keamanan seputar menjalankan daemon MySQL di lingkungan multiuser, seperti di server shared hosting. Dalam lingkungan multiuser ada beberapa hal yang perlu diperhatikan, terutama yang berkaitan dengan isolasi user yang satu dengan user lain. Meskipun ada pula sebagian poin-poin yang diterangkan—seperti pengaturan permission MySQL—yang dapat diterapkan untuk Windows, namun jelas fokus artikel ini adalah pada lingkungan Unix/Linux.

Tip 1: Pasang mysqld Di Mesin Terpisah
Kita langsung mulai saja dengan tip yang pertama. Jika Anda punya budget cukup, pasanglah daemon MySQL (mysqld) di mesin terpisah. Cara ini adalah termasuk yang paling aman, karena mesin terpisah ini dapat kita taruh di belakang firewall sehingga tidak menerima koneksi dari Internet melainkan dari mesin-mesin tertentu saja di jaringan lokal. Juga, tiap user yang menggunakan database tidak perlu kita beri akses shell. Semua port dapat kita tutup kecuali port default mysqld saja (3306) yang kita buka. Tidak ada yang bisa menyentuh langsung file-file database maupun log kecuali user mysql di mesin database tersebut, dan juga admin mesin tersebut. Tapi tentu tidak semua orang bisa membeli mesin dedicated. Jadi…

Tip 2: Jalankan mysqld Terpisah Di Mesin Yang Sama
Meskipun MySQL merupakan database multiuser, tapi daemon mysqld hanya berjalan sebagai satu user Unix saja (defaultnya adalah mysql). Tidak ada wrapping seperti halnya pada Apache + suexec/cgiwrap. User Unix ini memiliki akses ke semua database di direktori data (defaultnya adalah /var/lib/mysql ). Tentu saja MySQL memiliki sistem access privilege yang cukup mendetil untuk mengatur klien mana yang dapat mengakses tabel atau database mana. Namun bug pada kode mysqld atau miskonfigurasi sistem privilegenya bisa saja mengakibatkan sebuah database berisi data rahasia terbuka bagi user MySQL lain. Misalnya lewat LOAD DATA INFILE atau LOAD LOCAL DATA INFILE maupun lewat SELECT INTO OUTFILE, yang memungkinkan penyerang berpotensi menimpa file database milik user lain.

Jika Anda mempunyai sebuah database yang datanya sensitif atau harus benar-benar private, Anda bisa dapat menjalankan mysqld terpisah. Tiap mysqld berjalan sebagai user Unix yang berbeda, sehingga satu mysqld tidak dapat mengganggu mysqld yang lainnya. Bug pada mysqld yang satu tidak dapat mengganggu mysqld lainnya, karena masing-masing tidak bisa menyentuh direktori data daemon lain.
Contoh berikut adalah user hafidz yang menjalankan sendiri daemon MySQL pribadi, berjalan sebagai user hafidz dan port 3366. Daemon MySQL utama, sebagai user mysql, tidak dapat menyentuh database.

$ mkdir /home/hafidz/mysql
$ mysql_install_db --datadir=/home/hafidz/mysql
$ /usr/sbin/mysqld --datadir=/home/hafidz/mysql --port=3366 
     --socket=/home/hafidz/mysql/mysql.sock &
Anda dapat mengganti port 3366 dengan port kesukaan sendiri. Sebelum memakai, Anda perlu memberi password pada user MySQL root tentunya:
$ mysqladmin -u root -S /home/hafidz/mysql/mysql.sock password RAHASIA
Ganti RAHASIA dengan password sebenarnya. Selanjutnya nanti sewaktu melakukan koneksi ke mysqld ini dengan command line client mysql misalnya, Anda perlu menyebutkan opsi -h (host) dan -P (port) atau -S (socket). Misalnya, koneksi via soket Unix:
$ mysql -u root -S /home/hafidz/mysql/mysql.sock
Atau koneksi via TCP:
$ mysql -u root -h 127.0.0.1 -P 3366
Tapi, lagi-lagi, jika jumlah user banyak dan masing-masing ingin menjalankan mysqld-nya masing-masing, tentu saja overheadnya besar. Karena itu…

Tip 3: Kenali Sistem Access Privilege MySQL
Sebagai seorang admin database, mau tidak mau hal yang satu ini harus dikuasai baik-baik. Sistem Access Privilege adalah cara utama MySQL dalam membatasi user dan host mana saja yang bisa melakukan koneksi, menyimpan password masing-masing user, dan membatasi kemampuan user dalam memanipulasi database (apakah hanya bisa melakukan SELECT saja, atau SELECT dan UPDATE, dst). Apa artinya daemon MySQL yang terisolasi dari mesin maupun daemon lain apabila ia dengan cerobohnya menerima koneksi dari sembarang user dan host?

Sistem privilege MySQL cukup mendetil dan menurut saya lebih simpel tapi mendetil daripada sistem privilege PostgreSQL, meskipun dari segi otentikasi sistem PostgreSQL sebetulnya lebih fleksibel. Pada dasarnya seluruh informasi pengaturan privilege disimpan dalam sebuah database khusus bernama mysql. Penjelasan mendetil mengenai di luar cakupan artikel ini, tapi sebagai tip beberapa hal berikut ini sebaiknya diikuti. Pertama, sebaiknya tiap user diberi password. Kedua, tabel user di database mysql ini sangat sensitif karena berisi password, jadi jangan biarkan user manapun memiliki privilege SELECT terhadap. Ketiga, batasi privilege FILE maupun PROCESS, jangan berikan kecuali benar-benar perlu. Keempat, jangan biarkan satu user database melihat database lain kecuali benar-benar perlu.

Dalam server shared hosting yang saya kelola, demi kesederhanaan, tiap user database hanya boleh mengakses satu database, dan daftar privilegenya seperti ini: Entri di tabel user: ('localhost', 'USER', password('PASSWORD'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N'). Entri di tabel db: ('localhost', 'DATABASE', 'USER', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y'). Artinya, si user USER hanya dapat melihat database DATABASE, hanya bisa melakukan koneksi dari mesin lokal melalui soket Unix, dan tidak memiliki privilege GRANT. Privilege FILE diberikan, tapi berhubung tiap skrip CGI diwrap, maka setidaknya akan lebih sulit bagi seorang penyerang untuk menciptakan file sebagai user Unix lain.

Tip 4: Hanya Terima Koneksi Lokal
Dalam sebuah server shared hosting misalnya, umumnya database diakses dari skrip CGI/PHP/ASP di server yang sama. Jika kita ingin agar hanya user atau skrip dari mesin lokal saja yang dapat melakukan koneksi ke daemon MySQL maka kita dapat mematikan opsi listening di soket TCP. Seperti kita ketahui, MySQL mendengarkan koneksi di soket Unix (defaultnya di /var/lib/mysql/mysql.sock) dan di port TCP (defaultnya di port 3306). Soket Unix hanya untuk klien lokal, sementara soket TCP dapat digunakan untuk koneksi jaringan.
Untuk membuat mysqld tidak mendengarkan di soket TCP sama sekali, taruh baris berikut di /etc/my.cnf :

[mysqld]
skip-networking

lalu restart mysqld. Atau tambahkan --skip-networking saat menjalankan mysqld.
Setelah memakai opsi ini, bahkan koneksi ke 127.0.0.1 pun akan ditolak dengan pesan Connection Refused. Karena memang tidak ada soket TCP yang mendengarkan. Jadi untuk melakukan koneksi ke daemon MySQL kita harus menggunakan host localhost agar soket Unixlah yang dipakai sebagai metode koneksi.

Keuntungan menggunakan soket Unix, selain sedikit lebih cepat (karena tidak ada overhead protokol TCP/IP), isolasi filesystem pun berlaku sebagai lapisan pelindung. Database milik user hafidz di contoh Tip 2 tadi misalnya, tidak dapat dicapai sama sekali baik oleh klien di mesin lain maupun oleh user Unix lain di mesin yang sama, karena defaultnya lokasi soket Unix di /home/hafidz/mysql/mysql.sock ini tertutup dari user lain. Sehingga database ini bersifat pribadi dan hanya bisa diakses oleh user hafidz sendiri maupun oleh skrip CGI/PHP yang berjalan sebagai user hafidz. Daemon MySQL utama, di lain pihak, merupakan daemon yang terbuka bagi semua user, karena /var/lib/mysql/mysql.sock secara default dapat diakses oleh semua user.
Tentu saja, kadang-kadang database MySQL ingin diakses selain dari localhost (misalnya, ingin diakses dari klien GUI di komputer Windows). Dalam kasus ini, mau tidak mau kita harus membuka lagi soket TCP dan kembali mengandalkan sistem privilege MySQL dalam membatasi host.

Tip 5: Buang Database test
Dalam lingkungan multiuser, tiap user semestinya diberi database masing-masing dan database default yang diberikan oleh distribusi MySQL, yaitu test, biasanya tidak ada gunanya. Ada baiknya database ini dihapus saja sehingga tidak sembarang user yang bisa mengakses database ini dan lalu memenuhi disk atau melakukan serangan DOS misalnya. Sebab defaultnya adalah semua user database bisa melihat database test. Untuk menghapus database test, berikan perintah ini dari klien command line mysql:

mysql> DELETE FROM db WHERE db='test' OR db='test_%';
mysql> FLUSH PRIVILEGES;

Tip 6: chroot
Chroot adalah fasilitas yang disediakan di banyak sistem operasi Unix untuk membuat filesystem root “virtual” bagi program, misalnya di bawah /home/hafidz/root, sehingga program menganggap path tersebut adalah / dan tidak bisa melihat path di atasnya (/home/hafidz maupun /home maupun / asli). Chroot banyak bermanfaat untuk memenjarakan program sehingga tidak bisa menyentuh file-file di luar direktori yang sudah kita tetapkan sebagai penjaranya.

Tip ini cukup berhubungan dengan tip 2 (tiap user memperoleh mysqld masing-masing). Di lingkungan virtual server pun chroot sering dilakukan terhadap tiap-tiap daemon agar masing-masing tidak dapat melihat file milik daemon lain. Chroot saat ini harus dilakukan sebagai root karena merupakan operasi privileged. Menyambung contoh di tip 2, berikut ini cara menjalankan mysqld milik user hafidz dan memenjarakannya di /home/hafidz/mysql. mysqld memiliki opsi --chroot sehingga kita tidak perlu mengkopi /usr/sbin/mysqld-nya itu sendiri, namun terakhir saya coba masih bermasalah, sehingga kita akan melakukan chroot menggunakan /usr/sbin/chroot . Contoh ini untuk RedHat Linux (saya memakai versi 7.2) dan distribusi RPM binary dari MySQL AB (saya memakai 3.23.51).

$ chdir /home/hafidz
$ mkdir -p fakeroot/{var/lib,etc,tmp,lib,usr/sbin,usr/share}
$ mv mysql fakeroot/var/lib/   # direktori data yg sudah dibuat di tip 2
$ echo -e "root:*:0:0:::\nnobody:*:99:99:::\nhafidz:*:500:500:::" \
    > fakeroot/etc/passwd
$ echo -e "root::0:\nhafidz::500:" > fakeroot/etc/group
$ cp -a /lib/{ld-*,libc.so*,libc-*.so,libnsl*,libnss_files*,libtermcap*} \
    fakeroot/lib/
$ cp -a /usr/sbin/mysqld fakeroot/usr/sbin/
$ cp -a /usr/share/mysql fakeroot/usr/share/
 
# /usr/sbin/chroot /home/hafidz/fakeroot /usr/sbin/mysqld \
    --user=hafidz \
    --datadir=/var/lib/mysql \
    --port=3366 \
    --socket=/var/lib/mysql/mysql.sock

Untuk instalasi seperti di atas, dibutuhkan overhead ruang disk sebesar sekitar 12MB untuk mengkopi library Linux dan file-file lain yang diperlukan ke bawah /home/hafidz/fakeroot (karena jika tidak, setelah dilakukan chroot maka mysqld tidak akan dapat mencari library yang dibutuhkan). Kita juga memerlukan /etc/passwd dan /etc/group “dummy”. Ganti UID dan GID 500 sesuai UID dan GID user yang akan menjalankan mysqld. Setelah semua file-file siap, kita memanggil mysqld. Perhatikan bahwa opsi-opsi path di --datadir dan --socket adalah relatif terhadap fakeroot. Program-program yang berada di bawah chroot yang sama akan melihat soket dan direktori data MySQL milik hafidz ini di /var/lib/mysql, tapi sebetulnya—seperti yang akan dilihat program-program lain yang berada di luar chroot—lokasi asli ada di /home/hafidz/fakeroot/var/lib/mysql.

Chroot berguna terutama jika Anda tidak mempercayai MySQL versi development atau beta (mis: versi 4.0.2 saat ini). Chroot juga bermanfaat dalam menutup kemungkinan perintah SQL LOAD DATA INFILE dan SELECT INTO OUTFILE mengintip dan merusak file-file yang tidak diinginkan. Chroot juga perlu Anda pertimbangkan bila sebuah server memuat beberapa user yang benar-benar tidak saling mempercayai satu sama lain. Dalam kenyataan sehari-hari, saya jarang menggunakan chroot.

Tip 7: Jangan Hidupkan LOAD DATA LOCAL INFILE
LOAD DATA LOCAL INFILE adalah fasilitas agar klien bisa membaca sebuah file dari filesystem dan memasukkannya ke tabel database. Sejak 3.23.49, LOAD DATA LOCAL INFILE sudah dimatikan secara default. Jika ada skrip CGI atau ASP di mesin shared hosting Anda yang tidak diwrap, maka ada potensi perintah SQL tersebut dipakai untuk membaca file-file sebagai user nobody misalnya (dan mengambil source code skrip-skrip milik user lain lewat memuatnya ke tabel database lalu nanti ke file melalui SELECT INTO OUTFILE atau lewat skrip yang melakukan SELECT dan mencetaknya ke file). Jika Anda cukup yakin bahwa semua skrip terwrap, maka barulah Anda bisa mengaktifkan perintah SQL ini dengan memberikan opsi:

[mysql]
local-infile

di /etc/my.cnf. Skrip pun harus memberikan perintah mysql_options() dulu—saat ini belum didukung oleh PHP—sebelum bisa memberikan perintah SQL LOAD DATA LOCAL INFILE.

Tip 8: Koneksi SSL
Tip ini berkaitan dengan tip nomor 4. Jika koneksi MySQL Anda hanya lokal via soket Unix, Anda cukup aman di poin ini. Tapi jika daemon MySQL Anda harus menerima klien (atau melakukan replikasi) via koneksi TCP dari Internet, maka ada potensi pencurian data melalui sniffing paket. Password dan data-data sensitif bisa melayang dari hop ke hop dan siap disadap. Ada baiknya Anda mempertimbangkan mensetup SSL untuk koneksi MySQL.
MySQL baru mendukung koneksi SSL natif mulai 4.0. Karena itu, kita bisa menggunakan stunnel untuk mengenkripsi saluran komunikasi. Prinsip stunnel adalah, di sisi klien dan server kita memasang gerbang stunnel masuk agar terbentuk “terowongan”. Masing-masing klien dan server asli berkomunikasi secara lokal (via localhost) dengan stunnel. Sementara barulah stunnel di kedua sisi saling melakukan pembicaraan SSL. Berikut sebuah contoh. Di sisi klien (mis, beralamat di klien.com):

# /usr/sbin/stunnel -P/tmp/ -c -d 3306 -r server.com:3307
Di sisi server (yang beralamat mis di server.com):
# cd /usr/share/ssl/certs
# openssl req -new -x509 -days 365 -nodes -out stunnel.pem \
    -keyout stunnel.pem
# /usr/sbin/stunnel -P/tmp/ -p stunnel.pem -d 3307 -r localhost:3306
Lalu dari klien.com lakukan koneksi MySQL ke server server.com seperti biasa.

Penutup

Pesan terakhir, jangan lupa membaca kembali manual MySQL bagian General Security Issues and the MySQL Access Privilege System agar—mengutip kata-kata di manual tersebut—Anda “terhindar dari kesalahan-kesalahan security yang paling umum.” (sh)

** sumber : klik

Selasa, 10 April 2012

Mengatasi Linux "hang" waktu boot tanpa koneksi LAN (chipset Atheros)

Jika Anda menggunakan Linux (distro apapun) dan pernah mengalami kasus setelah sukses diinstall ke komputer (laptop/pc) kemudian booting dan saat tampil splash screen tiba2 matot alias "hang" di tengah jalan, Anda tidak perlu kawatir. Dari beberapa kasus yang terjadi, khususnya Linux yang sudah menggunakan kernel 3.0, hal ini terjadi karena adanya masalah kompatibilitas antara kartu jaringan (LAN) dengan kernel 3.0, khusus tipe Atheros seperti yang saya alami.

Jadi.. jika boot dalam kondisi tidak terhubungan dengan LAN maka komputer jadi hang di tengah jalan, tetapi jika terhubungan dan LAN semuanya baik-baik saja. Artinya.... kartu jaringan harus disiasati dengan dimatikan terlebih dahulu jika Tidak Terhubung dan LAN agar boot lancar.

Bagaimana cara mengatasinya.... sesuai dengan wangsit yg saya dapat dari Embah Gugle, silahkan ikuti cara2 berikut ini :


1. Edit file /etc/modprobe.d/blacklist.conf dengan editor teks kesayangan Anda, kemudian di bagian paling bawah silahkan ditambahkan perintah seperti di bawah ini kemudian simpan :
$ blacklist atl1c
2. Buka jendela konsole, kemudian jalankan perintah ini :
$ update-initramfs -u
3. Setelah selesai silahkan reboot komputer Anda, dijamin proses booting mulus. Nah.. setelah proses booting selesai.. bagaimana caranya jika Anda ingin terhubung ke jaringan LAN ?? Sambungkan terlebih dahulu kabel LAN, kemudian ketikkan perintah di bawah ini :
$ sudo modprobe atl1c  


Namun sejak kernel 3.3 permasalahan ini sudah tidak ada lagi, jadi hal ini hanya berlaku di kernel 3.0.... Semoga bermanfaat.

Jumat, 03 Februari 2012

Jam di halaman web

Sudah punya situs web? tapi bingung bagaimana caranya menampilkan jam yang indah ke pengunjung? Pingin bisa menampilkan jam seperti di bawah ini?


gampang.. caranya buka saja ClockLink.com, di sana disediakan banyak model jam, tinggal pakai dan GRATIS !! Ikuti petunjuk di dalamnya, copy link yang telah disediakan dan tempelkan di halaman web Anda. 

Selamat menikmati