Difference between revisions of "Ancaman keamanan dan mitigasinya"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Berikut adalah lanjutan **Modul 8: Keamanan Basis Data**, dengan fokus pada **Ancaman Keamanan** dan **strategi mitigasinya**, disertai **contoh nyata di MySQL Ubuntu 24.04**....")
 
 
Line 1: Line 1:
Berikut adalah lanjutan **Modul 8: Keamanan Basis Data**, dengan fokus pada **Ancaman Keamanan** dan **strategi mitigasinya**, disertai **contoh nyata di MySQL Ubuntu 24.04**.
+
==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==
  
## 🛡️ **Modul 8 (Lanjutan): Keamanan Basis Data**
+
{| class="wikitable"
### 🧨 Topik: Ancaman Keamanan dan Mitigasinya
+
! 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.
 +
|}
  
---
 
  
### 🎯 **Tujuan Pembelajaran**
+
==Strategi Mitigasi di MySQL Ubuntu 24.04==
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.
 
  
---
+
1. '''SQL Injection'''
  
## ⚠️ **8.12 Jenis Ancaman Keamanan Basis Data**
+
'''Mitigasi:'''
 +
* Gunakan '''prepared statement''' dalam aplikasi.
 +
* Batasi hak akses user MySQL hanya untuk operasi yang diperlukan.
 +
* Validasi input di sisi aplikasi.
  
| Ancaman                        | Deskripsi                                                                |
+
'''Contoh buruk:'''
|----------------------------------|---------------------------------------------------------------------------|
 
| **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.                      |
 
  
---
+
SELECT * FROM mahasiswa WHERE nama = '$input_user';
  
## 🛡️ **8.13 Strategi Mitigasi di MySQL Ubuntu 24.04**
+
'''Contoh mitigasi dengan hak akses:'''
  
---
+
GRANT SELECT ON universitas.mahasiswa TO 'webuser'@'localhost';
  
### 💥 1. **SQL Injection**
+
2. '''Akses Tidak Sah'''
**Mitigasi:**
 
- Gunakan **prepared statement** dalam aplikasi.
 
- Batasi hak akses user MySQL hanya untuk operasi yang diperlukan.
 
- Validasi input di sisi aplikasi.
 
  
**Contoh buruk:**
+
'''Mitigasi:'''
```sql
+
* Gunakan `GRANT`/`REVOKE` untuk mengatur hak akses secara spesifik.
SELECT * FROM mahasiswa WHERE nama = '$input_user';
+
* Gunakan autentikasi yang kuat dan log akses.
```
 
  
**Contoh mitigasi dengan hak akses:**
+
'''Contoh:'''
```sql
 
GRANT SELECT ON universitas.mahasiswa TO 'webuser'@'localhost';
 
```
 
  
---
+
CREATE USER 'limited_user'@'localhost' IDENTIFIED BY 'securePass123!';
 +
GRANT SELECT ON universitas.mahasiswa TO 'limited_user'@'localhost';
  
### 🔐 2. **Akses Tidak Sah**
+
3. '''Eksposur Data Sensitif'''
**Mitigasi:**
 
- Gunakan `GRANT`/`REVOKE` untuk mengatur hak akses secara spesifik.
 
- Gunakan autentikasi yang kuat dan log akses.
 
  
**Contoh:**
+
'''Mitigasi:'''
```sql
+
* Jangan tampilkan data sensitif langsung ke front-end.
CREATE USER 'limited_user'@'localhost' IDENTIFIED BY 'securePass123!';
+
* Enkripsi data penting (misalnya password) sebelum disimpan.
GRANT SELECT ON universitas.mahasiswa TO 'limited_user'@'localhost';
 
```
 
  
---
+
'''Contoh Hash Password (di aplikasi, bukan SQL):'''
  
### 🧾 3. **Eksposur Data Sensitif**
+
$password_hash = password_hash($password_input, PASSWORD_BCRYPT);
**Mitigasi:**
 
- Jangan tampilkan data sensitif langsung ke front-end.
 
- Enkripsi data penting (misalnya password) sebelum disimpan.
 
  
**Contoh Hash Password (di aplikasi, bukan SQL):**
+
4. '''Backdoor dan Malware'''
```php
 
$password_hash = password_hash($password_input, PASSWORD_BCRYPT);
 
```
 
  
---
+
'''Mitigasi:'''
 +
* Periksa file konfigurasi, query tak wajar, atau user asing.
 +
* Nonaktifkan fitur '''LOAD DATA LOCAL INFILE''' jika tidak diperlukan.
  
### 🐛 4. **Backdoor dan Malware**
+
'''Contoh disable di MySQL:'''
**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
```bash
 
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
 
```
 
  
 
Tambahkan:
 
Tambahkan:
```ini
 
[mysqld]
 
local-infile=0
 
```
 
  
---
+
[mysqld]
 +
local-infile=0
 +
 
 +
5. '''Kehilangan Data'''
 +
 
 +
'''Mitigasi:'''
 +
* Backup rutin menggunakan `mysqldump`.
 +
* Simpan salinan backup di lokasi aman.
  
### 🧯 5. **Kehilangan Data**
+
'''Contoh backup:'''
**Mitigasi:**
 
- Backup rutin menggunakan `mysqldump`.
 
- Simpan salinan backup di lokasi aman.
 
  
**Contoh backup:**
+
mysqldump -u root -p universitas > backup_universitas.sql
```bash
 
mysqldump -u root -p universitas > backup_universitas.sql
 
```
 
  
---
+
6. '''Serangan DoS (Denial of Service)'''
  
### 🌊 6. **Serangan DoS (Denial of Service)**
+
'''Mitigasi:'''
**Mitigasi:**
+
* Batasi jumlah koneksi simultan:
- Batasi jumlah koneksi simultan:
 
```sql
 
SET GLOBAL max_connections = 100;
 
```
 
- Gunakan **firewall** dan batasi IP tertentu jika diperlukan.
 
- Monitor query lambat (`slow_query_log`).
 
  
---
+
SET GLOBAL max_connections = 100;
  
## 🛠️ **8.14 Praktik Audit dan Logging**
+
* 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:
 
Aktifkan log MySQL untuk melacak aktivitas mencurigakan:
  
```ini
+
[mysqld]
[mysqld]
+
general_log = 1
general_log = 1
+
general_log_file = /var/log/mysql/mysql.log
general_log_file = /var/log/mysql/mysql.log
 
```
 
  
 
Lalu restart MySQL:
 
Lalu restart MySQL:
  
```bash
+
sudo systemctl restart mysql
sudo systemctl restart mysql
+
 
```
+
==Kesimpulan==
  
---
+
{| class="wikitable"
 +
! 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
 +
|}
  
## 📌 **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                        |
 
  
---
+
==Pranala Menarik==
  
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!
+
* [[Database: Kuliah]]

Latest revision as of 07:36, 21 April 2025

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