Ancaman keamanan dan mitigasinya: Difference between revisions
From OnnoCenterWiki
Jump to navigationJump 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**...." |
No edit summary |
||
| Line 1: | Line 1: | ||
==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== | |||
{| class="wikitable" | |||
! 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 | |||
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf | |||
Tambahkan: | 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 | |||
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: | Aktifkan log MySQL untuk melacak aktivitas mencurigakan: | ||
[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: | ||
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 | |||
|} | |||
==Pranala Menarik== | |||
* [[Database: Kuliah]] | |||
Latest revision as of 00: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 |