Tampilkan postingan dengan label mysql. Tampilkan semua postingan
Tampilkan postingan dengan label mysql. Tampilkan semua postingan

Cara Membatasi Akses PhpMyAdmin Di Linux Berdasarkan IP Address

Hai! Wah, sudah cukup lama juga saya tidak memposting artikel di blog Tutorial Linux Ubuntu Berbahasa Indonesia ini ya. Seperti biasalah, karena keterbatasan waktu dan banyaknya aktifitas saya :D
Saya menulis di blog ini ketika memiliki waktu luang, dan mungkin sekarang adalah waktu yang tepat untuk posting artikel baru. Tidak tau kenapa juga, pembahasan di artikel ini masih berhubungan dengan keamanan di server database. Sebelumnya saya juga menjelaskan topik yang sama di artikel ini :
Mungkin sebenarnya dari semua yang saya jelaskan di artikel-artikel tersebut tidak harus anda pakai semua meskipun saya setuju dengan pernyataan "semakin aman semakin baik, masa bodoh dengan kenyamanan". Di artikel ini saya ingin memberikan informasi tentang pengamanan server database atau server PhpMyAdmin dengan cara membatasi akses PhpMyAdmin berdasarkan IP Address.

Saya sudah menjelaskan cukup panjang lebar dipembahasan sebelumnya bahwa sangat riskan sekali membiarkan PhpMyAdmin terbuka untuk publik, meskipun tidak dipublikasikan tapi tetap saja opened for everyone :)

Akhirnya saya menemukan lagi cara yang menarik, yaitu membatasi akses phpmyadmin berdasarkan IP Address, dengan metode ini phpmyadmin tetap tertutup, dan hanya dibuka untuk orang-orang tertentu.

Hal pertama yang harus anda lakukan adalah membuat IP Address client anda static (kalau DB Admin berada di jaringan lokal), lakukan pengaturan ini di router DHCP anda. Jika anda memiliki relasi kerja diperusahaan lain anda akan memakai IP Public router WAN untuk identitas mereka.

Selanjutnya buka file "/etc/phpmyadmin/apache.conf", dan perhatikan pengaturan yang saya buat :

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php

        <IfModule mod_php5.c>
                AddType application/x-httpd-php .php

                php_flag magic_quotes_gpc Off
                php_flag track_vars On
                php_flag register_globals Off
                php_admin_flag allow_url_fopen Off
                php_value include_path .
                php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
                php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
        </IfModule>
#rule berawal dari sini
deny from all
allow from 10.1.1.1 10.1.1.2 10.1.1.10 10.0.64.1
#rule berakhir sampai sini
</Directory>

Statement "deny from all" sudah jelas sekali akan menolak semua transaksi dari sumber manapun, lalu statement "alow from..." akan mengijinkan beberapa IP address untuk dapat mengaksesnya. Dan lihat daftar IP Address yang saya ijinkan untuk mengakses PhpMyAdmin. Pemisah mereka hanya spasi saja, tidak perlu koma atau apapun. Jika yang di allow adalah network tertentu cukup tambahkan network mereka seperti misalnya 10.1.1.0/25.

Mudah sekali ternyata kan! :)
Sekarang PhpMyAdmin saya hanya dapat diakses dari komputer-komputer yang memiliki IP address diatas.

Metode seperti apa yang akan anda pakai untuk mengamankan server database phpmyadmin? Jelas itu menjadi keputusan anda, saya sudah memberikan beberapa metode yang cukup untuk menjadi bahan pertimbangan anda.

Selamat mencoba,
Salam penguin! :)


Cara Mengamankan PhpMyAdmin Dengan SSL Mode HTTPS Di Linux Ubuntu

Bonjour! Server database adalah sebuah area yang sangat sensitif, dimana tidak bisa sembarang orang dapat mengaksesnya atau mengambil data didalamnya, apalagi jika mempunyai niat yang tidak baik. Semua itu harus dijauhkan dari server database karena akibatnya akan sangat fatal. Ada banyak metode yang bisa dilakukan oleh seorang system administrator.

Seperti yang kita ketahui bahwa PhpMyAdmin adalah salah satu media konsol database yang memudahkan pekerjaan kita daripada harus mengakses database menggunakan CLI. Namun terkadang resiko kesalahan bisa lebih besar ketika kita mengotak-atik database dengan konsol CLI daripada ketika kita mengaksesnya dengan PhpMyAdmin. Lalu pertanyaannya adalah, apakah kita yakin jika PhpMyAdmin kita buka maka server kita aman? Tentu tidak! Sebelumnya saya pernah membahas mengenai beberapa metode pengamanan PhpMyAdmin di linux. Sebenarnya dengan cara yang saya tulis di artikel tersebut sudah cukup aman, namun jika boleh saya jujur itu masih kurang aman. Karena didalam artikel saya tersebut PhpMyAdmin masih diakses dengan HTTP Mode. Itu artinya Sniffing masih mempunyai kemungkinan untuk dilakukan bukan? Tentu kita tidak mau server database kita di obrak-abrik oleh para hacker. Dengan ditulisnya artikel ini saya akan memberikan tutorial tentang bagaimana caranya mengamankan PhpMyAdmin dengan SSL Mode HTTPS di Linux. Metode ini saya praktekan dengan VM Ubuntu Server, bagi anda yang memakai distro linux lainnya sepertinya tidak akan berbeda terlalu jauh. Jika anda belum menginstall PhpMyAdmin di server anda, silahkan install terlebih dahulu, jika anda belum mengetahui cara install PhpMyAdmin di Linux anda bisa mengikuti langkah-langkahnya di artikel saya sebelumnya.

Baiklah kita mulai, saya memberikan IP Address 192.168.1.1 pada VM saya. Langkah pertama yang akan kita lakukan adalah kita memberikan autentikasi sebelum mengakses halaman login PhpMyAdmin. Hal ini sangat saya rekomendasikan untuk anda lakukan demi mengamankan PhpMyAdmin anda. Cara memberikan autentikasi pada PhpMyAdmin adalah :

Buka file /etc/phpmyadmin/apache2.conf. Lalu cari text "DirectoryIndex index.php". Lalu tambahkan line dibawahnya "AllowOverride All".
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .

membuat file .htaccess pada folder /usr/share/phpmyadmin/. Masukkan script dibawah ini :
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Script diatas akan mengarahkan user pada autentikasi sebelum mengakses halaman login PhpMyAdmin. Username dan password yang digunakan untuk autentikasi tersebut berbeda dengan username dan password yang dipakai untuk mengakses MySQL via CLI atau via PhpMyAdmin. File username dan password untuk autentikasi ini akan disimpan di folder /etc/phpmyadmin/.htpasswd. Selanjutnya yang akan kita lakukan adalah membuat username dan password untuk autentikasi. Ketikkan perintah ini di server atau VM anda :
sudo htpasswd -c /etc/phpmyadmin/.htpasswd user_name
Setelah anda menekan enter untuk perintah tersebut, anda akan disuruh membuat password untuk user tersebut. Perintah ini akan membuat sebuah user untuk autentikasi sebelum mengakses halaman login PhpMyAdmin dan file tersebut akan disimpan pada file /etc/phpmyadmin/.htpasswd. Untuk mengujinya silahkan restart service apache anda.
sudo service apache2 restart
Maka seharusnya anda mendapatkan tampilan seperti ini :

Autentikasi sebelum mengakses login page PhpMyAdmin

Selanjutnya adalah kita akan memaksa PhpMyAdmin diakses melalui HTTPS, bukan HTTP. Ini bertujuan supaya setiap transaksi data antara kita dan server tersebut di enkripsi. Jadi tidak ada kesempatan bagi para hacker untuk melakukan sniffing. Cara mengkonfigurasi HTTPS SSL Mode di Linux sebenarnya sudah saya bahas diartikel sebelumnya. Tapi daripada ribet, saya akan menuliskan ulang diartikel ini. Cara konfigurasi PhpMyAdmin dengan HTTPS SSL Mode, pertama, lakukan dua perintah dibawah ini pada server anda :
sudo a2enmod ssl
sudo service apache2 restart

Lalu buatlah direktori untuk menyimpan file certificate SSL, dan buatlah cert dan key dengan perintah ini :
sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Perintah diatas akan membuat file certificate yang berlaku untuk 365 hari atau 1 tahun dengan enkripsi 2048 bit. Lalu kedua file tersebut akan disimpan didalam folder /etc/apache2/ssl. Setelah anda menekan enter untuk perintah tersebut, anda harus mengisi pertanyaan-pertanyaan yang tampil seperti dibawah, isilah dengan benar.
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) [AU]:ID
State or Province Name (full name) [Some-State]:West Java
Locality Name (eg, city) []:Bandung
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Apocalypsix Inc
Organizational Unit Name (eg, section) []:IT Dept
Common Name (e.g. server FQDN or YOUR name) []:apocalypsix.com
Email Address []:webmaster@apocalypsix.com

Setelah membuat file certificate dan key kita tambahkan NameVirtualHost :443 didalam file /etc/apache2/ports.conf. Lalu selanjutnya adalah mengkonfigurasi file site default-ssl di folder /etc/apache2/default-ssl. Masukkan lokasi apache.key dan apache.cert yang kita buat sebelumnya. Cari dan rubah line tersebut sesuai path masing-masing.
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Tutup dan save. Lalu selanjutnya adalah memaksa PhpMyAdmin diakses melalui HTTPS. Masukkan script dibawah ini kedalam file /etc/phpmyadmin/config.inc.php. Simpan script ini di line paling bawah.
$cfg['ForceSSL'] = true;

Simpan dan Tutup file. Lalu aktifkan site default-ssl
sudo a2ensite default-ssl
sudo service apache2 restart

Untuk melihat hasilnya anda bisa coba dengan memanggil phpmyadmin.
192.168.1.1/phpmyadmin

Pertama anda akan melihat tampilan seperti dibawah ini. Masukkan username dan password yang kita buat tadi.
Autentikasi sebelum login page PhpMyAdmin

Lalu setelah anda login akan tampil halaman seperti ini :
Security warning SSL
Dan akhirnya anda akan melihat login page PhpMyAdmin :
Login Page PhpMyAdmin
Login dengan username dan password mysql anda.
PhpMyAdmin

Dan sekarang server database anda sudah lebih aman dari sebelumnya. Cara mengamankan PhpMyAdmin dengan SSL Mode HTTPS di linux tidak sulit bukan. Semoga artikel ini membantu anda.

Semoga bermanfaat,
Salam penguin! :)

Perintah-perintah dasar Mysql di Linux

Sebenarnya perintah-perintah dasar mysql di linux ini akan berguna di sistem operasi apapun termasuk windows, mungkin hanya sedikit berbeda pada pen-deskripsian perintah saja. Jika anda adalah seorang System Administrator, maka jangan pernah berpikir anda bukanlah DB Admin ketika disuruh melakukan pekerjaan-pekerjaan yang sedikit berhubungan dengan database. Kemampuan inipun harus dipahami dan dimengerti oleh seorang System Administrator. Sebenarnya ada Phpmyadmin untuk melakukan pekerjaan-pekerjaan ini, tapi saya pribadi agak risih ketika bekerja dengan phpmyadmin. Karena tentu ruang database ini yang seharusnya berada di backend, berubah menjadi frontend. Seberapa kemungkinan akan bisa diretas? Sepertinya itu bergantung kepada nasib baik anda :)

Masuk Kedalam mysql

mysql -u <username> -p
Setelah kita menekan enter akan diminta password. Sebenarnya bisa memasukkan password langsung, caranya seperti ini
mysql -u <username> -p<password>


Cara Meng-export database


mysqldump -u <username> -p nama_database > /path/anda/menyimpan/hasil/export.sql
Sekali lagi, untuk password itu optional. Anda bisa langsung memasukkan seperti contoh pertama.


Cara Meng-import database


mysql -u <username> -p nama_database < /path/anda/menyimpan/file/yang/mau/diimport.sql

Cara Membuat user baru untuk mysql (Privileges)


Untuk langkah ini anda harus masuk terlebih dahulu kedalam mysql. Lalu selanjutnya ketik perintah ini

GRANT ALL ON nama_database.* TO ‘user’@’host’ IDENTIFIED BY ‘password’;

Contoh diatas adalah memberikan hak akses penuh kepada user baru yang anda buat dengan password yang anda berikan. Statement ALL untuk hak akses penuh, seperti READ, INSERT, DELETE, UPDATE. Anda bisa juga membatasi hak aksesnya dengan mengganti statement ALL menjadi SELECT. Dengan statement SELECT user baru yang anda buat hanya bisa melihat isi database. Tidak bisa melakukan INSERT, DELETE, UPDATE.

Statement .* diujung nama_database adalah menyatakan user tersebut berhak sepenuhnya atas semua tabel yang berada didalam database. Jika anda ingin membatasi sampai seberapa jauh hak akses user tersebut, anda bisa mengganti statement .* dengan .nama_tabel Contohnya :

GRANT ALL ON nama_database.nama_tabel TO ‘user’@’host’ IDENTIFIED BY ‘password’;

Jika anda ingin memberikan privileges sampai 3 atau 4 tabel, lakukan cara diatas berulang-ulang dengan nama tabel yang berbeda. Sesuaikan dengan kebutuhannya. Atau jika seandainya user tersebut hanya berhak melihat table-tabel tertentu, maka ganti statement ALL menjadi SELECT.

Selanjutnya statement host, ini mengindikasikan user tersebut berada dimana. Bisa di localhost, bisa diluar network (internet) atau didalam network (intranet). Cukup ganti host tersebut sesuai dengan kebutuhan anda.  Bisa diisi dengan domain, atau IP Address.  Host diluar localhost berarti anda harus merubah setting-an bind_address yang ada di file my.cnf. Kalau di Ubuntu file tersebut berada di /etc/mysql/my.cnf. Secara default bind_address hanya merujuk pada 127.0.0.1 atau localhost. Nah, rubah rule tersebut menjadi 0.0.0.0.

Cara Menghapus user mysql (drop privileges)


Jika sekiranya user yang anda buat sudah tidak pernah mengakses lagi, ada baiknya anda menghapus privileges dan usernya. Perintahnya seperti ini

DROP USER ‘user’@’host’;

Cara Mengubah password root mysql


mysqladmin -u root -p‘passwordlama’ password password_baru

Cara Melihat daftar user, host di msyql



Pertama, anda harus masuk kedalam mysql. Ikuti perintah-perintah ini
mysql -u root -p
mysql> use mysql;
mysql> select user,host from user;
Nanti akan muncul seperti ini :

+------------------+----------------+
| user             | host           |
+------------------+----------------+
| pentaho          | 10.1.1.16      |
| radius           | 10.1.1.17      |
| filelocker       | 10.1.1.18      |
| agus             | 10.64.0.251    |
| root             | 127.0.0.1      |
| root             | ::1            |
|                  | serverfarm     |
| root             | serverfarm     |
|                  | localhost      |
| debian-sys-maint | localhost      |
| delis            | localhost      |
| edam             | localhost      |
| root             | localhost      |
| sync             | localhost      |
+------------------+----------------+


Saya rasa cukup untuk sekarang, jika anda mempunyai pertanyaan bisa tuliskan di komentar. Dengan senang hati saya akan membantu :)

Semoga bermanfaat,
Salam penguin! :)