Ancaman keamanan dan mitigasinya
Revision as of 07:36, 21 April 2025 by Onnowpurbo (talk | contribs)
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 |