Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya.

Penguji penetrasi pemula, khususnya, kurang menekankan keamanan basis data secara umum. Aplikasi tanpa konfigurasi basis data dan pengujian keamanan tidak akan aman. Anda mungkin sudah menggunakan perangkat lunak MySQL, sistem manajemen basis data, jadi bagaimana Anda membuatnya lebih aman? Berikut adalah tujuh langkah yang perlu Anda ikuti.

1. Gunakan Tunneling SSH Alih-alih Koneksi Jarak Jauh

Layanan MySQL berjalan pada port 3306 secara default. Saat Anda menginstal MySQL, Anda akan melihat bahwa port 3306 dalam mode mendengarkan untuk semua koneksi. Seperti berdiri, port MySQL terbuka untuk dunia luar. Itu sebabnya Anda harus mengatur layanan MySQL untuk hanya mendengarkan alamat lokal.

Karena server biasanya dijalankan pada distribusi Linux, contoh di bawah didasarkan pada distribusi Debian. File yang perlu Anda gunakan untuk tunneling SSH alih-alih koneksi jarak jauh dan untuk menutup port default ke dunia luar adalah

/etc/mysql/my.cnf. Dalam file ini, Anda perlu membuka bidang bernama [mysqld] dan tulis perintah berikut:

[mysqld]
mengikat-alamat=127.0.0.1

Setelah proses ini, jangan lupa simpan file ini dan restart service dengan perintah berikut:

sudo systemctl restart mysqld
# atau
sudosystemctlmengulang kembalimariadb.melayani

Dengan ini, layanan MySQL hanya akan mendengarkan alamat lokal.

Jika Anda menggunakan MariaDB, Anda juga dapat memeriksa /etc/mysql/mariadb.conf.d/50-server.cnf dan periksa apakah ada definisi untuk bind-address.

Sekarang Anda telah mengatur alamat bind ke 127.0.0.1, yang merupakan localhost, Anda dapat menjalankan pemindaian Nmap dan memeriksa hasilnya:

Anda dapat melihat port MySQL sebagai 127.0.0.1 mewakili localhost yang Anda lihat. Anda dapat mencoba dan mengubah alamat pengikatan lagi untuk memastikan ini berfungsi:

[mysqld]
mengikat-alamat=127.5.5.1

Kemudian simpan /etc/mysql/my.cnf file dan restart layanan MySQL. Jika Anda melakukan pemindaian Nmap sekali lagi pada tahap ini, Anda seharusnya tidak melihat alamat pengikatan ini di localhost.

Setelah Anda tahu ini berfungsi, kembali ke pengaturan dari langkah pertama dan atur kembali alamat pengikatan ke 127.0.0.1 dan simpan lagi.

2. Siapkan Penghalang Akses File Lokal

MySQL dapat berkomunikasi dengan sistem file lokal. Dengan kueri, Anda dapat melihat konten teks di sistem file lokal atau membakar hasil kueri ke disk. Untuk mencegah penyerang jahat menggunakan fitur ini, Anda harus mencegah MySQL berkomunikasi dengan sistem file lokal.

Anda dapat menggunakan fungsi yang disebut local-infile untuk mengambil tindakan pencegahan. Misalnya, bayangkan Anda memiliki file bernama "/etc/secretfile.txt" dan Anda memiliki kata sandi di file ini. Jika nilai fungsi local-infile di file /etc/mysql/my.cnf Anda adalah 1, maka akses terbuka. Jadi Anda dapat mengakses file secretfile.txt.

Nilai dari fungsi local-infile adalah 1. Mulai ulang database MySQL agar perubahan terjadi. Sekarang, sambungkan ke MySQL dengan perintah berikut dan periksa apakah Anda dapat melihat file secretfile.txt:

PILIHLOAD_FILE("/etc/secretfile.txt");

Tidak sulit untuk menangkap informasi dalam file apa pun di komputer Anda.

Untuk mengatasi masalah ini, ubah nilai local-infile di file /etc/mysql/my.cnf Anda sebagai berikut:

[mysqld]
lokal-berkas=0

Mulai ulang layanan MySQL. Sambungkan kembali ke MySQL dan ulangi langkah sebelumnya; Anda seharusnya tidak lagi dapat melihat isi file.

Jika pengguna belum memiliki izin baca dan tulis pada file lokal, mereka tidak akan dapat melihat file ini. Namun, itu masih sesuatu yang harus Anda periksa dalam uji penetrasi dan keamanan basis data.

3. Tetapkan Pengguna Aplikasi dan Kata Sandi

Pengguna manajemen database dan pengguna MySQL yang mengakses database harus berbeda satu sama lain. Dengan kata lain, menghubungkan aplikasi ke MySQL dengan pengguna root sangatlah berbahaya. Jika memungkinkan, tentukan pengguna aplikasi yang tidak berfungsi Operasi UPDATE atau INSERT terpisah.

Hal lain yang perlu dipertimbangkan pada titik ini adalah kata sandi pengguna. Seperti di hampir setiap bidang, kata sandi untuk pengguna MySQL harus rumit dan tidak dapat diprediksi. Jika Anda memerlukan bantuan untuk ini, ada sistem pembuat kata sandi hebat yang dapat Anda gunakan.

4. Hapus Pengguna Anonim

Ketika Anda menginstal MySQL secara default, beberapa pengguna anonim muncul. Anda perlu menghapus ini dan memblokir aksesnya. Untuk server MySQL yang aman, Anda seharusnya tidak mendapatkan respons apa pun sebagai hasil dari kueri berikut:

PILIH * DARI mysql.user DI MANAPENGGUNA="";
# Contoh Keluaran
Kosong mengatur (0,001 detik)

Jika ada hasil, Anda harus menghapus pengguna anonim ini. Misalnya, jika ada akun anonim bernama "anonuser" di lingkungan bernama "localhost", Anda harus menggunakan perintah seperti berikut untuk menghapus akun ini:

JATUHKAN PENGGUNA 'anonuser'@'localhost';

5. Periksa Izin File Lokal MySQL

Bayangkan Anda adalah seorang administrator database dan Anda ingin kembali ke data dari seminggu yang lalu. Dalam hal ini, Anda mungkin harus terhubung ke server database melalui SSH dan mengubah file MySQL yang Anda inginkan. Saat melakukan ini, Anda mungkin telah menggunakan hak pengguna root Linux; artinya, kepemilikan dan izin file data dapat berubah. Anda tidak menginginkan itu.

Lihatlah direktori /var/lib/mysql untuk memeriksa izin yang diberikan. Yang perlu Anda periksa di sini adalah apakah pemilik semua file adalah pengguna MySQL. Perintah berikut akan melakukan triknya:

sudo ls -al /var/lib/mysql

Izin baca dan tulis file seharusnya hanya untuk pengguna MySQL. Tidak ada pengguna lain yang harus memiliki izin apa pun.

6. Gunakan MySQL SSL

Memikirkan contoh konkret adalah cara terbaik untuk memahami penggunaan MySQL dan SSL. Bayangkan salah satu server di wilayah ABC, di mana terdapat banyak server berbeda, diambil alih oleh peretas jahat. Peretas akan melakukan pemindaian internal di wilayah ABC. Dengan cara ini, mereka mengumpulkan informasi tentang server.

Jika mereka mendeteksi server MySQL selama proses ini, mereka dapat melakukan a Serangan Man-in-the-Middle (MitM) pada server target, artinya mereka dapat mencuri informasi sesi aplikasi dan pengguna yang terhubung ke server ini. Salah satu cara terbaik untuk menghindarinya adalah dengan aktifkan SSL di server MySQL.

7. File Log dan Sejarah

Anda menggunakan log MySQL untuk menganalisis dan menemukan kesalahan. Anda dapat mengedit di mana log ini disimpan dengan memasukkan my.cnf sebagai berikut:

# /etc/mysql/my.cnf
[mysqld]
catatan =/var/catatan/mylogfiles

Anda dapat mengubah nama atau lokasi mylogfiles sesuai keinginan. Ada satu file lagi yang perlu Anda periksa. Saat Anda terhubung ke server MySQL di terminal Linux dan mengetik berbagai perintah, kueri ini disimpan di file mysql_history. Jika Anda menjalankan perintah berikut, Anda dapat melihat kueri yang Anda gunakan di terminal MySQL:

kucing ~/.mysql_history

Anda perlu menghapus konten file ini jika Anda tidak ingin memberikan informasi tentang kueri apa yang Anda buat di dalam server. Gunakan perintah berikut untuk menghapus isi file:

gema sudo "dibersihkan"> ~/.mysql_history

Anda kemudian dapat memeriksa isi file lagi.

Siapapun yang Memiliki Database Memiliki Sistem

Apa pun industri tempat Anda bekerja, basis data Anda selalu berisi informasi penting. Ini bisa berupa pelanggan, rekening bank, dan kata sandi Anda. Penyerang jahat tahu pentingnya dan nilai ini. Pengembang dan administrator basis data setidaknya perlu mengetahui dasar-dasar yang akan mereka temui dalam uji penetrasi untuk mengalahkan para peretas.