it-swarm-id.com

Kapan waktu yang tepat untuk koneksi Database Enkripsi SSL?

Katakanlah saya memiliki server web yang saya setup, dan kemudian server database.

Namun, mereka berkomunikasi secara lokal dan berada di belakang firewall. Menurut pendapat saya, tidak diperlukan SSL di sini, kan?

Satu-satunya waktu untuk menggunakan SSL untuk mengenkripsi koneksi basis data adalah antara server web yang ada di server yang berkomunikasi dari jarak jauh dengan server basis data yang terletak di tempat lain bukan?

Saya telah melihat panduan untuk keamanan sebelum mengadvokasi pengamanan dengan koneksi database SSL tetapi tidak jelas kapan harus menggunakannya.

20
Dexter

Sepertinya dua jawaban sebelumnya untuk pertanyaan ini kurang lebih sangat merekomendasikan untuk mengaktifkan SSL, tapi saya ingin menyarankan sudut penalaran yang berbeda (walaupun saya tidak merekomendasikan untuk tidak mengaktifkan SSL).

Dua poin kunci dalam menilai apakah Anda memerlukan SSL atau tidak adalah (a) apa yang SSL lindungi dari Anda dan (b) apa model utasnya: sebutkan ancaman potensial.

SSL/TLS melindungi pengangkutan informasi antara klien (dalam hal ini, server web Anda) dan server (dalam hal ini, server basis data Anda) agar tidak dirusak dan diuping oleh siapa pun di jaringan di antaranya (termasuk dapat mengaksesnya) dua mesin).

Untuk menilai apakah SSL berguna, Anda perlu mengasumsikan bahwa penyerang berada dalam posisi untuk melakukan serangan yang dirancang SSL untuk melindungi Anda terhadap. Artinya, penyerang harus berada dalam posisi untuk mengendus paket di jaringan atau di kedua mesin.

  • Jika seseorang dalam posisi mengendus paket dari server database, mereka cenderung memiliki akses root/admin ke server itu. Menggunakan SSL/TLS pada tahap itu tidak akan membuat perbedaan.

  • Jika seseorang berada dalam posisi untuk mengendus paket pada jaringan antara server web dan server database (tidak termasuk mesin-mesin itu), menggunakan SSL/TLS akan mencegah mereka melihat/mengubah konten aplikasi. Jika Anda berpikir mungkin ada kemungkinan ini, hidupkan SSL. Cara untuk mengurangi ini adalah dengan menggunakan dua kartu jaringan di server web: satu ke dunia luar dan satu ke LAN bagian dalam di mana server DB berada (tanpa mesin lain, atau dengan cara yang Anda dapat memperlakukan semuanya sebagai mesin tunggal yang lebih besar). Jaringan ini yang membentuk keseluruhan web-farm atau cluster (namun Anda ingin menyebutnya) akan dipisahkan secara fisik dan hanya memiliki satu titik masuk dari luar: server web itu sendiri (prinsip yang sama untuk simpul kepala proxy terbalik).

  • Jika seseorang berada dalam posisi untuk mengendus paket pada node kepala (server web) itu sendiri, mereka cenderung memiliki akses root di sana (proses yang dijalankan oleh pengguna non-root pada mesin, seharusnya tidak dapat membaca paket yang bukan untuk mereka). Dalam hal ini, Anda akan memiliki masalah besar.

    Yang saya ragu di sini adalah apakah mengaktifkan SSL benar-benar melindungi Anda dalam skenario ini.

    Seseorang dengan akses root di server web akan dapat membaca konfigurasi aplikasi Anda, termasuk kata sandi DB, dan harus dapat terhubung ke server DB secara sah, bahkan menggunakan SSL.

    Dalam rekan, jika Anda berasumsi bahwa ini menjamin penggunaan SSL (karena mungkin lebih sulit untuk melihat apa yang sebenarnya dilakukan proses daripada hanya melihat jaringan, bahkan jika Anda memiliki kontrol root pada mesin), ini berarti Anda juga ingin mengaktifkan komunikasi localhost (misalnya jika Anda memiliki layanan lain di server web Anda, atau dalam situasi di mana server DB dan server web berada di mesin yang sama).

Itu tidak selalu merupakan hal yang buruk untuk menjadi terlalu berhati-hati, tetapi Anda harus meletakkan pertanyaan Anda dalam konteks apa yang juga bisa dilakukan penyerang jika mereka berada dalam posisi untuk melakukan serangan terhadap apa yang langkah keamanan (SSL) lindungi dari Anda, dan apakah tindakan pengamanan ini akan mencegah mereka mencapai tujuan mereka, sekali di posisi ini.

Saya pikir jendela sebenarnya cukup sempit di sana (dengan asumsi jaringan back-end Anda benar-benar diamankan, secara fisik, bukan hanya oleh beberapa firewall di antara sejumlah mesin).

21
Bruno

Ketika jaringan lokal yang menyertakan server basis data dan klien mungkin menyertakan proses lain maka Anda harus mengenkripsi koneksi antara keduanya.

Ini hampir selalu terjadi sejak itu, bahkan jika Anda menganggap bahwa jaringan lokal tidak dapat ditembus (Anda tidak harus), selain klien basis data dan server biasanya ada

  1. administrator yang harus dapat masuk dan memperbaiki masalah atau melakukan pembaruan
  2. kolektor log yang perlu mengambil file tanpa data sensitif dan memindahkannya ke tempat lain
  3. replikator yang perlu menyalin konten basis data untuk cadangan di luar lokasi atau untuk memberi makan tabel sensitivitas rendah besar ke sistem penambangan data
  4. monitor yang perlu memeriksa untuk melihat apakah yang lain masih hidup

Dari semua itu, hanya replikator yang perlu memiliki akses ke tabel dengan data sensitif, tetapi salah satu dari proses ini dapat dikompromikan oleh aktor jahat dalam departemen TI Anda.

Mengenkripsi semua saluran yang membawa data sensitif membuat orang jujur ​​tetap jujur, memberi Anda pertahanan yang mendalam, dan membantu Anda mempersempit pencarian saat masalah muncul.

10
Mike Samuel

Perlu diingat bahwa siapa pun yang berada di jaringan yang sama dengan server Anda mungkin dapat mengendus lalu lintas atau melakukan serangan man-in-the-middle. SSL harus mencegah hal ini, dengan anggapan sudah diatur dengan benar. Anda juga harus mengatur firewall di server database dan hanya mengizinkan koneksi dari alamat IP tepercaya.

Saran saya adalah untuk menyalakannya, kemudian matikan hanya jika Anda pikir itu menyebabkan masalah kinerja (atau lainnya). Dengan begitu Anda telah memotong vektor serangan Anda secara signifikan.

Pada kenyataannya, overhead enkripsi SSL melalui jaringan akan menjadi minimal, terutama bila dibandingkan dengan beban pemrosesan query SQL. Anda akan mendapatkan lebih banyak kinerja dengan mengoptimalkan kueri dan konfigurasi kinerja server dibandingkan dengan menonaktifkan SSL.

4
Polynomial

Katakanlah saya memiliki server web yang saya setup, dan kemudian server database ... berkomunikasi secara lokal dan berada di belakang firewall

Mengesampingkan fakta bahwa arsitektur ini payah dalam hal ketersediaan ...

  • apakah Anda mempercayai semua orang dan segala sesuatu "di balik firewall"?
  • apakah Anda percaya bahwa firewall Anda sempurna?
  • dapatkah Anda memperkirakan bahwa Anda tidak akan pernah perlu terhubung jarak jauh untuk mendukung ketersediaan yang lebih tinggi, memigrasi pusat data Anda atau melakukan pencadangan?
  • apakah mekanisme otentikasi default untuk dbms begitu aman sehingga tidak bisa ditumbangkan?
  • apakah Anda memiliki proses penyebaran yang memastikan kredensial basis data tidak dapat dikompromikan?

Jika jawaban Anda untuk salah satu dari ini tidak pasti ya maka Anda mungkin mendapat manfaat dari jaminan tambahan menggunakan koneksi SSL yang dikonfigurasi sesuai. Biaya kinerja dapat diabaikan bahkan tanpa mengandalkan koneksi persisten (meskipun ini juga bisa dihilangkan dengan rute lalu lintas melalui terowongan persisten). Itu hanya untuk bekerja jika biaya konfigurasi SSL (beberapa jam kerja) lebih dari kewajiban.

0
symcbean