Ancaman keamanan dan mitigasinya

From OnnoWiki
Revision as of 07:36, 21 April 2025 by Onnowpurbo (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Tujuan Pembelajaran

Setelah mempelajari modul ini, mahasiswa mampu:

  • Mengidentifikasi berbagai ancaman keamanan terhadap sistem basis data.
  • Menerapkan langkah mitigasi di MySQL Ubuntu 24.04.
  • Menyusun strategi pencegahan dan pemulihan terhadap serangan.

Jenis Ancaman Keamanan Basis Data

Ancaman Deskripsi
1. SQL Injection Penyusupan perintah SQL melalui input pengguna.
2. Akses tidak sah Pengguna yang tidak memiliki izin mengakses atau mengubah data.
3. Eksposur data sensitif Data penting (password, email, IPK) terbuka ke publik.
4. Malware / backdoor Penyisipan skrip atau layanan tersembunyi untuk mencuri atau merusak.
5. Kehilangan data (data loss) Karena human error, kerusakan sistem, atau serangan.
6. Serangan DoS pada MySQL Membanjiri server dengan koneksi atau query berat.


Strategi Mitigasi di MySQL Ubuntu 24.04

1. SQL Injection

Mitigasi:

  • Gunakan prepared statement dalam aplikasi.
  • Batasi hak akses user MySQL hanya untuk operasi yang diperlukan.
  • Validasi input di sisi aplikasi.

Contoh buruk:

SELECT * FROM mahasiswa WHERE nama = '$input_user';

Contoh mitigasi dengan hak akses:

GRANT SELECT ON universitas.mahasiswa TO 'webuser'@'localhost';

2. Akses Tidak Sah

Mitigasi:

  • Gunakan `GRANT`/`REVOKE` untuk mengatur hak akses secara spesifik.
  • Gunakan autentikasi yang kuat dan log akses.

Contoh:

CREATE USER 'limited_user'@'localhost' IDENTIFIED BY 'securePass123!';
GRANT SELECT ON universitas.mahasiswa TO 'limited_user'@'localhost';

3. Eksposur Data Sensitif

Mitigasi:

  • Jangan tampilkan data sensitif langsung ke front-end.
  • Enkripsi data penting (misalnya password) sebelum disimpan.

Contoh Hash Password (di aplikasi, bukan SQL):

$password_hash = password_hash($password_input, PASSWORD_BCRYPT);

4. Backdoor dan Malware

Mitigasi:

  • Periksa file konfigurasi, query tak wajar, atau user asing.
  • Nonaktifkan fitur LOAD DATA LOCAL INFILE jika tidak diperlukan.

Contoh disable di MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Tambahkan:

[mysqld]
local-infile=0

5. Kehilangan Data

Mitigasi:

  • Backup rutin menggunakan `mysqldump`.
  • Simpan salinan backup di lokasi aman.

Contoh backup:

mysqldump -u root -p universitas > backup_universitas.sql

6. Serangan DoS (Denial of Service)

Mitigasi:

  • Batasi jumlah koneksi simultan:
SET GLOBAL max_connections = 100;
  • Gunakan firewall dan batasi IP tertentu jika diperlukan.
  • Monitor query lambat (`slow_query_log`).

Praktik Audit dan Logging

Aktifkan log MySQL untuk melacak aktivitas mencurigakan:

[mysqld]
general_log = 1
general_log_file = /var/log/mysql/mysql.log

Lalu restart MySQL:

sudo systemctl restart mysql

Kesimpulan

Ancaman Mitigasi
SQL Injection Validasi input, prepared statement, batasi hak akses
Akses tidak sah Autentikasi kuat, `GRANT`/`REVOKE`, audit log
Eksposur data Enkripsi data penting, minimalisasi akses dan tampilan
Malware / backdoor Matikan `LOAD DATA`, audit konfigurasi dan file
Kehilangan data Backup berkala, recovery plan
Serangan DoS Batas koneksi, firewall, monitoring query lambat


Pranala Menarik