Difference between revisions of "Ancaman keamanan dan mitigasinya"
Jump to navigation
Jump to search
Onnowpurbo (talk | contribs) (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**....") |
Onnowpurbo (talk | contribs) |
||
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 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 |