Muatkan beban webapp dengan pengesahan IIS NTLM dan Penyamaran ASP.NET

DIPOS oleh Zevenet | 2 Ogos 2018

Gambaran Keseluruhan

Pelayan web Microsoft, Perkhidmatan Maklumat Internet (IIS), mengintegrasikan beberapa mekanisme pengesahan untuk mengesahkan pengguna terhadap sistem Active Directory atau sistem kendiri berasaskan LDAP (LDAP). NTLM adalah protokol pengesahan Windows Challenge / Response yang boleh digunakan dalam rangkaian dan aplikasi yang boleh digunakan dalam kedua-dua persekitaran.

Dua senario yang berbeza boleh diambil kira: Pengesahan NTLM interaktif adalah gabungan dua sistem klien dan pengawal domain yang digunakan untuk menyimpan data pengguna yang diperlukan untuk melayani pengesahan, dan Pengesahan NTLM bukan interaktif melibatkan tiga sistem yang berbeza iaitu pelanggan, pelayan aplikasi dan domain untuk membolehkan pengguna mengakses kepada sumber tertentu dalam aplikasi.

Penyamaran ASP.NET membenarkan aplikasi web mengesahkan dan memberi kuasa kepada pengguna yang bergantung kepada Microsoft IIS.

Dalam artikel ini kita akan menerangkan bagaimana memuat aplikasi keseimbangan yang mengintegrasikan protokol NTLM untuk senario pengesahan pengguna yang tidak interaktif.

Bagaimanakah NTLM berfungsi?

Protokol NTLM bergantung pada protokol HTTP / S di mana pelanggan tertentu memulakan jabat tangan sejumlah langkah 6 untuk menubuhkan sesi yang disahkan.

Jabat tangan sesi yang dikonfirmasi memerlukan langkah-langkah berikut:

1. Pelanggan memulakan permintaan tanpa nama dari sumber tertentu ke pelayan web.

GET / HTTP

2. Tanggapan pelayan dengan mesej yang tidak dibenarkan dan kaedah pengesahan yang harus digunakan oleh pelanggan.

401 Unauthorized
WWW-Authenticate: NTLM

3. Pelanggan menyerahkan permintaan tersebut termasuk cabaran pengesahan format NTLM.

GET / HTTP
Authorization: NTLM <base64-encoded first NTLM message>

4. Tanggapan pelayan dengan mesej dan permintaan yang tidak dibenarkan untuk maklumat lanjut kepada pelanggan.

401 Unauthorized
WWW-Authenticate: NTLM <base64-encoded second NTLM message>

5. Pelanggan menyerahkan permintaan tersebut termasuk baki maklumat sesi.

GET / HTTP
Authorization: NTLM <base64-encoded third NTLM message>

6. Pelayan bersambung dengan pengawal domain untuk melengkapkan permintaan pengesahan dan kemudian mengesahkan kepada klien pengesahan.

HTTP 200 OK

Perhatikan bahawa jabat tangan ini diperlukan dalam setiap sambungan baru, bukan permintaan HTTP, dan selama langkah 3 hingga 6, sambungan tersebut harus tetap hidup. Sekiranya sambungan ditutup, bahagian jabat tangan ini harus diulang dan tidak sah hanya mengulangi dari langkah 5. Sebaliknya, setelah sambungan disahkan, tajuk Pengesahan tidak perlu dihantar lagi semasa sambungan tidak ditutup secara bebas dari sumber yang diakses.

Bagaimana untuk memuatkan aplikasi web keseimbangan menggunakan pengesahan NTLM?

Dengan Zevenet, terdapat cara utama 2 untuk memuatkan keseimbangan dan membina aplikasi web berasaskan NTLM dalam ketersediaan yang tinggi, dengan lapisan pengimbang mudah 4 TCP atau dengan proksi 7 lapisan untuk ciri-ciri canggih.

Pengimbangan beban NTLM sederhana pada lapisan 4

Untuk memuatkan aplikasi web keseimbangan dengan sokongan pengesahan NTLM dengan konfigurasi mudah, kami boleh membuat ladang berasaskan LSLB dengan profil L4xNAT. Kita boleh menggunakan sama ada protokol HTTP atau HTTPS.

Kemudian, dalam konfigurasi global memastikan bahawa protokol yang digunakan adalah TCP tetapi kita boleh pilih NAT or DNAT mengikut topologi yang diperlukan.

Dalam Perkhidmatan Kami bahagian, diperlukan untuk menetapkan ketekunan untuk memastikan bahawa pengesahan untuk klien tertentu selalu pergi ke backend yang sama, jika tidak, pengesahan sambungan tidak dapat dilakukan.

Akhirnya, tambah senarai belakang anda dan konfigurasikan pemeriksaan kesihatan seperti yang ditunjukkan dalam bahagian di bawah.

Pengimbangan beban NTLM pada lapisan 7

Pilihan ini membolehkan mengendalikan data HTTP / S dengan sokongan NTLM dengan proksi 7 lapisan yang dikonfigurasi melalui modul LSLB dan ladang HTTP. Untuk ini, kita perlu membuat ladang untuk HTTP atau HTTPS mengikut keperluan SSL untuk perkhidmatan maya. Satu-satunya perbezaan ialah Pendengar dikonfigurasikan dalam Tetapan Global ladang yang dihasilkan.

Di lapisan ini, kerana aplikasi itu tidak dapat membuat sebarang kuki sesi lagi untuk mencipta kegigihan atau penyambungan sambungan, kami boleh menggunakan Penyisipan Cookie pilihan yang membenarkan pengimbang beban untuk membuat kuki baru semasa jabat tangan pertama pengesahan NTLM.

Akhirnya, tambah senarai belakang anda dan konfigurasikan pemeriksaan kesihatan seperti yang ditunjukkan dalam bahagian di bawah. Anda boleh mengkonfigurasi pilihan aplikasi tambahan pada tahap proksi yang termasuk dalam ladang semacam ini dan sokongan NTLM tidak akan terjejas.

Pemeriksaan kesihatan lanjutan untuk laman web pengesahan NTLM

Untuk membuat pemeriksaan kesihatan lanjutan khusus kami untuk aplikasi yang disahkan NTLM, kami harus membuat di bawah jalan / usr / local / zevenet / app / libexec skrip untuk memeriksa backend seperti yang ditunjukkan di bawah. Sebagai contoh, check_ntlm.sh dengan keizinan yang sesuai.

#!/bin/bash

# get input parameters
BACKEND=$1
PORT=$2
USER=$3
PASS=$4
URI=$5
STRING=$6

/usr/bin/curl http://${BACKEND}:${PORT}${URI} --ntlm -negotiate -u ${USER}:${PASS} 2>/dev/null | grep "${STRING}" &>/dev/null

if [ $? == 0 ]
then
	# if the curl command doesn't fail then notify that the backend is up
	echo "Server ${BACKEND}:${PORT} OK"
	exit 0
fi

# if the the curl command fails then notify that the backend is down
echo "Server ${BACKEND}:${PORT} is not OK"
exit 1

Dalam Pemantauan >> Farmguardian seksyen, jika terpakai, atau menambahnya kepada perintah untuk memeriksa dalam perkhidmatan ladang.

Kita boleh menguji skrip cek kesihatan dengan melaksanakan:

/usr/local/zevenet/app/libexec/check_ntlm.sh 192.168.0.99 80 johndoe johnsecret "/my/uri" "DOCTYPE html"

Mengetahui bahawa IP belakang adalah 192.168.0.99 pelabuhan itu 80 HTTP, johndoe adalah pengguna dummy di domain kami, johnsecret adalah kata laluan dummy, "/ Uri saya" adalah URI untuk menyemak dan "DOCTYPE html" adalah rentetan untuk mencari dalam data tindak balas apabila permintaan berjaya.

Kami mengesyorkan untuk membuat pengguna palsu yang boleh log masuk dalam domain tetapi tanpa izin, untuk memasukkannya ke dalam pemeriksaan kesihatan perkhidmatan kami. Itulah sebab penggunaan johndoe pengguna dummy dalam pemeriksaan kesihatan tersuai kami.

Apabila pemeriksaan kesihatan kami diuji dari baris perintah dan siap, kami boleh memberikannya kepada ladang yang dikonfigurasikan dengan sokongan NTLM.

Nikmati aplikasi web NTLM yang seimbang beban anda!

Berkongsi pada:

Dokumentasi di bawah syarat-syarat Lesen Dokumentasi Bebas GNU.

Adakah artikel ini berguna?

Artikel yang berkaitan