Proxy untuk Layanan Server ArcGIS Aman. Aman?

8

Untuk mengakses layanan aman (berbasis token atau kredensial), Esri merekomendasikan menggunakan file proxy ( contoh .net github ). Saat merutekan permintaan melalui proxy, Anda dapat meminta layanan aman atas nama klien tanpa memaparkan kredensial Anda. Anda dapat menentukan properti yang dipanggil allowedReferersdan menetapkan daftar URL rujukan yang akan digunakan oleh proxy. Pada dasarnya, proksi tidak akan membuat permintaan untuk merujuk URL yang tidak ditentukan. Jika diatur ke '*', permintaan rujukan apa pun akan diproses.

Masalahnya adalah; tajuk yang meminta dipalsukan dengan mudah oleh peretas hanya dengan menyetel properti HTTP Referer palsu . Dalam situasi ini, mereka dapat mengakses layanan aman dengan merutekan semua permintaan mereka melalui proxy dan mengatur header referer ke alamat yang valid.

Saya mencari rekomendasi tentang cara terbaik untuk mengatasi masalah ini. Ada rekomendasi?

JOshT
sumber
3
Pertanyaan yang bagus Kami baru saja bereksperimen dengan ini baru-baru ini dan sedih menemukan bahwa ini mungkin kurang aman daripada melewati token melalui string kueri. Seperti yang Anda tunjukkan, Anda bisa mengirimkan permintaan melalui proxy. Kami dapat memverifikasi ini hanya dengan beberapa baris kode Python ... Kami dapat melintasi seluruh Direktori Layanan kami tanpa kredensial. Setidaknya dengan token yang diteruskan dengan permintaan token harus diaktifkan / diambil terlebih dahulu, yang tampaknya sedikit lebih aman bagi saya. Saya juga ingin tahu apakah ada yang punya saran bagus.
crmackey
"Esri merekomendasikan ...": lihat blogs.esri.com/esri/supportcenter/2015/04/07/setting-up-a-proxy . Tampaknya baik untuk mengutip insiden rekomendasi tersebut.
gischimp
Terima kasih gischimp. Ini adalah sumber yang bagus untuk mengatur proxy tetapi tidak merujuk metode apa pun untuk mengamankan masalah yang kita alami. Saya tahu Portal dan ArcGIS Online keduanya memiliki oAuth2. Saya ingin tahu apakah rilis ArcGIS Server berikutnya akan mendukung ini? Untuk saat ini, tampaknya @crmackey benar; metode yang paling aman (setidaknya untuk layanan berbasis token) adalah dengan tidak menggunakan proxy dan hanya melampirkan token ke permintaan GET.
JOshT
Anda juga perlu menyebutkan bahwa Anda dapat menambahkan token ke cookie menggunakan agstokenkunci. Ini tidak menambah banyak keamanan ekstra tetapi setidaknya token tidak muncul dalam string kueri.
crmackey

Jawaban:

1

Saya meng-host proxy Java di Apache Tomcat yang menyediakan halaman login. Proxy ArcGIS berjalan dalam konteks aplikasi yang sama dengan halaman login. Dengan cara ini, pengguna saya mendapatkan akses dengan kredensial yang disimpan dalam database yang terpisah dan aman. Tomcat melakukan manajemen sesi biasa sementara proxy ArcGIS yang sedikit dimodifikasi menangani kredensial dan token ArcGIS yang tersembunyi. Semua ini dilakukan melalui HTTPS.

Hasilnya adalah:

  • Kredensial ArcGIS tidak pernah dikirimkan ke luar intranet lokal.
  • Pengguna tidak dapat mengakses proxy tanpa sesi yang valid.
  • Sesi yang valid hanya diberikan kepada pengguna dengan kredensial yang tepat.
C. David Gibson
sumber
0

Saat merutekan permintaan melalui proxy, Anda dapat meminta layanan aman atas nama klien tanpa memaparkan kredensial Anda.

Saya pikir kalimat ini adalah kuncinya. Ketika proksi mengautentikasi ke server GIS, apakah proksi dikonfigurasi dengan kredensial? Jika demikian, dan kredensial tersebut memiliki akses ke layanan peta yang diminta, maka itu tampaknya "berfungsi sebagaimana dimaksud".

Jika proxy menyimpan / melewati kredensial, maka proxy lebih mementingkan keamanan kredensial daripada menjaga keamanan data. Pikirkan situs intranet perusahaan yang menampilkan data peta dari layanan peta aman.

tajuk yang meminta dipalsukan dengan mudah oleh peretas

Apakah pernyataan di atas berarti penyerang luar dapat mencapai proxy Anda secara langsung? Jika demikian, Anda harus lebih khawatir daripada tajuk HTTP palsu.

Apakah pengguna, proxy, dan server GIS semuanya ada di dalam jaringan Anda, atau apakah pengguna menggunakan proxy untuk terhubung ke layanan GIS di luar jaringan? Mengetahui beberapa detail pada topologi jaringan Anda mungkin dapat membantu Anda mendapatkan jawaban yang lebih baik.

sunting: Jika Anda memiliki aplikasi web publik yang mengambil sumber daya dari server GIS aman di dalam jaringan, maka Anda mungkin menginginkan proksi terbalik dan bukan proksi maju.

Mintx
sumber
2
Saya pikir @jOshT memiliki keprihatinan yang sama dengan yang saya lakukan yaitu sepertinya tidak ada cara untuk melindungi titik akhir REST dari pengunjung yang tidak diinginkan. Ya, proxy menyembunyikan kredensial, tetapi jika Anda mengetahui url proxy, Anda bahkan tidak perlu khawatir tentang kredensial karena Anda bisa merutekan semua permintaan Anda melalui proxy dan kredensial diteruskan di bagian belakang. Saya telah menguji ini dengan beberapa baris Python .
crmackey
1
Saya setuju bahwa proksi melakukan pekerjaan yang baik untuk menjaga keamanan kredensial. Ketika Anda mengatakan 'langsung hubungi proxy'; Saya akan mengatakan semacam itu. Aplikasi ini bersifat publik (seperti proxy), tetapi seseorang tidak dapat benar-benar 'melihat' isi proxy saya (.net). Ambil contoh sebuah contoh Esri developers.arcgis.com/javascript/samples/ags_traffic . Di sini mereka menggunakan proxy untuk mengakses layanan aman. Dengan menggunakan alat jaringan pengembang Chrome, saya bisa menyalin permintaan (cURL) dan menjalankannya dari baris perintah untuk mendapatkan info. Bagaimana proksi itu sendiri diamankan?
JOshT
@ jOshT Bisakah Anda menempelkan file proxy.config Anda dan mengosongkan bit sensitif? Meskipun dari komentar Anda, sepertinya Anda lebih baik menggunakan proxy terbalik daripada proxy maju.
Mintx
@Mintx Proksi saya pada dasarnya sama dengan Esri di sini: github.com/Esri/resource-proxy/tree/master/DotNet, kecuali saya telah mengatur AllowReferers ke URL untuk aplikasi yang meminta.
JOshT