Ancaman keamanan dan mitigasinya
Berikut adalah lanjutan **Modul 8: Keamanan Basis Data**, dengan fokus pada **Ancaman Keamanan** dan **strategi mitigasinya**, disertai **contoh nyata di MySQL Ubuntu 24.04**.
---
- 🛡️ **Modul 8 (Lanjutan): Keamanan Basis Data**
- 🧨 Topik: Ancaman Keamanan dan Mitigasinya
- 🛡️ **Modul 8 (Lanjutan): Keamanan Basis Data**
---
- 🎯 **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.
---
- ⚠️ **8.12 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. |
---
- 🛡️ **8.13 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:**
```sql SELECT * FROM mahasiswa WHERE nama = '$input_user'; ```
- Contoh mitigasi dengan hak akses:**
```sql 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:**
```sql 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):**
```php $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:**
```bash sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ```
Tambahkan: ```ini [mysqld] local-infile=0 ```
---
- 🧯 5. **Kehilangan Data**
- Mitigasi:**
- Backup rutin menggunakan `mysqldump`. - Simpan salinan backup di lokasi aman.
- Contoh backup:**
```bash mysqldump -u root -p universitas > backup_universitas.sql ```
---
- 🌊 6. **Serangan DoS (Denial of Service)**
- Mitigasi:**
- Batasi jumlah koneksi simultan: ```sql SET GLOBAL max_connections = 100; ``` - Gunakan **firewall** dan batasi IP tertentu jika diperlukan. - Monitor query lambat (`slow_query_log`).
---
- 🛠️ **8.14 Praktik Audit dan Logging**
Aktifkan log MySQL untuk melacak aktivitas mencurigakan:
```ini [mysqld] general_log = 1 general_log_file = /var/log/mysql/mysql.log ```
Lalu restart MySQL:
```bash sudo systemctl restart mysql ```
---
- 📌 **8.15 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 |
---
Kalau kamu mau lanjut ke **Modul 9: Backup, Recovery, dan Replikasi**, atau mau saya bantu buat skrip audit dan deteksi user mencurigakan, tinggal bilang saja!