PostgreSQL, juga dikenal sebagai Postgres, adalah sistem manajemen basis data relasional objek tujuan umum. Ini adalah salah satu database open-source paling canggih yang tersedia. Namun, ada banyak masalah keamanan dan potensi kerentanan jika aplikasi tidak diamankan dengan benar.
Jika Anda seorang administrator sistem atau database, Anda perlu mengetahui cara melindungi Postgres sebelum masuk ke produksi.
Dalam tutorial ini, kami akan menunjukkan cara mengamankan server PostgreSQL di Ubuntu18.04.
Prasyarat
- VPS Ubuntu 18.04 baru di Platform Cloud Atlantic.net.
- Kata sandi root yang dikonfigurasi di server Anda.
Langkah 1 – Buat Server Cloud Atlantic.Net
Pertama, masuk ke Server Cloud Atlantic.Net Anda. Buat server baru, pilih Ubuntu 18.04 sebagai sistem operasi dengan setidaknya 1GB RAM. Hubungkan ke Server Cloud Anda melalui SSH dan masuk menggunakan kredensial yang disorot di bagian atas halaman.
Setelah Anda masuk ke server Ubuntu 18.04 Anda, jalankan perintah berikut untuk memperbarui sistem dasar Anda dengan paket terbaru yang tersedia.
apt-get update -y
Langkah 2 – Instal PostgreSQL
apt-get install postgresql postgresql-contrib -y
Setelah instalasi selesai, mulai server PostgreSQL dan aktifkan untuk memulai saat reboot:
systemctl start postgresqlsystemctl aktifkan postgresql
Langkah 3 – Buat Basis Data dan Pengguna
Selanjutnya, Anda perlu membuat database dan pengguna untuk tujuan pengujian.
Pertama, masuk ke shell PostgreSQL dengan perintah berikut:
sudo -i -u postgres psql
Anda akan melihat output berikut:
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1)) Ketik "bantuan" untuk bantuan.postgres=#
Selanjutnya, buat pengguna bernama testuser dan atur kata sandinya.
postgres=# CREATE USER testuser DENGAN PASSWORD 'password';
Selanjutnya, buat database bernama testdb dan berikan akses penuh ke pengguna baru:
postgres=# CREATE DATABASE testdb OWNER testuser;
Selanjutnya, keluar dari shell PostgreSQL dengan perintah berikut:
postgres=# \q
Langkah 4 – Konfigurasikan Alamat Mendengarkan
Untuk lingkungan produksi, Anda perlu mengonfigurasi PostgreSQL untuk mendengarkan di antarmuka publik.
Anda dapat mengubah pengaturan ini dengan mengedit file /postgresql.conf:
nano /etc/postgresql/10/main/postgresql.conf
Temukan baris berikut:
#listen_addresses ='localhost'
Ganti dengan yang berikut ini:
listen_addresses ='localhost,your-server-ip'
Simpan dan tutup file setelah Anda selesai. Kemudian, mulai ulang layanan PostgreSQL untuk menerapkan perubahan:
systemctl restart postgresql
Langkah 5 – Konfigurasikan Host yang Diizinkan
Untuk keamanan yang lebih baik, disarankan untuk hanya mengizinkan IP tertentu untuk mengakses dan memodifikasi database PostgreSQL. Anda dapat melakukannya dengan mengedit file pg_hba.conf:
nano /etc/postgresql/10/main/pg_hba.conf
Temukan baris berikut:
# lokal DATABASE PENGGUNA METODE [OPTIONS]
Tambahkan baris berikut di bawah baris di atas:
host testdb testuser client-ip-address/32 md5
Simpan dan tutup file setelah Anda selesai. Kemudian, mulai ulang layanan PostgreSQL untuk menerapkan perubahan:
systemctl restart postgresql
Di mana:
tuan rumah :host adalah soket TCP/IP biasa atau terenkripsi SSL.
basis data :testdb adalah nama database tempat host dapat terhubung.
pengguna :testuser adalah nama pengguna yang diizinkan untuk melakukan koneksi.
alamat :client-ip-address/32 menentukan alamat IP komputer klien.
auth-method :md5 adalah nama metode otentikasi.
Langkah 6 – Konfigurasikan Firewall UFW
apt-get install ufw -y
Selanjutnya, disarankan untuk mengonfigurasi aturan firewall UFW untuk memberikan akses ke port default PostgreSQL 5432 hanya untuk IP klien.
PENTING: Sebelum memulai, Anda harus mengizinkan koneksi SSH yang masuk melalui UFW, karena itu akan membuat Anda kehilangan akses shell. Anda akan dikunci dan tidak dapat terhubung ke instance Anda.
Anda dapat mengizinkan layanan SSH menggunakan perintah berikut:
ufw izinkan ssh
Selanjutnya, aktifkan firewall UFW dengan perintah berikut:
ufw aktifkan
Selanjutnya, izinkan port PostgreSQL 5432 hanya ke alamat IP klien menggunakan perintah berikut:
ufw izinkan dari client-ip-address ke port 5432
Selanjutnya, periksa status aturan UFW dengan perintah berikut:
status ufw
Anda akan mendapatkan output berikut:
Langkah 7 – Verifikasi Koneksi Jarak Jauh
Pada titik ini, server PostgreSQL diamankan dan hanya dapat diakses dari IP klien.
Untuk memverifikasinya, hubungkan database PostgreSQL Anda dari sistem klien:
psql -U testuser -h postgres-server-ip -d testdb
Anda akan diminta untuk memberikan password untuk testuser, seperti yang ditunjukkan di bawah ini:
Kata sandi untuk pengguna penguji:
Ketik sandi Anda dan tekan Enter . Setelah koneksi dibuat, Anda akan mendapatkan output berikut:
psql (9.3.24, server 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1)))PERINGATAN:psql major versi 9.3, server major versi 10. Beberapa fitur psql mungkin tidak berfungsi.Sambungan SSL (cipher:ECDHE-RSA- AES256-GCM-SHA384, bit:256)Ketik "bantuan" untuk bantuan.testdb=>
Itu saja untuk saat ini.
Kesimpulan
Dalam panduan di atas, Anda mempelajari cara mengamankan PostgreSQL dengan mengonfigurasi PostgreSQL untuk memberikan akses hanya ke host tertentu. Anda juga telah mempelajari cara mengonfigurasi UFW untuk mengizinkan koneksi hanya dari host tertentu. Anda sekarang seharusnya dapat melindungi server PostgreSQL Anda dari jenis serangan tertentu. Mulailah hari ini dengan hosting VPS dari Atlantic.Net!